diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..faffad9
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+# Created by .ignore support plugin (hsz.mobi)
+.idea/
+node_modules/
+unpackage/
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..261ce48
--- /dev/null
+++ b/.hbuilderx/launch.json
@@ -0,0 +1,24 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"app-plus" : 
+     	{
+     		"launchtype" : "remote"
+     	},
+     	"default" : 
+     	{
+     		"launchtype" : "remote"
+     	},
+     	"h5" : 
+     	{
+     		"launchtype" : "remote"
+     	},
+     	"mp-weixin" : 
+     	{
+     		"launchtype" : "remote"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}
diff --git a/.project b/.project
new file mode 100644
index 0000000..706b8f5
--- /dev/null
+++ b/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>shoppingMall_web</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..f671549
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,37 @@
+<script>
+	// import goodsCateService from '@/service/GoodsCateService';
+	export default {
+		onLaunch: function() {
+			console.log('App Launch');
+		},
+		onShow: function() {
+			console.log('App Show');
+		},
+		onHide: function() {
+			console.log('App Hide');
+		}
+	};
+</script>
+
+<style lang="scss">
+	page,
+	.page {
+		height: 100%;
+		width: 100%;
+		background-color: #ebeef5;
+		font-size: 28upx;
+		font-family: -apple-system-font, Helvetica Neue, Helvetica, sans-serif;
+	}
+
+	.bg-grey {
+		background: #888888 !important;
+	}
+
+	.hover-class-bg {
+		background: #888888 !important;
+	}
+
+	.hover-class-text {
+		color: #888888 !important;
+	}
+</style>
diff --git a/api/BaseApi.js b/api/BaseApi.js
new file mode 100644
index 0000000..f50bf80
--- /dev/null
+++ b/api/BaseApi.js
@@ -0,0 +1,76 @@
+import request from '../util/request'
+import $n from '../util/nothing'
+/* import $n from '../util/qqmap-wx-jssdk.min' */
+import Enums from '../util/Enums'
+import Qs from 'qs'
+
+/**
+ * ajax请求
+ * @param {*}
+ */
+export function _request ({
+  url,
+  params = {},
+  method = 'post',
+  token = false,
+  contentType = Enums.ContentType.JSON_UTF8,
+  headers = {}
+} = {}) {
+  headers['Content-Type'] = contentType;
+  return request.request(url, $n._caseValue(contentType, Enums.ContentType.FORM_UTF8, Qs.stringify(params), params), {
+    method: method,
+    _token: token,
+    headers
+  })
+}
+
+/**
+ * 分页查询
+ * @param {*}
+ */
+export function _queryPage ({
+  url,
+  params = {},
+  page = {},
+  method = 'post',
+  token = false,
+  contentType = Enums.ContentType.JSON_UTF8
+} = {}) {
+  return _request({
+    url,
+    params,
+    method,
+    token,
+    contentType,
+    headers: {
+      'pageNum': page.pageNum,
+      'pageSize': page.pageSize
+    }
+  })
+}
+/**
+ * 流式分页查询
+ * @param {*}
+ */
+export function _queryFlowPage ({
+  url,
+  params = {},
+  page = {},
+  method = 'post',
+  token = false,
+  contentType = Enums.ContentType.JSON_UTF8
+} = {}) {
+  return _request({
+    url,
+    params,
+    method,
+    token,
+    contentType,
+    headers: {
+      'beginTime': page.beginTime,
+      'direction': page.direction,
+      'orderBy': page.orderBy,
+      'pageSize': page.pageSize
+    }
+  })
+}
diff --git a/api/UserApi.js b/api/UserApi.js
new file mode 100644
index 0000000..cdd9166
--- /dev/null
+++ b/api/UserApi.js
@@ -0,0 +1,23 @@
+import Enums from '../util/Enums'
+import {
+  _request
+} from './BaseApi'
+
+/**
+ * 登录
+ * @param {*} params
+ */
+export const _login = (params = {}) => _request({url: '/sso/wxMrcologin', params, method: 'post', contentType: Enums.ContentType.FORM_UTF8})
+// export const _login = (params = {}) => _request({url: '/sso/appWxLogin', params, method: 'post',})
+
+/**
+ * 查询用户信息
+ * @param {*} params
+ */
+export const _queryUser = (id = null) => _request({url: '/member/info/' + id, params: {}, token: true, method: 'get'})
+
+/**
+ * 刷新用户Token
+ * @param {*} params
+ */
+export const _refreshToken = (oldToken = null) => _request({url: '/sso/refreshToken', params: {token: oldToken}, token: true, method: 'post'})
diff --git a/api/logoApi.js b/api/logoApi.js
new file mode 100644
index 0000000..4bbcb33
--- /dev/null
+++ b/api/logoApi.js
@@ -0,0 +1,16 @@
+import Enums from '../util/Enums'
+import {
+  _request
+} from './BaseApi'
+
+/**
+ * 初始化
+ * @param {*} params
+ */
+export const _login = (params = {}) => _request({url: '/partnerapplets/index', params, method: 'post', contentType: Enums.ContentType.FORM_UTF8})
+export const _shoplist = (params = {}) => _request({url: '/partnerapplets/index', params,token: true, method: 'post'})
+/**
+ * 延迟
+ * @param {*} params
+ */
+export const route_timeout = (params = {}) => _request({url: '/partnerapplets/index', params, method: 'post',token: true,timeout: true})
\ No newline at end of file
diff --git a/cache/CacheKeys.js b/cache/CacheKeys.js
new file mode 100644
index 0000000..c99f976
--- /dev/null
+++ b/cache/CacheKeys.js
@@ -0,0 +1,14 @@
+export default {
+	app: {
+		APP_USER: 'APP_USER', // app信息
+		WX_INFO: 'WX_INFO', // 微信信息
+		USER_INFO: 'USER_INFO', // 用户信息
+		DATA_SYNC_TIME: 'DATA_SYNC_TIME', // 数据同步时间
+		BACKGROUND_COLOR: 'BACKGROUND_COLOR', // 背景色
+		NAVIGATION_BAR_BACKGROUND_COLOR: 'NAVIGATION_BAR_BACKGROUND_COLOR', // 导航条背景颜色
+		NAVIGATION_BAR_FRONT_COLOR: 'NAVIGATION_BAR_FRONT_COLOR' // 导航条前景颜色
+	},
+	SEARCH: 'SEARCH', // 搜索
+	DECIMALS: 'DECIMALS', // 小数位数
+	DICT: 'DICT_' // 字典
+}
diff --git a/cache/index.js b/cache/index.js
new file mode 100644
index 0000000..89ade90
--- /dev/null
+++ b/cache/index.js
@@ -0,0 +1,48 @@
+import CacheKeys from './CacheKeys'
+
+/**
+ * 本地存储KEY前缀
+ */
+const _KEY_PREFIX = 'HL_'
+
+/**
+ * 用户级缓存定义
+ */
+const CACHE_LEVEL_USER = []
+
+/**
+ * 构造缓存KEY
+ * @param {*} key
+ */
+const buildKey = (key) => {
+	let newKey = _KEY_PREFIX
+	newKey += CACHE_LEVEL_USER.indexOf(key) !== -1 ? (newKey.endsWith('_') ? '' : '_') + this.$AppContext.$store.getters.sysUser
+		.username : ''
+	return newKey + (newKey.endsWith('_') ? '' : '_') + key
+}
+
+/**
+ * 缓存对象API
+ */
+const cache = {
+	$Keys: CacheKeys,
+	_KEY_PREFIX: _KEY_PREFIX,
+	set: (object) => uni.setStorage(Object.assign(object, {
+		key: buildKey(object.key)
+	})),
+	get: (object) => uni.getStorage(Object.assign(object, {
+		key: buildKey(object.key)
+	})),
+	setSync: (key, data) => uni.setStorageSync(buildKey(key), data),
+	getSync: (key) => uni.getStorageSync(buildKey(key)),
+	remove: (object) => uni.removeStorage(Object.assign(object, {
+		key: buildKey(object.key)
+	})),
+	removeSync: (key) => uni.removeStorageSync(buildKey(key)),
+	clear: (object) => uni.clearStorage(object),
+	clearSync: () => uni.clearStorageSync(),
+	getInfo: (object) => uni.getStorageInfo(object),
+	getInfoSync: () => uni.getStorageInfoSync()
+}
+
+export default cache
diff --git a/components/Progress-Bar/Progress-Bar.vue b/components/Progress-Bar/Progress-Bar.vue
new file mode 100644
index 0000000..693cdeb
--- /dev/null
+++ b/components/Progress-Bar/Progress-Bar.vue
@@ -0,0 +1,423 @@
+<template>
+	<view style="width: 60%; margin: auto;">
+		<view class="progress" :class="Type">
+			<view class="progress-text" v-if="Vice == true">{{ Width + '%' }}</view>
+			<view class="progress-bar" :style="{width: Width+'%'}"><view class="progress-text" v-if="Main == true">{{ Width + '%' }}</view></view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		// 进度条百分比
+		Width: {
+			type: Number,
+			default: 0
+		},
+		// 进度条样式
+		/*
+			aqua
+			copper
+			candy
+			neon
+			shine
+			zigzag
+			diamond
+			hearts
+			sparkle
+		*/
+		Type: {
+			type: String,
+			default: 'aqua',
+		},
+		// 主进度显示百分比
+		Main: {
+			type: Boolean,
+			default: true,
+		},
+		// 副进度显示百分比
+		Vice: {
+			type: Boolean,
+			default: true,
+		},
+		
+	},
+	data() {
+		return {
+
+		};
+	},
+	methods: {}
+};
+</script>
+
+<style>
+.progress {
+    position: relative;
+    z-index: 5;
+    background: #484848;
+    border: 10px solid #282828;
+    border-radius: 20px;
+    display: inline-block;
+    box-shadow: 0 5px 17px rgba(40, 40, 40, 0.5), 0 0 3px 1px rgba(40, 40, 40, 0.5) inset;
+}
+
+.progress-text {
+    position: absolute;
+    font: bold 14px/20px Arial;
+    text-align: center;
+    top: 0;
+    left: 0;
+}
+
+.progress,
+.progress-bar,
+.progress-text {
+    /* width: 710rpx; */
+	width: 100%;
+    height: 40rpx;
+}
+
+.progress .progress-text:first-child {
+    z-index: 5;
+    color: white;
+}
+
+.progress .progress-text:last-child {
+    z-index: 10;
+    color: black;
+}
+
+.progress-bar {
+    overflow: hidden;
+    position: relative;
+    z-index: 10;
+    border-radius: 12px;
+    width: 0;
+    -moz-transition: width .2s linear;
+    -webkit-transition: width .2s linear;
+    -o-transition: width .2s linear;
+    transition: width .2s linear;
+}
+
+/* Test Style */
+.progress.test .progress-bar {
+    background-color: #00baba;
+    background-image: -moz-linear-gradient(left, #d1fffb 0%, #00baba 100%);
+    background-image: -webkit-linear-gradient(left, #d1fffb 0%, #00baba 100%);
+    background-image: -o-linear-gradient(left, #d1fffb 0%, #00baba 100%);
+    background-image: -ms-linear-gradient(left, #d1fffb 0%, #00baba 100%);
+    background-image: linear-gradient(to right, #d1fffb 0%, #00baba 100%);
+    background-size: 200px 20px;
+    overflow: visible;
+}
+
+.progress.test .progress-text:first-child {
+    display: none;
+}
+
+.progress.test .progress-text:last-child {
+    left: auto;
+    top: auto;
+    bottom: -26px;
+    right: -12px;
+    display: block;
+    background-color: #00baba;
+    width: 40px;
+    height: 20px;
+    border-radius: 3px;
+}
+
+.test[data-width='0%'] .progress-text:last-child {
+    display: none;
+}
+
+.progress.test .progress-text:last-child:before {
+    position: absolute;
+    left: 12px;
+    top: -6px;
+    content: '';
+    width: 0;
+    height: 0;
+    border-style: solid;
+    border-width: 0 6px 6px 6px;
+    border-color: transparent transparent #00baba transparent;
+}
+
+/* Copper style */
+.progress.copper .progress-bar {
+    background-color: #b68d4c;
+    background-image: -moz-linear-gradient(top, #f3e2c7 0%, #b68d4c 51%, #e9d4b3 100%);
+    background-image: -webkit-linear-gradient(top, #f3e2c7 0%, #b68d4c 51%, #e9d4b3 100%);
+    background-image: -ms-linear-gradient(top, #f3e2c7 0%, #b68d4c 51%, #e9d4b3 100%);
+    background-image: linear-gradient(to bottom, #f3e2c7 0%, #b68d4c 51%, #e9d4b3 100%);
+    box-shadow: inset 2px 2px 3px 0 rgba(255, 255, 255, 0.75), inset -3px 0 3px 0 rgba(255, 255, 255, 0.75);
+}
+
+/* Aqua Style */
+.progress.aqua .progress-bar {
+    background-color: #00baba;
+    background-image: -moz-linear-gradient(left, #d1fffb 0%, #00baba 100%);
+    background-image: -webkit-linear-gradient(left, #d1fffb 0%, #00baba 100%);
+    background-image: -o-linear-gradient(left, #d1fffb 0%, #00baba 100%);
+    background-image: -ms-linear-gradient(left, #d1fffb 0%, #00baba 100%);
+    background-image: linear-gradient(to right, #d1fffb 0%, #00baba 100%);
+}
+
+/* Candystripe style */
+.progress.candy .progress-bar {
+    background-color: #d00;
+    box-shadow: 0 0 6px 2px rgba(255, 255, 255, 0.3) inset;
+    background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.35) 25%, rgba(255, 255, 255, 0) 25%, rgba(255, 255, 255, 0) 50%, rgba(255, 255, 255, 0.35) 50%, rgba(255, 255, 255, 0.35) 75%, rgba(255, 255, 255, 0) 75%, rgba(255, 255, 255, 0));
+    background-repeat: repeat-x;
+    background-size: 20px 20px;
+    -webkit-animation: candystripe 1s linear infinite;
+    -moz-animation: candystripe 1s linear infinite;
+    animation: candystripe 1s linear infinite;
+}
+
+@-webkit-keyframes candystripe {
+    to {
+        background-position: 20px 0;
+    }
+}
+
+@-moz-keyframes candystripe {
+    to {
+        background-position: 20px 0;
+    }
+}
+
+@keyframes candystripe {
+    to {
+        background-position: 20px 0;
+    }
+}
+
+/* Pulsating Neon style */
+.progress.neon .progress-bar {
+    background-color: #fff;
+    box-shadow: 0 0 5px #01fe32 inset, 0 0 16px #08ff35, 0 0 20px #08ff35, 0 0 15px #08ff35;
+    -webkit-animation: pulse 2s linear infinite;
+    -moz-animation: pulse 2s linear infinite;
+    animation: pulse 2s linear infinite;
+}
+
+@-webkit-keyframes pulse {
+    50% {
+        box-shadow: 0 0 5px #01fe32 inset, 0 0 10px #08ff35, 0 0 10px #08ff35, 0 0 10px #08ff35;
+    }
+}
+
+@-moz-keyframes pulse {
+    50% {
+        box-shadow: 0 0 5px #01fe32 inset, 0 0 10px #08ff35, 0 0 10px #08ff35, 0 0 10px #08ff35;
+    }
+}
+
+@keyframes pulse {
+    50% {
+        box-shadow: 0 0 5px #01fe32 inset, 0 0 10px #08ff35, 0 0 10px #08ff35, 0 0 10px #08ff35;
+    }
+}
+
+/* Shine style */
+.progress.shine .progress-bar {
+    background-color: #00BA0C;
+    background-image: -moz-linear-gradient(left, #00BA0C 0%, #00BA0C 75%, #D7FFD1 80%, #00BA0C 85%, #00BA0C 100%);
+    background-image: -webkit-linear-gradient(left, #00BA0C 0%, #00BA0C 75%, #D7FFD1 80%, #00BA0C 85%, #00BA0C 100%);
+    background-image: -o-linear-gradient(left, #00BA0C 0%, #00BA0C 75%, #D7FFD1 80%, #00BA0C 85%, #00BA0C 100%);
+    background-image: -ms-linear-gradient(left, #00BA0C 0%, #00BA0C 75%, #D7FFD1 80%, #00BA0C 85%, #00BA0C 100%);
+    background-image: linear-gradient(to right, #00BA0C 0%, #00BA0C 75%, #D7FFD1 80%, #00BA0C 85%, #00BA0C 100%);
+    background-size: 800px 20px;
+    box-shadow: inset 0 -2px 2px rgba(0, 0, 0, 0.5), inset 0 2px 2px rgba(255, 255, 255, 0.8);
+    -webkit-animation: shine 2s linear infinite;
+    -moz-animation: shine 2s linear infinite;
+    animation: shine 2s linear infinite;
+}
+
+@-webkit-keyframes shine {
+    to {
+        background-position: 800px 0;
+    }
+}
+
+@-moz-keyframes shine {
+    to {
+        background-position: 800px 0;
+    }
+}
+
+@keyframes shine {
+    to {
+        background-position: 800px 0;
+    }
+}
+
+/* Zigzag style */
+.progress.zigzag .progress-bar {
+    background-color: #EFE743;
+    background-image: -moz-linear-gradient(135deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -moz-linear-gradient(225deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -moz-linear-gradient(315deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -moz-linear-gradient(45deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%);
+    background-image: -webkit-linear-gradient(135deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -webkit-linear-gradient(225deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -webkit-linear-gradient(315deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -webkit-linear-gradient(45deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%);
+    background-image: -o-linear-gradient(135deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -o-linear-gradient(225deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -o-linear-gradient(315deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -o-linear-gradient(45deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%);
+    background-image: -ms-linear-gradient(135deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -ms-linear-gradient(225deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -ms-linear-gradient(315deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), -ms-linear-gradient(45deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%);
+    background-image: linear-gradient(135deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), linear-gradient(225deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), linear-gradient(315deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%), linear-gradient(45deg, #EA0000 25%, rgba(234, 0, 0, 0) 25%);
+    background-position: -10px 0, -10px 0, 0 0, 0 0;
+    background-size: 20px 20px;
+    -webkit-animation: zigzagmove .5s linear infinite;
+    -moz-animation: zigzagmove .5s linear infinite;
+    animation: zigzagmove .5s linear infinite;
+}
+
+@-webkit-keyframes zigzagmove {
+    to {
+        background-position: 10px 0, 10px 0, 20px 0, 20px 0;
+    }
+}
+
+@-moz-keyframes zigzagmove {
+    to {
+        background-position: 10px 0, 10px 0, 20px 0, 20px 0;
+    }
+}
+
+@keyframes zigzagmove {
+    to {
+        background-position: 10px 0, 10px 0, 20px 0, 20px 0;
+    }
+}
+
+/* Diamond style */
+.progress.diamond .progress-bar {
+    background-color: #eee;
+    background-image: -moz-linear-gradient(45deg, red 25%, rgba(255, 0, 0, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red), -moz-linear-gradient(-45deg, red 25%, rgba(255, 0, 0, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red);
+    background-image: -webkit-linear-gradient(45deg, red 25%, rgba(255, 0, 0, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red), -webkit-linear-gradient(-45deg, red 25%, rgba(255, 0, 0, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red);
+    background-image: -o-linear-gradient(45deg, red 25%, rgba(255, 0, 0, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red), -o-linear-gradient(-45deg, red 25%, rgba(255, 0, 0, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red);
+    background-image: -ms-linear-gradient(45deg, red 25%, rgba(255, 255, 255, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red), -ms-linear-gradient(-45deg, red 25%, rgba(255, 0, 0, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red);
+    background-image: linear-gradient(45deg, red 25%, rgba(255, 0, 0, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red), linear-gradient(-45deg, red 25%, rgba(255, 0, 0, 0) 25%, rgba(255, 0, 0, 0) 75%, red 75%, red);
+    background-size: 10px 10px;
+    -webkit-animation: move 1.2s linear alternate infinite;
+    -moz-animation: move 1.2s linear alternate infinite;
+    animation: move 1.2s linear alternate infinite;
+}
+
+@-webkit-keyframes move {
+    to {
+        background-position: 5px -10px;
+        background-size: 20px 20px;
+    }
+}
+
+@-moz-keyframes move {
+    to {
+        background-position: 5px -10px;
+        background-size: 20px 20px;
+    }
+}
+
+@keyframes move {
+    to {
+        background-position: 5px -10px;
+        background-size: 20px 20px;
+    }
+}
+
+.progress.sparkle .progress-bar {
+    background-color: #F7A806;
+    background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG4AAABACAMAAADMI7KPAAACZFBMVEX////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xG13JAAAAzHRSTlMAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJytLua8SRAAASK0lEQVR42nXWWZMb12H28edsvQJoAINl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");
+    box-shadow: inset 0 -2px 2px rgba(0, 0, 0, 0.5), inset 0 2px 2px rgba(255, 255, 255, 0.8);
+    -webkit-animation: sparkle 1500ms linear infinite;
+    -moz-animation: sparkle 1500ms linear infinite;
+    -o-animation: sparkle 1500ms linear infinite;
+    animation: sparkle 1500ms linear infinite;
+}
+
+@-webkit-keyframes sparkle {
+    from {
+        background-position: 0 0;
+    }
+
+    to {
+        background-position: 0 -64px;
+    }
+}
+
+@-moz-keyframes sparkle {
+    from {
+        background-position: 0 0;
+    }
+
+    to {
+        background-position: 0 -64px;
+    }
+}
+
+@-o-keyframes sparkle {
+    from {
+        background-position: 0 0;
+    }
+
+    to {
+        background-position: 0 -64px;
+    }
+}
+
+@keyframes sparkle {
+    from {
+        background-position: 0 0;
+    }
+
+    to {
+        background-position: 0 -64px;
+    }
+}
+
+.progress.hearts .progress-bar {
+    background-image:
+        radial-gradient(circle closest-side at 60% 43%, #bb0033 26%, rgba(187, 0, 51, 0) 27%),
+        radial-gradient(circle closest-side at 40% 43%, #bb0033 26%, rgba(187, 0, 51, 0) 27%),
+        radial-gradient(circle closest-side at 40% 22%, #dd3355 45%, rgba(221, 51, 85, 0) 46%),
+        radial-gradient(circle closest-side at 60% 22%, #dd3355 45%, rgba(221, 51, 85, 0) 46%),
+        radial-gradient(circle closest-side at 50% 35%, #dd3355 30%, rgba(221, 51, 85, 0) 31%),
+        radial-gradient(circle closest-side at 60% 43%, #bb0033 26%, rgba(187, 0, 51, 0) 27%),
+        radial-gradient(circle closest-side at 40% 43%, #bb0033 26%, rgba(187, 0, 51, 0) 27%),
+        radial-gradient(circle closest-side at 40% 22%, #dd3355 45%, rgba(221, 51, 85, 0) 46%),
+        radial-gradient(circle closest-side at 60% 22%, #dd3355 45%, rgba(221, 51, 85, 0) 46%),
+        radial-gradient(circle closest-side at 50% 35%, #dd3355 30%, rgba(221, 51, 85, 0) 31%);
+    background-color: #b03;
+    background-position: 0 0, 0 0, 0 0, 0 0, 0 0, 20px 20px, 20px 20px, 20px 20px, 20px 20px, 0 0;
+    background-size: 40px 40px;
+    -webkit-animation: heartmove 1.2s linear infinite;
+    -moz-animation: heartmove 1.2s linear infinite;
+    animation: heartmove 1.2s linear infinite;
+}
+
+@-webkit-keyframes heartmove {
+    to {
+        background-position: 20px 0;
+    }
+}
+
+@-moz-keyframes heartmove {
+    to {
+        background-position: 20px 0;
+    }
+}
+
+@keyframes heartmove {
+    to {
+        background-position: 40px 0, 40px 0, 40px 0, 40px 0, 40px 20px, 40px 20px, 40px 20px, 40px 20px, 40px 20px, 40px 0px;
+    }
+}
+
+h2 {
+    text-align: center;
+    font-size: 18px;
+    font-family: Arial;
+}
+
+a {
+    color: #89310F;
+}
+</style>
diff --git a/components/ay-firework/README.md b/components/ay-firework/README.md
new file mode 100644
index 0000000..15b9c77
--- /dev/null
+++ b/components/ay-firework/README.md
@@ -0,0 +1,32 @@
+## 使用注意
+- 引入该组件,用v-if控制组件,组件create会触发喷发特效函数,然后可以传入一些位置参数,具体参考组件内的props属性,每个属性都备注了
+- 
+## 示例代码
+```
+  <template>
+  	<view>
+  		<fireworks v-if="isReady" />
+  	</view>
+  </template>
+  
+  <script>
+  	import fireworks from '@/components/fireworks/index.vue'
+  	export default {
+		data() {
+			return {
+				isReady: false
+			}
+		},
+  		components: {
+  			fireworks
+  		},
+		onReady() {
+			this.$nextTick(() => {//后面记得销毁哈,不使用时设置为false
+				setTimeout(() => {
+					this.isReady = true;
+				}, 50)
+			})
+		},
+  	}
+  </script>
+```
\ No newline at end of file
diff --git a/components/ay-firework/firework.vue b/components/ay-firework/firework.vue
new file mode 100644
index 0000000..8725372
--- /dev/null
+++ b/components/ay-firework/firework.vue
@@ -0,0 +1,236 @@
+<template>
+	<canvas class="fire-canvas" :style="{width: width + 'px', height: height + 'px', 'z-index': zIndex}" 
+	:canvas-id="canvasId" @error="canvasIdErrorCallback"></canvas>
+</template>
+
+<script>
+	/*
+		浏览器的最高刷新赔率(最后一个表示1秒刷新60次)
+	*/
+	const minBrowserRefreshTime = window && (window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame) || function(t) {
+		setTimeout(t, 1e3 / 60)
+	}
+	const systenInfo = uni.getSystemInfoSync();
+	let fireCanvasBox = null;
+	export default {
+		props: {
+			/*
+				礼花数量(最好小于500,太多会卡顿)
+			*/
+			particleCount: {
+				type: [Number, String],
+				default: 30
+			},
+			/*取值	0-360
+				喷发角度示意图(简单说就是喷射方向)
+						礼花(90)
+				礼花(180)		礼花0
+						礼花(270)
+			*/
+			angle: {
+				type: [Number, String],
+				default: 90
+			},
+			/*
+				爆炸范围
+			*/
+			spread: {
+				type: [Number, String],
+				default: 100
+			},
+			/*
+				喷发的初始速度
+			*/
+			startVelocity: {
+				type: [Number, String],
+				default: 45
+			},
+			/*
+				喷发的衰退时间,超出canvas会被清除,跟startVelocity配合使用
+			*/
+			decay: {
+				type: [Number, String],
+				default: 0.9
+			},
+			/*
+				刷新几次消失(其实是透明度为0),这个跟间隔的刷新频率有关
+			*/
+			ticks: {
+				type: [Number, String],
+				default: 150
+			},
+			/*
+				礼花层级
+			*/
+			zIndex: {
+				type: [Number, String],
+				default: 1
+			},
+			/*
+				所有要随机的礼花颜色预选值
+			*/
+			colors: {
+				type: Array,
+				default: () => ["#5BC0EB", "#2176AE", "#FDE74C", "#9BC53D", "#E55934", "#FA7921", "#FF4242"]
+			},
+			canvasId: {
+				type: String,
+				default: 'fireCanvas'
+			},
+			/*
+				canvas宽度(单位px)
+			*/
+			width: {
+				type: [Number, String],
+				default: () => {
+					return systenInfo.windowWidth
+				}
+			},
+			/*
+				canvas高度(单位px)
+			*/
+			height: {
+				type: [Number, String],
+				default: () => {
+					return systenInfo.windowHeight
+				}
+			},
+			/*
+				中心点-x
+			*/
+			x: {
+				type: [Number, String],
+				default: () => {
+					return systenInfo.windowWidth / 2
+				}
+			},
+			/*
+				中心点-y
+			*/
+			y: {
+				type: [Number, String],
+				default: () => {
+					return systenInfo.windowHeight * 0.4
+				}
+			}
+		},
+		data() {
+			return {
+				/*
+					手机分辨率
+				*/
+				pixelRatio: systenInfo.pixelRatio
+			}
+		},
+		onShow(){
+			console.log('onShow');
+			this.initCanvas();
+		},
		created() {
+			console.log('created');
+			this.initCanvas();
+		},
+		methods: {
+			open(){
+				
+			},
+			/*
+				转16进制(颜色用)
+			*/
+			parseInt16(t) {
+				return parseInt(t, 16);
+			},
+			canvasIdErrorCallback(e) {
+				console.error(e.detail.errMsg)
+			},
+			initCanvas() {
+				fireCanvasBox = null;
+				fireCanvasBox = uni.createCanvasContext(this.canvasId, this);
+				fireCanvasBox.fillRect(0, 0, this.width * this.pixelRatio, this.height * this.pixelRatio);
+				fireCanvasBox.scale(this.pixelRatio,this.pixelRatio);
+				fireCanvasBox.save();
+				this.fireworksDraw();
+			},
+			fireworksDraw() {
+					let ribbon = [] ,//彩带容器
+					particleCount = this.particleCount, n = null, r = null, a = null,i = null;
+					for (; particleCount--;){
+						n = {
+							x: this.x,
+							y: this.y,
+							angle: this.angle,
+							spread: this.spread,
+							startVelocity: this.startVelocity,
+							color: this.colors[particleCount % this.colors.length],
+							ticks: this.ticks,
+							decay: this.decay
+						}, 
+						i = 0, 
+						r = n.angle * (Math.PI / 180), 
+						a = n.spread * (Math.PI / 180);
+						ribbon.push({//菜单位置初始化
+							x: n.x,
+							y: n.y,
+							depth: .5 * Math.random() + .6,
+							wobble: 10 * Math.random(),
+							velocity: .5 * n.startVelocity + Math.random() * n.startVelocity,
+							angle2D: -r + (.5 * a - Math.random() * a),
+							tiltAngle: Math.random() * Math.PI,
+							color: (i = (n.color + "").replace(/[^0-9a-f]/gi, ""), i.length < 6 && (i = i[0] + i[0] + i[1] + i[1] + i[2] + i[2]), {//生成随机颜色
+								r: this.parseInt16(i.substring(0, 2)),
+								g: this.parseInt16(i.substring(2, 4)),
+								b: this.parseInt16(i.substring(4, 6))
+							}),
+							tick: 0,
+							totalTicks: n.ticks,
+							decay: n.decay,
+							random: Math.random() + 5,
+							tiltSin: 0,
+							tiltCos: 0,
+							wobbleX: 0,
+							wobbleY: 0
+						})
+					}
+					minBrowserRefreshTime(function drawRibbon() {
+						if(!fireCanvasBox) return ;
+						fireCanvasBox.draw(),
+						fireCanvasBox.restore(),
+						ribbon = ribbon.filter((e) => {
+							e.x += Math.cos(e.angle2D) * e.velocity,
+							e.y += Math.sin(e.angle2D) * e.velocity + 5 * e.depth,
+							e.wobble += .1,
+							e.velocity *= e.decay,
+							e.tiltAngle += .02 * Math.random() + .12,
+							e.tiltSin = Math.sin(e.tiltAngle),
+							e.tiltCos = Math.cos(e.tiltAngle),
+							e.random = Math.random() + 4,
+							e.wobbleX = e.x + 10 * Math.cos(e.wobble) * e.depth,
+							e.wobbleY = e.y + 10 * Math.sin(e.wobble) * e.depth;
+							// 开始画图
+							fireCanvasBox.fillStyle="rgba(" + e.color.r + ", " + e.color.g + ", " + e.color.b + ", " + (1 - (e.tick++) / e.totalTicks) + ")",
+							fireCanvasBox.beginPath(),
+							fireCanvasBox.moveTo(Math.floor(e.x),Math.floor(e.y)),
+							fireCanvasBox.lineTo(Math.floor(e.wobbleX),Math.floor(e.y + e.random * e.tiltSin)),
+							fireCanvasBox.lineTo(Math.floor(e.wobbleX + e.random * e.tiltCos),Math.floor(e.wobbleY + e.random * e.tiltSin)),
+							fireCanvasBox.lineTo(Math.floor(e.x + e.random * e.tiltCos),Math.floor(e.wobbleY)),
+							fireCanvasBox.closePath(),
+							fireCanvasBox.fill();
+							return e.tick < e.totalTicks
+						})
+						ribbon.length ? minBrowserRefreshTime(drawRibbon): fireCanvasBox = null;//轮询调用或者释放掉
+					}
+				)
+			}
+		},
+		
+	}
+</script>
+
+<style>
+	.fire-canvas{
+		position: fixed; 
+		top: 0px; 
+		left: 0px;
+		pointer-events: none;
+		z-index: 99999999;
+	}
+</style>
diff --git a/components/colorui/main.css b/components/colorui/main.css
new file mode 100644
index 0000000..4579ea6
--- /dev/null
+++ b/components/colorui/main.css
@@ -0,0 +1,249 @@
+/* ==================
+        初始化
+ ==================== */
+body {
+	background-color: #f1f1f1;
+	font-size: 28upx;
+	color: #333333;
+	font-family: Helvetica Neue, Helvetica, sans-serif;
+}
+
+view,
+scroll-view,
+swiper,
+button,
+input,
+textarea,
+label,
+navigator,
+image {
+	box-sizing: border-box;
+}
+
+/* ==================
+          按钮
+ ==================== */
+.cu-btn {
+	position: relative;
+	border: 0upx;
+	display: inline-flex;
+	align-items: center;
+	justify-content: center;
+	box-sizing: border-box;
+	padding: 0 30upx;
+	font-size: 28upx;
+	height: 64upx;
+	line-height: 1;
+	text-align: center;
+	text-decoration: none;
+	overflow: visible;
+	margin-left: initial;
+	transform: translate(0upx, 0upx);
+	margin-right: initial;
+}
+
+.cu-btn::after {
+	display: none;
+}
+
+/* ==================
+          操作条
+ ==================== */
+
+.cu-bar {
+	display: flex;
+	position: relative;
+	align-items: center;
+	min-height: 100upx;
+	justify-content: space-between;
+}
+
+.cu-bar .action {
+	display: flex;
+	align-items: center;
+	height: 100%;
+	justify-content: center;
+	max-width: 100%;
+}
+
+.cu-bar .action:first-child {
+	margin-left: 30upx;
+	font-size: 30upx;
+}
+
+
+.cu-bar .cu-avatar:first-child {
+	margin-left: 20upx;
+}
+
+.cu-bar .action:first-child>.cuIcon {
+	margin-left: -0.3em;
+	margin-right: 0.3em;
+}
+
+.cu-bar .action:last-child {
+	margin-right: 30upx;
+}
+
+.cu-bar .action>.cuIcon,
+.cu-bar .action>.cuIcon {
+	font-size: 36upx;
+}
+
+.cu-bar .action>.cuIcon+.cuIcon {
+	margin-left: 0.5em;
+}
+
+.cu-bar.fixed,
+.nav.fixed {
+	position: fixed;
+	width: 100%;
+	top: 0;
+	z-index: 1024;
+	box-shadow: 0 1upx 6upx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.foot {
+	position: fixed;
+	width: 100%;
+	bottom: 0;
+	z-index: 1024;
+	box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.tabbar {
+	padding: 0;
+	height: calc(100upx + env(safe-area-inset-bottom) / 2);
+	padding-bottom: calc(env(safe-area-inset-bottom) / 2);
+}
+
+.cu-tabbar-height {
+	min-height: 100upx;
+	height: calc(100upx + env(safe-area-inset-bottom) / 2);
+}
+
+.cu-bar.tabbar.shadow {
+	box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1);
+}
+
+.cu-bar.tabbar .action {
+	font-size: 22upx;
+	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: 140upx;
+	flex: initial;
+}
+
+.cu-bar.tabbar .action.add-action {
+	position: relative;
+	z-index: 2;
+	padding-top: 50upx;
+}
+
+.cu-bar.tabbar .action.add-action .cuIcon {
+	position: absolute;
+	width: 70upx;
+	z-index: 2;
+	height: 70upx;
+	border-radius: 50%;
+	line-height: 70upx;
+	font-size: 50upx;
+	top: -35upx;
+	left: 0;
+	right: 0;
+	margin: auto;
+	padding: 0;
+}
+
+.cu-bar.tabbar .action.add-action::after {
+	content: "";
+	position: absolute;
+	width: 100upx;
+	height: 100upx;
+	top: -50upx;
+	left: 0;
+	right: 0;
+	margin: auto;
+	box-shadow: 0 -3upx 8upx rgba(0, 0, 0, 0.08);
+	border-radius: 50upx;
+	background-color: inherit;
+	z-index: 0;
+}
+
+.cu-bar.tabbar .action.add-action::before {
+	content: "";
+	position: absolute;
+	width: 100upx;
+	height: 30upx;
+	bottom: 30upx;
+	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 10upx;
+}
+
+.cu-bar.tabbar .action .cuIcon {
+	width: 100upx;
+	position: relative;
+	display: block;
+	height: auto;
+	margin: 0 auto 10upx;
+	text-align: center;
+	font-size: 40upx;
+}
+
+
+.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: 1upx solid rgba(0, 0, 0, 0.1);
+	z-index: 3;
+}
+
+.cu-bar.tabbar.border .action:last-child:before {
+	display: none;
+}
diff --git a/components/cropper/cropper.vue b/components/cropper/cropper.vue
new file mode 100644
index 0000000..2ad3fd5
--- /dev/null
+++ b/components/cropper/cropper.vue
@@ -0,0 +1,621 @@
+<template>
+	<view class="cropper" id="cropper" :class="{ show: show }">
+		<view class="cropper-head"><view class="cropper-btn cropper-reset" @tap="resetCrop">重做</view></view>
+		<view class="cropper-body">
+			<image id="image" class="cropper-image" :src="imagePath" mode="aspectFit"></image>
+			<view :style="{ width: stageWidth + 'px', height: stageHeight + 'px', left: stageLeft + 'px', top: stageTop + 'px' }" class="cropper-stage" @touchstart.stop.prevent="touchStart" @touchmove.stop.prevent="touchMove">
+				<view id="box" class="cropper-box" :style="{ width: boxWidth + 'px', height: boxHeight + 'px', left: boxLeft + 'px', top: boxTop + 'px' }">
+					<view id="lt" class="lt"></view>
+					<view id="lb" class="lb"></view>
+					<view id="rt" class="rt"></view>
+					<view id="rb" class="rb"></view>
+
+					<view class="line-v" style="left:33.3%;"></view>
+					<view class="line-v" style="left:66.6%;"></view>
+					<view class="line-h" style="top:33.3%;"></view>
+					<view class="line-h" style="top:66.6%;"></view>
+				</view>
+			</view>
+
+			<canvas class="cropper-canvas" canvas-id="canvas" :style="{ height: canvasHeight + 'px', width: canvasWidth + 'px' }"></canvas>
+		</view>
+		<view class="cropper-bottom">
+			<view class="cropper-btn cropper-cancel" @tap="cancelCrop">取消</view>
+			<view class="cropper-btn cropper-ok" @tap="completeCrop">裁剪</view>
+		</view>
+	</view>
+</template>
+<script>
+//无须渲染的变量
+
+let layoutLeft = 0;
+let layoutTop = 0;
+let layoutWidth = 0;
+let layoutHeight = 0;
+
+let stageLeft = 0;
+let stageTop = 0;
+let stageWidth = 0;
+let stageHeight = 0;
+
+let imageWidth = 0;
+let imageHeight = 0;
+
+let pixelRatio = 1; //todo设备像素密度//暂不使用//
+
+let imageStageRatio = 1; //图片实际尺寸与剪裁舞台大小的比值,用于尺寸换算。
+
+let minBoxWidth = 0;
+let minBoxHeight = 0;
+
+let touchStartBoxLeft = 0;
+let touchStartBoxTop = 0;
+let touchStartBoxWidth = 0;
+let touchStartBoxHeight = 0;
+
+let touchStartX = 0;
+let touchStartY = 0;
+
+export default {
+	name: 'cropper',
+	props: {
+		quality: {
+			type: Number,
+			default: 1
+		},
+
+		//目标文件的类型。默认值为jpg,jpg:输出jpg格式图片;png:输出png格式图片
+		outputFileType: {
+			type: String,
+			default: 'jpg'
+		},
+		//目标图片的宽高比,默认null,即不限制剪裁宽高比。aspectRatio需大于0
+		aspectRatio: {
+			type: [Number, null],
+			default: null
+		},
+		//最小剪裁尺寸与原图尺寸的比率,默认0.15,即宽度最小剪裁到原图的0.15宽。
+		minBoxWidthRatio: {
+			type: Number,
+			default: 0.15
+		},
+		//同minBoxWidthRatio,当设置aspectRatio时,minBoxHeight值设置无效。minBoxHeight值由minBoxWidth 和 aspectRatio自动计算得到。
+		minBoxHeightRatio: {
+			type: Number,
+			default: 0.15
+		},
+		//剪裁框初始大小比率。默认值0.8,即剪裁框默认宽度为图片宽度的0.8倍。
+		initialBoxWidthRatio: {
+			type: Number,
+			default: 0.8
+		},
+		//同initialBoxWidthRatio,当设置aspectRatio时,initialBoxHeightRatio值设置无效。initialBoxHeightRatio值由initialBoxWidthRatio 和 aspectRatio自动计算得到。
+		initialBoxHeightRatio: {
+			type: Number,
+			default: 0.8
+		}
+	},
+	data() {
+		return {
+			//data
+			stageLeft: 0,
+			stageTop: 0,
+			stageWidth: 0,
+			stageHeight: 0,
+
+			boxWidth: 0,
+			boxHeight: 0,
+			boxLeft: 0,
+			boxTop: 0,
+
+			canvasWidth: 0,
+			canvasHeight: 0,
+			show: false,
+			imagePath: ''
+		};
+	},
+	mounted() {
+		// setTimeout(() => {
+		// 	this.init();
+		// }, 150);
+	},
+	methods: {
+		resetCrop() {
+			this.$emit('reset');
+			this.init(this.imagePath);
+		},
+		cancelCrop() {
+			this.$emit('cancel');
+		},
+		completeCrop() {
+			let imagePath = this.imagePath;
+			let canvasContext = wx.createCanvasContext('canvas', this);
+
+			let boxLeft = this.boxLeft;
+			let boxTop = this.boxTop;
+			let boxWidth = this.boxWidth;
+			let boxHeight = this.boxHeight;
+
+			let sx = Math.ceil(boxLeft * imageStageRatio);
+			let sy = Math.ceil(boxTop * imageStageRatio);
+
+			let sWidth = Math.ceil(boxWidth * imageStageRatio);
+			let sHeight = Math.ceil(boxHeight * imageStageRatio);
+			let dx = 0;
+			let dy = 0;
+
+			let dWidth = Math.ceil(sWidth * pixelRatio);
+			let dHeight = Math.ceil(sHeight * pixelRatio);
+			const param = {
+				x: sx,
+				y: sy,
+				width: dWidth,
+				height: dHeight,
+				rotate: 0,
+				scaleX: 1,
+				scaleY: 1
+			};
+
+			canvasContext.drawImage(imagePath, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);
+			canvasContext.draw(false, () => {
+				wx.canvasToTempFilePath(
+					{
+						x: dx,
+						y: dy,
+						width: dWidth,
+						height: dHeight,
+						destWidth: sWidth,
+						destHeight: sHeight,
+						canvasId: 'canvas',
+						fileType: this.outputFileType,
+						quality: this.quality,
+						success: res => {
+							this.$emit('complete', { param, path: res.tempFilePath,source:this.imagePath });
+						}
+					},
+					this
+				);
+			});
+		},
+		touchMove(e) {
+			let targetId = e.target.id;
+			let touch = e.touches[0];
+			let pageX = touch.pageX;
+			let pageY = touch.pageY;
+
+			let offsetX = pageX - touchStartX;
+			let offsetY = pageY - touchStartY;
+
+			if (targetId == 'box') {
+				let newBoxLeft = touchStartBoxLeft + offsetX;
+				let newBoxTop = touchStartBoxTop + offsetY;
+
+				if (newBoxLeft < 0) {
+					newBoxLeft = 0;
+				}
+				if (newBoxTop < 0) {
+					newBoxTop = 0;
+				}
+				if (newBoxLeft + touchStartBoxWidth > stageWidth) {
+					newBoxLeft = stageWidth - touchStartBoxWidth;
+				}
+				if (newBoxTop + touchStartBoxHeight > stageHeight) {
+					newBoxTop = stageHeight - touchStartBoxHeight;
+				}
+				this.boxLeft = newBoxLeft;
+				this.boxTop = newBoxTop;
+			} else if (targetId == 'lt') {
+				if (this.aspectRatio) {
+					offsetY = offsetX / this.aspectRatio;
+				}
+
+				let newBoxLeft = touchStartBoxLeft + offsetX;
+				let newBoxTop = touchStartBoxTop + offsetY;
+
+				if (newBoxLeft < 0) {
+					newBoxLeft = 0;
+				}
+				if (newBoxTop < 0) {
+					newBoxTop = 0;
+				}
+
+				if (touchStartBoxLeft + touchStartBoxWidth - newBoxLeft < minBoxWidth) {
+					newBoxLeft = touchStartBoxLeft + touchStartBoxWidth - minBoxWidth;
+				}
+				if (touchStartBoxTop + touchStartBoxHeight - newBoxTop < minBoxHeight) {
+					newBoxTop = touchStartBoxTop + touchStartBoxHeight - minBoxHeight;
+				}
+
+				let newBoxWidth = touchStartBoxWidth - (newBoxLeft - touchStartBoxLeft);
+				let newBoxHeight = touchStartBoxHeight - (newBoxTop - touchStartBoxTop);
+
+				//约束比例
+				if (newBoxTop == 0 && this.aspectRatio && newBoxLeft != 0) {
+					newBoxWidth = newBoxHeight * this.aspectRatio;
+					newBoxLeft = touchStartBoxWidth - newBoxWidth + touchStartBoxLeft;
+				}
+				if (newBoxLeft == 0 && this.aspectRatio) {
+					newBoxHeight = newBoxWidth / this.aspectRatio;
+					newBoxTop = touchStartBoxHeight - newBoxHeight + touchStartBoxTop;
+				}
+
+				if (newBoxWidth == minBoxWidth && this.aspectRatio) {
+					newBoxHeight = newBoxWidth / this.aspectRatio;
+					newBoxTop = touchStartBoxHeight - newBoxHeight + touchStartBoxTop;
+				}
+				this.boxTop = newBoxTop;
+				this.boxLeft = newBoxLeft;
+				this.boxWidth = newBoxWidth;
+				this.boxHeight = newBoxHeight;
+			} else if (targetId == 'rt') {
+				if (this.aspectRatio) {
+					offsetY = -offsetX / this.aspectRatio;
+				}
+
+				let newBoxWidth = touchStartBoxWidth + offsetX;
+				if (newBoxWidth < minBoxWidth) {
+					newBoxWidth = minBoxWidth;
+				}
+				if (touchStartBoxLeft + newBoxWidth > stageWidth) {
+					newBoxWidth = stageWidth - touchStartBoxLeft;
+				}
+
+				let newBoxTop = touchStartBoxTop + offsetY;
+
+				if (newBoxTop < 0) {
+					newBoxTop = 0;
+				}
+
+				if (touchStartBoxTop + touchStartBoxHeight - newBoxTop < minBoxHeight) {
+					newBoxTop = touchStartBoxTop + touchStartBoxHeight - minBoxHeight;
+				}
+				let newBoxHeight = touchStartBoxHeight - (newBoxTop - touchStartBoxTop);
+
+				//约束比例
+				if (newBoxTop == 0 && this.aspectRatio && newBoxWidth != stageWidth - touchStartBoxLeft) {
+					newBoxWidth = newBoxHeight * this.aspectRatio;
+				}
+
+				if (newBoxWidth == stageWidth - touchStartBoxLeft && this.aspectRatio) {
+					newBoxHeight = newBoxWidth / this.aspectRatio;
+					newBoxTop = touchStartBoxHeight - newBoxHeight + touchStartBoxTop;
+				}
+
+				if (newBoxWidth == minBoxWidth && this.aspectRatio) {
+					newBoxHeight = newBoxWidth / this.aspectRatio;
+					newBoxTop = touchStartBoxHeight - newBoxHeight + touchStartBoxTop;
+				}
+
+				this.boxTop = newBoxTop;
+				this.boxHeight = newBoxHeight;
+				this.boxWidth = newBoxWidth;
+			} else if (targetId == 'lb') {
+				if (this.aspectRatio) {
+					offsetY = -offsetX / this.aspectRatio;
+				}
+				let newBoxLeft = touchStartBoxLeft + offsetX;
+
+				if (newBoxLeft < 0) {
+					newBoxLeft = 0;
+				}
+				if (touchStartBoxLeft + touchStartBoxWidth - newBoxLeft < minBoxWidth) {
+					newBoxLeft = touchStartBoxLeft + touchStartBoxWidth - minBoxWidth;
+				}
+
+				let newBoxWidth = touchStartBoxWidth - (newBoxLeft - touchStartBoxLeft);
+
+				let newBoxHeight = touchStartBoxHeight + offsetY;
+				if (newBoxHeight < minBoxHeight) {
+					newBoxHeight = minBoxHeight;
+				}
+				if (touchStartBoxTop + newBoxHeight > stageHeight) {
+					newBoxHeight = stageHeight - touchStartBoxTop;
+				}
+
+				//约束比例
+				if (newBoxHeight == stageHeight - touchStartBoxTop && this.aspectRatio && newBoxLeft != 0) {
+					newBoxWidth = newBoxHeight * this.aspectRatio;
+					newBoxLeft = touchStartBoxWidth - newBoxWidth + touchStartBoxLeft;
+				}
+				if (newBoxLeft == 0 && this.aspectRatio) {
+					newBoxHeight = newBoxWidth / this.aspectRatio;
+				}
+
+				if (newBoxWidth == minBoxWidth && this.aspectRatio) {
+					newBoxHeight = newBoxWidth / this.aspectRatio;
+				}
+
+				this.boxLeft = newBoxLeft;
+				this.boxWidth = newBoxWidth;
+				this.boxHeight = newBoxHeight;
+			} else if (targetId == 'rb') {
+				if (this.aspectRatio) {
+					offsetY = offsetX / this.aspectRatio;
+				}
+				let newBoxWidth = touchStartBoxWidth + offsetX;
+				if (newBoxWidth < minBoxWidth) {
+					newBoxWidth = minBoxWidth;
+				}
+				if (touchStartBoxLeft + newBoxWidth > stageWidth) {
+					newBoxWidth = stageWidth - touchStartBoxLeft;
+				}
+
+				let newBoxHeight = touchStartBoxHeight + offsetY;
+				if (newBoxHeight < minBoxHeight) {
+					newBoxHeight = minBoxHeight;
+				}
+				if (touchStartBoxTop + newBoxHeight > stageHeight) {
+					newBoxHeight = stageHeight - touchStartBoxTop;
+				}
+
+				//约束比例
+				if (newBoxHeight == stageHeight - touchStartBoxTop && this.aspectRatio && newBoxWidth != stageWidth - touchStartBoxLeft) {
+					newBoxWidth = newBoxHeight * this.aspectRatio;
+				}
+
+				if (newBoxWidth == stageWidth - touchStartBoxLeft && this.aspectRatio) {
+					newBoxHeight = newBoxWidth / this.aspectRatio;
+				}
+
+				if (newBoxWidth == minBoxWidth && this.aspectRatio) {
+					newBoxHeight = newBoxWidth / this.aspectRatio;
+				}
+
+				this.boxWidth = newBoxWidth;
+				this.boxHeight = newBoxHeight;
+			}
+		},
+		touchStart(e) {
+			let touch = e.touches[0];
+			let pageX = touch.pageX;
+			let pageY = touch.pageY;
+
+			touchStartX = pageX;
+			touchStartY = pageY;
+
+			touchStartBoxLeft = this.boxLeft;
+			touchStartBoxTop = this.boxTop;
+			touchStartBoxWidth = this.boxWidth;
+			touchStartBoxHeight = this.boxHeight;
+		},
+		close(force=true) {
+			this.show = false;
+			if(force){
+				this.imagePath = ''
+			}
+		},
+		init(src) {
+			if (!src) {
+				return '';
+			}
+			this.imagePath = src;
+			uni.showLoading({
+				mask: true,
+				title: '载入图片中'
+			});
+			uni.createSelectorQuery()
+				.in(this)
+				.select('.cropper-body')
+				.boundingClientRect(rect => {
+					layoutLeft = rect.left;
+					layoutTop = rect.top;
+					layoutWidth = rect.width;
+					layoutHeight = rect.height;
+
+					wx.getImageInfo({
+						src: this.imagePath,
+						success: imageInfo => {
+							imageWidth = imageInfo.width;
+							imageHeight = imageInfo.height;
+							let imageWH = imageWidth / imageHeight;
+							let layoutWH = layoutWidth / layoutHeight;
+							if (imageWH >= layoutWH) {
+								stageWidth = layoutWidth;
+								stageHeight = stageWidth / imageWH;
+								imageStageRatio = imageHeight / stageHeight;
+							} else {
+								stageHeight = layoutHeight;
+								stageWidth = layoutHeight * imageWH;
+								imageStageRatio = imageWidth / stageWidth;
+							}
+							stageLeft = (layoutWidth - stageWidth) / 2;
+							stageTop = (layoutHeight - stageHeight) / 2;
+
+							minBoxWidth = stageWidth * this.minBoxWidthRatio;
+							minBoxHeight = stageHeight * this.minBoxHeightRatio;
+
+							let boxWidth = stageWidth * this.initialBoxWidthRatio;
+							let boxHeight = stageHeight * this.initialBoxHeightRatio;
+
+							if (this.aspectRatio) {
+								boxHeight = boxWidth / this.aspectRatio;
+							}
+							if (boxHeight > stageHeight) {
+								boxHeight = stageHeight;
+								boxWidth = boxHeight * this.aspectRatio;
+							}
+
+							let boxLeft = (stageWidth - boxWidth) / 2;
+							let boxTop = (stageHeight - boxHeight) / 2;
+
+							this.canvasWidth = imageWidth * pixelRatio;
+							this.canvasHeight = imageHeight * pixelRatio;
+
+							this.stageLeft = stageLeft;
+							this.stageTop = stageTop;
+							this.stageWidth = stageWidth;
+							this.stageHeight = stageHeight;
+
+							this.boxWidth = boxWidth;
+							this.boxHeight = boxHeight;
+							this.boxLeft = boxLeft;
+							this.boxTop = boxTop;
+							setTimeout(() => {
+								uni.hideLoading();
+								this.show = true;
+							}, 100);
+						},
+						fail: () => {
+							uni.showToast({
+								icon: 'none',
+								title: '图片载入失败'
+							});
+						}
+					});
+				})
+				.exec();
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+.cropper {
+	position: fixed;
+	left: 0;
+	right: 0;
+	top: 0;
+	bottom: 0;
+	background-color: #000;
+	z-index: -1000000;
+	opacity: 0;
+	&.show {
+		z-index: 999;
+		opacity: 1;
+	}
+	.cropper-head {
+		position: fixed;
+		top: 0;
+		width: 750rpx;
+		z-index: 6;
+		height: calc(var(--status-bar-height) + 88rpx);
+		padding-top: var(--status-bar-height);
+		display: flex;
+		justify-content: flex-end;
+		align-items: center;
+	}
+	.cropper-btn {
+		height: 64rpx;
+		margin: 0 20rpx;
+		padding: 0 30rpx;
+		line-height: 64rpx;
+		color: #fff;
+		font-size: 26rpx;
+	}
+	.cropper-body {
+		margin: calc(var(--status-bar-height) + 88rpx) 30rpx 0 30rpx;
+		height: calc(100vh - var(--status-bar-height) - 88rpx - 100rpx - var(--safe-area-inset-bottom));
+		position: relative;
+	}
+	.cropper-bottom {
+		height: calc(var(--safe-area-inset-bottom) + 100rpx);
+		padding-top: var(--safe-area-inset-bottom);
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		position: fixed;
+		z-index: 6;
+		width: 750rpx;
+		bottom: 0;
+	}
+	.cropper-ok {
+		color: #39f;
+	}
+	.cropper-image {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+	}
+	.cropper-stage {
+		position: absolute;
+		.cropper-box {
+			position: absolute;
+			border: 4rpx solid #ddd;
+			box-sizing: border-box;
+			box-shadow: 0 0 0 2000rpx rgba(0, 0, 0, 0.5);
+			.lt {
+				position: absolute;
+				height: 48rpx;
+				width: 48rpx;
+				left: -6rpx;
+				top: -6rpx;
+				border-left: 12rpx solid #ffffff;
+				border-top: 12rpx solid #ffffff;
+			}
+
+			.lb {
+				position: absolute;
+				height: 48rpx;
+				width: 48rpx;
+				left: -6rpx;
+				bottom: -6rpx;
+				border-left: 12rpx solid #ffffff;
+				border-bottom: 12rpx solid #ffffff;
+			}
+
+			.rt {
+				position: absolute;
+				height: 48rpx;
+				width: 48rpx;
+				right: -6rpx;
+				top: -6rpx;
+				border-right: 12rpx solid #ffffff;
+				border-top: 12rpx solid #ffffff;
+			}
+
+			.rb {
+				position: absolute;
+				height: 48rpx;
+				width: 48rpx;
+				right: -6rpx;
+				bottom: -6rpx;
+				border-right: 12rpx solid #ffffff;
+				border-bottom: 12rpx solid #ffffff;
+			}
+			.line-v,
+			.line-h {
+				position: absolute;
+				opacity: 0.5;
+			}
+			.line-v {
+				width: 2rpx;
+				border-left: 2rpx dashed #fff;
+				height: 100%;
+			}
+			.line-h {
+				height: 2rpx;
+				border-bottom: 2rpx dashed #fff;
+				width: 100%;
+			}
+		}
+	}
+	.cropper-canvas {
+		position: fixed;
+		background-color: red;
+		left: 5000rpx;
+	}
+}
+
+// 安全域兼容样式
+// page {
+// 	--safe-area-inset-top: 0px;
+// 	--safe-area-inset-right: 0px;
+// 	--safe-area-inset-bottom: 0px;
+// 	--safe-area-inset-left: 0px;
+
+// 	@supports (top: constant(safe-area-inset-top)) {
+// 		--safe-area-inset-top: constant(safe-area-inset-top);
+// 		--safe-area-inset-right: constant(safe-area-inset-right);
+// 		--safe-area-inset-bottom: constant(safe-area-inset-bottom);
+// 		--safe-area-inset-left: constant(safe-area-inset-left);
+// 	}
+
+// 	@supports (top: env(safe-area-inset-top)) {
+// 		--safe-area-inset-top: env(safe-area-inset-top);
+// 		--safe-area-inset-right: env(safe-area-inset-right);
+// 		//--safe-area-inset-bottom: 12px;
+// 		--safe-area-inset-bottom: env(safe-area-inset-bottom);
+// 		--safe-area-inset-left: env(safe-area-inset-left);
+// 	}
+// }
+</style>
diff --git a/components/cropper/readme.md b/components/cropper/readme.md
new file mode 100644
index 0000000..9ca8ae9
--- /dev/null
+++ b/components/cropper/readme.md
@@ -0,0 +1,79 @@
+#### 【注意】由于赶时间,只做了功能性测试,兼容性测试暂时无法进行,更不用说优化测试了。欢迎有遇到问题的留言,或者自己动手修改也可以。
+#### 【注意】因为属于业余时间开发的一个项目所依赖的插件,所以更新较缓慢。
+
+### 使用方式
+
+```javascript
+import Cropper from '@/components/cropper/cropper.vue';
+```
+
+```html
+<cropper :imagePath="originalFaceSrc" :aspectRatio="1" @complete="complete" @cancel="cancel" v-if="handleFaceStatus"></cropper>
+```
+
+使用v-if控制显示,mounted内执行init方法,使用简单,操作便利。
+
+## 参数
+| 参数  | 类型  | 解释  |  默认 |  必填 | 备注  |
+| ------------ | ------------ | ------------ | ------------ | ------------ | ------------ |
+|  quality | Number  | 返回图片质量  | 1  | 否  |  如返回的图片仅需预览不用上传,请适当调低 |
+|  imagePath | String  | 原始图片路径  |""  | 是  | blob、静态图片资源地址或者base64(未测试)  |
+|  outputFileType | String  | 目标文件的类型  | jpg  | 否  | jpg:输出jpg格式图片;png:输出png格式图片  |
+|  aspectRatio | Number, null  | 目标图片的宽高比  | null  | 否  | null,即不限制剪裁宽高比。aspectRatio需大于0  |
+|  minBoxWidthRatio | Number  | 最小剪裁尺寸与原图尺寸的比率(宽)  | 0.15  | 否  | 宽度最小剪裁到原图的0.15宽  |
+|  minBoxHeightRatio  | Number  | 最小剪裁尺寸与原图尺寸的比率(高)  | 0.15  | 否  | 当设置aspectRatio时,minBoxHeight值设置无效。minBoxHeight值由minBoxWidth 和 aspectRatio自动计算得到  |
+|  initialBoxWidthRatio | Number  | 剪裁框初始大小比率(宽)  | 0.8  | 否  | 裁框默认宽度为图片宽度的0.8倍  |
+|  initialBoxHeightRatio | Number  | 剪裁框初始大小比率(高)  | 0.8  | 否  | 当设置aspectRatio时,initialBoxHeightRatio值设置无效。initialBoxHeightRatio值由initialBoxWidthRatio 和 aspectRatio自动计算得到  |
+
+## 事件
+
+| 事件名  | 解释  | 参数  |  备注 |
+| ------------ | ------------ | ------------ | ------------ |
+|  reset |  用户点击重做后触发 | 无  | 可能无用,但留一个给开发者备用  |
+|  cancel |  用户点击取消后触发 | 无  | 开发者可以将组件置为消失v-if(尽量不要用v-show)   |
+|  complete |  用户点击裁剪后触发 | path:路径,h5为base64,app与小程序为临时路径;param:裁切参数,见【备注1】  | 核心功能   |
+
+
+### 备注1
+param:
+```json
+{
+	x:Number, //裁切左上角X坐标
+	y:Number, //裁切左上角Y坐标
+	width:Number, //裁切宽度
+	height:Number, //裁切高度
+	rotate:Number, //旋转(未实现,预留)
+	scaleX:Number, //X轴缩放(未实现,预留)
+	scaleY:Number, //Y轴缩放(未实现,预留)
+}
+```
+
+### 备注2
+本组件样式支持iphone安全范围但需要手动开启
+请在插件被样式中最后备注的地方解除备注即可。
+控制台会报错,无视即可。
+或者复制如下样式样式代码
+```css
+// 安全域兼容样式
+page {
+	--safe-area-inset-top: 0px;
+	--safe-area-inset-right: 0px;
+	--safe-area-inset-bottom: 0px;
+	--safe-area-inset-left: 0px;
+
+	@supports (top: constant(safe-area-inset-top)) {
+		--safe-area-inset-top: constant(safe-area-inset-top);
+		--safe-area-inset-right: constant(safe-area-inset-right);
+		--safe-area-inset-bottom: constant(safe-area-inset-bottom);
+		--safe-area-inset-left: constant(safe-area-inset-left);
+	}
+
+	@supports (top: env(safe-area-inset-top)) {
+		--safe-area-inset-top: env(safe-area-inset-top);
+		--safe-area-inset-right: env(safe-area-inset-right);
+		//--safe-area-inset-bottom: 12px;
+		--safe-area-inset-bottom: env(safe-area-inset-bottom);
+		--safe-area-inset-left: env(safe-area-inset-left);
+	}
+}
+```
\ No newline at end of file
diff --git a/components/foot.vue b/components/foot.vue
new file mode 100644
index 0000000..d000dee
--- /dev/null
+++ b/components/foot.vue
@@ -0,0 +1,173 @@
+<template>
+	<view>
+		<view class="fixed">
+			<view class="cu-bar tabbar bg-black">
+				<view @click="home()" class="action" :class="action == 0?'text-red':'text-gray'">
+					<span class="iconfont icon-shouye cuIcon"></span>首页
+				</view>
+				<view @click="mall()" class="action" :class="action == 1?'text-red':'text-gray'">
+					<view class="iconfont icon-stores cuIcon"></view>门店管理
+				</view>
+	
+				<view @click="equipment()" class="action" :class="action == 3?'text-red':'text-gray'">
+					<view class="iconfont icon-shebei cuIcon"></view>设备中心
+				</view>
+				<view @click="mine()" class="action" :class="action == 4?'text-red':'text-gray'">
+					<view class="iconfont icon-zhijiandan- cuIcon" style="position: relative;"></view>结算中心
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+<script>
+	import logoservice from '@/service/logoservice.js';
+	// 底部弹框组件
+	export default {
+		name: "foot",
+		props: {
+			action: {
+				type: Number,
+				default: 0,
+			},
+			partnerId: {
+				type: Number,
+				default: 1,
+			},
+			partnerType: {
+				//1所有 2市级别 3区级别 4终端
+				type: Number,
+				default: 4,
+			},
+
+		},
+		components: {
+
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				textChart: '云打印',
+				// partnerId: this.$base.Userres.partner_id,
+			};
+		},
+		watch: {
+			/* val监听改变的值*/
+			partnerId(val) {
+				
+			},
+		},
+		methods: {
+			home() {
+
+				//console.log("partnerType="+this.partnerType);
+				if (this.partnerType == 1) {
+					uni.reLaunch({
+						url: "/pages/index/all-agent"
+					})
+				} else if (this.partnerType == 2) {
+					uni.reLaunch({
+						url: "/pages/index/city-agent"
+					})
+				} else if (this.partnerType == 3) {
+					uni.reLaunch({
+						url: "/pages/index/home"
+					})
+				
+				} else {
+					uni.reLaunch({
+						url: "/pages/index/home"
+					})
+				}
+			},
+			// 门店管理
+			mall() {
+				uni.reLaunch({
+					url: "/pages/index/mall"
+				})
+			},
+			// 增加门店
+			addstore() {
+		
+				uni.navigateTo({
+					// url: '/pages/store/assindex?url=https://www.wenjuan.design/s/UZBZJvIcBJ/',
+					// url: '/pages/store/assindex?url=https://tprint.refinecolor.com/checkposition.html',
+					// url: '/pages/store/assindex?url=https://mp.weixin.qq.com/s/IuNckbRHA0m-REa4utM4mA',
+					url: '/pages/store/assindex?url=https://mp.weixin.qq.com/s/AkvYNXNSf5J_BKsBkAlLCg',
+				});
+				// }
+				// uni.navigateTo({
+				// 	url:"/pages/store/shopdetails"
+				// })
+			},
+			// 设备中心
+			equipment() {
+				uni.reLaunch({
+					url: "/pages/index/equipment"
+				})
+			},
+			// 结算中心
+			mine() {
+
+				// 直接跳转
+				uni.reLaunch({
+					url: "/pages/index/mine"
+				})
+			}
+		},
+		onShow() {
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	@import "./colorui/main.css";
+
+	/*每个页面公共css */
+	.fixed {
+		position: fixed;
+		z-index: 9999;
+		bottom: 0upx;
+		width: 100%;
+	}
+
+	.bg-black {
+		background-color: #333333;
+		color: #ffffff;
+	}
+
+	.text-gray {
+		color: #B2B2B2;
+	}
+
+	.text-red {
+		color: #5CE6B5;
+	}
+
+	@keyframes cuIcon-spin {
+		0% {
+			-webkit-transform: rotate(0);
+			transform: rotate(0);
+		}
+
+		100% {
+			-webkit-transform: rotate(359deg);
+			transform: rotate(359deg);
+		}
+	}
+
+	.cuIconfont-spin {
+		-webkit-animation: cuIcon-spin 2s infinite linear;
+		animation: cuIcon-spin 2s infinite linear;
+		display: inline-block;
+	}
+
+	.cuIconfont-pulse {
+		-webkit-animation: cuIcon-spin 1s infinite steps(8);
+		animation: cuIcon-spin 1s infinite steps(8);
+		display: inline-block;
+	}
+</style>
diff --git a/components/fr-image/fr-image.vue b/components/fr-image/fr-image.vue
new file mode 100644
index 0000000..a851772
--- /dev/null
+++ b/components/fr-image/fr-image.vue
@@ -0,0 +1,201 @@
+<template>
+	<view class="fr_img">
+		<!-- 主图 -->
+		<image class="fr_img_content" 
+		:src="src" :mode="mode" :lazy-load="lazyLoad" :webp="webp" :show-menu-by-longpress="showMenuByLongpress" @error="onImgError" @load="onImgLoad"/>
+		<view v-if="loading_complete && completeTransition" class="loading_complete_transition"></view>
+		
+		<!-- 加载失败图 -->
+		<view v-if="loading_error" class="loading_error"> <image class="loading_error_img" :src="loadingErrorImg" mode="aspectFit"></image> </view>
+		
+		<!-- 加载中图 -->
+		<view v-else-if="!loading_complete" class="loading"> 
+			<image v-if="loadingIngImg == 'two-balls'" class="loading_img" :src="require('./loading_two_balls.gif')" mode="aspectFit"></image>
+			<view v-if="loadingIngImg == 'oblique-light'" class="loading_oblique_light"></view>
+			<view v-if="loadingIngImg == 'looming'" class="loading_looming"></view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		
+		props: {
+		  
+		  // 和官方Image组件属性一致
+		  src: { 
+		    type: String,
+			default: "",
+		  },
+		  
+		  mode: { 
+		    type: String,
+			default: "",
+		  },
+		  
+		  lazyLoad: {
+			  type: Boolean,
+			  default: false,
+		  },
+		  
+		  webp: {
+			  type: Boolean,
+			  default: false,
+		  },
+		  
+		  showMenuByLongpress: {
+			  type: Boolean,
+			  default: false,
+		  },
+		  
+		  
+		  // 可选: 加载失败图片:可以本地url、网络url、base64 (与src一致)
+		  loadingErrorImg: {
+			  type: String,
+			  default: require('./loading_error.png'),
+		  },
+		  
+		  // 可选: 加载中的图片
+		  // two-balls = 两个球来回转 
+		  // oblique-light = 斜光 
+		  // looming = 若影若现
+		  // 本地url、网络url、base64 = 自定义的加载中图片(与src一致)
+		  loadingIngImg: {
+			  type: String,
+			  default: "oblique-light",
+		  },
+		  
+		  // 可选:是否需要加载完成动画
+		  completeTransition: {
+			  type: Boolean,
+			  default: true,
+		  },
+		  
+		  
+		},
+		
+		data() {
+			return {
+				loading_complete: false,
+				loading_error: false,
+			};
+		},
+		
+		methods: {
+			onImgError: function(event){
+				this.loading_error = true;
+				this.$emit("error", event);
+			},
+			
+			onImgLoad: function(event){
+				this.loading_complete = true;
+				this.$emit("load", event);
+			},
+		},
+	}
+</script>
+
+<style lang="scss">
+
+.fr_img{
+	width: 100%;
+	height: 100%;
+	position: relative;
+	
+	.fr_img_content{
+		width: 100%;
+		height: 100%;
+		position: absolute;
+	}
+	
+	.loading_complete_transition{
+		width: 100%;
+		height: 100%;
+		position: absolute;
+		background-color: #FFFFFF;
+	    animation: loading_complete_transition 1.2s forwards;
+	}
+	
+	@keyframes loading_complete_transition{
+	    0% { opacity: 1; }
+	    100% { opacity: 0; }
+	} 
+	
+	
+	
+	.loading_error{
+		width: 100%;
+		height: 100%;
+		background-color: #F8F8F8;
+		position: absolute;
+		
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		
+		.loading_error_img{
+			width: 100rpx;
+			height: 100rpx;
+			max-width: 100%;
+			max-height: 100%;
+		}
+	}
+	
+	.loading{
+		width: 100%;
+		height: 100%;
+		background-color: #FFFFFF;
+		position: absolute;
+		
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		
+		// 加载图
+		.loading_img{
+			width: 100rpx;
+			height: 100rpx;
+			max-width: 100%;
+			max-height: 100%;
+		}
+		
+		// 斜光
+		.loading_oblique_light{
+			width: 100%;
+			height: 100%;
+			
+			background-color: #e3e3e3;
+			background-image: linear-gradient(100deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0) 80%);
+			background-size: 100rpx 100%;
+			background-repeat: repeat-y;
+			background-position:0 0;
+			animation: loading_oblique_light .6s infinite;
+		}
+		
+		@keyframes loading_oblique_light {
+		    to {
+		        background-position: 200% 0;
+		    }
+		}
+		
+		
+		// 若隐若现
+		.loading_looming{
+			width: 100%;
+			height: 100%;
+		    animation: loading_looming 1s infinite linear;
+		    background-color: #e3e3e3;
+		}
+		@keyframes loading_looming{
+		    0%   {background-color:rgba($color: #e3e3e3, $alpha: 0.5);}
+		    50%  {background-color:rgba($color: #e3e3e3, $alpha: 1.0);}
+		    100% {background-color:rgba($color: #e3e3e3, $alpha: 0.5);}
+		} 
+		
+	}
+	
+	
+}
+
+</style>
diff --git a/components/fr-image/loading_error.png b/components/fr-image/loading_error.png
new file mode 100644
index 0000000..9f6b4e9
Binary files /dev/null and b/components/fr-image/loading_error.png differ
diff --git a/components/fr-image/loading_two_balls.gif b/components/fr-image/loading_two_balls.gif
new file mode 100644
index 0000000..cdd6e2e
Binary files /dev/null and b/components/fr-image/loading_two_balls.gif differ
diff --git a/components/ksp-image-cutter/ksp-image-cutter.vue b/components/ksp-image-cutter/ksp-image-cutter.vue
new file mode 100644
index 0000000..555474b
--- /dev/null
+++ b/components/ksp-image-cutter/ksp-image-cutter.vue
@@ -0,0 +1,792 @@
+<template>
+	<view v-show="properties.content" class="ksp-image-cutter" @tap="onok" 
+	style="position: relative; width: 100%; height: 100%; overflow: hidden;">
+		<view class="body">
+			<!-- 背景图 -->
+			<!-- <image v-if="properties.content" class="image" @load="imageLoad" :style="{left: image.left + 'px', top: image.top + 'px', 
+			width: image.width + 'px', height: image.height + 'px',transform: 'rotate(' + properties.angle + 'deg)'}"
+			 :src="properties.content"></image> -->
+			<view v-if="mask.show" class="mask"></view>
+			<!-- 窗口 -->
+			<view @touchstart="touchStart($event, 'plank')" :data-time="lastTapTime"
+			@touchmove="touchMove" @touchend="touchEnd" @touchcancel="touchCancel"
+			 class="plank" :style="{transform: 'rotate(' + properties.angle + 'deg)'}">
+				<view class="frame" @touchstart="touchStart($event, 'frame')" @touchstart.stop.prevent="touchHandle" :data-time="lastTapTime"
+				:style="{left: frame.left + 'px', top: frame.top + 'px', 
+				width: frame.width + 'px', height: frame.height + 'px'}">
+					<!-- 图片 -->
+					<image v-if="properties.content" class="image" :data-time="lastTapTime"  @load="imageLoad"
+					:style="{'margin-left': -(frame.left - image.left) + 'px', 'margin-top': -(frame.top - image.top) + 'px',
+					width: image.width + 'px', height: image.height + 'px'}"
+					 :src="properties.content"></image>
+					<view class="rect"></view>
+					<view class="line-one"></view>
+					<view class="line-two"></view>
+					<view class="line-three"></view>
+					<view class="line-four"></view>
+					<view @touchstart="touchStart($event, 'left')" @touchstart.stop.prevent="touchHandle" class="frame-left">
+						<view class='left_edge'></view>
+					</view>
+					<view @touchstart="touchStart($event, 'right')" @touchstart.stop.prevent="touchHandle" class="frame-right">
+						<view class='rightedge'> </view>
+					</view>
+					<view @touchstart="touchStart($event, 'top')" @touchstart.stop.prevent="touchHandle" class="frame-top">
+						<view class='topedge'> </view>
+					</view>
+					<view @touchstart="touchStart($event, 'bottom')" @touchstart.stop.prevent="touchHandle" class="frame-bottom">
+						<view class='bottomedge'> </view>
+					</view>
+					
+					<view @touchstart="touchStart($event, 'left-top')" @touchstart.stop.prevent="touchHandle" class="frame-left-top-wrap">
+						<view class='frame-left-top'> </view>
+					</view>
+					<view @touchstart="touchStart($event, 'left-bottom')" @touchstart.stop.prevent="touchHandle" class="frame-left-bottom-wrap">
+						<view class='frame-left-bottom'> </view>
+					</view>
+					<view @touchstart="touchStart($event, 'right-top')" @touchstart.stop.prevent="touchHandle" class="frame-right-top-wrap">
+						<view class='frame-right-top'> </view>
+					</view>
+					<view @touchstart="touchStart($event, 'right-bottom')" @touchstart.stop.prevent="touchHandle" class="frame-right-bottom-wrap">
+						<view class='frame-right-bottom'> </view>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	// 封装
+	import drag from '../../pages/index/js/drag.js'
+	export default {
+		props: {
+			properties: {
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+			url: {
+				type: String,
+				default: ""
+			},
+			fixed: {
+				type: Boolean,
+				default: false
+			},
+			width: {
+				type: Number,
+				default: 200
+			},
+			height: {
+				type: Number,
+				default: 200
+			},
+			maxWidth: {
+				type: Number,
+				default: 1024
+			},
+			maxHeight: {
+				type: Number,
+				default: 1024
+			},
+			blob: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				mask: {
+					show: false
+				},
+				// 裁剪的窗口
+				frame: {
+					left: 100,
+					top: 100,
+					width: this.properties.width,
+					height: this.properties.height
+				},
+				// 背景图
+				image: {
+					left: 100,
+					top: 100,
+					width: this.properties.initialWidth,
+					height: this.properties.initialHeight
+				},
+				// 背景图初始
+				real: {
+					width: this.properties.initialWidth,
+					height: this.properties.initialHeight
+				},
+				// 裁剪的窗口初始
+				target: {
+					width: this.properties.width,
+					height: this.properties.height
+				},
+				touches: [],
+				type: "",
+				start: {
+					frame: {
+						left: 0,
+						top: 0,
+						width: 0,
+						height: 0
+					},
+					image: {
+						left: 0,
+						top: 0,
+						width: 0,
+						height: 0
+					},
+				},
+				timeoutId: -1,
+				context: Object,
+				targetContext: Object,
+				// 后添加属性值
+				Centerleft: null,
+				Centertop: null,
+				lastTapTime: 0, //判断点击时间间隔
+			};
+		},
+		mounted() {
+			//#ifdef H5
+			this.$el.addEventListener("touchmove", (ev) => {
+				ev.preventDefault();
+			});
+			// #endif
+			// this.context = uni.createCanvasContext("canvas", this);
+			// this.targetContext = uni.createCanvasContext("target", this);
+		},
+		methods: {
+			doubleTap(e){
+				console.log(e)
+				var curTime = e.timeStamp
+				var lastTime = e.currentTarget.dataset.time // 通过e.currentTarget.dataset.time 访问到绑定到该组件的自定义数据
+				if (curTime - lastTime > 0) {
+					if (curTime - lastTime < 300) { //是双击事件
+						
+					}
+				}
+				this.lastTapTime = curTime
+			},
+			/**
+			 * 初始化方法
+			 * 获取图片宽高后,把图片缩放至剪切框大小,
+			 * 并使剪切框位于图片中央
+			 **/
+			init() {
+				if (!this.properties.content) return
+				let {
+					windowWidth,
+					windowHeight,
+					pixelRatio
+				} = wx.getSystemInfoSync()
+				let clipSize = windowWidth / 750
+				let clipHeight = windowHeight / 1206
+				// console.log(windowHeight / windowWidth)
+				// 计算宽度高度
+				this.real.width = this.properties.initialWidth * this.properties.initialScale
+				this.real.height = this.properties.initialHeight * this.properties.initialScale
+				this.image.width = this.properties.initialWidth * this.properties.initialScale
+				this.image.height = this.properties.initialHeight * this.properties.initialScale
+				this.image.angle = this.properties.angle
+				this.frame.width = this.properties.width;
+				this.frame.height = this.properties.height;
+				this.frame.angle = this.properties.angle;
+				// 默认居中
+				this.Centerleft = (windowWidth - this.properties.width) / 2 - this.properties.frame_left
+				this.Centertop = (windowHeight - this.properties.height) / 2 - this.properties.frame_top
+				this.image.left = this.Centerleft
+				this.image.top = this.Centertop
+				this.frame.left = this.Centerleft
+				this.frame.top = this.Centertop
+				// 有值替换
+				if (this.properties.frame_left) {
+					this.frame.left = this.properties.frame_left + this.Centerleft
+				}
+				if (this.properties.frame_top) {
+					this.frame.top = this.properties.frame_top + this.Centertop
+				}
+				if (this.properties.image_left) {
+					this.image.left = this.properties.image_left + this.Centerleft
+				}
+				if (this.properties.image_top) {
+					this.image.top = this.properties.image_top + this.Centertop
+				}
+				// 初始化的位置
+				drag.initPos(this.frame)
+				drag.initPos(this.image)
+			},
+			imageLoad(ev) {
+				this.mask.show = true;
+				
+			},
+			touchHandle(ev) {
+				console.log(ev)
+				var curTime = ev.timeStamp
+				var lastTime = ev.currentTarget.dataset.time // 通过e.currentTarget.dataset.time 访问到绑定到该组件的自定义数据
+				if (curTime - lastTime > 0) {
+					if (curTime - lastTime < 300) { //是双击事件
+						this.onok()
+					}
+				}
+				this.lastTapTime = curTime
+			},
+			touchStart(ev, type) {
+				this.mask.show = false;
+				if (this.touches.length == 0) {
+					this.type = type;
+					this.start.frame.left = this.frame.left;
+					this.start.frame.top = this.frame.top;
+					this.start.frame.width = this.frame.width;
+					this.start.frame.height = this.frame.height;
+					this.start.image.left = this.image.left;
+					this.start.image.top = this.image.top;
+					this.start.image.width = this.image.width;
+					this.start.image.height = this.image.height;
+				}
+				var touches = ev.changedTouches;
+				for (var i = 0; i < touches.length; i++) {
+					var touch = touches[i];
+					this.touches.push(touch);
+				}
+			},
+			touchMove(ev) {
+				ev.preventDefault();
+				var touches = ev.touches;
+				// 点击
+				if (this.touches.length == 1) {
+					if (this.type == "plank" || this.type == "frame" || this.fixed) {
+						this.moveImage(this.touches[0], touches[0]);
+					} else {
+						this.scaleFrame(this.touches[0], touches[0], this.type);
+					}
+					
+				} else if (this.touches.length == 2 && touches.length == 2) {
+					// 双指头操作
+					var ta = this.touches[0];
+					var tb = this.touches[1];
+					var tc = touches[0];
+					var td = touches[1];
+					if (ta.identifier != tc.identifier) {
+						var temp = tc;
+						tc = td;
+						td = temp;
+					}
+					this.scaleImage(ta, tb, tc, td);
+				}
+			},
+			touchEnd(ev) {
+				this.type = "";
+				this.touches = [];
+				drag.getTransferPosition(this.frame.left, this.frame.top, this.frame.width, this.frame.height, this.frame.angle, this.frame.centerPos,this.frame)
+				drag.getTransferPosition(this.image.left, this.image.top, this.image.width, this.image.height, this.image.angle, this.image.centerPos,this.image)
+			},
+			touchCancel(ev) {
+				this.type = "";
+				this.touches = [];
+			},
+			moveImage(ta, tb) {
+				// 计算角度
+				// let roat = Math.abs(this.properties.angle) % 360
+				// if (this.properties.angle < 0) {
+				// 	let multiple = Math.ceil(Math.abs(this.properties.angle) / 360)
+				// 	roat = this.properties.angle + multiple * 360
+				// }
+				
+				var ax = tb.clientX - ta.clientX;
+				var ay = tb.clientY - ta.clientY;
+				this.image.left = this.start.image.left + ax;
+				this.image.top = this.start.image.top + ay;
+				if (this.image.left > this.frame.left) {
+					this.image.left = this.frame.left;
+				}
+				if (this.image.top > this.frame.top) {
+					this.image.top = this.frame.top;
+				}
+				if (this.image.left + this.image.width < this.frame.left + this.frame.width) {
+					this.image.left = this.frame.left + this.frame.width - this.image.width;
+				}
+				if (this.image.top + this.image.height < this.frame.top + this.frame.height) {
+					this.image.top = this.frame.top + this.frame.height - this.image.height;
+				}
+			},
+			scaleImage(ta, tb, tc, td) {
+				var x1 = ta.clientX;
+				var y1 = ta.clientY;
+				var x2 = tb.clientX;
+				var y2 = tb.clientY;
+				var x3 = tc.clientX;
+				var y3 = tc.clientY;
+				var x4 = td.clientX;
+				var y4 = td.clientY;
+				var ol = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
+				var el = Math.sqrt((x3 - x4) * (x3 - x4) + (y3 - y4) * (y3 - y4));
+				var ocx = (x1 + x2) / 2;
+				var ocy = (y1 + y2) / 2;
+				var ecx = (x3 + x4) / 2;
+				var ecy = (y3 + y4) / 2;
+				var ax = ecx - ocx;
+				var ay = ecy - ocy;
+				var scale = el / ol;
+				if (this.start.image.width * scale < this.frame.width) {
+					scale = this.frame.width / this.start.image.width;
+				}
+				if (this.start.image.height * scale < this.frame.height) {
+					scale = this.frame.height / this.start.image.height;
+				}
+				if (this.start.image.width * scale < this.frame.width) {
+					scale = this.frame.width / this.start.image.width;
+				}
+				this.image.left = this.start.image.left + ax - (ocx - this.start.image.left) * (scale - 1);
+				this.image.top = this.start.image.top + ay - (ocy - this.start.image.top) * (scale - 1);
+				this.image.width = this.start.image.width * scale;
+				this.image.height = this.start.image.height * scale;
+				if (this.image.left > this.frame.left) {
+					this.image.left = this.frame.left;
+				}
+				if (this.image.top > this.frame.top) {
+					this.image.top = this.frame.top;
+				}
+				if (this.image.left + this.image.width < this.frame.left + this.frame.width) {
+					this.image.left = this.frame.left + this.frame.width - this.image.width;
+				}
+				if (this.image.top + this.image.height < this.frame.top + this.frame.height) {
+					this.image.top = this.frame.top + this.frame.height - this.image.height;
+				}
+
+			},
+			scaleFrame(ta, tb, type) {
+				// 计算角度
+				var ax = tb.clientX - ta.clientX;
+				var ay = tb.clientY - ta.clientY;
+				var x1 = this.start.frame.left;
+				var y1 = this.start.frame.top;
+				var x2 = this.start.frame.left + this.start.frame.width;
+				var y2 = this.start.frame.top + this.start.frame.height;
+				
+				if (type == "left") {
+					x1 += ax;
+					this.frame.width = x2 - x1;
+					if(this.frame.width <= 50){
+						x1 = x2 - 50
+					}
+				} else if (type == "right") {
+					x2 += ax;
+					this.frame.width = x2 - x1;
+					if(this.frame.width <= 50){
+						x2 = x1 + 50
+					}
+				} else if (type == "top") {
+					y1 += ay;
+					this.frame.height = y2 - y1;
+					if(this.frame.height <= 50){
+						y1 = y2 - 50
+					}
+				} else if (type == "bottom") {
+					y2 += ay;
+					this.frame.height = y2 - y1;
+					if(this.frame.height <= 50){
+						y2 = y1 + 50
+					}
+				} else if (type == "left-top") {
+					x1 += ax;
+					y1 += ay;
+					this.frame.width = x2 - x1;
+					if(this.frame.width <= 50){
+						x1 = x2 - 50
+					}
+					this.frame.height = y2 - y1;
+					if(this.frame.height <= 50){
+						y1 = y2 - 50
+					}
+				} else if (type == "left-bottom") {
+					x1 += ax;
+					y2 += ay;
+					this.frame.width = x2 - x1;
+					if(this.frame.width <= 50){
+						x1 = x2 - 50
+					}
+					this.frame.height = y2 - y1;
+					if(this.frame.height <= 50){
+						y2 = y1 + 50
+					}
+				} else if (type == "right-top") {
+					x2 += ax;
+					y1 += ay;
+					this.frame.width = x2 - x1;
+					if(this.frame.width <= 50){
+						x2 = x1 + 50
+					}
+					this.frame.height = y2 - y1;
+					if(this.frame.height <= 50){
+						y1 = y2 - 50
+					}
+				} else if (type == "right-bottom") {
+					x2 += ax;
+					y2 += ay;
+					this.frame.width = x2 - x1;
+					if(this.frame.width <= 50){
+						x2 = x1 + 50
+					}
+					this.frame.height = y2 - y1;
+					if(this.frame.height <= 50){
+						y2 = y1 + 50
+					}
+				}
+				if (x1 < this.image.left) {
+					x1 = this.image.left;
+				}
+				if (y1 < this.image.top) {
+					y1 = this.image.top;
+				}
+				if (x2 > this.image.left + this.image.width) {
+					x2 = this.image.left + this.image.width;
+				}
+				if (y2 > this.image.top + this.image.height) {
+					y2 = this.image.top + this.image.height;
+				}
+				
+				this.frame.left = x1;
+				this.frame.top = y1;
+				this.frame.width = x2 - x1;
+				this.frame.height = y2 - y1;
+				
+				
+				
+			},
+			onok() {
+				
+				var scale = this.image.width / this.real.width;
+				var x = (this.frame.left - this.image.left) / scale;
+				var y = (this.frame.top - this.image.top) / scale;
+				var width = this.frame.width / scale;
+				var height = this.frame.height / scale;
+				var tw = width;
+				var th = height;
+				
+				// if (this.fixed) {
+				// 	tw = this.width / 2;
+				// 	th = this.height / 2;
+				// } else {
+				// 	if (tw > this.maxWidth / 2) {
+				// 		var sc = this.maxWidth / 2 / tw;
+				// 		tw = tw * sc;
+				// 		th = th * sc;
+				// 	}
+				// 	if (th > this.maxHeight / 2) {
+				// 		var sc = this.maxHeight / 2 / th;
+				// 		th = th * sc;
+				// 		tw = tw * sc;
+				// 	}
+				// }
+				this.target.width = tw;
+				this.target.height = th;
+
+				// 复制数据
+				// 裁剪的宽和高
+				this.properties.width = this.frame.width
+				this.properties.height = this.frame.height
+				// 图片放大比率
+				this.properties.initialScale = this.properties.initialScale * scale
+				this.properties.initialscaling = this.properties.initialScale
+				// 裁剪区和原图顶点
+				this.properties.frame_left = 0
+				this.properties.frame_top = 0
+				this.properties.image_left = -(this.frame.left - this.image.left)
+				this.properties.image_top = -(this.frame.top - this.image.top)
+				// 初始x,y放大比率
+				this.properties.initialScalex = 1
+				this.properties.initialScaley = 1
+				this.$emit('ok', this.properties);
+
+
+			},
+			// 返回
+			oncancle() {
+				this.$emit("cancel");
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.ksp-image-cutter {
+		position: absolute;
+		width: 100%;
+		height: 100%;
+		top: 0;
+		bottom: 0;
+		z-index: 1000;
+	}
+	
+	.body {
+		position: absolute;
+		left: 0upx;
+		right: 0upx;
+		top: 0upx;
+		bottom: 0upx;
+	}
+
+	.mask {
+		position: absolute;
+		left: 0upx;
+		right: 0upx;
+		top: 0upx;
+		bottom: 0upx;
+		background: black;
+		opacity: 0.4;
+	}
+
+	.plank {
+		position: absolute;
+		left: 0upx;
+		right: 0upx;
+		top: 0upx;
+		bottom: 0upx;
+	}
+
+	.image {
+		position: absolute;
+	}
+
+	.frame {
+		position: absolute;
+	}
+
+	.canvas {
+		position: absolute;
+		display: block;
+		left: 0px;
+		top: 0px;
+	}
+
+	.rect {
+		position: absolute;
+		left: -2px;
+		top: -2px;
+		width: 100%;
+		height: 100%;
+		border: 2px solid white;
+	}
+
+	.line-one {
+		position: absolute;
+		width: 100%;
+		height: 1px;
+		background: white;
+		left: 0;
+		top: 33.3%;
+	}
+
+	.line-two {
+		position: absolute;
+		width: 100%;
+		height: 1px;
+		background: white;
+		left: 0;
+		top: 66.7%;
+	}
+
+	.line-three {
+		position: absolute;
+		width: 1px;
+		height: 100%;
+		background: white;
+		top: 0;
+		left: 33.3%;
+	}
+
+	.line-four {
+		position: absolute;
+		width: 1px;
+		height: 100%;
+		background: white;
+		top: 0;
+		left: 66.7%;
+	}
+
+	.frame-left {
+		position: absolute;
+		left: -30upx;
+		width: 40upx;
+		height: 100%;
+		top: 0;
+		background: transparent;
+		.left_edge {
+			position: absolute;
+			z-index: 99;
+			left: 24upx;
+			width: 6upx;
+			height: 40upx;
+			background: #5CE6B5;
+			top: calc(50% - 20upx);
+		}
+	}
+	
+	.frame-right {
+		position: absolute;
+		z-index: 99;
+		right: -30upx;
+		width: 40upx;
+		height: 100%;
+		background: transparent;
+		top: 0;
+		.rightedge {
+			position: absolute;
+			z-index: 99;
+			right: 24upx;
+			width: 6upx;
+			height: 40upx;
+			background: #5CE6B5;
+			top: calc(50% - 20upx);
+		}
+	}
+
+	.frame-top {
+		position: absolute;
+		z-index: 99;
+		top: -30upx;
+		width: 100%;
+		height: 40upx;
+		background: transparent;
+		left: 0;
+		right: 0;
+		margin: auto;
+		.topedge {
+			position: absolute;
+			z-index: 99;
+			top: 24upx;
+			width: 40upx;
+			height: 6upx;
+			background: #5CE6B5;
+			left: 0;
+			right: 0;
+			margin: auto;
+		}
+	}
+
+	.frame-bottom {
+		position: absolute;
+		z-index: 99;
+		bottom: -30upx;
+		width: 100%;
+		height: 40upx;
+		background: transparent;
+		left: 0;
+		right: 0;
+		margin: auto;
+		.bottomedge {
+			position: absolute;
+			z-index: 99;
+			bottom: 24upx;
+			width: 40upx;
+			height: 6upx;
+			background: #5CE6B5;
+			left: 0;
+			right: 0;
+			margin: auto;
+		}
+	}
+	
+	.left_edge::after,
+	.rightedge::after,
+	.topedge::after,
+	.bottomedge::after {
+		content: '';
+		position: absolute;
+		left: 0;
+		right: 0;
+		top: 0;
+		bottom: 0;
+		transform: scale(2);
+	}
+	
+	.frame-left-top-wrap {
+		position: absolute;
+		z-index: 100;
+		width: 60upx;
+		height: 60upx;
+		left: -30upx;
+		top: -30upx;
+		.frame-left-top{
+			position: absolute;
+			z-index: 100;
+			width: 30upx;
+			height: 30upx;
+			left: 24upx;
+			top: 24upx;
+			border-left: 6upx solid #5CE6B5;
+			border-top: 6upx solid #5CE6B5;
+		}
+	}
+
+	.frame-left-bottom-wrap {
+		position: absolute;
+		z-index: 100;
+		width: 60upx;
+		height: 60upx;
+		left: -30upx;
+		bottom: -30upx;
+		.frame-left-bottom {
+			position: absolute;
+			z-index: 100;
+			width: 30upx;
+			height: 30upx;
+			left: 24upx;
+			bottom: 24upx;
+			border-left: 6upx solid #5CE6B5;
+			border-bottom: 6upx solid #5CE6B5;
+		}
+	}
+
+	.frame-right-top-wrap {
+		position: absolute;
+		z-index: 100;
+		width: 60upx;
+		height: 60upx;
+		right: -30upx;
+		top: -30upx;
+		.frame-right-top {
+			position: absolute;
+			z-index: 100;
+			width: 30upx;
+			height: 30upx;
+			right: 24upx;
+			top: 24upx;
+			border-right: 6upx solid #5CE6B5;
+			border-top: 6upx solid #5CE6B5;
+		}
+	}
+
+	.frame-right-bottom-wrap {
+		position: absolute;
+		z-index: 100;
+		width: 60upx;
+		height: 60upx;
+		right: -30upx;
+		bottom: -30upx;
+		.frame-right-bottom {
+			position: absolute;
+			z-index: 100;
+			width: 30upx;
+			height: 30upx;
+			right: 24upx;
+			bottom: 24upx;
+			border-right: 6upx solid #5CE6B5;
+			border-bottom: 6upx solid #5CE6B5;
+		}
+	}
+	.frame-left-top::after,.frame-right-top::after,
+	.frame-left-bottom::after,.frame-right-bottom::after{
+	  content: '';
+	  position: absolute;
+	  left: 0;
+	  right: 0;
+	  top: 0;
+	  bottom: 0;
+	  transform: scale(1.5);
+	}
+</style>
diff --git a/components/m-icon/m-icon.css b/components/m-icon/m-icon.css
new file mode 100644
index 0000000..a1992ff
--- /dev/null
+++ b/components/m-icon/m-icon.css
@@ -0,0 +1,377 @@
+@font-face {
+	font-family: uniicons;
+	font-weight: normal;
+	font-style: normal;
+	src: url('https://img-cdn-qiniu.dcloud.net.cn/fonts/uni.ttf?t=1536565627510') format('truetype');
+}
+
+.m-icon {
+	font-family: uniicons;
+	font-size: 24px;
+	font-weight: normal;
+	font-style: normal;
+	line-height: 1;
+	display: inline-block;
+	text-decoration: none;
+	-webkit-font-smoothing: antialiased;
+}
+
+.m-icon.uni-active {
+	color: #007aff;
+}
+
+.m-icon-contact:before {
+	content: '\e100';
+}
+
+.m-icon-person:before {
+	content: '\e101';
+}
+
+.m-icon-personadd:before {
+	content: '\e102';
+}
+
+.m-icon-contact-filled:before {
+	content: '\e130';
+}
+
+.m-icon-person-filled:before {
+	content: '\e131';
+}
+
+.m-icon-personadd-filled:before {
+	content: '\e132';
+}
+
+.m-icon-phone:before {
+	content: '\e200';
+}
+
+.m-icon-email:before {
+	content: '\e201';
+}
+
+.m-icon-chatbubble:before {
+	content: '\e202';
+}
+
+.m-icon-chatboxes:before {
+	content: '\e203';
+}
+
+.m-icon-phone-filled:before {
+	content: '\e230';
+}
+
+.m-icon-email-filled:before {
+	content: '\e231';
+}
+
+.m-icon-chatbubble-filled:before {
+	content: '\e232';
+}
+
+.m-icon-chatboxes-filled:before {
+	content: '\e233';
+}
+
+.m-icon-weibo:before {
+	content: '\e260';
+}
+
+.m-icon-weixin:before {
+	content: '\e261';
+}
+
+.m-icon-pengyouquan:before {
+	content: '\e262';
+}
+
+.m-icon-chat:before {
+	content: '\e263';
+}
+
+.m-icon-qq:before {
+	content: '\e264';
+}
+
+.m-icon-videocam:before {
+	content: '\e300';
+}
+
+.m-icon-camera:before {
+	content: '\e301';
+}
+
+.m-icon-mic:before {
+	content: '\e302';
+}
+
+.m-icon-location:before {
+	content: '\e303';
+}
+
+.m-icon-mic-filled:before,
+.m-icon-speech:before {
+	content: '\e332';
+}
+
+.m-icon-location-filled:before {
+	content: '\e333';
+}
+
+.m-icon-micoff:before {
+	content: '\e360';
+}
+
+.m-icon-image:before {
+	content: '\e363';
+}
+
+.m-icon-map:before {
+	content: '\e364';
+}
+
+.m-icon-compose:before {
+	content: '\e400';
+}
+
+.m-icon-trash:before {
+	content: '\e401';
+}
+
+.m-icon-upload:before {
+	content: '\e402';
+}
+
+.m-icon-download:before {
+	content: '\e403';
+}
+
+.m-icon-close:before {
+	content: '\e404';
+}
+
+.m-icon-redo:before {
+	content: '\e405';
+}
+
+.m-icon-undo:before {
+	content: '\e406';
+}
+
+.m-icon-refresh:before {
+	content: '\e407';
+}
+
+.m-icon-star:before {
+	content: '\e408';
+}
+
+.m-icon-plus:before {
+	content: '\e409';
+}
+
+.m-icon-minus:before {
+	content: '\e410';
+}
+
+.m-icon-circle:before,
+.m-icon-checkbox:before {
+	content: '\e411';
+}
+
+.m-icon-close-filled:before,
+.m-icon-clear:before {
+	content: '\e434';
+}
+
+.m-icon-refresh-filled:before {
+	content: '\e437';
+}
+
+.m-icon-star-filled:before {
+	content: '\e438';
+}
+
+.m-icon-plus-filled:before {
+	content: '\e439';
+}
+
+.m-icon-minus-filled:before {
+	content: '\e440';
+}
+
+.m-icon-circle-filled:before {
+	content: '\e441';
+}
+
+.m-icon-checkbox-filled:before {
+	content: '\e442';
+}
+
+.m-icon-closeempty:before {
+	content: '\e460';
+}
+
+.m-icon-refreshempty:before {
+	content: '\e461';
+}
+
+.m-icon-reload:before {
+	content: '\e462';
+}
+
+.m-icon-starhalf:before {
+	content: '\e463';
+}
+
+.m-icon-spinner:before {
+	content: '\e464';
+}
+
+.m-icon-spinner-cycle:before {
+	content: '\e465';
+}
+
+.m-icon-search:before {
+	content: '\e466';
+}
+
+.m-icon-plusempty:before {
+	content: '\e468';
+}
+
+.m-icon-forward:before {
+	content: '\e470';
+}
+
+.m-icon-back:before,
+.m-icon-left-nav:before {
+	content: '\e471';
+}
+
+.m-icon-checkmarkempty:before {
+	content: '\e472';
+}
+
+.m-icon-home:before {
+	content: '\e500';
+}
+
+.m-icon-navigate:before {
+	content: '\e501';
+}
+
+.m-icon-gear:before {
+	content: '\e502';
+}
+
+.m-icon-paperplane:before {
+	content: '\e503';
+}
+
+.m-icon-info:before {
+	content: '\e504';
+}
+
+.m-icon-help:before {
+	content: '\e505';
+}
+
+.m-icon-locked:before {
+	content: '\e506';
+}
+
+.m-icon-more:before {
+	content: '\e507';
+}
+
+.m-icon-flag:before {
+	content: '\e508';
+}
+
+.m-icon-home-filled:before {
+	content: '\e530';
+}
+
+.m-icon-gear-filled:before {
+	content: '\e532';
+}
+
+.m-icon-info-filled:before {
+	content: '\e534';
+}
+
+.m-icon-help-filled:before {
+	content: '\e535';
+}
+
+.m-icon-more-filled:before {
+	content: '\e537';
+}
+
+.m-icon-settings:before {
+	content: '\e560';
+}
+
+.m-icon-list:before {
+	content: '\e562';
+}
+
+.m-icon-bars:before {
+	content: '\e563';
+}
+
+.m-icon-loop:before {
+	content: '\e565';
+}
+
+.m-icon-paperclip:before {
+	content: '\e567';
+}
+
+.m-icon-eye:before {
+	content: '\e568';
+}
+
+.m-icon-arrowup:before {
+	content: '\e580';
+}
+
+.m-icon-arrowdown:before {
+	content: '\e581';
+}
+
+.m-icon-arrowleft:before {
+	content: '\e582';
+}
+
+.m-icon-arrowright:before {
+	content: '\e583';
+}
+
+.m-icon-arrowthinup:before {
+	content: '\e584';
+}
+
+.m-icon-arrowthindown:before {
+	content: '\e585';
+}
+
+.m-icon-arrowthinleft:before {
+	content: '\e586';
+}
+
+.m-icon-arrowthinright:before {
+	content: '\e587';
+}
+
+.m-icon-pulldown:before {
+	content: '\e588';
+}
+
+.m-icon-scan:before {
+	content: "\e612";
+}
diff --git a/components/m-icon/m-icon.vue b/components/m-icon/m-icon.vue
new file mode 100644
index 0000000..57cb1f7
--- /dev/null
+++ b/components/m-icon/m-icon.vue
@@ -0,0 +1,23 @@
+<template>
+	<view class="m-icon" :class="['m-icon-'+type]" @click="onClick()"></view>
+</template>
+
+<script>
+	export default {
+		props: {
+			/**
+			 * 图标类型
+			 */
+			type: String
+		},
+		methods: {
+			onClick() {
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+
+<style>
+	@import "./m-icon.css";
+</style>
diff --git a/components/marked/index.js b/components/marked/index.js
new file mode 100644
index 0000000..a12f905
--- /dev/null
+++ b/components/marked/index.js
@@ -0,0 +1 @@
+module.exports = require('./lib/marked');
diff --git a/components/marked/lib/marked.js b/components/marked/lib/marked.js
new file mode 100644
index 0000000..6a71e92
--- /dev/null
+++ b/components/marked/lib/marked.js
@@ -0,0 +1,1573 @@
+/**
+ * marked - a markdown parser
+ * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
+ * https://github.com/markedjs/marked
+ */
+
+;(function(root) {
+'use strict';
+
+/**
+ * Block-Level Grammar
+ */
+
+var block = {
+  newline: /^\n+/,
+  code: /^( {4}[^\n]+\n*)+/,
+  fences: noop,
+  hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,
+  heading: /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/,
+  nptable: noop,
+  blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
+  list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
+  html: '^ {0,3}(?:' // optional indentation
+    + '<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)' // (1)
+    + '|comment[^\\n]*(\\n+|$)' // (2)
+    + '|<\\?[\\s\\S]*?\\?>\\n*' // (3)
+    + '|<![A-Z][\\s\\S]*?>\\n*' // (4)
+    + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*' // (5)
+    + '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)' // (6)
+    + '|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) open tag
+    + '|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)' // (7) closing tag
+    + ')',
+  def: /^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,
+  table: noop,
+  lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
+  paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/,
+  text: /^[^\n]+/
+};
+
+block._label = /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/;
+block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
+block.def = edit(block.def)
+  .replace('label', block._label)
+  .replace('title', block._title)
+  .getRegex();
+
+block.bullet = /(?:[*+-]|\d+\.)/;
+block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
+block.item = edit(block.item, 'gm')
+  .replace(/bull/g, block.bullet)
+  .getRegex();
+
+block.list = edit(block.list)
+  .replace(/bull/g, block.bullet)
+  .replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))')
+  .replace('def', '\\n+(?=' + block.def.source + ')')
+  .getRegex();
+
+block._tag = 'address|article|aside|base|basefont|blockquote|body|caption'
+  + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'
+  + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'
+  + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'
+  + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'
+  + '|track|ul';
+block._comment = /<!--(?!-?>)[\s\S]*?-->/;
+block.html = edit(block.html, 'i')
+  .replace('comment', block._comment)
+  .replace('tag', block._tag)
+  .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/)
+  .getRegex();
+
+block.paragraph = edit(block.paragraph)
+  .replace('hr', block.hr)
+  .replace('heading', block.heading)
+  .replace('lheading', block.lheading)
+  .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+  .getRegex();
+
+block.blockquote = edit(block.blockquote)
+  .replace('paragraph', block.paragraph)
+  .getRegex();
+
+/**
+ * Normal Block Grammar
+ */
+
+block.normal = merge({}, block);
+
+/**
+ * GFM Block Grammar
+ */
+
+block.gfm = merge({}, block.normal, {
+  fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/,
+  paragraph: /^/,
+  heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/
+});
+
+block.gfm.paragraph = edit(block.paragraph)
+  .replace('(?!', '(?!'
+    + block.gfm.fences.source.replace('\\1', '\\2') + '|'
+    + block.list.source.replace('\\1', '\\3') + '|')
+  .getRegex();
+
+/**
+ * GFM + Tables Block Grammar
+ */
+
+block.tables = merge({}, block.gfm, {
+  nptable: /^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/,
+  table: /^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/
+});
+
+/**
+ * Pedantic grammar
+ */
+
+block.pedantic = merge({}, block.normal, {
+  html: edit(
+    '^ *(?:comment *(?:\\n|\\s*$)'
+    + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
+    + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))')
+    .replace('comment', block._comment)
+    .replace(/tag/g, '(?!(?:'
+      + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'
+      + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'
+      + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b')
+    .getRegex(),
+  def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/
+});
+
+/**
+ * Block Lexer
+ */
+
+function Lexer(options) {
+  this.tokens = [];
+  this.tokens.links = Object.create(null);
+  this.options = options || marked.defaults;
+  this.rules = block.normal;
+
+  if (this.options.pedantic) {
+    this.rules = block.pedantic;
+  } else if (this.options.gfm) {
+    if (this.options.tables) {
+      this.rules = block.tables;
+    } else {
+      this.rules = block.gfm;
+    }
+  }
+}
+
+/**
+ * Expose Block Rules
+ */
+
+Lexer.rules = block;
+
+/**
+ * Static Lex Method
+ */
+
+Lexer.lex = function(src, options) {
+  var lexer = new Lexer(options);
+  return lexer.lex(src);
+};
+
+/**
+ * Preprocessing
+ */
+
+Lexer.prototype.lex = function(src) {
+  src = src
+    .replace(/\r\n|\r/g, '\n')
+    .replace(/\t/g, '    ')
+    .replace(/\u00a0/g, ' ')
+    .replace(/\u2424/g, '\n');
+
+  return this.token(src, true);
+};
+
+/**
+ * Lexing
+ */
+
+Lexer.prototype.token = function(src, top) {
+  src = src.replace(/^ +$/gm, '');
+  var next,
+      loose,
+      cap,
+      bull,
+      b,
+      item,
+      listStart,
+      listItems,
+      t,
+      space,
+      i,
+      tag,
+      l,
+      isordered,
+      istask,
+      ischecked;
+
+  while (src) {
+    // newline
+    if (cap = this.rules.newline.exec(src)) {
+      src = src.substring(cap[0].length);
+      if (cap[0].length > 1) {
+        this.tokens.push({
+          type: 'space'
+        });
+      }
+    }
+
+    // code
+    if (cap = this.rules.code.exec(src)) {
+      src = src.substring(cap[0].length);
+      cap = cap[0].replace(/^ {4}/gm, '');
+      this.tokens.push({
+        type: 'code',
+        text: !this.options.pedantic
+          ? rtrim(cap, '\n')
+          : cap
+      });
+      continue;
+    }
+
+    // fences (gfm)
+    if (cap = this.rules.fences.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'code',
+        lang: cap[2],
+        text: cap[3] || ''
+      });
+      continue;
+    }
+
+    // heading
+    if (cap = this.rules.heading.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'heading',
+        depth: cap[1].length,
+        text: cap[2]
+      });
+      continue;
+    }
+
+    // table no leading pipe (gfm)
+    if (top && (cap = this.rules.nptable.exec(src))) {
+      item = {
+        type: 'table',
+        header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
+        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+        cells: cap[3] ? cap[3].replace(/\n$/, '').split('\n') : []
+      };
+
+      if (item.header.length === item.align.length) {
+        src = src.substring(cap[0].length);
+
+        for (i = 0; i < item.align.length; i++) {
+          if (/^ *-+: *$/.test(item.align[i])) {
+            item.align[i] = 'right';
+          } else if (/^ *:-+: *$/.test(item.align[i])) {
+            item.align[i] = 'center';
+          } else if (/^ *:-+ *$/.test(item.align[i])) {
+            item.align[i] = 'left';
+          } else {
+            item.align[i] = null;
+          }
+        }
+
+        for (i = 0; i < item.cells.length; i++) {
+          item.cells[i] = splitCells(item.cells[i], item.header.length);
+        }
+
+        this.tokens.push(item);
+
+        continue;
+      }
+    }
+
+    // hr
+    if (cap = this.rules.hr.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'hr'
+      });
+      continue;
+    }
+
+    // blockquote
+    if (cap = this.rules.blockquote.exec(src)) {
+      src = src.substring(cap[0].length);
+
+      this.tokens.push({
+        type: 'blockquote_start'
+      });
+
+      cap = cap[0].replace(/^ *> ?/gm, '');
+
+      // Pass `top` to keep the current
+      // "toplevel" state. This is exactly
+      // how markdown.pl works.
+      this.token(cap, top);
+
+      this.tokens.push({
+        type: 'blockquote_end'
+      });
+
+      continue;
+    }
+
+    // list
+    if (cap = this.rules.list.exec(src)) {
+      src = src.substring(cap[0].length);
+      bull = cap[2];
+      isordered = bull.length > 1;
+
+      listStart = {
+        type: 'list_start',
+        ordered: isordered,
+        start: isordered ? +bull : '',
+        loose: false
+      };
+
+      this.tokens.push(listStart);
+
+      // Get each top-level item.
+      cap = cap[0].match(this.rules.item);
+
+      listItems = [];
+      next = false;
+      l = cap.length;
+      i = 0;
+
+      for (; i < l; i++) {
+        item = cap[i];
+
+        // Remove the list item's bullet
+        // so it is seen as the next token.
+        space = item.length;
+        item = item.replace(/^ *([*+-]|\d+\.) +/, '');
+
+        // Outdent whatever the
+        // list item contains. Hacky.
+        if (~item.indexOf('\n ')) {
+          space -= item.length;
+          item = !this.options.pedantic
+            ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
+            : item.replace(/^ {1,4}/gm, '');
+        }
+
+        // Determine whether the next list item belongs here.
+        // Backpedal if it does not belong in this list.
+        if (this.options.smartLists && i !== l - 1) {
+          b = block.bullet.exec(cap[i + 1])[0];
+          if (bull !== b && !(bull.length > 1 && b.length > 1)) {
+            src = cap.slice(i + 1).join('\n') + src;
+            i = l - 1;
+          }
+        }
+
+        // Determine whether item is loose or not.
+        // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
+        // for discount behavior.
+        loose = next || /\n\n(?!\s*$)/.test(item);
+        if (i !== l - 1) {
+          next = item.charAt(item.length - 1) === '\n';
+          if (!loose) loose = next;
+        }
+
+        if (loose) {
+          listStart.loose = true;
+        }
+
+        // Check for task list items
+        istask = /^\[[ xX]\] /.test(item);
+        ischecked = undefined;
+        if (istask) {
+          ischecked = item[1] !== ' ';
+          item = item.replace(/^\[[ xX]\] +/, '');
+        }
+
+        t = {
+          type: 'list_item_start',
+          task: istask,
+          checked: ischecked,
+          loose: loose
+        };
+
+        listItems.push(t);
+        this.tokens.push(t);
+
+        // Recurse.
+        this.token(item, false);
+
+        this.tokens.push({
+          type: 'list_item_end'
+        });
+      }
+
+      if (listStart.loose) {
+        l = listItems.length;
+        i = 0;
+        for (; i < l; i++) {
+          listItems[i].loose = true;
+        }
+      }
+
+      this.tokens.push({
+        type: 'list_end'
+      });
+
+      continue;
+    }
+
+    // html
+    if (cap = this.rules.html.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: this.options.sanitize
+          ? 'paragraph'
+          : 'html',
+        pre: !this.options.sanitizer
+          && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
+        text: cap[0]
+      });
+      continue;
+    }
+
+    // def
+    if (top && (cap = this.rules.def.exec(src))) {
+      src = src.substring(cap[0].length);
+      if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);
+      tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
+      if (!this.tokens.links[tag]) {
+        this.tokens.links[tag] = {
+          href: cap[2],
+          title: cap[3]
+        };
+      }
+      continue;
+    }
+
+    // table (gfm)
+    if (top && (cap = this.rules.table.exec(src))) {
+      item = {
+        type: 'table',
+        header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
+        align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+        cells: cap[3] ? cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') : []
+      };
+
+      if (item.header.length === item.align.length) {
+        src = src.substring(cap[0].length);
+
+        for (i = 0; i < item.align.length; i++) {
+          if (/^ *-+: *$/.test(item.align[i])) {
+            item.align[i] = 'right';
+          } else if (/^ *:-+: *$/.test(item.align[i])) {
+            item.align[i] = 'center';
+          } else if (/^ *:-+ *$/.test(item.align[i])) {
+            item.align[i] = 'left';
+          } else {
+            item.align[i] = null;
+          }
+        }
+
+        for (i = 0; i < item.cells.length; i++) {
+          item.cells[i] = splitCells(
+            item.cells[i].replace(/^ *\| *| *\| *$/g, ''),
+            item.header.length);
+        }
+
+        this.tokens.push(item);
+
+        continue;
+      }
+    }
+
+    // lheading
+    if (cap = this.rules.lheading.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'heading',
+        depth: cap[2] === '=' ? 1 : 2,
+        text: cap[1]
+      });
+      continue;
+    }
+
+    // top-level paragraph
+    if (top && (cap = this.rules.paragraph.exec(src))) {
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'paragraph',
+        text: cap[1].charAt(cap[1].length - 1) === '\n'
+          ? cap[1].slice(0, -1)
+          : cap[1]
+      });
+      continue;
+    }
+
+    // text
+    if (cap = this.rules.text.exec(src)) {
+      // Top-level should never reach here.
+      src = src.substring(cap[0].length);
+      this.tokens.push({
+        type: 'text',
+        text: cap[0]
+      });
+      continue;
+    }
+
+    if (src) {
+      throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
+    }
+  }
+
+  return this.tokens;
+};
+
+/**
+ * Inline-Level Grammar
+ */
+
+var inline = {
+  escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
+  autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
+  url: noop,
+  tag: '^comment'
+    + '|^</[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
+    + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
+    + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. <?php ?>
+    + '|^<![a-zA-Z]+\\s[\\s\\S]*?>' // declaration, e.g. <!DOCTYPE html>
+    + '|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>', // CDATA section
+  link: /^!?\[(label)\]\(href(?:\s+(title))?\s*\)/,
+  reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,
+  nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,
+  strong: /^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)|^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)/,
+  em: /^_([^\s_])_(?!_)|^\*([^\s*"<\[])\*(?!\*)|^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s"<\[][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*"<\[][\s\S]*?[^\s])\*(?!\*)/,
+  code: /^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/,
+  br: /^( {2,}|\\)\n(?!\s*$)/,
+  del: noop,
+  text: /^[\s\S]+?(?=[\\<!\[`*]|\b_| {2,}\n|$)/
+};
+
+inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
+
+inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
+inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
+inline.autolink = edit(inline.autolink)
+  .replace('scheme', inline._scheme)
+  .replace('email', inline._email)
+  .getRegex();
+
+inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
+
+inline.tag = edit(inline.tag)
+  .replace('comment', block._comment)
+  .replace('attribute', inline._attribute)
+  .getRegex();
+
+inline._label = /(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/;
+inline._href = /\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f\\]*\)|[^\s\x00-\x1f()\\])*?)/;
+inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
+
+inline.link = edit(inline.link)
+  .replace('label', inline._label)
+  .replace('href', inline._href)
+  .replace('title', inline._title)
+  .getRegex();
+
+inline.reflink = edit(inline.reflink)
+  .replace('label', inline._label)
+  .getRegex();
+
+/**
+ * Normal Inline Grammar
+ */
+
+inline.normal = merge({}, inline);
+
+/**
+ * Pedantic Inline Grammar
+ */
+
+inline.pedantic = merge({}, inline.normal, {
+  strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
+  em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/,
+  link: edit(/^!?\[(label)\]\((.*?)\)/)
+    .replace('label', inline._label)
+    .getRegex(),
+  reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/)
+    .replace('label', inline._label)
+    .getRegex()
+});
+
+/**
+ * GFM Inline Grammar
+ */
+
+inline.gfm = merge({}, inline.normal, {
+  escape: edit(inline.escape).replace('])', '~|])').getRegex(),
+  url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/)
+    .replace('email', inline._email)
+    .getRegex(),
+  _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
+  del: /^~+(?=\S)([\s\S]*?\S)~+/,
+  text: edit(inline.text)
+    .replace(']|', '~]|')
+    .replace('|', '|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&\'*+/=?^_`{\\|}~-]+@|')
+    .getRegex()
+});
+
+/**
+ * GFM + Line Breaks Inline Grammar
+ */
+
+inline.breaks = merge({}, inline.gfm, {
+  br: edit(inline.br).replace('{2,}', '*').getRegex(),
+  text: edit(inline.gfm.text).replace('{2,}', '*').getRegex()
+});
+
+/**
+ * Inline Lexer & Compiler
+ */
+
+function InlineLexer(links, options) {
+  this.options = options || marked.defaults;
+  this.links = links;
+  this.rules = inline.normal;
+  this.renderer = this.options.renderer || new Renderer();
+  this.renderer.options = this.options;
+
+  if (!this.links) {
+    throw new Error('Tokens array requires a `links` property.');
+  }
+
+  if (this.options.pedantic) {
+    this.rules = inline.pedantic;
+  } else if (this.options.gfm) {
+    if (this.options.breaks) {
+      this.rules = inline.breaks;
+    } else {
+      this.rules = inline.gfm;
+    }
+  }
+}
+
+/**
+ * Expose Inline Rules
+ */
+
+InlineLexer.rules = inline;
+
+/**
+ * Static Lexing/Compiling Method
+ */
+
+InlineLexer.output = function(src, links, options) {
+  var inline = new InlineLexer(links, options);
+  return inline.output(src);
+};
+
+/**
+ * Lexing/Compiling
+ */
+
+InlineLexer.prototype.output = function(src) {
+  var out = '',
+      link,
+      text,
+      href,
+      title,
+      cap,
+      prevCapZero;
+
+  while (src) {
+    // escape
+    if (cap = this.rules.escape.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += cap[1];
+      continue;
+    }
+
+    // autolink
+    if (cap = this.rules.autolink.exec(src)) {
+      src = src.substring(cap[0].length);
+      if (cap[2] === '@') {
+        text = escape(this.mangle(cap[1]));
+        href = 'mailto:' + text;
+      } else {
+        text = escape(cap[1]);
+        href = text;
+      }
+      out += this.renderer.link(href, null, text);
+      continue;
+    }
+
+    // url (gfm)
+    if (!this.inLink && (cap = this.rules.url.exec(src))) {
+      do {
+        prevCapZero = cap[0];
+        cap[0] = this.rules._backpedal.exec(cap[0])[0];
+      } while (prevCapZero !== cap[0]);
+      src = src.substring(cap[0].length);
+      if (cap[2] === '@') {
+        text = escape(cap[0]);
+        href = 'mailto:' + text;
+      } else {
+        text = escape(cap[0]);
+        if (cap[1] === 'www.') {
+          href = 'http://' + text;
+        } else {
+          href = text;
+        }
+      }
+      out += this.renderer.link(href, null, text);
+      continue;
+    }
+
+    // tag
+    if (cap = this.rules.tag.exec(src)) {
+      if (!this.inLink && /^<a /i.test(cap[0])) {
+        this.inLink = true;
+      } else if (this.inLink && /^<\/a>/i.test(cap[0])) {
+        this.inLink = false;
+      }
+      src = src.substring(cap[0].length);
+      out += this.options.sanitize
+        ? this.options.sanitizer
+          ? this.options.sanitizer(cap[0])
+          : escape(cap[0])
+        : cap[0]
+      continue;
+    }
+
+    // link
+    if (cap = this.rules.link.exec(src)) {
+      src = src.substring(cap[0].length);
+      this.inLink = true;
+      href = cap[2];
+      if (this.options.pedantic) {
+        link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
+
+        if (link) {
+          href = link[1];
+          title = link[3];
+        } else {
+          title = '';
+        }
+      } else {
+        title = cap[3] ? cap[3].slice(1, -1) : '';
+      }
+      href = href.trim().replace(/^<([\s\S]*)>$/, '$1');
+      out += this.outputLink(cap, {
+        href: InlineLexer.escapes(href),
+        title: InlineLexer.escapes(title)
+      });
+      this.inLink = false;
+      continue;
+    }
+
+    // reflink, nolink
+    if ((cap = this.rules.reflink.exec(src))
+        || (cap = this.rules.nolink.exec(src))) {
+      src = src.substring(cap[0].length);
+      link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
+      link = this.links[link.toLowerCase()];
+      if (!link || !link.href) {
+        out += cap[0].charAt(0);
+        src = cap[0].substring(1) + src;
+        continue;
+      }
+      this.inLink = true;
+      out += this.outputLink(cap, link);
+      this.inLink = false;
+      continue;
+    }
+
+    // strong
+    if (cap = this.rules.strong.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.strong(this.output(cap[4] || cap[3] || cap[2] || cap[1]));
+      continue;
+    }
+
+    // em
+    if (cap = this.rules.em.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.em(this.output(cap[6] || cap[5] || cap[4] || cap[3] || cap[2] || cap[1]));
+      continue;
+    }
+
+    // code
+    if (cap = this.rules.code.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.codespan(escape(cap[2].trim(), true));
+      continue;
+    }
+
+    // br
+    if (cap = this.rules.br.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.br();
+      continue;
+    }
+
+    // del (gfm)
+    if (cap = this.rules.del.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.del(this.output(cap[1]));
+      continue;
+    }
+
+    // text
+    if (cap = this.rules.text.exec(src)) {
+      src = src.substring(cap[0].length);
+      out += this.renderer.text(escape(this.smartypants(cap[0])));
+      continue;
+    }
+
+    if (src) {
+      throw new Error('Infinite loop on byte: ' + src.charCodeAt(0));
+    }
+  }
+
+  return out;
+};
+
+InlineLexer.escapes = function(text) {
+  return text ? text.replace(InlineLexer.rules._escapes, '$1') : text;
+}
+
+/**
+ * Compile Link
+ */
+
+InlineLexer.prototype.outputLink = function(cap, link) {
+  var href = link.href,
+      title = link.title ? escape(link.title) : null;
+
+  return cap[0].charAt(0) !== '!'
+    ? this.renderer.link(href, title, this.output(cap[1]))
+    : this.renderer.image(href, title, escape(cap[1]));
+};
+
+/**
+ * Smartypants Transformations
+ */
+
+InlineLexer.prototype.smartypants = function(text) {
+  if (!this.options.smartypants) return text;
+  return text
+    // em-dashes
+    .replace(/---/g, '\u2014')
+    // en-dashes
+    .replace(/--/g, '\u2013')
+    // opening singles
+    .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
+    // closing singles & apostrophes
+    .replace(/'/g, '\u2019')
+    // opening doubles
+    .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
+    // closing doubles
+    .replace(/"/g, '\u201d')
+    // ellipses
+    .replace(/\.{3}/g, '\u2026');
+};
+
+/**
+ * Mangle Links
+ */
+
+InlineLexer.prototype.mangle = function(text) {
+  if (!this.options.mangle) return text;
+  var out = '',
+      l = text.length,
+      i = 0,
+      ch;
+
+  for (; i < l; i++) {
+    ch = text.charCodeAt(i);
+    if (Math.random() > 0.5) {
+      ch = 'x' + ch.toString(16);
+    }
+    out += '&#' + ch + ';';
+  }
+
+  return out;
+};
+
+/**
+ * Renderer
+ */
+
+function Renderer(options) {
+  this.options = options || marked.defaults;
+}
+
+Renderer.prototype.code = function(code, lang, escaped) {
+  if (this.options.highlight) {
+    var out = this.options.highlight(code, lang);
+    if (out != null && out !== code) {
+      escaped = true;
+      code = out;
+    }
+  }
+
+  if (!lang) {
+    return '<pre><code>'
+      + (escaped ? code : escape(code, true))
+      + '</code></pre>';
+  }
+
+  return '<pre><code class="'
+    + this.options.langPrefix
+    + escape(lang, true)
+    + '">'
+    + (escaped ? code : escape(code, true))
+    + '</code></pre>\n';
+};
+
+Renderer.prototype.blockquote = function(quote) {
+  return '<blockquote>\n' + quote + '</blockquote>\n';
+};
+
+Renderer.prototype.html = function(html) {
+  return html;
+};
+
+Renderer.prototype.heading = function(text, level, raw) {
+  if (this.options.headerIds) {
+    return '<h'
+      + level
+      + ' id="'
+      + this.options.headerPrefix
+      + raw.toLowerCase().replace(/[^\w]+/g, '-')
+      + '">'
+      + text
+      + '</h'
+      + level
+      + '>\n';
+  }
+  // ignore IDs
+  return '<h' + level + '>' + text + '</h' + level + '>\n';
+};
+
+Renderer.prototype.hr = function() {
+  return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
+};
+
+Renderer.prototype.list = function(body, ordered, start) {
+  var type = ordered ? 'ol' : 'ul',
+      startatt = (ordered && start !== 1) ? (' start="' + start + '"') : '';
+  return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
+};
+
+Renderer.prototype.listitem = function(text) {
+  return '<li>' + text + '</li>\n';
+};
+
+Renderer.prototype.checkbox = function(checked) {
+  return '<input '
+    + (checked ? 'checked="" ' : '')
+    + 'disabled="" type="checkbox"'
+    + (this.options.xhtml ? ' /' : '')
+    + '> ';
+}
+
+Renderer.prototype.paragraph = function(text) {
+  return '<p>' + text + '</p>\n';
+};
+
+Renderer.prototype.table = function(header, body) {
+  if (body) body = '<tbody>' + body + '</tbody>';
+
+  return '<table>\n'
+    + '<thead>\n'
+    + header
+    + '</thead>\n'
+    + body
+    + '</table>\n';
+};
+
+Renderer.prototype.tablerow = function(content) {
+  return '<tr>\n' + content + '</tr>\n';
+};
+
+Renderer.prototype.tablecell = function(content, flags) {
+  var type = flags.header ? 'th' : 'td';
+  var tag = flags.align
+    ? '<' + type + ' align="' + flags.align + '">'
+    : '<' + type + '>';
+  return tag + content + '</' + type + '>\n';
+};
+
+// span level renderer
+Renderer.prototype.strong = function(text) {
+  return '<strong>' + text + '</strong>';
+};
+
+Renderer.prototype.em = function(text) {
+  return '<em>' + text + '</em>';
+};
+
+Renderer.prototype.codespan = function(text) {
+  return '<code>' + text + '</code>';
+};
+
+Renderer.prototype.br = function() {
+  return this.options.xhtml ? '<br/>' : '<br>';
+};
+
+Renderer.prototype.del = function(text) {
+  return '<del>' + text + '</del>';
+};
+
+Renderer.prototype.link = function(href, title, text) {
+  if (this.options.sanitize) {
+    try {
+      var prot = decodeURIComponent(unescape(href))
+        .replace(/[^\w:]/g, '')
+        .toLowerCase();
+    } catch (e) {
+      return text;
+    }
+    if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
+      return text;
+    }
+  }
+  if (this.options.baseUrl && !originIndependentUrl.test(href)) {
+    href = resolveUrl(this.options.baseUrl, href);
+  }
+  try {
+    href = encodeURI(href).replace(/%25/g, '%');
+  } catch (e) {
+    return text;
+  }
+  var out = '<a href="' + escape(href) + '"';
+  if (title) {
+    out += ' title="' + title + '"';
+  }
+  out += '>' + text + '</a>';
+  return out;
+};
+
+Renderer.prototype.image = function(href, title, text) {
+  if (this.options.baseUrl && !originIndependentUrl.test(href)) {
+    href = resolveUrl(this.options.baseUrl, href);
+  }
+  var out = '<img src="' + href + '" alt="' + text + '"';
+  if (title) {
+    out += ' title="' + title + '"';
+  }
+  out += this.options.xhtml ? '/>' : '>';
+  return out;
+};
+
+Renderer.prototype.text = function(text) {
+  return text;
+};
+
+/**
+ * TextRenderer
+ * returns only the textual part of the token
+ */
+
+function TextRenderer() {}
+
+// no need for block level renderers
+
+TextRenderer.prototype.strong =
+TextRenderer.prototype.em =
+TextRenderer.prototype.codespan =
+TextRenderer.prototype.del =
+TextRenderer.prototype.text = function (text) {
+  return text;
+}
+
+TextRenderer.prototype.link =
+TextRenderer.prototype.image = function(href, title, text) {
+  return '' + text;
+}
+
+TextRenderer.prototype.br = function() {
+  return '';
+}
+
+/**
+ * Parsing & Compiling
+ */
+
+function Parser(options) {
+  this.tokens = [];
+  this.token = null;
+  this.options = options || marked.defaults;
+  this.options.renderer = this.options.renderer || new Renderer();
+  this.renderer = this.options.renderer;
+  this.renderer.options = this.options;
+}
+
+/**
+ * Static Parse Method
+ */
+
+Parser.parse = function(src, options) {
+  var parser = new Parser(options);
+  return parser.parse(src);
+};
+
+/**
+ * Parse Loop
+ */
+
+Parser.prototype.parse = function(src) {
+  this.inline = new InlineLexer(src.links, this.options);
+  // use an InlineLexer with a TextRenderer to extract pure text
+  this.inlineText = new InlineLexer(
+    src.links,
+    merge({}, this.options, {renderer: new TextRenderer()})
+  );
+  this.tokens = src.reverse();
+
+  var out = '';
+  while (this.next()) {
+    out += this.tok();
+  }
+
+  return out;
+};
+
+/**
+ * Next Token
+ */
+
+Parser.prototype.next = function() {
+  return this.token = this.tokens.pop();
+};
+
+/**
+ * Preview Next Token
+ */
+
+Parser.prototype.peek = function() {
+  return this.tokens[this.tokens.length - 1] || 0;
+};
+
+/**
+ * Parse Text Tokens
+ */
+
+Parser.prototype.parseText = function() {
+  var body = this.token.text;
+
+  while (this.peek().type === 'text') {
+    body += '\n' + this.next().text;
+  }
+
+  return this.inline.output(body);
+};
+
+/**
+ * Parse Current Token
+ */
+
+Parser.prototype.tok = function() {
+  switch (this.token.type) {
+    case 'space': {
+      return '';
+    }
+    case 'hr': {
+      return this.renderer.hr();
+    }
+    case 'heading': {
+      return this.renderer.heading(
+        this.inline.output(this.token.text),
+        this.token.depth,
+        unescape(this.inlineText.output(this.token.text)));
+    }
+    case 'code': {
+      return this.renderer.code(this.token.text,
+        this.token.lang,
+        this.token.escaped);
+    }
+    case 'table': {
+      var header = '',
+          body = '',
+          i,
+          row,
+          cell,
+          j;
+
+      // header
+      cell = '';
+      for (i = 0; i < this.token.header.length; i++) {
+        cell += this.renderer.tablecell(
+          this.inline.output(this.token.header[i]),
+          { header: true, align: this.token.align[i] }
+        );
+      }
+      header += this.renderer.tablerow(cell);
+
+      for (i = 0; i < this.token.cells.length; i++) {
+        row = this.token.cells[i];
+
+        cell = '';
+        for (j = 0; j < row.length; j++) {
+          cell += this.renderer.tablecell(
+            this.inline.output(row[j]),
+            { header: false, align: this.token.align[j] }
+          );
+        }
+
+        body += this.renderer.tablerow(cell);
+      }
+      return this.renderer.table(header, body);
+    }
+    case 'blockquote_start': {
+      body = '';
+
+      while (this.next().type !== 'blockquote_end') {
+        body += this.tok();
+      }
+
+      return this.renderer.blockquote(body);
+    }
+    case 'list_start': {
+      body = '';
+      var ordered = this.token.ordered,
+          start = this.token.start;
+
+      while (this.next().type !== 'list_end') {
+        body += this.tok();
+      }
+
+      return this.renderer.list(body, ordered, start);
+    }
+    case 'list_item_start': {
+      body = '';
+      var loose = this.token.loose;
+
+      if (this.token.task) {
+        body += this.renderer.checkbox(this.token.checked);
+      }
+
+      while (this.next().type !== 'list_item_end') {
+        body += !loose && this.token.type === 'text'
+          ? this.parseText()
+          : this.tok();
+      }
+
+      return this.renderer.listitem(body);
+    }
+    case 'html': {
+      // TODO parse inline content if parameter markdown=1
+      return this.renderer.html(this.token.text);
+    }
+    case 'paragraph': {
+      return this.renderer.paragraph(this.inline.output(this.token.text));
+    }
+    case 'text': {
+      return this.renderer.paragraph(this.parseText());
+    }
+  }
+};
+
+/**
+ * Helpers
+ */
+
+function escape(html, encode) {
+  return html
+    .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
+    .replace(/</g, '&lt;')
+    .replace(/>/g, '&gt;')
+    .replace(/"/g, '&quot;')
+    .replace(/'/g, '&#39;');
+}
+
+function unescape(html) {
+  // explicitly match decimal, hex, and named HTML entities
+  return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, function(_, n) {
+    n = n.toLowerCase();
+    if (n === 'colon') return ':';
+    if (n.charAt(0) === '#') {
+      return n.charAt(1) === 'x'
+        ? String.fromCharCode(parseInt(n.substring(2), 16))
+        : String.fromCharCode(+n.substring(1));
+    }
+    return '';
+  });
+}
+
+function edit(regex, opt) {
+  regex = regex.source || regex;
+  opt = opt || '';
+  return {
+    replace: function(name, val) {
+      val = val.source || val;
+      val = val.replace(/(^|[^\[])\^/g, '$1');
+      regex = regex.replace(name, val);
+      return this;
+    },
+    getRegex: function() {
+      return new RegExp(regex, opt);
+    }
+  };
+}
+
+function resolveUrl(base, href) {
+  if (!baseUrls[' ' + base]) {
+    // we can ignore everything in base after the last slash of its path component,
+    // but we might need to add _that_
+    // https://tools.ietf.org/html/rfc3986#section-3
+    if (/^[^:]+:\/*[^/]*$/.test(base)) {
+      baseUrls[' ' + base] = base + '/';
+    } else {
+      baseUrls[' ' + base] = rtrim(base, '/', true);
+    }
+  }
+  base = baseUrls[' ' + base];
+
+  if (href.slice(0, 2) === '//') {
+    return base.replace(/:[\s\S]*/, ':') + href;
+  } else if (href.charAt(0) === '/') {
+    return base.replace(/(:\/*[^/]*)[\s\S]*/, '$1') + href;
+  } else {
+    return base + href;
+  }
+}
+var baseUrls = {};
+var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
+
+function noop() {}
+noop.exec = noop;
+
+function merge(obj) {
+  var i = 1,
+      target,
+      key;
+
+  for (; i < arguments.length; i++) {
+    target = arguments[i];
+    for (key in target) {
+      if (Object.prototype.hasOwnProperty.call(target, key)) {
+        obj[key] = target[key];
+      }
+    }
+  }
+
+  return obj;
+}
+
+function splitCells(tableRow, count) {
+  // ensure that every cell-delimiting pipe has a space
+  // before it to distinguish it from an escaped pipe
+  var row = tableRow.replace(/\|/g, function (match, offset, str) {
+        var escaped = false,
+            curr = offset;
+        while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
+        if (escaped) {
+          // odd number of slashes means | is escaped
+          // so we leave it alone
+          return '|';
+        } else {
+          // add space before unescaped |
+          return ' |';
+        }
+      }),
+      cells = row.split(/ \|/),
+      i = 0;
+
+  if (cells.length > count) {
+    cells.splice(count);
+  } else {
+    while (cells.length < count) cells.push('');
+  }
+
+  for (; i < cells.length; i++) {
+    // leading or trailing whitespace is ignored per the gfm spec
+    cells[i] = cells[i].trim().replace(/\\\|/g, '|');
+  }
+  return cells;
+}
+
+// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
+// /c*$/ is vulnerable to REDOS.
+// invert: Remove suffix of non-c chars instead. Default falsey.
+function rtrim(str, c, invert) {
+  if (str.length === 0) {
+    return '';
+  }
+
+  // Length of suffix matching the invert condition.
+  var suffLen = 0;
+
+  // Step left until we fail to match the invert condition.
+  while (suffLen < str.length) {
+    var currChar = str.charAt(str.length - suffLen - 1);
+    if (currChar === c && !invert) {
+      suffLen++;
+    } else if (currChar !== c && invert) {
+      suffLen++;
+    } else {
+      break;
+    }
+  }
+
+  return str.substr(0, str.length - suffLen);
+}
+
+/**
+ * Marked
+ */
+
+function marked(src, opt, callback) {
+  // throw error in case of non string input
+  if (typeof src === 'undefined' || src === null) {
+    throw new Error('marked(): input parameter is undefined or null');
+  }
+  if (typeof src !== 'string') {
+    throw new Error('marked(): input parameter is of type '
+      + Object.prototype.toString.call(src) + ', string expected');
+  }
+
+  if (callback || typeof opt === 'function') {
+    if (!callback) {
+      callback = opt;
+      opt = null;
+    }
+
+    opt = merge({}, marked.defaults, opt || {});
+
+    var highlight = opt.highlight,
+        tokens,
+        pending,
+        i = 0;
+
+    try {
+      tokens = Lexer.lex(src, opt)
+    } catch (e) {
+      return callback(e);
+    }
+
+    pending = tokens.length;
+
+    var done = function(err) {
+      if (err) {
+        opt.highlight = highlight;
+        return callback(err);
+      }
+
+      var out;
+
+      try {
+        out = Parser.parse(tokens, opt);
+      } catch (e) {
+        err = e;
+      }
+
+      opt.highlight = highlight;
+
+      return err
+        ? callback(err)
+        : callback(null, out);
+    };
+
+    if (!highlight || highlight.length < 3) {
+      return done();
+    }
+
+    delete opt.highlight;
+
+    if (!pending) return done();
+
+    for (; i < tokens.length; i++) {
+      (function(token) {
+        if (token.type !== 'code') {
+          return --pending || done();
+        }
+        return highlight(token.text, token.lang, function(err, code) {
+          if (err) return done(err);
+          if (code == null || code === token.text) {
+            return --pending || done();
+          }
+          token.text = code;
+          token.escaped = true;
+          --pending || done();
+        });
+      })(tokens[i]);
+    }
+
+    return;
+  }
+  try {
+    if (opt) opt = merge({}, marked.defaults, opt);
+    return Parser.parse(Lexer.lex(src, opt), opt);
+  } catch (e) {
+    e.message += '\nPlease report this to https://github.com/markedjs/marked.';
+    if ((opt || marked.defaults).silent) {
+      return '<p>An error occurred:</p><pre>'
+        + escape(e.message + '', true)
+        + '</pre>';
+    }
+    throw e;
+  }
+}
+
+/**
+ * Options
+ */
+
+marked.options =
+marked.setOptions = function(opt) {
+  merge(marked.defaults, opt);
+  return marked;
+};
+
+marked.getDefaults = function () {
+  return {
+    baseUrl: null,
+    breaks: false,
+    gfm: true,
+    headerIds: true,
+    headerPrefix: '',
+    highlight: null,
+    langPrefix: 'language-',
+    mangle: true,
+    pedantic: false,
+    renderer: new Renderer(),
+    sanitize: false,
+    sanitizer: null,
+    silent: false,
+    smartLists: false,
+    smartypants: false,
+    tables: true,
+    xhtml: false
+  };
+}
+
+marked.defaults = marked.getDefaults();
+
+/**
+ * Expose
+ */
+
+marked.Parser = Parser;
+marked.parser = Parser.parse;
+
+marked.Renderer = Renderer;
+marked.TextRenderer = TextRenderer;
+
+marked.Lexer = Lexer;
+marked.lexer = Lexer.lex;
+
+marked.InlineLexer = InlineLexer;
+marked.inlineLexer = InlineLexer.output;
+
+marked.parse = marked;
+
+if (typeof module !== 'undefined' && typeof exports === 'object') {
+  module.exports = marked;
+} else if (typeof define === 'function' && define.amd) {
+  define(function() { return marked; });
+} else {
+  root.marked = marked;
+}
+})(this || (typeof window !== 'undefined' ? window : global));
diff --git a/components/mpvue-citypicker/city-data/area.js b/components/mpvue-citypicker/city-data/area.js
new file mode 100644
index 0000000..92dfc30
--- /dev/null
+++ b/components/mpvue-citypicker/city-data/area.js
@@ -0,0 +1,12542 @@
+/* eslint-disable */
+var areaData = [
+  [
+    [{
+        "label": "东城区",
+        "value": "110101"
+      },
+      {
+        "label": "西城区",
+        "value": "110102"
+      },
+      {
+        "label": "朝阳区",
+        "value": "110105"
+      },
+      {
+        "label": "丰台区",
+        "value": "110106"
+      },
+      {
+        "label": "石景山区",
+        "value": "110107"
+      },
+      {
+        "label": "海淀区",
+        "value": "110108"
+      },
+      {
+        "label": "门头沟区",
+        "value": "110109"
+      },
+      {
+        "label": "房山区",
+        "value": "110111"
+      },
+      {
+        "label": "通州区",
+        "value": "110112"
+      },
+      {
+        "label": "顺义区",
+        "value": "110113"
+      },
+      {
+        "label": "昌平区",
+        "value": "110114"
+      },
+      {
+        "label": "大兴区",
+        "value": "110115"
+      },
+      {
+        "label": "怀柔区",
+        "value": "110116"
+      },
+      {
+        "label": "平谷区",
+        "value": "110117"
+      },
+      {
+        "label": "密云区",
+        "value": "110118"
+      },
+      {
+        "label": "延庆区",
+        "value": "110119"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "和平区",
+        "value": "120101"
+      },
+      {
+        "label": "河东区",
+        "value": "120102"
+      },
+      {
+        "label": "河西区",
+        "value": "120103"
+      },
+      {
+        "label": "南开区",
+        "value": "120104"
+      },
+      {
+        "label": "河北区",
+        "value": "120105"
+      },
+      {
+        "label": "红桥区",
+        "value": "120106"
+      },
+      {
+        "label": "东丽区",
+        "value": "120110"
+      },
+      {
+        "label": "西青区",
+        "value": "120111"
+      },
+      {
+        "label": "津南区",
+        "value": "120112"
+      },
+      {
+        "label": "北辰区",
+        "value": "120113"
+      },
+      {
+        "label": "武清区",
+        "value": "120114"
+      },
+      {
+        "label": "宝坻区",
+        "value": "120115"
+      },
+      {
+        "label": "滨海新区",
+        "value": "120116"
+      },
+      {
+        "label": "宁河区",
+        "value": "120117"
+      },
+      {
+        "label": "静海区",
+        "value": "120118"
+      },
+      {
+        "label": "蓟州区",
+        "value": "120119"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "长安区",
+        "value": "130102"
+      },
+      {
+        "label": "桥西区",
+        "value": "130104"
+      },
+      {
+        "label": "新华区",
+        "value": "130105"
+      },
+      {
+        "label": "井陉矿区",
+        "value": "130107"
+      },
+      {
+        "label": "裕华区",
+        "value": "130108"
+      },
+      {
+        "label": "藁城区",
+        "value": "130109"
+      },
+      {
+        "label": "鹿泉区",
+        "value": "130110"
+      },
+      {
+        "label": "栾城区",
+        "value": "130111"
+      },
+      {
+        "label": "井陉县",
+        "value": "130121"
+      },
+      {
+        "label": "正定县",
+        "value": "130123"
+      },
+      {
+        "label": "行唐县",
+        "value": "130125"
+      },
+      {
+        "label": "灵寿县",
+        "value": "130126"
+      },
+      {
+        "label": "高邑县",
+        "value": "130127"
+      },
+      {
+        "label": "深泽县",
+        "value": "130128"
+      },
+      {
+        "label": "赞皇县",
+        "value": "130129"
+      },
+      {
+        "label": "无极县",
+        "value": "130130"
+      },
+      {
+        "label": "平山县",
+        "value": "130131"
+      },
+      {
+        "label": "元氏县",
+        "value": "130132"
+      },
+      {
+        "label": "赵县",
+        "value": "130133"
+      },
+      {
+        "label": "石家庄高新技术产业开发区",
+        "value": "130171"
+      },
+      {
+        "label": "石家庄循环化工园区",
+        "value": "130172"
+      },
+      {
+        "label": "辛集市",
+        "value": "130181"
+      },
+      {
+        "label": "晋州市",
+        "value": "130183"
+      },
+      {
+        "label": "新乐市",
+        "value": "130184"
+      }
+    ],
+    [{
+        "label": "路南区",
+        "value": "130202"
+      },
+      {
+        "label": "路北区",
+        "value": "130203"
+      },
+      {
+        "label": "古冶区",
+        "value": "130204"
+      },
+      {
+        "label": "开平区",
+        "value": "130205"
+      },
+      {
+        "label": "丰南区",
+        "value": "130207"
+      },
+      {
+        "label": "丰润区",
+        "value": "130208"
+      },
+      {
+        "label": "曹妃甸区",
+        "value": "130209"
+      },
+      {
+        "label": "滦县",
+        "value": "130223"
+      },
+      {
+        "label": "滦南县",
+        "value": "130224"
+      },
+      {
+        "label": "乐亭县",
+        "value": "130225"
+      },
+      {
+        "label": "迁西县",
+        "value": "130227"
+      },
+      {
+        "label": "玉田县",
+        "value": "130229"
+      },
+      {
+        "label": "唐山市芦台经济技术开发区",
+        "value": "130271"
+      },
+      {
+        "label": "唐山市汉沽管理区",
+        "value": "130272"
+      },
+      {
+        "label": "唐山高新技术产业开发区",
+        "value": "130273"
+      },
+      {
+        "label": "河北唐山海港经济开发区",
+        "value": "130274"
+      },
+      {
+        "label": "遵化市",
+        "value": "130281"
+      },
+      {
+        "label": "迁安市",
+        "value": "130283"
+      }
+    ],
+    [{
+        "label": "海港区",
+        "value": "130302"
+      },
+      {
+        "label": "山海关区",
+        "value": "130303"
+      },
+      {
+        "label": "北戴河区",
+        "value": "130304"
+      },
+      {
+        "label": "抚宁区",
+        "value": "130306"
+      },
+      {
+        "label": "青龙满族自治县",
+        "value": "130321"
+      },
+      {
+        "label": "昌黎县",
+        "value": "130322"
+      },
+      {
+        "label": "卢龙县",
+        "value": "130324"
+      },
+      {
+        "label": "秦皇岛市经济技术开发区",
+        "value": "130371"
+      },
+      {
+        "label": "北戴河新区",
+        "value": "130372"
+      }
+    ],
+    [{
+        "label": "邯山区",
+        "value": "130402"
+      },
+      {
+        "label": "丛台区",
+        "value": "130403"
+      },
+      {
+        "label": "复兴区",
+        "value": "130404"
+      },
+      {
+        "label": "峰峰矿区",
+        "value": "130406"
+      },
+      {
+        "label": "肥乡区",
+        "value": "130407"
+      },
+      {
+        "label": "永年区",
+        "value": "130408"
+      },
+      {
+        "label": "临漳县",
+        "value": "130423"
+      },
+      {
+        "label": "成安县",
+        "value": "130424"
+      },
+      {
+        "label": "大名县",
+        "value": "130425"
+      },
+      {
+        "label": "涉县",
+        "value": "130426"
+      },
+      {
+        "label": "磁县",
+        "value": "130427"
+      },
+      {
+        "label": "邱县",
+        "value": "130430"
+      },
+      {
+        "label": "鸡泽县",
+        "value": "130431"
+      },
+      {
+        "label": "广平县",
+        "value": "130432"
+      },
+      {
+        "label": "馆陶县",
+        "value": "130433"
+      },
+      {
+        "label": "魏县",
+        "value": "130434"
+      },
+      {
+        "label": "曲周县",
+        "value": "130435"
+      },
+      {
+        "label": "邯郸经济技术开发区",
+        "value": "130471"
+      },
+      {
+        "label": "邯郸冀南新区",
+        "value": "130473"
+      },
+      {
+        "label": "武安市",
+        "value": "130481"
+      }
+    ],
+    [{
+        "label": "桥东区",
+        "value": "130502"
+      },
+      {
+        "label": "桥西区",
+        "value": "130503"
+      },
+      {
+        "label": "邢台县",
+        "value": "130521"
+      },
+      {
+        "label": "临城县",
+        "value": "130522"
+      },
+      {
+        "label": "内丘县",
+        "value": "130523"
+      },
+      {
+        "label": "柏乡县",
+        "value": "130524"
+      },
+      {
+        "label": "隆尧县",
+        "value": "130525"
+      },
+      {
+        "label": "任县",
+        "value": "130526"
+      },
+      {
+        "label": "南和县",
+        "value": "130527"
+      },
+      {
+        "label": "宁晋县",
+        "value": "130528"
+      },
+      {
+        "label": "巨鹿县",
+        "value": "130529"
+      },
+      {
+        "label": "新河县",
+        "value": "130530"
+      },
+      {
+        "label": "广宗县",
+        "value": "130531"
+      },
+      {
+        "label": "平乡县",
+        "value": "130532"
+      },
+      {
+        "label": "威县",
+        "value": "130533"
+      },
+      {
+        "label": "清河县",
+        "value": "130534"
+      },
+      {
+        "label": "临西县",
+        "value": "130535"
+      },
+      {
+        "label": "河北邢台经济开发区",
+        "value": "130571"
+      },
+      {
+        "label": "南宫市",
+        "value": "130581"
+      },
+      {
+        "label": "沙河市",
+        "value": "130582"
+      }
+    ],
+    [{
+        "label": "竞秀区",
+        "value": "130602"
+      },
+      {
+        "label": "莲池区",
+        "value": "130606"
+      },
+      {
+        "label": "满城区",
+        "value": "130607"
+      },
+      {
+        "label": "清苑区",
+        "value": "130608"
+      },
+      {
+        "label": "徐水区",
+        "value": "130609"
+      },
+      {
+        "label": "涞水县",
+        "value": "130623"
+      },
+      {
+        "label": "阜平县",
+        "value": "130624"
+      },
+      {
+        "label": "定兴县",
+        "value": "130626"
+      },
+      {
+        "label": "唐县",
+        "value": "130627"
+      },
+      {
+        "label": "高阳县",
+        "value": "130628"
+      },
+      {
+        "label": "容城县",
+        "value": "130629"
+      },
+      {
+        "label": "涞源县",
+        "value": "130630"
+      },
+      {
+        "label": "望都县",
+        "value": "130631"
+      },
+      {
+        "label": "安新县",
+        "value": "130632"
+      },
+      {
+        "label": "易县",
+        "value": "130633"
+      },
+      {
+        "label": "曲阳县",
+        "value": "130634"
+      },
+      {
+        "label": "蠡县",
+        "value": "130635"
+      },
+      {
+        "label": "顺平县",
+        "value": "130636"
+      },
+      {
+        "label": "博野县",
+        "value": "130637"
+      },
+      {
+        "label": "雄县",
+        "value": "130638"
+      },
+      {
+        "label": "保定高新技术产业开发区",
+        "value": "130671"
+      },
+      {
+        "label": "保定白沟新城",
+        "value": "130672"
+      },
+      {
+        "label": "涿州市",
+        "value": "130681"
+      },
+      {
+        "label": "定州市",
+        "value": "130682"
+      },
+      {
+        "label": "安国市",
+        "value": "130683"
+      },
+      {
+        "label": "高碑店市",
+        "value": "130684"
+      }
+    ],
+    [{
+        "label": "桥东区",
+        "value": "130702"
+      },
+      {
+        "label": "桥西区",
+        "value": "130703"
+      },
+      {
+        "label": "宣化区",
+        "value": "130705"
+      },
+      {
+        "label": "下花园区",
+        "value": "130706"
+      },
+      {
+        "label": "万全区",
+        "value": "130708"
+      },
+      {
+        "label": "崇礼区",
+        "value": "130709"
+      },
+      {
+        "label": "张北县",
+        "value": "130722"
+      },
+      {
+        "label": "康保县",
+        "value": "130723"
+      },
+      {
+        "label": "沽源县",
+        "value": "130724"
+      },
+      {
+        "label": "尚义县",
+        "value": "130725"
+      },
+      {
+        "label": "蔚县",
+        "value": "130726"
+      },
+      {
+        "label": "阳原县",
+        "value": "130727"
+      },
+      {
+        "label": "怀安县",
+        "value": "130728"
+      },
+      {
+        "label": "怀来县",
+        "value": "130730"
+      },
+      {
+        "label": "涿鹿县",
+        "value": "130731"
+      },
+      {
+        "label": "赤城县",
+        "value": "130732"
+      },
+      {
+        "label": "张家口市高新技术产业开发区",
+        "value": "130771"
+      },
+      {
+        "label": "张家口市察北管理区",
+        "value": "130772"
+      },
+      {
+        "label": "张家口市塞北管理区",
+        "value": "130773"
+      }
+    ],
+    [{
+        "label": "双桥区",
+        "value": "130802"
+      },
+      {
+        "label": "双滦区",
+        "value": "130803"
+      },
+      {
+        "label": "鹰手营子矿区",
+        "value": "130804"
+      },
+      {
+        "label": "承德县",
+        "value": "130821"
+      },
+      {
+        "label": "兴隆县",
+        "value": "130822"
+      },
+      {
+        "label": "滦平县",
+        "value": "130824"
+      },
+      {
+        "label": "隆化县",
+        "value": "130825"
+      },
+      {
+        "label": "丰宁满族自治县",
+        "value": "130826"
+      },
+      {
+        "label": "宽城满族自治县",
+        "value": "130827"
+      },
+      {
+        "label": "围场满族蒙古族自治县",
+        "value": "130828"
+      },
+      {
+        "label": "承德高新技术产业开发区",
+        "value": "130871"
+      },
+      {
+        "label": "平泉市",
+        "value": "130881"
+      }
+    ],
+    [{
+        "label": "新华区",
+        "value": "130902"
+      },
+      {
+        "label": "运河区",
+        "value": "130903"
+      },
+      {
+        "label": "沧县",
+        "value": "130921"
+      },
+      {
+        "label": "青县",
+        "value": "130922"
+      },
+      {
+        "label": "东光县",
+        "value": "130923"
+      },
+      {
+        "label": "海兴县",
+        "value": "130924"
+      },
+      {
+        "label": "盐山县",
+        "value": "130925"
+      },
+      {
+        "label": "肃宁县",
+        "value": "130926"
+      },
+      {
+        "label": "南皮县",
+        "value": "130927"
+      },
+      {
+        "label": "吴桥县",
+        "value": "130928"
+      },
+      {
+        "label": "献县",
+        "value": "130929"
+      },
+      {
+        "label": "孟村回族自治县",
+        "value": "130930"
+      },
+      {
+        "label": "河北沧州经济开发区",
+        "value": "130971"
+      },
+      {
+        "label": "沧州高新技术产业开发区",
+        "value": "130972"
+      },
+      {
+        "label": "沧州渤海新区",
+        "value": "130973"
+      },
+      {
+        "label": "泊头市",
+        "value": "130981"
+      },
+      {
+        "label": "任丘市",
+        "value": "130982"
+      },
+      {
+        "label": "黄骅市",
+        "value": "130983"
+      },
+      {
+        "label": "河间市",
+        "value": "130984"
+      }
+    ],
+    [{
+        "label": "安次区",
+        "value": "131002"
+      },
+      {
+        "label": "广阳区",
+        "value": "131003"
+      },
+      {
+        "label": "固安县",
+        "value": "131022"
+      },
+      {
+        "label": "永清县",
+        "value": "131023"
+      },
+      {
+        "label": "香河县",
+        "value": "131024"
+      },
+      {
+        "label": "大城县",
+        "value": "131025"
+      },
+      {
+        "label": "文安县",
+        "value": "131026"
+      },
+      {
+        "label": "大厂回族自治县",
+        "value": "131028"
+      },
+      {
+        "label": "廊坊经济技术开发区",
+        "value": "131071"
+      },
+      {
+        "label": "霸州市",
+        "value": "131081"
+      },
+      {
+        "label": "三河市",
+        "value": "131082"
+      }
+    ],
+    [{
+        "label": "桃城区",
+        "value": "131102"
+      },
+      {
+        "label": "冀州区",
+        "value": "131103"
+      },
+      {
+        "label": "枣强县",
+        "value": "131121"
+      },
+      {
+        "label": "武邑县",
+        "value": "131122"
+      },
+      {
+        "label": "武强县",
+        "value": "131123"
+      },
+      {
+        "label": "饶阳县",
+        "value": "131124"
+      },
+      {
+        "label": "安平县",
+        "value": "131125"
+      },
+      {
+        "label": "故城县",
+        "value": "131126"
+      },
+      {
+        "label": "景县",
+        "value": "131127"
+      },
+      {
+        "label": "阜城县",
+        "value": "131128"
+      },
+      {
+        "label": "河北衡水经济开发区",
+        "value": "131171"
+      },
+      {
+        "label": "衡水滨湖新区",
+        "value": "131172"
+      },
+      {
+        "label": "深州市",
+        "value": "131182"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "小店区",
+        "value": "140105"
+      },
+      {
+        "label": "迎泽区",
+        "value": "140106"
+      },
+      {
+        "label": "杏花岭区",
+        "value": "140107"
+      },
+      {
+        "label": "尖草坪区",
+        "value": "140108"
+      },
+      {
+        "label": "万柏林区",
+        "value": "140109"
+      },
+      {
+        "label": "晋源区",
+        "value": "140110"
+      },
+      {
+        "label": "清徐县",
+        "value": "140121"
+      },
+      {
+        "label": "阳曲县",
+        "value": "140122"
+      },
+      {
+        "label": "娄烦县",
+        "value": "140123"
+      },
+      {
+        "label": "山西转型综合改革示范区",
+        "value": "140171"
+      },
+      {
+        "label": "古交市",
+        "value": "140181"
+      }
+    ],
+    [{
+        "label": "城区",
+        "value": "140202"
+      },
+      {
+        "label": "矿区",
+        "value": "140203"
+      },
+      {
+        "label": "南郊区",
+        "value": "140211"
+      },
+      {
+        "label": "新荣区",
+        "value": "140212"
+      },
+      {
+        "label": "阳高县",
+        "value": "140221"
+      },
+      {
+        "label": "天镇县",
+        "value": "140222"
+      },
+      {
+        "label": "广灵县",
+        "value": "140223"
+      },
+      {
+        "label": "灵丘县",
+        "value": "140224"
+      },
+      {
+        "label": "浑源县",
+        "value": "140225"
+      },
+      {
+        "label": "左云县",
+        "value": "140226"
+      },
+      {
+        "label": "大同县",
+        "value": "140227"
+      },
+      {
+        "label": "山西大同经济开发区",
+        "value": "140271"
+      }
+    ],
+    [{
+        "label": "城区",
+        "value": "140302"
+      },
+      {
+        "label": "矿区",
+        "value": "140303"
+      },
+      {
+        "label": "郊区",
+        "value": "140311"
+      },
+      {
+        "label": "平定县",
+        "value": "140321"
+      },
+      {
+        "label": "盂县",
+        "value": "140322"
+      },
+      {
+        "label": "山西阳泉经济开发区",
+        "value": "140371"
+      }
+    ],
+    [{
+        "label": "城区",
+        "value": "140402"
+      },
+      {
+        "label": "郊区",
+        "value": "140411"
+      },
+      {
+        "label": "长治县",
+        "value": "140421"
+      },
+      {
+        "label": "襄垣县",
+        "value": "140423"
+      },
+      {
+        "label": "屯留县",
+        "value": "140424"
+      },
+      {
+        "label": "平顺县",
+        "value": "140425"
+      },
+      {
+        "label": "黎城县",
+        "value": "140426"
+      },
+      {
+        "label": "壶关县",
+        "value": "140427"
+      },
+      {
+        "label": "长子县",
+        "value": "140428"
+      },
+      {
+        "label": "武乡县",
+        "value": "140429"
+      },
+      {
+        "label": "沁县",
+        "value": "140430"
+      },
+      {
+        "label": "沁源县",
+        "value": "140431"
+      },
+      {
+        "label": "山西长治高新技术产业园区",
+        "value": "140471"
+      },
+      {
+        "label": "潞城市",
+        "value": "140481"
+      }
+    ],
+    [{
+        "label": "城区",
+        "value": "140502"
+      },
+      {
+        "label": "沁水县",
+        "value": "140521"
+      },
+      {
+        "label": "阳城县",
+        "value": "140522"
+      },
+      {
+        "label": "陵川县",
+        "value": "140524"
+      },
+      {
+        "label": "泽州县",
+        "value": "140525"
+      },
+      {
+        "label": "高平市",
+        "value": "140581"
+      }
+    ],
+    [{
+        "label": "朔城区",
+        "value": "140602"
+      },
+      {
+        "label": "平鲁区",
+        "value": "140603"
+      },
+      {
+        "label": "山阴县",
+        "value": "140621"
+      },
+      {
+        "label": "应县",
+        "value": "140622"
+      },
+      {
+        "label": "右玉县",
+        "value": "140623"
+      },
+      {
+        "label": "怀仁县",
+        "value": "140624"
+      },
+      {
+        "label": "山西朔州经济开发区",
+        "value": "140671"
+      }
+    ],
+    [{
+        "label": "榆次区",
+        "value": "140702"
+      },
+      {
+        "label": "榆社县",
+        "value": "140721"
+      },
+      {
+        "label": "左权县",
+        "value": "140722"
+      },
+      {
+        "label": "和顺县",
+        "value": "140723"
+      },
+      {
+        "label": "昔阳县",
+        "value": "140724"
+      },
+      {
+        "label": "寿阳县",
+        "value": "140725"
+      },
+      {
+        "label": "太谷县",
+        "value": "140726"
+      },
+      {
+        "label": "祁县",
+        "value": "140727"
+      },
+      {
+        "label": "平遥县",
+        "value": "140728"
+      },
+      {
+        "label": "灵石县",
+        "value": "140729"
+      },
+      {
+        "label": "介休市",
+        "value": "140781"
+      }
+    ],
+    [{
+        "label": "盐湖区",
+        "value": "140802"
+      },
+      {
+        "label": "临猗县",
+        "value": "140821"
+      },
+      {
+        "label": "万荣县",
+        "value": "140822"
+      },
+      {
+        "label": "闻喜县",
+        "value": "140823"
+      },
+      {
+        "label": "稷山县",
+        "value": "140824"
+      },
+      {
+        "label": "新绛县",
+        "value": "140825"
+      },
+      {
+        "label": "绛县",
+        "value": "140826"
+      },
+      {
+        "label": "垣曲县",
+        "value": "140827"
+      },
+      {
+        "label": "夏县",
+        "value": "140828"
+      },
+      {
+        "label": "平陆县",
+        "value": "140829"
+      },
+      {
+        "label": "芮城县",
+        "value": "140830"
+      },
+      {
+        "label": "永济市",
+        "value": "140881"
+      },
+      {
+        "label": "河津市",
+        "value": "140882"
+      }
+    ],
+    [{
+        "label": "忻府区",
+        "value": "140902"
+      },
+      {
+        "label": "定襄县",
+        "value": "140921"
+      },
+      {
+        "label": "五台县",
+        "value": "140922"
+      },
+      {
+        "label": "代县",
+        "value": "140923"
+      },
+      {
+        "label": "繁峙县",
+        "value": "140924"
+      },
+      {
+        "label": "宁武县",
+        "value": "140925"
+      },
+      {
+        "label": "静乐县",
+        "value": "140926"
+      },
+      {
+        "label": "神池县",
+        "value": "140927"
+      },
+      {
+        "label": "五寨县",
+        "value": "140928"
+      },
+      {
+        "label": "岢岚县",
+        "value": "140929"
+      },
+      {
+        "label": "河曲县",
+        "value": "140930"
+      },
+      {
+        "label": "保德县",
+        "value": "140931"
+      },
+      {
+        "label": "偏关县",
+        "value": "140932"
+      },
+      {
+        "label": "五台山风景名胜区",
+        "value": "140971"
+      },
+      {
+        "label": "原平市",
+        "value": "140981"
+      }
+    ],
+    [{
+        "label": "尧都区",
+        "value": "141002"
+      },
+      {
+        "label": "曲沃县",
+        "value": "141021"
+      },
+      {
+        "label": "翼城县",
+        "value": "141022"
+      },
+      {
+        "label": "襄汾县",
+        "value": "141023"
+      },
+      {
+        "label": "洪洞县",
+        "value": "141024"
+      },
+      {
+        "label": "古县",
+        "value": "141025"
+      },
+      {
+        "label": "安泽县",
+        "value": "141026"
+      },
+      {
+        "label": "浮山县",
+        "value": "141027"
+      },
+      {
+        "label": "吉县",
+        "value": "141028"
+      },
+      {
+        "label": "乡宁县",
+        "value": "141029"
+      },
+      {
+        "label": "大宁县",
+        "value": "141030"
+      },
+      {
+        "label": "隰县",
+        "value": "141031"
+      },
+      {
+        "label": "永和县",
+        "value": "141032"
+      },
+      {
+        "label": "蒲县",
+        "value": "141033"
+      },
+      {
+        "label": "汾西县",
+        "value": "141034"
+      },
+      {
+        "label": "侯马市",
+        "value": "141081"
+      },
+      {
+        "label": "霍州市",
+        "value": "141082"
+      }
+    ],
+    [{
+        "label": "离石区",
+        "value": "141102"
+      },
+      {
+        "label": "文水县",
+        "value": "141121"
+      },
+      {
+        "label": "交城县",
+        "value": "141122"
+      },
+      {
+        "label": "兴县",
+        "value": "141123"
+      },
+      {
+        "label": "临县",
+        "value": "141124"
+      },
+      {
+        "label": "柳林县",
+        "value": "141125"
+      },
+      {
+        "label": "石楼县",
+        "value": "141126"
+      },
+      {
+        "label": "岚县",
+        "value": "141127"
+      },
+      {
+        "label": "方山县",
+        "value": "141128"
+      },
+      {
+        "label": "中阳县",
+        "value": "141129"
+      },
+      {
+        "label": "交口县",
+        "value": "141130"
+      },
+      {
+        "label": "孝义市",
+        "value": "141181"
+      },
+      {
+        "label": "汾阳市",
+        "value": "141182"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "新城区",
+        "value": "150102"
+      },
+      {
+        "label": "回民区",
+        "value": "150103"
+      },
+      {
+        "label": "玉泉区",
+        "value": "150104"
+      },
+      {
+        "label": "赛罕区",
+        "value": "150105"
+      },
+      {
+        "label": "土默特左旗",
+        "value": "150121"
+      },
+      {
+        "label": "托克托县",
+        "value": "150122"
+      },
+      {
+        "label": "和林格尔县",
+        "value": "150123"
+      },
+      {
+        "label": "清水河县",
+        "value": "150124"
+      },
+      {
+        "label": "武川县",
+        "value": "150125"
+      },
+      {
+        "label": "呼和浩特金海工业园区",
+        "value": "150171"
+      },
+      {
+        "label": "呼和浩特经济技术开发区",
+        "value": "150172"
+      }
+    ],
+    [{
+        "label": "东河区",
+        "value": "150202"
+      },
+      {
+        "label": "昆都仑区",
+        "value": "150203"
+      },
+      {
+        "label": "青山区",
+        "value": "150204"
+      },
+      {
+        "label": "石拐区",
+        "value": "150205"
+      },
+      {
+        "label": "白云鄂博矿区",
+        "value": "150206"
+      },
+      {
+        "label": "九原区",
+        "value": "150207"
+      },
+      {
+        "label": "土默特右旗",
+        "value": "150221"
+      },
+      {
+        "label": "固阳县",
+        "value": "150222"
+      },
+      {
+        "label": "达尔罕茂明安联合旗",
+        "value": "150223"
+      },
+      {
+        "label": "包头稀土高新技术产业开发区",
+        "value": "150271"
+      }
+    ],
+    [{
+        "label": "海勃湾区",
+        "value": "150302"
+      },
+      {
+        "label": "海南区",
+        "value": "150303"
+      },
+      {
+        "label": "乌达区",
+        "value": "150304"
+      }
+    ],
+    [{
+        "label": "红山区",
+        "value": "150402"
+      },
+      {
+        "label": "元宝山区",
+        "value": "150403"
+      },
+      {
+        "label": "松山区",
+        "value": "150404"
+      },
+      {
+        "label": "阿鲁科尔沁旗",
+        "value": "150421"
+      },
+      {
+        "label": "巴林左旗",
+        "value": "150422"
+      },
+      {
+        "label": "巴林右旗",
+        "value": "150423"
+      },
+      {
+        "label": "林西县",
+        "value": "150424"
+      },
+      {
+        "label": "克什克腾旗",
+        "value": "150425"
+      },
+      {
+        "label": "翁牛特旗",
+        "value": "150426"
+      },
+      {
+        "label": "喀喇沁旗",
+        "value": "150428"
+      },
+      {
+        "label": "宁城县",
+        "value": "150429"
+      },
+      {
+        "label": "敖汉旗",
+        "value": "150430"
+      }
+    ],
+    [{
+        "label": "科尔沁区",
+        "value": "150502"
+      },
+      {
+        "label": "科尔沁左翼中旗",
+        "value": "150521"
+      },
+      {
+        "label": "科尔沁左翼后旗",
+        "value": "150522"
+      },
+      {
+        "label": "开鲁县",
+        "value": "150523"
+      },
+      {
+        "label": "库伦旗",
+        "value": "150524"
+      },
+      {
+        "label": "奈曼旗",
+        "value": "150525"
+      },
+      {
+        "label": "扎鲁特旗",
+        "value": "150526"
+      },
+      {
+        "label": "通辽经济技术开发区",
+        "value": "150571"
+      },
+      {
+        "label": "霍林郭勒市",
+        "value": "150581"
+      }
+    ],
+    [{
+        "label": "东胜区",
+        "value": "150602"
+      },
+      {
+        "label": "康巴什区",
+        "value": "150603"
+      },
+      {
+        "label": "达拉特旗",
+        "value": "150621"
+      },
+      {
+        "label": "准格尔旗",
+        "value": "150622"
+      },
+      {
+        "label": "鄂托克前旗",
+        "value": "150623"
+      },
+      {
+        "label": "鄂托克旗",
+        "value": "150624"
+      },
+      {
+        "label": "杭锦旗",
+        "value": "150625"
+      },
+      {
+        "label": "乌审旗",
+        "value": "150626"
+      },
+      {
+        "label": "伊金霍洛旗",
+        "value": "150627"
+      }
+    ],
+    [{
+        "label": "海拉尔区",
+        "value": "150702"
+      },
+      {
+        "label": "扎赉诺尔区",
+        "value": "150703"
+      },
+      {
+        "label": "阿荣旗",
+        "value": "150721"
+      },
+      {
+        "label": "莫力达瓦达斡尔族自治旗",
+        "value": "150722"
+      },
+      {
+        "label": "鄂伦春自治旗",
+        "value": "150723"
+      },
+      {
+        "label": "鄂温克族自治旗",
+        "value": "150724"
+      },
+      {
+        "label": "陈巴尔虎旗",
+        "value": "150725"
+      },
+      {
+        "label": "新巴尔虎左旗",
+        "value": "150726"
+      },
+      {
+        "label": "新巴尔虎右旗",
+        "value": "150727"
+      },
+      {
+        "label": "满洲里市",
+        "value": "150781"
+      },
+      {
+        "label": "牙克石市",
+        "value": "150782"
+      },
+      {
+        "label": "扎兰屯市",
+        "value": "150783"
+      },
+      {
+        "label": "额尔古纳市",
+        "value": "150784"
+      },
+      {
+        "label": "根河市",
+        "value": "150785"
+      }
+    ],
+    [{
+        "label": "临河区",
+        "value": "150802"
+      },
+      {
+        "label": "五原县",
+        "value": "150821"
+      },
+      {
+        "label": "磴口县",
+        "value": "150822"
+      },
+      {
+        "label": "乌拉特前旗",
+        "value": "150823"
+      },
+      {
+        "label": "乌拉特中旗",
+        "value": "150824"
+      },
+      {
+        "label": "乌拉特后旗",
+        "value": "150825"
+      },
+      {
+        "label": "杭锦后旗",
+        "value": "150826"
+      }
+    ],
+    [{
+        "label": "集宁区",
+        "value": "150902"
+      },
+      {
+        "label": "卓资县",
+        "value": "150921"
+      },
+      {
+        "label": "化德县",
+        "value": "150922"
+      },
+      {
+        "label": "商都县",
+        "value": "150923"
+      },
+      {
+        "label": "兴和县",
+        "value": "150924"
+      },
+      {
+        "label": "凉城县",
+        "value": "150925"
+      },
+      {
+        "label": "察哈尔右翼前旗",
+        "value": "150926"
+      },
+      {
+        "label": "察哈尔右翼中旗",
+        "value": "150927"
+      },
+      {
+        "label": "察哈尔右翼后旗",
+        "value": "150928"
+      },
+      {
+        "label": "四子王旗",
+        "value": "150929"
+      },
+      {
+        "label": "丰镇市",
+        "value": "150981"
+      }
+    ],
+    [{
+        "label": "乌兰浩特市",
+        "value": "152201"
+      },
+      {
+        "label": "阿尔山市",
+        "value": "152202"
+      },
+      {
+        "label": "科尔沁右翼前旗",
+        "value": "152221"
+      },
+      {
+        "label": "科尔沁右翼中旗",
+        "value": "152222"
+      },
+      {
+        "label": "扎赉特旗",
+        "value": "152223"
+      },
+      {
+        "label": "突泉县",
+        "value": "152224"
+      }
+    ],
+    [{
+        "label": "二连浩特市",
+        "value": "152501"
+      },
+      {
+        "label": "锡林浩特市",
+        "value": "152502"
+      },
+      {
+        "label": "阿巴嘎旗",
+        "value": "152522"
+      },
+      {
+        "label": "苏尼特左旗",
+        "value": "152523"
+      },
+      {
+        "label": "苏尼特右旗",
+        "value": "152524"
+      },
+      {
+        "label": "东乌珠穆沁旗",
+        "value": "152525"
+      },
+      {
+        "label": "西乌珠穆沁旗",
+        "value": "152526"
+      },
+      {
+        "label": "太仆寺旗",
+        "value": "152527"
+      },
+      {
+        "label": "镶黄旗",
+        "value": "152528"
+      },
+      {
+        "label": "正镶白旗",
+        "value": "152529"
+      },
+      {
+        "label": "正蓝旗",
+        "value": "152530"
+      },
+      {
+        "label": "多伦县",
+        "value": "152531"
+      },
+      {
+        "label": "乌拉盖管委会",
+        "value": "152571"
+      }
+    ],
+    [{
+        "label": "阿拉善左旗",
+        "value": "152921"
+      },
+      {
+        "label": "阿拉善右旗",
+        "value": "152922"
+      },
+      {
+        "label": "额济纳旗",
+        "value": "152923"
+      },
+      {
+        "label": "内蒙古阿拉善经济开发区",
+        "value": "152971"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "和平区",
+        "value": "210102"
+      },
+      {
+        "label": "沈河区",
+        "value": "210103"
+      },
+      {
+        "label": "大东区",
+        "value": "210104"
+      },
+      {
+        "label": "皇姑区",
+        "value": "210105"
+      },
+      {
+        "label": "铁西区",
+        "value": "210106"
+      },
+      {
+        "label": "苏家屯区",
+        "value": "210111"
+      },
+      {
+        "label": "浑南区",
+        "value": "210112"
+      },
+      {
+        "label": "沈北新区",
+        "value": "210113"
+      },
+      {
+        "label": "于洪区",
+        "value": "210114"
+      },
+      {
+        "label": "辽中区",
+        "value": "210115"
+      },
+      {
+        "label": "康平县",
+        "value": "210123"
+      },
+      {
+        "label": "法库县",
+        "value": "210124"
+      },
+      {
+        "label": "新民市",
+        "value": "210181"
+      }
+    ],
+    [{
+        "label": "中山区",
+        "value": "210202"
+      },
+      {
+        "label": "西岗区",
+        "value": "210203"
+      },
+      {
+        "label": "沙河口区",
+        "value": "210204"
+      },
+      {
+        "label": "甘井子区",
+        "value": "210211"
+      },
+      {
+        "label": "旅顺口区",
+        "value": "210212"
+      },
+      {
+        "label": "金州区",
+        "value": "210213"
+      },
+      {
+        "label": "普兰店区",
+        "value": "210214"
+      },
+      {
+        "label": "长海县",
+        "value": "210224"
+      },
+      {
+        "label": "瓦房店市",
+        "value": "210281"
+      },
+      {
+        "label": "庄河市",
+        "value": "210283"
+      }
+    ],
+    [{
+        "label": "铁东区",
+        "value": "210302"
+      },
+      {
+        "label": "铁西区",
+        "value": "210303"
+      },
+      {
+        "label": "立山区",
+        "value": "210304"
+      },
+      {
+        "label": "千山区",
+        "value": "210311"
+      },
+      {
+        "label": "台安县",
+        "value": "210321"
+      },
+      {
+        "label": "岫岩满族自治县",
+        "value": "210323"
+      },
+      {
+        "label": "海城市",
+        "value": "210381"
+      }
+    ],
+    [{
+        "label": "新抚区",
+        "value": "210402"
+      },
+      {
+        "label": "东洲区",
+        "value": "210403"
+      },
+      {
+        "label": "望花区",
+        "value": "210404"
+      },
+      {
+        "label": "顺城区",
+        "value": "210411"
+      },
+      {
+        "label": "抚顺县",
+        "value": "210421"
+      },
+      {
+        "label": "新宾满族自治县",
+        "value": "210422"
+      },
+      {
+        "label": "清原满族自治县",
+        "value": "210423"
+      }
+    ],
+    [{
+        "label": "平山区",
+        "value": "210502"
+      },
+      {
+        "label": "溪湖区",
+        "value": "210503"
+      },
+      {
+        "label": "明山区",
+        "value": "210504"
+      },
+      {
+        "label": "南芬区",
+        "value": "210505"
+      },
+      {
+        "label": "本溪满族自治县",
+        "value": "210521"
+      },
+      {
+        "label": "桓仁满族自治县",
+        "value": "210522"
+      }
+    ],
+    [{
+        "label": "元宝区",
+        "value": "210602"
+      },
+      {
+        "label": "振兴区",
+        "value": "210603"
+      },
+      {
+        "label": "振安区",
+        "value": "210604"
+      },
+      {
+        "label": "宽甸满族自治县",
+        "value": "210624"
+      },
+      {
+        "label": "东港市",
+        "value": "210681"
+      },
+      {
+        "label": "凤城市",
+        "value": "210682"
+      }
+    ],
+    [{
+        "label": "古塔区",
+        "value": "210702"
+      },
+      {
+        "label": "凌河区",
+        "value": "210703"
+      },
+      {
+        "label": "太和区",
+        "value": "210711"
+      },
+      {
+        "label": "黑山县",
+        "value": "210726"
+      },
+      {
+        "label": "义县",
+        "value": "210727"
+      },
+      {
+        "label": "凌海市",
+        "value": "210781"
+      },
+      {
+        "label": "北镇市",
+        "value": "210782"
+      }
+    ],
+    [{
+        "label": "站前区",
+        "value": "210802"
+      },
+      {
+        "label": "西市区",
+        "value": "210803"
+      },
+      {
+        "label": "鲅鱼圈区",
+        "value": "210804"
+      },
+      {
+        "label": "老边区",
+        "value": "210811"
+      },
+      {
+        "label": "盖州市",
+        "value": "210881"
+      },
+      {
+        "label": "大石桥市",
+        "value": "210882"
+      }
+    ],
+    [{
+        "label": "海州区",
+        "value": "210902"
+      },
+      {
+        "label": "新邱区",
+        "value": "210903"
+      },
+      {
+        "label": "太平区",
+        "value": "210904"
+      },
+      {
+        "label": "清河门区",
+        "value": "210905"
+      },
+      {
+        "label": "细河区",
+        "value": "210911"
+      },
+      {
+        "label": "阜新蒙古族自治县",
+        "value": "210921"
+      },
+      {
+        "label": "彰武县",
+        "value": "210922"
+      }
+    ],
+    [{
+        "label": "白塔区",
+        "value": "211002"
+      },
+      {
+        "label": "文圣区",
+        "value": "211003"
+      },
+      {
+        "label": "宏伟区",
+        "value": "211004"
+      },
+      {
+        "label": "弓长岭区",
+        "value": "211005"
+      },
+      {
+        "label": "太子河区",
+        "value": "211011"
+      },
+      {
+        "label": "辽阳县",
+        "value": "211021"
+      },
+      {
+        "label": "灯塔市",
+        "value": "211081"
+      }
+    ],
+    [{
+        "label": "双台子区",
+        "value": "211102"
+      },
+      {
+        "label": "兴隆台区",
+        "value": "211103"
+      },
+      {
+        "label": "大洼区",
+        "value": "211104"
+      },
+      {
+        "label": "盘山县",
+        "value": "211122"
+      }
+    ],
+    [{
+        "label": "银州区",
+        "value": "211202"
+      },
+      {
+        "label": "清河区",
+        "value": "211204"
+      },
+      {
+        "label": "铁岭县",
+        "value": "211221"
+      },
+      {
+        "label": "西丰县",
+        "value": "211223"
+      },
+      {
+        "label": "昌图县",
+        "value": "211224"
+      },
+      {
+        "label": "调兵山市",
+        "value": "211281"
+      },
+      {
+        "label": "开原市",
+        "value": "211282"
+      }
+    ],
+    [{
+        "label": "双塔区",
+        "value": "211302"
+      },
+      {
+        "label": "龙城区",
+        "value": "211303"
+      },
+      {
+        "label": "朝阳县",
+        "value": "211321"
+      },
+      {
+        "label": "建平县",
+        "value": "211322"
+      },
+      {
+        "label": "喀喇沁左翼蒙古族自治县",
+        "value": "211324"
+      },
+      {
+        "label": "北票市",
+        "value": "211381"
+      },
+      {
+        "label": "凌源市",
+        "value": "211382"
+      }
+    ],
+    [{
+        "label": "连山区",
+        "value": "211402"
+      },
+      {
+        "label": "龙港区",
+        "value": "211403"
+      },
+      {
+        "label": "南票区",
+        "value": "211404"
+      },
+      {
+        "label": "绥中县",
+        "value": "211421"
+      },
+      {
+        "label": "建昌县",
+        "value": "211422"
+      },
+      {
+        "label": "兴城市",
+        "value": "211481"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "南关区",
+        "value": "220102"
+      },
+      {
+        "label": "宽城区",
+        "value": "220103"
+      },
+      {
+        "label": "朝阳区",
+        "value": "220104"
+      },
+      {
+        "label": "二道区",
+        "value": "220105"
+      },
+      {
+        "label": "绿园区",
+        "value": "220106"
+      },
+      {
+        "label": "双阳区",
+        "value": "220112"
+      },
+      {
+        "label": "九台区",
+        "value": "220113"
+      },
+      {
+        "label": "农安县",
+        "value": "220122"
+      },
+      {
+        "label": "长春经济技术开发区",
+        "value": "220171"
+      },
+      {
+        "label": "长春净月高新技术产业开发区",
+        "value": "220172"
+      },
+      {
+        "label": "长春高新技术产业开发区",
+        "value": "220173"
+      },
+      {
+        "label": "长春汽车经济技术开发区",
+        "value": "220174"
+      },
+      {
+        "label": "榆树市",
+        "value": "220182"
+      },
+      {
+        "label": "德惠市",
+        "value": "220183"
+      }
+    ],
+    [{
+        "label": "昌邑区",
+        "value": "220202"
+      },
+      {
+        "label": "龙潭区",
+        "value": "220203"
+      },
+      {
+        "label": "船营区",
+        "value": "220204"
+      },
+      {
+        "label": "丰满区",
+        "value": "220211"
+      },
+      {
+        "label": "永吉县",
+        "value": "220221"
+      },
+      {
+        "label": "吉林经济开发区",
+        "value": "220271"
+      },
+      {
+        "label": "吉林高新技术产业开发区",
+        "value": "220272"
+      },
+      {
+        "label": "吉林中国新加坡食品区",
+        "value": "220273"
+      },
+      {
+        "label": "蛟河市",
+        "value": "220281"
+      },
+      {
+        "label": "桦甸市",
+        "value": "220282"
+      },
+      {
+        "label": "舒兰市",
+        "value": "220283"
+      },
+      {
+        "label": "磐石市",
+        "value": "220284"
+      }
+    ],
+    [{
+        "label": "铁西区",
+        "value": "220302"
+      },
+      {
+        "label": "铁东区",
+        "value": "220303"
+      },
+      {
+        "label": "梨树县",
+        "value": "220322"
+      },
+      {
+        "label": "伊通满族自治县",
+        "value": "220323"
+      },
+      {
+        "label": "公主岭市",
+        "value": "220381"
+      },
+      {
+        "label": "双辽市",
+        "value": "220382"
+      }
+    ],
+    [{
+        "label": "龙山区",
+        "value": "220402"
+      },
+      {
+        "label": "西安区",
+        "value": "220403"
+      },
+      {
+        "label": "东丰县",
+        "value": "220421"
+      },
+      {
+        "label": "东辽县",
+        "value": "220422"
+      }
+    ],
+    [{
+        "label": "东昌区",
+        "value": "220502"
+      },
+      {
+        "label": "二道江区",
+        "value": "220503"
+      },
+      {
+        "label": "通化县",
+        "value": "220521"
+      },
+      {
+        "label": "辉南县",
+        "value": "220523"
+      },
+      {
+        "label": "柳河县",
+        "value": "220524"
+      },
+      {
+        "label": "梅河口市",
+        "value": "220581"
+      },
+      {
+        "label": "集安市",
+        "value": "220582"
+      }
+    ],
+    [{
+        "label": "浑江区",
+        "value": "220602"
+      },
+      {
+        "label": "江源区",
+        "value": "220605"
+      },
+      {
+        "label": "抚松县",
+        "value": "220621"
+      },
+      {
+        "label": "靖宇县",
+        "value": "220622"
+      },
+      {
+        "label": "长白朝鲜族自治县",
+        "value": "220623"
+      },
+      {
+        "label": "临江市",
+        "value": "220681"
+      }
+    ],
+    [{
+        "label": "宁江区",
+        "value": "220702"
+      },
+      {
+        "label": "前郭尔罗斯蒙古族自治县",
+        "value": "220721"
+      },
+      {
+        "label": "长岭县",
+        "value": "220722"
+      },
+      {
+        "label": "乾安县",
+        "value": "220723"
+      },
+      {
+        "label": "吉林松原经济开发区",
+        "value": "220771"
+      },
+      {
+        "label": "扶余市",
+        "value": "220781"
+      }
+    ],
+    [{
+        "label": "洮北区",
+        "value": "220802"
+      },
+      {
+        "label": "镇赉县",
+        "value": "220821"
+      },
+      {
+        "label": "通榆县",
+        "value": "220822"
+      },
+      {
+        "label": "吉林白城经济开发区",
+        "value": "220871"
+      },
+      {
+        "label": "洮南市",
+        "value": "220881"
+      },
+      {
+        "label": "大安市",
+        "value": "220882"
+      }
+    ],
+    [{
+        "label": "延吉市",
+        "value": "222401"
+      },
+      {
+        "label": "图们市",
+        "value": "222402"
+      },
+      {
+        "label": "敦化市",
+        "value": "222403"
+      },
+      {
+        "label": "珲春市",
+        "value": "222404"
+      },
+      {
+        "label": "龙井市",
+        "value": "222405"
+      },
+      {
+        "label": "和龙市",
+        "value": "222406"
+      },
+      {
+        "label": "汪清县",
+        "value": "222424"
+      },
+      {
+        "label": "安图县",
+        "value": "222426"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "道里区",
+        "value": "230102"
+      },
+      {
+        "label": "南岗区",
+        "value": "230103"
+      },
+      {
+        "label": "道外区",
+        "value": "230104"
+      },
+      {
+        "label": "平房区",
+        "value": "230108"
+      },
+      {
+        "label": "松北区",
+        "value": "230109"
+      },
+      {
+        "label": "香坊区",
+        "value": "230110"
+      },
+      {
+        "label": "呼兰区",
+        "value": "230111"
+      },
+      {
+        "label": "阿城区",
+        "value": "230112"
+      },
+      {
+        "label": "双城区",
+        "value": "230113"
+      },
+      {
+        "label": "依兰县",
+        "value": "230123"
+      },
+      {
+        "label": "方正县",
+        "value": "230124"
+      },
+      {
+        "label": "宾县",
+        "value": "230125"
+      },
+      {
+        "label": "巴彦县",
+        "value": "230126"
+      },
+      {
+        "label": "木兰县",
+        "value": "230127"
+      },
+      {
+        "label": "通河县",
+        "value": "230128"
+      },
+      {
+        "label": "延寿县",
+        "value": "230129"
+      },
+      {
+        "label": "尚志市",
+        "value": "230183"
+      },
+      {
+        "label": "五常市",
+        "value": "230184"
+      }
+    ],
+    [{
+        "label": "龙沙区",
+        "value": "230202"
+      },
+      {
+        "label": "建华区",
+        "value": "230203"
+      },
+      {
+        "label": "铁锋区",
+        "value": "230204"
+      },
+      {
+        "label": "昂昂溪区",
+        "value": "230205"
+      },
+      {
+        "label": "富拉尔基区",
+        "value": "230206"
+      },
+      {
+        "label": "碾子山区",
+        "value": "230207"
+      },
+      {
+        "label": "梅里斯达斡尔族区",
+        "value": "230208"
+      },
+      {
+        "label": "龙江县",
+        "value": "230221"
+      },
+      {
+        "label": "依安县",
+        "value": "230223"
+      },
+      {
+        "label": "泰来县",
+        "value": "230224"
+      },
+      {
+        "label": "甘南县",
+        "value": "230225"
+      },
+      {
+        "label": "富裕县",
+        "value": "230227"
+      },
+      {
+        "label": "克山县",
+        "value": "230229"
+      },
+      {
+        "label": "克东县",
+        "value": "230230"
+      },
+      {
+        "label": "拜泉县",
+        "value": "230231"
+      },
+      {
+        "label": "讷河市",
+        "value": "230281"
+      }
+    ],
+    [{
+        "label": "鸡冠区",
+        "value": "230302"
+      },
+      {
+        "label": "恒山区",
+        "value": "230303"
+      },
+      {
+        "label": "滴道区",
+        "value": "230304"
+      },
+      {
+        "label": "梨树区",
+        "value": "230305"
+      },
+      {
+        "label": "城子河区",
+        "value": "230306"
+      },
+      {
+        "label": "麻山区",
+        "value": "230307"
+      },
+      {
+        "label": "鸡东县",
+        "value": "230321"
+      },
+      {
+        "label": "虎林市",
+        "value": "230381"
+      },
+      {
+        "label": "密山市",
+        "value": "230382"
+      }
+    ],
+    [{
+        "label": "向阳区",
+        "value": "230402"
+      },
+      {
+        "label": "工农区",
+        "value": "230403"
+      },
+      {
+        "label": "南山区",
+        "value": "230404"
+      },
+      {
+        "label": "兴安区",
+        "value": "230405"
+      },
+      {
+        "label": "东山区",
+        "value": "230406"
+      },
+      {
+        "label": "兴山区",
+        "value": "230407"
+      },
+      {
+        "label": "萝北县",
+        "value": "230421"
+      },
+      {
+        "label": "绥滨县",
+        "value": "230422"
+      }
+    ],
+    [{
+        "label": "尖山区",
+        "value": "230502"
+      },
+      {
+        "label": "岭东区",
+        "value": "230503"
+      },
+      {
+        "label": "四方台区",
+        "value": "230505"
+      },
+      {
+        "label": "宝山区",
+        "value": "230506"
+      },
+      {
+        "label": "集贤县",
+        "value": "230521"
+      },
+      {
+        "label": "友谊县",
+        "value": "230522"
+      },
+      {
+        "label": "宝清县",
+        "value": "230523"
+      },
+      {
+        "label": "饶河县",
+        "value": "230524"
+      }
+    ],
+    [{
+        "label": "萨尔图区",
+        "value": "230602"
+      },
+      {
+        "label": "龙凤区",
+        "value": "230603"
+      },
+      {
+        "label": "让胡路区",
+        "value": "230604"
+      },
+      {
+        "label": "红岗区",
+        "value": "230605"
+      },
+      {
+        "label": "大同区",
+        "value": "230606"
+      },
+      {
+        "label": "肇州县",
+        "value": "230621"
+      },
+      {
+        "label": "肇源县",
+        "value": "230622"
+      },
+      {
+        "label": "林甸县",
+        "value": "230623"
+      },
+      {
+        "label": "杜尔伯特蒙古族自治县",
+        "value": "230624"
+      },
+      {
+        "label": "大庆高新技术产业开发区",
+        "value": "230671"
+      }
+    ],
+    [{
+        "label": "伊春区",
+        "value": "230702"
+      },
+      {
+        "label": "南岔区",
+        "value": "230703"
+      },
+      {
+        "label": "友好区",
+        "value": "230704"
+      },
+      {
+        "label": "西林区",
+        "value": "230705"
+      },
+      {
+        "label": "翠峦区",
+        "value": "230706"
+      },
+      {
+        "label": "新青区",
+        "value": "230707"
+      },
+      {
+        "label": "美溪区",
+        "value": "230708"
+      },
+      {
+        "label": "金山屯区",
+        "value": "230709"
+      },
+      {
+        "label": "五营区",
+        "value": "230710"
+      },
+      {
+        "label": "乌马河区",
+        "value": "230711"
+      },
+      {
+        "label": "汤旺河区",
+        "value": "230712"
+      },
+      {
+        "label": "带岭区",
+        "value": "230713"
+      },
+      {
+        "label": "乌伊岭区",
+        "value": "230714"
+      },
+      {
+        "label": "红星区",
+        "value": "230715"
+      },
+      {
+        "label": "上甘岭区",
+        "value": "230716"
+      },
+      {
+        "label": "嘉荫县",
+        "value": "230722"
+      },
+      {
+        "label": "铁力市",
+        "value": "230781"
+      }
+    ],
+    [{
+        "label": "向阳区",
+        "value": "230803"
+      },
+      {
+        "label": "前进区",
+        "value": "230804"
+      },
+      {
+        "label": "东风区",
+        "value": "230805"
+      },
+      {
+        "label": "郊区",
+        "value": "230811"
+      },
+      {
+        "label": "桦南县",
+        "value": "230822"
+      },
+      {
+        "label": "桦川县",
+        "value": "230826"
+      },
+      {
+        "label": "汤原县",
+        "value": "230828"
+      },
+      {
+        "label": "同江市",
+        "value": "230881"
+      },
+      {
+        "label": "富锦市",
+        "value": "230882"
+      },
+      {
+        "label": "抚远市",
+        "value": "230883"
+      }
+    ],
+    [{
+        "label": "新兴区",
+        "value": "230902"
+      },
+      {
+        "label": "桃山区",
+        "value": "230903"
+      },
+      {
+        "label": "茄子河区",
+        "value": "230904"
+      },
+      {
+        "label": "勃利县",
+        "value": "230921"
+      }
+    ],
+    [{
+        "label": "东安区",
+        "value": "231002"
+      },
+      {
+        "label": "阳明区",
+        "value": "231003"
+      },
+      {
+        "label": "爱民区",
+        "value": "231004"
+      },
+      {
+        "label": "西安区",
+        "value": "231005"
+      },
+      {
+        "label": "林口县",
+        "value": "231025"
+      },
+      {
+        "label": "牡丹江经济技术开发区",
+        "value": "231071"
+      },
+      {
+        "label": "绥芬河市",
+        "value": "231081"
+      },
+      {
+        "label": "海林市",
+        "value": "231083"
+      },
+      {
+        "label": "宁安市",
+        "value": "231084"
+      },
+      {
+        "label": "穆棱市",
+        "value": "231085"
+      },
+      {
+        "label": "东宁市",
+        "value": "231086"
+      }
+    ],
+    [{
+        "label": "爱辉区",
+        "value": "231102"
+      },
+      {
+        "label": "嫩江县",
+        "value": "231121"
+      },
+      {
+        "label": "逊克县",
+        "value": "231123"
+      },
+      {
+        "label": "孙吴县",
+        "value": "231124"
+      },
+      {
+        "label": "北安市",
+        "value": "231181"
+      },
+      {
+        "label": "五大连池市",
+        "value": "231182"
+      }
+    ],
+    [{
+        "label": "北林区",
+        "value": "231202"
+      },
+      {
+        "label": "望奎县",
+        "value": "231221"
+      },
+      {
+        "label": "兰西县",
+        "value": "231222"
+      },
+      {
+        "label": "青冈县",
+        "value": "231223"
+      },
+      {
+        "label": "庆安县",
+        "value": "231224"
+      },
+      {
+        "label": "明水县",
+        "value": "231225"
+      },
+      {
+        "label": "绥棱县",
+        "value": "231226"
+      },
+      {
+        "label": "安达市",
+        "value": "231281"
+      },
+      {
+        "label": "肇东市",
+        "value": "231282"
+      },
+      {
+        "label": "海伦市",
+        "value": "231283"
+      }
+    ],
+    [{
+        "label": "加格达奇区",
+        "value": "232701"
+      },
+      {
+        "label": "松岭区",
+        "value": "232702"
+      },
+      {
+        "label": "新林区",
+        "value": "232703"
+      },
+      {
+        "label": "呼中区",
+        "value": "232704"
+      },
+      {
+        "label": "呼玛县",
+        "value": "232721"
+      },
+      {
+        "label": "塔河县",
+        "value": "232722"
+      },
+      {
+        "label": "漠河县",
+        "value": "232723"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "黄浦区",
+        "value": "310101"
+      },
+      {
+        "label": "徐汇区",
+        "value": "310104"
+      },
+      {
+        "label": "长宁区",
+        "value": "310105"
+      },
+      {
+        "label": "静安区",
+        "value": "310106"
+      },
+      {
+        "label": "普陀区",
+        "value": "310107"
+      },
+      {
+        "label": "虹口区",
+        "value": "310109"
+      },
+      {
+        "label": "杨浦区",
+        "value": "310110"
+      },
+      {
+        "label": "闵行区",
+        "value": "310112"
+      },
+      {
+        "label": "宝山区",
+        "value": "310113"
+      },
+      {
+        "label": "嘉定区",
+        "value": "310114"
+      },
+      {
+        "label": "浦东新区",
+        "value": "310115"
+      },
+      {
+        "label": "金山区",
+        "value": "310116"
+      },
+      {
+        "label": "松江区",
+        "value": "310117"
+      },
+      {
+        "label": "青浦区",
+        "value": "310118"
+      },
+      {
+        "label": "奉贤区",
+        "value": "310120"
+      },
+      {
+        "label": "崇明区",
+        "value": "310151"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "玄武区",
+        "value": "320102"
+      },
+      {
+        "label": "秦淮区",
+        "value": "320104"
+      },
+      {
+        "label": "建邺区",
+        "value": "320105"
+      },
+      {
+        "label": "鼓楼区",
+        "value": "320106"
+      },
+      {
+        "label": "浦口区",
+        "value": "320111"
+      },
+      {
+        "label": "栖霞区",
+        "value": "320113"
+      },
+      {
+        "label": "雨花台区",
+        "value": "320114"
+      },
+      {
+        "label": "江宁区",
+        "value": "320115"
+      },
+      {
+        "label": "六合区",
+        "value": "320116"
+      },
+      {
+        "label": "溧水区",
+        "value": "320117"
+      },
+      {
+        "label": "高淳区",
+        "value": "320118"
+      }
+    ],
+    [{
+        "label": "锡山区",
+        "value": "320205"
+      },
+      {
+        "label": "惠山区",
+        "value": "320206"
+      },
+      {
+        "label": "滨湖区",
+        "value": "320211"
+      },
+      {
+        "label": "梁溪区",
+        "value": "320213"
+      },
+      {
+        "label": "新吴区",
+        "value": "320214"
+      },
+      {
+        "label": "江阴市",
+        "value": "320281"
+      },
+      {
+        "label": "宜兴市",
+        "value": "320282"
+      }
+    ],
+    [{
+        "label": "鼓楼区",
+        "value": "320302"
+      },
+      {
+        "label": "云龙区",
+        "value": "320303"
+      },
+      {
+        "label": "贾汪区",
+        "value": "320305"
+      },
+      {
+        "label": "泉山区",
+        "value": "320311"
+      },
+      {
+        "label": "铜山区",
+        "value": "320312"
+      },
+      {
+        "label": "丰县",
+        "value": "320321"
+      },
+      {
+        "label": "沛县",
+        "value": "320322"
+      },
+      {
+        "label": "睢宁县",
+        "value": "320324"
+      },
+      {
+        "label": "徐州经济技术开发区",
+        "value": "320371"
+      },
+      {
+        "label": "新沂市",
+        "value": "320381"
+      },
+      {
+        "label": "邳州市",
+        "value": "320382"
+      }
+    ],
+    [{
+        "label": "天宁区",
+        "value": "320402"
+      },
+      {
+        "label": "钟楼区",
+        "value": "320404"
+      },
+      {
+        "label": "新北区",
+        "value": "320411"
+      },
+      {
+        "label": "武进区",
+        "value": "320412"
+      },
+      {
+        "label": "金坛区",
+        "value": "320413"
+      },
+      {
+        "label": "溧阳市",
+        "value": "320481"
+      }
+    ],
+    [{
+        "label": "虎丘区",
+        "value": "320505"
+      },
+      {
+        "label": "吴中区",
+        "value": "320506"
+      },
+      {
+        "label": "相城区",
+        "value": "320507"
+      },
+      {
+        "label": "姑苏区",
+        "value": "320508"
+      },
+      {
+        "label": "吴江区",
+        "value": "320509"
+      },
+      {
+        "label": "苏州工业园区",
+        "value": "320571"
+      },
+      {
+        "label": "常熟市",
+        "value": "320581"
+      },
+      {
+        "label": "张家港市",
+        "value": "320582"
+      },
+      {
+        "label": "昆山市",
+        "value": "320583"
+      },
+      {
+        "label": "太仓市",
+        "value": "320585"
+      }
+    ],
+    [{
+        "label": "崇川区",
+        "value": "320602"
+      },
+      {
+        "label": "港闸区",
+        "value": "320611"
+      },
+      {
+        "label": "通州区",
+        "value": "320612"
+      },
+      {
+        "label": "海安县",
+        "value": "320621"
+      },
+      {
+        "label": "如东县",
+        "value": "320623"
+      },
+      {
+        "label": "南通经济技术开发区",
+        "value": "320671"
+      },
+      {
+        "label": "启东市",
+        "value": "320681"
+      },
+      {
+        "label": "如皋市",
+        "value": "320682"
+      },
+      {
+        "label": "海门市",
+        "value": "320684"
+      }
+    ],
+    [{
+        "label": "连云区",
+        "value": "320703"
+      },
+      {
+        "label": "海州区",
+        "value": "320706"
+      },
+      {
+        "label": "赣榆区",
+        "value": "320707"
+      },
+      {
+        "label": "东海县",
+        "value": "320722"
+      },
+      {
+        "label": "灌云县",
+        "value": "320723"
+      },
+      {
+        "label": "灌南县",
+        "value": "320724"
+      },
+      {
+        "label": "连云港经济技术开发区",
+        "value": "320771"
+      },
+      {
+        "label": "连云港高新技术产业开发区",
+        "value": "320772"
+      }
+    ],
+    [{
+        "label": "淮安区",
+        "value": "320803"
+      },
+      {
+        "label": "淮阴区",
+        "value": "320804"
+      },
+      {
+        "label": "清江浦区",
+        "value": "320812"
+      },
+      {
+        "label": "洪泽区",
+        "value": "320813"
+      },
+      {
+        "label": "涟水县",
+        "value": "320826"
+      },
+      {
+        "label": "盱眙县",
+        "value": "320830"
+      },
+      {
+        "label": "金湖县",
+        "value": "320831"
+      },
+      {
+        "label": "淮安经济技术开发区",
+        "value": "320871"
+      }
+    ],
+    [{
+        "label": "亭湖区",
+        "value": "320902"
+      },
+      {
+        "label": "盐都区",
+        "value": "320903"
+      },
+      {
+        "label": "大丰区",
+        "value": "320904"
+      },
+      {
+        "label": "响水县",
+        "value": "320921"
+      },
+      {
+        "label": "滨海县",
+        "value": "320922"
+      },
+      {
+        "label": "阜宁县",
+        "value": "320923"
+      },
+      {
+        "label": "射阳县",
+        "value": "320924"
+      },
+      {
+        "label": "建湖县",
+        "value": "320925"
+      },
+      {
+        "label": "盐城经济技术开发区",
+        "value": "320971"
+      },
+      {
+        "label": "东台市",
+        "value": "320981"
+      }
+    ],
+    [{
+        "label": "广陵区",
+        "value": "321002"
+      },
+      {
+        "label": "邗江区",
+        "value": "321003"
+      },
+      {
+        "label": "江都区",
+        "value": "321012"
+      },
+      {
+        "label": "宝应县",
+        "value": "321023"
+      },
+      {
+        "label": "扬州经济技术开发区",
+        "value": "321071"
+      },
+      {
+        "label": "仪征市",
+        "value": "321081"
+      },
+      {
+        "label": "高邮市",
+        "value": "321084"
+      }
+    ],
+    [{
+        "label": "京口区",
+        "value": "321102"
+      },
+      {
+        "label": "润州区",
+        "value": "321111"
+      },
+      {
+        "label": "丹徒区",
+        "value": "321112"
+      },
+      {
+        "label": "镇江新区",
+        "value": "321171"
+      },
+      {
+        "label": "丹阳市",
+        "value": "321181"
+      },
+      {
+        "label": "扬中市",
+        "value": "321182"
+      },
+      {
+        "label": "句容市",
+        "value": "321183"
+      }
+    ],
+    [{
+        "label": "海陵区",
+        "value": "321202"
+      },
+      {
+        "label": "高港区",
+        "value": "321203"
+      },
+      {
+        "label": "姜堰区",
+        "value": "321204"
+      },
+      {
+        "label": "泰州医药高新技术产业开发区",
+        "value": "321271"
+      },
+      {
+        "label": "兴化市",
+        "value": "321281"
+      },
+      {
+        "label": "靖江市",
+        "value": "321282"
+      },
+      {
+        "label": "泰兴市",
+        "value": "321283"
+      }
+    ],
+    [{
+        "label": "宿城区",
+        "value": "321302"
+      },
+      {
+        "label": "宿豫区",
+        "value": "321311"
+      },
+      {
+        "label": "沭阳县",
+        "value": "321322"
+      },
+      {
+        "label": "泗阳县",
+        "value": "321323"
+      },
+      {
+        "label": "泗洪县",
+        "value": "321324"
+      },
+      {
+        "label": "宿迁经济技术开发区",
+        "value": "321371"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "上城区",
+        "value": "330102"
+      },
+      {
+        "label": "下城区",
+        "value": "330103"
+      },
+      {
+        "label": "江干区",
+        "value": "330104"
+      },
+      {
+        "label": "拱墅区",
+        "value": "330105"
+      },
+      {
+        "label": "西湖区",
+        "value": "330106"
+      },
+      {
+        "label": "滨江区",
+        "value": "330108"
+      },
+      {
+        "label": "萧山区",
+        "value": "330109"
+      },
+      {
+        "label": "余杭区",
+        "value": "330110"
+      },
+      {
+        "label": "富阳区",
+        "value": "330111"
+      },
+      {
+        "label": "临安区",
+        "value": "330112"
+      },
+      {
+        "label": "桐庐县",
+        "value": "330122"
+      },
+      {
+        "label": "淳安县",
+        "value": "330127"
+      },
+      {
+        "label": "建德市",
+        "value": "330182"
+      }
+    ],
+    [{
+        "label": "海曙区",
+        "value": "330203"
+      },
+      {
+        "label": "江北区",
+        "value": "330205"
+      },
+      {
+        "label": "北仑区",
+        "value": "330206"
+      },
+      {
+        "label": "镇海区",
+        "value": "330211"
+      },
+      {
+        "label": "鄞州区",
+        "value": "330212"
+      },
+      {
+        "label": "奉化区",
+        "value": "330213"
+      },
+      {
+        "label": "象山县",
+        "value": "330225"
+      },
+      {
+        "label": "宁海县",
+        "value": "330226"
+      },
+      {
+        "label": "余姚市",
+        "value": "330281"
+      },
+      {
+        "label": "慈溪市",
+        "value": "330282"
+      }
+    ],
+    [{
+        "label": "鹿城区",
+        "value": "330302"
+      },
+      {
+        "label": "龙湾区",
+        "value": "330303"
+      },
+      {
+        "label": "瓯海区",
+        "value": "330304"
+      },
+      {
+        "label": "洞头区",
+        "value": "330305"
+      },
+      {
+        "label": "永嘉县",
+        "value": "330324"
+      },
+      {
+        "label": "平阳县",
+        "value": "330326"
+      },
+      {
+        "label": "苍南县",
+        "value": "330327"
+      },
+      {
+        "label": "文成县",
+        "value": "330328"
+      },
+      {
+        "label": "泰顺县",
+        "value": "330329"
+      },
+      {
+        "label": "温州经济技术开发区",
+        "value": "330371"
+      },
+      {
+        "label": "瑞安市",
+        "value": "330381"
+      },
+      {
+        "label": "乐清市",
+        "value": "330382"
+      }
+    ],
+    [{
+        "label": "南湖区",
+        "value": "330402"
+      },
+      {
+        "label": "秀洲区",
+        "value": "330411"
+      },
+      {
+        "label": "嘉善县",
+        "value": "330421"
+      },
+      {
+        "label": "海盐县",
+        "value": "330424"
+      },
+      {
+        "label": "海宁市",
+        "value": "330481"
+      },
+      {
+        "label": "平湖市",
+        "value": "330482"
+      },
+      {
+        "label": "桐乡市",
+        "value": "330483"
+      }
+    ],
+    [{
+        "label": "吴兴区",
+        "value": "330502"
+      },
+      {
+        "label": "南浔区",
+        "value": "330503"
+      },
+      {
+        "label": "德清县",
+        "value": "330521"
+      },
+      {
+        "label": "长兴县",
+        "value": "330522"
+      },
+      {
+        "label": "安吉县",
+        "value": "330523"
+      }
+    ],
+    [{
+        "label": "越城区",
+        "value": "330602"
+      },
+      {
+        "label": "柯桥区",
+        "value": "330603"
+      },
+      {
+        "label": "上虞区",
+        "value": "330604"
+      },
+      {
+        "label": "新昌县",
+        "value": "330624"
+      },
+      {
+        "label": "诸暨市",
+        "value": "330681"
+      },
+      {
+        "label": "嵊州市",
+        "value": "330683"
+      }
+    ],
+    [{
+        "label": "婺城区",
+        "value": "330702"
+      },
+      {
+        "label": "金东区",
+        "value": "330703"
+      },
+      {
+        "label": "武义县",
+        "value": "330723"
+      },
+      {
+        "label": "浦江县",
+        "value": "330726"
+      },
+      {
+        "label": "磐安县",
+        "value": "330727"
+      },
+      {
+        "label": "兰溪市",
+        "value": "330781"
+      },
+      {
+        "label": "义乌市",
+        "value": "330782"
+      },
+      {
+        "label": "东阳市",
+        "value": "330783"
+      },
+      {
+        "label": "永康市",
+        "value": "330784"
+      }
+    ],
+    [{
+        "label": "柯城区",
+        "value": "330802"
+      },
+      {
+        "label": "衢江区",
+        "value": "330803"
+      },
+      {
+        "label": "常山县",
+        "value": "330822"
+      },
+      {
+        "label": "开化县",
+        "value": "330824"
+      },
+      {
+        "label": "龙游县",
+        "value": "330825"
+      },
+      {
+        "label": "江山市",
+        "value": "330881"
+      }
+    ],
+    [{
+        "label": "定海区",
+        "value": "330902"
+      },
+      {
+        "label": "普陀区",
+        "value": "330903"
+      },
+      {
+        "label": "岱山县",
+        "value": "330921"
+      },
+      {
+        "label": "嵊泗县",
+        "value": "330922"
+      }
+    ],
+    [{
+        "label": "椒江区",
+        "value": "331002"
+      },
+      {
+        "label": "黄岩区",
+        "value": "331003"
+      },
+      {
+        "label": "路桥区",
+        "value": "331004"
+      },
+      {
+        "label": "三门县",
+        "value": "331022"
+      },
+      {
+        "label": "天台县",
+        "value": "331023"
+      },
+      {
+        "label": "仙居县",
+        "value": "331024"
+      },
+      {
+        "label": "温岭市",
+        "value": "331081"
+      },
+      {
+        "label": "临海市",
+        "value": "331082"
+      },
+      {
+        "label": "玉环市",
+        "value": "331083"
+      }
+    ],
+    [{
+        "label": "莲都区",
+        "value": "331102"
+      },
+      {
+        "label": "青田县",
+        "value": "331121"
+      },
+      {
+        "label": "缙云县",
+        "value": "331122"
+      },
+      {
+        "label": "遂昌县",
+        "value": "331123"
+      },
+      {
+        "label": "松阳县",
+        "value": "331124"
+      },
+      {
+        "label": "云和县",
+        "value": "331125"
+      },
+      {
+        "label": "庆元县",
+        "value": "331126"
+      },
+      {
+        "label": "景宁畲族自治县",
+        "value": "331127"
+      },
+      {
+        "label": "龙泉市",
+        "value": "331181"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "瑶海区",
+        "value": "340102"
+      },
+      {
+        "label": "庐阳区",
+        "value": "340103"
+      },
+      {
+        "label": "蜀山区",
+        "value": "340104"
+      },
+      {
+        "label": "包河区",
+        "value": "340111"
+      },
+      {
+        "label": "长丰县",
+        "value": "340121"
+      },
+      {
+        "label": "肥东县",
+        "value": "340122"
+      },
+      {
+        "label": "肥西县",
+        "value": "340123"
+      },
+      {
+        "label": "庐江县",
+        "value": "340124"
+      },
+      {
+        "label": "合肥高新技术产业开发区",
+        "value": "340171"
+      },
+      {
+        "label": "合肥经济技术开发区",
+        "value": "340172"
+      },
+      {
+        "label": "合肥新站高新技术产业开发区",
+        "value": "340173"
+      },
+      {
+        "label": "巢湖市",
+        "value": "340181"
+      }
+    ],
+    [{
+        "label": "镜湖区",
+        "value": "340202"
+      },
+      {
+        "label": "弋江区",
+        "value": "340203"
+      },
+      {
+        "label": "鸠江区",
+        "value": "340207"
+      },
+      {
+        "label": "三山区",
+        "value": "340208"
+      },
+      {
+        "label": "芜湖县",
+        "value": "340221"
+      },
+      {
+        "label": "繁昌县",
+        "value": "340222"
+      },
+      {
+        "label": "南陵县",
+        "value": "340223"
+      },
+      {
+        "label": "无为县",
+        "value": "340225"
+      },
+      {
+        "label": "芜湖经济技术开发区",
+        "value": "340271"
+      },
+      {
+        "label": "安徽芜湖长江大桥经济开发区",
+        "value": "340272"
+      }
+    ],
+    [{
+        "label": "龙子湖区",
+        "value": "340302"
+      },
+      {
+        "label": "蚌山区",
+        "value": "340303"
+      },
+      {
+        "label": "禹会区",
+        "value": "340304"
+      },
+      {
+        "label": "淮上区",
+        "value": "340311"
+      },
+      {
+        "label": "怀远县",
+        "value": "340321"
+      },
+      {
+        "label": "五河县",
+        "value": "340322"
+      },
+      {
+        "label": "固镇县",
+        "value": "340323"
+      },
+      {
+        "label": "蚌埠市高新技术开发区",
+        "value": "340371"
+      },
+      {
+        "label": "蚌埠市经济开发区",
+        "value": "340372"
+      }
+    ],
+    [{
+        "label": "大通区",
+        "value": "340402"
+      },
+      {
+        "label": "田家庵区",
+        "value": "340403"
+      },
+      {
+        "label": "谢家集区",
+        "value": "340404"
+      },
+      {
+        "label": "八公山区",
+        "value": "340405"
+      },
+      {
+        "label": "潘集区",
+        "value": "340406"
+      },
+      {
+        "label": "凤台县",
+        "value": "340421"
+      },
+      {
+        "label": "寿县",
+        "value": "340422"
+      }
+    ],
+    [{
+        "label": "花山区",
+        "value": "340503"
+      },
+      {
+        "label": "雨山区",
+        "value": "340504"
+      },
+      {
+        "label": "博望区",
+        "value": "340506"
+      },
+      {
+        "label": "当涂县",
+        "value": "340521"
+      },
+      {
+        "label": "含山县",
+        "value": "340522"
+      },
+      {
+        "label": "和县",
+        "value": "340523"
+      }
+    ],
+    [{
+        "label": "杜集区",
+        "value": "340602"
+      },
+      {
+        "label": "相山区",
+        "value": "340603"
+      },
+      {
+        "label": "烈山区",
+        "value": "340604"
+      },
+      {
+        "label": "濉溪县",
+        "value": "340621"
+      }
+    ],
+    [{
+        "label": "铜官区",
+        "value": "340705"
+      },
+      {
+        "label": "义安区",
+        "value": "340706"
+      },
+      {
+        "label": "郊区",
+        "value": "340711"
+      },
+      {
+        "label": "枞阳县",
+        "value": "340722"
+      }
+    ],
+    [{
+        "label": "迎江区",
+        "value": "340802"
+      },
+      {
+        "label": "大观区",
+        "value": "340803"
+      },
+      {
+        "label": "宜秀区",
+        "value": "340811"
+      },
+      {
+        "label": "怀宁县",
+        "value": "340822"
+      },
+      {
+        "label": "潜山县",
+        "value": "340824"
+      },
+      {
+        "label": "太湖县",
+        "value": "340825"
+      },
+      {
+        "label": "宿松县",
+        "value": "340826"
+      },
+      {
+        "label": "望江县",
+        "value": "340827"
+      },
+      {
+        "label": "岳西县",
+        "value": "340828"
+      },
+      {
+        "label": "安徽安庆经济开发区",
+        "value": "340871"
+      },
+      {
+        "label": "桐城市",
+        "value": "340881"
+      }
+    ],
+    [{
+        "label": "屯溪区",
+        "value": "341002"
+      },
+      {
+        "label": "黄山区",
+        "value": "341003"
+      },
+      {
+        "label": "徽州区",
+        "value": "341004"
+      },
+      {
+        "label": "歙县",
+        "value": "341021"
+      },
+      {
+        "label": "休宁县",
+        "value": "341022"
+      },
+      {
+        "label": "黟县",
+        "value": "341023"
+      },
+      {
+        "label": "祁门县",
+        "value": "341024"
+      }
+    ],
+    [{
+        "label": "琅琊区",
+        "value": "341102"
+      },
+      {
+        "label": "南谯区",
+        "value": "341103"
+      },
+      {
+        "label": "来安县",
+        "value": "341122"
+      },
+      {
+        "label": "全椒县",
+        "value": "341124"
+      },
+      {
+        "label": "定远县",
+        "value": "341125"
+      },
+      {
+        "label": "凤阳县",
+        "value": "341126"
+      },
+      {
+        "label": "苏滁现代产业园",
+        "value": "341171"
+      },
+      {
+        "label": "滁州经济技术开发区",
+        "value": "341172"
+      },
+      {
+        "label": "天长市",
+        "value": "341181"
+      },
+      {
+        "label": "明光市",
+        "value": "341182"
+      }
+    ],
+    [{
+        "label": "颍州区",
+        "value": "341202"
+      },
+      {
+        "label": "颍东区",
+        "value": "341203"
+      },
+      {
+        "label": "颍泉区",
+        "value": "341204"
+      },
+      {
+        "label": "临泉县",
+        "value": "341221"
+      },
+      {
+        "label": "太和县",
+        "value": "341222"
+      },
+      {
+        "label": "阜南县",
+        "value": "341225"
+      },
+      {
+        "label": "颍上县",
+        "value": "341226"
+      },
+      {
+        "label": "阜阳合肥现代产业园区",
+        "value": "341271"
+      },
+      {
+        "label": "阜阳经济技术开发区",
+        "value": "341272"
+      },
+      {
+        "label": "界首市",
+        "value": "341282"
+      }
+    ],
+    [{
+        "label": "埇桥区",
+        "value": "341302"
+      },
+      {
+        "label": "砀山县",
+        "value": "341321"
+      },
+      {
+        "label": "萧县",
+        "value": "341322"
+      },
+      {
+        "label": "灵璧县",
+        "value": "341323"
+      },
+      {
+        "label": "泗县",
+        "value": "341324"
+      },
+      {
+        "label": "宿州马鞍山现代产业园区",
+        "value": "341371"
+      },
+      {
+        "label": "宿州经济技术开发区",
+        "value": "341372"
+      }
+    ],
+    [{
+        "label": "金安区",
+        "value": "341502"
+      },
+      {
+        "label": "裕安区",
+        "value": "341503"
+      },
+      {
+        "label": "叶集区",
+        "value": "341504"
+      },
+      {
+        "label": "霍邱县",
+        "value": "341522"
+      },
+      {
+        "label": "舒城县",
+        "value": "341523"
+      },
+      {
+        "label": "金寨县",
+        "value": "341524"
+      },
+      {
+        "label": "霍山县",
+        "value": "341525"
+      }
+    ],
+    [{
+        "label": "谯城区",
+        "value": "341602"
+      },
+      {
+        "label": "涡阳县",
+        "value": "341621"
+      },
+      {
+        "label": "蒙城县",
+        "value": "341622"
+      },
+      {
+        "label": "利辛县",
+        "value": "341623"
+      }
+    ],
+    [{
+        "label": "贵池区",
+        "value": "341702"
+      },
+      {
+        "label": "东至县",
+        "value": "341721"
+      },
+      {
+        "label": "石台县",
+        "value": "341722"
+      },
+      {
+        "label": "青阳县",
+        "value": "341723"
+      }
+    ],
+    [{
+        "label": "宣州区",
+        "value": "341802"
+      },
+      {
+        "label": "郎溪县",
+        "value": "341821"
+      },
+      {
+        "label": "广德县",
+        "value": "341822"
+      },
+      {
+        "label": "泾县",
+        "value": "341823"
+      },
+      {
+        "label": "绩溪县",
+        "value": "341824"
+      },
+      {
+        "label": "旌德县",
+        "value": "341825"
+      },
+      {
+        "label": "宣城市经济开发区",
+        "value": "341871"
+      },
+      {
+        "label": "宁国市",
+        "value": "341881"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "鼓楼区",
+        "value": "350102"
+      },
+      {
+        "label": "台江区",
+        "value": "350103"
+      },
+      {
+        "label": "仓山区",
+        "value": "350104"
+      },
+      {
+        "label": "马尾区",
+        "value": "350105"
+      },
+      {
+        "label": "晋安区",
+        "value": "350111"
+      },
+      {
+        "label": "闽侯县",
+        "value": "350121"
+      },
+      {
+        "label": "连江县",
+        "value": "350122"
+      },
+      {
+        "label": "罗源县",
+        "value": "350123"
+      },
+      {
+        "label": "闽清县",
+        "value": "350124"
+      },
+      {
+        "label": "永泰县",
+        "value": "350125"
+      },
+      {
+        "label": "平潭县",
+        "value": "350128"
+      },
+      {
+        "label": "福清市",
+        "value": "350181"
+      },
+      {
+        "label": "长乐市",
+        "value": "350182"
+      }
+    ],
+    [{
+        "label": "思明区",
+        "value": "350203"
+      },
+      {
+        "label": "海沧区",
+        "value": "350205"
+      },
+      {
+        "label": "湖里区",
+        "value": "350206"
+      },
+      {
+        "label": "集美区",
+        "value": "350211"
+      },
+      {
+        "label": "同安区",
+        "value": "350212"
+      },
+      {
+        "label": "翔安区",
+        "value": "350213"
+      }
+    ],
+    [{
+        "label": "城厢区",
+        "value": "350302"
+      },
+      {
+        "label": "涵江区",
+        "value": "350303"
+      },
+      {
+        "label": "荔城区",
+        "value": "350304"
+      },
+      {
+        "label": "秀屿区",
+        "value": "350305"
+      },
+      {
+        "label": "仙游县",
+        "value": "350322"
+      }
+    ],
+    [{
+        "label": "梅列区",
+        "value": "350402"
+      },
+      {
+        "label": "三元区",
+        "value": "350403"
+      },
+      {
+        "label": "明溪县",
+        "value": "350421"
+      },
+      {
+        "label": "清流县",
+        "value": "350423"
+      },
+      {
+        "label": "宁化县",
+        "value": "350424"
+      },
+      {
+        "label": "大田县",
+        "value": "350425"
+      },
+      {
+        "label": "尤溪县",
+        "value": "350426"
+      },
+      {
+        "label": "沙县",
+        "value": "350427"
+      },
+      {
+        "label": "将乐县",
+        "value": "350428"
+      },
+      {
+        "label": "泰宁县",
+        "value": "350429"
+      },
+      {
+        "label": "建宁县",
+        "value": "350430"
+      },
+      {
+        "label": "永安市",
+        "value": "350481"
+      }
+    ],
+    [{
+        "label": "鲤城区",
+        "value": "350502"
+      },
+      {
+        "label": "丰泽区",
+        "value": "350503"
+      },
+      {
+        "label": "洛江区",
+        "value": "350504"
+      },
+      {
+        "label": "泉港区",
+        "value": "350505"
+      },
+      {
+        "label": "惠安县",
+        "value": "350521"
+      },
+      {
+        "label": "安溪县",
+        "value": "350524"
+      },
+      {
+        "label": "永春县",
+        "value": "350525"
+      },
+      {
+        "label": "德化县",
+        "value": "350526"
+      },
+      {
+        "label": "金门县",
+        "value": "350527"
+      },
+      {
+        "label": "石狮市",
+        "value": "350581"
+      },
+      {
+        "label": "晋江市",
+        "value": "350582"
+      },
+      {
+        "label": "南安市",
+        "value": "350583"
+      }
+    ],
+    [{
+        "label": "芗城区",
+        "value": "350602"
+      },
+      {
+        "label": "龙文区",
+        "value": "350603"
+      },
+      {
+        "label": "云霄县",
+        "value": "350622"
+      },
+      {
+        "label": "漳浦县",
+        "value": "350623"
+      },
+      {
+        "label": "诏安县",
+        "value": "350624"
+      },
+      {
+        "label": "长泰县",
+        "value": "350625"
+      },
+      {
+        "label": "东山县",
+        "value": "350626"
+      },
+      {
+        "label": "南靖县",
+        "value": "350627"
+      },
+      {
+        "label": "平和县",
+        "value": "350628"
+      },
+      {
+        "label": "华安县",
+        "value": "350629"
+      },
+      {
+        "label": "龙海市",
+        "value": "350681"
+      }
+    ],
+    [{
+        "label": "延平区",
+        "value": "350702"
+      },
+      {
+        "label": "建阳区",
+        "value": "350703"
+      },
+      {
+        "label": "顺昌县",
+        "value": "350721"
+      },
+      {
+        "label": "浦城县",
+        "value": "350722"
+      },
+      {
+        "label": "光泽县",
+        "value": "350723"
+      },
+      {
+        "label": "松溪县",
+        "value": "350724"
+      },
+      {
+        "label": "政和县",
+        "value": "350725"
+      },
+      {
+        "label": "邵武市",
+        "value": "350781"
+      },
+      {
+        "label": "武夷山市",
+        "value": "350782"
+      },
+      {
+        "label": "建瓯市",
+        "value": "350783"
+      }
+    ],
+    [{
+        "label": "新罗区",
+        "value": "350802"
+      },
+      {
+        "label": "永定区",
+        "value": "350803"
+      },
+      {
+        "label": "长汀县",
+        "value": "350821"
+      },
+      {
+        "label": "上杭县",
+        "value": "350823"
+      },
+      {
+        "label": "武平县",
+        "value": "350824"
+      },
+      {
+        "label": "连城县",
+        "value": "350825"
+      },
+      {
+        "label": "漳平市",
+        "value": "350881"
+      }
+    ],
+    [{
+        "label": "蕉城区",
+        "value": "350902"
+      },
+      {
+        "label": "霞浦县",
+        "value": "350921"
+      },
+      {
+        "label": "古田县",
+        "value": "350922"
+      },
+      {
+        "label": "屏南县",
+        "value": "350923"
+      },
+      {
+        "label": "寿宁县",
+        "value": "350924"
+      },
+      {
+        "label": "周宁县",
+        "value": "350925"
+      },
+      {
+        "label": "柘荣县",
+        "value": "350926"
+      },
+      {
+        "label": "福安市",
+        "value": "350981"
+      },
+      {
+        "label": "福鼎市",
+        "value": "350982"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "东湖区",
+        "value": "360102"
+      },
+      {
+        "label": "西湖区",
+        "value": "360103"
+      },
+      {
+        "label": "青云谱区",
+        "value": "360104"
+      },
+      {
+        "label": "湾里区",
+        "value": "360105"
+      },
+      {
+        "label": "青山湖区",
+        "value": "360111"
+      },
+      {
+        "label": "新建区",
+        "value": "360112"
+      },
+      {
+        "label": "南昌县",
+        "value": "360121"
+      },
+      {
+        "label": "安义县",
+        "value": "360123"
+      },
+      {
+        "label": "进贤县",
+        "value": "360124"
+      }
+    ],
+    [{
+        "label": "昌江区",
+        "value": "360202"
+      },
+      {
+        "label": "珠山区",
+        "value": "360203"
+      },
+      {
+        "label": "浮梁县",
+        "value": "360222"
+      },
+      {
+        "label": "乐平市",
+        "value": "360281"
+      }
+    ],
+    [{
+        "label": "安源区",
+        "value": "360302"
+      },
+      {
+        "label": "湘东区",
+        "value": "360313"
+      },
+      {
+        "label": "莲花县",
+        "value": "360321"
+      },
+      {
+        "label": "上栗县",
+        "value": "360322"
+      },
+      {
+        "label": "芦溪县",
+        "value": "360323"
+      }
+    ],
+    [{
+        "label": "濂溪区",
+        "value": "360402"
+      },
+      {
+        "label": "浔阳区",
+        "value": "360403"
+      },
+      {
+        "label": "柴桑区",
+        "value": "360404"
+      },
+      {
+        "label": "武宁县",
+        "value": "360423"
+      },
+      {
+        "label": "修水县",
+        "value": "360424"
+      },
+      {
+        "label": "永修县",
+        "value": "360425"
+      },
+      {
+        "label": "德安县",
+        "value": "360426"
+      },
+      {
+        "label": "都昌县",
+        "value": "360428"
+      },
+      {
+        "label": "湖口县",
+        "value": "360429"
+      },
+      {
+        "label": "彭泽县",
+        "value": "360430"
+      },
+      {
+        "label": "瑞昌市",
+        "value": "360481"
+      },
+      {
+        "label": "共青城市",
+        "value": "360482"
+      },
+      {
+        "label": "庐山市",
+        "value": "360483"
+      }
+    ],
+    [{
+        "label": "渝水区",
+        "value": "360502"
+      },
+      {
+        "label": "分宜县",
+        "value": "360521"
+      }
+    ],
+    [{
+        "label": "月湖区",
+        "value": "360602"
+      },
+      {
+        "label": "余江县",
+        "value": "360622"
+      },
+      {
+        "label": "贵溪市",
+        "value": "360681"
+      }
+    ],
+    [{
+        "label": "章贡区",
+        "value": "360702"
+      },
+      {
+        "label": "南康区",
+        "value": "360703"
+      },
+      {
+        "label": "赣县区",
+        "value": "360704"
+      },
+      {
+        "label": "信丰县",
+        "value": "360722"
+      },
+      {
+        "label": "大余县",
+        "value": "360723"
+      },
+      {
+        "label": "上犹县",
+        "value": "360724"
+      },
+      {
+        "label": "崇义县",
+        "value": "360725"
+      },
+      {
+        "label": "安远县",
+        "value": "360726"
+      },
+      {
+        "label": "龙南县",
+        "value": "360727"
+      },
+      {
+        "label": "定南县",
+        "value": "360728"
+      },
+      {
+        "label": "全南县",
+        "value": "360729"
+      },
+      {
+        "label": "宁都县",
+        "value": "360730"
+      },
+      {
+        "label": "于都县",
+        "value": "360731"
+      },
+      {
+        "label": "兴国县",
+        "value": "360732"
+      },
+      {
+        "label": "会昌县",
+        "value": "360733"
+      },
+      {
+        "label": "寻乌县",
+        "value": "360734"
+      },
+      {
+        "label": "石城县",
+        "value": "360735"
+      },
+      {
+        "label": "瑞金市",
+        "value": "360781"
+      }
+    ],
+    [{
+        "label": "吉州区",
+        "value": "360802"
+      },
+      {
+        "label": "青原区",
+        "value": "360803"
+      },
+      {
+        "label": "吉安县",
+        "value": "360821"
+      },
+      {
+        "label": "吉水县",
+        "value": "360822"
+      },
+      {
+        "label": "峡江县",
+        "value": "360823"
+      },
+      {
+        "label": "新干县",
+        "value": "360824"
+      },
+      {
+        "label": "永丰县",
+        "value": "360825"
+      },
+      {
+        "label": "泰和县",
+        "value": "360826"
+      },
+      {
+        "label": "遂川县",
+        "value": "360827"
+      },
+      {
+        "label": "万安县",
+        "value": "360828"
+      },
+      {
+        "label": "安福县",
+        "value": "360829"
+      },
+      {
+        "label": "永新县",
+        "value": "360830"
+      },
+      {
+        "label": "井冈山市",
+        "value": "360881"
+      }
+    ],
+    [{
+        "label": "袁州区",
+        "value": "360902"
+      },
+      {
+        "label": "奉新县",
+        "value": "360921"
+      },
+      {
+        "label": "万载县",
+        "value": "360922"
+      },
+      {
+        "label": "上高县",
+        "value": "360923"
+      },
+      {
+        "label": "宜丰县",
+        "value": "360924"
+      },
+      {
+        "label": "靖安县",
+        "value": "360925"
+      },
+      {
+        "label": "铜鼓县",
+        "value": "360926"
+      },
+      {
+        "label": "丰城市",
+        "value": "360981"
+      },
+      {
+        "label": "樟树市",
+        "value": "360982"
+      },
+      {
+        "label": "高安市",
+        "value": "360983"
+      }
+    ],
+    [{
+        "label": "临川区",
+        "value": "361002"
+      },
+      {
+        "label": "东乡区",
+        "value": "361003"
+      },
+      {
+        "label": "南城县",
+        "value": "361021"
+      },
+      {
+        "label": "黎川县",
+        "value": "361022"
+      },
+      {
+        "label": "南丰县",
+        "value": "361023"
+      },
+      {
+        "label": "崇仁县",
+        "value": "361024"
+      },
+      {
+        "label": "乐安县",
+        "value": "361025"
+      },
+      {
+        "label": "宜黄县",
+        "value": "361026"
+      },
+      {
+        "label": "金溪县",
+        "value": "361027"
+      },
+      {
+        "label": "资溪县",
+        "value": "361028"
+      },
+      {
+        "label": "广昌县",
+        "value": "361030"
+      }
+    ],
+    [{
+        "label": "信州区",
+        "value": "361102"
+      },
+      {
+        "label": "广丰区",
+        "value": "361103"
+      },
+      {
+        "label": "上饶县",
+        "value": "361121"
+      },
+      {
+        "label": "玉山县",
+        "value": "361123"
+      },
+      {
+        "label": "铅山县",
+        "value": "361124"
+      },
+      {
+        "label": "横峰县",
+        "value": "361125"
+      },
+      {
+        "label": "弋阳县",
+        "value": "361126"
+      },
+      {
+        "label": "余干县",
+        "value": "361127"
+      },
+      {
+        "label": "鄱阳县",
+        "value": "361128"
+      },
+      {
+        "label": "万年县",
+        "value": "361129"
+      },
+      {
+        "label": "婺源县",
+        "value": "361130"
+      },
+      {
+        "label": "德兴市",
+        "value": "361181"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "历下区",
+        "value": "370102"
+      },
+      {
+        "label": "市中区",
+        "value": "370103"
+      },
+      {
+        "label": "槐荫区",
+        "value": "370104"
+      },
+      {
+        "label": "天桥区",
+        "value": "370105"
+      },
+      {
+        "label": "历城区",
+        "value": "370112"
+      },
+      {
+        "label": "长清区",
+        "value": "370113"
+      },
+      {
+        "label": "章丘区",
+        "value": "370114"
+      },
+      {
+        "label": "平阴县",
+        "value": "370124"
+      },
+      {
+        "label": "济阳县",
+        "value": "370125"
+      },
+      {
+        "label": "商河县",
+        "value": "370126"
+      },
+      {
+        "label": "济南高新技术产业开发区",
+        "value": "370171"
+      }
+    ],
+    [{
+        "label": "市南区",
+        "value": "370202"
+      },
+      {
+        "label": "市北区",
+        "value": "370203"
+      },
+      {
+        "label": "黄岛区",
+        "value": "370211"
+      },
+      {
+        "label": "崂山区",
+        "value": "370212"
+      },
+      {
+        "label": "李沧区",
+        "value": "370213"
+      },
+      {
+        "label": "城阳区",
+        "value": "370214"
+      },
+      {
+        "label": "即墨区",
+        "value": "370215"
+      },
+      {
+        "label": "青岛高新技术产业开发区",
+        "value": "370271"
+      },
+      {
+        "label": "胶州市",
+        "value": "370281"
+      },
+      {
+        "label": "平度市",
+        "value": "370283"
+      },
+      {
+        "label": "莱西市",
+        "value": "370285"
+      }
+    ],
+    [{
+        "label": "淄川区",
+        "value": "370302"
+      },
+      {
+        "label": "张店区",
+        "value": "370303"
+      },
+      {
+        "label": "博山区",
+        "value": "370304"
+      },
+      {
+        "label": "临淄区",
+        "value": "370305"
+      },
+      {
+        "label": "周村区",
+        "value": "370306"
+      },
+      {
+        "label": "桓台县",
+        "value": "370321"
+      },
+      {
+        "label": "高青县",
+        "value": "370322"
+      },
+      {
+        "label": "沂源县",
+        "value": "370323"
+      }
+    ],
+    [{
+        "label": "市中区",
+        "value": "370402"
+      },
+      {
+        "label": "薛城区",
+        "value": "370403"
+      },
+      {
+        "label": "峄城区",
+        "value": "370404"
+      },
+      {
+        "label": "台儿庄区",
+        "value": "370405"
+      },
+      {
+        "label": "山亭区",
+        "value": "370406"
+      },
+      {
+        "label": "滕州市",
+        "value": "370481"
+      }
+    ],
+    [{
+        "label": "东营区",
+        "value": "370502"
+      },
+      {
+        "label": "河口区",
+        "value": "370503"
+      },
+      {
+        "label": "垦利区",
+        "value": "370505"
+      },
+      {
+        "label": "利津县",
+        "value": "370522"
+      },
+      {
+        "label": "广饶县",
+        "value": "370523"
+      },
+      {
+        "label": "东营经济技术开发区",
+        "value": "370571"
+      },
+      {
+        "label": "东营港经济开发区",
+        "value": "370572"
+      }
+    ],
+    [{
+        "label": "芝罘区",
+        "value": "370602"
+      },
+      {
+        "label": "福山区",
+        "value": "370611"
+      },
+      {
+        "label": "牟平区",
+        "value": "370612"
+      },
+      {
+        "label": "莱山区",
+        "value": "370613"
+      },
+      {
+        "label": "长岛县",
+        "value": "370634"
+      },
+      {
+        "label": "烟台高新技术产业开发区",
+        "value": "370671"
+      },
+      {
+        "label": "烟台经济技术开发区",
+        "value": "370672"
+      },
+      {
+        "label": "龙口市",
+        "value": "370681"
+      },
+      {
+        "label": "莱阳市",
+        "value": "370682"
+      },
+      {
+        "label": "莱州市",
+        "value": "370683"
+      },
+      {
+        "label": "蓬莱市",
+        "value": "370684"
+      },
+      {
+        "label": "招远市",
+        "value": "370685"
+      },
+      {
+        "label": "栖霞市",
+        "value": "370686"
+      },
+      {
+        "label": "海阳市",
+        "value": "370687"
+      }
+    ],
+    [{
+        "label": "潍城区",
+        "value": "370702"
+      },
+      {
+        "label": "寒亭区",
+        "value": "370703"
+      },
+      {
+        "label": "坊子区",
+        "value": "370704"
+      },
+      {
+        "label": "奎文区",
+        "value": "370705"
+      },
+      {
+        "label": "临朐县",
+        "value": "370724"
+      },
+      {
+        "label": "昌乐县",
+        "value": "370725"
+      },
+      {
+        "label": "潍坊滨海经济技术开发区",
+        "value": "370772"
+      },
+      {
+        "label": "青州市",
+        "value": "370781"
+      },
+      {
+        "label": "诸城市",
+        "value": "370782"
+      },
+      {
+        "label": "寿光市",
+        "value": "370783"
+      },
+      {
+        "label": "安丘市",
+        "value": "370784"
+      },
+      {
+        "label": "高密市",
+        "value": "370785"
+      },
+      {
+        "label": "昌邑市",
+        "value": "370786"
+      }
+    ],
+    [{
+        "label": "任城区",
+        "value": "370811"
+      },
+      {
+        "label": "兖州区",
+        "value": "370812"
+      },
+      {
+        "label": "微山县",
+        "value": "370826"
+      },
+      {
+        "label": "鱼台县",
+        "value": "370827"
+      },
+      {
+        "label": "金乡县",
+        "value": "370828"
+      },
+      {
+        "label": "嘉祥县",
+        "value": "370829"
+      },
+      {
+        "label": "汶上县",
+        "value": "370830"
+      },
+      {
+        "label": "泗水县",
+        "value": "370831"
+      },
+      {
+        "label": "梁山县",
+        "value": "370832"
+      },
+      {
+        "label": "济宁高新技术产业开发区",
+        "value": "370871"
+      },
+      {
+        "label": "曲阜市",
+        "value": "370881"
+      },
+      {
+        "label": "邹城市",
+        "value": "370883"
+      }
+    ],
+    [{
+        "label": "泰山区",
+        "value": "370902"
+      },
+      {
+        "label": "岱岳区",
+        "value": "370911"
+      },
+      {
+        "label": "宁阳县",
+        "value": "370921"
+      },
+      {
+        "label": "东平县",
+        "value": "370923"
+      },
+      {
+        "label": "新泰市",
+        "value": "370982"
+      },
+      {
+        "label": "肥城市",
+        "value": "370983"
+      }
+    ],
+    [{
+        "label": "环翠区",
+        "value": "371002"
+      },
+      {
+        "label": "文登区",
+        "value": "371003"
+      },
+      {
+        "label": "威海火炬高技术产业开发区",
+        "value": "371071"
+      },
+      {
+        "label": "威海经济技术开发区",
+        "value": "371072"
+      },
+      {
+        "label": "威海临港经济技术开发区",
+        "value": "371073"
+      },
+      {
+        "label": "荣成市",
+        "value": "371082"
+      },
+      {
+        "label": "乳山市",
+        "value": "371083"
+      }
+    ],
+    [{
+        "label": "东港区",
+        "value": "371102"
+      },
+      {
+        "label": "岚山区",
+        "value": "371103"
+      },
+      {
+        "label": "五莲县",
+        "value": "371121"
+      },
+      {
+        "label": "莒县",
+        "value": "371122"
+      },
+      {
+        "label": "日照经济技术开发区",
+        "value": "371171"
+      },
+      {
+        "label": "日照国际海洋城",
+        "value": "371172"
+      }
+    ],
+    [{
+        "label": "莱城区",
+        "value": "371202"
+      },
+      {
+        "label": "钢城区",
+        "value": "371203"
+      }
+    ],
+    [{
+        "label": "兰山区",
+        "value": "371302"
+      },
+      {
+        "label": "罗庄区",
+        "value": "371311"
+      },
+      {
+        "label": "河东区",
+        "value": "371312"
+      },
+      {
+        "label": "沂南县",
+        "value": "371321"
+      },
+      {
+        "label": "郯城县",
+        "value": "371322"
+      },
+      {
+        "label": "沂水县",
+        "value": "371323"
+      },
+      {
+        "label": "兰陵县",
+        "value": "371324"
+      },
+      {
+        "label": "费县",
+        "value": "371325"
+      },
+      {
+        "label": "平邑县",
+        "value": "371326"
+      },
+      {
+        "label": "莒南县",
+        "value": "371327"
+      },
+      {
+        "label": "蒙阴县",
+        "value": "371328"
+      },
+      {
+        "label": "临沭县",
+        "value": "371329"
+      },
+      {
+        "label": "临沂高新技术产业开发区",
+        "value": "371371"
+      },
+      {
+        "label": "临沂经济技术开发区",
+        "value": "371372"
+      },
+      {
+        "label": "临沂临港经济开发区",
+        "value": "371373"
+      }
+    ],
+    [{
+        "label": "德城区",
+        "value": "371402"
+      },
+      {
+        "label": "陵城区",
+        "value": "371403"
+      },
+      {
+        "label": "宁津县",
+        "value": "371422"
+      },
+      {
+        "label": "庆云县",
+        "value": "371423"
+      },
+      {
+        "label": "临邑县",
+        "value": "371424"
+      },
+      {
+        "label": "齐河县",
+        "value": "371425"
+      },
+      {
+        "label": "平原县",
+        "value": "371426"
+      },
+      {
+        "label": "夏津县",
+        "value": "371427"
+      },
+      {
+        "label": "武城县",
+        "value": "371428"
+      },
+      {
+        "label": "德州经济技术开发区",
+        "value": "371471"
+      },
+      {
+        "label": "德州运河经济开发区",
+        "value": "371472"
+      },
+      {
+        "label": "乐陵市",
+        "value": "371481"
+      },
+      {
+        "label": "禹城市",
+        "value": "371482"
+      }
+    ],
+    [{
+        "label": "东昌府区",
+        "value": "371502"
+      },
+      {
+        "label": "阳谷县",
+        "value": "371521"
+      },
+      {
+        "label": "莘县",
+        "value": "371522"
+      },
+      {
+        "label": "茌平县",
+        "value": "371523"
+      },
+      {
+        "label": "东阿县",
+        "value": "371524"
+      },
+      {
+        "label": "冠县",
+        "value": "371525"
+      },
+      {
+        "label": "高唐县",
+        "value": "371526"
+      },
+      {
+        "label": "临清市",
+        "value": "371581"
+      }
+    ],
+    [{
+        "label": "滨城区",
+        "value": "371602"
+      },
+      {
+        "label": "沾化区",
+        "value": "371603"
+      },
+      {
+        "label": "惠民县",
+        "value": "371621"
+      },
+      {
+        "label": "阳信县",
+        "value": "371622"
+      },
+      {
+        "label": "无棣县",
+        "value": "371623"
+      },
+      {
+        "label": "博兴县",
+        "value": "371625"
+      },
+      {
+        "label": "邹平县",
+        "value": "371626"
+      }
+    ],
+    [{
+        "label": "牡丹区",
+        "value": "371702"
+      },
+      {
+        "label": "定陶区",
+        "value": "371703"
+      },
+      {
+        "label": "曹县",
+        "value": "371721"
+      },
+      {
+        "label": "单县",
+        "value": "371722"
+      },
+      {
+        "label": "成武县",
+        "value": "371723"
+      },
+      {
+        "label": "巨野县",
+        "value": "371724"
+      },
+      {
+        "label": "郓城县",
+        "value": "371725"
+      },
+      {
+        "label": "鄄城县",
+        "value": "371726"
+      },
+      {
+        "label": "东明县",
+        "value": "371728"
+      },
+      {
+        "label": "菏泽经济技术开发区",
+        "value": "371771"
+      },
+      {
+        "label": "菏泽高新技术开发区",
+        "value": "371772"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "中原区",
+        "value": "410102"
+      },
+      {
+        "label": "二七区",
+        "value": "410103"
+      },
+      {
+        "label": "管城回族区",
+        "value": "410104"
+      },
+      {
+        "label": "金水区",
+        "value": "410105"
+      },
+      {
+        "label": "上街区",
+        "value": "410106"
+      },
+      {
+        "label": "惠济区",
+        "value": "410108"
+      },
+      {
+        "label": "中牟县",
+        "value": "410122"
+      },
+      {
+        "label": "郑州经济技术开发区",
+        "value": "410171"
+      },
+      {
+        "label": "郑州高新技术产业开发区",
+        "value": "410172"
+      },
+      {
+        "label": "郑州航空港经济综合实验区",
+        "value": "410173"
+      },
+      {
+        "label": "巩义市",
+        "value": "410181"
+      },
+      {
+        "label": "荥阳市",
+        "value": "410182"
+      },
+      {
+        "label": "新密市",
+        "value": "410183"
+      },
+      {
+        "label": "新郑市",
+        "value": "410184"
+      },
+      {
+        "label": "登封市",
+        "value": "410185"
+      }
+    ],
+    [{
+        "label": "龙亭区",
+        "value": "410202"
+      },
+      {
+        "label": "顺河回族区",
+        "value": "410203"
+      },
+      {
+        "label": "鼓楼区",
+        "value": "410204"
+      },
+      {
+        "label": "禹王台区",
+        "value": "410205"
+      },
+      {
+        "label": "祥符区",
+        "value": "410212"
+      },
+      {
+        "label": "杞县",
+        "value": "410221"
+      },
+      {
+        "label": "通许县",
+        "value": "410222"
+      },
+      {
+        "label": "尉氏县",
+        "value": "410223"
+      },
+      {
+        "label": "兰考县",
+        "value": "410225"
+      }
+    ],
+    [{
+        "label": "老城区",
+        "value": "410302"
+      },
+      {
+        "label": "西工区",
+        "value": "410303"
+      },
+      {
+        "label": "瀍河回族区",
+        "value": "410304"
+      },
+      {
+        "label": "涧西区",
+        "value": "410305"
+      },
+      {
+        "label": "吉利区",
+        "value": "410306"
+      },
+      {
+        "label": "洛龙区",
+        "value": "410311"
+      },
+      {
+        "label": "孟津县",
+        "value": "410322"
+      },
+      {
+        "label": "新安县",
+        "value": "410323"
+      },
+      {
+        "label": "栾川县",
+        "value": "410324"
+      },
+      {
+        "label": "嵩县",
+        "value": "410325"
+      },
+      {
+        "label": "汝阳县",
+        "value": "410326"
+      },
+      {
+        "label": "宜阳县",
+        "value": "410327"
+      },
+      {
+        "label": "洛宁县",
+        "value": "410328"
+      },
+      {
+        "label": "伊川县",
+        "value": "410329"
+      },
+      {
+        "label": "洛阳高新技术产业开发区",
+        "value": "410371"
+      },
+      {
+        "label": "偃师市",
+        "value": "410381"
+      }
+    ],
+    [{
+        "label": "新华区",
+        "value": "410402"
+      },
+      {
+        "label": "卫东区",
+        "value": "410403"
+      },
+      {
+        "label": "石龙区",
+        "value": "410404"
+      },
+      {
+        "label": "湛河区",
+        "value": "410411"
+      },
+      {
+        "label": "宝丰县",
+        "value": "410421"
+      },
+      {
+        "label": "叶县",
+        "value": "410422"
+      },
+      {
+        "label": "鲁山县",
+        "value": "410423"
+      },
+      {
+        "label": "郏县",
+        "value": "410425"
+      },
+      {
+        "label": "平顶山高新技术产业开发区",
+        "value": "410471"
+      },
+      {
+        "label": "平顶山市新城区",
+        "value": "410472"
+      },
+      {
+        "label": "舞钢市",
+        "value": "410481"
+      },
+      {
+        "label": "汝州市",
+        "value": "410482"
+      }
+    ],
+    [{
+        "label": "文峰区",
+        "value": "410502"
+      },
+      {
+        "label": "北关区",
+        "value": "410503"
+      },
+      {
+        "label": "殷都区",
+        "value": "410505"
+      },
+      {
+        "label": "龙安区",
+        "value": "410506"
+      },
+      {
+        "label": "安阳县",
+        "value": "410522"
+      },
+      {
+        "label": "汤阴县",
+        "value": "410523"
+      },
+      {
+        "label": "滑县",
+        "value": "410526"
+      },
+      {
+        "label": "内黄县",
+        "value": "410527"
+      },
+      {
+        "label": "安阳高新技术产业开发区",
+        "value": "410571"
+      },
+      {
+        "label": "林州市",
+        "value": "410581"
+      }
+    ],
+    [{
+        "label": "鹤山区",
+        "value": "410602"
+      },
+      {
+        "label": "山城区",
+        "value": "410603"
+      },
+      {
+        "label": "淇滨区",
+        "value": "410611"
+      },
+      {
+        "label": "浚县",
+        "value": "410621"
+      },
+      {
+        "label": "淇县",
+        "value": "410622"
+      },
+      {
+        "label": "鹤壁经济技术开发区",
+        "value": "410671"
+      }
+    ],
+    [{
+        "label": "红旗区",
+        "value": "410702"
+      },
+      {
+        "label": "卫滨区",
+        "value": "410703"
+      },
+      {
+        "label": "凤泉区",
+        "value": "410704"
+      },
+      {
+        "label": "牧野区",
+        "value": "410711"
+      },
+      {
+        "label": "新乡县",
+        "value": "410721"
+      },
+      {
+        "label": "获嘉县",
+        "value": "410724"
+      },
+      {
+        "label": "原阳县",
+        "value": "410725"
+      },
+      {
+        "label": "延津县",
+        "value": "410726"
+      },
+      {
+        "label": "封丘县",
+        "value": "410727"
+      },
+      {
+        "label": "长垣县",
+        "value": "410728"
+      },
+      {
+        "label": "新乡高新技术产业开发区",
+        "value": "410771"
+      },
+      {
+        "label": "新乡经济技术开发区",
+        "value": "410772"
+      },
+      {
+        "label": "新乡市平原城乡一体化示范区",
+        "value": "410773"
+      },
+      {
+        "label": "卫辉市",
+        "value": "410781"
+      },
+      {
+        "label": "辉县市",
+        "value": "410782"
+      }
+    ],
+    [{
+        "label": "解放区",
+        "value": "410802"
+      },
+      {
+        "label": "中站区",
+        "value": "410803"
+      },
+      {
+        "label": "马村区",
+        "value": "410804"
+      },
+      {
+        "label": "山阳区",
+        "value": "410811"
+      },
+      {
+        "label": "修武县",
+        "value": "410821"
+      },
+      {
+        "label": "博爱县",
+        "value": "410822"
+      },
+      {
+        "label": "武陟县",
+        "value": "410823"
+      },
+      {
+        "label": "温县",
+        "value": "410825"
+      },
+      {
+        "label": "焦作城乡一体化示范区",
+        "value": "410871"
+      },
+      {
+        "label": "沁阳市",
+        "value": "410882"
+      },
+      {
+        "label": "孟州市",
+        "value": "410883"
+      }
+    ],
+    [{
+        "label": "华龙区",
+        "value": "410902"
+      },
+      {
+        "label": "清丰县",
+        "value": "410922"
+      },
+      {
+        "label": "南乐县",
+        "value": "410923"
+      },
+      {
+        "label": "范县",
+        "value": "410926"
+      },
+      {
+        "label": "台前县",
+        "value": "410927"
+      },
+      {
+        "label": "濮阳县",
+        "value": "410928"
+      },
+      {
+        "label": "河南濮阳工业园区",
+        "value": "410971"
+      },
+      {
+        "label": "濮阳经济技术开发区",
+        "value": "410972"
+      }
+    ],
+    [{
+        "label": "魏都区",
+        "value": "411002"
+      },
+      {
+        "label": "建安区",
+        "value": "411003"
+      },
+      {
+        "label": "鄢陵县",
+        "value": "411024"
+      },
+      {
+        "label": "襄城县",
+        "value": "411025"
+      },
+      {
+        "label": "许昌经济技术开发区",
+        "value": "411071"
+      },
+      {
+        "label": "禹州市",
+        "value": "411081"
+      },
+      {
+        "label": "长葛市",
+        "value": "411082"
+      }
+    ],
+    [{
+        "label": "源汇区",
+        "value": "411102"
+      },
+      {
+        "label": "郾城区",
+        "value": "411103"
+      },
+      {
+        "label": "召陵区",
+        "value": "411104"
+      },
+      {
+        "label": "舞阳县",
+        "value": "411121"
+      },
+      {
+        "label": "临颍县",
+        "value": "411122"
+      },
+      {
+        "label": "漯河经济技术开发区",
+        "value": "411171"
+      }
+    ],
+    [{
+        "label": "湖滨区",
+        "value": "411202"
+      },
+      {
+        "label": "陕州区",
+        "value": "411203"
+      },
+      {
+        "label": "渑池县",
+        "value": "411221"
+      },
+      {
+        "label": "卢氏县",
+        "value": "411224"
+      },
+      {
+        "label": "河南三门峡经济开发区",
+        "value": "411271"
+      },
+      {
+        "label": "义马市",
+        "value": "411281"
+      },
+      {
+        "label": "灵宝市",
+        "value": "411282"
+      }
+    ],
+    [{
+        "label": "宛城区",
+        "value": "411302"
+      },
+      {
+        "label": "卧龙区",
+        "value": "411303"
+      },
+      {
+        "label": "南召县",
+        "value": "411321"
+      },
+      {
+        "label": "方城县",
+        "value": "411322"
+      },
+      {
+        "label": "西峡县",
+        "value": "411323"
+      },
+      {
+        "label": "镇平县",
+        "value": "411324"
+      },
+      {
+        "label": "内乡县",
+        "value": "411325"
+      },
+      {
+        "label": "淅川县",
+        "value": "411326"
+      },
+      {
+        "label": "社旗县",
+        "value": "411327"
+      },
+      {
+        "label": "唐河县",
+        "value": "411328"
+      },
+      {
+        "label": "新野县",
+        "value": "411329"
+      },
+      {
+        "label": "桐柏县",
+        "value": "411330"
+      },
+      {
+        "label": "南阳高新技术产业开发区",
+        "value": "411371"
+      },
+      {
+        "label": "南阳市城乡一体化示范区",
+        "value": "411372"
+      },
+      {
+        "label": "邓州市",
+        "value": "411381"
+      }
+    ],
+    [{
+        "label": "梁园区",
+        "value": "411402"
+      },
+      {
+        "label": "睢阳区",
+        "value": "411403"
+      },
+      {
+        "label": "民权县",
+        "value": "411421"
+      },
+      {
+        "label": "睢县",
+        "value": "411422"
+      },
+      {
+        "label": "宁陵县",
+        "value": "411423"
+      },
+      {
+        "label": "柘城县",
+        "value": "411424"
+      },
+      {
+        "label": "虞城县",
+        "value": "411425"
+      },
+      {
+        "label": "夏邑县",
+        "value": "411426"
+      },
+      {
+        "label": "豫东综合物流产业聚集区",
+        "value": "411471"
+      },
+      {
+        "label": "河南商丘经济开发区",
+        "value": "411472"
+      },
+      {
+        "label": "永城市",
+        "value": "411481"
+      }
+    ],
+    [{
+        "label": "浉河区",
+        "value": "411502"
+      },
+      {
+        "label": "平桥区",
+        "value": "411503"
+      },
+      {
+        "label": "罗山县",
+        "value": "411521"
+      },
+      {
+        "label": "光山县",
+        "value": "411522"
+      },
+      {
+        "label": "新县",
+        "value": "411523"
+      },
+      {
+        "label": "商城县",
+        "value": "411524"
+      },
+      {
+        "label": "固始县",
+        "value": "411525"
+      },
+      {
+        "label": "潢川县",
+        "value": "411526"
+      },
+      {
+        "label": "淮滨县",
+        "value": "411527"
+      },
+      {
+        "label": "息县",
+        "value": "411528"
+      },
+      {
+        "label": "信阳高新技术产业开发区",
+        "value": "411571"
+      }
+    ],
+    [{
+        "label": "川汇区",
+        "value": "411602"
+      },
+      {
+        "label": "扶沟县",
+        "value": "411621"
+      },
+      {
+        "label": "西华县",
+        "value": "411622"
+      },
+      {
+        "label": "商水县",
+        "value": "411623"
+      },
+      {
+        "label": "沈丘县",
+        "value": "411624"
+      },
+      {
+        "label": "郸城县",
+        "value": "411625"
+      },
+      {
+        "label": "淮阳县",
+        "value": "411626"
+      },
+      {
+        "label": "太康县",
+        "value": "411627"
+      },
+      {
+        "label": "鹿邑县",
+        "value": "411628"
+      },
+      {
+        "label": "河南周口经济开发区",
+        "value": "411671"
+      },
+      {
+        "label": "项城市",
+        "value": "411681"
+      }
+    ],
+    [{
+        "label": "驿城区",
+        "value": "411702"
+      },
+      {
+        "label": "西平县",
+        "value": "411721"
+      },
+      {
+        "label": "上蔡县",
+        "value": "411722"
+      },
+      {
+        "label": "平舆县",
+        "value": "411723"
+      },
+      {
+        "label": "正阳县",
+        "value": "411724"
+      },
+      {
+        "label": "确山县",
+        "value": "411725"
+      },
+      {
+        "label": "泌阳县",
+        "value": "411726"
+      },
+      {
+        "label": "汝南县",
+        "value": "411727"
+      },
+      {
+        "label": "遂平县",
+        "value": "411728"
+      },
+      {
+        "label": "新蔡县",
+        "value": "411729"
+      },
+      {
+        "label": "河南驻马店经济开发区",
+        "value": "411771"
+      }
+    ],
+    [{
+      "label": "济源市",
+      "value": "419001"
+    }]
+  ],
+  [
+    [{
+        "label": "江岸区",
+        "value": "420102"
+      },
+      {
+        "label": "江汉区",
+        "value": "420103"
+      },
+      {
+        "label": "硚口区",
+        "value": "420104"
+      },
+      {
+        "label": "汉阳区",
+        "value": "420105"
+      },
+      {
+        "label": "武昌区",
+        "value": "420106"
+      },
+      {
+        "label": "青山区",
+        "value": "420107"
+      },
+      {
+        "label": "洪山区",
+        "value": "420111"
+      },
+      {
+        "label": "东西湖区",
+        "value": "420112"
+      },
+      {
+        "label": "汉南区",
+        "value": "420113"
+      },
+      {
+        "label": "蔡甸区",
+        "value": "420114"
+      },
+      {
+        "label": "江夏区",
+        "value": "420115"
+      },
+      {
+        "label": "黄陂区",
+        "value": "420116"
+      },
+      {
+        "label": "新洲区",
+        "value": "420117"
+      }
+    ],
+    [{
+        "label": "黄石港区",
+        "value": "420202"
+      },
+      {
+        "label": "西塞山区",
+        "value": "420203"
+      },
+      {
+        "label": "下陆区",
+        "value": "420204"
+      },
+      {
+        "label": "铁山区",
+        "value": "420205"
+      },
+      {
+        "label": "阳新县",
+        "value": "420222"
+      },
+      {
+        "label": "大冶市",
+        "value": "420281"
+      }
+    ],
+    [{
+        "label": "茅箭区",
+        "value": "420302"
+      },
+      {
+        "label": "张湾区",
+        "value": "420303"
+      },
+      {
+        "label": "郧阳区",
+        "value": "420304"
+      },
+      {
+        "label": "郧西县",
+        "value": "420322"
+      },
+      {
+        "label": "竹山县",
+        "value": "420323"
+      },
+      {
+        "label": "竹溪县",
+        "value": "420324"
+      },
+      {
+        "label": "房县",
+        "value": "420325"
+      },
+      {
+        "label": "丹江口市",
+        "value": "420381"
+      }
+    ],
+    [{
+        "label": "西陵区",
+        "value": "420502"
+      },
+      {
+        "label": "伍家岗区",
+        "value": "420503"
+      },
+      {
+        "label": "点军区",
+        "value": "420504"
+      },
+      {
+        "label": "猇亭区",
+        "value": "420505"
+      },
+      {
+        "label": "夷陵区",
+        "value": "420506"
+      },
+      {
+        "label": "远安县",
+        "value": "420525"
+      },
+      {
+        "label": "兴山县",
+        "value": "420526"
+      },
+      {
+        "label": "秭归县",
+        "value": "420527"
+      },
+      {
+        "label": "长阳土家族自治县",
+        "value": "420528"
+      },
+      {
+        "label": "五峰土家族自治县",
+        "value": "420529"
+      },
+      {
+        "label": "宜都市",
+        "value": "420581"
+      },
+      {
+        "label": "当阳市",
+        "value": "420582"
+      },
+      {
+        "label": "枝江市",
+        "value": "420583"
+      }
+    ],
+    [{
+        "label": "襄城区",
+        "value": "420602"
+      },
+      {
+        "label": "樊城区",
+        "value": "420606"
+      },
+      {
+        "label": "襄州区",
+        "value": "420607"
+      },
+      {
+        "label": "南漳县",
+        "value": "420624"
+      },
+      {
+        "label": "谷城县",
+        "value": "420625"
+      },
+      {
+        "label": "保康县",
+        "value": "420626"
+      },
+      {
+        "label": "老河口市",
+        "value": "420682"
+      },
+      {
+        "label": "枣阳市",
+        "value": "420683"
+      },
+      {
+        "label": "宜城市",
+        "value": "420684"
+      }
+    ],
+    [{
+        "label": "梁子湖区",
+        "value": "420702"
+      },
+      {
+        "label": "华容区",
+        "value": "420703"
+      },
+      {
+        "label": "鄂城区",
+        "value": "420704"
+      }
+    ],
+    [{
+        "label": "东宝区",
+        "value": "420802"
+      },
+      {
+        "label": "掇刀区",
+        "value": "420804"
+      },
+      {
+        "label": "京山县",
+        "value": "420821"
+      },
+      {
+        "label": "沙洋县",
+        "value": "420822"
+      },
+      {
+        "label": "钟祥市",
+        "value": "420881"
+      }
+    ],
+    [{
+        "label": "孝南区",
+        "value": "420902"
+      },
+      {
+        "label": "孝昌县",
+        "value": "420921"
+      },
+      {
+        "label": "大悟县",
+        "value": "420922"
+      },
+      {
+        "label": "云梦县",
+        "value": "420923"
+      },
+      {
+        "label": "应城市",
+        "value": "420981"
+      },
+      {
+        "label": "安陆市",
+        "value": "420982"
+      },
+      {
+        "label": "汉川市",
+        "value": "420984"
+      }
+    ],
+    [{
+        "label": "沙市区",
+        "value": "421002"
+      },
+      {
+        "label": "荆州区",
+        "value": "421003"
+      },
+      {
+        "label": "公安县",
+        "value": "421022"
+      },
+      {
+        "label": "监利县",
+        "value": "421023"
+      },
+      {
+        "label": "江陵县",
+        "value": "421024"
+      },
+      {
+        "label": "荆州经济技术开发区",
+        "value": "421071"
+      },
+      {
+        "label": "石首市",
+        "value": "421081"
+      },
+      {
+        "label": "洪湖市",
+        "value": "421083"
+      },
+      {
+        "label": "松滋市",
+        "value": "421087"
+      }
+    ],
+    [{
+        "label": "黄州区",
+        "value": "421102"
+      },
+      {
+        "label": "团风县",
+        "value": "421121"
+      },
+      {
+        "label": "红安县",
+        "value": "421122"
+      },
+      {
+        "label": "罗田县",
+        "value": "421123"
+      },
+      {
+        "label": "英山县",
+        "value": "421124"
+      },
+      {
+        "label": "浠水县",
+        "value": "421125"
+      },
+      {
+        "label": "蕲春县",
+        "value": "421126"
+      },
+      {
+        "label": "黄梅县",
+        "value": "421127"
+      },
+      {
+        "label": "龙感湖管理区",
+        "value": "421171"
+      },
+      {
+        "label": "麻城市",
+        "value": "421181"
+      },
+      {
+        "label": "武穴市",
+        "value": "421182"
+      }
+    ],
+    [{
+        "label": "咸安区",
+        "value": "421202"
+      },
+      {
+        "label": "嘉鱼县",
+        "value": "421221"
+      },
+      {
+        "label": "通城县",
+        "value": "421222"
+      },
+      {
+        "label": "崇阳县",
+        "value": "421223"
+      },
+      {
+        "label": "通山县",
+        "value": "421224"
+      },
+      {
+        "label": "赤壁市",
+        "value": "421281"
+      }
+    ],
+    [{
+        "label": "曾都区",
+        "value": "421303"
+      },
+      {
+        "label": "随县",
+        "value": "421321"
+      },
+      {
+        "label": "广水市",
+        "value": "421381"
+      }
+    ],
+    [{
+        "label": "恩施市",
+        "value": "422801"
+      },
+      {
+        "label": "利川市",
+        "value": "422802"
+      },
+      {
+        "label": "建始县",
+        "value": "422822"
+      },
+      {
+        "label": "巴东县",
+        "value": "422823"
+      },
+      {
+        "label": "宣恩县",
+        "value": "422825"
+      },
+      {
+        "label": "咸丰县",
+        "value": "422826"
+      },
+      {
+        "label": "来凤县",
+        "value": "422827"
+      },
+      {
+        "label": "鹤峰县",
+        "value": "422828"
+      }
+    ],
+    [{
+        "label": "仙桃市",
+        "value": "429004"
+      },
+      {
+        "label": "潜江市",
+        "value": "429005"
+      },
+      {
+        "label": "天门市",
+        "value": "429006"
+      },
+      {
+        "label": "神农架林区",
+        "value": "429021"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "芙蓉区",
+        "value": "430102"
+      },
+      {
+        "label": "天心区",
+        "value": "430103"
+      },
+      {
+        "label": "岳麓区",
+        "value": "430104"
+      },
+      {
+        "label": "开福区",
+        "value": "430105"
+      },
+      {
+        "label": "雨花区",
+        "value": "430111"
+      },
+      {
+        "label": "望城区",
+        "value": "430112"
+      },
+      {
+        "label": "长沙县",
+        "value": "430121"
+      },
+      {
+        "label": "浏阳市",
+        "value": "430181"
+      },
+      {
+        "label": "宁乡市",
+        "value": "430182"
+      }
+    ],
+    [{
+        "label": "荷塘区",
+        "value": "430202"
+      },
+      {
+        "label": "芦淞区",
+        "value": "430203"
+      },
+      {
+        "label": "石峰区",
+        "value": "430204"
+      },
+      {
+        "label": "天元区",
+        "value": "430211"
+      },
+      {
+        "label": "株洲县",
+        "value": "430221"
+      },
+      {
+        "label": "攸县",
+        "value": "430223"
+      },
+      {
+        "label": "茶陵县",
+        "value": "430224"
+      },
+      {
+        "label": "炎陵县",
+        "value": "430225"
+      },
+      {
+        "label": "云龙示范区",
+        "value": "430271"
+      },
+      {
+        "label": "醴陵市",
+        "value": "430281"
+      }
+    ],
+    [{
+        "label": "雨湖区",
+        "value": "430302"
+      },
+      {
+        "label": "岳塘区",
+        "value": "430304"
+      },
+      {
+        "label": "湘潭县",
+        "value": "430321"
+      },
+      {
+        "label": "湖南湘潭高新技术产业园区",
+        "value": "430371"
+      },
+      {
+        "label": "湘潭昭山示范区",
+        "value": "430372"
+      },
+      {
+        "label": "湘潭九华示范区",
+        "value": "430373"
+      },
+      {
+        "label": "湘乡市",
+        "value": "430381"
+      },
+      {
+        "label": "韶山市",
+        "value": "430382"
+      }
+    ],
+    [{
+        "label": "珠晖区",
+        "value": "430405"
+      },
+      {
+        "label": "雁峰区",
+        "value": "430406"
+      },
+      {
+        "label": "石鼓区",
+        "value": "430407"
+      },
+      {
+        "label": "蒸湘区",
+        "value": "430408"
+      },
+      {
+        "label": "南岳区",
+        "value": "430412"
+      },
+      {
+        "label": "衡阳县",
+        "value": "430421"
+      },
+      {
+        "label": "衡南县",
+        "value": "430422"
+      },
+      {
+        "label": "衡山县",
+        "value": "430423"
+      },
+      {
+        "label": "衡东县",
+        "value": "430424"
+      },
+      {
+        "label": "祁东县",
+        "value": "430426"
+      },
+      {
+        "label": "衡阳综合保税区",
+        "value": "430471"
+      },
+      {
+        "label": "湖南衡阳高新技术产业园区",
+        "value": "430472"
+      },
+      {
+        "label": "湖南衡阳松木经济开发区",
+        "value": "430473"
+      },
+      {
+        "label": "耒阳市",
+        "value": "430481"
+      },
+      {
+        "label": "常宁市",
+        "value": "430482"
+      }
+    ],
+    [{
+        "label": "双清区",
+        "value": "430502"
+      },
+      {
+        "label": "大祥区",
+        "value": "430503"
+      },
+      {
+        "label": "北塔区",
+        "value": "430511"
+      },
+      {
+        "label": "邵东县",
+        "value": "430521"
+      },
+      {
+        "label": "新邵县",
+        "value": "430522"
+      },
+      {
+        "label": "邵阳县",
+        "value": "430523"
+      },
+      {
+        "label": "隆回县",
+        "value": "430524"
+      },
+      {
+        "label": "洞口县",
+        "value": "430525"
+      },
+      {
+        "label": "绥宁县",
+        "value": "430527"
+      },
+      {
+        "label": "新宁县",
+        "value": "430528"
+      },
+      {
+        "label": "城步苗族自治县",
+        "value": "430529"
+      },
+      {
+        "label": "武冈市",
+        "value": "430581"
+      }
+    ],
+    [{
+        "label": "岳阳楼区",
+        "value": "430602"
+      },
+      {
+        "label": "云溪区",
+        "value": "430603"
+      },
+      {
+        "label": "君山区",
+        "value": "430611"
+      },
+      {
+        "label": "岳阳县",
+        "value": "430621"
+      },
+      {
+        "label": "华容县",
+        "value": "430623"
+      },
+      {
+        "label": "湘阴县",
+        "value": "430624"
+      },
+      {
+        "label": "平江县",
+        "value": "430626"
+      },
+      {
+        "label": "岳阳市屈原管理区",
+        "value": "430671"
+      },
+      {
+        "label": "汨罗市",
+        "value": "430681"
+      },
+      {
+        "label": "临湘市",
+        "value": "430682"
+      }
+    ],
+    [{
+        "label": "武陵区",
+        "value": "430702"
+      },
+      {
+        "label": "鼎城区",
+        "value": "430703"
+      },
+      {
+        "label": "安乡县",
+        "value": "430721"
+      },
+      {
+        "label": "汉寿县",
+        "value": "430722"
+      },
+      {
+        "label": "澧县",
+        "value": "430723"
+      },
+      {
+        "label": "临澧县",
+        "value": "430724"
+      },
+      {
+        "label": "桃源县",
+        "value": "430725"
+      },
+      {
+        "label": "石门县",
+        "value": "430726"
+      },
+      {
+        "label": "常德市西洞庭管理区",
+        "value": "430771"
+      },
+      {
+        "label": "津市市",
+        "value": "430781"
+      }
+    ],
+    [{
+        "label": "永定区",
+        "value": "430802"
+      },
+      {
+        "label": "武陵源区",
+        "value": "430811"
+      },
+      {
+        "label": "慈利县",
+        "value": "430821"
+      },
+      {
+        "label": "桑植县",
+        "value": "430822"
+      }
+    ],
+    [{
+        "label": "资阳区",
+        "value": "430902"
+      },
+      {
+        "label": "赫山区",
+        "value": "430903"
+      },
+      {
+        "label": "南县",
+        "value": "430921"
+      },
+      {
+        "label": "桃江县",
+        "value": "430922"
+      },
+      {
+        "label": "安化县",
+        "value": "430923"
+      },
+      {
+        "label": "益阳市大通湖管理区",
+        "value": "430971"
+      },
+      {
+        "label": "湖南益阳高新技术产业园区",
+        "value": "430972"
+      },
+      {
+        "label": "沅江市",
+        "value": "430981"
+      }
+    ],
+    [{
+        "label": "北湖区",
+        "value": "431002"
+      },
+      {
+        "label": "苏仙区",
+        "value": "431003"
+      },
+      {
+        "label": "桂阳县",
+        "value": "431021"
+      },
+      {
+        "label": "宜章县",
+        "value": "431022"
+      },
+      {
+        "label": "永兴县",
+        "value": "431023"
+      },
+      {
+        "label": "嘉禾县",
+        "value": "431024"
+      },
+      {
+        "label": "临武县",
+        "value": "431025"
+      },
+      {
+        "label": "汝城县",
+        "value": "431026"
+      },
+      {
+        "label": "桂东县",
+        "value": "431027"
+      },
+      {
+        "label": "安仁县",
+        "value": "431028"
+      },
+      {
+        "label": "资兴市",
+        "value": "431081"
+      }
+    ],
+    [{
+        "label": "零陵区",
+        "value": "431102"
+      },
+      {
+        "label": "冷水滩区",
+        "value": "431103"
+      },
+      {
+        "label": "祁阳县",
+        "value": "431121"
+      },
+      {
+        "label": "东安县",
+        "value": "431122"
+      },
+      {
+        "label": "双牌县",
+        "value": "431123"
+      },
+      {
+        "label": "道县",
+        "value": "431124"
+      },
+      {
+        "label": "江永县",
+        "value": "431125"
+      },
+      {
+        "label": "宁远县",
+        "value": "431126"
+      },
+      {
+        "label": "蓝山县",
+        "value": "431127"
+      },
+      {
+        "label": "新田县",
+        "value": "431128"
+      },
+      {
+        "label": "江华瑶族自治县",
+        "value": "431129"
+      },
+      {
+        "label": "永州经济技术开发区",
+        "value": "431171"
+      },
+      {
+        "label": "永州市金洞管理区",
+        "value": "431172"
+      },
+      {
+        "label": "永州市回龙圩管理区",
+        "value": "431173"
+      }
+    ],
+    [{
+        "label": "鹤城区",
+        "value": "431202"
+      },
+      {
+        "label": "中方县",
+        "value": "431221"
+      },
+      {
+        "label": "沅陵县",
+        "value": "431222"
+      },
+      {
+        "label": "辰溪县",
+        "value": "431223"
+      },
+      {
+        "label": "溆浦县",
+        "value": "431224"
+      },
+      {
+        "label": "会同县",
+        "value": "431225"
+      },
+      {
+        "label": "麻阳苗族自治县",
+        "value": "431226"
+      },
+      {
+        "label": "新晃侗族自治县",
+        "value": "431227"
+      },
+      {
+        "label": "芷江侗族自治县",
+        "value": "431228"
+      },
+      {
+        "label": "靖州苗族侗族自治县",
+        "value": "431229"
+      },
+      {
+        "label": "通道侗族自治县",
+        "value": "431230"
+      },
+      {
+        "label": "怀化市洪江管理区",
+        "value": "431271"
+      },
+      {
+        "label": "洪江市",
+        "value": "431281"
+      }
+    ],
+    [{
+        "label": "娄星区",
+        "value": "431302"
+      },
+      {
+        "label": "双峰县",
+        "value": "431321"
+      },
+      {
+        "label": "新化县",
+        "value": "431322"
+      },
+      {
+        "label": "冷水江市",
+        "value": "431381"
+      },
+      {
+        "label": "涟源市",
+        "value": "431382"
+      }
+    ],
+    [{
+        "label": "吉首市",
+        "value": "433101"
+      },
+      {
+        "label": "泸溪县",
+        "value": "433122"
+      },
+      {
+        "label": "凤凰县",
+        "value": "433123"
+      },
+      {
+        "label": "花垣县",
+        "value": "433124"
+      },
+      {
+        "label": "保靖县",
+        "value": "433125"
+      },
+      {
+        "label": "古丈县",
+        "value": "433126"
+      },
+      {
+        "label": "永顺县",
+        "value": "433127"
+      },
+      {
+        "label": "龙山县",
+        "value": "433130"
+      },
+      {
+        "label": "湖南吉首经济开发区",
+        "value": "433172"
+      },
+      {
+        "label": "湖南永顺经济开发区",
+        "value": "433173"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "荔湾区",
+        "value": "440103"
+      },
+      {
+        "label": "越秀区",
+        "value": "440104"
+      },
+      {
+        "label": "海珠区",
+        "value": "440105"
+      },
+      {
+        "label": "天河区",
+        "value": "440106"
+      },
+      {
+        "label": "白云区",
+        "value": "440111"
+      },
+      {
+        "label": "黄埔区",
+        "value": "440112"
+      },
+      {
+        "label": "番禺区",
+        "value": "440113"
+      },
+      {
+        "label": "花都区",
+        "value": "440114"
+      },
+      {
+        "label": "南沙区",
+        "value": "440115"
+      },
+      {
+        "label": "从化区",
+        "value": "440117"
+      },
+      {
+        "label": "增城区",
+        "value": "440118"
+      }
+    ],
+    [{
+        "label": "武江区",
+        "value": "440203"
+      },
+      {
+        "label": "浈江区",
+        "value": "440204"
+      },
+      {
+        "label": "曲江区",
+        "value": "440205"
+      },
+      {
+        "label": "始兴县",
+        "value": "440222"
+      },
+      {
+        "label": "仁化县",
+        "value": "440224"
+      },
+      {
+        "label": "翁源县",
+        "value": "440229"
+      },
+      {
+        "label": "乳源瑶族自治县",
+        "value": "440232"
+      },
+      {
+        "label": "新丰县",
+        "value": "440233"
+      },
+      {
+        "label": "乐昌市",
+        "value": "440281"
+      },
+      {
+        "label": "南雄市",
+        "value": "440282"
+      }
+    ],
+    [{
+        "label": "罗湖区",
+        "value": "440303"
+      },
+      {
+        "label": "福田区",
+        "value": "440304"
+      },
+      {
+        "label": "南山区",
+        "value": "440305"
+      },
+      {
+        "label": "宝安区",
+        "value": "440306"
+      },
+      {
+        "label": "龙岗区",
+        "value": "440307"
+      },
+      {
+        "label": "盐田区",
+        "value": "440308"
+      },
+      {
+        "label": "龙华区",
+        "value": "440309"
+      },
+      {
+        "label": "坪山区",
+        "value": "440310"
+      }
+    ],
+    [{
+        "label": "香洲区",
+        "value": "440402"
+      },
+      {
+        "label": "斗门区",
+        "value": "440403"
+      },
+      {
+        "label": "金湾区",
+        "value": "440404"
+      }
+    ],
+    [{
+        "label": "龙湖区",
+        "value": "440507"
+      },
+      {
+        "label": "金平区",
+        "value": "440511"
+      },
+      {
+        "label": "濠江区",
+        "value": "440512"
+      },
+      {
+        "label": "潮阳区",
+        "value": "440513"
+      },
+      {
+        "label": "潮南区",
+        "value": "440514"
+      },
+      {
+        "label": "澄海区",
+        "value": "440515"
+      },
+      {
+        "label": "南澳县",
+        "value": "440523"
+      }
+    ],
+    [{
+        "label": "禅城区",
+        "value": "440604"
+      },
+      {
+        "label": "南海区",
+        "value": "440605"
+      },
+      {
+        "label": "顺德区",
+        "value": "440606"
+      },
+      {
+        "label": "三水区",
+        "value": "440607"
+      },
+      {
+        "label": "高明区",
+        "value": "440608"
+      }
+    ],
+    [{
+        "label": "蓬江区",
+        "value": "440703"
+      },
+      {
+        "label": "江海区",
+        "value": "440704"
+      },
+      {
+        "label": "新会区",
+        "value": "440705"
+      },
+      {
+        "label": "台山市",
+        "value": "440781"
+      },
+      {
+        "label": "开平市",
+        "value": "440783"
+      },
+      {
+        "label": "鹤山市",
+        "value": "440784"
+      },
+      {
+        "label": "恩平市",
+        "value": "440785"
+      }
+    ],
+    [{
+        "label": "赤坎区",
+        "value": "440802"
+      },
+      {
+        "label": "霞山区",
+        "value": "440803"
+      },
+      {
+        "label": "坡头区",
+        "value": "440804"
+      },
+      {
+        "label": "麻章区",
+        "value": "440811"
+      },
+      {
+        "label": "遂溪县",
+        "value": "440823"
+      },
+      {
+        "label": "徐闻县",
+        "value": "440825"
+      },
+      {
+        "label": "廉江市",
+        "value": "440881"
+      },
+      {
+        "label": "雷州市",
+        "value": "440882"
+      },
+      {
+        "label": "吴川市",
+        "value": "440883"
+      }
+    ],
+    [{
+        "label": "茂南区",
+        "value": "440902"
+      },
+      {
+        "label": "电白区",
+        "value": "440904"
+      },
+      {
+        "label": "高州市",
+        "value": "440981"
+      },
+      {
+        "label": "化州市",
+        "value": "440982"
+      },
+      {
+        "label": "信宜市",
+        "value": "440983"
+      }
+    ],
+    [{
+        "label": "端州区",
+        "value": "441202"
+      },
+      {
+        "label": "鼎湖区",
+        "value": "441203"
+      },
+      {
+        "label": "高要区",
+        "value": "441204"
+      },
+      {
+        "label": "广宁县",
+        "value": "441223"
+      },
+      {
+        "label": "怀集县",
+        "value": "441224"
+      },
+      {
+        "label": "封开县",
+        "value": "441225"
+      },
+      {
+        "label": "德庆县",
+        "value": "441226"
+      },
+      {
+        "label": "四会市",
+        "value": "441284"
+      }
+    ],
+    [{
+        "label": "惠城区",
+        "value": "441302"
+      },
+      {
+        "label": "惠阳区",
+        "value": "441303"
+      },
+      {
+        "label": "博罗县",
+        "value": "441322"
+      },
+      {
+        "label": "惠东县",
+        "value": "441323"
+      },
+      {
+        "label": "龙门县",
+        "value": "441324"
+      }
+    ],
+    [{
+        "label": "梅江区",
+        "value": "441402"
+      },
+      {
+        "label": "梅县区",
+        "value": "441403"
+      },
+      {
+        "label": "大埔县",
+        "value": "441422"
+      },
+      {
+        "label": "丰顺县",
+        "value": "441423"
+      },
+      {
+        "label": "五华县",
+        "value": "441424"
+      },
+      {
+        "label": "平远县",
+        "value": "441426"
+      },
+      {
+        "label": "蕉岭县",
+        "value": "441427"
+      },
+      {
+        "label": "兴宁市",
+        "value": "441481"
+      }
+    ],
+    [{
+        "label": "城区",
+        "value": "441502"
+      },
+      {
+        "label": "海丰县",
+        "value": "441521"
+      },
+      {
+        "label": "陆河县",
+        "value": "441523"
+      },
+      {
+        "label": "陆丰市",
+        "value": "441581"
+      }
+    ],
+    [{
+        "label": "源城区",
+        "value": "441602"
+      },
+      {
+        "label": "紫金县",
+        "value": "441621"
+      },
+      {
+        "label": "龙川县",
+        "value": "441622"
+      },
+      {
+        "label": "连平县",
+        "value": "441623"
+      },
+      {
+        "label": "和平县",
+        "value": "441624"
+      },
+      {
+        "label": "东源县",
+        "value": "441625"
+      }
+    ],
+    [{
+        "label": "江城区",
+        "value": "441702"
+      },
+      {
+        "label": "阳东区",
+        "value": "441704"
+      },
+      {
+        "label": "阳西县",
+        "value": "441721"
+      },
+      {
+        "label": "阳春市",
+        "value": "441781"
+      }
+    ],
+    [{
+        "label": "清城区",
+        "value": "441802"
+      },
+      {
+        "label": "清新区",
+        "value": "441803"
+      },
+      {
+        "label": "佛冈县",
+        "value": "441821"
+      },
+      {
+        "label": "阳山县",
+        "value": "441823"
+      },
+      {
+        "label": "连山壮族瑶族自治县",
+        "value": "441825"
+      },
+      {
+        "label": "连南瑶族自治县",
+        "value": "441826"
+      },
+      {
+        "label": "英德市",
+        "value": "441881"
+      },
+      {
+        "label": "连州市",
+        "value": "441882"
+      }
+    ],
+    [{
+      "label": "东莞市",
+      "value": "441900"
+    }],
+    [{
+      "label": "中山市",
+      "value": "442000"
+    }],
+    [{
+        "label": "湘桥区",
+        "value": "445102"
+      },
+      {
+        "label": "潮安区",
+        "value": "445103"
+      },
+      {
+        "label": "饶平县",
+        "value": "445122"
+      }
+    ],
+    [{
+        "label": "榕城区",
+        "value": "445202"
+      },
+      {
+        "label": "揭东区",
+        "value": "445203"
+      },
+      {
+        "label": "揭西县",
+        "value": "445222"
+      },
+      {
+        "label": "惠来县",
+        "value": "445224"
+      },
+      {
+        "label": "普宁市",
+        "value": "445281"
+      }
+    ],
+    [{
+        "label": "云城区",
+        "value": "445302"
+      },
+      {
+        "label": "云安区",
+        "value": "445303"
+      },
+      {
+        "label": "新兴县",
+        "value": "445321"
+      },
+      {
+        "label": "郁南县",
+        "value": "445322"
+      },
+      {
+        "label": "罗定市",
+        "value": "445381"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "兴宁区",
+        "value": "450102"
+      },
+      {
+        "label": "青秀区",
+        "value": "450103"
+      },
+      {
+        "label": "江南区",
+        "value": "450105"
+      },
+      {
+        "label": "西乡塘区",
+        "value": "450107"
+      },
+      {
+        "label": "良庆区",
+        "value": "450108"
+      },
+      {
+        "label": "邕宁区",
+        "value": "450109"
+      },
+      {
+        "label": "武鸣区",
+        "value": "450110"
+      },
+      {
+        "label": "隆安县",
+        "value": "450123"
+      },
+      {
+        "label": "马山县",
+        "value": "450124"
+      },
+      {
+        "label": "上林县",
+        "value": "450125"
+      },
+      {
+        "label": "宾阳县",
+        "value": "450126"
+      },
+      {
+        "label": "横县",
+        "value": "450127"
+      }
+    ],
+    [{
+        "label": "城中区",
+        "value": "450202"
+      },
+      {
+        "label": "鱼峰区",
+        "value": "450203"
+      },
+      {
+        "label": "柳南区",
+        "value": "450204"
+      },
+      {
+        "label": "柳北区",
+        "value": "450205"
+      },
+      {
+        "label": "柳江区",
+        "value": "450206"
+      },
+      {
+        "label": "柳城县",
+        "value": "450222"
+      },
+      {
+        "label": "鹿寨县",
+        "value": "450223"
+      },
+      {
+        "label": "融安县",
+        "value": "450224"
+      },
+      {
+        "label": "融水苗族自治县",
+        "value": "450225"
+      },
+      {
+        "label": "三江侗族自治县",
+        "value": "450226"
+      }
+    ],
+    [{
+        "label": "秀峰区",
+        "value": "450302"
+      },
+      {
+        "label": "叠彩区",
+        "value": "450303"
+      },
+      {
+        "label": "象山区",
+        "value": "450304"
+      },
+      {
+        "label": "七星区",
+        "value": "450305"
+      },
+      {
+        "label": "雁山区",
+        "value": "450311"
+      },
+      {
+        "label": "临桂区",
+        "value": "450312"
+      },
+      {
+        "label": "阳朔县",
+        "value": "450321"
+      },
+      {
+        "label": "灵川县",
+        "value": "450323"
+      },
+      {
+        "label": "全州县",
+        "value": "450324"
+      },
+      {
+        "label": "兴安县",
+        "value": "450325"
+      },
+      {
+        "label": "永福县",
+        "value": "450326"
+      },
+      {
+        "label": "灌阳县",
+        "value": "450327"
+      },
+      {
+        "label": "龙胜各族自治县",
+        "value": "450328"
+      },
+      {
+        "label": "资源县",
+        "value": "450329"
+      },
+      {
+        "label": "平乐县",
+        "value": "450330"
+      },
+      {
+        "label": "荔浦县",
+        "value": "450331"
+      },
+      {
+        "label": "恭城瑶族自治县",
+        "value": "450332"
+      }
+    ],
+    [{
+        "label": "万秀区",
+        "value": "450403"
+      },
+      {
+        "label": "长洲区",
+        "value": "450405"
+      },
+      {
+        "label": "龙圩区",
+        "value": "450406"
+      },
+      {
+        "label": "苍梧县",
+        "value": "450421"
+      },
+      {
+        "label": "藤县",
+        "value": "450422"
+      },
+      {
+        "label": "蒙山县",
+        "value": "450423"
+      },
+      {
+        "label": "岑溪市",
+        "value": "450481"
+      }
+    ],
+    [{
+        "label": "海城区",
+        "value": "450502"
+      },
+      {
+        "label": "银海区",
+        "value": "450503"
+      },
+      {
+        "label": "铁山港区",
+        "value": "450512"
+      },
+      {
+        "label": "合浦县",
+        "value": "450521"
+      }
+    ],
+    [{
+        "label": "港口区",
+        "value": "450602"
+      },
+      {
+        "label": "防城区",
+        "value": "450603"
+      },
+      {
+        "label": "上思县",
+        "value": "450621"
+      },
+      {
+        "label": "东兴市",
+        "value": "450681"
+      }
+    ],
+    [{
+        "label": "钦南区",
+        "value": "450702"
+      },
+      {
+        "label": "钦北区",
+        "value": "450703"
+      },
+      {
+        "label": "灵山县",
+        "value": "450721"
+      },
+      {
+        "label": "浦北县",
+        "value": "450722"
+      }
+    ],
+    [{
+        "label": "港北区",
+        "value": "450802"
+      },
+      {
+        "label": "港南区",
+        "value": "450803"
+      },
+      {
+        "label": "覃塘区",
+        "value": "450804"
+      },
+      {
+        "label": "平南县",
+        "value": "450821"
+      },
+      {
+        "label": "桂平市",
+        "value": "450881"
+      }
+    ],
+    [{
+        "label": "玉州区",
+        "value": "450902"
+      },
+      {
+        "label": "福绵区",
+        "value": "450903"
+      },
+      {
+        "label": "容县",
+        "value": "450921"
+      },
+      {
+        "label": "陆川县",
+        "value": "450922"
+      },
+      {
+        "label": "博白县",
+        "value": "450923"
+      },
+      {
+        "label": "兴业县",
+        "value": "450924"
+      },
+      {
+        "label": "北流市",
+        "value": "450981"
+      }
+    ],
+    [{
+        "label": "右江区",
+        "value": "451002"
+      },
+      {
+        "label": "田阳县",
+        "value": "451021"
+      },
+      {
+        "label": "田东县",
+        "value": "451022"
+      },
+      {
+        "label": "平果县",
+        "value": "451023"
+      },
+      {
+        "label": "德保县",
+        "value": "451024"
+      },
+      {
+        "label": "那坡县",
+        "value": "451026"
+      },
+      {
+        "label": "凌云县",
+        "value": "451027"
+      },
+      {
+        "label": "乐业县",
+        "value": "451028"
+      },
+      {
+        "label": "田林县",
+        "value": "451029"
+      },
+      {
+        "label": "西林县",
+        "value": "451030"
+      },
+      {
+        "label": "隆林各族自治县",
+        "value": "451031"
+      },
+      {
+        "label": "靖西市",
+        "value": "451081"
+      }
+    ],
+    [{
+        "label": "八步区",
+        "value": "451102"
+      },
+      {
+        "label": "平桂区",
+        "value": "451103"
+      },
+      {
+        "label": "昭平县",
+        "value": "451121"
+      },
+      {
+        "label": "钟山县",
+        "value": "451122"
+      },
+      {
+        "label": "富川瑶族自治县",
+        "value": "451123"
+      }
+    ],
+    [{
+        "label": "金城江区",
+        "value": "451202"
+      },
+      {
+        "label": "宜州区",
+        "value": "451203"
+      },
+      {
+        "label": "南丹县",
+        "value": "451221"
+      },
+      {
+        "label": "天峨县",
+        "value": "451222"
+      },
+      {
+        "label": "凤山县",
+        "value": "451223"
+      },
+      {
+        "label": "东兰县",
+        "value": "451224"
+      },
+      {
+        "label": "罗城仫佬族自治县",
+        "value": "451225"
+      },
+      {
+        "label": "环江毛南族自治县",
+        "value": "451226"
+      },
+      {
+        "label": "巴马瑶族自治县",
+        "value": "451227"
+      },
+      {
+        "label": "都安瑶族自治县",
+        "value": "451228"
+      },
+      {
+        "label": "大化瑶族自治县",
+        "value": "451229"
+      }
+    ],
+    [{
+        "label": "兴宾区",
+        "value": "451302"
+      },
+      {
+        "label": "忻城县",
+        "value": "451321"
+      },
+      {
+        "label": "象州县",
+        "value": "451322"
+      },
+      {
+        "label": "武宣县",
+        "value": "451323"
+      },
+      {
+        "label": "金秀瑶族自治县",
+        "value": "451324"
+      },
+      {
+        "label": "合山市",
+        "value": "451381"
+      }
+    ],
+    [{
+        "label": "江州区",
+        "value": "451402"
+      },
+      {
+        "label": "扶绥县",
+        "value": "451421"
+      },
+      {
+        "label": "宁明县",
+        "value": "451422"
+      },
+      {
+        "label": "龙州县",
+        "value": "451423"
+      },
+      {
+        "label": "大新县",
+        "value": "451424"
+      },
+      {
+        "label": "天等县",
+        "value": "451425"
+      },
+      {
+        "label": "凭祥市",
+        "value": "451481"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "秀英区",
+        "value": "460105"
+      },
+      {
+        "label": "龙华区",
+        "value": "460106"
+      },
+      {
+        "label": "琼山区",
+        "value": "460107"
+      },
+      {
+        "label": "美兰区",
+        "value": "460108"
+      }
+    ],
+    [{
+        "label": "海棠区",
+        "value": "460202"
+      },
+      {
+        "label": "吉阳区",
+        "value": "460203"
+      },
+      {
+        "label": "天涯区",
+        "value": "460204"
+      },
+      {
+        "label": "崖州区",
+        "value": "460205"
+      }
+    ],
+    [{
+        "label": "西沙群岛",
+        "value": "460321"
+      },
+      {
+        "label": "南沙群岛",
+        "value": "460322"
+      },
+      {
+        "label": "中沙群岛的岛礁及其海域",
+        "value": "460323"
+      }
+    ],
+    [{
+      "label": "儋州市",
+      "value": "460400"
+    }],
+    [{
+        "label": "五指山市",
+        "value": "469001"
+      },
+      {
+        "label": "琼海市",
+        "value": "469002"
+      },
+      {
+        "label": "文昌市",
+        "value": "469005"
+      },
+      {
+        "label": "万宁市",
+        "value": "469006"
+      },
+      {
+        "label": "东方市",
+        "value": "469007"
+      },
+      {
+        "label": "定安县",
+        "value": "469021"
+      },
+      {
+        "label": "屯昌县",
+        "value": "469022"
+      },
+      {
+        "label": "澄迈县",
+        "value": "469023"
+      },
+      {
+        "label": "临高县",
+        "value": "469024"
+      },
+      {
+        "label": "白沙黎族自治县",
+        "value": "469025"
+      },
+      {
+        "label": "昌江黎族自治县",
+        "value": "469026"
+      },
+      {
+        "label": "乐东黎族自治县",
+        "value": "469027"
+      },
+      {
+        "label": "陵水黎族自治县",
+        "value": "469028"
+      },
+      {
+        "label": "保亭黎族苗族自治县",
+        "value": "469029"
+      },
+      {
+        "label": "琼中黎族苗族自治县",
+        "value": "469030"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "万州区",
+        "value": "500101"
+      },
+      {
+        "label": "涪陵区",
+        "value": "500102"
+      },
+      {
+        "label": "渝中区",
+        "value": "500103"
+      },
+      {
+        "label": "大渡口区",
+        "value": "500104"
+      },
+      {
+        "label": "江北区",
+        "value": "500105"
+      },
+      {
+        "label": "沙坪坝区",
+        "value": "500106"
+      },
+      {
+        "label": "九龙坡区",
+        "value": "500107"
+      },
+      {
+        "label": "南岸区",
+        "value": "500108"
+      },
+      {
+        "label": "北碚区",
+        "value": "500109"
+      },
+      {
+        "label": "綦江区",
+        "value": "500110"
+      },
+      {
+        "label": "大足区",
+        "value": "500111"
+      },
+      {
+        "label": "渝北区",
+        "value": "500112"
+      },
+      {
+        "label": "巴南区",
+        "value": "500113"
+      },
+      {
+        "label": "黔江区",
+        "value": "500114"
+      },
+      {
+        "label": "长寿区",
+        "value": "500115"
+      },
+      {
+        "label": "江津区",
+        "value": "500116"
+      },
+      {
+        "label": "合川区",
+        "value": "500117"
+      },
+      {
+        "label": "永川区",
+        "value": "500118"
+      },
+      {
+        "label": "南川区",
+        "value": "500119"
+      },
+      {
+        "label": "璧山区",
+        "value": "500120"
+      },
+      {
+        "label": "铜梁区",
+        "value": "500151"
+      },
+      {
+        "label": "潼南区",
+        "value": "500152"
+      },
+      {
+        "label": "荣昌区",
+        "value": "500153"
+      },
+      {
+        "label": "开州区",
+        "value": "500154"
+      },
+      {
+        "label": "梁平区",
+        "value": "500155"
+      },
+      {
+        "label": "武隆区",
+        "value": "500156"
+      }
+    ],
+    [{
+        "label": "城口县",
+        "value": "500229"
+      },
+      {
+        "label": "丰都县",
+        "value": "500230"
+      },
+      {
+        "label": "垫江县",
+        "value": "500231"
+      },
+      {
+        "label": "忠县",
+        "value": "500233"
+      },
+      {
+        "label": "云阳县",
+        "value": "500235"
+      },
+      {
+        "label": "奉节县",
+        "value": "500236"
+      },
+      {
+        "label": "巫山县",
+        "value": "500237"
+      },
+      {
+        "label": "巫溪县",
+        "value": "500238"
+      },
+      {
+        "label": "石柱土家族自治县",
+        "value": "500240"
+      },
+      {
+        "label": "秀山土家族苗族自治县",
+        "value": "500241"
+      },
+      {
+        "label": "酉阳土家族苗族自治县",
+        "value": "500242"
+      },
+      {
+        "label": "彭水苗族土家族自治县",
+        "value": "500243"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "锦江区",
+        "value": "510104"
+      },
+      {
+        "label": "青羊区",
+        "value": "510105"
+      },
+      {
+        "label": "金牛区",
+        "value": "510106"
+      },
+      {
+        "label": "武侯区",
+        "value": "510107"
+      },
+      {
+        "label": "成华区",
+        "value": "510108"
+      },
+      {
+        "label": "龙泉驿区",
+        "value": "510112"
+      },
+      {
+        "label": "青白江区",
+        "value": "510113"
+      },
+      {
+        "label": "新都区",
+        "value": "510114"
+      },
+      {
+        "label": "温江区",
+        "value": "510115"
+      },
+      {
+        "label": "双流区",
+        "value": "510116"
+      },
+      {
+        "label": "郫都区",
+        "value": "510117"
+      },
+      {
+        "label": "金堂县",
+        "value": "510121"
+      },
+      {
+        "label": "大邑县",
+        "value": "510129"
+      },
+      {
+        "label": "蒲江县",
+        "value": "510131"
+      },
+      {
+        "label": "新津县",
+        "value": "510132"
+      },
+      {
+        "label": "都江堰市",
+        "value": "510181"
+      },
+      {
+        "label": "彭州市",
+        "value": "510182"
+      },
+      {
+        "label": "邛崃市",
+        "value": "510183"
+      },
+      {
+        "label": "崇州市",
+        "value": "510184"
+      },
+      {
+        "label": "简阳市",
+        "value": "510185"
+      }
+    ],
+    [{
+        "label": "自流井区",
+        "value": "510302"
+      },
+      {
+        "label": "贡井区",
+        "value": "510303"
+      },
+      {
+        "label": "大安区",
+        "value": "510304"
+      },
+      {
+        "label": "沿滩区",
+        "value": "510311"
+      },
+      {
+        "label": "荣县",
+        "value": "510321"
+      },
+      {
+        "label": "富顺县",
+        "value": "510322"
+      }
+    ],
+    [{
+        "label": "东区",
+        "value": "510402"
+      },
+      {
+        "label": "西区",
+        "value": "510403"
+      },
+      {
+        "label": "仁和区",
+        "value": "510411"
+      },
+      {
+        "label": "米易县",
+        "value": "510421"
+      },
+      {
+        "label": "盐边县",
+        "value": "510422"
+      }
+    ],
+    [{
+        "label": "江阳区",
+        "value": "510502"
+      },
+      {
+        "label": "纳溪区",
+        "value": "510503"
+      },
+      {
+        "label": "龙马潭区",
+        "value": "510504"
+      },
+      {
+        "label": "泸县",
+        "value": "510521"
+      },
+      {
+        "label": "合江县",
+        "value": "510522"
+      },
+      {
+        "label": "叙永县",
+        "value": "510524"
+      },
+      {
+        "label": "古蔺县",
+        "value": "510525"
+      }
+    ],
+    [{
+        "label": "旌阳区",
+        "value": "510603"
+      },
+      {
+        "label": "罗江区",
+        "value": "510604"
+      },
+      {
+        "label": "中江县",
+        "value": "510623"
+      },
+      {
+        "label": "广汉市",
+        "value": "510681"
+      },
+      {
+        "label": "什邡市",
+        "value": "510682"
+      },
+      {
+        "label": "绵竹市",
+        "value": "510683"
+      }
+    ],
+    [{
+        "label": "涪城区",
+        "value": "510703"
+      },
+      {
+        "label": "游仙区",
+        "value": "510704"
+      },
+      {
+        "label": "安州区",
+        "value": "510705"
+      },
+      {
+        "label": "三台县",
+        "value": "510722"
+      },
+      {
+        "label": "盐亭县",
+        "value": "510723"
+      },
+      {
+        "label": "梓潼县",
+        "value": "510725"
+      },
+      {
+        "label": "北川羌族自治县",
+        "value": "510726"
+      },
+      {
+        "label": "平武县",
+        "value": "510727"
+      },
+      {
+        "label": "江油市",
+        "value": "510781"
+      }
+    ],
+    [{
+        "label": "利州区",
+        "value": "510802"
+      },
+      {
+        "label": "昭化区",
+        "value": "510811"
+      },
+      {
+        "label": "朝天区",
+        "value": "510812"
+      },
+      {
+        "label": "旺苍县",
+        "value": "510821"
+      },
+      {
+        "label": "青川县",
+        "value": "510822"
+      },
+      {
+        "label": "剑阁县",
+        "value": "510823"
+      },
+      {
+        "label": "苍溪县",
+        "value": "510824"
+      }
+    ],
+    [{
+        "label": "船山区",
+        "value": "510903"
+      },
+      {
+        "label": "安居区",
+        "value": "510904"
+      },
+      {
+        "label": "蓬溪县",
+        "value": "510921"
+      },
+      {
+        "label": "射洪县",
+        "value": "510922"
+      },
+      {
+        "label": "大英县",
+        "value": "510923"
+      }
+    ],
+    [{
+        "label": "市中区",
+        "value": "511002"
+      },
+      {
+        "label": "东兴区",
+        "value": "511011"
+      },
+      {
+        "label": "威远县",
+        "value": "511024"
+      },
+      {
+        "label": "资中县",
+        "value": "511025"
+      },
+      {
+        "label": "内江经济开发区",
+        "value": "511071"
+      },
+      {
+        "label": "隆昌市",
+        "value": "511083"
+      }
+    ],
+    [{
+        "label": "市中区",
+        "value": "511102"
+      },
+      {
+        "label": "沙湾区",
+        "value": "511111"
+      },
+      {
+        "label": "五通桥区",
+        "value": "511112"
+      },
+      {
+        "label": "金口河区",
+        "value": "511113"
+      },
+      {
+        "label": "犍为县",
+        "value": "511123"
+      },
+      {
+        "label": "井研县",
+        "value": "511124"
+      },
+      {
+        "label": "夹江县",
+        "value": "511126"
+      },
+      {
+        "label": "沐川县",
+        "value": "511129"
+      },
+      {
+        "label": "峨边彝族自治县",
+        "value": "511132"
+      },
+      {
+        "label": "马边彝族自治县",
+        "value": "511133"
+      },
+      {
+        "label": "峨眉山市",
+        "value": "511181"
+      }
+    ],
+    [{
+        "label": "顺庆区",
+        "value": "511302"
+      },
+      {
+        "label": "高坪区",
+        "value": "511303"
+      },
+      {
+        "label": "嘉陵区",
+        "value": "511304"
+      },
+      {
+        "label": "南部县",
+        "value": "511321"
+      },
+      {
+        "label": "营山县",
+        "value": "511322"
+      },
+      {
+        "label": "蓬安县",
+        "value": "511323"
+      },
+      {
+        "label": "仪陇县",
+        "value": "511324"
+      },
+      {
+        "label": "西充县",
+        "value": "511325"
+      },
+      {
+        "label": "阆中市",
+        "value": "511381"
+      }
+    ],
+    [{
+        "label": "东坡区",
+        "value": "511402"
+      },
+      {
+        "label": "彭山区",
+        "value": "511403"
+      },
+      {
+        "label": "仁寿县",
+        "value": "511421"
+      },
+      {
+        "label": "洪雅县",
+        "value": "511423"
+      },
+      {
+        "label": "丹棱县",
+        "value": "511424"
+      },
+      {
+        "label": "青神县",
+        "value": "511425"
+      }
+    ],
+    [{
+        "label": "翠屏区",
+        "value": "511502"
+      },
+      {
+        "label": "南溪区",
+        "value": "511503"
+      },
+      {
+        "label": "宜宾县",
+        "value": "511521"
+      },
+      {
+        "label": "江安县",
+        "value": "511523"
+      },
+      {
+        "label": "长宁县",
+        "value": "511524"
+      },
+      {
+        "label": "高县",
+        "value": "511525"
+      },
+      {
+        "label": "珙县",
+        "value": "511526"
+      },
+      {
+        "label": "筠连县",
+        "value": "511527"
+      },
+      {
+        "label": "兴文县",
+        "value": "511528"
+      },
+      {
+        "label": "屏山县",
+        "value": "511529"
+      }
+    ],
+    [{
+        "label": "广安区",
+        "value": "511602"
+      },
+      {
+        "label": "前锋区",
+        "value": "511603"
+      },
+      {
+        "label": "岳池县",
+        "value": "511621"
+      },
+      {
+        "label": "武胜县",
+        "value": "511622"
+      },
+      {
+        "label": "邻水县",
+        "value": "511623"
+      },
+      {
+        "label": "华蓥市",
+        "value": "511681"
+      }
+    ],
+    [{
+        "label": "通川区",
+        "value": "511702"
+      },
+      {
+        "label": "达川区",
+        "value": "511703"
+      },
+      {
+        "label": "宣汉县",
+        "value": "511722"
+      },
+      {
+        "label": "开江县",
+        "value": "511723"
+      },
+      {
+        "label": "大竹县",
+        "value": "511724"
+      },
+      {
+        "label": "渠县",
+        "value": "511725"
+      },
+      {
+        "label": "达州经济开发区",
+        "value": "511771"
+      },
+      {
+        "label": "万源市",
+        "value": "511781"
+      }
+    ],
+    [{
+        "label": "雨城区",
+        "value": "511802"
+      },
+      {
+        "label": "名山区",
+        "value": "511803"
+      },
+      {
+        "label": "荥经县",
+        "value": "511822"
+      },
+      {
+        "label": "汉源县",
+        "value": "511823"
+      },
+      {
+        "label": "石棉县",
+        "value": "511824"
+      },
+      {
+        "label": "天全县",
+        "value": "511825"
+      },
+      {
+        "label": "芦山县",
+        "value": "511826"
+      },
+      {
+        "label": "宝兴县",
+        "value": "511827"
+      }
+    ],
+    [{
+        "label": "巴州区",
+        "value": "511902"
+      },
+      {
+        "label": "恩阳区",
+        "value": "511903"
+      },
+      {
+        "label": "通江县",
+        "value": "511921"
+      },
+      {
+        "label": "南江县",
+        "value": "511922"
+      },
+      {
+        "label": "平昌县",
+        "value": "511923"
+      },
+      {
+        "label": "巴中经济开发区",
+        "value": "511971"
+      }
+    ],
+    [{
+        "label": "雁江区",
+        "value": "512002"
+      },
+      {
+        "label": "安岳县",
+        "value": "512021"
+      },
+      {
+        "label": "乐至县",
+        "value": "512022"
+      }
+    ],
+    [{
+        "label": "马尔康市",
+        "value": "513201"
+      },
+      {
+        "label": "汶川县",
+        "value": "513221"
+      },
+      {
+        "label": "理县",
+        "value": "513222"
+      },
+      {
+        "label": "茂县",
+        "value": "513223"
+      },
+      {
+        "label": "松潘县",
+        "value": "513224"
+      },
+      {
+        "label": "九寨沟县",
+        "value": "513225"
+      },
+      {
+        "label": "金川县",
+        "value": "513226"
+      },
+      {
+        "label": "小金县",
+        "value": "513227"
+      },
+      {
+        "label": "黑水县",
+        "value": "513228"
+      },
+      {
+        "label": "壤塘县",
+        "value": "513230"
+      },
+      {
+        "label": "阿坝县",
+        "value": "513231"
+      },
+      {
+        "label": "若尔盖县",
+        "value": "513232"
+      },
+      {
+        "label": "红原县",
+        "value": "513233"
+      }
+    ],
+    [{
+        "label": "康定市",
+        "value": "513301"
+      },
+      {
+        "label": "泸定县",
+        "value": "513322"
+      },
+      {
+        "label": "丹巴县",
+        "value": "513323"
+      },
+      {
+        "label": "九龙县",
+        "value": "513324"
+      },
+      {
+        "label": "雅江县",
+        "value": "513325"
+      },
+      {
+        "label": "道孚县",
+        "value": "513326"
+      },
+      {
+        "label": "炉霍县",
+        "value": "513327"
+      },
+      {
+        "label": "甘孜县",
+        "value": "513328"
+      },
+      {
+        "label": "新龙县",
+        "value": "513329"
+      },
+      {
+        "label": "德格县",
+        "value": "513330"
+      },
+      {
+        "label": "白玉县",
+        "value": "513331"
+      },
+      {
+        "label": "石渠县",
+        "value": "513332"
+      },
+      {
+        "label": "色达县",
+        "value": "513333"
+      },
+      {
+        "label": "理塘县",
+        "value": "513334"
+      },
+      {
+        "label": "巴塘县",
+        "value": "513335"
+      },
+      {
+        "label": "乡城县",
+        "value": "513336"
+      },
+      {
+        "label": "稻城县",
+        "value": "513337"
+      },
+      {
+        "label": "得荣县",
+        "value": "513338"
+      }
+    ],
+    [{
+        "label": "西昌市",
+        "value": "513401"
+      },
+      {
+        "label": "木里藏族自治县",
+        "value": "513422"
+      },
+      {
+        "label": "盐源县",
+        "value": "513423"
+      },
+      {
+        "label": "德昌县",
+        "value": "513424"
+      },
+      {
+        "label": "会理县",
+        "value": "513425"
+      },
+      {
+        "label": "会东县",
+        "value": "513426"
+      },
+      {
+        "label": "宁南县",
+        "value": "513427"
+      },
+      {
+        "label": "普格县",
+        "value": "513428"
+      },
+      {
+        "label": "布拖县",
+        "value": "513429"
+      },
+      {
+        "label": "金阳县",
+        "value": "513430"
+      },
+      {
+        "label": "昭觉县",
+        "value": "513431"
+      },
+      {
+        "label": "喜德县",
+        "value": "513432"
+      },
+      {
+        "label": "冕宁县",
+        "value": "513433"
+      },
+      {
+        "label": "越西县",
+        "value": "513434"
+      },
+      {
+        "label": "甘洛县",
+        "value": "513435"
+      },
+      {
+        "label": "美姑县",
+        "value": "513436"
+      },
+      {
+        "label": "雷波县",
+        "value": "513437"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "南明区",
+        "value": "520102"
+      },
+      {
+        "label": "云岩区",
+        "value": "520103"
+      },
+      {
+        "label": "花溪区",
+        "value": "520111"
+      },
+      {
+        "label": "乌当区",
+        "value": "520112"
+      },
+      {
+        "label": "白云区",
+        "value": "520113"
+      },
+      {
+        "label": "观山湖区",
+        "value": "520115"
+      },
+      {
+        "label": "开阳县",
+        "value": "520121"
+      },
+      {
+        "label": "息烽县",
+        "value": "520122"
+      },
+      {
+        "label": "修文县",
+        "value": "520123"
+      },
+      {
+        "label": "清镇市",
+        "value": "520181"
+      }
+    ],
+    [{
+        "label": "钟山区",
+        "value": "520201"
+      },
+      {
+        "label": "六枝特区",
+        "value": "520203"
+      },
+      {
+        "label": "水城县",
+        "value": "520221"
+      },
+      {
+        "label": "盘州市",
+        "value": "520281"
+      }
+    ],
+    [{
+        "label": "红花岗区",
+        "value": "520302"
+      },
+      {
+        "label": "汇川区",
+        "value": "520303"
+      },
+      {
+        "label": "播州区",
+        "value": "520304"
+      },
+      {
+        "label": "桐梓县",
+        "value": "520322"
+      },
+      {
+        "label": "绥阳县",
+        "value": "520323"
+      },
+      {
+        "label": "正安县",
+        "value": "520324"
+      },
+      {
+        "label": "道真仡佬族苗族自治县",
+        "value": "520325"
+      },
+      {
+        "label": "务川仡佬族苗族自治县",
+        "value": "520326"
+      },
+      {
+        "label": "凤冈县",
+        "value": "520327"
+      },
+      {
+        "label": "湄潭县",
+        "value": "520328"
+      },
+      {
+        "label": "余庆县",
+        "value": "520329"
+      },
+      {
+        "label": "习水县",
+        "value": "520330"
+      },
+      {
+        "label": "赤水市",
+        "value": "520381"
+      },
+      {
+        "label": "仁怀市",
+        "value": "520382"
+      }
+    ],
+    [{
+        "label": "西秀区",
+        "value": "520402"
+      },
+      {
+        "label": "平坝区",
+        "value": "520403"
+      },
+      {
+        "label": "普定县",
+        "value": "520422"
+      },
+      {
+        "label": "镇宁布依族苗族自治县",
+        "value": "520423"
+      },
+      {
+        "label": "关岭布依族苗族自治县",
+        "value": "520424"
+      },
+      {
+        "label": "紫云苗族布依族自治县",
+        "value": "520425"
+      }
+    ],
+    [{
+        "label": "七星关区",
+        "value": "520502"
+      },
+      {
+        "label": "大方县",
+        "value": "520521"
+      },
+      {
+        "label": "黔西县",
+        "value": "520522"
+      },
+      {
+        "label": "金沙县",
+        "value": "520523"
+      },
+      {
+        "label": "织金县",
+        "value": "520524"
+      },
+      {
+        "label": "纳雍县",
+        "value": "520525"
+      },
+      {
+        "label": "威宁彝族回族苗族自治县",
+        "value": "520526"
+      },
+      {
+        "label": "赫章县",
+        "value": "520527"
+      }
+    ],
+    [{
+        "label": "碧江区",
+        "value": "520602"
+      },
+      {
+        "label": "万山区",
+        "value": "520603"
+      },
+      {
+        "label": "江口县",
+        "value": "520621"
+      },
+      {
+        "label": "玉屏侗族自治县",
+        "value": "520622"
+      },
+      {
+        "label": "石阡县",
+        "value": "520623"
+      },
+      {
+        "label": "思南县",
+        "value": "520624"
+      },
+      {
+        "label": "印江土家族苗族自治县",
+        "value": "520625"
+      },
+      {
+        "label": "德江县",
+        "value": "520626"
+      },
+      {
+        "label": "沿河土家族自治县",
+        "value": "520627"
+      },
+      {
+        "label": "松桃苗族自治县",
+        "value": "520628"
+      }
+    ],
+    [{
+        "label": "兴义市",
+        "value": "522301"
+      },
+      {
+        "label": "兴仁县",
+        "value": "522322"
+      },
+      {
+        "label": "普安县",
+        "value": "522323"
+      },
+      {
+        "label": "晴隆县",
+        "value": "522324"
+      },
+      {
+        "label": "贞丰县",
+        "value": "522325"
+      },
+      {
+        "label": "望谟县",
+        "value": "522326"
+      },
+      {
+        "label": "册亨县",
+        "value": "522327"
+      },
+      {
+        "label": "安龙县",
+        "value": "522328"
+      }
+    ],
+    [{
+        "label": "凯里市",
+        "value": "522601"
+      },
+      {
+        "label": "黄平县",
+        "value": "522622"
+      },
+      {
+        "label": "施秉县",
+        "value": "522623"
+      },
+      {
+        "label": "三穗县",
+        "value": "522624"
+      },
+      {
+        "label": "镇远县",
+        "value": "522625"
+      },
+      {
+        "label": "岑巩县",
+        "value": "522626"
+      },
+      {
+        "label": "天柱县",
+        "value": "522627"
+      },
+      {
+        "label": "锦屏县",
+        "value": "522628"
+      },
+      {
+        "label": "剑河县",
+        "value": "522629"
+      },
+      {
+        "label": "台江县",
+        "value": "522630"
+      },
+      {
+        "label": "黎平县",
+        "value": "522631"
+      },
+      {
+        "label": "榕江县",
+        "value": "522632"
+      },
+      {
+        "label": "从江县",
+        "value": "522633"
+      },
+      {
+        "label": "雷山县",
+        "value": "522634"
+      },
+      {
+        "label": "麻江县",
+        "value": "522635"
+      },
+      {
+        "label": "丹寨县",
+        "value": "522636"
+      }
+    ],
+    [{
+        "label": "都匀市",
+        "value": "522701"
+      },
+      {
+        "label": "福泉市",
+        "value": "522702"
+      },
+      {
+        "label": "荔波县",
+        "value": "522722"
+      },
+      {
+        "label": "贵定县",
+        "value": "522723"
+      },
+      {
+        "label": "瓮安县",
+        "value": "522725"
+      },
+      {
+        "label": "独山县",
+        "value": "522726"
+      },
+      {
+        "label": "平塘县",
+        "value": "522727"
+      },
+      {
+        "label": "罗甸县",
+        "value": "522728"
+      },
+      {
+        "label": "长顺县",
+        "value": "522729"
+      },
+      {
+        "label": "龙里县",
+        "value": "522730"
+      },
+      {
+        "label": "惠水县",
+        "value": "522731"
+      },
+      {
+        "label": "三都水族自治县",
+        "value": "522732"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "五华区",
+        "value": "530102"
+      },
+      {
+        "label": "盘龙区",
+        "value": "530103"
+      },
+      {
+        "label": "官渡区",
+        "value": "530111"
+      },
+      {
+        "label": "西山区",
+        "value": "530112"
+      },
+      {
+        "label": "东川区",
+        "value": "530113"
+      },
+      {
+        "label": "呈贡区",
+        "value": "530114"
+      },
+      {
+        "label": "晋宁区",
+        "value": "530115"
+      },
+      {
+        "label": "富民县",
+        "value": "530124"
+      },
+      {
+        "label": "宜良县",
+        "value": "530125"
+      },
+      {
+        "label": "石林彝族自治县",
+        "value": "530126"
+      },
+      {
+        "label": "嵩明县",
+        "value": "530127"
+      },
+      {
+        "label": "禄劝彝族苗族自治县",
+        "value": "530128"
+      },
+      {
+        "label": "寻甸回族彝族自治县",
+        "value": "530129"
+      },
+      {
+        "label": "安宁市",
+        "value": "530181"
+      }
+    ],
+    [{
+        "label": "麒麟区",
+        "value": "530302"
+      },
+      {
+        "label": "沾益区",
+        "value": "530303"
+      },
+      {
+        "label": "马龙县",
+        "value": "530321"
+      },
+      {
+        "label": "陆良县",
+        "value": "530322"
+      },
+      {
+        "label": "师宗县",
+        "value": "530323"
+      },
+      {
+        "label": "罗平县",
+        "value": "530324"
+      },
+      {
+        "label": "富源县",
+        "value": "530325"
+      },
+      {
+        "label": "会泽县",
+        "value": "530326"
+      },
+      {
+        "label": "宣威市",
+        "value": "530381"
+      }
+    ],
+    [{
+        "label": "红塔区",
+        "value": "530402"
+      },
+      {
+        "label": "江川区",
+        "value": "530403"
+      },
+      {
+        "label": "澄江县",
+        "value": "530422"
+      },
+      {
+        "label": "通海县",
+        "value": "530423"
+      },
+      {
+        "label": "华宁县",
+        "value": "530424"
+      },
+      {
+        "label": "易门县",
+        "value": "530425"
+      },
+      {
+        "label": "峨山彝族自治县",
+        "value": "530426"
+      },
+      {
+        "label": "新平彝族傣族自治县",
+        "value": "530427"
+      },
+      {
+        "label": "元江哈尼族彝族傣族自治县",
+        "value": "530428"
+      }
+    ],
+    [{
+        "label": "隆阳区",
+        "value": "530502"
+      },
+      {
+        "label": "施甸县",
+        "value": "530521"
+      },
+      {
+        "label": "龙陵县",
+        "value": "530523"
+      },
+      {
+        "label": "昌宁县",
+        "value": "530524"
+      },
+      {
+        "label": "腾冲市",
+        "value": "530581"
+      }
+    ],
+    [{
+        "label": "昭阳区",
+        "value": "530602"
+      },
+      {
+        "label": "鲁甸县",
+        "value": "530621"
+      },
+      {
+        "label": "巧家县",
+        "value": "530622"
+      },
+      {
+        "label": "盐津县",
+        "value": "530623"
+      },
+      {
+        "label": "大关县",
+        "value": "530624"
+      },
+      {
+        "label": "永善县",
+        "value": "530625"
+      },
+      {
+        "label": "绥江县",
+        "value": "530626"
+      },
+      {
+        "label": "镇雄县",
+        "value": "530627"
+      },
+      {
+        "label": "彝良县",
+        "value": "530628"
+      },
+      {
+        "label": "威信县",
+        "value": "530629"
+      },
+      {
+        "label": "水富县",
+        "value": "530630"
+      }
+    ],
+    [{
+        "label": "古城区",
+        "value": "530702"
+      },
+      {
+        "label": "玉龙纳西族自治县",
+        "value": "530721"
+      },
+      {
+        "label": "永胜县",
+        "value": "530722"
+      },
+      {
+        "label": "华坪县",
+        "value": "530723"
+      },
+      {
+        "label": "宁蒗彝族自治县",
+        "value": "530724"
+      }
+    ],
+    [{
+        "label": "思茅区",
+        "value": "530802"
+      },
+      {
+        "label": "宁洱哈尼族彝族自治县",
+        "value": "530821"
+      },
+      {
+        "label": "墨江哈尼族自治县",
+        "value": "530822"
+      },
+      {
+        "label": "景东彝族自治县",
+        "value": "530823"
+      },
+      {
+        "label": "景谷傣族彝族自治县",
+        "value": "530824"
+      },
+      {
+        "label": "镇沅彝族哈尼族拉祜族自治县",
+        "value": "530825"
+      },
+      {
+        "label": "江城哈尼族彝族自治县",
+        "value": "530826"
+      },
+      {
+        "label": "孟连傣族拉祜族佤族自治县",
+        "value": "530827"
+      },
+      {
+        "label": "澜沧拉祜族自治县",
+        "value": "530828"
+      },
+      {
+        "label": "西盟佤族自治县",
+        "value": "530829"
+      }
+    ],
+    [{
+        "label": "临翔区",
+        "value": "530902"
+      },
+      {
+        "label": "凤庆县",
+        "value": "530921"
+      },
+      {
+        "label": "云县",
+        "value": "530922"
+      },
+      {
+        "label": "永德县",
+        "value": "530923"
+      },
+      {
+        "label": "镇康县",
+        "value": "530924"
+      },
+      {
+        "label": "双江拉祜族佤族布朗族傣族自治县",
+        "value": "530925"
+      },
+      {
+        "label": "耿马傣族佤族自治县",
+        "value": "530926"
+      },
+      {
+        "label": "沧源佤族自治县",
+        "value": "530927"
+      }
+    ],
+    [{
+        "label": "楚雄市",
+        "value": "532301"
+      },
+      {
+        "label": "双柏县",
+        "value": "532322"
+      },
+      {
+        "label": "牟定县",
+        "value": "532323"
+      },
+      {
+        "label": "南华县",
+        "value": "532324"
+      },
+      {
+        "label": "姚安县",
+        "value": "532325"
+      },
+      {
+        "label": "大姚县",
+        "value": "532326"
+      },
+      {
+        "label": "永仁县",
+        "value": "532327"
+      },
+      {
+        "label": "元谋县",
+        "value": "532328"
+      },
+      {
+        "label": "武定县",
+        "value": "532329"
+      },
+      {
+        "label": "禄丰县",
+        "value": "532331"
+      }
+    ],
+    [{
+        "label": "个旧市",
+        "value": "532501"
+      },
+      {
+        "label": "开远市",
+        "value": "532502"
+      },
+      {
+        "label": "蒙自市",
+        "value": "532503"
+      },
+      {
+        "label": "弥勒市",
+        "value": "532504"
+      },
+      {
+        "label": "屏边苗族自治县",
+        "value": "532523"
+      },
+      {
+        "label": "建水县",
+        "value": "532524"
+      },
+      {
+        "label": "石屏县",
+        "value": "532525"
+      },
+      {
+        "label": "泸西县",
+        "value": "532527"
+      },
+      {
+        "label": "元阳县",
+        "value": "532528"
+      },
+      {
+        "label": "红河县",
+        "value": "532529"
+      },
+      {
+        "label": "金平苗族瑶族傣族自治县",
+        "value": "532530"
+      },
+      {
+        "label": "绿春县",
+        "value": "532531"
+      },
+      {
+        "label": "河口瑶族自治县",
+        "value": "532532"
+      }
+    ],
+    [{
+        "label": "文山市",
+        "value": "532601"
+      },
+      {
+        "label": "砚山县",
+        "value": "532622"
+      },
+      {
+        "label": "西畴县",
+        "value": "532623"
+      },
+      {
+        "label": "麻栗坡县",
+        "value": "532624"
+      },
+      {
+        "label": "马关县",
+        "value": "532625"
+      },
+      {
+        "label": "丘北县",
+        "value": "532626"
+      },
+      {
+        "label": "广南县",
+        "value": "532627"
+      },
+      {
+        "label": "富宁县",
+        "value": "532628"
+      }
+    ],
+    [{
+        "label": "景洪市",
+        "value": "532801"
+      },
+      {
+        "label": "勐海县",
+        "value": "532822"
+      },
+      {
+        "label": "勐腊县",
+        "value": "532823"
+      }
+    ],
+    [{
+        "label": "大理市",
+        "value": "532901"
+      },
+      {
+        "label": "漾濞彝族自治县",
+        "value": "532922"
+      },
+      {
+        "label": "祥云县",
+        "value": "532923"
+      },
+      {
+        "label": "宾川县",
+        "value": "532924"
+      },
+      {
+        "label": "弥渡县",
+        "value": "532925"
+      },
+      {
+        "label": "南涧彝族自治县",
+        "value": "532926"
+      },
+      {
+        "label": "巍山彝族回族自治县",
+        "value": "532927"
+      },
+      {
+        "label": "永平县",
+        "value": "532928"
+      },
+      {
+        "label": "云龙县",
+        "value": "532929"
+      },
+      {
+        "label": "洱源县",
+        "value": "532930"
+      },
+      {
+        "label": "剑川县",
+        "value": "532931"
+      },
+      {
+        "label": "鹤庆县",
+        "value": "532932"
+      }
+    ],
+    [{
+        "label": "瑞丽市",
+        "value": "533102"
+      },
+      {
+        "label": "芒市",
+        "value": "533103"
+      },
+      {
+        "label": "梁河县",
+        "value": "533122"
+      },
+      {
+        "label": "盈江县",
+        "value": "533123"
+      },
+      {
+        "label": "陇川县",
+        "value": "533124"
+      }
+    ],
+    [{
+        "label": "泸水市",
+        "value": "533301"
+      },
+      {
+        "label": "福贡县",
+        "value": "533323"
+      },
+      {
+        "label": "贡山独龙族怒族自治县",
+        "value": "533324"
+      },
+      {
+        "label": "兰坪白族普米族自治县",
+        "value": "533325"
+      }
+    ],
+    [{
+        "label": "香格里拉市",
+        "value": "533401"
+      },
+      {
+        "label": "德钦县",
+        "value": "533422"
+      },
+      {
+        "label": "维西傈僳族自治县",
+        "value": "533423"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "城关区",
+        "value": "540102"
+      },
+      {
+        "label": "堆龙德庆区",
+        "value": "540103"
+      },
+      {
+        "label": "林周县",
+        "value": "540121"
+      },
+      {
+        "label": "当雄县",
+        "value": "540122"
+      },
+      {
+        "label": "尼木县",
+        "value": "540123"
+      },
+      {
+        "label": "曲水县",
+        "value": "540124"
+      },
+      {
+        "label": "达孜县",
+        "value": "540126"
+      },
+      {
+        "label": "墨竹工卡县",
+        "value": "540127"
+      },
+      {
+        "label": "格尔木藏青工业园区",
+        "value": "540171"
+      },
+      {
+        "label": "拉萨经济技术开发区",
+        "value": "540172"
+      },
+      {
+        "label": "西藏文化旅游创意园区",
+        "value": "540173"
+      },
+      {
+        "label": "达孜工业园区",
+        "value": "540174"
+      }
+    ],
+    [{
+        "label": "桑珠孜区",
+        "value": "540202"
+      },
+      {
+        "label": "南木林县",
+        "value": "540221"
+      },
+      {
+        "label": "江孜县",
+        "value": "540222"
+      },
+      {
+        "label": "定日县",
+        "value": "540223"
+      },
+      {
+        "label": "萨迦县",
+        "value": "540224"
+      },
+      {
+        "label": "拉孜县",
+        "value": "540225"
+      },
+      {
+        "label": "昂仁县",
+        "value": "540226"
+      },
+      {
+        "label": "谢通门县",
+        "value": "540227"
+      },
+      {
+        "label": "白朗县",
+        "value": "540228"
+      },
+      {
+        "label": "仁布县",
+        "value": "540229"
+      },
+      {
+        "label": "康马县",
+        "value": "540230"
+      },
+      {
+        "label": "定结县",
+        "value": "540231"
+      },
+      {
+        "label": "仲巴县",
+        "value": "540232"
+      },
+      {
+        "label": "亚东县",
+        "value": "540233"
+      },
+      {
+        "label": "吉隆县",
+        "value": "540234"
+      },
+      {
+        "label": "聂拉木县",
+        "value": "540235"
+      },
+      {
+        "label": "萨嘎县",
+        "value": "540236"
+      },
+      {
+        "label": "岗巴县",
+        "value": "540237"
+      }
+    ],
+    [{
+        "label": "卡若区",
+        "value": "540302"
+      },
+      {
+        "label": "江达县",
+        "value": "540321"
+      },
+      {
+        "label": "贡觉县",
+        "value": "540322"
+      },
+      {
+        "label": "类乌齐县",
+        "value": "540323"
+      },
+      {
+        "label": "丁青县",
+        "value": "540324"
+      },
+      {
+        "label": "察雅县",
+        "value": "540325"
+      },
+      {
+        "label": "八宿县",
+        "value": "540326"
+      },
+      {
+        "label": "左贡县",
+        "value": "540327"
+      },
+      {
+        "label": "芒康县",
+        "value": "540328"
+      },
+      {
+        "label": "洛隆县",
+        "value": "540329"
+      },
+      {
+        "label": "边坝县",
+        "value": "540330"
+      }
+    ],
+    [{
+        "label": "巴宜区",
+        "value": "540402"
+      },
+      {
+        "label": "工布江达县",
+        "value": "540421"
+      },
+      {
+        "label": "米林县",
+        "value": "540422"
+      },
+      {
+        "label": "墨脱县",
+        "value": "540423"
+      },
+      {
+        "label": "波密县",
+        "value": "540424"
+      },
+      {
+        "label": "察隅县",
+        "value": "540425"
+      },
+      {
+        "label": "朗县",
+        "value": "540426"
+      }
+    ],
+    [{
+        "label": "乃东区",
+        "value": "540502"
+      },
+      {
+        "label": "扎囊县",
+        "value": "540521"
+      },
+      {
+        "label": "贡嘎县",
+        "value": "540522"
+      },
+      {
+        "label": "桑日县",
+        "value": "540523"
+      },
+      {
+        "label": "琼结县",
+        "value": "540524"
+      },
+      {
+        "label": "曲松县",
+        "value": "540525"
+      },
+      {
+        "label": "措美县",
+        "value": "540526"
+      },
+      {
+        "label": "洛扎县",
+        "value": "540527"
+      },
+      {
+        "label": "加查县",
+        "value": "540528"
+      },
+      {
+        "label": "隆子县",
+        "value": "540529"
+      },
+      {
+        "label": "错那县",
+        "value": "540530"
+      },
+      {
+        "label": "浪卡子县",
+        "value": "540531"
+      }
+    ],
+    [{
+        "label": "那曲县",
+        "value": "542421"
+      },
+      {
+        "label": "嘉黎县",
+        "value": "542422"
+      },
+      {
+        "label": "比如县",
+        "value": "542423"
+      },
+      {
+        "label": "聂荣县",
+        "value": "542424"
+      },
+      {
+        "label": "安多县",
+        "value": "542425"
+      },
+      {
+        "label": "申扎县",
+        "value": "542426"
+      },
+      {
+        "label": "索县",
+        "value": "542427"
+      },
+      {
+        "label": "班戈县",
+        "value": "542428"
+      },
+      {
+        "label": "巴青县",
+        "value": "542429"
+      },
+      {
+        "label": "尼玛县",
+        "value": "542430"
+      },
+      {
+        "label": "双湖县",
+        "value": "542431"
+      }
+    ],
+    [{
+        "label": "普兰县",
+        "value": "542521"
+      },
+      {
+        "label": "札达县",
+        "value": "542522"
+      },
+      {
+        "label": "噶尔县",
+        "value": "542523"
+      },
+      {
+        "label": "日土县",
+        "value": "542524"
+      },
+      {
+        "label": "革吉县",
+        "value": "542525"
+      },
+      {
+        "label": "改则县",
+        "value": "542526"
+      },
+      {
+        "label": "措勤县",
+        "value": "542527"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "新城区",
+        "value": "610102"
+      },
+      {
+        "label": "碑林区",
+        "value": "610103"
+      },
+      {
+        "label": "莲湖区",
+        "value": "610104"
+      },
+      {
+        "label": "灞桥区",
+        "value": "610111"
+      },
+      {
+        "label": "未央区",
+        "value": "610112"
+      },
+      {
+        "label": "雁塔区",
+        "value": "610113"
+      },
+      {
+        "label": "阎良区",
+        "value": "610114"
+      },
+      {
+        "label": "临潼区",
+        "value": "610115"
+      },
+      {
+        "label": "长安区",
+        "value": "610116"
+      },
+      {
+        "label": "高陵区",
+        "value": "610117"
+      },
+      {
+        "label": "鄠邑区",
+        "value": "610118"
+      },
+      {
+        "label": "蓝田县",
+        "value": "610122"
+      },
+      {
+        "label": "周至县",
+        "value": "610124"
+      }
+    ],
+    [{
+        "label": "王益区",
+        "value": "610202"
+      },
+      {
+        "label": "印台区",
+        "value": "610203"
+      },
+      {
+        "label": "耀州区",
+        "value": "610204"
+      },
+      {
+        "label": "宜君县",
+        "value": "610222"
+      }
+    ],
+    [{
+        "label": "渭滨区",
+        "value": "610302"
+      },
+      {
+        "label": "金台区",
+        "value": "610303"
+      },
+      {
+        "label": "陈仓区",
+        "value": "610304"
+      },
+      {
+        "label": "凤翔县",
+        "value": "610322"
+      },
+      {
+        "label": "岐山县",
+        "value": "610323"
+      },
+      {
+        "label": "扶风县",
+        "value": "610324"
+      },
+      {
+        "label": "眉县",
+        "value": "610326"
+      },
+      {
+        "label": "陇县",
+        "value": "610327"
+      },
+      {
+        "label": "千阳县",
+        "value": "610328"
+      },
+      {
+        "label": "麟游县",
+        "value": "610329"
+      },
+      {
+        "label": "凤县",
+        "value": "610330"
+      },
+      {
+        "label": "太白县",
+        "value": "610331"
+      }
+    ],
+    [{
+        "label": "秦都区",
+        "value": "610402"
+      },
+      {
+        "label": "杨陵区",
+        "value": "610403"
+      },
+      {
+        "label": "渭城区",
+        "value": "610404"
+      },
+      {
+        "label": "三原县",
+        "value": "610422"
+      },
+      {
+        "label": "泾阳县",
+        "value": "610423"
+      },
+      {
+        "label": "乾县",
+        "value": "610424"
+      },
+      {
+        "label": "礼泉县",
+        "value": "610425"
+      },
+      {
+        "label": "永寿县",
+        "value": "610426"
+      },
+      {
+        "label": "彬县",
+        "value": "610427"
+      },
+      {
+        "label": "长武县",
+        "value": "610428"
+      },
+      {
+        "label": "旬邑县",
+        "value": "610429"
+      },
+      {
+        "label": "淳化县",
+        "value": "610430"
+      },
+      {
+        "label": "武功县",
+        "value": "610431"
+      },
+      {
+        "label": "兴平市",
+        "value": "610481"
+      }
+    ],
+    [{
+        "label": "临渭区",
+        "value": "610502"
+      },
+      {
+        "label": "华州区",
+        "value": "610503"
+      },
+      {
+        "label": "潼关县",
+        "value": "610522"
+      },
+      {
+        "label": "大荔县",
+        "value": "610523"
+      },
+      {
+        "label": "合阳县",
+        "value": "610524"
+      },
+      {
+        "label": "澄城县",
+        "value": "610525"
+      },
+      {
+        "label": "蒲城县",
+        "value": "610526"
+      },
+      {
+        "label": "白水县",
+        "value": "610527"
+      },
+      {
+        "label": "富平县",
+        "value": "610528"
+      },
+      {
+        "label": "韩城市",
+        "value": "610581"
+      },
+      {
+        "label": "华阴市",
+        "value": "610582"
+      }
+    ],
+    [{
+        "label": "宝塔区",
+        "value": "610602"
+      },
+      {
+        "label": "安塞区",
+        "value": "610603"
+      },
+      {
+        "label": "延长县",
+        "value": "610621"
+      },
+      {
+        "label": "延川县",
+        "value": "610622"
+      },
+      {
+        "label": "子长县",
+        "value": "610623"
+      },
+      {
+        "label": "志丹县",
+        "value": "610625"
+      },
+      {
+        "label": "吴起县",
+        "value": "610626"
+      },
+      {
+        "label": "甘泉县",
+        "value": "610627"
+      },
+      {
+        "label": "富县",
+        "value": "610628"
+      },
+      {
+        "label": "洛川县",
+        "value": "610629"
+      },
+      {
+        "label": "宜川县",
+        "value": "610630"
+      },
+      {
+        "label": "黄龙县",
+        "value": "610631"
+      },
+      {
+        "label": "黄陵县",
+        "value": "610632"
+      }
+    ],
+    [{
+        "label": "汉台区",
+        "value": "610702"
+      },
+      {
+        "label": "南郑区",
+        "value": "610703"
+      },
+      {
+        "label": "城固县",
+        "value": "610722"
+      },
+      {
+        "label": "洋县",
+        "value": "610723"
+      },
+      {
+        "label": "西乡县",
+        "value": "610724"
+      },
+      {
+        "label": "勉县",
+        "value": "610725"
+      },
+      {
+        "label": "宁强县",
+        "value": "610726"
+      },
+      {
+        "label": "略阳县",
+        "value": "610727"
+      },
+      {
+        "label": "镇巴县",
+        "value": "610728"
+      },
+      {
+        "label": "留坝县",
+        "value": "610729"
+      },
+      {
+        "label": "佛坪县",
+        "value": "610730"
+      }
+    ],
+    [{
+        "label": "榆阳区",
+        "value": "610802"
+      },
+      {
+        "label": "横山区",
+        "value": "610803"
+      },
+      {
+        "label": "府谷县",
+        "value": "610822"
+      },
+      {
+        "label": "靖边县",
+        "value": "610824"
+      },
+      {
+        "label": "定边县",
+        "value": "610825"
+      },
+      {
+        "label": "绥德县",
+        "value": "610826"
+      },
+      {
+        "label": "米脂县",
+        "value": "610827"
+      },
+      {
+        "label": "佳县",
+        "value": "610828"
+      },
+      {
+        "label": "吴堡县",
+        "value": "610829"
+      },
+      {
+        "label": "清涧县",
+        "value": "610830"
+      },
+      {
+        "label": "子洲县",
+        "value": "610831"
+      },
+      {
+        "label": "神木市",
+        "value": "610881"
+      }
+    ],
+    [{
+        "label": "汉滨区",
+        "value": "610902"
+      },
+      {
+        "label": "汉阴县",
+        "value": "610921"
+      },
+      {
+        "label": "石泉县",
+        "value": "610922"
+      },
+      {
+        "label": "宁陕县",
+        "value": "610923"
+      },
+      {
+        "label": "紫阳县",
+        "value": "610924"
+      },
+      {
+        "label": "岚皋县",
+        "value": "610925"
+      },
+      {
+        "label": "平利县",
+        "value": "610926"
+      },
+      {
+        "label": "镇坪县",
+        "value": "610927"
+      },
+      {
+        "label": "旬阳县",
+        "value": "610928"
+      },
+      {
+        "label": "白河县",
+        "value": "610929"
+      }
+    ],
+    [{
+        "label": "商州区",
+        "value": "611002"
+      },
+      {
+        "label": "洛南县",
+        "value": "611021"
+      },
+      {
+        "label": "丹凤县",
+        "value": "611022"
+      },
+      {
+        "label": "商南县",
+        "value": "611023"
+      },
+      {
+        "label": "山阳县",
+        "value": "611024"
+      },
+      {
+        "label": "镇安县",
+        "value": "611025"
+      },
+      {
+        "label": "柞水县",
+        "value": "611026"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "城关区",
+        "value": "620102"
+      },
+      {
+        "label": "七里河区",
+        "value": "620103"
+      },
+      {
+        "label": "西固区",
+        "value": "620104"
+      },
+      {
+        "label": "安宁区",
+        "value": "620105"
+      },
+      {
+        "label": "红古区",
+        "value": "620111"
+      },
+      {
+        "label": "永登县",
+        "value": "620121"
+      },
+      {
+        "label": "皋兰县",
+        "value": "620122"
+      },
+      {
+        "label": "榆中县",
+        "value": "620123"
+      },
+      {
+        "label": "兰州新区",
+        "value": "620171"
+      }
+    ],
+    [{
+      "label": "嘉峪关市",
+      "value": "620201"
+    }],
+    [{
+        "label": "金川区",
+        "value": "620302"
+      },
+      {
+        "label": "永昌县",
+        "value": "620321"
+      }
+    ],
+    [{
+        "label": "白银区",
+        "value": "620402"
+      },
+      {
+        "label": "平川区",
+        "value": "620403"
+      },
+      {
+        "label": "靖远县",
+        "value": "620421"
+      },
+      {
+        "label": "会宁县",
+        "value": "620422"
+      },
+      {
+        "label": "景泰县",
+        "value": "620423"
+      }
+    ],
+    [{
+        "label": "秦州区",
+        "value": "620502"
+      },
+      {
+        "label": "麦积区",
+        "value": "620503"
+      },
+      {
+        "label": "清水县",
+        "value": "620521"
+      },
+      {
+        "label": "秦安县",
+        "value": "620522"
+      },
+      {
+        "label": "甘谷县",
+        "value": "620523"
+      },
+      {
+        "label": "武山县",
+        "value": "620524"
+      },
+      {
+        "label": "张家川回族自治县",
+        "value": "620525"
+      }
+    ],
+    [{
+        "label": "凉州区",
+        "value": "620602"
+      },
+      {
+        "label": "民勤县",
+        "value": "620621"
+      },
+      {
+        "label": "古浪县",
+        "value": "620622"
+      },
+      {
+        "label": "天祝藏族自治县",
+        "value": "620623"
+      }
+    ],
+    [{
+        "label": "甘州区",
+        "value": "620702"
+      },
+      {
+        "label": "肃南裕固族自治县",
+        "value": "620721"
+      },
+      {
+        "label": "民乐县",
+        "value": "620722"
+      },
+      {
+        "label": "临泽县",
+        "value": "620723"
+      },
+      {
+        "label": "高台县",
+        "value": "620724"
+      },
+      {
+        "label": "山丹县",
+        "value": "620725"
+      }
+    ],
+    [{
+        "label": "崆峒区",
+        "value": "620802"
+      },
+      {
+        "label": "泾川县",
+        "value": "620821"
+      },
+      {
+        "label": "灵台县",
+        "value": "620822"
+      },
+      {
+        "label": "崇信县",
+        "value": "620823"
+      },
+      {
+        "label": "华亭县",
+        "value": "620824"
+      },
+      {
+        "label": "庄浪县",
+        "value": "620825"
+      },
+      {
+        "label": "静宁县",
+        "value": "620826"
+      },
+      {
+        "label": "平凉工业园区",
+        "value": "620871"
+      }
+    ],
+    [{
+        "label": "肃州区",
+        "value": "620902"
+      },
+      {
+        "label": "金塔县",
+        "value": "620921"
+      },
+      {
+        "label": "瓜州县",
+        "value": "620922"
+      },
+      {
+        "label": "肃北蒙古族自治县",
+        "value": "620923"
+      },
+      {
+        "label": "阿克塞哈萨克族自治县",
+        "value": "620924"
+      },
+      {
+        "label": "玉门市",
+        "value": "620981"
+      },
+      {
+        "label": "敦煌市",
+        "value": "620982"
+      }
+    ],
+    [{
+        "label": "西峰区",
+        "value": "621002"
+      },
+      {
+        "label": "庆城县",
+        "value": "621021"
+      },
+      {
+        "label": "环县",
+        "value": "621022"
+      },
+      {
+        "label": "华池县",
+        "value": "621023"
+      },
+      {
+        "label": "合水县",
+        "value": "621024"
+      },
+      {
+        "label": "正宁县",
+        "value": "621025"
+      },
+      {
+        "label": "宁县",
+        "value": "621026"
+      },
+      {
+        "label": "镇原县",
+        "value": "621027"
+      }
+    ],
+    [{
+        "label": "安定区",
+        "value": "621102"
+      },
+      {
+        "label": "通渭县",
+        "value": "621121"
+      },
+      {
+        "label": "陇西县",
+        "value": "621122"
+      },
+      {
+        "label": "渭源县",
+        "value": "621123"
+      },
+      {
+        "label": "临洮县",
+        "value": "621124"
+      },
+      {
+        "label": "漳县",
+        "value": "621125"
+      },
+      {
+        "label": "岷县",
+        "value": "621126"
+      }
+    ],
+    [{
+        "label": "武都区",
+        "value": "621202"
+      },
+      {
+        "label": "成县",
+        "value": "621221"
+      },
+      {
+        "label": "文县",
+        "value": "621222"
+      },
+      {
+        "label": "宕昌县",
+        "value": "621223"
+      },
+      {
+        "label": "康县",
+        "value": "621224"
+      },
+      {
+        "label": "西和县",
+        "value": "621225"
+      },
+      {
+        "label": "礼县",
+        "value": "621226"
+      },
+      {
+        "label": "徽县",
+        "value": "621227"
+      },
+      {
+        "label": "两当县",
+        "value": "621228"
+      }
+    ],
+    [{
+        "label": "临夏市",
+        "value": "622901"
+      },
+      {
+        "label": "临夏县",
+        "value": "622921"
+      },
+      {
+        "label": "康乐县",
+        "value": "622922"
+      },
+      {
+        "label": "永靖县",
+        "value": "622923"
+      },
+      {
+        "label": "广河县",
+        "value": "622924"
+      },
+      {
+        "label": "和政县",
+        "value": "622925"
+      },
+      {
+        "label": "东乡族自治县",
+        "value": "622926"
+      },
+      {
+        "label": "积石山保安族东乡族撒拉族自治县",
+        "value": "622927"
+      }
+    ],
+    [{
+        "label": "合作市",
+        "value": "623001"
+      },
+      {
+        "label": "临潭县",
+        "value": "623021"
+      },
+      {
+        "label": "卓尼县",
+        "value": "623022"
+      },
+      {
+        "label": "舟曲县",
+        "value": "623023"
+      },
+      {
+        "label": "迭部县",
+        "value": "623024"
+      },
+      {
+        "label": "玛曲县",
+        "value": "623025"
+      },
+      {
+        "label": "碌曲县",
+        "value": "623026"
+      },
+      {
+        "label": "夏河县",
+        "value": "623027"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "城东区",
+        "value": "630102"
+      },
+      {
+        "label": "城中区",
+        "value": "630103"
+      },
+      {
+        "label": "城西区",
+        "value": "630104"
+      },
+      {
+        "label": "城北区",
+        "value": "630105"
+      },
+      {
+        "label": "大通回族土族自治县",
+        "value": "630121"
+      },
+      {
+        "label": "湟中县",
+        "value": "630122"
+      },
+      {
+        "label": "湟源县",
+        "value": "630123"
+      }
+    ],
+    [{
+        "label": "乐都区",
+        "value": "630202"
+      },
+      {
+        "label": "平安区",
+        "value": "630203"
+      },
+      {
+        "label": "民和回族土族自治县",
+        "value": "630222"
+      },
+      {
+        "label": "互助土族自治县",
+        "value": "630223"
+      },
+      {
+        "label": "化隆回族自治县",
+        "value": "630224"
+      },
+      {
+        "label": "循化撒拉族自治县",
+        "value": "630225"
+      }
+    ],
+    [{
+        "label": "门源回族自治县",
+        "value": "632221"
+      },
+      {
+        "label": "祁连县",
+        "value": "632222"
+      },
+      {
+        "label": "海晏县",
+        "value": "632223"
+      },
+      {
+        "label": "刚察县",
+        "value": "632224"
+      }
+    ],
+    [{
+        "label": "同仁县",
+        "value": "632321"
+      },
+      {
+        "label": "尖扎县",
+        "value": "632322"
+      },
+      {
+        "label": "泽库县",
+        "value": "632323"
+      },
+      {
+        "label": "河南蒙古族自治县",
+        "value": "632324"
+      }
+    ],
+    [{
+        "label": "共和县",
+        "value": "632521"
+      },
+      {
+        "label": "同德县",
+        "value": "632522"
+      },
+      {
+        "label": "贵德县",
+        "value": "632523"
+      },
+      {
+        "label": "兴海县",
+        "value": "632524"
+      },
+      {
+        "label": "贵南县",
+        "value": "632525"
+      }
+    ],
+    [{
+        "label": "玛沁县",
+        "value": "632621"
+      },
+      {
+        "label": "班玛县",
+        "value": "632622"
+      },
+      {
+        "label": "甘德县",
+        "value": "632623"
+      },
+      {
+        "label": "达日县",
+        "value": "632624"
+      },
+      {
+        "label": "久治县",
+        "value": "632625"
+      },
+      {
+        "label": "玛多县",
+        "value": "632626"
+      }
+    ],
+    [{
+        "label": "玉树市",
+        "value": "632701"
+      },
+      {
+        "label": "杂多县",
+        "value": "632722"
+      },
+      {
+        "label": "称多县",
+        "value": "632723"
+      },
+      {
+        "label": "治多县",
+        "value": "632724"
+      },
+      {
+        "label": "囊谦县",
+        "value": "632725"
+      },
+      {
+        "label": "曲麻莱县",
+        "value": "632726"
+      }
+    ],
+    [{
+        "label": "格尔木市",
+        "value": "632801"
+      },
+      {
+        "label": "德令哈市",
+        "value": "632802"
+      },
+      {
+        "label": "乌兰县",
+        "value": "632821"
+      },
+      {
+        "label": "都兰县",
+        "value": "632822"
+      },
+      {
+        "label": "天峻县",
+        "value": "632823"
+      },
+      {
+        "label": "大柴旦行政委员会",
+        "value": "632857"
+      },
+      {
+        "label": "冷湖行政委员会",
+        "value": "632858"
+      },
+      {
+        "label": "茫崖行政委员会",
+        "value": "632859"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "兴庆区",
+        "value": "640104"
+      },
+      {
+        "label": "西夏区",
+        "value": "640105"
+      },
+      {
+        "label": "金凤区",
+        "value": "640106"
+      },
+      {
+        "label": "永宁县",
+        "value": "640121"
+      },
+      {
+        "label": "贺兰县",
+        "value": "640122"
+      },
+      {
+        "label": "灵武市",
+        "value": "640181"
+      }
+    ],
+    [{
+        "label": "大武口区",
+        "value": "640202"
+      },
+      {
+        "label": "惠农区",
+        "value": "640205"
+      },
+      {
+        "label": "平罗县",
+        "value": "640221"
+      }
+    ],
+    [{
+        "label": "利通区",
+        "value": "640302"
+      },
+      {
+        "label": "红寺堡区",
+        "value": "640303"
+      },
+      {
+        "label": "盐池县",
+        "value": "640323"
+      },
+      {
+        "label": "同心县",
+        "value": "640324"
+      },
+      {
+        "label": "青铜峡市",
+        "value": "640381"
+      }
+    ],
+    [{
+        "label": "原州区",
+        "value": "640402"
+      },
+      {
+        "label": "西吉县",
+        "value": "640422"
+      },
+      {
+        "label": "隆德县",
+        "value": "640423"
+      },
+      {
+        "label": "泾源县",
+        "value": "640424"
+      },
+      {
+        "label": "彭阳县",
+        "value": "640425"
+      }
+    ],
+    [{
+        "label": "沙坡头区",
+        "value": "640502"
+      },
+      {
+        "label": "中宁县",
+        "value": "640521"
+      },
+      {
+        "label": "海原县",
+        "value": "640522"
+      }
+    ]
+  ],
+  [
+    [{
+        "label": "天山区",
+        "value": "650102"
+      },
+      {
+        "label": "沙依巴克区",
+        "value": "650103"
+      },
+      {
+        "label": "新市区",
+        "value": "650104"
+      },
+      {
+        "label": "水磨沟区",
+        "value": "650105"
+      },
+      {
+        "label": "头屯河区",
+        "value": "650106"
+      },
+      {
+        "label": "达坂城区",
+        "value": "650107"
+      },
+      {
+        "label": "米东区",
+        "value": "650109"
+      },
+      {
+        "label": "乌鲁木齐县",
+        "value": "650121"
+      },
+      {
+        "label": "乌鲁木齐经济技术开发区",
+        "value": "650171"
+      },
+      {
+        "label": "乌鲁木齐高新技术产业开发区",
+        "value": "650172"
+      }
+    ],
+    [{
+        "label": "独山子区",
+        "value": "650202"
+      },
+      {
+        "label": "克拉玛依区",
+        "value": "650203"
+      },
+      {
+        "label": "白碱滩区",
+        "value": "650204"
+      },
+      {
+        "label": "乌尔禾区",
+        "value": "650205"
+      }
+    ],
+    [{
+        "label": "高昌区",
+        "value": "650402"
+      },
+      {
+        "label": "鄯善县",
+        "value": "650421"
+      },
+      {
+        "label": "托克逊县",
+        "value": "650422"
+      }
+    ],
+    [{
+        "label": "伊州区",
+        "value": "650502"
+      },
+      {
+        "label": "巴里坤哈萨克自治县",
+        "value": "650521"
+      },
+      {
+        "label": "伊吾县",
+        "value": "650522"
+      }
+    ],
+    [{
+        "label": "昌吉市",
+        "value": "652301"
+      },
+      {
+        "label": "阜康市",
+        "value": "652302"
+      },
+      {
+        "label": "呼图壁县",
+        "value": "652323"
+      },
+      {
+        "label": "玛纳斯县",
+        "value": "652324"
+      },
+      {
+        "label": "奇台县",
+        "value": "652325"
+      },
+      {
+        "label": "吉木萨尔县",
+        "value": "652327"
+      },
+      {
+        "label": "木垒哈萨克自治县",
+        "value": "652328"
+      }
+    ],
+    [{
+        "label": "博乐市",
+        "value": "652701"
+      },
+      {
+        "label": "阿拉山口市",
+        "value": "652702"
+      },
+      {
+        "label": "精河县",
+        "value": "652722"
+      },
+      {
+        "label": "温泉县",
+        "value": "652723"
+      }
+    ],
+    [{
+        "label": "库尔勒市",
+        "value": "652801"
+      },
+      {
+        "label": "轮台县",
+        "value": "652822"
+      },
+      {
+        "label": "尉犁县",
+        "value": "652823"
+      },
+      {
+        "label": "若羌县",
+        "value": "652824"
+      },
+      {
+        "label": "且末县",
+        "value": "652825"
+      },
+      {
+        "label": "焉耆回族自治县",
+        "value": "652826"
+      },
+      {
+        "label": "和静县",
+        "value": "652827"
+      },
+      {
+        "label": "和硕县",
+        "value": "652828"
+      },
+      {
+        "label": "博湖县",
+        "value": "652829"
+      },
+      {
+        "label": "库尔勒经济技术开发区",
+        "value": "652871"
+      }
+    ],
+    [{
+        "label": "阿克苏市",
+        "value": "652901"
+      },
+      {
+        "label": "温宿县",
+        "value": "652922"
+      },
+      {
+        "label": "库车县",
+        "value": "652923"
+      },
+      {
+        "label": "沙雅县",
+        "value": "652924"
+      },
+      {
+        "label": "新和县",
+        "value": "652925"
+      },
+      {
+        "label": "拜城县",
+        "value": "652926"
+      },
+      {
+        "label": "乌什县",
+        "value": "652927"
+      },
+      {
+        "label": "阿瓦提县",
+        "value": "652928"
+      },
+      {
+        "label": "柯坪县",
+        "value": "652929"
+      }
+    ],
+    [{
+        "label": "阿图什市",
+        "value": "653001"
+      },
+      {
+        "label": "阿克陶县",
+        "value": "653022"
+      },
+      {
+        "label": "阿合奇县",
+        "value": "653023"
+      },
+      {
+        "label": "乌恰县",
+        "value": "653024"
+      }
+    ],
+    [{
+        "label": "喀什市",
+        "value": "653101"
+      },
+      {
+        "label": "疏附县",
+        "value": "653121"
+      },
+      {
+        "label": "疏勒县",
+        "value": "653122"
+      },
+      {
+        "label": "英吉沙县",
+        "value": "653123"
+      },
+      {
+        "label": "泽普县",
+        "value": "653124"
+      },
+      {
+        "label": "莎车县",
+        "value": "653125"
+      },
+      {
+        "label": "叶城县",
+        "value": "653126"
+      },
+      {
+        "label": "麦盖提县",
+        "value": "653127"
+      },
+      {
+        "label": "岳普湖县",
+        "value": "653128"
+      },
+      {
+        "label": "伽师县",
+        "value": "653129"
+      },
+      {
+        "label": "巴楚县",
+        "value": "653130"
+      },
+      {
+        "label": "塔什库尔干塔吉克自治县",
+        "value": "653131"
+      }
+    ],
+    [{
+        "label": "和田市",
+        "value": "653201"
+      },
+      {
+        "label": "和田县",
+        "value": "653221"
+      },
+      {
+        "label": "墨玉县",
+        "value": "653222"
+      },
+      {
+        "label": "皮山县",
+        "value": "653223"
+      },
+      {
+        "label": "洛浦县",
+        "value": "653224"
+      },
+      {
+        "label": "策勒县",
+        "value": "653225"
+      },
+      {
+        "label": "于田县",
+        "value": "653226"
+      },
+      {
+        "label": "民丰县",
+        "value": "653227"
+      }
+    ],
+    [{
+        "label": "伊宁市",
+        "value": "654002"
+      },
+      {
+        "label": "奎屯市",
+        "value": "654003"
+      },
+      {
+        "label": "霍尔果斯市",
+        "value": "654004"
+      },
+      {
+        "label": "伊宁县",
+        "value": "654021"
+      },
+      {
+        "label": "察布查尔锡伯自治县",
+        "value": "654022"
+      },
+      {
+        "label": "霍城县",
+        "value": "654023"
+      },
+      {
+        "label": "巩留县",
+        "value": "654024"
+      },
+      {
+        "label": "新源县",
+        "value": "654025"
+      },
+      {
+        "label": "昭苏县",
+        "value": "654026"
+      },
+      {
+        "label": "特克斯县",
+        "value": "654027"
+      },
+      {
+        "label": "尼勒克县",
+        "value": "654028"
+      }
+    ],
+    [{
+        "label": "塔城市",
+        "value": "654201"
+      },
+      {
+        "label": "乌苏市",
+        "value": "654202"
+      },
+      {
+        "label": "额敏县",
+        "value": "654221"
+      },
+      {
+        "label": "沙湾县",
+        "value": "654223"
+      },
+      {
+        "label": "托里县",
+        "value": "654224"
+      },
+      {
+        "label": "裕民县",
+        "value": "654225"
+      },
+      {
+        "label": "和布克赛尔蒙古自治县",
+        "value": "654226"
+      }
+    ],
+    [{
+        "label": "阿勒泰市",
+        "value": "654301"
+      },
+      {
+        "label": "布尔津县",
+        "value": "654321"
+      },
+      {
+        "label": "富蕴县",
+        "value": "654322"
+      },
+      {
+        "label": "福海县",
+        "value": "654323"
+      },
+      {
+        "label": "哈巴河县",
+        "value": "654324"
+      },
+      {
+        "label": "青河县",
+        "value": "654325"
+      },
+      {
+        "label": "吉木乃县",
+        "value": "654326"
+      }
+    ],
+    [{
+        "label": "石河子市",
+        "value": "659001"
+      },
+      {
+        "label": "阿拉尔市",
+        "value": "659002"
+      },
+      {
+        "label": "图木舒克市",
+        "value": "659003"
+      },
+      {
+        "label": "五家渠市",
+        "value": "659004"
+      },
+      {
+        "label": "铁门关市",
+        "value": "659006"
+      }
+    ]
+  ],
+  [
+    [{
+      "label": "台北",
+      "value": "660101"
+    }],
+    [{
+      "label": "高雄",
+      "value": "660201"
+    }],
+    [{
+      "label": "基隆",
+      "value": "660301"
+    }],
+    [{
+      "label": "台中",
+      "value": "660401"
+    }],
+    [{
+      "label": "台南",
+      "value": "660501"
+    }],
+    [{
+      "label": "新竹",
+      "value": "660601"
+    }],
+    [{
+      "label": "嘉义",
+      "value": "660701"
+    }],
+    [{
+      "label": "宜兰",
+      "value": "660801"
+    }],
+    [{
+      "label": "桃园",
+      "value": "660901"
+    }],
+    [{
+      "label": "苗栗",
+      "value": "661001"
+    }],
+    [{
+      "label": "彰化",
+      "value": "661101"
+    }],
+    [{
+      "label": "南投",
+      "value": "661201"
+    }],
+    [{
+      "label": "云林",
+      "value": "661301"
+    }],
+    [{
+      "label": "屏东",
+      "value": "661401"
+    }],
+    [{
+      "label": "台东",
+      "value": "661501"
+    }],
+    [{
+      "label": "花莲",
+      "value": "661601"
+    }],
+    [{
+      "label": "澎湖",
+      "value": "661701"
+    }]
+  ],
+  [
+    [{
+      "label": "香港岛",
+      "value": "670101"
+    }],
+    [{
+      "label": "九龙",
+      "value": "670201"
+    }],
+    [{
+      "label": "新界",
+      "value": "670301"
+    }]
+  ],
+  [
+    [{
+      "label": "澳门半岛",
+      "value": "680101"
+    }],
+    [{
+      "label": "氹仔岛",
+      "value": "680201"
+    }],
+    [{
+      "label": "路环岛",
+      "value": "680301"
+    }],
+    [{
+      "label": "路氹城",
+      "value": "680401"
+    }]
+  ]
+]
+export default areaData;
diff --git a/components/mpvue-citypicker/city-data/city.js b/components/mpvue-citypicker/city-data/city.js
new file mode 100644
index 0000000..8c1dc26
--- /dev/null
+++ b/components/mpvue-citypicker/city-data/city.js
@@ -0,0 +1,1503 @@
+/* eslint-disable */
+var cityData = [
+  [{
+    "label": "市辖区",
+    "value": "1101"
+  }],
+  [{
+    "label": "市辖区",
+    "value": "1201"
+  }],
+  [{
+      "label": "石家庄市",
+      "value": "1301"
+    },
+    {
+      "label": "唐山市",
+      "value": "1302"
+    },
+    {
+      "label": "秦皇岛市",
+      "value": "1303"
+    },
+    {
+      "label": "邯郸市",
+      "value": "1304"
+    },
+    {
+      "label": "邢台市",
+      "value": "1305"
+    },
+    {
+      "label": "保定市",
+      "value": "1306"
+    },
+    {
+      "label": "张家口市",
+      "value": "1307"
+    },
+    {
+      "label": "承德市",
+      "value": "1308"
+    },
+    {
+      "label": "沧州市",
+      "value": "1309"
+    },
+    {
+      "label": "廊坊市",
+      "value": "1310"
+    },
+    {
+      "label": "衡水市",
+      "value": "1311"
+    }
+  ],
+  [{
+      "label": "太原市",
+      "value": "1401"
+    },
+    {
+      "label": "大同市",
+      "value": "1402"
+    },
+    {
+      "label": "阳泉市",
+      "value": "1403"
+    },
+    {
+      "label": "长治市",
+      "value": "1404"
+    },
+    {
+      "label": "晋城市",
+      "value": "1405"
+    },
+    {
+      "label": "朔州市",
+      "value": "1406"
+    },
+    {
+      "label": "晋中市",
+      "value": "1407"
+    },
+    {
+      "label": "运城市",
+      "value": "1408"
+    },
+    {
+      "label": "忻州市",
+      "value": "1409"
+    },
+    {
+      "label": "临汾市",
+      "value": "1410"
+    },
+    {
+      "label": "吕梁市",
+      "value": "1411"
+    }
+  ],
+  [{
+      "label": "呼和浩特市",
+      "value": "1501"
+    },
+    {
+      "label": "包头市",
+      "value": "1502"
+    },
+    {
+      "label": "乌海市",
+      "value": "1503"
+    },
+    {
+      "label": "赤峰市",
+      "value": "1504"
+    },
+    {
+      "label": "通辽市",
+      "value": "1505"
+    },
+    {
+      "label": "鄂尔多斯市",
+      "value": "1506"
+    },
+    {
+      "label": "呼伦贝尔市",
+      "value": "1507"
+    },
+    {
+      "label": "巴彦淖尔市",
+      "value": "1508"
+    },
+    {
+      "label": "乌兰察布市",
+      "value": "1509"
+    },
+    {
+      "label": "兴安盟",
+      "value": "1522"
+    },
+    {
+      "label": "锡林郭勒盟",
+      "value": "1525"
+    },
+    {
+      "label": "阿拉善盟",
+      "value": "1529"
+    }
+  ],
+  [{
+      "label": "沈阳市",
+      "value": "2101"
+    },
+    {
+      "label": "大连市",
+      "value": "2102"
+    },
+    {
+      "label": "鞍山市",
+      "value": "2103"
+    },
+    {
+      "label": "抚顺市",
+      "value": "2104"
+    },
+    {
+      "label": "本溪市",
+      "value": "2105"
+    },
+    {
+      "label": "丹东市",
+      "value": "2106"
+    },
+    {
+      "label": "锦州市",
+      "value": "2107"
+    },
+    {
+      "label": "营口市",
+      "value": "2108"
+    },
+    {
+      "label": "阜新市",
+      "value": "2109"
+    },
+    {
+      "label": "辽阳市",
+      "value": "2110"
+    },
+    {
+      "label": "盘锦市",
+      "value": "2111"
+    },
+    {
+      "label": "铁岭市",
+      "value": "2112"
+    },
+    {
+      "label": "朝阳市",
+      "value": "2113"
+    },
+    {
+      "label": "葫芦岛市",
+      "value": "2114"
+    }
+  ],
+  [{
+      "label": "长春市",
+      "value": "2201"
+    },
+    {
+      "label": "吉林市",
+      "value": "2202"
+    },
+    {
+      "label": "四平市",
+      "value": "2203"
+    },
+    {
+      "label": "辽源市",
+      "value": "2204"
+    },
+    {
+      "label": "通化市",
+      "value": "2205"
+    },
+    {
+      "label": "白山市",
+      "value": "2206"
+    },
+    {
+      "label": "松原市",
+      "value": "2207"
+    },
+    {
+      "label": "白城市",
+      "value": "2208"
+    },
+    {
+      "label": "延边朝鲜族自治州",
+      "value": "2224"
+    }
+  ],
+  [{
+      "label": "哈尔滨市",
+      "value": "2301"
+    },
+    {
+      "label": "齐齐哈尔市",
+      "value": "2302"
+    },
+    {
+      "label": "鸡西市",
+      "value": "2303"
+    },
+    {
+      "label": "鹤岗市",
+      "value": "2304"
+    },
+    {
+      "label": "双鸭山市",
+      "value": "2305"
+    },
+    {
+      "label": "大庆市",
+      "value": "2306"
+    },
+    {
+      "label": "伊春市",
+      "value": "2307"
+    },
+    {
+      "label": "佳木斯市",
+      "value": "2308"
+    },
+    {
+      "label": "七台河市",
+      "value": "2309"
+    },
+    {
+      "label": "牡丹江市",
+      "value": "2310"
+    },
+    {
+      "label": "黑河市",
+      "value": "2311"
+    },
+    {
+      "label": "绥化市",
+      "value": "2312"
+    },
+    {
+      "label": "大兴安岭地区",
+      "value": "2327"
+    }
+  ],
+  [{
+    "label": "市辖区",
+    "value": "3101"
+  }],
+  [{
+      "label": "南京市",
+      "value": "3201"
+    },
+    {
+      "label": "无锡市",
+      "value": "3202"
+    },
+    {
+      "label": "徐州市",
+      "value": "3203"
+    },
+    {
+      "label": "常州市",
+      "value": "3204"
+    },
+    {
+      "label": "苏州市",
+      "value": "3205"
+    },
+    {
+      "label": "南通市",
+      "value": "3206"
+    },
+    {
+      "label": "连云港市",
+      "value": "3207"
+    },
+    {
+      "label": "淮安市",
+      "value": "3208"
+    },
+    {
+      "label": "盐城市",
+      "value": "3209"
+    },
+    {
+      "label": "扬州市",
+      "value": "3210"
+    },
+    {
+      "label": "镇江市",
+      "value": "3211"
+    },
+    {
+      "label": "泰州市",
+      "value": "3212"
+    },
+    {
+      "label": "宿迁市",
+      "value": "3213"
+    }
+  ],
+  [{
+      "label": "杭州市",
+      "value": "3301"
+    },
+    {
+      "label": "宁波市",
+      "value": "3302"
+    },
+    {
+      "label": "温州市",
+      "value": "3303"
+    },
+    {
+      "label": "嘉兴市",
+      "value": "3304"
+    },
+    {
+      "label": "湖州市",
+      "value": "3305"
+    },
+    {
+      "label": "绍兴市",
+      "value": "3306"
+    },
+    {
+      "label": "金华市",
+      "value": "3307"
+    },
+    {
+      "label": "衢州市",
+      "value": "3308"
+    },
+    {
+      "label": "舟山市",
+      "value": "3309"
+    },
+    {
+      "label": "台州市",
+      "value": "3310"
+    },
+    {
+      "label": "丽水市",
+      "value": "3311"
+    }
+  ],
+  [{
+      "label": "合肥市",
+      "value": "3401"
+    },
+    {
+      "label": "芜湖市",
+      "value": "3402"
+    },
+    {
+      "label": "蚌埠市",
+      "value": "3403"
+    },
+    {
+      "label": "淮南市",
+      "value": "3404"
+    },
+    {
+      "label": "马鞍山市",
+      "value": "3405"
+    },
+    {
+      "label": "淮北市",
+      "value": "3406"
+    },
+    {
+      "label": "铜陵市",
+      "value": "3407"
+    },
+    {
+      "label": "安庆市",
+      "value": "3408"
+    },
+    {
+      "label": "黄山市",
+      "value": "3410"
+    },
+    {
+      "label": "滁州市",
+      "value": "3411"
+    },
+    {
+      "label": "阜阳市",
+      "value": "3412"
+    },
+    {
+      "label": "宿州市",
+      "value": "3413"
+    },
+    {
+      "label": "六安市",
+      "value": "3415"
+    },
+    {
+      "label": "亳州市",
+      "value": "3416"
+    },
+    {
+      "label": "池州市",
+      "value": "3417"
+    },
+    {
+      "label": "宣城市",
+      "value": "3418"
+    }
+  ],
+  [{
+      "label": "福州市",
+      "value": "3501"
+    },
+    {
+      "label": "厦门市",
+      "value": "3502"
+    },
+    {
+      "label": "莆田市",
+      "value": "3503"
+    },
+    {
+      "label": "三明市",
+      "value": "3504"
+    },
+    {
+      "label": "泉州市",
+      "value": "3505"
+    },
+    {
+      "label": "漳州市",
+      "value": "3506"
+    },
+    {
+      "label": "南平市",
+      "value": "3507"
+    },
+    {
+      "label": "龙岩市",
+      "value": "3508"
+    },
+    {
+      "label": "宁德市",
+      "value": "3509"
+    }
+  ],
+  [{
+      "label": "南昌市",
+      "value": "3601"
+    },
+    {
+      "label": "景德镇市",
+      "value": "3602"
+    },
+    {
+      "label": "萍乡市",
+      "value": "3603"
+    },
+    {
+      "label": "九江市",
+      "value": "3604"
+    },
+    {
+      "label": "新余市",
+      "value": "3605"
+    },
+    {
+      "label": "鹰潭市",
+      "value": "3606"
+    },
+    {
+      "label": "赣州市",
+      "value": "3607"
+    },
+    {
+      "label": "吉安市",
+      "value": "3608"
+    },
+    {
+      "label": "宜春市",
+      "value": "3609"
+    },
+    {
+      "label": "抚州市",
+      "value": "3610"
+    },
+    {
+      "label": "上饶市",
+      "value": "3611"
+    }
+  ],
+  [{
+      "label": "济南市",
+      "value": "3701"
+    },
+    {
+      "label": "青岛市",
+      "value": "3702"
+    },
+    {
+      "label": "淄博市",
+      "value": "3703"
+    },
+    {
+      "label": "枣庄市",
+      "value": "3704"
+    },
+    {
+      "label": "东营市",
+      "value": "3705"
+    },
+    {
+      "label": "烟台市",
+      "value": "3706"
+    },
+    {
+      "label": "潍坊市",
+      "value": "3707"
+    },
+    {
+      "label": "济宁市",
+      "value": "3708"
+    },
+    {
+      "label": "泰安市",
+      "value": "3709"
+    },
+    {
+      "label": "威海市",
+      "value": "3710"
+    },
+    {
+      "label": "日照市",
+      "value": "3711"
+    },
+    {
+      "label": "莱芜市",
+      "value": "3712"
+    },
+    {
+      "label": "临沂市",
+      "value": "3713"
+    },
+    {
+      "label": "德州市",
+      "value": "3714"
+    },
+    {
+      "label": "聊城市",
+      "value": "3715"
+    },
+    {
+      "label": "滨州市",
+      "value": "3716"
+    },
+    {
+      "label": "菏泽市",
+      "value": "3717"
+    }
+  ],
+  [{
+      "label": "郑州市",
+      "value": "4101"
+    },
+    {
+      "label": "开封市",
+      "value": "4102"
+    },
+    {
+      "label": "洛阳市",
+      "value": "4103"
+    },
+    {
+      "label": "平顶山市",
+      "value": "4104"
+    },
+    {
+      "label": "安阳市",
+      "value": "4105"
+    },
+    {
+      "label": "鹤壁市",
+      "value": "4106"
+    },
+    {
+      "label": "新乡市",
+      "value": "4107"
+    },
+    {
+      "label": "焦作市",
+      "value": "4108"
+    },
+    {
+      "label": "濮阳市",
+      "value": "4109"
+    },
+    {
+      "label": "许昌市",
+      "value": "4110"
+    },
+    {
+      "label": "漯河市",
+      "value": "4111"
+    },
+    {
+      "label": "三门峡市",
+      "value": "4112"
+    },
+    {
+      "label": "南阳市",
+      "value": "4113"
+    },
+    {
+      "label": "商丘市",
+      "value": "4114"
+    },
+    {
+      "label": "信阳市",
+      "value": "4115"
+    },
+    {
+      "label": "周口市",
+      "value": "4116"
+    },
+    {
+      "label": "驻马店市",
+      "value": "4117"
+    },
+    {
+      "label": "省直辖县级行政区划",
+      "value": "4190"
+    }
+  ],
+  [{
+      "label": "武汉市",
+      "value": "4201"
+    },
+    {
+      "label": "黄石市",
+      "value": "4202"
+    },
+    {
+      "label": "十堰市",
+      "value": "4203"
+    },
+    {
+      "label": "宜昌市",
+      "value": "4205"
+    },
+    {
+      "label": "襄阳市",
+      "value": "4206"
+    },
+    {
+      "label": "鄂州市",
+      "value": "4207"
+    },
+    {
+      "label": "荆门市",
+      "value": "4208"
+    },
+    {
+      "label": "孝感市",
+      "value": "4209"
+    },
+    {
+      "label": "荆州市",
+      "value": "4210"
+    },
+    {
+      "label": "黄冈市",
+      "value": "4211"
+    },
+    {
+      "label": "咸宁市",
+      "value": "4212"
+    },
+    {
+      "label": "随州市",
+      "value": "4213"
+    },
+    {
+      "label": "恩施土家族苗族自治州",
+      "value": "4228"
+    },
+    {
+      "label": "省直辖县级行政区划",
+      "value": "4290"
+    }
+  ],
+  [{
+      "label": "长沙市",
+      "value": "4301"
+    },
+    {
+      "label": "株洲市",
+      "value": "4302"
+    },
+    {
+      "label": "湘潭市",
+      "value": "4303"
+    },
+    {
+      "label": "衡阳市",
+      "value": "4304"
+    },
+    {
+      "label": "邵阳市",
+      "value": "4305"
+    },
+    {
+      "label": "岳阳市",
+      "value": "4306"
+    },
+    {
+      "label": "常德市",
+      "value": "4307"
+    },
+    {
+      "label": "张家界市",
+      "value": "4308"
+    },
+    {
+      "label": "益阳市",
+      "value": "4309"
+    },
+    {
+      "label": "郴州市",
+      "value": "4310"
+    },
+    {
+      "label": "永州市",
+      "value": "4311"
+    },
+    {
+      "label": "怀化市",
+      "value": "4312"
+    },
+    {
+      "label": "娄底市",
+      "value": "4313"
+    },
+    {
+      "label": "湘西土家族苗族自治州",
+      "value": "4331"
+    }
+  ],
+  [{
+      "label": "广州市",
+      "value": "4401"
+    },
+    {
+      "label": "韶关市",
+      "value": "4402"
+    },
+    {
+      "label": "深圳市",
+      "value": "4403"
+    },
+    {
+      "label": "珠海市",
+      "value": "4404"
+    },
+    {
+      "label": "汕头市",
+      "value": "4405"
+    },
+    {
+      "label": "佛山市",
+      "value": "4406"
+    },
+    {
+      "label": "江门市",
+      "value": "4407"
+    },
+    {
+      "label": "湛江市",
+      "value": "4408"
+    },
+    {
+      "label": "茂名市",
+      "value": "4409"
+    },
+    {
+      "label": "肇庆市",
+      "value": "4412"
+    },
+    {
+      "label": "惠州市",
+      "value": "4413"
+    },
+    {
+      "label": "梅州市",
+      "value": "4414"
+    },
+    {
+      "label": "汕尾市",
+      "value": "4415"
+    },
+    {
+      "label": "河源市",
+      "value": "4416"
+    },
+    {
+      "label": "阳江市",
+      "value": "4417"
+    },
+    {
+      "label": "清远市",
+      "value": "4418"
+    },
+    {
+      "label": "东莞市",
+      "value": "4419"
+    },
+    {
+      "label": "中山市",
+      "value": "4420"
+    },
+    {
+      "label": "潮州市",
+      "value": "4451"
+    },
+    {
+      "label": "揭阳市",
+      "value": "4452"
+    },
+    {
+      "label": "云浮市",
+      "value": "4453"
+    }
+  ],
+  [{
+      "label": "南宁市",
+      "value": "4501"
+    },
+    {
+      "label": "柳州市",
+      "value": "4502"
+    },
+    {
+      "label": "桂林市",
+      "value": "4503"
+    },
+    {
+      "label": "梧州市",
+      "value": "4504"
+    },
+    {
+      "label": "北海市",
+      "value": "4505"
+    },
+    {
+      "label": "防城港市",
+      "value": "4506"
+    },
+    {
+      "label": "钦州市",
+      "value": "4507"
+    },
+    {
+      "label": "贵港市",
+      "value": "4508"
+    },
+    {
+      "label": "玉林市",
+      "value": "4509"
+    },
+    {
+      "label": "百色市",
+      "value": "4510"
+    },
+    {
+      "label": "贺州市",
+      "value": "4511"
+    },
+    {
+      "label": "河池市",
+      "value": "4512"
+    },
+    {
+      "label": "来宾市",
+      "value": "4513"
+    },
+    {
+      "label": "崇左市",
+      "value": "4514"
+    }
+  ],
+  [{
+      "label": "海口市",
+      "value": "4601"
+    },
+    {
+      "label": "三亚市",
+      "value": "4602"
+    },
+    {
+      "label": "三沙市",
+      "value": "4603"
+    },
+    {
+      "label": "儋州市",
+      "value": "4604"
+    },
+    {
+      "label": "省直辖县级行政区划",
+      "value": "4690"
+    }
+  ],
+  [{
+      "label": "市辖区",
+      "value": "5001"
+    },
+    {
+      "label": "县",
+      "value": "5002"
+    }
+  ],
+  [{
+      "label": "成都市",
+      "value": "5101"
+    },
+    {
+      "label": "自贡市",
+      "value": "5103"
+    },
+    {
+      "label": "攀枝花市",
+      "value": "5104"
+    },
+    {
+      "label": "泸州市",
+      "value": "5105"
+    },
+    {
+      "label": "德阳市",
+      "value": "5106"
+    },
+    {
+      "label": "绵阳市",
+      "value": "5107"
+    },
+    {
+      "label": "广元市",
+      "value": "5108"
+    },
+    {
+      "label": "遂宁市",
+      "value": "5109"
+    },
+    {
+      "label": "内江市",
+      "value": "5110"
+    },
+    {
+      "label": "乐山市",
+      "value": "5111"
+    },
+    {
+      "label": "南充市",
+      "value": "5113"
+    },
+    {
+      "label": "眉山市",
+      "value": "5114"
+    },
+    {
+      "label": "宜宾市",
+      "value": "5115"
+    },
+    {
+      "label": "广安市",
+      "value": "5116"
+    },
+    {
+      "label": "达州市",
+      "value": "5117"
+    },
+    {
+      "label": "雅安市",
+      "value": "5118"
+    },
+    {
+      "label": "巴中市",
+      "value": "5119"
+    },
+    {
+      "label": "资阳市",
+      "value": "5120"
+    },
+    {
+      "label": "阿坝藏族羌族自治州",
+      "value": "5132"
+    },
+    {
+      "label": "甘孜藏族自治州",
+      "value": "5133"
+    },
+    {
+      "label": "凉山彝族自治州",
+      "value": "5134"
+    }
+  ],
+  [{
+      "label": "贵阳市",
+      "value": "5201"
+    },
+    {
+      "label": "六盘水市",
+      "value": "5202"
+    },
+    {
+      "label": "遵义市",
+      "value": "5203"
+    },
+    {
+      "label": "安顺市",
+      "value": "5204"
+    },
+    {
+      "label": "毕节市",
+      "value": "5205"
+    },
+    {
+      "label": "铜仁市",
+      "value": "5206"
+    },
+    {
+      "label": "黔西南布依族苗族自治州",
+      "value": "5223"
+    },
+    {
+      "label": "黔东南苗族侗族自治州",
+      "value": "5226"
+    },
+    {
+      "label": "黔南布依族苗族自治州",
+      "value": "5227"
+    }
+  ],
+  [{
+      "label": "昆明市",
+      "value": "5301"
+    },
+    {
+      "label": "曲靖市",
+      "value": "5303"
+    },
+    {
+      "label": "玉溪市",
+      "value": "5304"
+    },
+    {
+      "label": "保山市",
+      "value": "5305"
+    },
+    {
+      "label": "昭通市",
+      "value": "5306"
+    },
+    {
+      "label": "丽江市",
+      "value": "5307"
+    },
+    {
+      "label": "普洱市",
+      "value": "5308"
+    },
+    {
+      "label": "临沧市",
+      "value": "5309"
+    },
+    {
+      "label": "楚雄彝族自治州",
+      "value": "5323"
+    },
+    {
+      "label": "红河哈尼族彝族自治州",
+      "value": "5325"
+    },
+    {
+      "label": "文山壮族苗族自治州",
+      "value": "5326"
+    },
+    {
+      "label": "西双版纳傣族自治州",
+      "value": "5328"
+    },
+    {
+      "label": "大理白族自治州",
+      "value": "5329"
+    },
+    {
+      "label": "德宏傣族景颇族自治州",
+      "value": "5331"
+    },
+    {
+      "label": "怒江傈僳族自治州",
+      "value": "5333"
+    },
+    {
+      "label": "迪庆藏族自治州",
+      "value": "5334"
+    }
+  ],
+  [{
+      "label": "拉萨市",
+      "value": "5401"
+    },
+    {
+      "label": "日喀则市",
+      "value": "5402"
+    },
+    {
+      "label": "昌都市",
+      "value": "5403"
+    },
+    {
+      "label": "林芝市",
+      "value": "5404"
+    },
+    {
+      "label": "山南市",
+      "value": "5405"
+    },
+    {
+      "label": "那曲地区",
+      "value": "5424"
+    },
+    {
+      "label": "阿里地区",
+      "value": "5425"
+    }
+  ],
+  [{
+      "label": "西安市",
+      "value": "6101"
+    },
+    {
+      "label": "铜川市",
+      "value": "6102"
+    },
+    {
+      "label": "宝鸡市",
+      "value": "6103"
+    },
+    {
+      "label": "咸阳市",
+      "value": "6104"
+    },
+    {
+      "label": "渭南市",
+      "value": "6105"
+    },
+    {
+      "label": "延安市",
+      "value": "6106"
+    },
+    {
+      "label": "汉中市",
+      "value": "6107"
+    },
+    {
+      "label": "榆林市",
+      "value": "6108"
+    },
+    {
+      "label": "安康市",
+      "value": "6109"
+    },
+    {
+      "label": "商洛市",
+      "value": "6110"
+    }
+  ],
+  [{
+      "label": "兰州市",
+      "value": "6201"
+    },
+    {
+      "label": "嘉峪关市",
+      "value": "6202"
+    },
+    {
+      "label": "金昌市",
+      "value": "6203"
+    },
+    {
+      "label": "白银市",
+      "value": "6204"
+    },
+    {
+      "label": "天水市",
+      "value": "6205"
+    },
+    {
+      "label": "武威市",
+      "value": "6206"
+    },
+    {
+      "label": "张掖市",
+      "value": "6207"
+    },
+    {
+      "label": "平凉市",
+      "value": "6208"
+    },
+    {
+      "label": "酒泉市",
+      "value": "6209"
+    },
+    {
+      "label": "庆阳市",
+      "value": "6210"
+    },
+    {
+      "label": "定西市",
+      "value": "6211"
+    },
+    {
+      "label": "陇南市",
+      "value": "6212"
+    },
+    {
+      "label": "临夏回族自治州",
+      "value": "6229"
+    },
+    {
+      "label": "甘南藏族自治州",
+      "value": "6230"
+    }
+  ],
+  [{
+      "label": "西宁市",
+      "value": "6301"
+    },
+    {
+      "label": "海东市",
+      "value": "6302"
+    },
+    {
+      "label": "海北藏族自治州",
+      "value": "6322"
+    },
+    {
+      "label": "黄南藏族自治州",
+      "value": "6323"
+    },
+    {
+      "label": "海南藏族自治州",
+      "value": "6325"
+    },
+    {
+      "label": "果洛藏族自治州",
+      "value": "6326"
+    },
+    {
+      "label": "玉树藏族自治州",
+      "value": "6327"
+    },
+    {
+      "label": "海西蒙古族藏族自治州",
+      "value": "6328"
+    }
+  ],
+  [{
+      "label": "银川市",
+      "value": "6401"
+    },
+    {
+      "label": "石嘴山市",
+      "value": "6402"
+    },
+    {
+      "label": "吴忠市",
+      "value": "6403"
+    },
+    {
+      "label": "固原市",
+      "value": "6404"
+    },
+    {
+      "label": "中卫市",
+      "value": "6405"
+    }
+  ],
+  [{
+      "label": "乌鲁木齐市",
+      "value": "6501"
+    },
+    {
+      "label": "克拉玛依市",
+      "value": "6502"
+    },
+    {
+      "label": "吐鲁番市",
+      "value": "6504"
+    },
+    {
+      "label": "哈密市",
+      "value": "6505"
+    },
+    {
+      "label": "昌吉回族自治州",
+      "value": "6523"
+    },
+    {
+      "label": "博尔塔拉蒙古自治州",
+      "value": "6527"
+    },
+    {
+      "label": "巴音郭楞蒙古自治州",
+      "value": "6528"
+    },
+    {
+      "label": "阿克苏地区",
+      "value": "6529"
+    },
+    {
+      "label": "克孜勒苏柯尔克孜自治州",
+      "value": "6530"
+    },
+    {
+      "label": "喀什地区",
+      "value": "6531"
+    },
+    {
+      "label": "和田地区",
+      "value": "6532"
+    },
+    {
+      "label": "伊犁哈萨克自治州",
+      "value": "6540"
+    },
+    {
+      "label": "塔城地区",
+      "value": "6542"
+    },
+    {
+      "label": "阿勒泰地区",
+      "value": "6543"
+    },
+    {
+      "label": "自治区直辖县级行政区划",
+      "value": "6590"
+    }
+  ],
+  [{
+      "label": "台北",
+      "value": "6601"
+    },
+    {
+      "label": "高雄",
+      "value": "6602"
+    },
+    {
+      "label": "基隆",
+      "value": "6603"
+    },
+    {
+      "label": "台中",
+      "value": "6604"
+    },
+    {
+      "label": "台南",
+      "value": "6605"
+    },
+    {
+      "label": "新竹",
+      "value": "6606"
+    },
+    {
+      "label": "嘉义",
+      "value": "6607"
+    },
+    {
+      "label": "宜兰",
+      "value": "6608"
+    },
+    {
+      "label": "桃园",
+      "value": "6609"
+    },
+    {
+      "label": "苗栗",
+      "value": "6610"
+    },
+    {
+      "label": "彰化",
+      "value": "6611"
+    },
+    {
+      "label": "南投",
+      "value": "6612"
+    },
+    {
+      "label": "云林",
+      "value": "6613"
+    },
+    {
+      "label": "屏东",
+      "value": "6614"
+    },
+    {
+      "label": "台东",
+      "value": "6615"
+    },
+    {
+      "label": "花莲",
+      "value": "6616"
+    },
+    {
+      "label": "澎湖",
+      "value": "6617"
+    }
+  ],
+  [{
+      "label": "香港岛",
+      "value": "6701"
+    },
+    {
+      "label": "九龙",
+      "value": "6702"
+    },
+    {
+      "label": "新界",
+      "value": "6703"
+    }
+  ],
+  [{
+      "label": "澳门半岛",
+      "value": "6801"
+    },
+    {
+      "label": "氹仔岛",
+      "value": "6802"
+    },
+    {
+      "label": "路环岛",
+      "value": "6803"
+    },
+    {
+      "label": "路氹城",
+      "value": "6804"
+    }
+  ]
+]
+export default cityData;
diff --git a/components/mpvue-citypicker/city-data/province.js b/components/mpvue-citypicker/city-data/province.js
new file mode 100644
index 0000000..1bd680e
--- /dev/null
+++ b/components/mpvue-citypicker/city-data/province.js
@@ -0,0 +1,139 @@
+/* eslint-disable */
+var provinceData = [{
+    "label": "北京市",
+    "value": "11"
+  },
+  {
+    "label": "天津市",
+    "value": "12"
+  },
+  {
+    "label": "河北省",
+    "value": "13"
+  },
+  {
+    "label": "山西省",
+    "value": "14"
+  },
+  {
+    "label": "内蒙古自治区",
+    "value": "15"
+  },
+  {
+    "label": "辽宁省",
+    "value": "21"
+  },
+  {
+    "label": "吉林省",
+    "value": "22"
+  },
+  {
+    "label": "黑龙江省",
+    "value": "23"
+  },
+  {
+    "label": "上海市",
+    "value": "31"
+  },
+  {
+    "label": "江苏省",
+    "value": "32"
+  },
+  {
+    "label": "浙江省",
+    "value": "33"
+  },
+  {
+    "label": "安徽省",
+    "value": "34"
+  },
+  {
+    "label": "福建省",
+    "value": "35"
+  },
+  {
+    "label": "江西省",
+    "value": "36"
+  },
+  {
+    "label": "山东省",
+    "value": "37"
+  },
+  {
+    "label": "河南省",
+    "value": "41"
+  },
+  {
+    "label": "湖北省",
+    "value": "42"
+  },
+  {
+    "label": "湖南省",
+    "value": "43"
+  },
+  {
+    "label": "广东省",
+    "value": "44"
+  },
+  {
+    "label": "广西壮族自治区",
+    "value": "45"
+  },
+  {
+    "label": "海南省",
+    "value": "46"
+  },
+  {
+    "label": "重庆市",
+    "value": "50"
+  },
+  {
+    "label": "四川省",
+    "value": "51"
+  },
+  {
+    "label": "贵州省",
+    "value": "52"
+  },
+  {
+    "label": "云南省",
+    "value": "53"
+  },
+  {
+    "label": "西藏自治区",
+    "value": "54"
+  },
+  {
+    "label": "陕西省",
+    "value": "61"
+  },
+  {
+    "label": "甘肃省",
+    "value": "62"
+  },
+  {
+    "label": "青海省",
+    "value": "63"
+  },
+  {
+    "label": "宁夏回族自治区",
+    "value": "64"
+  },
+  {
+    "label": "新疆维吾尔自治区",
+    "value": "65"
+  },
+  {
+    "label": "台湾",
+    "value": "66"
+  },
+  {
+    "label": "香港",
+    "value": "67"
+  },
+  {
+    "label": "澳门",
+    "value": "68"
+  }
+]
+export default provinceData;
diff --git a/components/mpvue-citypicker/mpvueCityPicker.vue b/components/mpvue-citypicker/mpvueCityPicker.vue
new file mode 100644
index 0000000..2a0416c
--- /dev/null
+++ b/components/mpvue-citypicker/mpvueCityPicker.vue
@@ -0,0 +1,210 @@
+<template>
+  <div class="mpvue-picker">
+    <div :class="{'pickerMask':showPicker}" @click="maskClick" catchtouchmove="true"></div>
+    <div class="mpvue-picker-content " :class="{'mpvue-picker-view-show':showPicker}">
+      <div class="mpvue-picker__hd" catchtouchmove="true">
+        <div class="mpvue-picker__action" @click="pickerCancel">取消</div>
+        <div class="mpvue-picker__action" :style="{color:themeColor}" @click="pickerConfirm">确定</div>
+      </div>
+      <picker-view indicator-style="height: 40px;" class="mpvue-picker-view" :value="pickerValue" @change="pickerChange">
+        <block>
+          <picker-view-column>
+            <div class="picker-item" v-for="(item,index) in provinceDataList" :key="index">{{item.label}}</div>
+          </picker-view-column>
+          <picker-view-column>
+            <div class="picker-item" v-for="(item,index) in cityDataList" :key="index">{{item.label}}</div>
+          </picker-view-column>
+          <picker-view-column>
+            <div class="picker-item" v-for="(item,index) in areaDataList" :key="index">{{item.label}}</div>
+          </picker-view-column>
+        </block>
+      </picker-view>
+    </div>
+  </div>
+</template>
+
+<script>
+import provinceData from './city-data/province.js';
+import cityData from './city-data/city.js';
+import areaData from './city-data/area.js';
+export default {
+  data() {
+    return {
+      pickerValue: [0, 0, 0],
+      provinceDataList: [],
+      cityDataList: [],
+      areaDataList: [],
+			/* 是否显示控件 */
+			showPicker: false,
+    };
+  },
+  created() {
+    this.init()
+  },
+  props: {
+    /* 默认值 */
+    pickerValueDefault: {
+      type: Array,
+      default(){
+				return [0, 0, 0]
+			}
+    },
+    /* 主题色 */
+    themeColor: String
+  },
+	watch:{
+		pickerValueDefault(){
+			this.init();
+		}
+	},
+  methods: {
+		init() {
+			this.handPickValueDefault(); // 对 pickerValueDefault 做兼容处理
+			this.provinceDataList = provinceData;
+			this.cityDataList = cityData[this.pickerValueDefault[0]];
+			this.areaDataList = areaData[this.pickerValueDefault[0]][this.pickerValueDefault[1]];
+			this.pickerValue = this.pickerValueDefault;
+		},
+    show() {
+      setTimeout(() => {
+        this.showPicker = true;
+      }, 0);
+    },
+    maskClick() {
+      this.pickerCancel();
+    },
+    pickerCancel() {
+      this.showPicker = false;
+      this._$emit('onCancel');
+    },
+    pickerConfirm(e) {
+      this.showPicker = false;
+      this._$emit('onConfirm');
+    },
+    showPickerView() {
+      this.showPicker = true;
+    },
+    handPickValueDefault() {
+      if (this.pickerValueDefault !== [0, 0, 0]) {
+        if (this.pickerValueDefault[0] > provinceData.length - 1) {
+          this.pickerValueDefault[0] = provinceData.length - 1;
+        }
+        if (this.pickerValueDefault[1] > cityData[this.pickerValueDefault[0]].length - 1) {
+          this.pickerValueDefault[1] = cityData[this.pickerValueDefault[0]].length - 1;
+        }
+        if (this.pickerValueDefault[2] > areaData[this.pickerValueDefault[0]][this.pickerValueDefault[1]].length - 1) {
+          this.pickerValueDefault[2] = areaData[this.pickerValueDefault[0]][this.pickerValueDefault[1]].length - 1;
+        }
+      }
+    },
+    pickerChange(e) {
+      let changePickerValue = e.mp.detail.value;
+      if (this.pickerValue[0] !== changePickerValue[0]) {
+        // 第一级发生滚动
+        this.cityDataList = cityData[changePickerValue[0]];
+        this.areaDataList = areaData[changePickerValue[0]][0];
+        changePickerValue[1] = 0;
+        changePickerValue[2] = 0;
+      } else if (this.pickerValue[1] !== changePickerValue[1]) {
+        // 第二级滚动
+        this.areaDataList =
+          areaData[changePickerValue[0]][changePickerValue[1]];
+        changePickerValue[2] = 0;
+      }
+      this.pickerValue = changePickerValue;
+      this._$emit('onChange');
+    },
+    _$emit(emitName) {
+      let pickObj = {
+        label: this._getLabel(),
+        value: this.pickerValue,
+        cityCode: this._getCityCode()
+      };
+      this.$emit(emitName, pickObj);
+    },
+    _getLabel() {
+      let pcikerLabel =
+        this.provinceDataList[this.pickerValue[0]].label +
+        '-' +
+        this.cityDataList[this.pickerValue[1]].label +
+        '-' +
+        this.areaDataList[this.pickerValue[2]].label;
+      return pcikerLabel;
+    },
+    _getCityCode() {
+      return this.areaDataList[this.pickerValue[2]].value;
+    }
+  }
+};
+</script>
+
+<style>
+.pickerMask {
+  position: fixed;
+  z-index: 1000;
+  top: 0;
+  right: 0;
+  left: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.6);
+}
+.mpvue-picker-content {
+  position: fixed;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  transition: all 0.3s ease;
+  transform: translateY(100%);
+  z-index: 3000;
+}
+.mpvue-picker-view-show {
+  transform: translateY(0);
+}
+.mpvue-picker__hd {
+  display: flex;
+  padding: 9px 15px;
+  background-color: #fff;
+  position: relative;
+  text-align: center;
+  font-size: 17px;
+}
+.mpvue-picker__hd:after {
+  content: ' ';
+  position: absolute;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  height: 1px;
+  border-bottom: 1px solid #e5e5e5;
+  color: #e5e5e5;
+  transform-origin: 0 100%;
+  transform: scaleY(0.5);
+}
+.mpvue-picker__action {
+  display: block;
+  flex: 1;
+  color: #1aad19;
+}
+.mpvue-picker__action:first-child {
+  text-align: left;
+  color: #888;
+}
+.mpvue-picker__action:last-child {
+  text-align: right;
+}
+.picker-item {
+  text-align: center;
+  line-height: 40px;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  font-size: 16px;
+}
+.mpvue-picker-view {
+  position: relative;
+  bottom: 0;
+  left: 0;
+  width: 100%;
+  height: 238px;
+  background-color: rgba(255, 255, 255, 1);
+}
+</style>
diff --git a/components/mpvue-picker/mpvuePicker.vue b/components/mpvue-picker/mpvuePicker.vue
new file mode 100644
index 0000000..413fd40
--- /dev/null
+++ b/components/mpvue-picker/mpvuePicker.vue
@@ -0,0 +1,464 @@
+<template>
+    <view class="mpvue-picker">
+        <view :class="{'pickerMask':showPicker}" @click="maskClick" catchtouchmove="true"></view>
+        <view class="mpvue-picker-content " :class="{'mpvue-picker-view-show':showPicker}">
+            <view class="mpvue-picker__hd" catchtouchmove="true">
+                <view class="mpvue-picker__action" @click.prevent="pickerCancel">取消</view>
+                <view class="mpvue-picker__action" :style="{color:themeColor}" @click.prevent="pickerConfirm">确定</view>
+            </view>
+            <!-- 单列 -->
+            <picker-view indicator-style="height: 40px;" class="mpvue-picker-view" :value="pickerValue" @change.prevent="pickerChange" v-if="mode==='selector' && pickerValueSingleArray.length > 0">
+                <block>
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index) in pickerValueSingleArray" :key="index">{{item.label}}</view>
+                    </picker-view-column>
+                </block>
+            </picker-view>
+            <!-- 时间选择器 -->
+            <picker-view indicator-style="height: 40px;" class="mpvue-picker-view" :value="pickerValue" @change="pickerChange" v-if="mode==='timeSelector'">
+                <block>
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index) in pickerValueHour" :key="index">{{item.label}}</view>
+                    </picker-view-column>
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index) in pickerValueMinute" :key="index">{{item.label}}</view>
+                    </picker-view-column>
+                </block>
+            </picker-view>
+            <!-- 多列选择 -->
+            <picker-view indicator-style="height: 40px;" class="mpvue-picker-view" :value="pickerValue" @change="pickerChange" v-if="mode==='multiSelector'">
+                <block v-for="(n,index) in pickerValueMulArray.length" :key="index">
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index1) in pickerValueMulArray[n]" :key="index1">{{item.label}}</view>
+                    </picker-view-column>
+                </block>
+            </picker-view>
+            <!-- 二级联动 -->
+            <picker-view indicator-style="height: 40px;" class="mpvue-picker-view" :value="pickerValue" @change="pickerChangeMul" v-if="mode==='multiLinkageSelector' && deepLength===2">
+                <block>
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index) in pickerValueMulTwoOne" :key="index">{{item.label}}</view>
+                    </picker-view-column>
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index) in pickerValueMulTwoTwo" :key="index">{{item.label}}</view>
+                    </picker-view-column>
+                </block>
+            </picker-view>
+            <!-- 三级联动 -->
+            <picker-view indicator-style="height: 40px;" class="mpvue-picker-view" :value="pickerValue" @change="pickerChangeMul" v-if="mode==='multiLinkageSelector' && deepLength===3">
+                <block>
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index) in pickerValueMulThreeOne" :key="index">{{item.label}}</view>
+                    </picker-view-column>
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index) in pickerValueMulThreeTwo" :key="index">{{item.label}}</view>
+                    </picker-view-column>
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index) in pickerValueMulThreeThree" :key="index">{{item.label}}</view>
+                    </picker-view-column>
+                </block>
+            </picker-view>
+        </view>
+    </view>
+</template>
+
+<script>
+    export default {
+        data() {
+            return {
+                pickerChangeValue: [],
+                pickerValue: [],
+                pickerValueArrayChange: true,
+                modeChange: false,
+                pickerValueSingleArray: [],
+                pickerValueHour: [],
+                pickerValueMinute: [],
+                pickerValueMulArray: [],
+                pickerValueMulTwoOne: [],
+                pickerValueMulTwoTwo: [],
+                pickerValueMulThreeOne: [],
+                pickerValueMulThreeTwo: [],
+                pickerValueMulThreeThree: [],
+				/* 是否显示控件 */
+				showPicker: false,
+            };
+        },
+        props: {
+            /* mode */
+            mode: {
+                type: String,
+                default: 'selector'
+            },
+            /* picker 数值 */
+            pickerValueArray: {
+                type: Array,
+                default(){
+					return []
+				}
+            },
+            /* 默认值 */
+            pickerValueDefault: {
+                type: Array,
+                default(){
+                	return []
+                }
+            },
+            /* 几级联动 */
+            deepLength: {
+                type: Number,
+                default: 2
+            },
+            /* 主题色 */
+            themeColor: String
+        },
+        watch: {
+            pickerValueArray(oldVal, newVal) {
+                this.pickerValueArrayChange = true;
+            },
+            mode(oldVal, newVal) {
+                this.modeChange = true;
+            },
+			pickerValueArray(val){
+				this.initPicker(val);
+			}
+        },
+        methods: {
+            initPicker(valueArray) {
+                let pickerValueArray = valueArray;
+                this.pickerValue = this.pickerValueDefault;
+                // 初始化多级联动
+                if (this.mode === 'selector') {
+                    this.pickerValueSingleArray = valueArray;
+                } else if (this.mode === 'timeSelector') {
+                    this.modeChange = false;
+                    let hourArray = [];
+                    let minuteArray = [];
+                    for (let i = 0; i < 24; i++) {
+                        hourArray.push({
+                            value: i,
+                            label: i > 9 ? `${i} 时` : `0${i} 时`
+                        });
+                    }
+                    for (let i = 0; i < 60; i++) {
+                        minuteArray.push({
+                            value: i,
+                            label: i > 9 ? `${i} 分` : `0${i} 分`
+                        });
+                    }
+                    this.pickerValueHour = hourArray;
+                    this.pickerValueMinute = minuteArray;
+                } else if (this.mode === 'multiSelector') {
+                    this.pickerValueMulArray = valueArray;
+                } else if (this.mode === 'multiLinkageSelector' && this.deepLength === 2) {
+                    // 两级联动
+                    let pickerValueMulTwoOne = [];
+                    let pickerValueMulTwoTwo = [];
+                    // 第一列
+                    for (let i = 0, length = pickerValueArray.length; i < length; i++) {
+                        pickerValueMulTwoOne.push(pickerValueArray[i]);
+                    }
+                    // 渲染第二列
+                    // 如果有设定的默认值
+                    if (this.pickerValueDefault.length === 2) {
+                        let num = this.pickerValueDefault[0];
+                        for (
+                            let i = 0, length = pickerValueArray[num].children.length; i < length; i++
+                        ) {
+                            pickerValueMulTwoTwo.push(pickerValueArray[num].children[i]);
+                        }
+                    } else {
+                        for (
+                            let i = 0, length = pickerValueArray[0].children.length; i < length; i++
+                        ) {
+                            pickerValueMulTwoTwo.push(pickerValueArray[0].children[i]);
+                        }
+                    }
+                    this.pickerValueMulTwoOne = pickerValueMulTwoOne;
+                    this.pickerValueMulTwoTwo = pickerValueMulTwoTwo;
+                } else if (
+                    this.mode === 'multiLinkageSelector' &&
+                    this.deepLength === 3
+                ) {
+                    let pickerValueMulThreeOne = [];
+                    let pickerValueMulThreeTwo = [];
+                    let pickerValueMulThreeThree = [];
+                    // 第一列
+                    for (let i = 0, length = pickerValueArray.length; i < length; i++) {
+                        pickerValueMulThreeOne.push(pickerValueArray[i]);
+                    }
+                    // 渲染第二列
+                    this.pickerValueDefault =
+                        this.pickerValueDefault.length === 3 ?
+                        this.pickerValueDefault :
+                        [0, 0, 0];
+                    if (this.pickerValueDefault.length === 3) {
+                        let num = this.pickerValueDefault[0];
+                        for (
+                            let i = 0, length = pickerValueArray[num].children.length; i < length; i++
+                        ) {
+                            pickerValueMulThreeTwo.push(pickerValueArray[num].children[i]);
+                        }
+                        // 第三列
+                        let numSecond = this.pickerValueDefault[1];
+                        for (let i = 0, length = pickerValueArray[num].children[numSecond].children.length; i < length; i++) {
+                            pickerValueMulThreeThree.push(
+                                pickerValueArray[num].children[numSecond].children[i]
+                            );
+                        }
+                    }
+                    this.pickerValueMulThreeOne = pickerValueMulThreeOne;
+                    this.pickerValueMulThreeTwo = pickerValueMulThreeTwo;
+                    this.pickerValueMulThreeThree = pickerValueMulThreeThree;
+                }
+            },
+            show() {
+                setTimeout(() => {
+                    if (this.pickerValueArrayChange || this.modeChange) {
+                        this.initPicker(this.pickerValueArray);
+                        this.showPicker = true;
+                        this.pickerValueArrayChange = false;
+                        this.modeChange = false;
+                    } else {
+                        this.showPicker = true;
+                    }
+                }, 0);
+            },
+            maskClick() {
+                this.pickerCancel();
+            },
+            pickerCancel() {
+                this.showPicker = false;
+                this._initPickerVale();
+                let pickObj = {
+                    index: this.pickerValue,
+                    value: this._getPickerLabelAndValue(this.pickerValue, this.mode).value,
+                    label: this._getPickerLabelAndValue(this.pickerValue, this.mode).label
+                };
+                this.$emit('onCancel', pickObj);
+            },
+            pickerConfirm(e) {
+                this.showPicker = false;
+                this._initPickerVale();
+                let pickObj = {
+                    index: this.pickerValue,
+                    value: this._getPickerLabelAndValue(this.pickerValue, this.mode).value,
+                    label: this._getPickerLabelAndValue(this.pickerValue, this.mode).label
+                };
+                this.$emit('onConfirm', pickObj);
+            },
+            showPickerView() {
+                this.showPicker = true;
+            },
+            pickerChange(e) {
+                this.pickerValue = e.mp.detail.value;
+                let pickObj = {
+                    index: this.pickerValue,
+                    value: this._getPickerLabelAndValue(this.pickerValue, this.mode).value,
+                    label: this._getPickerLabelAndValue(this.pickerValue, this.mode).label
+                };
+                this.$emit('onChange', pickObj);
+            },
+            pickerChangeMul(e) {
+                if (this.deepLength === 2) {
+                    let pickerValueArray = this.pickerValueArray;
+                    let changeValue = e.mp.detail.value;
+                    // 处理第一列滚动
+                    if (changeValue[0] !== this.pickerValue[0]) {
+                        let pickerValueMulTwoTwo = [];
+                        // 第一列滚动第二列数据更新
+                        for (let i = 0, length = pickerValueArray[changeValue[0]].children.length; i < length; i++) {
+                            pickerValueMulTwoTwo.push(pickerValueArray[changeValue[0]].children[i]);
+                        }
+                        this.pickerValueMulTwoTwo = pickerValueMulTwoTwo;
+                        // 第二列初始化为 0
+                        changeValue[1] = 0;
+                    }
+                    this.pickerValue = changeValue;
+                } else if (this.deepLength === 3) {
+                    let pickerValueArray = this.pickerValueArray;
+                    let changeValue = e.mp.detail.value;
+                    let pickerValueMulThreeTwo = [];
+                    let pickerValueMulThreeThree = [];
+                    // 重新渲染第二列
+                    // 如果是第一列滚动
+                    if (changeValue[0] !== this.pickerValue[0]) {
+                        this.pickerValueMulThreeTwo = [];
+                        for (let i = 0, length = pickerValueArray[changeValue[0]].children.length; i < length; i++) {
+                            pickerValueMulThreeTwo.push(pickerValueArray[changeValue[0]].children[i]);
+                        }
+                        // 重新渲染第三列
+                        for (let i = 0, length = pickerValueArray[changeValue[0]].children[0].children.length; i <
+                            length; i++) {
+                            pickerValueMulThreeThree.push(pickerValueArray[changeValue[0]].children[0].children[i]);
+                        }
+                        changeValue[1] = 0;
+                        changeValue[2] = 0;
+                        this.pickerValueMulThreeTwo = pickerValueMulThreeTwo;
+                        this.pickerValueMulThreeThree = pickerValueMulThreeThree;
+                    } else if (changeValue[1] !== this.pickerValue[1]) {
+                        // 第二列滚动
+                        // 重新渲染第三列
+                        this.pickerValueMulThreeThree = [];
+                        pickerValueMulThreeTwo = this.pickerValueMulThreeTwo;
+                        for (let i = 0, length = pickerValueArray[changeValue[0]].children[changeValue[1]].children.length; i <
+                            length; i++) {
+                            pickerValueMulThreeThree.push(pickerValueArray[changeValue[0]].children[changeValue[1]].children[
+                                i]);
+                        }
+                        changeValue[2] = 0;
+                        this.pickerValueMulThreeThree = pickerValueMulThreeThree;
+                    }
+                    this.pickerValue = changeValue;
+                }
+                let pickObj = {
+                    index: this.pickerValue,
+                    value: this._getPickerLabelAndValue(this.pickerValue, this.mode).value,
+                    label: this._getPickerLabelAndValue(this.pickerValue, this.mode).label
+                };
+                this.$emit('onChange', pickObj);
+            },
+            // 获取 pxikerLabel
+            _getPickerLabelAndValue(value, mode) {
+                let pickerLable;
+                let pickerGetValue = [];
+                // selector
+                if (mode === 'selector') {
+                    pickerLable = this.pickerValueSingleArray[value].label;
+                    pickerGetValue.push(this.pickerValueSingleArray[value].value);
+                } else if (mode === 'timeSelector') {
+                    pickerLable = `${this.pickerValueHour[value[0]].label}-${this.pickerValueMinute[value[1]].label}`;
+                    pickerGetValue.push(this.pickerValueHour[value[0]].value);
+                    pickerGetValue.push(this.pickerValueHour[value[1]].value);
+                } else if (mode === 'multiSelector') {
+                    for (let i = 0; i < value.length; i++) {
+                        if (i > 0) {
+                            pickerLable += this.pickerValueMulArray[i][value[i]].label + (i === value.length - 1 ? '' :
+                                '-');
+                        } else {
+                            pickerLable = this.pickerValueMulArray[i][value[i]].label + '-';
+                        }
+                        pickerGetValue.push(this.pickerValueMulArray[i][value[i]].value);
+                    }
+                } else if (mode === 'multiLinkageSelector') {
+                    /* eslint-disable indent */
+                    pickerLable =
+                        this.deepLength === 2 ?
+                        `${this.pickerValueMulTwoOne[value[0]].label}-${this.pickerValueMulTwoTwo[value[1]].label}` :
+                        `${this.pickerValueMulThreeOne[value[0]].label}-${this.pickerValueMulThreeTwo[value[1]].label}-${this.pickerValueMulThreeThree[value[2]].label}`;
+                    if (this.deepLength === 2) {
+                        pickerGetValue.push(this.pickerValueMulTwoOne[value[0]].value);
+                        pickerGetValue.push(this.pickerValueMulTwoTwo[value[1]].value);
+                    } else {
+                        pickerGetValue.push(this.pickerValueMulThreeOne[value[0]].value);
+                        pickerGetValue.push(this.pickerValueMulThreeTwo[value[1]].value);
+                        pickerGetValue.push(this.pickerValueMulThreeThree[value[2]].value);
+                    }
+                    /* eslint-enable indent */
+                }
+                return {
+                    label: pickerLable,
+                    value: pickerGetValue
+                };
+            },
+            // 初始化 pickerValue 默认值
+            _initPickerVale() {
+                if (this.pickerValue.length === 0) {
+                    if (this.mode === 'selector') {
+                        this.pickerValue = [0];
+                    } else if (this.mode === 'multiSelector') {
+                        this.pickerValue = new Int8Array(this.pickerValueArray.length);
+                    } else if (
+                        this.mode === 'multiLinkageSelector' &&
+                        this.deepLength === 2
+                    ) {
+                        this.pickerValue = [0, 0];
+                    } else if (
+                        this.mode === 'multiLinkageSelector' &&
+                        this.deepLength === 3
+                    ) {
+                        this.pickerValue = [0, 0, 0];
+                    }
+                }
+            }
+        }
+    };
+</script>
+
+<style>
+    .pickerMask {
+        position: fixed;
+        z-index: 9999;
+        top: 0;
+        right: 0;
+        left: 0;
+        bottom: 0;
+        background: rgba(0, 0, 0, 0.6);
+    }
+
+    .mpvue-picker-content {
+        position: fixed;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        transition: all 0.3s ease;
+        transform: translateY(100%);
+        z-index: 9999;
+    }
+
+    .mpvue-picker-view-show {
+        transform: translateY(0);
+    }
+
+    .mpvue-picker__hd {
+        display: flex;
+        padding: 9px 15px;
+        background-color: #fff;
+        position: relative;
+        text-align: center;
+        font-size: 17px;
+    }
+
+    .mpvue-picker__hd:after {
+        content: ' ';
+        position: absolute;
+        left: 0;
+        bottom: 0;
+        right: 0;
+        height: 1px;
+        border-bottom: 1px solid #e5e5e5;
+        color: #e5e5e5;
+        transform-origin: 0 100%;
+        transform: scaleY(0.5);
+    }
+
+    .mpvue-picker__action {
+        display: block;
+        flex: 1;
+        color: #1aad19;
+    }
+
+    .mpvue-picker__action:first-child {
+        text-align: left;
+        color: #888;
+    }
+
+    .mpvue-picker__action:last-child {
+        text-align: right;
+    }
+
+    .picker-item {
+        text-align: center;
+        line-height: 40px;
+        font-size: 16px;
+		color: #000000;
+    }
+
+    .mpvue-picker-view {
+        position: relative;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        height: 238px;
+        background-color: rgba(255, 255, 255, 1);
+    }
+</style>
diff --git a/components/mpvue-picker/mpvuePickernew.vue b/components/mpvue-picker/mpvuePickernew.vue
new file mode 100644
index 0000000..2276eb8
--- /dev/null
+++ b/components/mpvue-picker/mpvuePickernew.vue
@@ -0,0 +1,333 @@
+<template>
+    <view class="mpvue-picker">
+        <view :class="{'pickerMask':showPicker}" @click="maskClick" catchtouchmove="true"></view>
+        <view class="mpvue-picker-content " :class="{'mpvue-picker-view-show':showPicker}">
+            <view class="mpvue-picker__hd" catchtouchmove="true">
+                <view class="mpvue-picker__action" @click="pickerCancel">取消</view>
+				<view class="mpvue-picker__action" style="color: #000;">选择时间</view>
+                <view class="mpvue-picker__action" :style="{color:themeColor}" @click="pickerConfirm">确定</view>
+            </view>
+			<view style=" display: flex; justify-content:center; padding: 9px 15px; background-color: #fff; position: relative; text-align: center; font-size: 17px;">
+				<view @click="active(1)" :class="[mpvue_active == 1 ? 'mpvue_active' : '']" style="padding: 10upx 30upx; border: 1upx solid #53B2B0; border-radius: 4upx 0 0 4upx; font-size: 24upx; ">按年</view>
+				<view @click="active(2)" :class="[mpvue_active == 2 ? 'mpvue_active' : '']" style="padding: 10upx 30upx; border: 1upx solid #53B2B0; border-left: 0; border-right: 0; font-size: 24upx;" >按月</view>
+				<view @click="active(3)" :class="[mpvue_active == 3 ? 'mpvue_active' : '']" style="padding: 10upx 30upx; border: 1upx solid #53B2B0; border-radius: 0 4upx 4upx 0; font-size: 24upx;">按日</view>
+			</view>
+            <!-- 单列 -->
+            <picker-view indicator-style="height: 40px;" class="mpvue-picker-view" :value="pickerValue" @change="pickerChange" v-if="mpvue_active == 1">
+                <block>
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index) in pickerValueSingleArray" :key="index">{{item.label}}</view>
+                    </picker-view-column>
+                </block>
+            </picker-view>
+            <!-- 多列选择 -->
+            <picker-view indicator-style="height: 40px;" class="mpvue-picker-view" :value="pickerValue" @change="pickerChange" v-if="mpvue_active == 2 || mpvue_active == 3">
+                <block v-for="(n,index) in pickerValueMulArray.length" :key="index">
+                    <picker-view-column>
+                        <view class="picker-item" v-for="(item,index1) in pickerValueMulArray[n]" :key="index1">{{item.label}}</view>
+                    </picker-view-column>
+                </block>
+            </picker-view>
+        </view>
+    </view>
+</template>
+
+<script>
+    export default {
+        data() {
+            return {
+                pickerValue: [],
+                pickerValueArrayChange: true,
+                modeChange: false,
+                pickerValueSingleArray: [],
+                pickerValueMulArray: [],
+				pickerValueMulArraythree: [],
+				/* 是否显示控件 */
+				showPicker: false,
+				mpvue_active:3,  //初始化按日
+				years:[], //年
+				months:[], //月
+				days:[] //日
+            };
+        },
+        props: {
+            /* mode */
+            mode: {
+                type: String,
+                default: 'selector'
+            },
+            /* picker 数值 */
+            pickerValueArray: {
+                type: Array,
+                default(){
+					return []
+				}
+            },
+            /* 默认值 */
+            pickerValueDefault: {
+                type: Array,
+                default(){
+                	return []
+                }
+            },
+            /* 主题色 */
+            themeColor: String
+        },
+        watch: {
+            pickerValueArray(oldVal, newVal) {
+                this.pickerValueArrayChange = true;
+            },
+            mode(oldVal, newVal) {
+                this.modeChange = true;
+            },
+			pickerValueArray(val){
+				this.initPicker(val);
+			}
+        },
+        methods: {
+			active(index){
+				this.mpvue_active = index
+				this.initPicker(index);
+	
+			},
+            initPicker(index) {
+				//默认年月日 获取当前日期
+				var date = new Date()
+				let myMonth = date.getMonth() + 1;
+				let mydate = date.getDate();
+				this.years = []
+				this.months = []
+				this.days = []
+				for (let i = 2010; i <= date.getFullYear(); i++) {
+					this.years.push({
+						label:i + '年',value:i
+					})
+				}
+				for (let i = 1; i <= 12; i++) {
+					this.months.push({
+						label:i + '月',value:i
+					})
+				}
+				for (let i = 1; i <= 31; i++) {
+					this.days.push({
+						label:i + '日',value:i
+					})
+				}
+				var list = []
+				list.push(this.years)
+				list.push(this.months)
+				list.push(this.days)
+				this.pickerValueMulArray = list
+				if(index.length == 1){
+					// 年
+					this.pickerValue = [this.years.length - 1];
+					this.pickerValueSingleArray = []
+					this.pickerValueSingleArray = this.years
+					if(index[0] == 'yesterday'){
+						this.mpvue_active = 3
+						this.pickerValue = [this.years.length - 1,myMonth - 1,mydate - 2];
+					}
+					if(index[0] == 'month'){
+						var list = []
+						list.push(this.years)
+						list.push(this.months)
+						this.pickerValueMulArray = list
+						this.mpvue_active = 2
+						this.pickerValue = [this.years.length - 1,myMonth - 1];
+				 	}
+				}else{
+					// 年
+					this.pickerValue = [this.years.length - 1];
+					this.pickerValueSingleArray = []
+					this.pickerValueSingleArray = this.years
+					// 月
+					if(this.mpvue_active == 2){
+						this.pickerValueMulArray = []
+						this.pickerValue = [this.years.length - 1,myMonth - 1];
+						var list = []
+						list.push(this.years)
+						list.push(this.months)
+						this.pickerValueMulArray = list
+					}else if(this.mpvue_active == 3){
+					// 日
+						this.pickerValueMulArray = []
+						this.pickerValue = [this.years.length - 1,myMonth - 1,mydate - 1];
+						var list = []
+						list.push(this.years)
+						list.push(this.months)
+						list.push(this.days)
+						this.pickerValueMulArray = list
+					 }
+				 }
+            },
+            show() {
+                setTimeout(() => {
+                    if (this.pickerValueArrayChange || this.modeChange) {
+                        this.initPicker(this.pickerValueArray);
+                        this.showPicker = true;
+                        this.pickerValueArrayChange = false;
+                        this.modeChange = false;
+                    } else {
+                        this.showPicker = true;
+                    }
+                }, 0);
+            },
+            maskClick() {
+                this.pickerCancel();
+            },
+            pickerCancel() {
+                this.showPicker = false;
+                this._initPickerVale();
+                let pickObj = {
+                    index: this.pickerValue,
+                    value: this._getPickerLabelAndValue(this.pickerValue, this.mode).value,
+                    label: this._getPickerLabelAndValue(this.pickerValue, this.mode).label
+                };
+                this.$emit('onCancel', pickObj);
+            },
+            pickerConfirm(e) {
+                this.showPicker = false;
+                this._initPickerVale();
+                let pickObj = {
+                    index: this.pickerValue,
+                    value: this._getPickerLabelAndValue(this.pickerValue, this.mode).value,
+                    label: this._getPickerLabelAndValue(this.pickerValue, this.mode).label
+                };
+                this.$emit('onConfirm', pickObj);
+            },
+            showPickerView() {
+                this.showPicker = true;
+            },
+            pickerChange(e) {
+                this.pickerValue = e.mp.detail.value;
+                let pickObj = {
+                    index: this.pickerValue,
+                    value: this._getPickerLabelAndValue(this.pickerValue, this.mode).value,
+                    label: this._getPickerLabelAndValue(this.pickerValue, this.mode).label
+                };
+                this.$emit('onChange', pickObj);
+            },
+            // 获取 pxikerLabel
+            _getPickerLabelAndValue(value, mode) {
+                let pickerLable;
+                let pickerGetValue = [];
+                // selector
+                if (this.mpvue_active == 1) {
+                    pickerLable = this.pickerValueSingleArray[value].label;
+                    pickerGetValue.push(this.pickerValueSingleArray[value].value);
+                } else if (this.mpvue_active == 2 || this.mpvue_active == 3) {
+                    for (let i = 0; i < value.length; i++) {
+                        if (i > 0) {
+                            pickerLable += this.pickerValueMulArray[i][value[i]].label + (i === value.length - 1 ? '' :
+                                '-');
+                        } else {
+                            pickerLable = this.pickerValueMulArray[i][value[i]].label + '-';
+                        }
+                        pickerGetValue.push(this.pickerValueMulArray[i][value[i]].value);
+                    }
+                }
+                return {
+                    label: pickerLable,
+                    value: pickerGetValue
+                };
+            },
+            // 初始化 pickerValue 默认值
+            _initPickerVale() {
+                if (this.pickerValue.length === 0) {
+                    if (this.mpvue_active == 1) {
+                        this.pickerValue = [0];
+                    } else if (this.mpvue_active == 2) {
+                        this.pickerValue = new Int8Array(this.pickerValueArray.length);
+                    }else if (this.mpvue_active == 3) {
+                        this.pickerValue = [0,0,0];
+                    }
+                }
+            }
+        },
+		onShow() {
+			
+		}
+    };
+</script>
+
+<style>
+	.mpvue_active{
+		background: #53B2B0;
+		color: #fff;
+	}
+    .pickerMask {
+        position: fixed;
+        z-index: 1000;
+        top: 0;
+        right: 0;
+        left: 0;
+        bottom: 0;
+        background: rgba(0, 0, 0, 0.6);
+    }
+
+    .mpvue-picker-content {
+        position: fixed;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        transition: all 0.3s ease;
+        transform: translateY(100%);
+        z-index: 3000;
+    }
+
+    .mpvue-picker-view-show {
+        transform: translateY(0);
+    }
+
+    .mpvue-picker__hd {
+        display: flex;
+        padding: 9px 15px;
+        background-color: #fff;
+        position: relative;
+        text-align: center;
+        font-size: 17px;
+    }
+
+    .mpvue-picker__hd:after {
+        content: ' ';
+        position: absolute;
+        left: 0;
+        bottom: 0;
+        right: 0;
+        height: 1px;
+        border-bottom: 1px solid #e5e5e5;
+        color: #e5e5e5;
+        transform-origin: 0 100%;
+        transform: scaleY(0.5);
+    }
+
+    .mpvue-picker__action {
+        display: block;
+        flex: 1;
+        color: #1aad19;
+    }
+
+    .mpvue-picker__action:first-child {
+        text-align: left;
+        color: #888;
+    }
+
+    .mpvue-picker__action:last-child {
+        text-align: right;
+    }
+
+    .picker-item {
+        text-align: center;
+        line-height: 40px;
+        font-size: 16px;
+    }
+
+    .mpvue-picker-view {
+        position: relative;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+        height: 238px;
+        background-color: rgba(255, 255, 255, 1);
+    }
+</style>
diff --git a/components/t-color-picker/t-color-picker.vue b/components/t-color-picker/t-color-picker.vue
new file mode 100644
index 0000000..b1f1fa7
--- /dev/null
+++ b/components/t-color-picker/t-color-picker.vue
@@ -0,0 +1,803 @@
+<template>
+	<view v-show="show" class="t-wrapper" @touchmove.stop.prevent="moveHandle">
+		<view class="t-mask" :class="{active:active}" @click.stop="close"></view>
+		<view class="t-box" :class="{active:active}">
+			<!-- <view class="t-header">
+				<view class="t-header-button" @click="close">取消</view>
+				<view class="t-header-button" @click="confirm">确认</view>
+			</view> -->
+			<!-- 颜色 -->
+			<scroll-view style="box-sizing: border-box; white-space: nowrap; margin: 10upx 0;" scroll-x scroll-with-animation >
+				<view style="text-align: center; display: inline-block;" class="t-alternative__item" v-for="(item,index) in colorList" :key="index">
+					<view class="t-alternative__item-content" :style="{ background: 'rgba(' + item.r + ',' + item.g + ',' + item.b + ',' + item.a + ')' }"
+					 @click="selectColor(item,index)">
+						<image v-if="index == selectColorIndex" src="../../static/mine/icon_confirm.png" mode="" 
+						style="width: 31upx; height: 22upx;"></image>
+					</view>
+				</view>
+				<view class="t-alternative__item" style="text-align: center; display: inline-block;">
+					<view class="t-alternative__item-content" style="background: rgba(0,0,0,0)"
+					 @click="eliminate(item)">
+					</view>
+				</view>
+				
+			</scroll-view>
+			<view class="t-color__box" style="height: 0;" :style="{ background: 'rgb(' + bgcolor.r + ',' + bgcolor.g + ',' + bgcolor.b + ')'}">
+				<view class="t-background boxs" @touchstart="touchstart($event, 0)" @touchmove="touchmove($event, 0)" @touchend="touchend($event, 0)">
+					<!-- <view class="t-color-mask"></view>
+					<view class="t-pointer" :style="{ top: site[0].top - 8 + 'px', left: site[0].left - 8 + 'px' }"></view> -->
+				</view>
+			</view>
+			<!-- <view class="t-control__box">
+				<view class="t-control__color">
+					<view class="t-control__color-content" :style="{ background: 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' + rgba.a + ')' }"></view>
+				</view>
+				<view class="t-control-box__item">
+					<view class="t-controller boxs" @touchstart="touchstart($event, 1)" @touchmove="touchmove($event, 1)" @touchend="touchend($event, 1)">
+						<view class="t-hue">
+							<view class="t-circle" :style="{ left: site[1].left - 12 + 'px' }"></view>
+						</view>
+					</view>
+				</view>
+			</view> -->
+			<view class="t-control__box">
+				<view class="t-control__color">
+					<!-- <view class="t-control__color-content" 
+					:style="{ background: 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' + rgba.a + ')' }"></view> -->
+					<view class="t-control__color-content"
+					:style="{ background: 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',1)' }"></view>
+				</view>
+				<view class="t-control-box__item">
+					<view style="height: 0;" class="t-controller boxs" @touchstart="touchstart($event, 1)" @touchmove="touchmove($event, 1)" @touchend="touchend($event, 1)">
+						<!-- <view class="t-hue">
+							<view class="t-circle" :style="{ left: site[1].left - 12 + 'px' }"></view>
+						</view> -->
+					</view>
+					<view class="t-controller boxs" @touchstart="touchstart($event, 2)" @touchmove="touchmove($event, 2)" @touchend="touchend($event, 2)">
+						<!-- background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%); -->
+						<view class="t-transparency" 
+						:style="{'background': 'linear-gradient(to left, rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',0.2' + ') 0%, rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + '))'}">
+							<view class="t-circle" :class="{'t-circle-active':tCircleActive}" :style="{ left: site[2].left + 'px' }"></view>
+						</view>
+					</view>
+				</view>
+				<view class="t-control__color">
+					<view class="t-control__color-content"
+					:style="{ background: 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',0.2)' }"></view>
+				</view>
+			</view>
+			<!-- <view class="t-result__box">
+				<view v-if="mode" class="t-result__item">
+					<view class="t-result__box-input">{{hex}}</view>
+					<view class="t-result__box-text">HEX</view>
+				</view>
+				<template v-else>
+					<view class="t-result__item">
+						<view class="t-result__box-input">{{rgba.r}}</view>
+						<view class="t-result__box-text">R</view>
+					</view>
+					<view class="t-result__item">
+						<view class="t-result__box-input">{{rgba.g}}</view>
+						<view class="t-result__box-text">G</view>
+					</view>
+					<view class="t-result__item">
+						<view class="t-result__box-input">{{rgba.b}}</view>
+						<view class="t-result__box-text">B</view>
+					</view>
+					<view class="t-result__item">
+						<view class="t-result__box-input">{{rgba.a}}</view>
+						<view class="t-result__box-text">A</view>
+					</view>
+				</template>
+				<view class="t-result__item t-select" @click="select">
+					<view class="t-result__box-input">
+						<view>切换</view>
+						<view>模式</view>
+					</view>
+				</view>
+			</view> -->
+			<!-- <view class="t-alternative">
+				<view class="t-alternative__item" v-for="(item,index) in colorList" :key="index">
+					<view class="t-alternative__item-content" :style="{ background: 'rgba(' + item.r + ',' + item.g + ',' + item.b + ',' + item.a + ')' }"
+					 @click="selectColor(item)">
+					</view>
+				</view>
+				<view class="t-alternative__item" >
+					<view class="t-alternative__item-content" style="background: rgba(0,0,0,0)"
+					 @click="eliminate(item)">
+					</view>
+				</view>
+			</view> -->
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			color: {
+				type: Object,
+				default () {
+					return {
+						r: 0,
+						g: 0,
+						b: 0,
+						a: 0
+					}
+				}
+			},
+			spareColor: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			background_color:{
+				type:String,
+				default () {
+					return null
+				}
+			}
+		},
+		data() {
+			return {
+				show: false,
+				active: false,
+				background_state:false,
+				// rgba 颜色
+				rgba: {r: 0,g: 0,b: 0,a: 1},
+				// hsb 颜色
+				hsb: {h: 0,s: 0,b: 0},
+				site: [{top: 0,left: 0}, {left: 0}, {left: 0}],
+				index: 0,
+				bgcolor: {r: 255,g: 0,b: 0,a: 1},
+				hex: '#000000',
+				mode: true,
+				colorList: [
+					{r: 0,g: 0,b: 0,a: 1}, 
+					{r: 255,g: 255,b: 255,a: 1},
+					{r: 245,g: 99,b: 100,a: 1}, 
+					{r: 5,g: 11,b: 222,a: 1}, 
+					{r: 255,g: 116,b: 80,a: 1}, 
+					{r: 158,g: 235,b: 255,a: 1}, 
+					{r: 248,g: 229,b: 12,a: 1}, 
+					{r: 255,g: 162,b: 200,a: 1}, 
+					{r: 95,g: 220,b: 203,a: 1}, 
+				],
+				tCircleActive:false,
+				selectColorIndex:0
+			};
+		},
+		created() {
+			this.rgba = this.color;
+			if (this.spareColor.length !== 0) {
+				this.colorList = this.spareColor;
+			}
+		},
+		methods: {
+			eliminate(){
+				wx.showToast({title: '清空背景色',icon: 'none'})
+				this.close();
+				this.$emit('confirm', {rgba: {},hex: null})
+			},
+			/**
+			 * 初始化
+			 */
+			init() {
+				// hsb 颜色
+				this.hsb = this.rgbToHex(this.rgba);
+				this.hex = '#' + this.rgbToHex(this.rgba);
+				// this.setColor();
+			},
+			moveHandle() {},
+			open() {
+				this.background_state = false
+				this.show = true;
+				this.$nextTick(() => {
+					this.init();
+					setTimeout(() => {
+						this.active = true;
+						setTimeout(() => {
+							this.getSelectorQuery();
+						}, 350)
+					}, 50)
+				})
+
+			},
+			close() {
+				this.active = false;
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this.show = false;
+					}, 500)
+				})
+			},
+			confirm() {
+				this.close();
+				this.$emit('confirm', {
+					rgba: this.rgba,
+					hex: this.hex
+				})
+			},
+			// 选择模式
+			// select() {
+			// 	this.mode = !this.mode
+			// },
+			// 常用颜色选择
+			selectColor(item,index) {
+				this.selectColorIndex = index
+				this.background_state = true
+				this.setColorBySelect(item)
+			},
+			touchstart(e, index) {
+				this.tCircleActive = true
+				this.background_state = true
+				if(index == 0) return;
+				const {
+					pageX,
+					pageY
+				} = e.touches[0];
+				this.pageX = pageX;
+				this.pageY = pageY;
+				this.setPosition(pageX, pageY, index);
+			},
+			touchmove(e, index) {
+				this.tCircleActive = true
+				this.background_state = true
+				if(index == 0) return;
+				const {
+					pageX,
+					pageY
+				} = e.touches[0];
+				this.moveX = pageX;
+				this.moveY = pageY;
+				this.setPosition(pageX, pageY, index);
+			},
+			touchend(e, index) {
+				this.tCircleActive = false
+				this.background_state = true
+			},
+			/**
+			 * 设置位置
+			 */
+			setPosition(x, y, index) {
+				this.index = index;
+				const {
+					top,
+					left,
+					width,
+					height
+				} = this.position[index];
+				// 设置最大最小值
+				this.site[index].left = Math.max(0, Math.min(parseInt(x - left), (width - 24)));
+				
+				// if (index === 0) {
+				// 	this.site[index].top = Math.max(0, Math.min(parseInt(y - top), height));
+				// 	// 设置颜色
+				// 	this.hsb.s = parseInt((100 * this.site[index].left) / width);
+				// 	this.hsb.b = parseInt(100 - (100 * this.site[index].top) / height);
+				// 	this.setColor();
+				// 	this.setValue(this.rgba);
+				// } else {
+					this.setControl(index, this.site[index].left);
+				// }
+			},
+			/**
+			 * 设置 rgb 颜色
+			 */
+			setColor() {
+				const rgb = this.HSBToRGB(this.hsb);
+				this.rgba.r = rgb.r;
+				this.rgba.g = rgb.g;
+				this.rgba.b = rgb.b;
+			},
+			/**
+			 * 设置二进制颜色
+			 * @param {Object} rgb
+			 */
+			setValue(rgb) {
+				// this.hex = '#' + this.rgbToHex(rgb);
+				this.hex = this.getHexColor(rgb);
+				// console.log(this.hex)
+				if(this.background_state == true){
+					this.$emit('confirm', {
+						rgba: this.rgba,
+						hex: this.hex
+					})
+				}
+			},
+			//转化颜色 值为:rgba(194, 78, 78, 1) 转化为: #c24e4e
+			getHexColor(color) {
+			  // var values = color
+			  //   .replace(/rgba?\(/, '')
+			  //   .replace(/\)/, '')
+			  //   .replace(/[\s+]/g, '')
+			  //   .split(',')
+			  var a = parseFloat(color.a || 1),
+			    r = Math.floor(a * parseInt(color.r) + (1 - a) * 255),
+			    g = Math.floor(a * parseInt(color.g) + (1 - a) * 255),
+			    b = Math.floor(a * parseInt(color.b) + (1 - a) * 255)
+			  return '#' +
+			    ('0' + r.toString(16)).slice(-2) +
+			    ('0' + g.toString(16)).slice(-2) +
+			    ('0' + b.toString(16)).slice(-2)
+			},
+			setControl(index, x) {
+				const {
+					top,
+					left,
+					width,
+					height
+				} = this.position[index];
+				// if (index === 1) {
+				// 	this.hsb.h = parseInt((360 * x) / width);
+				// 	this.bgcolor = this.HSBToRGB({
+				// 		h: this.hsb.h,
+				// 		s: 100,
+				// 		b: 100
+				// 	});
+				// 	this.setColor()
+				// 	this.setValue(this.rgba);
+				// } else {
+					this.rgba.a =   (1 - 0.8 * (x / width)).toFixed(3);
+					this.setValue(this.rgba);
+				// }
+			},
+			/**
+			 * rgb 转 二进制 hex
+			 * @param {Object} rgb
+			 */
+			rgbToHex(rgb) {
+				let hex = [rgb.r.toString(16), rgb.g.toString(16), rgb.b.toString(16)];
+				hex.map(function(str, i) {
+					if (str.length == 1) {
+						hex[i] = '0' + str;
+					}
+				});
+				return hex.join('');
+			},
+			setColorBySelect(getrgb) {
+				const {
+					r,
+					g,
+					b,
+					a
+				} = getrgb;
+				let rgb = {}
+				rgb = {
+					r: r ? parseInt(r) : 0,
+					g: g ? parseInt(g) : 0,
+					b: b ? parseInt(b) : 0,
+					a: a ? a : 0,
+				};
+				this.rgba = rgb;
+				this.hsb = this.rgbToHsb(rgb);
+				this.changeViewByHsb();
+			},
+			changeViewByHsb() {
+				const [a, b, c] = this.position;
+				this.site[0].left = parseInt(this.hsb.s * a.width / 100);
+				this.site[0].top = parseInt((100 - this.hsb.b) * a.height / 100);
+				this.setColor(this.hsb.h);
+				this.setValue(this.rgba);
+				this.bgcolor = this.HSBToRGB({
+					h: this.hsb.h,
+					s: 100,
+					b: 100
+				});
+				this.site[1].left = this.hsb.h / 360 * b.width;
+				// this.site[2].left = (1 - this.rgba.a) * c.width;
+				this.site[2].left = (1 -  this.rgba.a) / 0.8 * c.width
+				// console.log(this.site[2].left)
+				// (1 - 0.8 * (x100 / width400)).toFixed(1);
+			},
+			/**
+			 * hsb 转 rgb
+			 * @param {Object} 颜色模式  H(hues)表示色相,S(saturation)表示饱和度,B(brightness)表示亮度
+			 */
+			HSBToRGB(hsb) {
+				let rgb = {};
+				let h = Math.round(hsb.h);
+				let s = Math.round((hsb.s * 255) / 100);
+				let v = Math.round((hsb.b * 255) / 100);
+				if (s == 0) {
+					rgb.r = rgb.g = rgb.b = v;
+				} else {
+					let t1 = v;
+					let t2 = ((255 - s) * v) / 255;
+					let t3 = ((t1 - t2) * (h % 60)) / 60;
+					if (h == 360) h = 0;
+					if (h < 60) {
+						rgb.r = t1;
+						rgb.b = t2;
+						rgb.g = t2 + t3;
+					} else if (h < 120) {
+						rgb.g = t1;
+						rgb.b = t2;
+						rgb.r = t1 - t3;
+					} else if (h < 180) {
+						rgb.g = t1;
+						rgb.r = t2;
+						rgb.b = t2 + t3;
+					} else if (h < 240) {
+						rgb.b = t1;
+						rgb.r = t2;
+						rgb.g = t1 - t3;
+					} else if (h < 300) {
+						rgb.b = t1;
+						rgb.g = t2;
+						rgb.r = t2 + t3;
+					} else if (h < 360) {
+						rgb.r = t1;
+						rgb.g = t2;
+						rgb.b = t1 - t3;
+					} else {
+						rgb.r = 0;
+						rgb.g = 0;
+						rgb.b = 0;
+					}
+				}
+				return {
+					r: Math.round(rgb.r),
+					g: Math.round(rgb.g),
+					b: Math.round(rgb.b)
+				};
+			},
+			rgbToHsb(rgb) {
+				let hsb = {
+					h: 0,
+					s: 0,
+					b: 0
+				};
+				let min = Math.min(rgb.r, rgb.g, rgb.b);
+				let max = Math.max(rgb.r, rgb.g, rgb.b);
+				let delta = max - min;
+				hsb.b = max;
+				hsb.s = max != 0 ? 255 * delta / max : 0;
+				if (hsb.s != 0) {
+					if (rgb.r == max) hsb.h = (rgb.g - rgb.b) / delta;
+					else if (rgb.g == max) hsb.h = 2 + (rgb.b - rgb.r) / delta;
+					else hsb.h = 4 + (rgb.r - rgb.g) / delta;
+				} else hsb.h = -1;
+				hsb.h *= 60;
+				if (hsb.h < 0) hsb.h = 0;
+				hsb.s *= 100 / 255;
+				hsb.b *= 100 / 255;
+				return hsb;
+			},
+			getSelectorQuery() {
+				const views = uni.createSelectorQuery().in(this);
+				views
+					.selectAll('.boxs')
+					.boundingClientRect(data => {
+						if (!data || data.length === 0) {
+							setTimeout(() => this.getSelectorQuery(), 20)
+							return
+						}
+						this.position = data;
+						// this.site[0].top = data[0].height;
+						// this.site[0].left = 0;
+						// this.site[1].left = data[1].width;
+						// this.site[2].left = data[2].width;
+						this.setColorBySelect(this.rgba);
+					})
+					.exec();
+			}
+		},
+		watch: {
+			spareColor(newVal) {
+				this.colorList = newVal;
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	//隐藏滚动条
+	::-webkit-scrollbar {
+		width: 0;
+		height: 0;
+		color: transparent;
+		display: none;
+	}
+	
+	.t-wrapper {
+		position: fixed;
+		top: 0;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		box-sizing: border-box;
+		z-index: 9999;
+	}
+
+	.t-box {
+		width: 100%;
+		position: absolute;
+		bottom: 0;
+		padding: 30upx 0;
+		padding-top: 0;
+		background: #262730;
+		transition: all 0.3s;
+		transform: translateY(100%);
+	}
+
+	.t-box.active {
+		transform: translateY(0%);
+	}
+
+	.t-header {
+		display: flex;
+		justify-content: space-between;
+		width: 100%;
+		height: 100upx;
+		border-bottom: 1px #eee solid;
+		box-shadow: 1px 0 2px rgba(0, 0, 0, 0.1);
+		background: #fff;
+	}
+
+	.t-header-button {
+		display: flex;
+		align-items: center;
+		width: 150upx;
+		height: 100upx;
+		font-size: 30upx;
+		color: #666;
+		padding-left: 20upx;
+	}
+
+	.t-header-button:last-child {
+		justify-content: flex-end;
+		padding-right: 20upx;
+	}
+
+	.t-mask {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background: rgba(0, 0, 0, 0.6);
+		z-index: -1;
+		transition: all 0.3s;
+		opacity: 0;
+	}
+
+	.t-mask.active {
+		opacity: 1;
+	}
+
+	.t-color__box {
+		position: relative;
+		height: 400upx;
+		background: rgb(255, 0, 0);
+		overflow: hidden;
+		box-sizing: border-box;
+		margin: 0 20upx;
+		margin-top: 20upx;
+		box-sizing: border-box;
+	}
+
+	.t-background {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		background: linear-gradient(to right, #fff, rgba(255, 255, 255, 0));
+	}
+
+	.t-color-mask {
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		width: 100%;
+		height: 400upx;
+		background: linear-gradient(to top, #000, rgba(0, 0, 0, 0));
+	}
+
+	.t-pointer {
+		position: absolute;
+		bottom: -8px;
+		left: -8px;
+		z-index: 2;
+		width: 15px;
+		height: 15px;
+		border: 1px #fff solid;
+		border-radius: 50%;
+	}
+
+	.t-show-color {
+		width: 100upx;
+		height: 50upx;
+	}
+
+	.t-control__box {
+		/* margin-top: 50upx;*/
+		margin-bottom: 50upx; 
+		width: 100%;
+		display: flex;
+		padding:0 20upx;
+		box-sizing: border-box;
+		align-items: center;
+	}
+
+	.t-control__color {
+		flex-shrink: 0;
+		width: 47upx;
+		height: 47upx;
+		border-radius: 50%;
+		// background-color: #fff;
+		// background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee),
+		// 	linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee);
+		// background-size: 36upx 36upx;
+		// background-position: 0 0, 18upx 18upx;
+		// border: 1px #eee solid;
+		overflow: hidden;
+	}
+
+	.t-control__color-content {
+		width: 100%;
+		height: 100%;
+	}
+
+	.t-control-box__item {
+		display: flex;
+		flex-direction: column;
+		justify-content: space-between;
+		width: 100%;
+		padding: 0 20upx;
+	}
+
+	.t-controller {
+		position: relative;
+		width: 100%;
+		height: 10px;
+		// background-color: #fff;
+		// background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee),
+		// 	linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee);
+		// background-size: 32upx 32upx;
+		// background-position: 0 0, 16upx 16upx;
+		border-radius: 15upx;
+	}
+
+	.t-hue {
+		width: 100%;
+		height: 100%;
+		background: linear-gradient(to right, #f00 0%, #ff0 17%, #0f0 33%, #0ff 50%, #00f 67%, #f0f 83%, #f00 100%);
+	}
+
+	.t-transparency {
+		width: 100%;
+		height: 100%;
+		border-radius: 15upx;
+	}
+	.t-circle-active{
+		border: 1px solid #33B3D5 !important;
+		// box-sizing: border-box;
+		box-shadow: 0 0 2px 10px rgba(0, 0, 0, 0.1);
+	}
+	.t-circle {
+		position: absolute;
+		right: -12px;
+		top: -7px;
+		width: 24px;
+		height: 24px;
+		// box-sizing: border-box;
+		border-radius: 50%;
+		background: #FFFFFF;
+		// box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.1);
+		// border: 1px solid #86D1EA;
+		box-shadow: 0px 7px 22px 5px rgba(2, 11, 31, 0.35);
+		// &:before {
+		// 	position: absolute;
+		// 	top: 0;
+		// 	left: 0;
+		// 	right: 0;
+		// 	bottom: 0;
+		// 	margin: auto;
+		// 	display: block;
+		// 	width: 10px;
+		// 	height: 10px;
+		// 	border-radius: 50%;
+		// 	background: #33B3D5;
+		// 	content: '';
+		// }
+	}
+
+	.t-result__box {
+		margin-top: 20upx;
+		padding: 10upx;
+		width: 100%;
+		display: flex;
+		box-sizing: border-box;
+	}
+
+	.t-result__item {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		padding: 10upx;
+		width: 100%;
+		box-sizing: border-box;
+	}
+
+	.t-result__box-input {
+		padding: 10upx 0;
+		width: 100%;
+		font-size: 28upx;
+		box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.1);
+		color: #999;
+		text-align: center;
+		background: #fff;
+	}
+
+	.t-result__box-text {
+		margin-top: 10upx;
+		font-size: 28upx;
+		line-height: 2;
+	}
+
+	.t-select {
+		flex-shrink: 0;
+		width: 150upx;
+		padding: 0 30upx;
+	}
+
+	.t-select .t-result__box-input {
+		border-radius: 10upx;
+		border: none;
+		color: #999;
+		box-shadow: 1px 1px 2px 1px rgba(0, 0, 0, 0.1);
+		background: #fff;
+	}
+
+	.t-select .t-result__box-input:active {
+		box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.1);
+	}
+
+	.t-alternative {
+		display: flex;
+		flex-wrap: wrap;
+		/* justify-content: space-between; */
+		width: 100%;
+		padding-right: 10upx;
+		box-sizing: border-box;
+	}
+
+	.t-alternative__item {
+		margin-left: 12upx;
+		margin-top: 10upx;
+		// width: 60upx;
+		// height: 60upx;
+		// border-radius: 10upx;
+		width: 67upx;
+		height: 67upx;
+		border-radius: 50%;
+		
+		background-color: #fff;
+		background-image: linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee),
+			linear-gradient(45deg, #eee 25%, transparent 25%, transparent 75%, #eee 75%, #eee);
+		background-size: 36upx 36upx;
+		background-position: 0 0, 18upx 18upx;
+		// border: 1px #eee solid;
+		overflow: hidden;
+	}
+
+	.t-alternative__item-content {
+		width: 67upx;
+		height: 67upx;
+		// background: rgba(255, 0, 0, 0.5);
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.t-alternative__item:active {
+		transition: all 0.3s;
+		transform: scale(1.1);
+	}
+</style>
diff --git a/components/tabBar.vue b/components/tabBar.vue
new file mode 100644
index 0000000..d7c4485
--- /dev/null
+++ b/components/tabBar.vue
@@ -0,0 +1,104 @@
+<template>
+	<view class="weui-tabbar" :class="extClass">
+		<view  @click="tabChange(index)" v-for="(item, index) in list" :key="index" class="weui-tabbar__item" :class="{'weui-bar__item_on':index === current}">
+			<view style="position: relative;display:inline-block;margin-top: 7upx;">
+				<image :src="current === index ? item.selectedIconPath : item.iconPath" class="weui-tabbar__icon"></image> 
+				</view>
+			<view class="weui-tabbar__label">{{ item.text }}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	props: {
+		list: {
+			type: Array,
+			default: function() {
+				return []
+			}
+		}
+	},
+	data() {
+		return {
+			extClass: '',
+			current: 0
+		};
+	},
+	methods: {
+		tabChange(index) {
+			if (index === this.current) {
+				return;
+			}
+			this.current = index;
+			this.$emit('tabChange',index)
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped >
+.weui-tabbar {
+	display: flex;
+	position: relative;
+	z-index: 500;
+	background-color: #333333;
+	height: 110upx;
+	font-size: 24upx;
+	
+}
+.weui-tabbar:before {
+	content: ' ';
+	position: absolute;
+	left: 0;
+	top: 0;
+	right: 0;
+	height: 1upx;
+	border-top: 1upx solid rgba(0, 0, 0, 0.1);
+	 color: rgba(0, 0, 0, 0.1);
+}
+.weui-tabbar__item {
+	display: block;
+	flex: 1;
+	padding: 8upx 0 4upx;
+	padding-bottom: calc(8upx + constant(safe-area-inset-bottom));
+	padding-bottom: calc(8upx + env(safe-area-inset-bottom));
+	color: rgba(0, 0, 0, 0.5);
+	text-align: center;
+	 -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+	font-size: 24upx;
+}
+.weui-tabbar__item:first-child {
+	padding-left: constant(safe-area-inset-left);
+	padding-left: env(safe-area-inset-left);
+}
+.weui-tabbar__item:last-child {
+	padding-right: constant(safe-area-inset-right);
+	padding-right: env(safe-area-inset-right);
+}
+.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon,
+.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon > i,
+.weui-tabbar__item.weui-bar__item_on .weui-tabbar__label {
+	color:#43CF7C;
+	font-size: 24upx;
+}
+.weui-tabbar__icon {
+	display: inline-block;
+	width: 45upx;
+	height: 45upx;
+	margin-bottom: 2upx;
+}
+i.weui-tabbar__icon,
+.weui-tabbar__icon > i {
+	font-size: 24upx;
+	color: rgba(0, 0, 0, 0.5);
+}
+.weui-tabbar__icon image {
+	width: 100%;
+	height: 100%;
+}
+.weui-tabbar__label {
+	color: #bfbfbf;
+	font-size: 24upx;
+}
+</style>
\ No newline at end of file
diff --git a/components/uParse/src/components/wxParseAudio.vue b/components/uParse/src/components/wxParseAudio.vue
new file mode 100644
index 0000000..86df246
--- /dev/null
+++ b/components/uParse/src/components/wxParseAudio.vue
@@ -0,0 +1,27 @@
+<template>
+  <!--增加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>
diff --git a/components/uParse/src/components/wxParseImg.vue b/components/uParse/src/components/wxParseImg.vue
new file mode 100644
index 0000000..0bd54ae
--- /dev/null
+++ b/components/uParse/src/components/wxParseImg.vue
@@ -0,0 +1,91 @@
+<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" 
+	 style="display:block;vertical-align:top;vertical-align:bottom;font-size:0;"/>
+</template>
+
+<script>
+	export default {
+		name: 'wxParseImg',
+		data() {
+			return {
+				newStyleStr: '',
+				preview: true,
+			};
+		},
+		props: {
+			node: {
+				type: Object,
+				default () {
+					return {};
+				},
+			},
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseImgTap(e) {
+				if (!this.preview) return;
+				const {
+					src
+				} = e.currentTarget.dataset;
+				if (!src) return;
+				this.uparse.preview(src, e);
+			},
+			// 图片视觉宽高计算函数区
+			wxParseImgLoad(e) {
+				const {
+					src
+				} = e.currentTarget.dataset;
+				if (!src) return;
+				const {
+					width,
+					height
+				} = e.mp.detail;
+				const recal = this.wxAutoImageCal(width, height);
+				const {
+					imageheight,
+					imageWidth
+				} = recal;
+				const {
+					padding,
+					mode
+				} = this.node.attr;
+				const {
+					styleStr
+				} = this.node;
+				const imageHeightStyle = mode === 'widthFix' ? '' : `height: ${imageheight}px;`;
+				this.newStyleStr = `${styleStr || ''}; ${imageHeightStyle || ''}; width:` + (!imageWidth || imageWidth === '100%' ? '100%;' : `${imageWidth}px;`) +`padding: 0 ${+padding}px;`;
+			},
+			// 计算视觉优先的图片宽高
+			wxAutoImageCal(originalWidth, originalHeight) {
+				// 获取图片的原始长宽
+				const {
+					padding
+				} = this.node.attr;
+				const windowWidth = this.node.$screen.width - (2 * padding);
+				const results = {};
+
+				if (originalWidth < 60 || originalHeight < 60) {
+					const {
+						src
+					} = this.node.attr;
+					this.uparse.removeImageUrl(src);
+					this.preview = false;
+				}
+
+				// 判断按照那种方式进行缩放
+				if (originalWidth > windowWidth) {
+					// 在图片width大于手机屏幕width时候
+					results.imageWidth = '100%';
+					results.imageheight = (windowWidth * (originalHeight / originalWidth));
+				} else {
+					// 否则展示原来的数据
+					results.imageWidth = originalWidth;
+					results.imageheight = originalHeight;
+				}
+
+				return results;
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate0.vue b/components/uParse/src/components/wxParseTemplate0.vue
new file mode 100644
index 0000000..5e34c1f
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate0.vue
@@ -0,0 +1,105 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--table类型-->
+			<block v-else-if="node.tag == 'table'">
+				<view :class="node.classStr" class="table" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate1';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate0',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;// TODO currentTarget才有dataset
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate1.vue b/components/uParse/src/components/wxParseTemplate1.vue
new file mode 100644
index 0000000..8a1e10a
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate1.vue
@@ -0,0 +1,96 @@
+<template>
+	<view :class="(node.tag == 'li' ? node.classStr : (node.node==='text'?'text':''))">
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<!-- <view :class="node.classStr" :style="node.styleStr"> -->
+				<view :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<!-- <text>\n</text> -->
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate2';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate1',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			},
+		},
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate10.vue b/components/uParse/src/components/wxParseTemplate10.vue
new file mode 100644
index 0000000..40f0d54
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate10.vue
@@ -0,0 +1,94 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate11';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate10',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate11.vue b/components/uParse/src/components/wxParseTemplate11.vue
new file mode 100644
index 0000000..81caa7f
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate11.vue
@@ -0,0 +1,84 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<!--button类型-->
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					{{node.text}}
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+					{{node.text}}
+				</view>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :class="node.classStr" :style="node.styleStr">
+					{{node.text}}
+				</view>
+			</block>
+		</block>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate11',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate2.vue b/components/uParse/src/components/wxParseTemplate2.vue
new file mode 100644
index 0000000..a48f1be
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate2.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate3';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate2',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate3.vue b/components/uParse/src/components/wxParseTemplate3.vue
new file mode 100644
index 0000000..90fc9bd
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate3.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate4';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate3',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate4.vue b/components/uParse/src/components/wxParseTemplate4.vue
new file mode 100644
index 0000000..af20eef
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate4.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate5';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate4',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate5.vue b/components/uParse/src/components/wxParseTemplate5.vue
new file mode 100644
index 0000000..0962239
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate5.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate6';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate5',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate6.vue b/components/uParse/src/components/wxParseTemplate6.vue
new file mode 100644
index 0000000..c322ab0
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate6.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate7';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate6',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate7.vue b/components/uParse/src/components/wxParseTemplate7.vue
new file mode 100644
index 0000000..591bcd6
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate7.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate8';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate7',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate8.vue b/components/uParse/src/components/wxParseTemplate8.vue
new file mode 100644
index 0000000..0ec0b3f
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate8.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate9';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate8',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseTemplate9.vue b/components/uParse/src/components/wxParseTemplate9.vue
new file mode 100644
index 0000000..ec799ac
--- /dev/null
+++ b/components/uParse/src/components/wxParseTemplate9.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate10';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate9',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/uParse/src/components/wxParseVideo.vue b/components/uParse/src/components/wxParseVideo.vue
new file mode 100644
index 0000000..a952f58
--- /dev/null
+++ b/components/uParse/src/components/wxParseVideo.vue
@@ -0,0 +1,15 @@
+<template>
+  <!--增加video标签支持,并循环添加-->
+  <view :class="node.classStr" :style="node.styleStr">
+    <video :class="node.classStr" class="video-video" :src="node.attr.src"></video>
+  </view>
+</template>
+
+<script>
+export default {
+  name: 'wxParseVideo',
+  props: {
+    node: {},
+  },
+};
+</script>
diff --git a/components/uParse/src/libs/html2json.js b/components/uParse/src/libs/html2json.js
new file mode 100644
index 0000000..de1bdd4
--- /dev/null
+++ b/components/uParse/src/libs/html2json.js
@@ -0,0 +1,274 @@
+/**
+ * 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 (name === 'align') {
+					node.styleStr = node.styleStr || '';
+					node.styleStr = node.styleStr += 'text-align:' + 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;
diff --git a/components/uParse/src/libs/htmlparser.js b/components/uParse/src/libs/htmlparser.js
new file mode 100644
index 0000000..2939da3
--- /dev/null
+++ b/components/uParse/src/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;
diff --git a/components/uParse/src/libs/wxDiscode.js b/components/uParse/src/libs/wxDiscode.js
new file mode 100644
index 0000000..a7a36a6
--- /dev/null
+++ b/components/uParse/src/libs/wxDiscode.js
@@ -0,0 +1,195 @@
+// HTML 支持的数学符号
+function strNumDiscode(str) {
+  str = str.replace(/&forall;/g, '∀');
+  str = str.replace(/&part;/g, '∂');
+  str = str.replace(/&exist;/g, '∃');
+  str = str.replace(/&empty;/g, '∅');
+  str = str.replace(/&nabla;/g, '∇');
+  str = str.replace(/&isin;/g, '∈');
+  str = str.replace(/&notin;/g, '∉');
+  str = str.replace(/&ni;/g, '∋');
+  str = str.replace(/&prod;/g, '∏');
+  str = str.replace(/&sum;/g, '∑');
+  str = str.replace(/&minus;/g, '−');
+  str = str.replace(/&lowast;/g, '∗');
+  str = str.replace(/&radic;/g, '√');
+  str = str.replace(/&prop;/g, '∝');
+  str = str.replace(/&infin;/g, '∞');
+  str = str.replace(/&ang;/g, '∠');
+  str = str.replace(/&and;/g, '∧');
+  str = str.replace(/&or;/g, '∨');
+  str = str.replace(/&cap;/g, '∩');
+  str = str.replace(/&cup;/g, '∪');
+  str = str.replace(/&int;/g, '∫');
+  str = str.replace(/&there4;/g, '∴');
+  str = str.replace(/&sim;/g, '∼');
+  str = str.replace(/&cong;/g, '≅');
+  str = str.replace(/&asymp;/g, '≈');
+  str = str.replace(/&ne;/g, '≠');
+  str = str.replace(/&le;/g, '≤');
+  str = str.replace(/&ge;/g, '≥');
+  str = str.replace(/&sub;/g, '⊂');
+  str = str.replace(/&sup;/g, '⊃');
+  str = str.replace(/&nsub;/g, '⊄');
+  str = str.replace(/&sube;/g, '⊆');
+  str = str.replace(/&supe;/g, '⊇');
+  str = str.replace(/&oplus;/g, '⊕');
+  str = str.replace(/&otimes;/g, '⊗');
+  str = str.replace(/&perp;/g, '⊥');
+  str = str.replace(/&sdot;/g, '⋅');
+  return str;
+}
+
+// HTML 支持的希腊字母
+function strGreeceDiscode(str) {
+  str = str.replace(/&Alpha;/g, 'Α');
+  str = str.replace(/&Beta;/g, 'Β');
+  str = str.replace(/&Gamma;/g, 'Γ');
+  str = str.replace(/&Delta;/g, 'Δ');
+  str = str.replace(/&Epsilon;/g, 'Ε');
+  str = str.replace(/&Zeta;/g, 'Ζ');
+  str = str.replace(/&Eta;/g, 'Η');
+  str = str.replace(/&Theta;/g, 'Θ');
+  str = str.replace(/&Iota;/g, 'Ι');
+  str = str.replace(/&Kappa;/g, 'Κ');
+  str = str.replace(/&Lambda;/g, 'Λ');
+  str = str.replace(/&Mu;/g, 'Μ');
+  str = str.replace(/&Nu;/g, 'Ν');
+  str = str.replace(/&Xi;/g, 'Ν');
+  str = str.replace(/&Omicron;/g, 'Ο');
+  str = str.replace(/&Pi;/g, 'Π');
+  str = str.replace(/&Rho;/g, 'Ρ');
+  str = str.replace(/&Sigma;/g, 'Σ');
+  str = str.replace(/&Tau;/g, 'Τ');
+  str = str.replace(/&Upsilon;/g, 'Υ');
+  str = str.replace(/&Phi;/g, 'Φ');
+  str = str.replace(/&Chi;/g, 'Χ');
+  str = str.replace(/&Psi;/g, 'Ψ');
+  str = str.replace(/&Omega;/g, 'Ω');
+
+  str = str.replace(/&alpha;/g, 'α');
+  str = str.replace(/&beta;/g, 'β');
+  str = str.replace(/&gamma;/g, 'γ');
+  str = str.replace(/&delta;/g, 'δ');
+  str = str.replace(/&epsilon;/g, 'ε');
+  str = str.replace(/&zeta;/g, 'ζ');
+  str = str.replace(/&eta;/g, 'η');
+  str = str.replace(/&theta;/g, 'θ');
+  str = str.replace(/&iota;/g, 'ι');
+  str = str.replace(/&kappa;/g, 'κ');
+  str = str.replace(/&lambda;/g, 'λ');
+  str = str.replace(/&mu;/g, 'μ');
+  str = str.replace(/&nu;/g, 'ν');
+  str = str.replace(/&xi;/g, 'ξ');
+  str = str.replace(/&omicron;/g, 'ο');
+  str = str.replace(/&pi;/g, 'π');
+  str = str.replace(/&rho;/g, 'ρ');
+  str = str.replace(/&sigmaf;/g, 'ς');
+  str = str.replace(/&sigma;/g, 'σ');
+  str = str.replace(/&tau;/g, 'τ');
+  str = str.replace(/&upsilon;/g, 'υ');
+  str = str.replace(/&phi;/g, 'φ');
+  str = str.replace(/&chi;/g, 'χ');
+  str = str.replace(/&psi;/g, 'ψ');
+  str = str.replace(/&omega;/g, 'ω');
+  str = str.replace(/&thetasym;/g, 'ϑ');
+  str = str.replace(/&upsih;/g, 'ϒ');
+  str = str.replace(/&piv;/g, 'ϖ');
+  str = str.replace(/&middot;/g, '·');
+  return str;
+}
+
+function strcharacterDiscode(str) {
+  // 加入常用解析
+  str = str.replace(/&nbsp;/g, ' ');
+  str = str.replace(/&ensp;/g, ' ');
+  str = str.replace(/&emsp;/g, ' ');
+  str = str.replace(/&quot;/g, "'");
+  str = str.replace(/&amp;/g, '&');
+  str = str.replace(/&lt;/g, '<');
+  str = str.replace(/&gt;/g, '>');
+  str = str.replace(/&#8226;/g, '•');
+
+  return str;
+}
+
+// HTML 支持的其他实体
+function strOtherDiscode(str) {
+  str = str.replace(/&OElig;/g, 'Œ');
+  str = str.replace(/&oelig;/g, 'œ');
+  str = str.replace(/&Scaron;/g, 'Š');
+  str = str.replace(/&scaron;/g, 'š');
+  str = str.replace(/&Yuml;/g, 'Ÿ');
+  str = str.replace(/&fnof;/g, 'ƒ');
+  str = str.replace(/&circ;/g, 'ˆ');
+  str = str.replace(/&tilde;/g, '˜');
+  str = str.replace(/&ensp;/g, '');
+  str = str.replace(/&emsp;/g, '');
+  str = str.replace(/&thinsp;/g, '');
+  str = str.replace(/&zwnj;/g, '');
+  str = str.replace(/&zwj;/g, '');
+  str = str.replace(/&lrm;/g, '');
+  str = str.replace(/&rlm;/g, '');
+  str = str.replace(/&ndash;/g, '–');
+  str = str.replace(/&mdash;/g, '—');
+  str = str.replace(/&lsquo;/g, '‘');
+  str = str.replace(/&rsquo;/g, '’');
+  str = str.replace(/&sbquo;/g, '‚');
+  str = str.replace(/&ldquo;/g, '“');
+  str = str.replace(/&rdquo;/g, '”');
+  str = str.replace(/&bdquo;/g, '„');
+  str = str.replace(/&dagger;/g, '†');
+  str = str.replace(/&Dagger;/g, '‡');
+  str = str.replace(/&bull;/g, '•');
+  str = str.replace(/&hellip;/g, '…');
+  str = str.replace(/&permil;/g, '‰');
+  str = str.replace(/&prime;/g, '′');
+  str = str.replace(/&Prime;/g, '″');
+  str = str.replace(/&lsaquo;/g, '‹');
+  str = str.replace(/&rsaquo;/g, '›');
+  str = str.replace(/&oline;/g, '‾');
+  str = str.replace(/&euro;/g, '€');
+  str = str.replace(/&trade;/g, '™');
+
+  str = str.replace(/&larr;/g, '←');
+  str = str.replace(/&uarr;/g, '↑');
+  str = str.replace(/&rarr;/g, '→');
+  str = str.replace(/&darr;/g, '↓');
+  str = str.replace(/&harr;/g, '↔');
+  str = str.replace(/&crarr;/g, '↵');
+  str = str.replace(/&lceil;/g, '⌈');
+  str = str.replace(/&rceil;/g, '⌉');
+
+  str = str.replace(/&lfloor;/g, '⌊');
+  str = str.replace(/&rfloor;/g, '⌋');
+  str = str.replace(/&loz;/g, '◊');
+  str = str.replace(/&spades;/g, '♠');
+  str = str.replace(/&clubs;/g, '♣');
+  str = str.replace(/&hearts;/g, '♥');
+
+  str = str.replace(/&diams;/g, '♦');
+  str = str.replace(/&#39;/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,
+};
diff --git a/components/uParse/src/wxParse.css b/components/uParse/src/wxParse.css
new file mode 100644
index 0000000..691993a
--- /dev/null
+++ b/components/uParse/src/wxParse.css
@@ -0,0 +1,232 @@
+/**
+ * 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
+ */
+
+.wxParse {
+  width: 100%;
+  font-family: Helvetica, sans-serif;
+  font-size: 30upx;
+  color: #666;
+  line-height: 1.8;
+}
+
+.wxParse view {
+  word-break: hyphenate;
+}
+
+.wxParse .inline {
+  display: inline;
+  margin: 0;
+  padding: 0;
+}
+
+.wxParse .div {
+  margin: 0;
+  padding: 0;
+}
+
+.wxParse .h1 .text {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+.wxParse .h2 .text {
+  font-size: 1.5em;
+  margin: 0.83em 0;
+}
+.wxParse .h3 .text {
+  font-size: 1.17em;
+  margin: 1em 0;
+}
+.wxParse .h4 .text {
+  margin: 1.33em 0;
+}
+.wxParse .h5 .text {
+  font-size: 0.83em;
+  margin: 1.67em 0;
+}
+.wxParse .h6 .text {
+  font-size: 0.67em;
+  margin: 2.33em 0;
+}
+
+.wxParse .h1 .text,
+.wxParse .h2 .text,
+.wxParse .h3 .text,
+.wxParse .h4 .text,
+.wxParse .h5 .text,
+.wxParse .h6 .text,
+.wxParse .b,
+.wxParse .strong {
+  font-weight: bolder;
+}
+
+
+.wxParse .p {
+  margin: 1em 0;
+}
+
+.wxParse .i,
+.wxParse .cite,
+.wxParse .em,
+.wxParse .var,
+.wxParse .address {
+  font-style: italic;
+}
+
+.wxParse .pre,
+.wxParse .tt,
+.wxParse .code,
+.wxParse .kbd,
+.wxParse .samp {
+  font-family: monospace;
+}
+.wxParse .pre {
+  overflow: auto;
+  background: #f5f5f5;
+  padding: 16upx;
+  white-space: pre;
+  margin: 1em 0upx;
+}
+.wxParse .code {
+  display: inline;
+  background: #f5f5f5;
+}
+
+.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 .s {
+  display: inline;
+}
+
+.wxParse .a {
+  color: deepskyblue;
+}
+
+.wxParse .video {
+  text-align: center;
+  margin: 22upx 0;
+}
+
+.wxParse .video-video {
+  width: 100%;
+}
+
+.wxParse .img {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  max-width: 100%;
+  overflow: hidden;
+}
+
+.wxParse .blockquote {
+  margin: 10upx 0;
+  padding: 22upx 0 22upx 22upx;
+  font-family: Courier, Calibri, "宋体";
+  background: #f5f5f5;
+  border-left: 6upx solid #dbdbdb;
+}
+.wxParse .blockquote .p {
+  margin: 0;
+}
+
+.wxParse .ul, .wxParse .ol {
+  display: block;
+  margin: 1em 0;
+  padding-left: 33upx;
+}
+.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 .table {
+  width: 100%;
+}
+.wxParse .thead, .wxParse .tfoot, .wxParse .tr {
+  display: flex;
+  flex-direction: row;
+}
+.wxParse .tr {
+  width:100%;
+  display: flex;
+  border-right: 2upx solid #e0e0e0;
+  border-bottom: 2upx solid #e0e0e0;
+}
+.wxParse .th,
+.wxParse .td {
+  display: flex;
+  width: 1276upx;
+  overflow: auto;
+  flex: 1;
+  padding: 11upx;
+  border-left: 2upx solid #e0e0e0;
+}
+.wxParse .td:last {
+  border-top: 2upx solid #e0e0e0;
+}
+.wxParse .th {
+  background: #f0f0f0;
+  border-top: 2upx solid #e0e0e0;
+}
diff --git a/components/uParse/src/wxParse.vue b/components/uParse/src/wxParse.vue
new file mode 100644
index 0000000..0af913b
--- /dev/null
+++ b/components/uParse/src/wxParse.vue
@@ -0,0 +1,126 @@
+<!--**
+ * forked from:https://github.com/F-loat/mpvue-wxParse
+ *
+ * github地址: https://github.com/dcloudio/uParse
+ *
+ * for: uni-app框架下 富文本解析
+ */-->
+
+<template>
+	<!--基础元素-->
+	<view class="wxParse" :class="className" v-if="!loading">
+	  <view v-for="(node,index) of nodes" :key="index">
+		<wxParseTemplate :node="node" />
+	  </view>
+	</view>
+</template>
+
+<script>
+import HtmlToJson from './libs/html2json';
+import wxParseTemplate from './components/wxParseTemplate0';
+
+export default {
+  name: 'wxParse',
+  props: {
+    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: '',
+        };
+      },
+    },
+  },
+	provide() {
+		return {
+			uparse: this
+		}
+	},
+  components: {
+    wxParseTemplate,
+  },
+  data() {
+    return {
+      imageUrls: []
+    };
+  },
+  computed: {
+    nodes() {
+      const {
+        content,
+        noData,
+        imageProp,
+        startHandler,
+        endHandler,
+        charsHandler,
+      } = this;
+      const parseData = content || noData;
+      const customHandler = {
+        start: startHandler,
+        end: endHandler,
+        chars: charsHandler,
+      };
+      const results = HtmlToJson(parseData, customHandler, imageProp, this);
+      this.imageUrls = results.imageUrls;
+	  console.log(results.nodes)
+      return results.nodes;
+    },
+  },
+  methods: {
+    navigate(href, $event) {
+      this.$emit('navigate', href, $event);
+    },
+    preview(src, $event) {
+      if (!this.imageUrls.length) return;
+      wx.previewImage({
+        current: src,
+        urls: this.imageUrls,
+      });
+      this.$emit('preview', src, $event);
+    },
+    removeImageUrl(src) {
+      const { imageUrls } = this;
+      imageUrls.splice(imageUrls.indexOf(src), 1);
+    },
+  },
+};
+</script>
+<style>
+	
+</style>
diff --git a/components/uni-badge/uni-badge.vue b/components/uni-badge/uni-badge.vue
new file mode 100644
index 0000000..0224ea4
--- /dev/null
+++ b/components/uni-badge/uni-badge.vue
@@ -0,0 +1,99 @@
+<template>
+	<text class="uni-badge" v-if="text" :class="inverted ? 'uni-badge-' + type + ' uni-badge--' + size + ' uni-badge-inverted' : 'uni-badge-' + type + ' uni-badge--' + size" @click="onClick()">{{text}}</text>
+</template>
+
+<script>
+	export default {
+		name: 'uni-badge',
+		props: {
+			type: {
+				type: String,
+				default: 'default'
+			},
+			inverted: {
+				type: Boolean,
+				default: false
+			},
+			text: {
+				type: String,
+				default: ''
+			},
+			size: { //small.normal
+				type: String,
+				default: 'normal'
+			}
+		},
+		methods: {
+			onClick() {
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-badge {
+		font-family: 'Helvetica Neue', Helvetica, sans-serif;
+		box-sizing: border-box;
+		font-size: 12px;
+		line-height: 1;
+		display: inline-block;
+		padding: 3px 6px;
+		color: #333;
+		border-radius: 100px;
+		background-color: #f1f1f1
+	}
+
+	.uni-badge.uni-badge-inverted {
+		padding: 0 5px 0 0;
+		color: #999;
+		background-color: transparent
+	}
+
+	.uni-badge-primary {
+		color: #fff;
+		background-color: #007aff
+	}
+
+	.uni-badge-primary.uni-badge-inverted {
+		color: #007aff;
+		background-color: transparent
+	}
+
+	.uni-badge-success {
+		color: #fff;
+		background-color: #4cd964
+	}
+
+	.uni-badge-success.uni-badge-inverted {
+		color: #4cd964;
+		background-color: transparent
+	}
+
+	.uni-badge-warning {
+		color: #fff;
+		background-color: #f0ad4e
+	}
+
+	.uni-badge-warning.uni-badge-inverted {
+		color: #f0ad4e;
+		background-color: transparent
+	}
+
+	.uni-badge-error {
+		color: #fff;
+		background-color: #dd524d
+	}
+
+	.uni-badge-error.uni-badge-inverted {
+		color: #dd524d;
+		background-color: transparent
+	}
+
+	.uni-badge--small {
+		transform: scale(.8);
+		transform-origin: center center
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-calendar/calendar.js b/components/uni-calendar/calendar.js
new file mode 100644
index 0000000..b8d7d6f
--- /dev/null
+++ b/components/uni-calendar/calendar.js
@@ -0,0 +1,546 @@
+/**
+* @1900-2100区间内的公历、农历互转
+* @charset UTF-8
+* @github  https://github.com/jjonline/calendar.js
+* @Author  Jea杨(JJonline@JJonline.Cn)
+* @Time    2014-7-21
+* @Time    2016-8-13 Fixed 2033hex、Attribution Annals
+* @Time    2016-9-25 Fixed lunar LeapMonth Param Bug
+* @Time    2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
+* @Version 1.0.3
+* @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
+* @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
+*/
+/* eslint-disable */
+var calendar = {
+
+  /**
+      * 农历1900-2100的润大小信息表
+      * @Array Of Property
+      * @return Hex
+      */
+  lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, // 1900-1909
+    0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, // 1910-1919
+    0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, // 1920-1929
+    0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, // 1930-1939
+    0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, // 1940-1949
+    0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, // 1950-1959
+    0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, // 1960-1969
+    0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, // 1970-1979
+    0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, // 1980-1989
+    0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0, // 1990-1999
+    0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, // 2000-2009
+    0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, // 2010-2019
+    0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, // 2020-2029
+    0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, // 2030-2039
+    0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, // 2040-2049
+    /** Add By JJonline@JJonline.Cn**/
+    0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, // 2050-2059
+    0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, // 2060-2069
+    0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, // 2070-2079
+    0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, // 2080-2089
+    0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, // 2090-2099
+    0x0d520], // 2100
+
+  /**
+      * 公历每个月份的天数普通表
+      * @Array Of Property
+      * @return Number
+      */
+  solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+
+  /**
+      * 天干地支之天干速查表
+      * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
+      * @return Cn string
+      */
+  Gan: ['\u7532', '\u4e59', '\u4e19', '\u4e01', '\u620a', '\u5df1', '\u5e9a', '\u8f9b', '\u58ec', '\u7678'],
+
+  /**
+      * 天干地支之地支速查表
+      * @Array Of Property
+      * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
+      * @return Cn string
+      */
+  Zhi: ['\u5b50', '\u4e11', '\u5bc5', '\u536f', '\u8fb0', '\u5df3', '\u5348', '\u672a', '\u7533', '\u9149', '\u620c', '\u4ea5'],
+
+  /**
+      * 天干地支之地支速查表<=>生肖
+      * @Array Of Property
+      * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
+      * @return Cn string
+      */
+  Animals: ['\u9f20', '\u725b', '\u864e', '\u5154', '\u9f99', '\u86c7', '\u9a6c', '\u7f8a', '\u7334', '\u9e21', '\u72d7', '\u732a'],
+
+  /**
+      * 24节气速查表
+      * @Array Of Property
+      * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
+      * @return Cn string
+      */
+  solarTerm: ['\u5c0f\u5bd2', '\u5927\u5bd2', '\u7acb\u6625', '\u96e8\u6c34', '\u60ca\u86f0', '\u6625\u5206', '\u6e05\u660e', '\u8c37\u96e8', '\u7acb\u590f', '\u5c0f\u6ee1', '\u8292\u79cd', '\u590f\u81f3', '\u5c0f\u6691', '\u5927\u6691', '\u7acb\u79cb', '\u5904\u6691', '\u767d\u9732', '\u79cb\u5206', '\u5bd2\u9732', '\u971c\u964d', '\u7acb\u51ac', '\u5c0f\u96ea', '\u5927\u96ea', '\u51ac\u81f3'],
+
+  /**
+      * 1900-2100各年的24节气日期速查表
+      * @Array Of Property
+      * @return 0x string For splice
+      */
+  sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
+    '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
+    'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
+    '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
+    '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
+    '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
+    '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
+    '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
+    '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
+    '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
+    '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+    '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+    '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
+    '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+    '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
+    '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
+    '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+    '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
+    '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
+    '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
+    '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+    '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+    '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+    '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+    '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
+    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
+    '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+    '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+    '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
+    '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
+    '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
+    '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
+    '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
+    '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+    '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
+    '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
+    '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+    '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
+    '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
+    '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
+    '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+    '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+    '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
+    '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
+    '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
+    '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
+    '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
+    '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
+    '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
+    '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
+    '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
+    '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
+    '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
+    '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
+    '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
+
+  /**
+      * 数字转中文速查表
+      * @Array Of Property
+      * @trans ['日','一','二','三','四','五','六','七','八','九','十']
+      * @return Cn string
+      */
+  nStr1: ['\u65e5', '\u4e00', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341'],
+
+  /**
+      * 日期转农历称呼速查表
+      * @Array Of Property
+      * @trans ['初','十','廿','卅']
+      * @return Cn string
+      */
+  nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'],
+
+  /**
+      * 月份转农历称呼速查表
+      * @Array Of Property
+      * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
+      * @return Cn string
+      */
+  nStr3: ['\u6b63', '\u4e8c', '\u4e09', '\u56db', '\u4e94', '\u516d', '\u4e03', '\u516b', '\u4e5d', '\u5341', '\u51ac', '\u814a'],
+
+  /**
+      * 返回农历y年一整年的总天数
+      * @param lunar Year
+      * @return Number
+      * @eg:var count = calendar.lYearDays(1987) ;//count=387
+      */
+  lYearDays: function (y) {
+    var i; var sum = 348
+    for (i = 0x8000; i > 0x8; i >>= 1) { sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0 }
+    return (sum + this.leapDays(y))
+  },
+
+  /**
+      * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
+      * @param lunar Year
+      * @return Number (0-12)
+      * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
+      */
+  leapMonth: function (y) { // 闰字编码 \u95f0
+    return (this.lunarInfo[y - 1900] & 0xf)
+  },
+
+  /**
+      * 返回农历y年闰月的天数 若该年没有闰月则返回0
+      * @param lunar Year
+      * @return Number (0、29、30)
+      * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
+      */
+  leapDays: function (y) {
+    if (this.leapMonth(y)) {
+      return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29)
+    }
+    return (0)
+  },
+
+  /**
+      * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
+      * @param lunar Year
+      * @return Number (-1、29、30)
+      * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
+      */
+  monthDays: function (y, m) {
+    if (m > 12 || m < 1) { return -1 }// 月份参数从1至12,参数错误返回-1
+    return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29)
+  },
+
+  /**
+      * 返回公历(!)y年m月的天数
+      * @param solar Year
+      * @return Number (-1、28、29、30、31)
+      * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
+      */
+  solarDays: function (y, m) {
+    if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+    var ms = m - 1
+    if (ms == 1) { // 2月份的闰平规律测算后确认返回28或29
+      return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28)
+    } else {
+      return (this.solarMonth[ms])
+    }
+  },
+
+  /**
+     * 农历年份转换为干支纪年
+     * @param  lYear 农历年的年份数
+     * @return Cn string
+     */
+  toGanZhiYear: function (lYear) {
+    var ganKey = (lYear - 3) % 10
+    var zhiKey = (lYear - 3) % 12
+    if (ganKey == 0) ganKey = 10// 如果余数为0则为最后一个天干
+    if (zhiKey == 0) zhiKey = 12// 如果余数为0则为最后一个地支
+    return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1]
+  },
+
+  /**
+     * 公历月、日判断所属星座
+     * @param  cMonth [description]
+     * @param  cDay [description]
+     * @return Cn string
+     */
+  toAstro: function (cMonth, cDay) {
+    var s = '\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf'
+    var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
+    return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7'// 座
+  },
+
+  /**
+      * 传入offset偏移量返回干支
+      * @param offset 相对甲子的偏移量
+      * @return Cn string
+      */
+  toGanZhi: function (offset) {
+    return this.Gan[offset % 10] + this.Zhi[offset % 12]
+  },
+
+  /**
+      * 传入公历(!)y年获得该年第n个节气的公历日期
+      * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
+      * @return day Number
+      * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
+      */
+  getTerm: function (y, n) {
+    if (y < 1900 || y > 2100) { return -1 }
+    if (n < 1 || n > 24) { return -1 }
+    var _table = this.sTermInfo[y - 1900]
+    var _info = [
+      parseInt('0x' + _table.substr(0, 5)).toString(),
+      parseInt('0x' + _table.substr(5, 5)).toString(),
+      parseInt('0x' + _table.substr(10, 5)).toString(),
+      parseInt('0x' + _table.substr(15, 5)).toString(),
+      parseInt('0x' + _table.substr(20, 5)).toString(),
+      parseInt('0x' + _table.substr(25, 5)).toString()
+    ]
+    var _calday = [
+      _info[0].substr(0, 1),
+      _info[0].substr(1, 2),
+      _info[0].substr(3, 1),
+      _info[0].substr(4, 2),
+
+      _info[1].substr(0, 1),
+      _info[1].substr(1, 2),
+      _info[1].substr(3, 1),
+      _info[1].substr(4, 2),
+
+      _info[2].substr(0, 1),
+      _info[2].substr(1, 2),
+      _info[2].substr(3, 1),
+      _info[2].substr(4, 2),
+
+      _info[3].substr(0, 1),
+      _info[3].substr(1, 2),
+      _info[3].substr(3, 1),
+      _info[3].substr(4, 2),
+
+      _info[4].substr(0, 1),
+      _info[4].substr(1, 2),
+      _info[4].substr(3, 1),
+      _info[4].substr(4, 2),
+
+      _info[5].substr(0, 1),
+      _info[5].substr(1, 2),
+      _info[5].substr(3, 1),
+      _info[5].substr(4, 2)
+    ]
+    return parseInt(_calday[n - 1])
+  },
+
+  /**
+      * 传入农历数字月份返回汉语通俗表示法
+      * @param lunar month
+      * @return Cn string
+      * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
+      */
+  toChinaMonth: function (m) { // 月 => \u6708
+    if (m > 12 || m < 1) { return -1 } // 若参数错误 返回-1
+    var s = this.nStr3[m - 1]
+    s += '\u6708'// 加上月字
+    return s
+  },
+
+  /**
+      * 传入农历日期数字返回汉字表示法
+      * @param lunar day
+      * @return Cn string
+      * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
+      */
+  toChinaDay: function (d) { // 日 => \u65e5
+    var s
+    switch (d) {
+      case 10:
+        s = '\u521d\u5341'; break
+      case 20:
+        s = '\u4e8c\u5341'; break
+        break
+      case 30:
+        s = '\u4e09\u5341'; break
+        break
+      default :
+        s = this.nStr2[Math.floor(d / 10)]
+        s += this.nStr1[d % 10]
+    }
+    return (s)
+  },
+
+  /**
+      * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
+      * @param y year
+      * @return Cn string
+      * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
+      */
+  getAnimal: function (y) {
+    return this.Animals[(y - 4) % 12]
+  },
+
+  /**
+      * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
+      * @param y  solar year
+      * @param m  solar month
+      * @param d  solar day
+      * @return JSON object
+      * @eg:console.log(calendar.solar2lunar(1987,11,01));
+      */
+  solar2lunar: function (y, m, d) { // 参数区间1900.1.31~2100.12.31
+    // 年份限定、上限
+    if (y < 1900 || y > 2100) {
+      return -1// undefined转换为数字变为NaN
+    }
+    // 公历传参最下限
+    if (y == 1900 && m == 1 && d < 31) {
+      return -1
+    }
+    // 未传参  获得当天
+    if (!y) {
+      var objDate = new Date()
+    } else {
+      var objDate = new Date(y, parseInt(m) - 1, d)
+    }
+    var i; var leap = 0; var temp = 0
+    // 修正ymd参数
+    var y = objDate.getFullYear()
+    var m = objDate.getMonth() + 1
+    var d = objDate.getDate()
+    var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000
+    for (i = 1900; i < 2101 && offset > 0; i++) {
+      temp = this.lYearDays(i)
+      offset -= temp
+    }
+    if (offset < 0) {
+      offset += temp; i--
+    }
+
+    // 是否今天
+    var isTodayObj = new Date()
+    var isToday = false
+    if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
+      isToday = true
+    }
+    // 星期几
+    var nWeek = objDate.getDay()
+    var cWeek = this.nStr1[nWeek]
+    // 数字表示周几顺应天朝周一开始的惯例
+    if (nWeek == 0) {
+      nWeek = 7
+    }
+    // 农历年
+    var year = i
+    var leap = this.leapMonth(i) // 闰哪个月
+    var isLeap = false
+
+    // 效验闰月
+    for (i = 1; i < 13 && offset > 0; i++) {
+      // 闰月
+      if (leap > 0 && i == (leap + 1) && isLeap == false) {
+        --i
+        isLeap = true; temp = this.leapDays(year) // 计算农历闰月天数
+      } else {
+        temp = this.monthDays(year, i)// 计算农历普通月天数
+      }
+      // 解除闰月
+      if (isLeap == true && i == (leap + 1)) { isLeap = false }
+      offset -= temp
+    }
+    // 闰月导致数组下标重叠取反
+    if (offset == 0 && leap > 0 && i == leap + 1) {
+      if (isLeap) {
+        isLeap = false
+      } else {
+        isLeap = true; --i
+      }
+    }
+    if (offset < 0) {
+      offset += temp; --i
+    }
+    // 农历月
+    var month = i
+    // 农历日
+    var day = offset + 1
+    // 天干地支处理
+    var sm = m - 1
+    var gzY = this.toGanZhiYear(year)
+
+    // 当月的两个节气
+    // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
+    var firstNode = this.getTerm(y, (m * 2 - 1))// 返回当月「节」为几日开始
+    var secondNode = this.getTerm(y, (m * 2))// 返回当月「节」为几日开始
+
+    // 依据12节气修正干支月
+    var gzM = this.toGanZhi((y - 1900) * 12 + m + 11)
+    if (d >= firstNode) {
+      gzM = this.toGanZhi((y - 1900) * 12 + m + 12)
+    }
+
+    // 传入的日期的节气与否
+    var isTerm = false
+    var Term = null
+    if (firstNode == d) {
+      isTerm = true
+      Term = this.solarTerm[m * 2 - 2]
+    }
+    if (secondNode == d) {
+      isTerm = true
+      Term = this.solarTerm[m * 2 - 1]
+    }
+    // 日柱 当月一日与 1900/1/1 相差天数
+    var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10
+    var gzD = this.toGanZhi(dayCyclical + d - 1)
+    // 该日期所属的星座
+    var astro = this.toAstro(m, d)
+
+    return { 'lYear': year, 'lMonth': month, 'lDay': day, 'Animal': this.getAnimal(year), 'IMonthCn': (isLeap ? '\u95f0' : '') + this.toChinaMonth(month), 'IDayCn': this.toChinaDay(day), 'cYear': y, 'cMonth': m, 'cDay': d, 'gzYear': gzY, 'gzMonth': gzM, 'gzDay': gzD, 'isToday': isToday, 'isLeap': isLeap, 'nWeek': nWeek, 'ncWeek': '\u661f\u671f' + cWeek, 'isTerm': isTerm, 'Term': Term, 'astro': astro }
+  },
+
+  /**
+      * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
+      * @param y  lunar year
+      * @param m  lunar month
+      * @param d  lunar day
+      * @param isLeapMonth  lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
+      * @return JSON object
+      * @eg:console.log(calendar.lunar2solar(1987,9,10));
+      */
+  lunar2solar: function (y, m, d, isLeapMonth) { // 参数区间1900.1.31~2100.12.1
+    var isLeapMonth = !!isLeapMonth
+    var leapOffset = 0
+    var leapMonth = this.leapMonth(y)
+    var leapDay = this.leapDays(y)
+    if (isLeapMonth && (leapMonth != m)) { return -1 }// 传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
+    if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1 }// 超出了最大极限值
+    var day = this.monthDays(y, m)
+    var _day = day
+    // bugFix 2016-9-25
+    // if month is leap, _day use leapDays method
+    if (isLeapMonth) {
+      _day = this.leapDays(y, m)
+    }
+    if (y < 1900 || y > 2100 || d > _day) { return -1 }// 参数合法性效验
+
+    // 计算农历的时间差
+    var offset = 0
+    for (var i = 1900; i < y; i++) {
+      offset += this.lYearDays(i)
+    }
+    var leap = 0; var isAdd = false
+    for (var i = 1; i < m; i++) {
+      leap = this.leapMonth(y)
+      if (!isAdd) { // 处理闰月
+        if (leap <= i && leap > 0) {
+          offset += this.leapDays(y); isAdd = true
+        }
+      }
+      offset += this.monthDays(y, i)
+    }
+    // 转换闰月农历 需补充该年闰月的前一个月的时差
+    if (isLeapMonth) { offset += day }
+    // 1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
+    var stmap = Date.UTC(1900, 1, 30, 0, 0, 0)
+    var calObj = new Date((offset + d - 31) * 86400000 + stmap)
+    var cY = calObj.getUTCFullYear()
+    var cM = calObj.getUTCMonth() + 1
+    var cD = calObj.getUTCDate()
+
+    return this.solar2lunar(cY, cM, cD)
+  }
+}
+
+export default calendar
diff --git a/components/uni-calendar/uni-calendar-item.vue b/components/uni-calendar/uni-calendar-item.vue
new file mode 100644
index 0000000..c66a58d
--- /dev/null
+++ b/components/uni-calendar/uni-calendar-item.vue
@@ -0,0 +1,170 @@
+<template>
+	<view class="uni-calendar-item__weeks-box" :class="{
+		'uni-calendar-item--disable':weeks.disable,
+		'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+		'uni-calendar-item--checked':(calendar.fullDate === weeks.fullDate && !weeks.isDay) ,
+		'uni-calendar-item--before-checked':weeks.beforeMultiple,
+		'uni-calendar-item--multiple': weeks.multiple,
+		'uni-calendar-item--after-checked':weeks.afterMultiple,
+		}"
+	 @click="choiceDate(weeks)">
+		<view class="uni-calendar-item__weeks-box-item">
+			<text v-if="selected&&weeks.extraInfo" class="uni-calendar-item__weeks-box-circle"></text>
+			<text class="uni-calendar-item__weeks-box-text" :class="{
+				'uni-calendar-item--isDay-text': weeks.isDay,
+				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+				'uni-calendar-item--before-checked':weeks.beforeMultiple,
+				'uni-calendar-item--multiple': weeks.multiple,
+				'uni-calendar-item--after-checked':weeks.afterMultiple,
+				'uni-calendar-item--disable':weeks.disable,
+				}">{{weeks.date}}</text>
+			<text v-if="!lunar&&!weeks.extraInfo && weeks.isDay" class="uni-calendar-item__weeks-lunar-text" :class="{
+				'uni-calendar-item--isDay-text':weeks.isDay,
+				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+				'uni-calendar-item--before-checked':weeks.beforeMultiple,
+				'uni-calendar-item--multiple': weeks.multiple,
+				'uni-calendar-item--after-checked':weeks.afterMultiple,
+				}">今天</text>
+			<text v-if="lunar&&!weeks.extraInfo" class="uni-calendar-item__weeks-lunar-text" :class="{
+				'uni-calendar-item--isDay-text':weeks.isDay,
+				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+				'uni-calendar-item--before-checked':weeks.beforeMultiple,
+				'uni-calendar-item--multiple': weeks.multiple,
+				'uni-calendar-item--after-checked':weeks.afterMultiple,
+				'uni-calendar-item--disable':weeks.disable,
+				}">{{weeks.isDay?'今天': (weeks.lunar.IDayCn === '初一'?weeks.lunar.IMonthCn:weeks.lunar.IDayCn)}}</text>
+			<text v-if="weeks.extraInfo&&weeks.extraInfo.info" class="uni-calendar-item__weeks-lunar-text" :class="{
+				'uni-calendar-item--extra':weeks.extraInfo.info,
+				'uni-calendar-item--isDay-text':weeks.isDay,
+				'uni-calendar-item--isDay':calendar.fullDate === weeks.fullDate && weeks.isDay,
+				'uni-calendar-item--checked':calendar.fullDate === weeks.fullDate && !weeks.isDay,
+				'uni-calendar-item--before-checked':weeks.beforeMultiple,
+				'uni-calendar-item--multiple': weeks.multiple,
+				'uni-calendar-item--after-checked':weeks.afterMultiple,
+				'uni-calendar-item--disable':weeks.disable,
+				}">{{weeks.extraInfo.info}}</text>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			weeks: {
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+			calendar: {
+				type: Object,
+				default: () => {
+					return {}
+				}
+			},
+			selected: {
+				type: Array,
+				default: () => {
+					return []
+				}
+			},
+			lunar: {
+				type: Boolean,
+				default: false
+			}
+		},
+		methods: {
+			choiceDate(weeks) {
+				this.$emit('change', weeks)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-calendar-item__weeks-box {
+		flex: 1;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.uni-calendar-item__weeks-box-text {
+		font-size: $uni-font-size-base;
+		color: $uni-text-color;
+	}
+
+	.uni-calendar-item__weeks-lunar-text {
+		font-size: $uni-font-size-sm;
+		color: $uni-text-color;
+	}
+
+	.uni-calendar-item__weeks-box-item {
+		position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		width: 100rpx;
+		height: 100rpx;
+	}
+
+	.uni-calendar-item__weeks-box-circle {
+		position: absolute;
+		top: 5px;
+		right: 5px;
+		width: 8px;
+		height: 8px;
+		border-radius: 8px;
+		background-color: $uni-color-error;
+
+	}
+
+	.uni-calendar-item--disable {
+		background-color: rgba(249, 249, 249, $uni-opacity-disabled);
+		color: $uni-text-color-disable;
+	}
+
+	.uni-calendar-item--isDay-text {
+		color: $uni-color-primary;
+	}
+
+	.uni-calendar-item--isDay {
+		background-color: $uni-color-primary;
+		opacity: 0.8;
+		color: #fff;
+	}
+
+	.uni-calendar-item--extra {
+		color: $uni-color-error;
+		opacity: 0.8;
+	}
+
+	.uni-calendar-item--checked {
+		background-color: $uni-color-primary;
+		color: #fff;
+		opacity: 0.8;
+	}
+
+	.uni-calendar-item--multiple {
+		background-color: $uni-color-primary;
+		color: #fff;
+		opacity: 0.8;
+	}
+	.uni-calendar-item--before-checked {
+		background-color: #ff5a5f;
+		color: #fff;
+	}
+	.uni-calendar-item--after-checked {
+		background-color: #ff5a5f;
+		color: #fff;
+	}
+</style>
diff --git a/components/uni-calendar/uni-calendar.vue b/components/uni-calendar/uni-calendar.vue
new file mode 100644
index 0000000..e0e0d90
--- /dev/null
+++ b/components/uni-calendar/uni-calendar.vue
@@ -0,0 +1,505 @@
+<template>
+	<view class="uni-calendar">
+		<view v-if="!insert&&show" class="uni-calendar__mask" :class="{'uni-calendar--mask-show':aniMaskShow}" @click="clean"></view>
+		<view v-if="insert || show" class="uni-calendar__content" :class="{'uni-calendar--fixed':!insert,'uni-calendar--ani-show':aniMaskShow}">
+			<view v-if="!insert" class="uni-calendar__header uni-calendar--fixed-top">
+				<view class="uni-calendar__header-btn-box" @click="close">
+					<text class="uni-calendar__header-text uni-calendar--fixed-width" style="color:#E72C31 ;">取消</text>
+				</view>
+				<view class="uni-calendar__header-btn-box" @click="confirm">
+					<text class="uni-calendar__header-text uni-calendar--fixed-width" style="color: #5CE6B5;">确定</text>
+				</view>
+			</view>
+			<view class="uni-calendar__header">
+				<view class="uni-calendar__header-btn-box" @click.stop="pre">
+					<view class="uni-calendar__header-btn uni-calendar--left"></view>
+				</view>
+				<picker mode="date" :value="date" fields="month" @change="bindDateChange">
+					<text class="uni-calendar__header-text">{{ (nowDate.year||'') +'年'+( nowDate.month||'') +'月'}}</text>
+				</picker>
+				<view class="uni-calendar__header-btn-box" @click.stop="next">
+					<view class="uni-calendar__header-btn uni-calendar--right"></view>
+				</view>
+				<text class="uni-calendar__backtoday" @click="backtoday">回到今天</text>
+
+			</view>
+			<view class="uni-calendar__box">
+				<view v-if="showMonth" class="uni-calendar__box-bg">
+					<text class="uni-calendar__box-bg-text">{{nowDate.month}}</text>
+				</view>
+				<view class="uni-calendar__weeks">
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">日</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">一</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">二</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">三</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">四</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">五</text>
+					</view>
+					<view class="uni-calendar__weeks-day">
+						<text class="uni-calendar__weeks-day-text">六</text>
+					</view>
+				</view>
+				<view class="uni-calendar__weeks" v-for="(item,weekIndex) in weeks" :key="weekIndex">
+					<view class="uni-calendar__weeks-item" v-for="(weeks,weeksIndex) in item" :key="weeksIndex">
+						<calendar-item :weeks="weeks" :calendar="calendar" :selected="selected" :lunar="lunar" @change="choiceDate"></calendar-item>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import Calendar from './util.js';
+	import calendarItem from './uni-calendar-item.vue'
+	/**
+	 * Calendar 日历
+	 * @description 日历组件可以查看日期,选择任意范围内的日期,打点操作。常用场景如:酒店日期预订、火车机票选择购买日期、上下班打卡等
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=56
+	 * @property {String} date 自定义当前时间,默认为今天
+	 * @property {Boolean} lunar 显示农历
+	 * @property {String} startDate 日期选择范围-开始日期
+	 * @property {String} endDate 日期选择范围-结束日期
+	 * @property {Boolean} range 范围选择
+	 * @property {Boolean} insert = [true|false] 插入模式,默认为false
+	 * 	@value true 弹窗模式
+	 * 	@value false 插入模式
+	 * @property {Boolean} clearDate = [true|false] 弹窗模式是否清空上次选择内容
+	 * @property {Array} selected 打点,期待格式[{date: '2019-06-27', info: '签到', data: { custom: '自定义信息', name: '自定义消息头',xxx:xxx... }}]
+	 * @property {Boolean} showMonth 是否选择月份为背景
+	 * @event {Function} change 日期改变,`insert :ture` 时生效
+	 * @event {Function} confirm 确认选择`insert :false` 时生效
+	 * @event {Function} monthSwitch 切换月份时触发
+	 * @example <uni-calendar :insert="true":lunar="true" :start-date="'2019-3-2'":end-date="'2019-5-20'"@change="change" />
+	 */
+	export default {
+		components: {
+			calendarItem
+		},
+		props: {
+			date: {
+				type: String,
+				default: ''
+			},
+			selected: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			lunar: {
+				type: Boolean,
+				default: false
+			},
+			startDate: {
+				type: String,
+				default: ''
+			},
+			endDate: {
+				type: String,
+				default: ''
+			},
+			range: {
+				type: Boolean,
+				default: false
+			},
+			insert: {
+				type: Boolean,
+				default: true
+			},
+			showMonth: {
+				type: Boolean,
+				default: true
+			},
+			clearDate: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				show: false,
+				weeks: [],
+				calendar: {},
+				nowDate: '',
+				aniMaskShow: false
+			}
+		},
+		watch: {
+			date(newVal) {
+				this.cale.setDate(newVal)
+				this.init(this.cale.selectDate.fullDate)
+			},
+			startDate(val){
+				this.cale.resetSatrtDate(val)
+			},
+			endDate(val){
+				this.cale.resetEndDate(val)
+			},
+			selected(newVal) {
+				this.cale.setSelectInfo(this.nowDate.fullDate, newVal)
+				this.weeks = this.cale.weeks
+			}
+		},
+		created() {
+			// 获取日历方法实例
+			this.cale = new Calendar({
+				// date: new Date(),
+				selected: this.selected,
+				startDate: this.startDate,
+				endDate: this.endDate,
+				range: this.range,
+			})
+			// 选中某一天
+			this.cale.setDate(this.date)
+			this.init(this.cale.selectDate.fullDate)
+			// this.setDay
+		},
+		methods: {
+			// 取消穿透
+			clean() {},
+			bindDateChange(e) {
+				const value = e.detail.value + '-1'
+				console.log(this.cale.getDate(value));
+				this.cale.setDate(value)
+				this.init(value)
+			},
+			/**
+			 * 初始化日期显示
+			 * @param {Object} date
+			 */
+			init(date) {
+				this.weeks = this.cale.weeks
+				this.nowDate = this.calendar = this.cale.getInfo(date)
+			},
+			/**
+			 * 打开日历弹窗
+			 */
+			open() {
+				// 弹窗模式并且清理数据
+				if (this.clearDate && !this.insert) {
+					this.cale.cleanMultipleStatus()
+					this.cale.setDate(this.date)
+					this.init(this.cale.selectDate.fullDate)
+				}
+				this.show = true
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this.aniMaskShow = true
+					}, 50)
+				})
+			},
+			/**
+			 * 关闭日历弹窗
+			 */
+			close() {
+				this.aniMaskShow = false
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this.show = false
+						this.$emit('close')
+					}, 300)
+				})
+			},
+			/**
+			 * 确认按钮
+			 */
+			confirm() {
+				this.setEmit('confirm')
+				this.close()
+			},
+			/**
+			 * 变化触发
+			 */
+			change() {
+				if (!this.insert) return
+				this.setEmit('change')
+			},
+			/**
+			 * 选择月份触发
+			 */
+			monthSwitch() {
+				let {
+					year,
+					month
+				} = this.nowDate
+				this.$emit('monthSwitch', {
+					year,
+					month: Number(month)
+				})
+			},
+			/**
+			 * 派发事件
+			 * @param {Object} name
+			 */
+			setEmit(name) {
+				let {
+					year,
+					month,
+					date,
+					fullDate,
+					lunar,
+					extraInfo
+				} = this.calendar
+				this.$emit(name, {
+					range: this.cale.multipleStatus,
+					year,
+					month,
+					date,
+					fulldate: fullDate,
+					lunar,
+					extraInfo: extraInfo || {}
+				})
+			},
+			/**
+			 * 选择天触发
+			 * @param {Object} weeks
+			 */
+			choiceDate(weeks) {
+				if (weeks.disable) return
+				this.calendar = weeks
+				// 设置多选
+				this.cale.setMultiple(this.calendar.fullDate)
+				this.weeks = this.cale.weeks
+				this.change()
+			},
+			/**
+			 * 回到今天
+			 */
+			backtoday() {
+				console.log(this.cale.getDate(new Date()).fullDate);
+				let date = this.cale.getDate(new Date()).fullDate
+				this.cale.setDate(date)
+				this.init(date)
+				this.change()
+			},
+			/**
+			 * 上个月
+			 */
+			pre() {
+				const preDate = this.cale.getDate(this.nowDate.fullDate, -1, 'month').fullDate
+				this.setDate(preDate)
+				this.monthSwitch()
+
+			},
+			/**
+			 * 下个月
+			 */
+			next() {
+				const nextDate = this.cale.getDate(this.nowDate.fullDate, +1, 'month').fullDate
+				this.setDate(nextDate)
+				this.monthSwitch()
+			},
+			/**
+			 * 设置日期
+			 * @param {Object} date
+			 */
+			setDate(date) {
+				this.cale.setDate(date)
+				this.weeks = this.cale.weeks
+				this.nowDate = this.cale.getInfo(date)
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-calendar {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+	}
+
+	.uni-calendar__mask {
+		position: fixed;
+		bottom: 0;
+		top: 0;
+		left: 0;
+		right: 0;
+		background-color: $uni-bg-color-mask;
+		transition-property: opacity;
+		transition-duration: 0.3s;
+		opacity: 0;
+		/* #ifndef APP-NVUE */
+		z-index: 99;
+		/* #endif */
+	}
+
+	.uni-calendar--mask-show {
+		opacity: 1
+	}
+
+	.uni-calendar--fixed {
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		transition-property: transform;
+		transition-duration: 0.3s;
+		transform: translateY(460px);
+		/* #ifndef APP-NVUE */
+		z-index: 99;
+		/* #endif */
+	}
+
+	.uni-calendar--ani-show {
+		transform: translateY(0);
+	}
+
+	.uni-calendar__content {
+		background-color: #fff;
+	}
+
+	.uni-calendar__header {
+		position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: center;
+		align-items: center;
+		height: 50px;
+		border-bottom-color: $uni-border-color;
+		border-bottom-style: solid;
+		border-bottom-width: 1px;
+	}
+
+	.uni-calendar--fixed-top {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: space-between;
+		border-top-color: $uni-border-color;
+		border-top-style: solid;
+		border-top-width: 1px;
+	}
+
+	.uni-calendar--fixed-width {
+		width: 50px;
+		// padding: 0 15px;
+	}
+
+	.uni-calendar__backtoday {
+		position: absolute;
+		right: 0;
+		top: 25rpx;
+		padding: 0 5px;
+		padding-left: 10px;
+		height: 25px;
+		line-height: 25px;
+		font-size: 12px;
+		border-top-left-radius: 25px;
+		border-bottom-left-radius: 25px;
+		color: $uni-text-color;
+		background-color: $uni-bg-color-hover;
+	}
+
+	.uni-calendar__header-text {
+		text-align: center;
+		width: 100px;
+		font-size: $uni-font-size-base;
+		color: $uni-text-color;
+	}
+
+	.uni-calendar__header-btn-box {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		align-items: center;
+		justify-content: center;
+		width: 50px;
+		height: 50px;
+	}
+
+	.uni-calendar__header-btn {
+		width: 10px;
+		height: 10px;
+		border-left-color: $uni-text-color-placeholder;
+		border-left-style: solid;
+		border-left-width: 2px;
+		border-top-color: $uni-color-subtitle;
+		border-top-style: solid;
+		border-top-width: 2px;
+	}
+
+	.uni-calendar--left {
+		transform: rotate(-45deg);
+	}
+
+	.uni-calendar--right {
+		transform: rotate(135deg);
+	}
+
+
+	.uni-calendar__weeks {
+		position: relative;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+	}
+
+	.uni-calendar__weeks-item {
+		flex: 1;
+	}
+
+	.uni-calendar__weeks-day {
+		flex: 1;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		height: 45px;
+		border-bottom-color: #F5F5F5;
+		border-bottom-style: solid;
+		border-bottom-width: 1px;
+	}
+
+	.uni-calendar__weeks-day-text {
+		font-size: 14px;
+	}
+
+	.uni-calendar__box {
+		position: relative;
+	}
+
+	.uni-calendar__box-bg {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		justify-content: center;
+		align-items: center;
+		position: absolute;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+	}
+
+	.uni-calendar__box-bg-text {
+		font-size: 200px;
+		font-weight: bold;
+		color: $uni-text-color-grey;
+		opacity: 0.1;
+		text-align: center;
+		/* #ifndef APP-NVUE */
+		line-height: 1;
+		/* #endif */
+	}
+</style>
diff --git a/components/uni-calendar/util.js b/components/uni-calendar/util.js
new file mode 100644
index 0000000..37f4432
--- /dev/null
+++ b/components/uni-calendar/util.js
@@ -0,0 +1,352 @@
+import CALENDAR from './calendar.js'
+
+class Calendar {
+	constructor({
+		date,
+		selected,
+		startDate,
+		endDate,
+		range
+	} = {}) {
+		// 当前日期
+		this.date = this.getDate(new Date()) // 当前初入日期
+		// 打点信息
+		this.selected = selected || [];
+		// 范围开始
+		this.startDate = startDate
+		// 范围结束
+		this.endDate = endDate
+		this.range = range
+		// 多选状态
+		this.cleanMultipleStatus()
+		// 每周日期
+		this.weeks = {}
+		// this._getWeek(this.date.fullDate)
+	}
+	/**
+	 * 设置日期
+	 * @param {Object} date
+	 */
+	setDate(date) {
+		this.selectDate = this.getDate(date)
+		this._getWeek(this.selectDate.fullDate)
+	}
+
+	/**
+	 * 清理多选状态
+	 */
+	cleanMultipleStatus() {
+		this.multipleStatus = {
+			before: '',
+			after: '',
+			data: []
+		}
+	}
+
+	/**
+	 * 重置开始日期
+	 */
+	resetSatrtDate(startDate) {
+		// 范围开始
+		this.startDate = startDate
+
+	}
+
+	/**
+	 * 重置结束日期
+	 */
+	resetEndDate(endDate) {
+		// 范围结束
+		this.endDate = endDate
+	}
+
+	/**
+	 * 获取任意时间
+	 */
+	getDate(date, AddDayCount = 0, str = 'day') {
+		if (!date) {
+			date = new Date()
+		}
+		if (typeof date !== 'object') {
+			date = date.replace(/-/g, '/')
+		}
+		const dd = new Date(date)
+		switch (str) {
+			case 'day':
+				dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期
+				break
+			case 'month':
+				if (dd.getDate() === 31) {
+					dd.setDate(dd.getDate() + AddDayCount)
+				} else {
+					dd.setMonth(dd.getMonth() + AddDayCount) // 获取AddDayCount天后的日期
+				}
+				break
+			case 'year':
+				dd.setFullYear(dd.getFullYear() + AddDayCount) // 获取AddDayCount天后的日期
+				break
+		}
+		const y = dd.getFullYear()
+		const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0
+		const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0
+		return {
+			fullDate: y + '-' + m + '-' + d,
+			year: y,
+			month: m,
+			date: d,
+			day: dd.getDay()
+		}
+	}
+
+
+	/**
+	 * 获取上月剩余天数
+	 */
+	_getLastMonthDays(firstDay, full) {
+		let dateArr = []
+		for (let i = firstDay; i > 0; i--) {
+			const beforeDate = new Date(full.year, full.month - 1, -i + 1).getDate()
+			dateArr.push({
+				date: beforeDate,
+				month: full.month - 1,
+				lunar: this.getlunar(full.year, full.month - 1, beforeDate),
+				disable: true
+			})
+		}
+		return dateArr
+	}
+	/**
+	 * 获取本月天数
+	 */
+	_currentMonthDys(dateData, full) {
+		let dateArr = []
+		let fullDate = this.date.fullDate
+		for (let i = 1; i <= dateData; i++) {
+			let isinfo = false
+			let nowDate = full.year + '-' + (full.month < 10 ?
+				full.month : full.month) + '-' + (i < 10 ?
+				'0' + i : i)
+			// 是否今天
+			let isDay = fullDate === nowDate
+			// 获取打点信息
+			let info = this.selected && this.selected.find((item) => {
+				if (this.dateEqual(nowDate, item.date)) {
+					return item
+				}
+			})
+
+			// 日期禁用
+			let disableBefore = true
+			let disableAfter = true
+			if (this.startDate) {
+				let dateCompBefore = this.dateCompare(this.startDate, fullDate)
+				disableBefore = this.dateCompare(dateCompBefore ? this.startDate : fullDate, nowDate)
+			}
+
+			if (this.endDate) {
+				let dateCompAfter = this.dateCompare(fullDate, this.endDate)
+				disableAfter = this.dateCompare(nowDate, dateCompAfter ? this.endDate : fullDate)
+			}
+			let multiples = this.multipleStatus.data
+			let checked = false
+			let multiplesStatus = -1
+			if (this.range) {
+				if (multiples) {
+					multiplesStatus = multiples.findIndex((item) => {
+						return this.dateEqual(item, nowDate)
+					})
+				}
+				if (multiplesStatus !== -1) {
+					checked = true
+				}
+			}
+			let data = {
+				fullDate: nowDate,
+				year: full.year,
+				date: i,
+				multiple: this.range ? checked : false,
+				beforeMultiple: this.dateEqual(this.multipleStatus.before, nowDate),
+				afterMultiple: this.dateEqual(this.multipleStatus.after, nowDate),
+				month: full.month,
+				lunar: this.getlunar(full.year, full.month, i),
+				disable: !disableBefore || !disableAfter,
+				isDay
+			}
+			if (info) {
+				data.extraInfo = info
+			}
+
+			dateArr.push(data)
+		}
+		return dateArr
+	}
+	/**
+	 * 获取下月天数
+	 */
+	_getNextMonthDays(surplus, full) {
+		let dateArr = []
+		for (let i = 1; i < surplus + 1; i++) {
+			dateArr.push({
+				date: i,
+				month: Number(full.month) + 1,
+				lunar: this.getlunar(full.year, Number(full.month) + 1, i),
+				disable: true
+			})
+		}
+		return dateArr
+	}
+
+	/**
+	 * 获取当前日期详情
+	 * @param {Object} date
+	 */
+	getInfo(date) {
+		if (!date) {
+			date = new Date()
+		}
+		const dateInfo = this.canlender.find(item => item.fullDate === this.getDate(date).fullDate)
+		return dateInfo
+	}
+
+	/**
+	 * 比较时间大小
+	 */
+	dateCompare(startDate, endDate) {
+		// 计算截止时间
+		startDate = new Date(startDate.replace('-', '/').replace('-', '/'))
+		// 计算详细项的截止时间
+		endDate = new Date(endDate.replace('-', '/').replace('-', '/'))
+		if (startDate <= endDate) {
+			return true
+		} else {
+			return false
+		}
+	}
+
+	/**
+	 * 比较时间是否相等
+	 */
+	dateEqual(before, after) {
+		// 计算截止时间
+		before = new Date(before.replace('-', '/').replace('-', '/'))
+		// 计算详细项的截止时间
+		after = new Date(after.replace('-', '/').replace('-', '/'))
+		if (before.getTime() - after.getTime() === 0) {
+			return true
+		} else {
+			return false
+		}
+	}
+
+
+	/**
+	 * 获取日期范围内所有日期
+	 * @param {Object} begin
+	 * @param {Object} end
+	 */
+	geDateAll(begin, end) {
+		var arr = []
+		var ab = begin.split('-')
+		var ae = end.split('-')
+		var db = new Date()
+		db.setFullYear(ab[0], ab[1] - 1, ab[2])
+		var de = new Date()
+		de.setFullYear(ae[0], ae[1] - 1, ae[2])
+		var unixDb = db.getTime() - 24 * 60 * 60 * 1000
+		var unixDe = de.getTime() - 24 * 60 * 60 * 1000
+		for (var k = unixDb; k <= unixDe;) {
+			k = k + 24 * 60 * 60 * 1000
+			arr.push(this.getDate(new Date(parseInt(k))).fullDate)
+		}
+		return arr
+	}
+	/**
+	 * 计算阴历日期显示
+	 */
+	getlunar(year, month, date) {
+		return CALENDAR.solar2lunar(year, month, date)
+	}
+	/**
+	 * 设置打点
+	 */
+	setSelectInfo(data, value) {
+		this.selected = value
+		this._getWeek(data)
+	}
+
+	/**
+	 *  获取多选状态
+	 */
+	setMultiple(fullDate) {
+		let {
+			before,
+			after
+		} = this.multipleStatus
+
+		if (!this.range) return
+		if (before && after) {
+			this.multipleStatus.before = ''
+			this.multipleStatus.after = ''
+			this.multipleStatus.data = []
+		} else {
+			if (!before) {
+				this.multipleStatus.before = fullDate
+			} else {
+				this.multipleStatus.after = fullDate
+				if (this.dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
+					this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
+				} else {
+					this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
+				}
+			}
+		}
+		this._getWeek(fullDate)
+	}
+
+	/**
+	 * 获取每周数据
+	 * @param {Object} dateData
+	 */
+	_getWeek(dateData) {
+		const {
+			fullDate,
+			year,
+			month,
+			date,
+			day
+		} = this.getDate(dateData)
+		let firstDay = new Date(year, month - 1, 1).getDay()
+		let currentDay = new Date(year, month, 0).getDate()
+		let dates = {
+			lastMonthDays: this._getLastMonthDays(firstDay, this.getDate(dateData)), // 上个月末尾几天
+			currentMonthDys: this._currentMonthDys(currentDay, this.getDate(dateData)), // 本月天数
+			nextMonthDays: [], // 下个月开始几天
+			weeks: []
+		}
+		let canlender = []
+		const surplus = 42 - (dates.lastMonthDays.length + dates.currentMonthDys.length)
+		dates.nextMonthDays = this._getNextMonthDays(surplus, this.getDate(dateData))
+		canlender = canlender.concat(dates.lastMonthDays, dates.currentMonthDys, dates.nextMonthDays)
+		let weeks = {}
+		// 拼接数组  上个月开始几天 + 本月天数+ 下个月开始几天
+		for (let i = 0; i < canlender.length; i++) {
+			if (i % 7 === 0) {
+				weeks[parseInt(i / 7)] = new Array(7)
+			}
+			weeks[parseInt(i / 7)][i % 7] = canlender[i]
+		}
+		this.canlender = canlender
+		this.weeks = weeks
+	}
+
+	//静态方法
+	// static init(date) {
+	// 	if (!this.instance) {
+	// 		this.instance = new Calendar(date);
+	// 	}
+	// 	return this.instance;
+	// }
+}
+
+
+export default Calendar
diff --git a/components/uni-card/uni-card.vue b/components/uni-card/uni-card.vue
new file mode 100644
index 0000000..d2ed513
--- /dev/null
+++ b/components/uni-card/uni-card.vue
@@ -0,0 +1,139 @@
+<template>
+	<view class="uni-card" :class="isFull === true || isFull === 'true' ? 'uni-card--full' : ''" @click="onClick">
+		<view class="uni-card__header" v-if="title">
+			<view class="uni-card__header-extra-img-view" v-if="thumbnail">
+				<image class="uni-card__header-extra-img" :src="thumbnail"></image>
+			</view>
+			<view class="uni-card__header-title-text">{{title}}</view>
+			<view class="uni-card__header-extra-text" v-if="extra">{{extra}}</view>
+		</view>
+		<view class="uni-card__content uni-card__content--pd">
+			<slot />
+		</view>
+		<view class="uni-card__footer" v-if="note">{{note}}</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "uni-card",
+		props: {
+			title: String, //标题
+			extra: String, //扩展信息
+			note: String, //Tips
+			thumbnail: String, //缩略图
+			isFull: { //内容区域是否通栏
+				type: [Boolean, String],
+				default: false
+			}
+		},
+		methods: {
+			onClick() {
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-card {
+		margin-left: 24upx;
+		margin-right: 24upx;
+		background: #fff;
+		box-shadow: none;
+		position: relative;
+		display: flex;
+		flex-direction: column
+	}
+
+	.uni-card:after {
+		content: '';
+		position: absolute;
+		transform-origin: center;
+		box-sizing: border-box;
+		pointer-events: none;
+		top: -50%;
+		left: -50%;
+		right: -50%;
+		bottom: -50%;
+		border: 1px solid #c8c7cc;
+		border-radius: 12upx;
+		transform: scale(.5)
+	}
+
+	.uni-card__footer,
+	.uni-card__header {
+		position: relative;
+		display: flex;
+		flex-direction: row;
+		padding: 16upx;
+		align-items: center
+	}
+
+	.uni-card__header:after {
+		position: absolute;
+		bottom: 0;
+		right: 0;
+		left: 0;
+		height: 1px;
+		content: '';
+		-webkit-transform: scaleY(.5);
+		transform: scaleY(.5);
+		background-color: #c8c7cc
+	}
+
+	.uni-card__header-title {
+		flex: 1;
+		margin-right: 16upx;
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		align-items: center
+	}
+
+	.uni-card__header-title-text {
+		font-size: 32upx;
+		flex: 1;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		overflow: hidden
+	}
+
+	.uni-card__header-extra-img-view {
+		display: flex
+	}
+
+	.uni-card__header-extra-img {
+		height: 40upx;
+		width: 40upx;
+		margin-right: 16upx
+	}
+
+	.uni-card__header-extra-text {
+		flex: 0 0 auto;
+		width: 30%;
+		margin-left: 16upx;
+		font-size: 28upx;
+		text-align: right;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		overflow: hidden
+	}
+
+	.uni-card__content--pd {
+		padding: 16upx
+	}
+
+	.uni-card__footer {
+		justify-content: space-between;
+		color: #999;
+		font-size: 24upx;
+		padding-top: 0
+	}
+
+	.uni-card--full {
+		margin: 0
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-collapse-item/uni-collapse-item.vue b/components/uni-collapse-item/uni-collapse-item.vue
new file mode 100644
index 0000000..a525666
--- /dev/null
+++ b/components/uni-collapse-item/uni-collapse-item.vue
@@ -0,0 +1,217 @@
+<template>
+	<view :class="['uni-collapse-cell',{'uni-collapse-cell--disabled':disabled,'uni-collapse-cell--open':isOpen}]" :hover-class="disabled ? '' : 'uni-collapse-cell--hover'">
+		<view class="uni-collapse-cell__title" @click="onClick">
+			<view class="uni-collapse-cell__title-extra" v-if="thumb">
+				<image class="uni-collapse-cell__title-img" :src="thumb"></image>
+			</view>
+			<view class="uni-collapse-cell__title-inner">
+				<view class="uni-collapse-cell__title-text">{{title}}</view>
+			</view>
+			<view class="uni-collapse-cell__title-arrow" :class="{'uni-active':isOpen,'uni-collapse-cell--animation':showAnimation===true}">
+				<uni-icon color="#bbb" size="20" type="arrowdown"></uni-icon>
+			</view>
+		</view>
+		<view class="uni-collapse-cell__content" :class="{'uni-collapse-cell--animation':showAnimation===true}" :style="{height:isOpen ? height : '0px'}">
+			<view :id="elId">
+				<slot />
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '../uni-icon/uni-icon.vue'
+	export default {
+		name: 'uni-collapse-item',
+		components: {
+			uniIcon
+		},
+		props: {
+			title: { //列表标题
+				type: String,
+				default: ''
+			},
+			name: { //唯一标识符
+				type: [Number, String],
+				default: 0
+			},
+			disabled: { //是否禁用
+				type: [Boolean, String],
+				default: false
+			},
+			showAnimation: { //是否显示动画
+				type: Boolean,
+				default: false
+			},
+			open: { //是否展开
+				type: [Boolean, String],
+				default: false
+			},
+			thumb: { //缩略图
+				type: String,
+				default: ''
+			}
+		},
+		data() {
+			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+			return {
+				isOpen: false,
+				height: 'auto',
+				elId: elId
+			};
+		},
+		watch: {
+			open(val) {
+				this.isOpen = val
+			}
+		},
+		inject: ['collapse'],
+		created() {
+			this.isOpen = this.open
+			this.nameSync = this.name ? this.name : this.collapse.childrens.length
+			this.collapse.childrens.push(this)
+			if (String(this.collapse.accordion) === 'true') {
+				if (this.isOpen) {
+					let lastEl = this.collapse.childrens[this.collapse.childrens.length - 2]
+					if (lastEl) {
+						this.collapse.childrens[this.collapse.childrens.length - 2].isOpen = false
+					}
+				}
+			}
+		},
+		// #ifdef H5
+		mounted() {
+			this.getSize()
+		},
+		// #endif
+		// #ifndef H5
+		onReady() {
+			this.getSize()
+		},
+		// #endif
+		methods: {
+			getSize() {
+				if (this.showAnimation) {
+					uni.createSelectorQuery().in(this).select(`#${this.elId}`).boundingClientRect().exec((ret) => {
+						this.height = ret[0].height + 'px'
+					});
+				}
+			},
+			onClick() {
+				if (this.disabled) {
+					return
+				}
+				if (String(this.collapse.accordion) === 'true') {
+					this.collapse.childrens.forEach(vm => {
+						if (vm === this) {
+							return
+						}
+						vm.isOpen = false
+					})
+				}
+				this.isOpen = !this.isOpen
+				this.collapse.onChange && this.collapse.onChange()
+			}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-collapse-cell {
+		position: relative
+	}
+
+	.uni-collapse-cell--hover {
+		background-color: #f1f1f1
+	}
+
+	.uni-collapse-cell--open {
+		background-color: #f1f1f1
+	}
+
+	.uni-collapse-cell--disabled {
+		opacity: .3
+	}
+
+	.uni-collapse-cell--animation {
+		transition: all .3s
+	}
+
+	.uni-collapse-cell:after {
+		position: absolute;
+		z-index: 3;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		height: 1px;
+		content: '';
+		-webkit-transform: scaleY(.5);
+		transform: scaleY(.5);
+		background-color: #c8c7cc
+	}
+
+	.uni-collapse-cell__title {
+		padding: 24upx 30upx;
+		width: 100%;
+		box-sizing: border-box;
+		flex: 1;
+		position: relative;
+		display: flex;
+		flex-direction: row;
+		justify-content: space-between;
+		align-items: center
+	}
+
+	.uni-collapse-cell__title-extra {
+		margin-right: 18upx;
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center
+	}
+
+	.uni-collapse-cell__title-img {
+		height: 52upx;
+		width: 52upx
+	}
+
+	.uni-collapse-cell__title-arrow {
+		width: 20px;
+		height: 20px;
+		transform: rotate(0);
+		transform-origin: center center
+	}
+
+	.uni-collapse-cell__title-arrow.uni-active {
+		transform: rotate(-180deg)
+	}
+
+	.uni-collapse-cell__title-inner {
+		flex: 1;
+		overflow: hidden;
+		display: flex;
+		flex-direction: column
+	}
+
+	.uni-collapse-cell__title-text {
+		font-size: 32upx;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		color: inherit;
+		line-height: 1.5;
+		overflow: hidden
+	}
+
+	.uni-collapse-cell__content {
+		position: relative;
+		width: 100%;
+		overflow: hidden;
+		background: #fff
+	}
+
+	.uni-collapse-cell__content view {
+		font-size: 28upx
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-collapse/uni-collapse.vue b/components/uni-collapse/uni-collapse.vue
new file mode 100644
index 0000000..5ea42b2
--- /dev/null
+++ b/components/uni-collapse/uni-collapse.vue
@@ -0,0 +1,75 @@
+<template>
+	<view class="uni-collapse">
+		<slot></slot>
+	</view>
+</template>
+<script>
+	export default {
+		name: 'uni-collapse',
+		props: {
+			accordion: { //是否开启手风琴效果
+				type: [Boolean, String],
+				default: false
+			}
+		},
+		data() {
+			return {}
+		},
+		provide() {
+			return {
+				collapse: this
+			}
+		},
+		created() {
+			this.childrens = []
+		},
+		methods: {
+			onChange() {
+				let activeItem = []
+				this.childrens.forEach((vm, index) => {
+					if (vm.isOpen) {
+						activeItem.push(vm.nameSync)
+					}
+				})
+				this.$emit('change', activeItem)
+			}
+		}
+	}
+</script>
+<style>
+	@charset "UTF-8";
+
+	.uni-collapse {
+		background-color: #fff;
+		position: relative;
+		width: 100%;
+		display: flex;
+		flex-direction: column
+	}
+
+	.uni-collapse:after {
+		position: absolute;
+		z-index: 10;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		height: 1px;
+		content: '';
+		-webkit-transform: scaleY(.5);
+		transform: scaleY(.5);
+		background-color: #c8c7cc
+	}
+
+	.uni-collapse:before {
+		position: absolute;
+		z-index: 10;
+		right: 0;
+		top: 0;
+		left: 0;
+		height: 1px;
+		content: '';
+		-webkit-transform: scaleY(.5);
+		transform: scaleY(.5);
+		background-color: #c8c7cc
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-countdown/uni-countdown.vue b/components/uni-countdown/uni-countdown.vue
new file mode 100644
index 0000000..d474351
--- /dev/null
+++ b/components/uni-countdown/uni-countdown.vue
@@ -0,0 +1,117 @@
+<template>
+	<view class="uni-countdown">
+		<view v-if="showDay" class="uni-countdown__number" :style="{borderColor:borderColor, color:color, background:backgroundColor}">{{d}}</view>
+		<view v-if="showDay" class="uni-countdown__splitor" :style="{color:splitorColor}">天</view>
+		<view class="uni-countdown__number" :style="{borderColor:borderColor, color:color, background:backgroundColor}">{{h}}</view>
+		<view class="uni-countdown__splitor" :style="{color:splitorColor}">{{showColon ? ':' : '时'}}</view>
+		<view class="uni-countdown__number" :style="{borderColor:borderColor, color:color, background:backgroundColor}">{{i}}</view>
+		<view class="uni-countdown__splitor" :style="{color:splitorColor}">{{showColon ? ':' : '分'}}</view>
+		<view class="uni-countdown__number" :style="{borderColor:borderColor, color:color, background:backgroundColor}">{{s}}</view>
+		<view v-if="!showColon" class="uni-countdown__splitor" :style="{color:splitorColor}">秒</view>
+	</view>
+</template>
+<script>
+	export default {
+		name: "uni-countdown",
+		props: {
+			showColon: {
+				type: Boolean,
+				default: true
+			},
+			backgroundColor: {
+				type: String,
+				default: "inherit"
+			},
+			borderColor: {
+				type: String,
+				default: "#000000"
+			},
+			color: {
+				type: String,
+				value: "#000000"
+			},
+			splitorColor: {
+				type: String,
+				default: "#000000"
+			},
+			dateTime: {
+				type: String,
+				default: new Date()._format('yyyy/MM/dd')
+			}
+		},
+		data() {
+			return {
+				timer: null,
+				d: '00',
+				h: '00',
+				i: '00',
+				s: '00',
+				ms: 0,
+				leftTime: 0,
+				seconds: 0,
+				showDay: true
+			}
+		},
+		created: function(e) {
+			this.countDown()
+			this.timer = setInterval(() => {
+				this.seconds--
+				if (this.seconds < 0) {
+					this.timeUp()
+					return
+				}
+				this.countDown()
+			}, 1000)
+		},
+		beforeDestroy() {
+			clearInterval(this.timer)
+		},
+		methods: {
+			timeUp() {
+				clearInterval(this.timer)
+				this.$emit('timeup')
+			},
+			countDown() {
+				let [day, hour, minute, second, millisecond] = [0, 0, 0, 0, 0]
+				if (this.dateTime) {
+					this.seconds = new Date(this.dateTime).getTime() - new Date().getTime()
+					day = Math.floor(this.seconds / (1000 * 60 * 60 * 24))
+					hour = Math.floor(this.seconds / (1000 * 60 * 60)) - (day * 24)
+					minute = Math.floor(this.seconds / (1000 * 60)) - (day * 24 * 60) - (hour * 60)
+					second = Math.floor(this.seconds / 1000) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60)
+				} else this.timeUp()
+				if (day && day < 10) day = '0' + day
+				else if (day == 0) this.showDay = false
+				if (hour < 10) hour = '0' + hour
+				if (minute < 10) minute = '0' + minute
+				if (second < 10) second = '0' + second
+				this.d = day
+				this.h = hour
+				this.i = minute
+				this.s = second
+			}
+		}
+	}
+</script>
+<style>
+	@charset "UTF-8";
+
+	.uni-countdown {
+		padding: 2upx 0;
+		display: inline-flex;
+		flex-wrap: nowrap;
+		justify-content: center
+	}
+
+	.uni-countdown__splitor {
+		justify-content: center;
+		line-height: 44upx;
+		padding: 0 10upx
+	}
+
+	.uni-countdown__number {
+		line-height: 44upx;
+		justify-content: center;
+		height: 44upx;
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-drawer/uni-drawer.vue b/components/uni-drawer/uni-drawer.vue
new file mode 100644
index 0000000..c776704
--- /dev/null
+++ b/components/uni-drawer/uni-drawer.vue
@@ -0,0 +1,138 @@
+<template>
+	<view v-if="visibleSync" class="uni-drawer" @touchmove.stop.prevent="moveHandle" :class="{'uni-drawer--visible':showDrawer,'uni-drawer--right':rightMode}">
+		<view class="uni-drawer__mask" @tap="close"></view>
+		<view class="uni-drawer__content">
+			<slot></slot>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'uni-drawer',
+		props: {
+			/**
+			 * 显示状态
+			 */
+			visible: {
+				type: Boolean,
+				default: false
+			},
+			/**
+			 * 显示模式(左、右),只在初始化生效
+			 */
+			mode: String,
+			/**
+			 * 蒙层显示状态
+			 */
+			mask: {
+				type: [Boolean, String],
+				default: true
+			}
+		},
+		data() {
+			return {
+				visibleSync: false,
+				showDrawer: false,
+				rightMode: false,
+				closeTimer: null,
+				watchTimer: null
+			}
+		},
+		watch: {
+			visible(val) {
+				clearTimeout(this.watchTimer)
+				setTimeout(() => {
+					this.showDrawer = val
+				}, 100)
+				if (this.visibleSync) {
+					clearTimeout(this.closeTimer)
+				}
+				if (val) {
+					this.visibleSync = val
+				} else {
+					this.watchTimer = setTimeout(() => {
+						this.visibleSync = val
+					}, 300)
+				}
+			}
+		},
+		created() {
+			this.visibleSync = this.visible
+			setTimeout(() => {
+				this.showDrawer = this.visible
+			}, 100)
+			this.rightMode = this.mode === 'right'
+		},
+		methods: {
+			close() {
+				this.showDrawer = false
+				this.closeTimer = setTimeout(() => {
+					this.visibleSync = false
+					this.$emit('close')
+				}, 200)
+			},
+			moveHandle() {}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-drawer {
+		display: block;
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		overflow: hidden;
+		visibility: hidden;
+		z-index: 10001;
+		height: 100%
+	}
+
+	.uni-drawer.uni-drawer--right .uni-drawer__content {
+		left: auto;
+		right: 0;
+		transform: translatex(100%)
+	}
+
+	.uni-drawer.uni-drawer--visible {
+		visibility: visible
+	}
+
+	.uni-drawer.uni-drawer--visible .uni-drawer__content {
+		transform: translatex(0)
+	}
+
+	.uni-drawer.uni-drawer--visible .uni-drawer__mask {
+		display: block;
+		opacity: 1
+	}
+
+	.uni-drawer__mask {
+		display: block;
+		opacity: 0;
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		background: rgba(0, 0, 0, .4);
+		transition: opacity .3s
+	}
+
+	.uni-drawer__content {
+		display: block;
+		position: absolute;
+		top: 0;
+		left: 0;
+		width: 61.8%;
+		height: 100%;
+		background: #fff;
+		transition: all .3s ease-out;
+		transform: translatex(-100%)
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-fab/uni-fab.vue b/components/uni-fab/uni-fab.vue
new file mode 100644
index 0000000..78bac7f
--- /dev/null
+++ b/components/uni-fab/uni-fab.vue
@@ -0,0 +1,433 @@
+<template>
+	<view>
+		<view v-if="popMenu && (leftBottom||rightBottom||leftTop||rightTop)" :class="{
+        'uni-fab--leftBottom': leftBottom,
+        'uni-fab--rightBottom': rightBottom,
+        'uni-fab--leftTop': leftTop,
+        'uni-fab--rightTop': rightTop
+      }"
+		 class="uni-fab">
+			<view :class="{
+          'uni-fab__content--left': horizontal === 'left',
+          'uni-fab__content--right': horizontal === 'right',
+          'uni-fab__content--flexDirection': direction === 'vertical',
+          'uni-fab__content--flexDirectionStart': flexDirectionStart,
+          'uni-fab__content--flexDirectionEnd': flexDirectionEnd,
+		  'uni-fab__content--other-platform': !isAndroidNvue
+        }"
+			 :style="{ width: boxWidth, height: boxHeight, backgroundColor: styles.backgroundColor }" class="uni-fab__content"
+			 elevation="5">
+				<view v-if="flexDirectionStart || horizontalLeft" class="uni-fab__item uni-fab__item--first" />
+				<view v-for="(item, index) in content" :key="index" :class="{ 'uni-fab__item--active': isShow }" class="uni-fab__item"
+				 @click="_onItemClick(index, item)">
+					<image :src="item.active ? item.selectedIconPath : item.iconPath" class="uni-fab__item-image" mode="widthFix" />
+					<text class="uni-fab__item-text" :style="{ color: item.active ? styles.selectedColor : styles.color }">{{ item.text }}</text>
+				</view>
+				<view v-if="flexDirectionEnd || horizontalRight" class="uni-fab__item uni-fab__item--first" />
+			</view>
+		</view>
+		<view :class="{
+		  'uni-fab__circle--leftBottom': leftBottom,
+		  'uni-fab__circle--rightBottom': rightBottom,
+		  'uni-fab__circle--leftTop': leftTop,
+		  'uni-fab__circle--rightTop': rightTop,
+		  'uni-fab__content--other-platform': !isAndroidNvue
+		}"
+		 class="uni-fab__circle uni-fab__plus" :style="{ 'background-color': styles.buttonColor }" @click="_onClick">
+			<view class="fab-circle-v" :class="{'uni-fab__plus--active': isShow}"></view>
+			<view class="fab-circle-h" :class="{'uni-fab__plus--active': isShow}"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	let platform = 'other'
+	// #ifdef APP-NVUE
+	platform = uni.getSystemInfoSync().platform
+	// #endif
+
+	/**
+	 * Fab 悬浮按钮
+	 * @description 点击可展开一个图形按钮菜单
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=144
+	 * @property {Object} pattern 可选样式配置项
+	 * @property {Object} horizontal = [left | right] 水平对齐方式
+	 * 	@value left 左对齐
+	 * 	@value right 右对齐
+	 * @property {Object} vertical = [bottom | top] 垂直对齐方式
+	 * 	@value bottom 下对齐
+	 * 	@value top 上对齐
+	 * @property {Object} direction = [horizontal | vertical] 展开菜单显示方式
+	 * 	@value horizontal 水平显示
+	 * 	@value vertical 垂直显示
+	 * @property {Array} content 展开菜单内容配置项
+	 * @property {Boolean} popMenu 是否使用弹出菜单
+	 * @event {Function} trigger 展开菜单点击事件,返回点击信息
+	 * @event {Function} fabClick 悬浮按钮点击事件
+	 */
+	export default {
+		name: 'UniFab',
+		props: {
+			pattern: {
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+			horizontal: {
+				type: String,
+				default: 'left'
+			},
+			vertical: {
+				type: String,
+				default: 'bottom'
+			},
+			direction: {
+				type: String,
+				default: 'horizontal'
+			},
+			content: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			show: {
+				type: Boolean,
+				default: false
+			},
+			popMenu: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				fabShow: false,
+				isShow: false,
+				isAndroidNvue: platform === 'android',
+				styles: {
+					color: '#3c3e49',
+					selectedColor: '#007AFF',
+					backgroundColor: '#fff',
+					buttonColor: '#3c3e49'
+				}
+			}
+		},
+		computed: {
+			contentWidth(e) {
+				return (this.content.length + 1) * 55 + 10 + 'px'
+			},
+			contentWidthMin() {
+				return 55 + 'px'
+			},
+			// 动态计算宽度
+			boxWidth() {
+				return this.getPosition(3, 'horizontal')
+			},
+			// 动态计算高度
+			boxHeight() {
+				return this.getPosition(3, 'vertical')
+			},
+			// 计算左下位置
+			leftBottom() {
+				return this.getPosition(0, 'left', 'bottom')
+			},
+			// 计算右下位置
+			rightBottom() {
+				return this.getPosition(0, 'right', 'bottom')
+			},
+			// 计算左上位置
+			leftTop() {
+				return this.getPosition(0, 'left', 'top')
+			},
+			rightTop() {
+				return this.getPosition(0, 'right', 'top')
+			},
+			flexDirectionStart() {
+				return this.getPosition(1, 'vertical', 'top')
+			},
+			flexDirectionEnd() {
+				return this.getPosition(1, 'vertical', 'bottom')
+			},
+			horizontalLeft() {
+				return this.getPosition(2, 'horizontal', 'left')
+			},
+			horizontalRight() {
+				return this.getPosition(2, 'horizontal', 'right')
+			}
+		},
+		watch: {
+			pattern(newValue, oldValue) {
+				//console.log(JSON.stringify(newValue))
+				this.styles = Object.assign({}, this.styles, newValue)
+			}
+		},
+		created() {
+			this.isShow = this.show
+			if (this.top === 0) {
+				this.fabShow = true
+			}
+			// 初始化样式
+			this.styles = Object.assign({}, this.styles, this.pattern)
+		},
+		methods: {
+			_onClick() {
+				this.$emit('fabClick')
+				if (!this.popMenu) {
+					return
+				}
+				this.isShow = !this.isShow
+			},
+			open() {
+				this.isShow = true
+			},
+			close() {
+				this.isShow = false
+			},
+			/**
+			 * 按钮点击事件
+			 */
+			_onItemClick(index, item) {
+				this.$emit('trigger', {
+					index,
+					item
+				})
+			},
+			/**
+			 * 获取 位置信息
+			 */
+			getPosition(types, paramA, paramB) {
+				if (types === 0) {
+					return this.horizontal === paramA && this.vertical === paramB
+				} else if (types === 1) {
+					return this.direction === paramA && this.vertical === paramB
+				} else if (types === 2) {
+					return this.direction === paramA && this.horizontal === paramB
+				} else {
+					return this.isShow && this.direction === paramA ? this.contentWidth : this.contentWidthMin
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.uni-fab {
+		position: fixed;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		justify-content: center;
+		align-items: center;
+		z-index: 10;
+	}
+
+	.uni-fab--active {
+		opacity: 1;
+	}
+
+	.uni-fab--leftBottom {
+		left: 5px;
+		bottom: 20px;
+		/* #ifdef H5 */
+		bottom: calc(20px + var(--window-bottom));
+		/* #endif */
+		padding: 10px;
+	}
+
+	.uni-fab--leftTop {
+		left: 5px;
+		top: 30px;
+		/* #ifdef H5 */
+		top: calc(30px + var(--window-top));
+		/* #endif */
+		padding: 10px;
+	}
+
+	.uni-fab--rightBottom {
+		right: 5px;
+		bottom: 20px;
+		/* #ifdef H5 */
+		bottom: calc(20px + var(--window-bottom));
+		/* #endif */
+		padding: 10px;
+	}
+
+	.uni-fab--rightTop {
+		right: 5px;
+		top: 30px;
+		/* #ifdef H5 */
+		top: calc(30px + var(--window-top));
+		/* #endif */
+		padding: 10px;
+	}
+
+	.uni-fab__circle {
+		position: fixed;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		justify-content: center;
+		align-items: center;
+		width: 55px;
+		height: 55px;
+		background-color: #3c3e49;
+		border-radius: 55px;
+		z-index: 11;
+	}
+
+	.uni-fab__circle--leftBottom {
+		left: 15px;
+		bottom: 30px;
+		/* #ifdef H5 */
+		bottom: calc(30px + var(--window-bottom));
+		/* #endif */
+	}
+
+	.uni-fab__circle--leftTop {
+		left: 15px;
+		top: 40px;
+		/* #ifdef H5 */
+		top: calc(40px + var(--window-top));
+		/* #endif */
+	}
+
+	.uni-fab__circle--rightBottom {
+		right: 15px;
+		bottom: 30px;
+		/* #ifdef H5 */
+		bottom: calc(30px + var(--window-bottom));
+		/* #endif */
+	}
+
+	.uni-fab__circle--rightTop {
+		right: 15px;
+		top: 40px;
+		/* #ifdef H5 */
+		top: calc(40px + var(--window-top));
+		/* #endif */
+	}
+
+	.uni-fab__circle--left {
+		left: 0;
+	}
+
+	.uni-fab__circle--right {
+		right: 0;
+	}
+
+	.uni-fab__circle--top {
+		top: 0;
+	}
+
+	.uni-fab__circle--bottom {
+		bottom: 0;
+	}
+
+	.uni-fab__plus {
+		font-weight: bold;
+	}
+
+	.fab-circle-v {
+		position: absolute;
+		width: 3px;
+		height: 31px;
+		left: 26px;
+		top: 12px;
+		background-color: white;
+		transform: rotate(0deg);
+		transition: transform 0.3s;
+	}
+
+	.fab-circle-h {
+		position: absolute;
+		width: 31px;
+		height: 3px;
+		left: 12px;
+		top: 26px;
+		background-color: white;
+		transform: rotate(0deg);
+		transition: transform 0.3s;
+	}
+
+	.uni-fab__plus--active {
+		transform: rotate(135deg);
+	}
+
+	.uni-fab__content {
+		/* #ifndef APP-NVUE */
+		box-sizing: border-box;
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		border-radius: 55px;
+		overflow: hidden;
+		transition-property: width, height;
+		transition-duration: 0.2s;
+		width: 55px;
+		border-color: #DDDDDD;
+		border-width: 1rpx;
+		border-style: solid;
+	}
+
+	.uni-fab__content--other-platform {
+		border-width: 0px;
+		box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.2);
+	}
+
+	.uni-fab__content--left {
+		justify-content: flex-start;
+	}
+
+	.uni-fab__content--right {
+		justify-content: flex-end;
+	}
+
+	.uni-fab__content--flexDirection {
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+
+	.uni-fab__content--flexDirectionStart {
+		flex-direction: column;
+		justify-content: flex-start;
+	}
+
+	.uni-fab__content--flexDirectionEnd {
+		flex-direction: column;
+		justify-content: flex-end;
+	}
+
+	.uni-fab__item {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		width: 55px;
+		height: 55px;
+		opacity: 0;
+		transition: opacity 0.2s;
+	}
+
+	.uni-fab__item--active {
+		opacity: 1;
+	}
+
+	.uni-fab__item-image {
+		width: 25px;
+		height: 25px;
+		margin-bottom: 3px;
+	}
+
+	.uni-fab__item-text {
+		color: #FFFFFF;
+		font-size: 12px;
+	}
+
+	.uni-fab__item--first {
+		width: 55px;
+	}
+</style>
diff --git a/components/uni-grid/uni-grid.vue b/components/uni-grid/uni-grid.vue
new file mode 100644
index 0000000..948347d
--- /dev/null
+++ b/components/uni-grid/uni-grid.vue
@@ -0,0 +1,203 @@
+<template>
+	<view class="uni-grid" :class="{'uni-grid-no-border':!showBorder,'uni-grid-no-out-border':showBorder && !showOutBorder}">
+		<view class="uni-grid__flex" v-for="(items,i) in gridGroup" :key="i">
+			<view class="uni-grid-item" hover-class="uni-grid-item-hover" :hover-start-time="20" :hover-stay-time="70" v-for="(item,index) in items" :key="index" :class="[index == columnNum ? 'uni-grid-item-last' : '','uni-grid-item-' + type]" @click="onClick(i,index)" :style="{visibility:item.seize ? 'hidden' : 'inherit'}">
+				<view class="uni-grid-item__content" v-if="!item.seize">
+					<image class="uni-grid-item-image" :src="item.image"></image>
+					<text class="uni-grid-item-text">{{item.text}}</text>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "uni-grid",
+		props: {
+			options: Array,
+			type: { //布局格式,长方形oblong,正方形square
+				type: String,
+				default: 'square'
+			},
+			columnNum: { //每一行有多少个
+				type: [Number, String],
+				default: 3
+			},
+			showOutBorder: { //显示外边框
+				type: [Boolean, String],
+				default: true
+			},
+			showBorder: { //是否显示border,如果为false,showOutBorder无效
+				type: [Boolean, String],
+				default: true
+			}
+		},
+		data() {
+			return {}
+		},
+		created() {
+			this.columnNumber = this.gridGroup[0].length
+		},
+		computed: {
+			gridGroup() {
+				let group = []
+				let groupItem = []
+				this.options && this.options.forEach((item, index) => {
+					groupItem.push(item)
+					if (index % this.columnNum === this.columnNum - 1) {
+						group.push(groupItem)
+						groupItem = []
+					}
+				})
+				if (groupItem.length > 0) {
+					if (this.columnNum > groupItem.length) {
+						for (let i = 0, length = groupItem.length; i < this.columnNum - length; i++) {
+							groupItem.push({
+								seize: true
+							})
+						}
+					}
+					group.push(groupItem)
+				}
+				groupItem = null
+				return group
+			}
+		},
+		methods: {
+			onClick(index, num) {
+				this.$emit('click', {
+					index: index * this.columnNumber + num
+				})
+			}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-grid {
+		position: relative;
+		display: flex;
+		flex-direction: column
+	}
+
+	.uni-grid__flex {
+		display: flex;
+		flex-direction: row
+	}
+
+	.uni-grid-item {
+		display: flex;
+		position: relative;
+		flex-direction: column;
+		flex: 1
+	}
+
+	.uni-grid-item:before {
+		display: block;
+		content: " ";
+		padding-bottom: 100%
+	}
+
+	.uni-grid-item:after {
+		content: '';
+		position: absolute;
+		z-index: 1;
+		transform-origin: center;
+		box-sizing: border-box;
+		top: -50%;
+		left: -50%;
+		right: -50%;
+		bottom: -50%;
+		border-color: #c8c7cc;
+		border-style: solid;
+		border-width: 1px;
+		-webkit-transform: scale(.5);
+		transform: scale(.5);
+		border-top-width: 0;
+		border-left-width: 0
+	}
+
+	.uni-grid-item__content {
+		position: absolute;
+		left: 0;
+		top: 0;
+		width: 100%;
+		height: 100%;
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center
+	}
+
+	.uni-grid-item-text {
+		font-size: 32upx;
+		color: #333;
+		margin-top: 12upx
+	}
+
+	.uni-grid-item-hover {
+		background-color: #f1f1f1
+	}
+
+	.uni-grid-item-image {
+		width: 80upx;
+		height: 80upx
+	}
+
+	.uni-grid .uni-grid__flex:first-child .uni-grid-item:after {
+		border-top-width: 1px
+	}
+
+	.uni-grid .uni-grid__flex .uni-grid-item:first-child:after {
+		border-left-width: 1px
+	}
+
+	.uni-grid.uni-grid-no-out-border .uni-grid__flex:first-child .uni-grid-item:after {
+		border-top-width: 0
+	}
+
+	.uni-grid.uni-grid-no-out-border .uni-grid__flex:last-child .uni-grid-item:after {
+		border-bottom-width: 0
+	}
+
+	.uni-grid.uni-grid-no-out-border .uni-grid__flex .uni-grid-item:first-child:after {
+		border-left-width: 0
+	}
+
+	.uni-grid.uni-grid-no-out-border .uni-grid__flex .uni-grid-item:last-child:after {
+		border-right-width: 0
+	}
+
+	.uni-grid.uni-grid-no-border .uni-grid-item:after {
+		border-width: 0
+	}
+
+	.uni-grid.uni-grid-no-border .uni-grid__flex:first-child .uni-grid-item:after {
+		border-top-width: 0
+	}
+
+	.uni-grid.uni-grid-no-border .uni-grid__flex .uni-grid-item:first-child:after {
+		border-left-width: 0
+	}
+
+	.uni-grid-item-oblong.uni-grid-item:before {
+		padding-bottom: 60%
+	}
+
+	.uni-grid-item-oblong .uni-grid-item__content {
+		flex-direction: row
+	}
+
+	.uni-grid-item-oblong .uni-grid-item-image {
+		width: 52upx;
+		height: 52upx
+	}
+
+	.uni-grid-item-oblong .uni-grid-item-text {
+		margin-top: 0;
+		margin-left: 12upx
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-icon/uni-icon.vue b/components/uni-icon/uni-icon.vue
new file mode 100644
index 0000000..8f1fc99
--- /dev/null
+++ b/components/uni-icon/uni-icon.vue
@@ -0,0 +1,419 @@
+<template>
+	<view class="uni-icon" :class="'uni-icon-' + type" :style="{ color: color, 'font-size': size + 'px' }" @click="_onClick"></view>
+</template>
+
+<script>
+	export default {
+		name: 'uni-icon',
+		props: {
+			type: {
+				type: String,
+				default: ''
+			},
+			color: {
+				type: String,
+				default: '#333333'
+			},
+			size: {
+				type: [Number, String],
+				default: 16
+			}
+		},
+		methods: {
+			_onClick() {
+				this.$emit('click');
+			}
+		}
+	};
+</script>
+
+<style>
+	@font-face {
+		font-family: uniicons;
+		font-weight: normal;
+		font-style: normal;
+		src: url(data:font/truetype;charset=utf-8;base64,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PDgtsDEssAAWILAJI0IgICBGI0ewACsjYTgtsDIssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbABRWMjIFhiGyFZY7ABRWJgIy4jICA8ijgjIVktsDMssAAWILAJQyAuRyNHI2EgYLAgYGawgGIjICA8ijgtsDQsIyAuRrACJUZSWCA8WS6xJAEUKy2wNSwjIC5GsAIlRlBYIDxZLrEkARQrLbA2LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrEkARQrLbA3LLAuKyMgLkawAiVGUlggPFkusSQBFCstsDgssC8riiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSQBFCuwBEMusCQrLbA5LLAAFrAEJbAEJiAuRyNHI2GwBkUrIyA8IC4jOLEkARQrLbA6LLEJBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEkARQrLbA7LLAuKy6xJAEUKy2wPCywLyshIyAgPLAEI0IjOLEkARQrsARDLrAkKy2wPSywABUgR7AAI0KyAAEBFRQTLrAqKi2wPiywABUgR7AAI0KyAAEBFRQTLrAqKi2wPyyxAAEUE7ArKi2wQCywLSotsEEssAAWRSMgLiBGiiNhOLEkARQrLbBCLLAJI0KwQSstsEMssgAAOistsEQssgABOistsEUssgEAOistsEYssgEBOistsEcssgAAOystsEgssgABOystsEkssgEAOystsEossgEBOystsEsssgAANystsEwssgABNystsE0ssgEANystsE4ssgEBNystsE8ssgAAOSstsFAssgABOSstsFEssgEAOSstsFIssgEBOSstsFMssgAAPCstsFQssgABPCstsFUssgEAPCstsFYssgEBPCstsFcssgAAOCstsFgssgABOCstsFkssgEAOCstsFossgEBOCstsFsssDArLrEkARQrLbBcLLAwK7A0Ky2wXSywMCuwNSstsF4ssAAWsDArsDYrLbBfLLAxKy6xJAEUKy2wYCywMSuw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AVkBWgFbAVwBXQd1bmlFMTAwB3VuaUUxMDEHdW5pRTEwMgd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMjAwB3VuaUUyMDEHdW5pRTIwMgd1bmlFMjAzB3VuaUUyMzAHdW5pRTIzMQd1bmlFMjMyB3VuaUUyMzMHdW5pRTI2MAd1bmlFMjYxB3VuaUUyNjIHdW5pRTI2Mwd1bmlFMjY0B3VuaUUzMDAHdW5pRTMwMQd1bmlFMzAyB3VuaUUzMDMHdW5pRTMzMgd1bmlFMzMzB3VuaUUzNjAHdW5pRTM2Mwd1bmlFMzY0B3VuaUU0MDAHdW5pRTQwMQd1bmlFNDAyB3VuaUU0MDMHdW5pRTQwNAd1bmlFNDA1B3VuaUU0MDYHdW5pRTQwNwd1bmlFNDA4B3VuaUU0MDkHdW5pRTQxMAd1bmlFNDExB3VuaUU0MTMHdW5pRTQzNAd1bmlFNDM3B3VuaUU0MzgHdW5pRTQzOQd1bmlFNDQwB3VuaUU0NDEHdW5pRTQ0Mgd1bmlFNDQzB3VuaUU0NjAHdW5pRTQ2MQd1bmlFNDYyB3VuaUU0NjMHdW5pRTQ2NAd1bmlFNDY1B3VuaUU0NjYHdW5pRTQ2OAd1bmlFNDcwB3VuaUU0NzEHdW5pRTQ3Mgd1bmlFNTAwB3VuaUU1MDEHdW5pRTUwMgd1bmlFNTAzB3VuaUU1MDQHdW5pRTUwNQd1bmlFNTA2B3VuaUU1MDcHdW5pRTUwOAd1bmlFNTMwB3VuaUU1MzIHdW5pRTUzNAd1bmlFNTM1B3VuaUU1MzcHdW5pRTU2MAd1bmlFNTYyB3VuaUU1NjMHdW5pRTU2NQd1bmlFNTY3B3VuaUU1NjgHdW5pRTU4MAd1bmlFNTgxB3VuaUU1ODIHdW5pRTU4Mwd1bmlFNTg0B3VuaUU1ODUHdW5pRTU4Ngd1bmlFNTg3B3VuaUU1ODgHdW5pRTU4OQRFdXJvBEV1cm8AAQAB//8ADwABAAAADAAAABYAAAACAAEAAQBfAAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAANJrTZkAAAAA2DhhuQ==) format('truetype');
+	}
+
+	/* uni-icon {
+		line-height: 1;
+	} */
+
+	.uni-icon {
+		font-family: uniicons;
+		font-weight: normal;
+		font-style: normal;
+		line-height: 1;
+		display: inline-block;
+		text-decoration: none;
+		-webkit-font-smoothing: antialiased;
+	}
+
+	.uni-icon.uni-active {
+		color: #007aff;
+	}
+
+	.uni-icon-contact:before {
+		content: '\e100';
+	}
+
+	.uni-icon-person:before {
+		content: '\e101';
+	}
+
+	.uni-icon-personadd:before {
+		content: '\e102';
+	}
+
+	.uni-icon-contact-filled:before {
+		content: '\e130';
+	}
+
+	.uni-icon-person-filled:before {
+		content: '\e131';
+	}
+
+	.uni-icon-personadd-filled:before {
+		content: '\e132';
+	}
+
+	.uni-icon-phone:before {
+		content: '\e200';
+	}
+
+	.uni-icon-email:before {
+		content: '\e201';
+	}
+
+	.uni-icon-chatbubble:before {
+		content: '\e202';
+	}
+
+	.uni-icon-chatboxes:before {
+		content: '\e203';
+	}
+
+	.uni-icon-phone-filled:before {
+		content: '\e230';
+	}
+
+	.uni-icon-email-filled:before {
+		content: '\e231';
+	}
+
+	.uni-icon-chatbubble-filled:before {
+		content: '\e232';
+	}
+
+	.uni-icon-chatboxes-filled:before {
+		content: '\e233';
+	}
+
+	.uni-icon-weibo:before {
+		content: '\e260';
+	}
+
+	.uni-icon-weixin:before {
+		content: '\e261';
+	}
+
+	.uni-icon-pengyouquan:before {
+		content: '\e262';
+	}
+
+	.uni-icon-chat:before {
+		content: '\e263';
+	}
+
+	.uni-icon-qq:before {
+		content: '\e264';
+	}
+
+	.uni-icon-videocam:before {
+		content: '\e300';
+	}
+
+	.uni-icon-camera:before {
+		content: '\e301';
+	}
+
+	.uni-icon-mic:before {
+		content: '\e302';
+	}
+
+	.uni-icon-location:before {
+		content: '\e303';
+	}
+
+	.uni-icon-mic-filled:before,
+	.uni-icon-speech:before {
+		content: '\e332';
+	}
+
+	.uni-icon-location-filled:before {
+		content: '\e333';
+	}
+
+	.uni-icon-micoff:before {
+		content: '\e360';
+	}
+
+	.uni-icon-image:before {
+		content: '\e363';
+	}
+
+	.uni-icon-map:before {
+		content: '\e364';
+	}
+
+	.uni-icon-compose:before {
+		content: '\e400';
+	}
+
+	.uni-icon-trash:before {
+		content: '\e401';
+	}
+
+	.uni-icon-upload:before {
+		content: '\e402';
+	}
+
+	.uni-icon-download:before {
+		content: '\e403';
+	}
+
+	.uni-icon-close:before {
+		content: '\e404';
+	}
+
+	.uni-icon-redo:before {
+		content: '\e405';
+	}
+
+	.uni-icon-undo:before {
+		content: '\e406';
+	}
+
+	.uni-icon-refresh:before {
+		content: '\e407';
+	}
+
+	.uni-icon-star:before {
+		content: '\e408';
+	}
+
+	.uni-icon-plus:before {
+		content: '\e409';
+	}
+
+	.uni-icon-minus:before {
+		content: '\e410';
+	}
+
+	.uni-icon-circle:before,
+	.uni-icon-checkbox:before {
+		content: '\e411';
+	}
+
+	.uni-icon-close-filled:before,
+	.uni-icon-clear:before {
+		content: '\e434';
+	}
+
+	.uni-icon-refresh-filled:before {
+		content: '\e437';
+	}
+
+	.uni-icon-star-filled:before {
+		content: '\e438';
+	}
+
+	.uni-icon-plus-filled:before {
+		content: '\e439';
+	}
+
+	.uni-icon-minus-filled:before {
+		content: '\e440';
+	}
+
+	.uni-icon-circle-filled:before {
+		content: '\e441';
+	}
+
+	.uni-icon-checkbox-filled:before {
+		content: '\e442';
+	}
+
+	.uni-icon-closeempty:before {
+		content: '\e460';
+	}
+
+	.uni-icon-refreshempty:before {
+		content: '\e461';
+	}
+
+	.uni-icon-reload:before {
+		content: '\e462';
+	}
+
+	.uni-icon-starhalf:before {
+		content: '\e463';
+	}
+
+	.uni-icon-spinner:before {
+		content: '\e464';
+	}
+
+	.uni-icon-spinner-cycle:before {
+		content: '\e465';
+	}
+
+	.uni-icon-search:before {
+		content: '\e466';
+	}
+
+	.uni-icon-plusempty:before {
+		content: '\e468';
+	}
+
+	.uni-icon-forward:before {
+		content: '\e470';
+	}
+
+	.uni-icon-back:before,
+	.uni-icon-left-nav:before {
+		content: '\e471';
+	}
+
+	.uni-icon-checkmarkempty:before {
+		content: '\e472';
+	}
+
+	.uni-icon-home:before {
+		content: '\e500';
+	}
+
+	.uni-icon-navigate:before {
+		content: '\e501';
+	}
+
+	.uni-icon-gear:before {
+		content: '\e502';
+	}
+
+	.uni-icon-paperplane:before {
+		content: '\e503';
+	}
+
+	.uni-icon-info:before {
+		content: '\e504';
+	}
+
+	.uni-icon-help:before {
+		content: '\e505';
+	}
+
+	.uni-icon-locked:before {
+		content: '\e506';
+	}
+
+	.uni-icon-more:before {
+		content: '\e507';
+	}
+
+	.uni-icon-flag:before {
+		content: '\e508';
+	}
+
+	.uni-icon-home-filled:before {
+		content: '\e530';
+	}
+
+	.uni-icon-gear-filled:before {
+		content: '\e532';
+	}
+
+	.uni-icon-info-filled:before {
+		content: '\e534';
+	}
+
+	.uni-icon-help-filled:before {
+		content: '\e535';
+	}
+
+	.uni-icon-more-filled:before {
+		content: '\e537';
+	}
+
+	.uni-icon-settings:before {
+		content: '\e560';
+	}
+
+	.uni-icon-list:before {
+		content: '\e562';
+	}
+
+	.uni-icon-bars:before {
+		content: '\e563';
+	}
+
+	.uni-icon-loop:before {
+		content: '\e565';
+	}
+
+	.uni-icon-paperclip:before {
+		content: '\e567';
+	}
+
+	.uni-icon-eye:before {
+		content: '\e568';
+	}
+
+	.uni-icon-arrowup:before {
+		content: '\e580';
+	}
+
+	.uni-icon-arrowdown:before {
+		content: '\e581';
+	}
+
+	.uni-icon-arrowleft:before {
+		content: '\e582';
+	}
+
+	.uni-icon-arrowright:before {
+		content: '\e583';
+	}
+
+	.uni-icon-arrowthinup:before {
+		content: '\e584';
+	}
+
+	.uni-icon-arrowthindown:before {
+		content: '\e585';
+	}
+
+	.uni-icon-arrowthinleft:before {
+		content: '\e586';
+	}
+
+	.uni-icon-arrowthinright:before {
+		content: '\e587';
+	}
+
+	.uni-icon-pulldown:before {
+		content: '\e588';
+	}
+
+	.uni-icon-closefill:before {
+		content: '\e589';
+	}
+
+	.uni-icon-sound:before {
+		content: '\e590';
+	}
+
+	.uni-icon-scan:before {
+		content: '\e612';
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-icons/uni-icons.vue b/components/uni-icons/uni-icons.vue
new file mode 100644
index 0000000..6d6ef78
--- /dev/null
+++ b/components/uni-icons/uni-icons.vue
@@ -0,0 +1,425 @@
+<template>
+  <view
+    :class="'uni-icon-' + type"
+    :style="{ color: color, 'font-size': size + 'px' }"
+    class="uni-icon"
+    @click="_onClick"
+  />
+</template>
+
+<script>
+export default {
+  name: 'UniIcons',
+  props: {
+    type: {
+      type: String,
+      default: ''
+    },
+    color: {
+      type: String,
+      default: '#333333'
+    },
+    size: {
+      type: [Number, String],
+      default: 16
+    }
+  },
+  methods: {
+    _onClick () {
+      this.$emit('click')
+    }
+  }
+}
+</script>
+
+<style>
+@font-face {
+	font-family: uniicons;
+	font-weight: normal;
+	font-style: normal;
+	src: url(data:font/truetype;charset=utf-8;base64,AAEAAAAQAQAABAAARkZUTYBH1lsAAHcQAAAAHEdERUYAJwBmAAB28AAAAB5PUy8yWe1cyQAAAYgAAABgY21hcGBhbBUAAAK0AAACQmN2dCAMpf40AAAPKAAAACRmcGdtMPeelQAABPgAAAmWZ2FzcAAAABAAAHboAAAACGdseWZsfgfZAAAQEAAAYQxoZWFkDdbyjwAAAQwAAAA2aGhlYQd+AyYAAAFEAAAAJGhtdHgkeBuYAAAB6AAAAMpsb2NhPEknLgAAD0wAAADCbWF4cAIjA3IAAAFoAAAAIG5hbWVceWDDAABxHAAAAg1wb3N05pkPsQAAcywAAAO8cHJlcKW5vmYAAA6QAAAAlQABAAAAAQAA6ov1dV8PPPUAHwQAAAAAANJrTZkAAAAA2DhhuQAA/yAEAAMgAAAACAACAAAAAAAAAAEAAAMg/yAAXAQAAAAAAAQAAAEAAAAAAAAAAAAAAAAAAAAFAAEAAABgAXoADAAAAAAAAgBGAFQAbAAAAQQBogAAAAAABAP/AfQABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAIABgMAAAAAAAAAAAABEAAAAAAAAAAAAAAAUGZFZAGAAB3mEgMs/ywAXAMgAOAAAAABAAAAAAMYAs0AAAAgAAEBdgAiAAAAAAFVAAAD6QAsBAAAYADAAMAAYADAAMAAoACAAIAAYACgAIAAgABgALMAQABAAAUAVwBeAIABAAD0AQAA9AEAAEAAVgCgAOAAwADAAFEAfgCAAGAAQABgAGAAYAA+AFEAYABAAGAAYAA0AGAAPgFAAQAAgABAAAAAJQCBAQABQAFAASwAgABgAIAAwABgAGAAwADBAQAAgACAAGAAYADBAEAARABAABcBXwATAMAAwAFAAUABQAFAAMAAwAEeAF8AVQBAAAAAAAADAAAAAwAAABwAAQAAAAABPAADAAEAAAAcAAQBIAAAAEQAQAAFAAQAAAAdAHjhAuEy4gPiM+Jk4wPjM+Ng42TkCeQR5BPkNOQ55EPkZuRo5HLlCOUw5TLlNeU35WDlY+Vl5WjlieWQ5hL//wAAAAAAHQB44QDhMOIA4jDiYOMA4zLjYONj5ADkEOQT5DTkN+RA5GDkaORw5QDlMOUy5TTlN+Vg5WLlZeVn5YDlkOYS//8AAf/k/4sfBB7XHgod3h2yHRcc6Ry9HLscIBwaHBkb+Rv3G/Eb1RvUG80bQBsZGxgbFxsWGu4a7RrsGusa1BrOGk0AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBgAAAQAAAAAAAAABAgAAAAIAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAssCBgZi2wASwgZCCwwFCwBCZasARFW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCwCkVhZLAoUFghsApFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwACtZWSOwAFBYZVlZLbACLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbADLCMhIyEgZLEFYkIgsAYjQrIKAAIqISCwBkMgiiCKsAArsTAFJYpRWGBQG2FSWVgjWSEgsEBTWLAAKxshsEBZI7AAUFhlWS2wBCywCCNCsAcjQrAAI0KwAEOwB0NRWLAIQyuyAAEAQ2BCsBZlHFktsAUssABDIEUgsAJFY7ABRWJgRC2wBiywAEMgRSCwACsjsQQEJWAgRYojYSBkILAgUFghsAAbsDBQWLAgG7BAWVkjsABQWGVZsAMlI2FERC2wByyxBQVFsAFhRC2wCCywAWAgILAKQ0qwAFBYILAKI0JZsAtDSrAAUlggsAsjQlktsAksILgEAGIguAQAY4ojYbAMQ2AgimAgsAwjQiMtsAosS1RYsQcBRFkksA1lI3gtsAssS1FYS1NYsQcBRFkbIVkksBNlI3gtsAwssQANQ1VYsQ0NQ7ABYUKwCStZsABDsAIlQrIAAQBDYEKxCgIlQrELAiVCsAEWIyCwAyVQWLAAQ7AEJUKKiiCKI2GwCCohI7ABYSCKI2GwCCohG7AAQ7ACJUKwAiVhsAgqIVmwCkNHsAtDR2CwgGIgsAJFY7ABRWJgsQAAEyNEsAFDsAA+sgEBAUNgQi2wDSyxAAVFVFgAsA0jQiBgsAFhtQ4OAQAMAEJCimCxDAQrsGsrGyJZLbAOLLEADSstsA8ssQENKy2wECyxAg0rLbARLLEDDSstsBIssQQNKy2wEyyxBQ0rLbAULLEGDSstsBUssQcNKy2wFiyxCA0rLbAXLLEJDSstsBgssAcrsQAFRVRYALANI0IgYLABYbUODgEADABCQopgsQwEK7BrKxsiWS2wGSyxABgrLbAaLLEBGCstsBsssQIYKy2wHCyxAxgrLbAdLLEEGCstsB4ssQUYKy2wHyyxBhgrLbAgLLEHGCstsCEssQgYKy2wIiyxCRgrLbAjLCBgsA5gIEMjsAFgQ7ACJbACJVFYIyA8sAFgI7ASZRwbISFZLbAkLLAjK7AjKi2wJSwgIEcgILACRWOwAUViYCNhOCMgilVYIEcgILACRWOwAUViYCNhOBshWS2wJiyxAAVFVFgAsAEWsCUqsAEVMBsiWS2wJyywByuxAAVFVFgAsAEWsCUqsAEVMBsiWS2wKCwgNbABYC2wKSwAsANFY7ABRWKwACuwAkVjsAFFYrAAK7AAFrQAAAAAAEQ+IzixKAEVKi2wKiwgPCBHILACRWOwAUViYLAAQ2E4LbArLC4XPC2wLCwgPCBHILACRWOwAUViYLAAQ2GwAUNjOC2wLSyxAgAWJSAuIEewACNCsAIlSYqKRyNHI2EgWGIbIVmwASNCsiwBARUUKi2wLiywABawBCWwBCVHI0cjYbAGRStlii4jICA8ijgtsC8ssAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgsAlDIIojRyNHI2EjRmCwBEOwgGJgILAAKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwgGJhIyAgsAQmI0ZhOBsjsAlDRrACJbAJQ0cjRyNhYCCwBEOwgGJgIyCwACsjsARDYLAAK7AFJWGwBSWwgGKwBCZhILAEJWBkI7ADJWBkUFghGyMhWSMgILAEJiNGYThZLbAwLLAAFiAgILAFJiAuRyNHI2EjPDgtsDEssAAWILAJI0IgICBGI0ewACsjYTgtsDIssAAWsAMlsAIlRyNHI2GwAFRYLiA8IyEbsAIlsAIlRyNHI2EgsAUlsAQlRyNHI2GwBiWwBSVJsAIlYbABRWMjIFhiGyFZY7ABRWJgIy4jICA8ijgjIVktsDMssAAWILAJQyAuRyNHI2EgYLAgYGawgGIjICA8ijgtsDQsIyAuRrACJUZSWCA8WS6xJAEUKy2wNSwjIC5GsAIlRlBYIDxZLrEkARQrLbA2LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrEkARQrLbA3LLAuKyMgLkawAiVGUlggPFkusSQBFCstsDgssC8riiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSQBFCuwBEMusCQrLbA5LLAAFrAEJbAEJiAuRyNHI2GwBkUrIyA8IC4jOLEkARQrLbA6LLEJBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAZFKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7CAYmAgsAArIIqKYSCwAkNgZCOwA0NhZFBYsAJDYRuwA0NgWbADJbCAYmGwAiVGYTgjIDwjOBshICBGI0ewACsjYTghWbEkARQrLbA7LLAuKy6xJAEUKy2wPCywLyshIyAgPLAEI0IjOLEkARQrsARDLrAkKy2wPSywABUgR7AAI0KyAAEBFRQTLrAqKi2wPiywABUgR7AAI0KyAAEBFRQTLrAqKi2wPyyxAAEUE7ArKi2wQCywLSotsEEssAAWRSMgLiBGiiNhOLEkARQrLbBCLLAJI0KwQSstsEMssgAAOistsEQssgABOistsEUssgEAOistsEYssgEBOistsEcssgAAOystsEgssgABOystsEkssgEAOystsEossgEBOystsEsssgAANystsEwssgABNystsE0ssgEANystsE4ssgEBNystsE8ssgAAOSstsFAssgABOSstsFEssgEAOSstsFIssgEBOSstsFMssgAAPCstsFQssgABPCstsFUssgEAPCstsFYssgEBPCstsFcssgAAOCstsFgssgABOCstsFkssgEAOCstsFossgEBOCstsFsssDArLrEkARQrLbBcLLAwK7A0Ky2wXSywMCuwNSstsF4ssAAWsDArsDYrLbBfLLAxKy6xJAEUKy2wYCywMSuwNCstsGEssDErsDUrLbBiLLAxK7A2Ky2wYyywMisusSQBFCstsGQssDIrsDQrLbBlLLAyK7A1Ky2wZiywMiuwNistsGcssDMrLrEkARQrLbBoLLAzK7A0Ky2waSywMyuwNSstsGossDMrsDYrLbBrLCuwCGWwAyRQeLABFTAtAABLuADIUlixAQGOWbkIAAgAYyCwASNEILADI3CwDkUgIEu4AA5RS7AGU1pYsDQbsChZYGYgilVYsAIlYbABRWMjYrACI0SzCgkFBCuzCgsFBCuzDg8FBCtZsgQoCUVSRLMKDQYEK7EGAUSxJAGIUViwQIhYsQYDRLEmAYhRWLgEAIhYsQYBRFlZWVm4Af+FsASNsQUARAAAAAAAAAAAAAAAAAAAAAAAAAAAMgAyAxj/4QMg/yADGP/hAyD/IAAAACgAKAAoAWQCCgO0BYoGDgaiB4gIgAjICXYJ8Ap6CrQLGAtsDPgN3A50D1wRyhIyEzATnhQaFHIUvBVAFeIXHBd8GEoYkBjWGTIZjBnoGmAaohsCG1QblBvqHCgcehyiHOAdDB1qHaQd6h4IHkYenh7YHzggmiDkIQwhJCE8IVwhviIcJGYkiCT0JYYmACZ4J3YntijEKQ4peim6KsQsECw+LLwtSC3eLfYuDi4mLj4uiC7QLxYvXC94L5owBjCGAAAAAgAiAAABMgKqAAMABwApQCYAAAADAgADVwACAQECSwACAgFPBAEBAgFDAAAHBgUEAAMAAxEFDyszESERJzMRIyIBEO7MzAKq/VYiAmYAAAAFACz/4QO8AxgAFgAwADoAUgBeAXdLsBNQWEBKAgEADQ4NAA5mAAMOAQ4DXgABCAgBXBABCQgKBgleEQEMBgQGDF4ACwQLaQ8BCAAGDAgGWAAKBwUCBAsKBFkSAQ4ODVEADQ0KDkIbS7AXUFhASwIBAA0ODQAOZgADDgEOA14AAQgIAVwQAQkICggJCmYRAQwGBAYMXgALBAtpDwEIAAYMCAZYAAoHBQIECwoEWRIBDg4NUQANDQoOQhtLsBhQWEBMAgEADQ4NAA5mAAMOAQ4DXgABCAgBXBABCQgKCAkKZhEBDAYEBgwEZgALBAtpDwEIAAYMCAZYAAoHBQIECwoEWRIBDg4NUQANDQoOQhtATgIBAA0ODQAOZgADDgEOAwFmAAEIDgEIZBABCQgKCAkKZhEBDAYEBgwEZgALBAtpDwEIAAYMCAZYAAoHBQIECwoEWRIBDg4NUQANDQoOQllZWUAoU1M7OzIxFxdTXlNeW1g7UjtSS0M3NTE6MjoXMBcwURExGBEoFUATFisBBisBIg4CHQEhNTQmNTQuAisBFSEFFRQWFA4CIwYmKwEnIQcrASInIi4CPQEXIgYUFjMyNjQmFwYHDgMeATsGMjYnLgEnJicBNTQ+AjsBMhYdAQEZGxpTEiUcEgOQAQoYJx6F/koCogEVHyMODh8OIC3+SSwdIhQZGSATCHcMEhIMDRISjAgGBQsEAgQPDiVDUVBAJBcWCQUJBQUG/qQFDxoVvB8pAh8BDBknGkwpEBwEDSAbEmGINBc6OiUXCQEBgIABExsgDqc/ERoRERoRfBoWEyQOEA0IGBoNIxETFAF35AsYEwwdJuMAAAIAYP+AA6ACwAAHAFcASEBFSklDOTg2JyYcGRcWDAQDTw8CAQQCQAAEAwEDBAFmAAAFAQIDAAJZAAMEAQNNAAMDAVEAAQMBRQkITEswLQhXCVcTEAYQKwAgBhAWIDYQJTIeAhUUByYnLgE1NDc1Nj8DPgE3Njc2NzYvATUmNzYmJyYnIwYHDgEXFgcUBxUOARceARcWFxYVMBUUBhQPARQjDgEHJjU0PgQCrP6o9PQBWPT+YE2OZjxYUWkEAgEBAQICAgECAg0FEwgHCAEECgQOEyhNI0woFA4ECgQBBAEEBQ4IBA4IAQECASlwHFkbMUdTYwLA9P6o9PQBWNE8Zo5NimohHwEGDgMDBgMDBgYGAwUDHSIWLCMUAgEVORM6GjMFBTMaOhM5FQEBAQoTGhkgCSEeECAIAwUCAQEBDCgMaos0Y1NHMRsAAAAAAwDA/+ADQAJgAAAAUwDAATZLsAtQWEAck5KFAAQBC56alYR6BQABqadzQkA/EQoICgADQBtLsAxQWEAck5KFAAQBC56alYR6BQABqadzQkA/EQoIBwADQBtAHJOShQAEAQuempWEegUAAamnc0JAPxEKCAoAA0BZWUuwC1BYQDUDAQELAAsBAGYEAQAKCwAKZAAKBwsKB2QJCAIHBgsHBmQAAgALAQILWQwBBgYFUAAFBQsFQhtLsAxQWEAvAwEBCwALAQBmBAEABwsAB2QKCQgDBwYLBwZkAAIACwECC1kMAQYGBVAABQULBUIbQDUDAQELAAsBAGYEAQAKCwAKZAAKBwsKB2QJCAIHBgsHBmQAAgALAQILWQwBBgYFUAAFBQsFQllZQB5VVIuKZWRiYV9eXVxUwFXATk05OC8uJyUfHhMSDQ4rCQEuAScmJy4BPwE2Nz4DNTcyPgE3PgE1NC4DIzc+ATc2JiMiDgEVHgEfASIHFBYXHgMXMxYXFh8DBgcOAQcOBAcGFSE0LgMHITY3Njc+ATcyNjI+ATI+ATI3Njc2Jz0CNCY9AycuAScmLwEuAicmJyY+ATc1JicmNzYyFxYHDgIHMQYVHgEHBgcUDgEVBw4CBw4BDwEdAQYdARQGFRQXHgIXFhceARcWFx4CFwGVAUIQRAMeCgMBAQEMBgIEBAMBAgUJAwELAwMDAgEDAgYBAVBGL0YgAQYCAwsBCwECBQQFAQIHBwMFBwMBAQIFGAsGExETEghpAoASFyEU4v7tBQwWIAkZEQEFAwQDBAMEAwIpEAwBAQUDCgMFBwEBCAkBBAQCAgcBCQEBHSByIB0BAQUDAQEBCwMEBQkJAQIEBQEDCgMFAQEMBxwPBwgYERkJIRUEBQUCAY3+uwYLAQYMBCkSExMRBRARDwUFAQwLByYLBQcEAgEJBiwaNlEoPCMaKgkIEwskCQYKBQIBLhEHCQ8FRAsDBQoDAQMDBAQDJUMSIRUUCEQHCBALBAUCAQEBAQEBCRQOMggJBwQFAgMCCAcFEggOKgcEBQQDExIMCAkDDBswKR0hIR0pFSYNAwUGAhINEhMDBAUEBwkWFQQIEAcHCAIDBAkEDAYyDgkOBQECBAIFBAsQAwQFAwAABADA/+ADQAJgAAsADABfAMwBckuwC1BYQByfnpEMBAcEqqahkIYFBge1s39OTEsdFggQBgNAG0uwDFBYQByfnpEMBAcEqqahkIYFBge1s39OTEsdFggNBgNAG0Acn56RDAQHBKqmoZCGBQYHtbN/TkxLHRYIEAYDQFlZS7ALUFhARwkBBwQGBAcGZgoBBhAEBhBkABANBBANZA8OAg0MBA0MZAAIABEBCBFZAgEABQEDBAADVwABAAQHAQRXEgEMDAtQAAsLCwtCG0uwDFBYQEEJAQcEBgQHBmYKAQYNBAYNZBAPDgMNDAQNDGQACAARAQgRWQIBAAUBAwQAA1cAAQAEBwEEVxIBDAwLUAALCwsLQhtARwkBBwQGBAcGZgoBBhAEBhBkABANBBANZA8OAg0MBA0MZAAIABEBCBFZAgEABQEDBAADVwABAAQHAQRXEgEMDAtQAAsLCwtCWVlAJGFgl5ZxcG5ta2ppaGDMYcxaWUVEOzozMSsqHx4RERERERATFCsBIzUjFSMVMxUzNTMFAS4BJyYnLgE/ATY3PgM1NzI+ATc+ATU0LgMjNz4BNzYmIyIOARUeAR8BIgcUFhceAxczFhcWHwMGBw4BBw4EBwYVITQuAwchNjc2Nz4BNzI2Mj4BMj4BMjc2NzYnPQI0Jj0DJy4BJyYvAS4CJyYnJj4BNzUmJyY3NjIXFgcOAgcxBhUeAQcGBxQOARUHDgIHDgEPAR0BBh0BFAYVFBceAhcWFx4BFxYXHgIXA0AyHDIyHDL+VQFCEEQDHgoDAQEBDAYCBAQDAQIFCQMBCwMDAwIBAwIGAQFQRi9GIAEGAgMLAQsBAgUEBQECBwcDBQcDAQECBRgLBhMRExIIaQKAEhchFOL+7QUMFiAJGREBBQMEAwQDBAMCKRAMAQEFAwoDBQcBAQgJAQQEAgIHAQkBAR0gciAdAQEFAwEBAQsDBAUJCQECBAUBAwoDBQEBDAccDwcIGBEZCSEVBAUFAgHuMjIcMjJF/rsGCwEGDAQpEhMTEQUQEQ8FBQEMCwcmCwUHBAIBCQYsGjZRKDwjGioJCBMLJAkGCgUCAS4RBwkPBUQLAwUKAwEDAwQEAyVDEiEVFAhEBwgQCwQFAgEBAQEBAQkUDjIICQcEBQIDAggHBRIIDioHBAUEAxMSDAgJAwwbMCkdISEdKRUmDQMFBgISDRITAwQFBAcJFhUECBAHBwgCAwQJBAwGMg4JDgUBAgQCBQQLEAMEBQMAAAIAYP+AA6ACwAAHAEQAMkAvQRsaCwQCAwFAAAAAAwIAA1kEAQIBAQJNBAECAgFRAAECAUUJCCckCEQJRBMQBRArACAGEBYgNhABIiYnPgE3PgE1NCcmJyYnJj8BNTYmJyY+Ajc2NzMWFx4BBwYXMBceAQcOAQcOBRUUFhcWFw4CAqz+qPT0AVj0/mBWmTUccCgEAggOBBMJBwgBAgQEAgIGDgooTCNNKBQOBAoEAQQBBAUPBwIGBwgFBAIDaVEjWm0CwPT+qPT0AVj910hADCgMAQYOIBAeIRUtIxQBAgcxFgcZGh8OMwUFMxo6EzkVAwoTGhkgCQsYFBAOEQgOBgEfISs9IQAAAAEAwP/gA0ACYABSADdANEE/PhAJBQUAAUADAQECAAIBAGYEAQAFAgAFZAACAgVPAAUFCwVCTUw4Ny4tJiQeHRIRBg4rJS4BJyYnLgE/ATY3PgM1NzI+ATc+ATU0LgMjNz4BNzYmIyIOARUeAR8BIgcUFhceAxczFhcWHwMGBw4BBw4EBwYVITQuAwLXEEQDHgoDAQEBDAYCBAQDAQIFCQMBCwMDAwIBAwIGAQFQRi9GIAEGAgMLAQsBAgUEBQECBwcDBQcDAQECBRgLBhMRExIIaQKAEhchFEgGCwEGDAQpEhMTEQUQEQ8FBQEMCwcmCwUHBAIBCQYsGjZRKDwjGioJCBMLJAkGCgUCAS4RBwkPBUQLAwUKAwEDAwQEAyVDEiEVFAgAAAAAAgDA/+ADQAJgAAsAXgDAQApNS0ocFQULBgFAS7ALUFhALgAIAQAIXAkBBwQGAAdeCgEGCwQGC2QCAQAFAQMEAANYAAEABAcBBFcACwsLC0IbS7AMUFhALQAIAQhoCQEHBAYAB14KAQYLBAYLZAIBAAUBAwQAA1gAAQAEBwEEVwALCwsLQhtALgAIAQhoCQEHBAYEBwZmCgEGCwQGC2QCAQAFAQMEAANYAAEABAcBBFcACwsLC0JZWUAUWVhEQzo5MjAqKR4dEREREREQDBQrASM1IxUjFTMVMzUzAy4BJyYnLgE/ATY3PgM1NzI+ATc+ATU0LgMjNz4BNzYmIyIOARUeAR8BIgcUFhceAxczFhcWHwMGBw4BBw4EBwYVITQuAwNAMhwyMhwyaRBEAx4KAwEBAQwGAgQEAwECBQkDAQsDAwMCAQMCBgEBUEYvRiABBgIDCwELAQIFBAUBAgcHAwUHAwEBAgUYCwYTERMSCGkCgBIXIRQB7jIyHDIy/nYGCwEGDAQpEhMTEQUQEQ8FBQEMCwcmCwUHBAIBCQYsGjZRKDwjGioJCBMLJAkGCgUCAS4RBwkPBUQLAwUKAwEDAwQEAyVDEiEVFAgAAAIAoP/AA3cCgABJAIwAXEBZYgEGB3l3EhAEAAYCQAADAgcCAwdmAAYHAAcGAGYAAgAHBgIHWQAAAAkBAAlZAAEACAUBCFkABQQEBU0ABQUEUQAEBQRFhYOAfmVjYWBPTUJALSwqKCQiChArJS4BIyIOAQcGIyImLwEmLwEmLwEuAy8BLgI1ND4CNzYnJi8BJiMiBwYjBw4CBw4BFB4BFx4BFx4BFx4BMzI+Ajc2JyYHBgcGIyInLgEnLgY2NzY3MDcyNTYzMhYfAR4BBwYXHgIfAR4BFxYXFh8BFh8BFjMyNjc2MzIeAhcWBwYDQBtnJQYMCgQwCgQKCwIlFgQBAgQGBg0QDAEKCAgCBgkHIR4QMQIdJhwkAQEBDhcPBAQECBQQI0gzLDo2NWEkFhYjIBI2KwYdJCYKFUBoNDkrGSglISMTBAMECSECAR0TDBULAi4jFSACAQoLDAEXFQsBAgMBAxYnAhwRDR8fBgoPKykjChsGBIEbOwIEAh8HCgIfGAMCAwMGBw0TDQELCgwEAwgLDgksPyE7AyQXAQEJFhgMDRYiJDMdQGE1LjAnJioCChoWQTcGaSsEAUomLy0ZLzI1PzMmGA4cFQEBEgwNAjlKHCwYCRMODgEZFwsBAwIBBBciAhgPFAQRGBoKGxYRAAADAIAAIAOAAiAAAwAGABMAPEA5EhEODQwJCAQIAwIBQAQBAQACAwECVwUBAwAAA0sFAQMDAE8AAAMAQwcHAAAHEwcTBgUAAwADEQYPKxMRIREBJSEBERcHFzcXNxc3JzcRgAMA/oD+ugKM/VrmiASeYGCeBIjmAiD+AAIA/uj4/kABrK+bBItJSYsEm6/+VAACAID/4AOAAmAAJwBVAGpAZzQyIQMEABQBAQJKAQgBThgCDAk/AQcMBUAABAACAAQCZgUDAgIBAAIBZAsKAggBCQEICWYACQwBCQxkAAYAAAQGAFkAAQAMBwEMWQAHBwsHQlFPTUtJSEZFRUQ+PCkoERIRISYQDRQrADIeARUUBwYjIiciIycjJiciByMHDgEPAT4DNTQnJicmJyY1NDYkIg4BFRQXHgIXJjUxFhUUBwYWFzMyPwI2PwEzIzY3MhcVMzIVFjMyPgE0JgGhvqNeY2WWVDcBAgECDw4REAEEBQsCTwsLBQENAgEDATVeAWrQsWc9AQMCAQIHJAIJCAYDBANlAQoJAQELCwsKAgE9WmiwZmcCQEqAS29MTxMBBAEGAgEEASMhJBMFAhYTAwEEAUNPS39qU45UWkwBBAQBAwELDAJyBgwCAQEsAQMEAwEDAQEUTYqnjgAAAAADAGD/gAOgAsAACQARABgAnrUUAQYFAUBLsApQWEA6AAEACAABCGYABgUFBl0AAgAAAQIAVwwBCAALBAgLVwAEAAMJBANXCgEJBQUJSwoBCQkFTwcBBQkFQxtAOQABAAgAAQhmAAYFBmkAAgAAAQIAVwwBCAALBAgLVwAEAAMJBANXCgEJBQUJSwoBCQkFTwcBBQkFQ1lAFgoKGBcWFRMSChEKEREREhEREREQDRYrEyEVMzUhETM1IzcRIRczNTMRAyMVJyERIYACACD9wODA4AFFgBtgIGBu/s4CAAKgwOD+QCCg/kCAgAHA/mBtbQGAAAAAAQCg/8ADdwKAAEkANkAzEhACAAMBQAACAwJoAAMAA2gAAQAEAAEEZgAAAQQATQAAAARRAAQABEVCQC0sKigkIgUQKyUuASMiDgEHBiMiJi8BJi8BJi8BLgMvAS4CNTQ+Ajc2JyYvASYjIgcGIwcOAgcOARQeARceARceARceATMyPgI3NicmA0AbZyUGDAoEMAoECgsCJRYEAQIEBgYNEAwBCggIAgYJByEeEDECHSYcJAEBAQ4XDwQEBAgUECNIMyw6NjVhJBYWIyASNisGgRs7AgQCHwcKAh8YAwIDAwYHDRMNAQsKDAQDCAsOCSw/ITsDJBcBAQkWGAwNFiIkMx1AYTUuMCcmKgIKGhZBNwYAAAAAAgCAACADgAIgAAwADwArQCgPCwoHBgUCAQgAAQFAAAEAAAFLAAEBAE8CAQABAEMAAA4NAAwADAMOKyURBRcHJwcnByc3JREBIQEDgP76iASeYGCeBIj++gLv/SEBcCAB5MebBItJSYsEm8f+HAIA/ugAAAABAID/4AOAAmAALQBBQD4iDAoDAgAmAQYDFwEBBgNABQQCAgADAAIDZgADBgADBmQAAAAGAQAGWQABAQsBQiknJSMhIB4dHRwWFBAHDysAIg4BFRQXHgIXJjUxFhUUBwYWFzMyPwI2PwEzIzY3MhcVMzIVFjMyPgE0JgJo0LFnPQEDAgECByQCCQgGAwQDZQEKCQEBCwsLCgIBPVposGZnAmBTjlRaTAEEBAEDAQsMAnIGDAIBASwBAwQDAQMBARRNiqeOAAAAAAIAYP+AA6ACwAAFAA0AbUuwClBYQCkAAQYDBgEDZgAEAwMEXQAAAAIGAAJXBwEGAQMGSwcBBgYDTwUBAwYDQxtAKAABBgMGAQNmAAQDBGkAAAACBgACVwcBBgEDBksHAQYGA08FAQMGA0NZQA4GBgYNBg0RERIRERAIFCsBIREzNSEFESEXMzUzEQKg/cDgAWD+wAFFgBtgAsD+QOAg/kCAgAHAAAAAAAcAs//hAygCZwA3AEYAWABmAHEAjwC7AQBAIZkBCwkZFBMDAAd2AQQABQEMA0wpAgIMBUB+AQUlAQ0CP0uwC1BYQFQACQgLCAkLZgAKCwELCgFmAAAHBAEAXg8BBA0HBA1kAA0DBw0DZAAMAwIDDAJmDgECAmcACAALCggLWQABBQMBTQYBBQAHAAUHWQABAQNRAAMBA0UbQFUACQgLCAkLZgAKCwELCgFmAAAHBAcABGYPAQQNBwQNZAANAwcNA2QADAMCAwwCZg4BAgJnAAgACwoIC1kAAQUDAU0GAQUABwAFB1kAAQEDUQADAQNFWUAmc3I5OLW0srGko6CfmJeUkoSDgH99fHKPc49BPzhGOUYeHREQEA4rAS4CNj8BNicuAQ4BDwEOASImJzUmPgI3NC4CBgcOBBUOAR0BHgQXFj4CNzYnJgMGLgI1NDY3NhYVFAcGJw4DFxUUHgEXFjY3PgEuAQcGJjU0Njc2HgIVFAY3BiYnJjY3NhYXFjcyPgE3NTYuBA8BIgYVFDM2HgMOARUUFxYnLgEGIg4BByMPAQYVFB4BMzY3NjIeAxcWBw4CFRQWMjY3Mz4BLgMChQcIAQEBARgdCiAgHQkKBQgGAwEBAQECAQMMFSUZGTMnIBAXFwQiLz86ISdXT0IPJEAQ6yVFMh5tTU9sQjVYHSgQCAEBDg0vUhoMAhIzPg8UEw4IDgkGFS8FCwIDAgUGCwIG9AQHBQECBxAVFhIFBgcKERAWDgYDAQEOAgsJExEODwYFAQEBEgcLBwEVAw4VGRkZCRMLAQEDDhUMAQEJARAZISIBLgEGBgYCAjIlDAkHCgUFAgIBAwQDCAcMBA4XGg4BCwsrLywbAShPFBQsRSsfDgMEEidCKmM0Df7mAhUnOSFBXwUETEFKNyv7BSAnJg0NBQ4gCB4YKRQ8NyK0AhMPEBsCAQUJDQgQGUEFAQYFEAQFAQYNtAUIBgIeLRkRBAEBAQwJFgYHCRYPFAcCEwIB/gMDAQMCAQEBBhgJDgkBBgECCxAeEzcyAgYQBw0PChAqSjcuHxQAAAYAQP+kA8ACmwAOABkAPABHAE8AcwCJQIZSAQQLZl4CDQBfOjEDBg0DQDk0AgY9CgEHCAsIBwtmEQELBAgLBGQQAg8DAAENAQANZg4BDQYBDQZkAAYGZwAMCQEIBwwIWQUBBAEBBE0FAQQEAVEDAQEEAUVRUBAPAQBtamloVlRQc1FzTUxJSENBPj0wLiIfHh0WFQ8ZEBkGBAAOAQ4SDislIiY0NjMyHgMVFA4BIyIuATU0NjIWFAYFNC4BJyYrASIOBhUUFx4BMzI3FzAXHgE+ATUnPgEAIiY0NjMyHgEVFDYyFhQGIiY0FzIXLgEjIg4DFRQWFwcUBhQeAT8BHgEzMDsCLgE1ND4BAw4QFxcQBgwKBwQLEdMKEgsXIBcXAWpEdUcGBQkdNjIsJh4VCwgXlWFBOj4BAgUEAxIsMv1UIBcXEAsSCr0hFhYhFtoGCxG0dzVhTzshPTYYAQUJClgcOyADBAMEBFCI4RchFwQICQwHChILCxIKERcXIRc4P2tCBAEKEhohJyowGR0dT2gZKgEBAQEHBkIiXgFEFyAXChILEDcXIBcXIEEBZogcM0VVLUBvJ1kBBAoDAwQ9CgoPHQ9HeEYAAAgAQP9hA8EC4gAHABAAFAAYAB0AJgAvADcAZkBjMCATAwIENiECAQI3HQwBBAABLRwCAwAsJxoXBAUDBUAAAQIAAgEAZgAAAwIAA2QIAQQGAQIBBAJXBwEDBQUDSwcBAwMFUQAFAwVFHx4VFRERKigeJh8mFRgVGBEUERQSFQkQKyUBBhUUFyEmASEWFwE+ATU0JyYnBwEWFz8BETY3JwMiBxEBLgMDFjMyNjcRBgcBDgQHFwFd/vcUGAEPBgJI/vEFBQEJCgo1RIK//m5EgL/bf0C/00pGARMQHyEilEBDJkgiBQX+pxguKSQfDL6cAQlAREpGBgEbBQb+9x9CIkuIgEDA/lp/P77E/oNEgb8ByRj+8QETBQcFA/yTFAwMAQ4FBAIvDSAmKi8ZvgAAAAAFAAX/QgP7AwAAIQA0AEAAUABgAMFADggBAgUWAQECAkAQAQE9S7ALUFhAKQoBAAADBAADWQ0IDAYEBAkHAgUCBAVZCwECAQECTQsBAgIBUQABAgFFG0uwFlBYQCINCAwGBAQJBwIFAgQFWQsBAgABAgFVAAMDAFEKAQAACgNCG0ApCgEAAAMEAANZDQgMBgQECQcCBQIEBVkLAQIBAQJNCwECAgFRAAECAUVZWUAmUlFCQSMiAQBbWVFgUmBKSEFQQlA8OzY1LSsiNCM0GhgAIQEhDg4rASIOAhUUFhcWDgQPAT4ENx4BMzI+AjU0LgEDIi4BNTQ+AzMyHgIVFA4BAiIGFRQeATI+ATU0JSIOAhUUFjMyPgI1NCYhIgYVFB4DMzI+ATQuAQIFZ72KUmlbAQgOExIQBQUIHVBGUBgaNxxnuoZPhueKdMF0K1BogkRVm29CcL5PPSoUISciFP7ODxoTDCoeDxsUDCsBsR8pBw0SFgwUIRQUIQMARHSgWGWyPBctJCEYEQUEAQYTFiQUBQVEdKBYdchz/PRTm2E6bllDJTphhUlhmlQBpycfFSMVFSMVHycKEhsPIC0MFRwQHycnHw0XEw4IFSMqIBEAAAEAV/9uA6kC0QF5AaJBjQFiAIYAdAByAHEAbgBtAGwAawBqAGkAYAAhABQAEwASABEAEAAMAAsACgAFAAQAAwACAAEAAAAbAAsAAAFHAUYBRQADAAIACwFgAV0BXAFbAVoBWQFYAUoAqACnAJ0AkACPAI4AjQCMABAADQACAJsAmgCZAJQAkwCSAAYAAQANAS4BLQEqALUAtACzAAYACQABAScBJgElASQBIwEiASEBIAEfAR4BHQEcARsBGgEZARgBFgEVARQBEwESAREBEAEPAQ4BDQEMAO0AzADLAMkAyADHAMYAxADDAMIAwQDAAL8AvgC9ALwAKwAFAAkBCgDoAOcA0wAEAAMABQAHAEABRACHAAIACwCcAJEAAgANAQsAAQAFAAMAP0BFDAELAAIACwJmAAINAAINZAANAQANAWQAAQkAAQlkCgEJBQAJBWQEAQMFBwUDB2YIAQcHZwAACwUASwAAAAVPBgEFAAVDQR4BVwFUAUMBQgFBAT8BLAErASkBKAD9APoA+AD3AOwA6wDqAOkA2wDaANkA2ACmAKUAmACVADkANwAOAA4rEy8CNT8FNT8HNT8iOwEfMRUHFQ8DHQEfERUPDSsCLwwjDwwfDRUXBx0BBxUPDyMHIy8NIycjJw8JIw8BKwIvFDU3NTc9AT8PMz8BMzUvESsBNSMPARUPDSsCLwg1PxfRAgEBAgEDAgQFAQECAgICAgMBAgMEAgMDBAQEBQYDAwcHBwkJCQsICAkKCQsLCwsMCw0NGQ0nDQ0ODA0NDQ0MDAwLCwkFBAkIBwcGBwUFBgQHBAMDAgICBAMCAQIBAgUDAgQDAgICAQEBAQMCAgMMCQQGBQYGBwQDAwMCAwIDAQEBAgQBAgICAwIDAgQDAgMDBAICAwIEBAQDBAUFAQECAgIEBQcGBgcHAwUKAQEFFgkJCQgEAgMDAQIBAQICBAMDAwYGBwgJBAQKCgsLDAslDgwNDQ4ODQ0ODQcGBAQLDAcIBQcKCwcGEAgIDAgICAonFhYLCwoKCgkJCAgGBwIDAgICAQIBAQEBAgEDAgEEAwQCBQMFBQUGBgcHAgEBBAoGCAcICQQEBAMFAwQDAwIBAQEDAQEBBQIEAwUEBQUGBgUHBwECAQICAgIBAQIBAQECAQMDAwMEBQUFBwcHBgcIBAUGBwsIAUsFBwQOBgYHBwgHBQUHBwkDBAQCEwoLDQ4HCQcICggJCQUECgoJCgkKCgcGBwUFBQUEAwQDAgIEAQIBAwMDBAQFBgUHBwYEAwcIBwgICAkICQgRCQgJCAcJDw0MChACAwgFBgYHCAgIBAYEBAYFCgUGAgEFEQ0ICgoLDA4JCAkICQgPEA4TBwwLCgQEBAQCBAMCAQIDAQEDAgQGBgUGCgsBAgMDCw8RCQoKCgUFCgEBAwsFBQcGAwQEBAQEBAQDAwMDAgMFBQMCBQMEAwQBAQMCAgICAQECAQIEAgQFBAICAgEBAQUEBQYDAwYCAgMBAQICAgECAwIEAwQEBQIDAgMDAwYDAwMEBAMHBAUEBQIDBQICAwECAgICAQEBAQECAggFBwcKCgYGBwcHCAkJCAsBAQICAgMIBQQFBgQFBQMEAgIDAQYEBAUFCwcWEAgJCQgKCgkKCQsJCwkKCAgIBAUGBQoGAAAABABeACADogIgABMAKAAsADEAN0A0MTAvLiwrKikIAgMBQAQBAAADAgADWQACAQECTQACAgFRAAECAUUCACYjGRYLCAATAhMFDisBISIOARURFBYzITI2NRE0LgMTFAYjISIuBTURNDYzBTIWFRcVFxEHESc1NwJf/kYSIRQrHAG6HCcHDBAUFRMO/kYECAcHBQQCFg8Bug4TXsQigIACIBEeEv6IHCsqHQF4CxQQDAb+Rw8WAgQFBwcIBAF4DRIBEQ1pq2sBgDz+90OEQwAAAAYAgAAAA4ACQAAfAEkAUQBZAF0AZQDfS7AoUFhAUgAPCw4HD14AEA4SDhASZgABCQEIAwEIWQADAAcDSwQCEwMACgEHCwAHWQALAA4QCw5ZABIAEQ0SEVkADQAMBg0MWQAGBQUGTQAGBgVSAAUGBUYbQFMADwsOCw8OZgAQDhIOEBJmAAEJAQgDAQhZAAMABwNLBAITAwAKAQcLAAdZAAsADhALDlkAEgARDRIRWQANAAwGDQxZAAYFBQZNAAYGBVIABQYFRllALAEAZWRhYF1cW1pXVlNST05LSkZEOjg3Ni8tJiMaFxIQDw4NDAgFAB8BHxQOKwEjJicuASsBIgYHBgcjNSMVIyIGFREUFjMhMjY1ETQmExQOASMhIiY1ETQ+AjsBNz4BNzY/ATMwOwEeAhceAx8BMzIeARUkIgYUFjI2NAYiJjQ2MhYUNzMVIwQUFjI2NCYiA0N7AwYwJBCxECMuCAQbRBsbKCkaAoAaIyMDBw4I/YANFgYJDQeICQQPAyYNDLEBAQEDBQMFDxgSCgmKCQ0H/ueOZGSOZHF0UVF0UTUiIv8AJTYlJTYB4AMHNSEfNAgFICAkGf6gGygoGwFgGiP+YwoPChYNAWAGCwcFBgUTBCoMCAECAwMFERwUCwYHDggCZI5kZI7SUXRRUXTgImk2JSU2JQADAQD/YAMAAuAACwAXADEATUBKDAsCBQMCAwUCZgAAAAMFAANZAAIAAQQCAVkABAoBBgcEBlkJAQcICAdLCQEHBwhPAAgHCEMYGBgxGDEuLSwrERETEycVFxUQDRcrACIGFREUFjI2NRE0AxQGIiY1ETQ2MhYVFxUUDgEjIiY9ASMVFBYXFSMVITUjNT4BPQECQYJdXYJdIEpoSkpoSmA7ZjtagiaLZZIBQopjhwLgYkX+y0ViYkUBNUX+hjhPTzgBNThPTziZnzxkO4Bbn59lkwd+JCR+B5NlnwAABAD0/2ADDALgABIAJAAsADkARkBDFhQTDAoGBgMEAUAYCAIDPQAAAAECAAFZAAIABQQCBVkGAQQDAwRNBgEEBANRAAMEA0UuLTQzLTkuOSopJiUhIBAHDysAIgYVFB8CGwE3Nj8BPgI1NAcVBg8BCwEmJy4BNTQ2MhYVFCYiBhQWMjY0ByImNTQ+ATIeARQOAQJv3p0TAQP19QEBAQEGCQQyAQEC1tgBAQgKisSKt2pLS2pLgCc3GSwyLBkZLALgm24zMgMG/fcCCQIDAQMQISIRb8gBAQME/jkBywMBFi4XYYiIYS63S2pLS2qTNycZLBkZLDIsGQACAQD/YAMAAuAACwAlAEFAPgoJAgMBAAEDAGYAAQAAAgEAWQACCAEEBQIEWQcBBQYGBUsHAQUFBk8ABgUGQwwMDCUMJRERERETEykVEAsXKyQyNjURNCYiBhURFCUVFA4BIyImPQEjFRQWFxUjFSE1IzU+AT0BAb+CXV2CXQF8O2Y7WoImi2WSAUKKY4ddYkUBNUViYkX+y0XhnzxkO4Bbn59lkwd+JCR+B5NlnwAAAAIA9P9gAwwC4AASAB8AK0AoDAoIBgQBPQMBAQIBaQAAAgIATQAAAAJRAAIAAkUUExoZEx8UHxAEDysAIgYVFB8CGwE3Nj8BPgI1NAUiJjU0PgEyHgEUDgECb96dEwED9fUBAQEBBgkE/vQnNxksMiwZGSwC4JtuMzIDBv33AgkCAwEDECEiEW/DNycZLBkZLDIsGQAFAQD/YAMwAuAAAwAKABUAHQA1AF9AXAcBAgEcGxQGBAACIQEEACABAwQEQAUBAgEAAQIAZgABCgEABAEAWQAEBgEDBwQDWQkBBwgIB0sJAQcHCE8ACAcIQwUENTQzMjEwLy4rKiQiHx4YFxAOBAoFCgsOKwE3AQclMjcDFRQWNxE0JiMiDgEHATY3NSMVFAcXNgc2NycGIyIuAz0BIxUUFhcVIxUhNSMBERwCAxz+7CUg413fXEIZLyYPARIJYiIiFDDqMi0TLTMjQzYpFyaLZZIBQooC0BD8kBD9EQGB60VipwE1RWIQHRP+LRoan59ANSJDqwMXIBYWKTVDI6CfZZMHfiQkAAADAED/oAPAAqAABwAXADoAkEALMQEBBzowAgMFAkBLsBhQWEAwAAYBAAEGAGYABAAFBQReCAECAAcBAgdZAAEAAAQBAFkABQMDBU0ABQUDUgADBQNGG0AxAAYBAAEGAGYABAAFAAQFZggBAgAHAQIHWQABAAAEAQBZAAUDAwVNAAUFA1IAAwUDRllAFAoINjMuLCUjGxkSDwgXChcTEAkQKwAyNjQmIgYUASEiBhURFBYzITI2NRE0JgMmIyIGDwEOBCMiJy4CLwEmIyIHAxE+ATMhMh4BFRMCuFA4OFA4AQj88BchIRcDEBchIeULDwcLByYCBAUEBQMNCQEDAwFsDRQUDv0CDgoCzAYMBwEBYDhQODhQAQghGP1yGCEhGAKOGCH+dQwGBSACAgMBAQgBAgQBdA8P/s8CCQoNBgsH/fcAAAAIAFb/PQO3AskAKQA2AFUAYwBxAIAAkQCdALJAr3IBBwxNAQYHcAELCTg3IBMEAgVMRUQZBAACKgEBAAZAVVROAwQMPgAGBwkHBglmAAUOAg4FAmYAAgAOAgBkAAABDgABZAABAWcADAALBAwLWQAJAAoDCQpZAAQAAw0EA1kSAQ0AEAgNEFkRAQcACA8HCFkADw4OD00ADw8OUQAODw5FgoFXVpiWk5KKiIGRgpF/fnd2bWxlZF1cVmNXY1FQSUhAPjIwIyIdHBcVEw4rAScPAScmDwEOARURFB4DNj8BFxYzMj8BFhcWMjc2NxcWMjY3NjURNAEuATU0PgEzMhYVFAY3Jz4BNTQuASMiBhUUFwcnLgEjBg8BETcXFjI2PwEXBSIGFREUFjI2NRE0LgEXIg4CHQEUFjI2PQEmNxUUHgEyPgE9ATQuASMGAyIOAhUUFjMyPgI1NC4BBiImNDYzMh4CFRQDqbcL28kHB9MGBgIEBAYGA83KAwQEAx4vQwUUBWQsTgMGBQIH/vw2XCdDKD1WXakzBgUxVDJMayYWyQIDAgQDusHKAgUFAtyi/aoICwsPCwUIzAQHBQMLDwsDxAUICgkFBQkFDzAOGRILKBwOGRMLEx8GGhMTDQcLCQUCnyoBZFQDA1ICCQb9vAMGBQMCAQFQVQECDV5mCAiXbhIBAgIGCAJFDvzVVbUqJ0QnVjwqtZoMERwMMVUxbEspUgpUAQEBAUgCHExVAQEBZCU1Cwf+kAgLCwgBcAUIBUcDBQcDjQcLCweND1K6BQkEBAkFugUIBQP+nQsSGQ4cKAoTGQ4SIBJkExoTBQkMBg0AAAAAAwCg/+ADgAKgAAkAEgAjAEFAPh4SEQ0MBQIGDgkIAwQBAkAABQYFaAAGAgZoAAQBAAEEAGYAAgABBAIBVwAAAANPAAMDCwNCEicYEREREAcVKykBESE3IREhEQcFJwEnARUzASc3Jy4CIyIPATMfATc+ATU0AuD94AGgIP4gAmAg/vsTAVYW/phAAWkXRhkCBwcECwgZARYqGAQEAgAg/cABwCCYEwFXF/6YQQFoF0AZAwMCCBgXKhkECgUMAAAABgDg/6ADIAKgACAALwBCAEYASgBOALhAC0A5ODAeEAYICwFAS7AUUFhAQQAKAwwDCl4OAQwNAwwNZA8BDQsDDQtkAAsICAtcAAEABgABBlkHAgIACQUCAwoAA1cACAQECE0ACAgEUgAECARGG0BDAAoDDAMKDGYOAQwNAwwNZA8BDQsDDQtkAAsIAwsIZAABAAYAAQZZBwICAAkFAgMKAANXAAgEBAhNAAgIBFIABAgERllAGU5NTEtKSUhHRkVEQ0JBNBY1GjMRFTMQEBcrASM1NCYrASIOAh0BIxUzExQWMyEyPgc1EzMlND4COwEyHgMdASMBFRQGIyEiJi8BLgQ9AQMhBzMRIxMjAzMDIxMzAyCgIhmLCxYQCaAqLyMYARoFCwkJCAYFBAIuKf59BQgLBYsFCQcGA8YBDhEM/uYDBgMEAwQDAgEwAbPoHByOHRYezh0VHgI9KBkiCRAWDCgd/bsZIgIDBgYICAoKBgJFRQYLCAUDBgcJBSj9nwENEQECAgIEBQUGAwECRED+HgHi/h4B4v4eAAAAAAIAwP+gA0AC4AALABQAP0A8FBEQDw4NDAcDPgAGAAEABgFmBwUCAwIBAAYDAFcAAQQEAUsAAQEEUAAEAQREAAATEgALAAsREREREQgTKwEVMxEhETM1IREhESUnNxcHJxEjEQJA4P3A4P8AAoD+QheVlRduIAIAIP3gAiAg/aACYDQXlZUXbf4aAeYAAgDA/6ADQAKgAAsAFAA+QDsUERAPDg0MBwEAAUAABgMGaAcFAgMCAQABAwBXAAEEBAFLAAEBBFAABAEERAAAExIACwALEREREREIEysBFTMRIREzNSERIREFBxc3JwcRIxECQOD9wOD/AAKA/kIXlZUXbiACACD94AIgIP2gAmDZF5WVF20B5v4aAAADAFH/cQOvAsAADgAdACkAJ0AkKSgnJiUkIyIhIB8eDAE9AAABAQBNAAAAAVEAAQABRRkYEgIPKwEuASIGBw4BHgI+AiYDDgEuAjY3PgEyFhcWEAMHJwcXBxc3FzcnNwMmPJuemzxQOTmg1tagOTloScXFkjQ0STePkI83b9WoqBioqBioqBipqQJGPD4+PFDW1qA5OaDW1v4cSTQ0ksXFSTY5OTZw/sQBXqinF6ioF6eoGKioAAAAAgB+AAADgAJgABMAIgBBQD4WCgIDBBsXEhAJBQABAkAVCwICPgAAAQBpAAIFAQQDAgRZAAMBAQNNAAMDAVEAAQMBRRQUFCIUIhsUFhAGEis7ATc2Nz4CNxUJARUGBwYXMBUwATUNATUiBgcmPgWAFSZKThwrQCYBgP6At2hjAgGgASj+2IyvRQEBDBg4T4M+dyMMDwwBoAEAAQChCGhkpQYBYIHBwoJcdwcZRkBOOCcAAAAAAgCAAAADgAJgAB8AKgA6QDclDAIDBCQgDQAEAgECQCYLAgA+AAIBAmkAAAAEAwAEWQADAQEDTQADAwFRAAEDAUUUHBYUGQUTKyUwNTQuAicuASc1CQE1HgEXHgEfATMwPQcnLgEjFS0BFSAXFgOAAxAsIzWLXv6AAYA3TCorSiMmFSBFr4z+2AEoAQRZI0AGGipRUSM1NwSh/wD/AKACExMUTjg+BwcIBwcIBggTd1yCwsGBtEkAAAMAYP+AA6ACwAAVAB0ALgBdQFoNAQIICwEEAQJADAEBAT8JAQQBAAEEAGYABQAIAgUIWQACAAEEAgFZAAAAAwcAA1kKAQcGBgdNCgEHBwZRAAYHBkUfHgAAJyYeLh8uGxoXFgAVABUTFBUiCxIrARQGIyIuATQ+ATMVNycVIgYUFjI2NQIgBhAWIDYQASIuATU0PgIyHgIUDgIC2H5aO2M6OmM7wMBqlpbUllT+qPT0AVj0/mBnsGY8Zo6ajmY8PGaOASBafjpjdmM6b2+AWJbUlpVrAaD0/qj09AFY/ddmsGdNjmY8PGaOmo5mPAAAAAIAQP+AA8ACwAAJABMALkArEAICAD4TDQwLCgkIBwYFCgI9AQEAAgIASwEBAAACTwMBAgACQxIaEhAEEisBIQsBIQUDJQUDFycHNychNxchBwPA/qlpaf6pARhtARUBFW4u1dVV2AEGUlIBBtgBggE+/sLE/sLFxQE+6JiY9ZX395UAAAMAYP+AA6ACwAAHABoAJgBHQEQAAAADBAADWQkBBQgBBgcFBlcABAAHAgQHVwoBAgEBAk0KAQICAVEAAQIBRQkIJiUkIyIhIB8eHRwbEA4IGgkaExALECsAIAYQFiA2EAEiLgE0PgEzMh4EFRQOAgMjFSMVMxUzNTM1IwKs/qj09AFY9P5gZ7BmZrBnNGNTRzEbPGaOPSHv7yHw8ALA9P6o9PQBWP3XZrDOsGYbMUdTYzRNjmY8An3wIe/vIQAAAAMAYP+AA6ACwAAHABgAHAA8QDkABAMFAwQFZgAFAgMFAmQAAAADBAADWQYBAgEBAk0GAQICAVIAAQIBRgkIHBsaGREQCBgJGBMQBxArACAGEBYgNhABIi4BNTQ+AjIeAhQOAgEhFSECrP6o9PQBWPT+YGewZjxmjpqOZjw8Zo7+swIA/gACwPT+qPT0AVj912awZ02OZjw8Zo6ajmY8AY0iAAAAAgBg/4ADoALAAAcAGAApQCYAAAADAgADWQQBAgEBAk0EAQICAVEAAQIBRQkIERAIGAkYExAFECsAIAYQFiA2EAEiLgE1ND4CMh4CFA4CAqz+qPT0AVj0/mBnsGY8Zo6ajmY8PGaOAsD0/qj09AFY/ddmsGdNjmY8PGaOmo5mPAACAD7/XgPCAuIAEQArACpAJwQBAAADAgADWQACAQECTQACAgFRAAECAUUCACYjGRYMCQARAhEFDisBISIOAhURFBYzITI2NRE0JhMUDgIjISIuBTURNDYzITIeAxUDW/1KFSYcEDwrArYrPDwPCA4TCv08BgsKCQcFAx4VAsQIEAwKBQLiEBwmFf1KKzw8KwK2Kzz83AoTDggDBQcJCgsGAsQVHgUKDBAIAAAAAgBR/3EDrwLAAA4AGgAZQBYaGRgXFhUUExIREA8MAD0AAABfEgEPKwEuASIGBw4BHgI+AiYDBycHJzcnNxc3FwcDJjybnps8UDk5oNbWoDk5thioqBioqBioqBipAkY8Pj48UNbWoDk5oNbW/oIYqKcXqKgXp6gYqAAAAAIAYP+AA6ACwAAHABwAQ0BADgEDABABBgQCQA8BBAE/AAYEBQQGBWYAAAADBAADWQAEAAUCBAVZAAIBAQJNAAICAVEAAQIBRRIVFBMTExAHFSsAIAYQFiA2EAAiJjQ2MzUXBzUiDgEVFBYyNjUzFAKs/qj09AFY9P7K1JaWasDAO2M6f7N+KALA9P6o9PQBWP5UltSWWIBvbzpjO1l/flpqAAAAAQBA/4ADwALAAAkAGEAVAgEAPgkIBwYFBQA9AQEAAF8SEAIQKwEhCwEhBQMlBQMDwP6paWn+qQEYbQEVARVuAYIBPv7CxP7CxcUBPgAAAAACAGD/gAOgAsAABwATADZAMwcBBQYCBgUCZgQBAgMGAgNkAAAABgUABlcAAwEBA0sAAwMBUgABAwFGERERERETExAIFisAIAYQFiA2EAcjFSM1IzUzNTMVMwKs/qj09AFY9KDwIu7uIvACwPT+qPT0AVi+7u4i8PAAAAAAAgBg/4ADoALAAAcACwAhQB4AAAADAgADVwACAQECSwACAgFRAAECAUURExMQBBIrACAGEBYgNhAHITUhAqz+qPT0AVj0oP4AAgACwPT+qPT0AVi+IgAAAAMANP9TA80C7AAHABgAKgA5QDYAAQQABAEAZgAABQQABWQAAwYBBAEDBFkABQICBU0ABQUCUgACBQJGGhkjIRkqGioXFRMSBxIrABQWMjY0JiIFFA4CIi4CND4CMh4CASIOAhUUHgEzMj4CNTQuAQEufK57e64CI0h8qryre0lJe6u8qnxI/jRRlGtAa7htUZRrP2u4AXeve3uve9Ndq3tJSXuru6t7SUl7qwEyQGqUUmy4az9rlFFtuGsAAgBg/4ADoALAAAcAEgAnQCQSERAPDgUCAAFAAAACAGgAAgEBAk0AAgIBUgABAgFGJBMQAxErACAGEBYgNhABBiMiJi8BNxc3FwKs/qj09AFY9P4gCQkECgRwJF76IwLA9P6o9PQBWP7BCQUEcCNe+yQAAAACAD7/XgPCAuIAFAAcACpAJxwbGhkYFgYBAAFAAgEAAQEATQIBAAABUQABAAFFAgAKBwAUAhQDDisBISIGFREUFjMhMjY1ETQuBQEnByc3FwEXA1v9Sis8PCsCtis8BQsOEhQX/kQFBcogrwFjIALiPCv9Sis8PCsCtgwXFREOCwX9bwUFyiCvAWMgAAEBQABgAsAB4AALAAazCAABJisBBycHFwcXNxc3JzcCqKioGKioGKioGKmpAeCpqBeoqBenqBepqAAAAAEBAAAgAwACeAAUADlANggBBAIBQAcBAgE/BgEBPgAEAgMCBANmAAEAAgQBAlkAAwAAA00AAwMAUQAAAwBFEhUUExAFEyskIiY0NjM1Fwc1Ig4BFRQWMjY1MxQCatSWlmrAwDtjOn+zfiggltSWWIBvbzpjO1l/flpqAAABAID/oAQAAqAAJgA4QDUbGgoJCAcGBQQJAgEBQAQBAAABAgABWQACAwMCTQACAgNRAAMCA0UBAB8dFxUQDgAmASYFDisBMh4BFTcXByc3FzQuAiMiDgEUHgEzMj4BNxcOASMiLgE1ND4CAgBosWduEo2FEmY5YIRJYaVgYKVhTYtjGBknyH1osWc9Z44CoGaxaGkSiIgSaUmEYDhgpcKlYD5uRwd0kmexaE6OZz0AAAIAQP+AA8ACwAAJAA8AKkAnCgcCAD4PDg0EAwIBAAgCPQEBAAICAEsBAQAAAk8AAgACQxISFQMRKyUDJQUDJSELASElFyEHFycBWG0BFQEVbQEY/qlpaf6pAcBSAQbYVdW+/sLFxQE+xAE+/sLU9pX1lwAAAgAA/yAEAAMgABQAKwA8QDkABQECAQUCZgACBAECBGQABAcBAwQDVQABAQBRBgEAAAoBQhYVAQAmJSEfFSsWKw8OCggAFAEUCA4rASIOAgc+AjMyEhUUFjI2NTQuAQMyPgM3DgMjIgI1NCYiBhUUHgECAGe7iVIDA3C+b6z0OFA4ieyLUpt8XzYCAkRvmFOs9DhQOInsAyBPhrlmd8l0/vq6KDg4KIvsifwAMl16mVJZonRFAQa6KDg4KIvsiQAADAAl/0QD2wL6AA8AHQAuADwATgBfAHAAgACVAKcAtADDAG1AapWBcAMBAE49AgYBLh4CBQa1AQkKlgECCQVAAAoFCQUKCWYACQIFCQJkCwEAAAEGAAFZCAEGBwEFCgYFWQQBAgMDAk0EAQICA1EAAwIDRQEAuLeYlzs4NDErKCMgHRwXFhEQCgkADwEPDA4rATIeAx0BFAYiJj0BNDYTMhYdARQGIiY9ATQ2MwEUBisBIi4BNTQ2OwEyHgEVIRQGKwEiJjU0NjsBMhYlFhQGDwEGJicmNj8BPgEeARcBFgYPAQ4BLgEnJjY/ATYWFwEeAQ8BDgEnLgE/AT4CFhcBHgEPAQ4BJy4BNj8BPgEXAz4BHgEfARYGBwYmLwEuAT4DNwE2MhYfARYGBw4BLgEvASY2NwE+AR8BHgEOAS8BLgEBPgEyHwEeAQ4BLwEuATcCAAUJBwYDEhgSEgwMEhIYEhIMAdsSDH4IDggSDH4IDgj9BBIMfgwSEgx+DBICvAQIB20KGAcGBwptBgwKCgP9agYGC20FDAsJAwcHC2wLGAYB6AsGBj8GGAoLBwc/AwkLDAX+ggsGBj8GGAsHCAEDPwcYCl0GDAsJAz8GBgsKGAc/AgIBAgMGAwF/Bw8OBD8GBgsFDAsJAz8HBwv91AYYCm0LBgwYC2wLBwKcBQ4PB20LBgwYC20KBwYC+gMFCAkFfQ0REQ19DRH9BBENfgwSEgx+DREBIQwRCA0IDREIDQkMEREMDRER4QgPDgQ/BgYLCxgGPwMBAwcF/oILGAY/AwEDBwULGAY/BgcKAiwGGAttCwYGBhgLbQUHAwED/WoGGAttCwYGBA4QB20LBgYClgMBAwcFbQsYBgYGC20DCAgHBwYC/WoECAdtCxgGAwEDBwVtCxgGAegLBgY/BhgWBgY/Bhj+jQcIBD8GGBYGBj8GGAsAAgCB/6ADgQKgAA8AIAAtQCoOAQIDAgFADwACAT0AAAACAwACWQADAQEDTQADAwFRAAEDAUUoGCMmBBIrBSc2NTQuASMiBhQWMzI3FwEuATU0NjIWFRQOBCMiA4HjQ1KMUn6ysn5rVOL9niYpn+GgEyM0PUUkcTHiVGtSjVGy/LNE4wEPJmQ2caCfcSVFPTQjEwAAAAEBAAAgAwACIAALACVAIgAEAwEESwUBAwIBAAEDAFcABAQBTwABBAFDEREREREQBhQrASMVIzUjNTM1MxUzAwDwIu7uIvABDu7uIvDwAAAAAQFA/+ACwAJgAAUABrMDAQEmKwE3CQEnAQFAQQE//sFBAP8CH0H+wP7AQQD/AAAAAQFA/+ACwAJgAAUABrMDAQEmKwEnCQE3AwLAQf7BAT9B/wIfQf7A/sBBAP8AAAAAAQEsAIQCywG9AAoAEkAPCgkIBwYFAD4AAABfIQEPKyUGIyImLwE3FzcXAcAJCQQKBHAkXvojjQkFBHAjXvskAAQAgP+gA4ACoAAIABEAGwAfAExASR0cGxoYFxYTERAPCAENBAcBQAABBwE/GRICBj4ABgAHBAYHVwAEAAEDBAFXBQEDAAADSwUBAwMATwIBAAMAQxkWERESERESCBYrCQERMxEzETMRAyMRIREjESUFAQc1IxUHFQkBNSUHNTMCAP7A4MDgIKD/AKABIAEg/uDAgEABgAGA/aBAQAJA/wD+YAEA/wABoP6AAQD/AAFx5uYBb5pawDMpATP+zSmAM4YAAAADAGD/gAOgAsAAGQAhACUAPkA7IgEEACUBAQQCQAAEAAEABAFmAAIFAQAEAgBZAAEDAwFNAAEBA1EAAwEDRQEAJCMfHhsaEA4AGQEZBg4rATIeARceARQGBw4EIyIuAScuATQ+AyAGEBYgNhAnBSERAgAzYVckNjo6NhYxNTk7HzNhVyQ2Ojpti/n+qPT0AVj04P5BAP8CnxoyJDeLmos3FSQbEwkaMiQ3i5qMbDoh9P6o9PQBWBTA/wAAAAQAgP+gA4ACoAASAB4ApgE3AW5LsCZQWEBhAAcAHQUHHVkJAQUfGwIaBgUaWQgBBh4BHAAGHFkhAQAAAwQAA1kKIgIEIAEZEgQZWRgBEhEBCwISC1kAAgABFAIBWRYBFA8BDRMUDVkAFQAOFQ5VFwETEwxREAEMDAsMQhtAZwAHAB0FBx1ZCQEFHxsCGgYFGlkIAQYeARwABhxZIQEAAAMEAANZCiICBCABGRIEGVkYARIRAQsCEgtZAAIAARQCAVkWARQPAQ0TFA1ZFwETEAEMFRMMWQAVDg4VTQAVFQ5RAA4VDkVZQUwAIQAfAAEAAAE2ATMBIwEiAR4BHAEQAQ0BBgEEAP8A/QD8APsA7wDsAOcA5ADZANcA0wDRAMsAyADBAL8AvAC6AKwAqQCfAJwAkgCRAI4AjACHAIQAfwB9AHkAdwBqAGcAWgBXAEwASgBGAEQAPAA5ADQAMgAtACsAHwCmACEApgAaABkAFAATAA0ADAAAABIAAQASACMADisBIg4CBwYVFB4BFxYyNjU0JyYCIiY1ND4BMh4BFRQ3IyImNTQ/ATY0LwEmIyIPAQ4CIyImPQE0JisBIgYdARQOAyMiJi8BJiMiDwEGFB8BFhUUDgErASIOAg8BDgMdARQWOwEyHgEVFA4BDwEGFB8BFjMyPwE+ATMyFh0BFBY7ATI2PQE0NjMyHwEWMj8BNjQvASY1NDY7ATI2PQI0LgEXFRQrASIHDgIVFB4BHwEWDwEGIyIvASYjIgYdARQOAisBIiY9ATQnJiMiBg8BBiMiLwEmND8BNjU0JyYrASImPQE0NjsBMjc2NTQmLwEmND8BNjMwMzIeAR8BFjMyPgE3Nj0BNDsBMh4BHQEUHwEeBDMyPwE+ATIWHwEeARUUDwEGFRQeARcWOwEyFQICFCUiIA04DRkSOJ9xOTgNhV0qSldKK68eExsPFA4OLQ4VFQ4TBAsNBhMdHBQ8FR0FCAwOCAkRBxMOFRUOLQ4OEw8MFQwfBAkICAMGAwQDAh4UHwwVDAMHBRMODi0NFhQPEwYRChMcHRQ9FB4bExQOEw4qDi0ODhQPGxMeFBsMFgIPHiAXBwoGBgsIEw0NLAUICAQTGCEfLwMFBgQ8BwsXGB8QHgsSBQgIBC0FBRIaFxYhHwcLCwcfIBcWDQwSBQUsBQgDAgMDARMXIQsTEgcYET0ECAQYCAQJCQoKBiEYEgIHBwcCLQIDBRMZBQoIFiEeDwHgBw8VDThQGjAsEjhwUE85OP6gXkIrSisrSitCkhsTFA0TDykOLA4OEgUHBBsTHhQeHhQfBw4LCAUIBxMODiwOKQ8SDhQMFgwCAwQDBgMHCAkFPBUdDBYMBwwKBRIPKQ4sDg4TBwgbEx4VHR0VHhMbEBMODi0OKQ8TDRQTHBwUHx4OFw1QHhAYBxIUCwoVEgcTDAwtBQUSGi0hHgQHBAMKCB4gFxcNDBMFBS0FDgUSGCEgFxcLBj0HCxcXIBAeCxIFDgUtBAECARMZBQoHFyAfEgUIBR8fGAYDBQQDARkSAwICAi0CBgQHBRMXIQsTEQgXEgAAAwDA/+ADQAJgAAMABgAJAAq3CAcGBQMCAyYrEx8BCQIDEwEnwOlzAST+iAE45uL+tqYBLWfmAoD+bwFM/g8B9f7GSQAEAGD/gAOgAsAABwARABkAKgBRQE4ABwAKAQcKWQABAAACAQBZAAIAAwQCA1cLBgIEAAUJBAVXDAEJCAgJTQwBCQkIUQAICQhFGxoICCMiGiobKhcWExIIEQgREREREhMSDRQrABQWMjY0JiITESMVMxUjFTM1EiAGEBYgNhABIi4BNTQ+AjIeAhQOAgHPFyIXFyI6YCAggGz+qPT0AVj0/mBnsGY8Zo6ajmY8PGaOAdkiFxciF/6AAQAQ8BAQAlD0/qj09AFY/ddmsGdNjmY8PGaOmo5mPAAEAGD/gAOgAsAABwAYADMAQABeQFsABQYHBgUHZgAHCAYHCGQAAAADBAADWQsBBAAGBQQGWQwBCAAJAggJWQoBAgEBAk0KAQICAVEAAQIBRTU0GhkJCDk4NEA1QCsqIR8eHRkzGjMREAgYCRgTEA0QKwAgBhAWIDYQASIuATU0PgIyHgIUDgIDIg4BFTMmMzIWFRQGBw4CBzM+ATc+ATU0JgMiBhQWMjY1NC4DAqz+qPT0AVj0/mBnsGY8Zo6ajmY8PGaORis8ICYCYSQyFRIXGQsBJgENIBoaRjEPExQcFAQGCAsCwPT+qPT0AVj912awZ02OZjw8Zo6ajmY8AlkbOCldLSMWJREVJikdKiEfGC4fMjv+ixMcFBQOBQsIBgMAAAAABQDA/4ADQALAAAsAEwAXACkAMQBYQFUnIAIJCgFAAAAABAEABFkFDAMDAQAHCAEHVwAIAAsKCAtZAAoACQYKCVkABgICBksABgYCTwACBgJDAAAvLisqJCMbGhcWFRQTEg8OAAsACxETEw0RKwE1NCYiBh0BIxEhESU0NjIWHQEhASERIQc0JiIGFRQWFxUUFjI2PQE+AQYiJjQ2MhYUAtB6rHpwAoD+EGeSZ/6gAdD9wAJA4CU2JRsVCQ4JFRszGhMTGhMBYJBWenpWkP4gAeCQSWdnSZD+QAGgoBslJRsWIwVSBwkJB1IFIwoTGhMTGgAAAAYAwQDgA0ABYAAHAA8AHgAnAC8ANwBFQEIKDQYDAggMBAMAAQIAWQkFAgEDAwFNCQUCAQEDUQsHAgMBA0UgHxEQNTQxMC0sKSgkIx8nICcYFhAeER4TExMQDhIrADIWFAYiJjQ2IgYUFjI2NCUyHgEVFAYjIi4CNTQ2NyIGFBYyNjQmBDIWFAYiJjQ2IgYUFjI2NAHxHhUVHhU/NiUlNiX+wQoQChUPBw4JBhUPGyUlNSYmAdYeFRUeFT82JSU2JQFEFR4VFR4xJTYlJTYJChAKDxUGCQ4HDxUcJTYlJTYlHBUeFRUeMSU2JSU2AAAAAAIBAP/gAwACYAAwAEsBIUuwC1BYQB4vFwIJA0s+AgoBPQEFCDEBBwUtKgIGBwVAGwEHAT8bS7AMUFhAHi8XAgkDSz4CCgI9AQUIMQEHBS0qAgYHBUAbAQcBPxtAHi8XAgkDSz4CCgE9AQUIMQEHBS0qAgYHBUAbAQcBP1lZS7ALUFhALwAACQEJAAFmAAMACQADCVkCAQEACggBClkACAAFBwgFWQAHAAYEBwZZAAQECwRCG0uwDFBYQC8BAQAJAgkAAmYAAwAJAAMJWQACAAoIAgpZAAgABQcIBVkABwAGBAcGWQAEBAsEQhtALwAACQEJAAFmAAMACQADCVkCAQEACggBClkACAAFBwgFWQAHAAYEBwZZAAQECwRCWVlAD0pIQkAkLDQjFikxEhALFysBIg4EIyIuAS8BJicuAiMiDgEPARkBMxE+ATMyHgEXFjMyPgM3PgE3ETUGAwYjIicuAiMiDgEHET4BMzIXHgQzMjcC4AISCBEMDwcOGh4JGxIHHCEzFipAEgUHIA0zKBMqNQ5aMQgREgsUAwoPBwwUNxYuVw03LRUYKhsLDTMoLVMGJxIgHA4XOAJAAwEBAQECBQIGBAEGBwYLCAMF/rf+5AEfBQgIDwMTAQIBAgEBAgEBOiEC/sMHEgMPCQQFAwETBQgSAQkDBgIHAAACAID/oAOAAqAACAASADVAMhIRDw4NCggBAAkBAwFAEAkCAz4AAQMAAwEAZgADAQADSwADAwBPAgEAAwBDFBEREgQSKwkBETMRMxEzEQEHNSMVBxUJATUCAP7A4MDg/sDAgEABgAGAAkD/AP5gAQD/AAGgAWCaWsAzKQEz/s0pAAIAgP+gA4ACoACBAI4ApLaIhwIHAAFAS7AmUFhAMQADAA8AAw9ZBhACAA0BBw4AB1kEAQILAQkIAglZAA4ACg4KVQUBAQEIUQwBCAgLCEIbQDcAAwAPAAMPWQYQAgANAQcOAAdZAA4JCg5NBAECCwEJCAIJWQUBAQwBCAoBCFkADg4KUQAKDgpFWUAmAgCMi4WEe3hramdlX1xXVVFPRUI8OSwqJSMbGBMRDQwAgQKBEQ4rASMiJjU0PwE2NC8BJiIPAQ4BIyImPQE0JisBIg4BHQEUDgIjIi4BLwEmIyIPAQYUHwEeAxUUBisBIg4BHQEUFjsBMhYVFA8BBhQfARYzMj8BPgEzMhYdARQWOwEyNj0BND4BMzIfARYyPwE+ATQmLwEmNTQ+ATsBMjY9AjYmBxQGIiY1MTQ+ATIeAQNRHhMbDxQODi0OKg4TBxEKExwdFD0NFg0IDREJBwwKBRMOFRUOLQ4OEwQFBAIbEh8NFw4eFB8SGw8TDg4tDRYUDxMGEgkTHB0UPRQdDRUNEw8TDikPLAcICAcTDwwVDB8UGgEbw16FXSpKV0orAW8cExMOEw4pDywODhMHCBsSHxQeDhcNHwkQDQcDBwUTDg4sDikPEgQICAkFExwNFg48FRwcExQOEg8pDiwODhMHCBsTHhQeHRUeDBUNEBIODiwHExITBxMNFA0VDRwUHx4VHE9CXl5CK0orK0oAAAMAYP+AA6ACwAAHABEAGwA3QDQAAAACAwACWQADAAcGAwdXAAYIAQUEBgVXAAQBAQRLAAQEAVEAAQQBRREREREUFBMTEAkXKwAgBhAWIDYQJDIWFRQGIiY1NBMjNTM1IzUzETMCrP6o9PQBWPT+RiIXFyIXcYAgIGAgAsD0/qj09AFYJBcREBgYEBH+hxDwEP8AAAADAGD/gAOgAsAABwAUAC4ASEBFAAUHBgcFBmYABgQHBgRkAAAABwUAB1kABAADAgQDWggBAgEBAk0IAQICAVIAAQIBRgkIKignJiUjGRgNDAgUCRQTEAkQKwAgBhAWIDYQASImNDYyFhUUDgM3DgEHIzQ+Ajc+ATU0JiMiFyM2MzIWFRQGAqz+qPT0AVj0/mkPExMdFAQGCAs+IA0BJgcOFhESFTIkYQImAYYzRhoCwPT+qPT0AVj+eBQcExMOBgoIBwPnICEqFiEfGxARJhUjLV18OzIeLwADAMEA4ANAAWAABwAQABgAK0AoBAYCAwABAQBNBAYCAwAAAVEFAwIBAAFFCQgWFRIRDQwIEAkQExAHECsAIgYUFjI2NCUiBhQWMjY0JiAiBhQWMjY0Ahs2JSU2Jf7BGyUlNSYmAgA2JSU2JQFgJTYlJTYlJTYlJTYlJTYlJTYAAAwAQP/QA8ACcAAHAA8AFwAfACcALwA1ADsAQwBLAFMAWwEES7AhUFhAYgACAAJoAAMBCgEDCmYACggBCghkAAsJBgkLBmYABgQJBgRkAAcFB2kYFwIUFgEVARQVVwAAAAEDAAFZDwEMDgENCQwNWAAIAAkLCAlZEwEQEgERBRARWAAEBAVRAAUFCwVCG0BnAAIAAmgAAwEKAQMKZgAKCAEKCGQACwkGCQsGZgAGBAkGBGQABwUHaRgXAhQWARUBFBVXAAAAAQMAAVkPAQwOAQ0JDA1YAAgACQsICVkABBAFBE0TARASAREFEBFYAAQEBVEABQQFRVlALVRUVFtUW1pZT05NTEpJSEc/Pj08Ozo5ODMyMTAtLCkoJSQTExMTExMTExAZFysAMhYUBiImNDYiBhQWMjY0AjIWFAYiJjQ2IgYUFjI2NAAyFhQGIiY0NiIGFBYyNjQXIRUhNjQiFBcjNTMBMxUjNjU0JgcUFhUhNSEGEzMVIzY1NCYnBhUUFhUhNQKzGhMTGhM6NCYmNCZNGhMTGhM6NCYmNCb+MxoTExoTOjQmJjQmHwIh/d8BwAGhoQI+oaEBAb8B/d8CIQG/oaEBAb4BAf3fAlATGhMTGjMmNCYmNP3mExoTExozJjQmJjQBFhMaExMaMyY0JiY0CiAIEBAIIP7wIAgIBAgMBAgEIAgCKCAICAQIBAgIBAgEIAAJAEQAIAO8AssAFQAnADMARABQAF0AcQB+AIwBEkuwClBYQF4XAQwLAwoMXgANAgoLDV4ABwAIAQcIWQABEgEACQEAWQAJFQEGCwkGWQADEwECDQMCWQALFgEKDwsKWQAPGQEQBQ8QWQAFFAEEEQUEWQARDg4RTQAREQ5RGAEOEQ5FG0BgFwEMCwMLDANmAA0CCgINCmYABwAIAQcIWQABEgEACQEAWQAJFQEGCwkGWQADEwECDQMCWQALFgEKDwsKWQAPGQEQBQ8QWQAFFAEEEQUEWQARDg4RTQAREQ5RGAEOEQ5FWUBGgH9zcl9eUlE1NCooGBYCAISDf4yAjHl4cn5zfmlnXnFfcVhXUV1SXUxLRkU9OzRENUQwLSgzKjMhHhYnGCcOCwAVAhUaDisBISIuBTU0NjMhMh4DFRQGByEiLgI1NDYzITIeAhUUBgchIiY0NjMhMhYUBgEiJjU0PgIzMh4BFRQOAiYiDgEUHgEyPgE0JgMiJjU0PgEyHgEUDgEnIg4BFRQeAzMyPgE1NC4DAyImNTQ+ATIeARQOASciBhQWMjY1NC4EA5r93QQHBwYFAwIUDgIjBQsIBgQUDv3dBg0JBhQOAiMHDAkGFA793Q4UFA4CIw4UFP0DKzwRGyYVGzAbEBwmCxMPCQkPExAJCRkrPBwvNzAbGzAbCg8JAwYJCgYJEAkEBggLBSs8HC83MBsbMBsOFBQcFAMEBggJAkICAwUGBwcEDhQDBgkKBg4U7wYJDAcOFAUJDQcOFO8UHRQUHRQBmjwqFSYbERwvHBUlHBCICQ8TEAkJEBMP/pI8KhwvHBwvNzAbiAkPCgULCAYECRAJBgoJBgP+iTwqHC8cHC83MBuJFB0UFA4FCQcHBAMAAwBA/+EDvwJnAAMABwALACZAIwACAAMAAgNXAAAAAQQAAVcABAQFTwAFBQsFQhEREREREAYUKxMhFSERIRUhESEVIUADf/yBA3/8gQN//IEBPDABWzD92S8AAAAEABf/iAPpArgABQAiADkAPwA9QDo/Pj08Ozo5LSwjIiEfHhQTBgUEAwIBABcCAQFAAAAAAQIAAVkAAgMDAk0AAgIDUQADAgNFLx4XLQQSKwEHJwcXNycwPQEuAyMiDgIHFz4BMh4BFxUUBgcXNjUxBw4BIi4BNTQ2NycGHQMeAjMyNjcBBxc3FzcD01NVFWppUQFBbZdSN2lcTRscMrDMrGUBAQEgAlAysMytZQEBIAICb7ptbsA2/RxpFlNTFgEgU1MWamkYAQJTlWxAHTZNMBBZZ2SsZg4GDgcEFRa4WWdkrWYKFAoEFRYCBANsuGtwYAFIaRdTUxcAAAABAV//nwKgAqAASQBLQEg6AQAFRx8KAwIDAkAABQAFaAcBAAMAaAADAgNoAAIABAECBFkAAQYGAU0AAQEGUgAGAQZGAQBDQTc2LSslIx0bCAcASQFJCA4rASIOARURFAYiJjcwETQ2NzYXHgEVERQOAgcGIyImNTARNCYjIg4BFQMUFjMWNz4CNRM0JyYiBwYHMB0DBhYzFjc2NRE2JgKJBgsGRVtFARIQIyMQEQICBAIGCAkNDQkHCgYBKRwdFAYJBAE4Gz8aOAEBYEBDLi8BDQHqBgsG/no9QUM9AdYXIwkVFQojF/4/BgoICAMHFhMBWgoNBgsG/qcqLwEZCBQXDQHBSyIQDyFLeI19VFFeAS8wTwGFCg4AAwAT//YD7QJJABcAIwAxAJpLsA9QWEAiBwEEAgUCBF4ABQMDBVwAAQYBAgQBAlkAAwMAUgAAAAsAQhtLsBhQWEAkBwEEAgUCBAVmAAUDAgUDZAABBgECBAECWQADAwBSAAAACwBCG0ApBwEEAgUCBAVmAAUDAgUDZAABBgECBAECWQADAAADTQADAwBSAAADAEZZWUAUJSQZGCsqJDElMSAfGCMZIykmCBArARQOBCMiLgM0PgMzMhcWFxYlIg4CFRQWMjY0JgciDgEVFBYyNjU0LgID7SE8WmqGRlGddVsvL1t2nFHInWMdCP4TMFhAJYvFi4tjKUYoWH5YGCg4ASAYPkM/Mx8rRFBNPE1QRCpwR0sW4iZCWjFljo7KjlgpSCpAW1tAIDkqGAAAAQDAAGADQAHgAAUABrMCAAEmKyU3CQEXAQMZJ/7A/sAnARlgKQFX/qkpAS0AAAAAAQDAAGADQAHgAAUABrMCAAEmKwEXCQE3AQMZJ/7A/sAnARkB4Cn+qQFXKf7TAAAAAQFA/+ACwAJgAAUABrMDAQEmKwEnCQE3AQLAKf6pAVcp/tMCOSf+wP7AJwEZAAAAAQFA/+ACwAJgAAUABrMDAQEmKwE3CQEnAQFAKQFX/qkpAS0COSf+wP7AJwEZAAAAAQFA/+ACwAJgACEAJUAiGRgTCwQFAAIBQAAAAgECAAFmAAICAVEAAQELAUIsFREDESsBBiIvAREUBiImNREHBicmNDc2NzYzMhYfAR4BHwEeARUUArsEDQWVCQ4JlQwKBQWuAgYFAwUBAgFYLCsDAgGkBASF/ccHCQkHAjmECwoFDgSfAQUCAQIBUCgnAgYDBwAAAAEBQP/gAsACYAAgACRAIRgTCwQEAgABQAAAAQIBAAJmAAEBAlEAAgILAkIsFREDESslJiIPARE0JiIGFREnJgcGFBcWFxYzMjY3PgE/AT4BNTQCuwQNBZUJDgmVDAoFBa4CBgUEBgEBWCwrAwKcBASFAjkHCQkH/ceECwoFDgSfAQUDAgFQKCcCBgMHAAAAAAEAwABgA0AB4AAdACpAJxYSAgABAUAAAgECaAADAANpAAEAAAFNAAEBAFIAAAEARhwUIyMEEislNi8BITI2NCYjITc2JyYiBwYHBhUUFx4BHwEWMzYBfAoKhQI5BwkJB/3HhAsKBQ4EnwEFBQFQKCcEBwdlCgyVCQ4JlQwKBQWuAgYFBwQBWCwrBQEAAQDAAGADQAHhAB4AJUAiFxMCAAEBQAACAAJpAAEAAAFNAAEBAFEAAAEARR0cIyMDECslJj8BISImNDYzIScmNz4BFhcWFxYVFAcOAQ8BBiMmAoQKCoX9xwcJCQcCOYQLCgMJCAOfAQUFAVAoJwQHB2UKDJUJDgmVDAoDAwIErgIGBQcEAVgsKwUBAAABAR7/pwLaAn8ABgAWQBMAAQA9AAEAAWgCAQAAXxEREQMRKwUTIxEjESMB/N6Rm5BZASgBsP5QAAEAX/97A6ECvQALAAAJAgcJARcJATcJAQNt/pL+lDQBbf6TNAFsAW40/pEBbwK9/pIBbDP+lP6UMwFs/pIzAW4BbQAABABV/3EDqgLIABMAJwA+AEQAAAUGLgE0Nz4BNCYnJjQ+ARceARQGJw4BJjQ3PgE0JicmNDYWFx4BFAYDJyMiJicRPgE3Mzc+AR4BFREUDgEmJzcRByMRMwMwCBgQCTI2NTIJEBgJOj4/rAgYEQgYGRgXCBEYCB8gIuHIpxchAQEhF6fFDh8eEBAbHw4f1Lq4FAkBEhgJNIaXhTQJGBIBCTycsJxSCAESFwkZPkU+GQkXEQEIIVNcU/7ggiEYAbkXIQGTCgMPGxD9HBAaDwEIMALkn/5HAAAABQBA/3wDwAK8AAsAHwAzAEgAXQAAJSEiJjQ2MyEyFhQGAyMiJjQ2OwEyNj0BNDYyFh0BDgEFIy4BJzU0NjIWHQEUFjsBMhYUBgMiJj0BPgE3MzIWFAYrASIGHQEUBiEiJj0BNCYrASImNDY7AR4BFxUUBgOg/MAOEhIOA0AOEhJuwA4SEg7ADhISHBIBNv33oCk2ARIcEhIOoA4SEu4OEgE2KaAOEhIOoA4SEgLyDhISDsAOEhIOwCk2ARL8EhwSEhwS/oASHBISDqAOEhIOoCk2AQE2KaAOEhIOoA4SEhwSAiASDqApNgESHBISDqAOEhIOoA4SEhwSATYpoA4SAAAADACWAAEAAAAAAAEACAASAAEAAAAAAAIABgApAAEAAAAAAAMAHABqAAEAAAAAAAQADwCnAAEAAAAAAAUALwEXAAEAAAAAAAYADwFnAAMAAQQJAAEAEAAAAAMAAQQJAAIADAAbAAMAAQQJAAMAOAAwAAMAAQQJAAQAHgCHAAMAAQQJAAUAXgC3AAMAAQQJAAYAHgFHAGkAYwBvAG4AZgBvAG4AdAAAaWNvbmZvbnQAAE0AZQBkAGkAdQBtAABNZWRpdW0AAGkAYwBvAG4AZgBvAG4AdAAgAE0AZQBkAGkAdQBtADoAVgBlAHIAcwBpAG8AbgAgADEALgAwADAAAGljb25mb250IE1lZGl1bTpWZXJzaW9uIDEuMDAAAGkAYwBvAG4AZgBvAG4AdAAgAE0AZQBkAGkAdQBtAABpY29uZm9udCBNZWRpdW0AAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwACAARABlAGMAZQBtAGIAZQByACAAMQAzACwAIAAyADAAMQA4ACwAIABpAG4AaQB0AGkAYQBsACAAcgBlAGwAZQBhAHMAZQAAVmVyc2lvbiAxLjAwIERlY2VtYmVyIDEzLCAyMDE4LCBpbml0aWFsIHJlbGVhc2UAAGkAYwBvAG4AZgBvAG4AdAAtAE0AZQBkAGkAdQBtAABpY29uZm9udC1NZWRpdW0AAAAAAAIAAAAAAAD/UQAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAAEAAgBbAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQd1bmlFMTAwB3VuaUUxMDEHdW5pRTEwMgd1bmlFMTMwB3VuaUUxMzEHdW5pRTEzMgd1bmlFMjAwB3VuaUUyMDEHdW5pRTIwMgd1bmlFMjAzB3VuaUUyMzAHdW5pRTIzMQd1bmlFMjMyB3VuaUUyMzMHdW5pRTI2MAd1bmlFMjYxB3VuaUUyNjIHdW5pRTI2Mwd1bmlFMjY0B3VuaUUzMDAHdW5pRTMwMQd1bmlFMzAyB3VuaUUzMDMHdW5pRTMzMgd1bmlFMzMzB3VuaUUzNjAHdW5pRTM2Mwd1bmlFMzY0B3VuaUU0MDAHdW5pRTQwMQd1bmlFNDAyB3VuaUU0MDMHdW5pRTQwNAd1bmlFNDA1B3VuaUU0MDYHdW5pRTQwNwd1bmlFNDA4B3VuaUU0MDkHdW5pRTQxMAd1bmlFNDExB3VuaUU0MTMHdW5pRTQzNAd1bmlFNDM3B3VuaUU0MzgHdW5pRTQzOQd1bmlFNDQwB3VuaUU0NDEHdW5pRTQ0Mgd1bmlFNDQzB3VuaUU0NjAHdW5pRTQ2MQd1bmlFNDYyB3VuaUU0NjMHdW5pRTQ2NAd1bmlFNDY1B3VuaUU0NjYHdW5pRTQ2OAd1bmlFNDcwB3VuaUU0NzEHdW5pRTQ3Mgd1bmlFNTAwB3VuaUU1MDEHdW5pRTUwMgd1bmlFNTAzB3VuaUU1MDQHdW5pRTUwNQd1bmlFNTA2B3VuaUU1MDcHdW5pRTUwOAd1bmlFNTMwB3VuaUU1MzIHdW5pRTUzNAd1bmlFNTM1B3VuaUU1MzcHdW5pRTU2MAd1bmlFNTYyB3VuaUU1NjMHdW5pRTU2NQd1bmlFNTY3B3VuaUU1NjgHdW5pRTU4MAd1bmlFNTgxB3VuaUU1ODIHdW5pRTU4Mwd1bmlFNTg0B3VuaUU1ODUHdW5pRTU4Ngd1bmlFNTg3B3VuaUU1ODgHdW5pRTU4OQRFdXJvBEV1cm8AAQAB//8ADwABAAAADAAAABYAAAACAAEAAQBfAAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAANJrTZkAAAAA2DhhuQ==)
+		format('truetype');
+}
+
+.uni-icon-wrapper {
+	line-height: 1;
+}
+
+.uni-icon {
+	font-family: uniicons;
+	font-weight: normal;
+	font-style: normal;
+	line-height: 1;
+	display: inline-block;
+	text-decoration: none;
+	-webkit-font-smoothing: antialiased;
+}
+
+.uni-icon.uni-active {
+	color: #007aff;
+}
+
+.uni-icon-contact:before {
+	content: '\e100';
+}
+
+.uni-icon-person:before {
+	content: '\e101';
+}
+
+.uni-icon-personadd:before {
+	content: '\e102';
+}
+
+.uni-icon-contact-filled:before {
+	content: '\e130';
+}
+
+.uni-icon-person-filled:before {
+	content: '\e131';
+}
+
+.uni-icon-personadd-filled:before {
+	content: '\e132';
+}
+
+.uni-icon-phone:before {
+	content: '\e200';
+}
+
+.uni-icon-email:before {
+	content: '\e201';
+}
+
+.uni-icon-chatbubble:before {
+	content: '\e202';
+}
+
+.uni-icon-chatboxes:before {
+	content: '\e203';
+}
+
+.uni-icon-phone-filled:before {
+	content: '\e230';
+}
+
+.uni-icon-email-filled:before {
+	content: '\e231';
+}
+
+.uni-icon-chatbubble-filled:before {
+	content: '\e232';
+}
+
+.uni-icon-chatboxes-filled:before {
+	content: '\e233';
+}
+
+.uni-icon-weibo:before {
+	content: '\e260';
+}
+
+.uni-icon-weixin:before {
+	content: '\e261';
+}
+
+.uni-icon-pengyouquan:before {
+	content: '\e262';
+}
+
+.uni-icon-chat:before {
+	content: '\e263';
+}
+
+.uni-icon-qq:before {
+	content: '\e264';
+}
+
+.uni-icon-videocam:before {
+	content: '\e300';
+}
+
+.uni-icon-camera:before {
+	content: '\e301';
+}
+
+.uni-icon-mic:before {
+	content: '\e302';
+}
+
+.uni-icon-location:before {
+	content: '\e303';
+}
+
+.uni-icon-mic-filled:before,
+.uni-icon-speech:before {
+	content: '\e332';
+}
+
+.uni-icon-location-filled:before {
+	content: '\e333';
+}
+
+.uni-icon-micoff:before {
+	content: '\e360';
+}
+
+.uni-icon-image:before {
+	content: '\e363';
+}
+
+.uni-icon-map:before {
+	content: '\e364';
+}
+
+.uni-icon-compose:before {
+	content: '\e400';
+}
+
+.uni-icon-trash:before {
+	content: '\e401';
+}
+
+.uni-icon-upload:before {
+	content: '\e402';
+}
+
+.uni-icon-download:before {
+	content: '\e403';
+}
+
+.uni-icon-close:before {
+	content: '\e404';
+}
+
+.uni-icon-redo:before {
+	content: '\e405';
+}
+
+.uni-icon-undo:before {
+	content: '\e406';
+}
+
+.uni-icon-refresh:before {
+	content: '\e407';
+}
+
+.uni-icon-star:before {
+	content: '\e408';
+}
+
+.uni-icon-plus:before {
+	content: '\e409';
+}
+
+.uni-icon-minus:before {
+	content: '\e410';
+}
+
+.uni-icon-circle:before,
+.uni-icon-checkbox:before {
+	content: '\e411';
+}
+
+.uni-icon-close-filled:before,
+.uni-icon-clear:before {
+	content: '\e434';
+}
+
+.uni-icon-refresh-filled:before {
+	content: '\e437';
+}
+
+.uni-icon-star-filled:before {
+	content: '\e438';
+}
+
+.uni-icon-plus-filled:before {
+	content: '\e439';
+}
+
+.uni-icon-minus-filled:before {
+	content: '\e440';
+}
+
+.uni-icon-circle-filled:before {
+	content: '\e441';
+}
+
+.uni-icon-checkbox-filled:before {
+	content: '\e442';
+}
+
+.uni-icon-closeempty:before {
+	content: '\e460';
+}
+
+.uni-icon-refreshempty:before {
+	content: '\e461';
+}
+
+.uni-icon-reload:before {
+	content: '\e462';
+}
+
+.uni-icon-starhalf:before {
+	content: '\e463';
+}
+
+.uni-icon-spinner:before {
+	content: '\e464';
+}
+
+.uni-icon-spinner-cycle:before {
+	content: '\e465';
+}
+
+.uni-icon-search:before {
+	content: '\e466';
+}
+
+.uni-icon-plusempty:before {
+	content: '\e468';
+}
+
+.uni-icon-forward:before {
+	content: '\e470';
+}
+
+.uni-icon-back:before,
+.uni-icon-left-nav:before {
+	content: '\e471';
+}
+
+.uni-icon-checkmarkempty:before {
+	content: '\e472';
+}
+
+.uni-icon-home:before {
+	content: '\e500';
+}
+
+.uni-icon-navigate:before {
+	content: '\e501';
+}
+
+.uni-icon-gear:before {
+	content: '\e502';
+}
+
+.uni-icon-paperplane:before {
+	content: '\e503';
+}
+
+.uni-icon-info:before {
+	content: '\e504';
+}
+
+.uni-icon-help:before {
+	content: '\e505';
+}
+
+.uni-icon-locked:before {
+	content: '\e506';
+}
+
+.uni-icon-more:before {
+	content: '\e507';
+}
+
+.uni-icon-flag:before {
+	content: '\e508';
+}
+
+.uni-icon-home-filled:before {
+	content: '\e530';
+}
+
+.uni-icon-gear-filled:before {
+	content: '\e532';
+}
+
+.uni-icon-info-filled:before {
+	content: '\e534';
+}
+
+.uni-icon-help-filled:before {
+	content: '\e535';
+}
+
+.uni-icon-more-filled:before {
+	content: '\e537';
+}
+
+.uni-icon-settings:before {
+	content: '\e560';
+}
+
+.uni-icon-list:before {
+	content: '\e562';
+}
+
+.uni-icon-bars:before {
+	content: '\e563';
+}
+
+.uni-icon-loop:before {
+	content: '\e565';
+}
+
+.uni-icon-paperclip:before {
+	content: '\e567';
+}
+
+.uni-icon-eye:before {
+	content: '\e568';
+}
+
+.uni-icon-arrowup:before {
+	content: '\e580';
+}
+
+.uni-icon-arrowdown:before {
+	content: '\e581';
+}
+
+.uni-icon-arrowleft:before {
+	content: '\e582';
+}
+
+.uni-icon-arrowright:before {
+	content: '\e583';
+}
+
+.uni-icon-arrowthinup:before {
+	content: '\e584';
+}
+
+.uni-icon-arrowthindown:before {
+	content: '\e585';
+}
+
+.uni-icon-arrowthinleft:before {
+	content: '\e586';
+}
+
+.uni-icon-arrowthinright:before {
+	content: '\e587';
+}
+
+.uni-icon-pulldown:before {
+	content: '\e588';
+}
+
+.uni-icon-closefill:before {
+	content: '\e589';
+}
+
+.uni-icon-sound:before {
+	content: '\e590';
+}
+
+.uni-icon-scan:before {
+	content: '\e612';
+}
+</style>
diff --git a/components/uni-list-item/uni-list-item.vue b/components/uni-list-item/uni-list-item.vue
new file mode 100644
index 0000000..9fb7d55
--- /dev/null
+++ b/components/uni-list-item/uni-list-item.vue
@@ -0,0 +1,193 @@
+<template>
+	<view class="uni-list-item" :class="[disabled === true || disabled === 'true' ? 'uni-list-item--disabled' : '']" :hover-class="disabled === true || disabled === 'true' || showSwitch === true || showSwitch === 'true' ? '' : 'uni-list-item--hover'" @click="onClick">
+		<view class="uni-list-item__container">
+			<view class="uni-list-item__icon" v-if="thumb">
+				<image class="uni-list-item__icon-img" :src="thumb"></image>
+			</view>
+			<view class="uni-list-item__icon" v-else-if="showExtraIcon === true || showExtraIcon === 'true'">
+				<uni-icon :color="extraIcon.color" :size="extraIcon.size" :type="extraIcon.type"></uni-icon>
+			</view>
+			<view class="uni-list-item__content">
+				<view class="uni-list-item__content-title">{{title}}</view>
+				<view class="uni-list-item__content-note" v-if="note">{{note}}</view>
+			</view>
+			<view class="uni-list-item__extra" v-if="showBadge === true || showBadge === 'true' || showArrow === true || showArrow === 'true'||showSwitch === true || showSwitch === 'true'">
+				<uni-badge v-if="showBadge === true || showBadge === 'true'" :type="badgeType" :text="badgeText"></uni-badge>
+				<switch v-if="showSwitch === true || showSwitch === 'true'" :disabled='disabled' :checked="switchChecked" @change="onSwitchChange" />
+				<uni-icon v-if="showArrow === true || showArrow === 'true'" color="#bbb" size="20" type="arrowright"></uni-icon>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '../uni-icon/uni-icon.vue'
+	import uniBadge from '../uni-badge/uni-badge.vue'
+	export default {
+		name: 'uni-list-item',
+		components: {
+			uniIcon,
+			uniBadge
+		},
+		data() {
+			return {
+
+			};
+		},
+		props: {
+			title: {
+				type: String,
+				default: ''
+			}, //列表标题
+			note: {
+				type: String,
+				default: ''
+			}, //列表描述
+			disabled: { //是否禁用
+				type: [Boolean, String],
+				default: false
+			},
+			showArrow: { //是否显示箭头
+				type: [Boolean, String],
+				default: true
+			},
+			showBadge: { //是否显示数字角标
+				type: [Boolean, String],
+				default: false
+			},
+			showSwitch: { //是否显示Switch
+				type: [Boolean, String],
+				default: false
+			},
+			switchChecked: { //Switch是否被选中
+				type: [Boolean, String],
+				default: false
+			},
+			badgeText: String, //badge内容
+			badgeType: { //badge类型
+				type: String,
+				default: 'success'
+			},
+			thumb: String, //缩略图
+			showExtraIcon: { //是否显示扩展图标
+				type: [Boolean, String],
+				default: false
+			},
+			extraIcon: {
+				type: Object,
+				default () {
+					return {
+						type: 'contact',
+						color: '#000000',
+						size: 20
+					};
+				}
+			}
+		},
+		methods: {
+			onClick() {
+				this.$emit('click')
+			},
+			onSwitchChange(e) {
+				this.$emit('switchChange', e.detail)
+			}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-list-item {
+		font-size: 32upx;
+		position: relative;
+		display: flex;
+		flex-direction: column;
+		justify-content: space-between;
+		align-items: center
+	}
+
+	.uni-list-item--disabled {
+		opacity: .3
+	}
+
+	.uni-list-item--hover {
+		background-color: #f1f1f1
+	}
+
+	.uni-list-item__container {
+		padding: 24upx 30upx;
+		width: 100%;
+		box-sizing: border-box;
+		flex: 1;
+		position: relative;
+		display: flex;
+		flex-direction: row;
+		justify-content: space-between;
+		align-items: center
+	}
+
+	.uni-list-item__container:after {
+		position: absolute;
+		z-index: 3;
+		right: 0;
+		bottom: 0;
+		left: 30upx;
+		height: 1px;
+		content: '';
+		-webkit-transform: scaleY(.5);
+		transform: scaleY(.5);
+		background-color: #c8c7cc
+	}
+
+	.uni-list-item__content {
+		flex: 1;
+		overflow: hidden;
+		display: flex;
+		flex-direction: column
+	}
+
+	.uni-list-item__content-title {
+		font-size: 32upx;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		color: inherit;
+		line-height: 1.5;
+		overflow: hidden
+	}
+
+	.uni-list-item__content-note {
+		color: #999;
+		font-size: 28upx;
+		white-space: normal;
+		display: -webkit-box;
+		-webkit-box-orient: vertical;
+		-webkit-line-clamp: 2;
+		overflow: hidden
+	}
+
+	.uni-list-item__extra {
+		width: 25%;
+		display: flex;
+		flex-direction: row;
+		justify-content: flex-end;
+		align-items: center
+	}
+
+	.uni-list-item__icon {
+		margin-right: 18upx;
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center
+	}
+
+	.uni-list-item__icon-img {
+		height: 52upx;
+		width: 52upx
+	}
+
+	.uni-list>.uni-list-item:last-child .uni-list-item-container:after {
+		height: 0
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-list/uni-list.vue b/components/uni-list/uni-list.vue
new file mode 100644
index 0000000..db4f9fd
--- /dev/null
+++ b/components/uni-list/uni-list.vue
@@ -0,0 +1,47 @@
+<template>
+	<view class="uni-list">
+		<slot></slot>
+	</view>
+</template>
+<script>
+	export default {
+		name: 'uni-list'
+	}
+</script>
+<style>
+	@charset "UTF-8";
+
+	.uni-list {
+		background-color: #fff;
+		position: relative;
+		width: 100%;
+		display: flex;
+		flex-direction: column
+	}
+
+	.uni-list:after {
+		position: absolute;
+		z-index: 10;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		height: 1px;
+		content: '';
+		-webkit-transform: scaleY(.5);
+		transform: scaleY(.5);
+		background-color: #c8c7cc
+	}
+
+	.uni-list:before {
+		position: absolute;
+		z-index: 10;
+		right: 0;
+		top: 0;
+		left: 0;
+		height: 1px;
+		content: '';
+		-webkit-transform: scaleY(.5);
+		transform: scaleY(.5);
+		background-color: #c8c7cc
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-load-more/uni-load-more.vue b/components/uni-load-more/uni-load-more.vue
new file mode 100644
index 0000000..6c43365
--- /dev/null
+++ b/components/uni-load-more/uni-load-more.vue
@@ -0,0 +1,194 @@
+<template>
+	<view class="uni-load-more">
+		<view class="uni-load-more__img" v-show="status === 'loading' && showIcon">
+			<view class="load1">
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+			</view>
+			<view class="load2">
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+			</view>
+			<view class="load3">
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+				<view :style="{background:color}"></view>
+			</view>
+		</view>
+		<text class="uni-load-more__text" :style="{color:color}">{{status === 'more' ? contentText.contentdown : (status === 'loading' ? contentText.contentrefresh : contentText.contentnomore)}}</text>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "uni-load-more",
+		props: {
+			status: {
+				//上拉的状态:more-loading前;loading-loading中;noMore-没有更多了
+				type: String,
+				default: 'more'
+			},
+			showIcon: {
+				type: Boolean,
+				default: true
+			},
+			color: {
+				type: String,
+				default: "#777777"
+			},
+			contentText: {
+				type: Object,
+				default () {
+					return {
+						contentdown: "上拉显示更多",
+						contentrefresh: "正在加载...",
+						contentnomore: "没有更多数据了"
+					};
+				}
+			}
+		},
+		data() {
+			return {}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-load-more {
+		display: flex;
+		flex-direction: row;
+		height: 80upx;
+		align-items: center;
+		justify-content: center
+	}
+
+	.uni-load-more__text {
+		font-size: 28upx;
+		color: #999
+	}
+
+	.uni-load-more__img {
+		height: 24px;
+		width: 24px;
+		margin-right: 10px
+	}
+
+	.uni-load-more__img>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>
\ No newline at end of file
diff --git a/components/uni-notice-bar/uni-notice-bar.vue b/components/uni-notice-bar/uni-notice-bar.vue
new file mode 100644
index 0000000..ec997b8
--- /dev/null
+++ b/components/uni-notice-bar/uni-notice-bar.vue
@@ -0,0 +1,258 @@
+<template>
+  <view
+    v-if="show"
+    :style="{ backgroundColor: backgroundColor, color: color }"
+    class="uni-noticebar"
+    @click="onClick">
+    <view
+      v-if="showClose === 'true' || showClose === true"
+      class="uni-noticebar__close"><uni-icons
+        type="closefill"
+        size="12" /></view>
+    <view
+      :class="{ 'uni-noticebar--flex': scrollable || single || moreText }"
+      class="uni-noticebar__content">
+      <view
+        v-if="showIcon === 'true' || showIcon === true"
+        :style="{ backgroundColor: backgroundColor, color: color }"
+        class="uni-noticebar__content-icon">
+        <uni-icons
+          :color="color"
+          type="sound"
+          size="14" />
+      </view>
+      <view
+        :class="{ 'uni-noticebar--scrollable': scrollable, 'uni-noticebar--single': !scrollable && (single || moreText) }"
+        class="uni-noticebar__content-text">
+        <view
+          :id="elId"
+          :style="{ animation: animation, '-webkit-animation': animation }"
+          class="uni-noticebar__content-inner">{{ text }}</view>
+      </view>
+      <view
+        v-if="showGetMore === 'true' || showGetMore === true"
+        :style="{ width: moreText ? '180upx' : '20px' }"
+        class="uni-noticebar__content-more"
+        @click="clickMore">
+        <view
+          v-if="moreText"
+          class="uni-noticebar__content-more-text">{{ moreText }}</view>
+        <uni-icons
+          type="arrowright"
+          size="14" />
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import uniIcons from '../uni-icons/uni-icons.vue'
+export default {
+  name: 'UniNoticeBar',
+  components: {
+    uniIcons
+  },
+  props: {
+    text: {
+      type: String,
+      default: ''
+    },
+    moreText: {
+      type: String,
+      default: ''
+    },
+    backgroundColor: {
+      type: String,
+      default: '#fffbe8'
+    },
+    speed: {
+      // 默认1s滚动100px
+      type: [String, Number],
+      default: 100
+    },
+    color: {
+      type: String,
+      default: '#de8c17'
+    },
+    single: {
+      // 是否单行
+      type: [String, Boolean],
+      default: false
+    },
+    scrollable: {
+      // 是否滚动,添加后控制单行效果取消
+      type: [String, Boolean],
+      default: false
+    },
+    showIcon: {
+      // 是否显示左侧icon
+      type: [String, Boolean],
+      default: false
+    },
+    showGetMore: {
+      // 是否显示右侧查看更多
+      type: [String, Boolean],
+      default: false
+    },
+    showClose: {
+      // 是否显示左侧关闭按钮
+      type: [String, Boolean],
+      default: false
+    }
+  },
+  data () {
+    const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+    return {
+      elId: elId,
+      show: true,
+      animation: ''
+    }
+  },
+  watch: {
+    text (newValue, oldValue) {
+      this.$nextTick(() => {
+        setTimeout(this.setAnimation, 200)
+      })
+    }
+  },
+  // #ifdef H5
+  mounted () {
+    this.setAnimation()
+  },
+  // #endif
+  // #ifndef H5
+  onReady () {
+    this.setAnimation()
+  },
+  // #endif
+  methods: {
+    clickMore () {
+      this.$emit('getmore')
+    },
+    onClick (e) {
+      let clientX = e.touches ? (e.touches[0] ? e.touches[0].clientX : e.changedTouches[0].clientX) : e.detail.clientX
+      if (uni.upx2px(48) + 12 > clientX && String(this.showClose) === 'true') {
+        this.show = false
+        this.$emit('close')
+      }
+      this.$emit('click')
+    },
+    setAnimation () {
+      if (this.scrollable === false || this.scrollable === 'false') {
+        return
+      }
+      // #ifdef MP-TOUTIAO
+      setTimeout(() => {
+        uni.createSelectorQuery()
+          .in(this)
+          .select(`#${this.elId}`)
+          .boundingClientRect()
+          .exec(ret => {
+            this.animation = `notice ${ret[0].width / this.speed}s linear infinite both`
+          })
+      }, 200)
+      // #endif
+      // #ifndef MP-TOUTIAO
+      uni.createSelectorQuery()
+        .in(this)
+        .select(`#${this.elId}`)
+        .boundingClientRect()
+        .exec(ret => {
+          this.animation = `notice ${ret[0].width / this.speed}s linear infinite both`
+        })
+      // #endif
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+@mixin flex-row-center {
+	display: flex;
+	flex-direction: row;
+	justify-content: center;
+	align-items: center;
+}
+
+.uni-noticebar {
+	padding: 12upx 24upx;
+	font-size: $uni-font-size-sm;
+	line-height: 1.5;
+	margin-bottom: 20upx;
+	@include flex-row-center;
+	justify-content: left;
+
+	&__close {
+		color: $uni-text-color-grey;
+		margin-right: 24upx;
+		@include flex-row-center;
+	}
+
+	&__content {
+		flex: 1;
+		overflow: hidden;
+
+		&.uni-noticebar--flex {
+			flex: 1;
+			display: flex;
+			flex-direction: row;
+		}
+
+		&-icon {
+			display: inline-block;
+			z-index: 1;
+			padding-right: 12upx;
+		}
+
+		&-more {
+			width: 180upx;
+			@include flex-row-center;
+			justify-content: flex-end;
+			word-break: keep-all;
+			margin-left: 10upx;
+			color: $uni-text-color-grey;
+
+			&-text {
+				font-size: $uni-font-size-sm;
+				white-space: nowrap;
+			}
+		}
+
+		&-text {
+			word-break: break-all;
+			line-height: 1.5;
+			display: inline;
+
+			&.uni-noticebar--single {
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				overflow: hidden;
+			}
+
+			&.uni-noticebar--scrollable {
+				flex: 1;
+				display: block;
+				overflow: hidden;
+
+				.uni-noticebar__content-inner {
+					padding-left: 100%;
+					white-space: nowrap;
+					display: inline-block;
+					transform: translateZ(0);
+				}
+			}
+		}
+
+		&-inner {
+			font-size: $uni-font-size-sm;
+			display: inline;
+		}
+	}
+}
+
+@keyframes notice {
+	100% {
+		transform: translate3d(-100%, 0, 0);
+	}
+}
+</style>
diff --git a/components/uni-number-box/uni-number-box.vue b/components/uni-number-box/uni-number-box.vue
new file mode 100644
index 0000000..f27c06f
--- /dev/null
+++ b/components/uni-number-box/uni-number-box.vue
@@ -0,0 +1,167 @@
+<template>
+	<view class="uni-numbox">
+		<view class="uni-numbox__minus" :class="{'uni-numbox--disabled': inputValue <= min || disabled}" @click="_calcValue('minus')">-</view>
+		<input class="uni-numbox__value" type="number" :disabled="disabled" v-model="inputValue" @blur="_onBlur">
+		<view class="uni-numbox__plus" :class="{'uni-numbox--disabled': inputValue >= max || disabled}" @click="_calcValue('plus')">+</view>
+	</view>
+</template>
+<script>
+	export default {
+		name: 'uni-number-box',
+		props: {
+			value: {
+				type: [Number, String],
+				default: 1
+			},
+			min: {
+				type: Number,
+				default: 0
+			},
+			max: {
+				type: Number,
+				default: 100
+			},
+			step: {
+				type: Number,
+				default: 1
+			},
+			disabled: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				inputValue: 0
+			}
+		},
+		watch: {
+			value(val) {
+				this.inputValue = +val;
+			},
+			inputValue(newVal, oldVal) {
+				if (+newVal !== +oldVal) {
+					this.$emit('change', newVal);
+				}
+			}
+		},
+		methods: {
+			_calcValue(type) {
+				if (this.disabled) {
+					return
+				}
+				const scale = this._getDecimalScale()
+				let value = this.inputValue * scale
+				let step = this.step * scale
+				if (type === 'minus') {
+					value -= step
+				} else if (type === 'plus') {
+					value += step
+				}
+				if (value < this.min || value > this.max) {
+					return
+				}
+				this.inputValue = value / scale;
+			},
+			_getDecimalScale() {
+				let scale = 1
+				// 浮点型
+				if (~~this.step !== this.step) {
+					scale = Math.pow(10, (this.step + '').split('.')[1].length)
+				}
+				return scale
+			},
+			_onBlur(event) {
+				let value = event.detail.value
+				if (!value) {
+					this.inputValue = 0
+					return
+				}
+				value = +value;
+				if (value > this.max) {
+					value = this.max
+				} else if (value < this.min) {
+					value = this.min
+				}
+				this.inputValue = value
+			}
+		},
+		created() {
+			this.inputValue = +this.value;
+		}
+	}
+</script>
+<style>
+	@charset "UTF-8";
+
+	.uni-numbox {
+		display: inline-flex;
+		flex-direction: row;
+		justify-content: flex-start;
+		height: 70upx;
+		position: relative
+	}
+
+	.uni-numbox:after {
+		content: '';
+		position: absolute;
+		transform-origin: center;
+		box-sizing: border-box;
+		pointer-events: none;
+		top: -50%;
+		left: -50%;
+		right: -50%;
+		bottom: -50%;
+		border: 1px solid #c8c7cc;
+		border-radius: 12upx;
+		transform: scale(.5)
+	}
+
+	.uni-numbox__minus,
+	.uni-numbox__plus {
+		margin: 0;
+		background-color: #f8f8f8;
+		width: 70upx;
+		font-size: 40upx;
+		height: 100%;
+		line-height: 70upx;
+		text-align: center;
+		display: inline-flex;
+		align-items: center;
+		justify-content: center;
+		color: #333;
+		position: relative
+	}
+
+	.uni-numbox__value {
+		position: relative;
+		background-color: #fff;
+		width: 80upx;
+		height: 100%;
+		text-align: center;
+		padding: 0
+	}
+
+	.uni-numbox__value:after {
+		content: '';
+		position: absolute;
+		transform-origin: center;
+		box-sizing: border-box;
+		pointer-events: none;
+		top: -50%;
+		left: -50%;
+		right: -50%;
+		bottom: -50%;
+		border-style: solid;
+		border-color: #c8c7cc;
+		border-left-width: 1px;
+		border-right-width: 1px;
+		border-top-width: 0;
+		border-bottom-width: 0;
+		transform: scale(.5)
+	}
+
+	.uni-numbox--disabled {
+		color: silver
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-pagination/uni-pagination.vue b/components/uni-pagination/uni-pagination.vue
new file mode 100644
index 0000000..ff98598
--- /dev/null
+++ b/components/uni-pagination/uni-pagination.vue
@@ -0,0 +1,183 @@
+<template>
+	<view class="uni-pagination">
+		<view class="uni-pagination__btns">
+			<view @click="clickLeft" :class="['uni-pagination__btn',{'uni-pagination--disabled':currentIndex === 1}]" :hover-class="currentIndex === 1 ? '' : 'uni-pagination--hover'" :hover-start-time="20" :hover-stay-time="70">
+				<template v-if="showIcon===true || showIcon === 'true'">
+					<uni-icon color="#000" size="20" type="arrowleft"></uni-icon>
+				</template>
+				<template v-else>
+					{{prevText}}
+				</template>
+			</view>
+			<view @click="clickRight" :class="['uni-pagination__btn',{'uni-pagination--disabled':currentIndex === maxPage}]" :hover-class="currentIndex === maxPage ? '' : 'uni-pagination--hover'" :hover-start-time="20" :hover-stay-time="70">
+				<template v-if="showIcon===true || showIcon === 'true'">
+					<uni-icon color="#000" size="20" type="arrowright"></uni-icon>
+				</template>
+				<template v-else>
+					{{nextText}}
+				</template>
+			</view>
+		</view>
+		<view class="uni-pagination__num">
+			<text class="uni-pagination__num-current">{{currentIndex}}</text>/{{maxPage}}
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '../uni-icon/uni-icon.vue'
+	export default {
+		name: 'uni-pagination',
+		components: {
+			uniIcon
+		},
+		props: {
+			prevText: {
+				type: String,
+				default: '上一页'
+			},
+			nextText: {
+				type: String,
+				default: '下一页'
+			},
+			current: {
+				type: [Number, String],
+				default: 1
+			},
+			total: { //数据总量
+				type: [Number, String],
+				default: 0
+			},
+			pageSize: { //每页数据量
+				type: [Number, String],
+				default: 10
+			},
+			showIcon: { //是否以 icon 形式展示按钮
+				type: [Boolean, String],
+				default: false
+			}
+		},
+		watch: {
+			current(val) {
+				this.currentIndex = +val
+			}
+		},
+		data() {
+			return {
+				currentIndex: 1
+			}
+		},
+		computed: {
+			maxPage() {
+				let maxPage = 1
+				let total = Number(this.total)
+				let pageSize = Number(this.pageSize)
+				if (total && pageSize) {
+					maxPage = Math.ceil(total / pageSize)
+				}
+				return maxPage
+			}
+		},
+		methods: {
+			clickLeft() {
+				if (Number(this.currentIndex) === 1) {
+					return
+				}
+				this.currentIndex -= 1
+				this.change('prev')
+			},
+			clickRight() {
+				if (Number(this.currentIndex) === this.maxPage) {
+					return
+				}
+				this.currentIndex += 1
+				this.change('next')
+			},
+			change(e) {
+				this.$emit('change', {
+					type: e,
+					current: this.currentIndex
+				})
+			}
+		},
+		created() {
+			this.currentIndex = +this.current;
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-pagination {
+		width: 100%;
+		box-sizing: border-box;
+		padding: 0 40upx;
+		position: relative;
+		overflow: hidden;
+		display: flex;
+		flex-direction: row
+	}
+
+	.uni-pagination__btns {
+		flex: 1;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		flex-direction: row
+	}
+
+	.uni-pagination__btn {
+		width: 120upx;
+		height: 60upx;
+		padding: 0 16upx;
+		line-height: 60upx;
+		font-size: 28upx;
+		box-sizing: border-box;
+		position: relative;
+		background-color: #f8f8f8;
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+		align-items: center
+	}
+
+	.uni-pagination__btn:after {
+		content: "";
+		width: 200%;
+		height: 200%;
+		position: absolute;
+		top: 0;
+		left: 0;
+		border: 1px solid #c8c7cc;
+		transform: scale(.5);
+		transform-origin: 0 0;
+		box-sizing: border-box;
+		border-radius: 12upx
+	}
+
+	.uni-pagination__num {
+		width: 100upx;
+		height: 60upx;
+		line-height: 60upx;
+		font-size: 28upx;
+		color: #333;
+		position: absolute;
+		left: 50%;
+		top: 0;
+		transform: translateX(-50%)
+	}
+
+	.uni-pagination__num-current {
+		color: #007aff
+	}
+
+	.uni-pagination--disabled {
+		opacity: .3
+	}
+
+	.uni-pagination--hover {
+		color: rgba(0, 0, 0, .6);
+		background-color: #f1f1f1
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-popup/uni-popup.vue b/components/uni-popup/uni-popup.vue
new file mode 100644
index 0000000..b36fb3c
--- /dev/null
+++ b/components/uni-popup/uni-popup.vue
@@ -0,0 +1,190 @@
+<template>
+	<view class="full-width">
+		<view class="uni-mask" v-show="show" :style="{ top: offsetTop + 'px' }" @click="hide" @touchmove.stop.prevent="moveHandle"></view>
+		<view class="uni-popup" :class="'uni-popup-' + position + ' ' + 'uni-popup-' + mode" v-show="show">
+			{{ msg }}
+			<slot></slot>
+			<view v-if="position === 'middle' && mode === 'insert'" class=" uni-icon uni-icon-close" :class="{
+					'uni-close-bottom': buttonMode === 'bottom',
+					'uni-close-right': buttonMode === 'right'
+				}" @click="closeMask"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'uni-popup',
+		props: {
+			/**
+			 * 页面显示
+			 */
+			show: {
+				type: Boolean,
+				default: false
+			},
+			/**
+			 * 对齐方式
+			 */
+			position: {
+				type: String,
+				//top - 顶部, middle - 居中, bottom - 底部
+				default: 'middle'
+			},
+			/**
+			 * 显示模式
+			 */
+			mode: {
+				type: String,
+				default: 'insert'
+			},
+			/**
+			 * 额外信息
+			 */
+			msg: {
+				type: String,
+				default: ''
+			},
+			/**
+			 * h5遮罩是否到顶
+			 */
+			h5Top: {
+				type: Boolean,
+				default: false
+			},
+			buttonMode: {
+				type: String,
+				default: 'bottom'
+			}
+		},
+		data() {
+			return {
+				offsetTop: 0
+			};
+		},
+		watch: {
+			h5Top(newVal) {
+				if (newVal) {
+					this.offsetTop = 44;
+				} else {
+					this.offsetTop = 0;
+				}
+			}
+		},
+		methods: {
+			hide() {
+				if (this.mode === 'insert' && this.position === 'middle') return;
+				this.$emit('hidePopup');
+			},
+			closeMask() {
+				if (this.mode === 'insert') {
+					this.$emit('hidePopup');
+				}
+			},
+			moveHandle() {}
+		},
+		created() {
+			let offsetTop = 0;
+			//#ifdef H5
+			if (!this.h5Top) {
+				offsetTop = 44;
+			} else {
+				offsetTop = 0;
+			}
+			//#endif
+			this.offsetTop = offsetTop;
+		}
+	};
+</script>
+<style>
+	.uni-mask {
+		position: fixed;
+		z-index: 998;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		left: 0;
+		background-color: rgba(0, 0, 0, 0.3);
+	}
+
+	.uni-popup {
+		position: absolute;
+		z-index: 999;
+		background-color: #ffffff;
+	}
+
+	.uni-popup-middle {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.uni-popup-middle.uni-popup-insert {
+		min-height: 380upx;
+		max-height: 80%;
+		transform: translate(-50%, -65%);
+		background: none;
+		box-shadow: none;
+	}
+
+	.uni-popup-middle.uni-popup-fixed {
+		border-radius: 10upx;
+		padding: 30upx;
+	}
+
+	.uni-close-bottom,
+	.uni-close-right {
+		position: absolute;
+		bottom: -180upx;
+		text-align: center;
+		border-radius: 50%;
+		color: #f5f5f5;
+		font-size: 60upx;
+		font-weight: bold;
+		opacity: 0.8;
+		z-index: -1;
+	}
+
+	.uni-close-bottom {
+		margin: auto;
+		left: 0;
+		right: 0;
+	}
+
+	.uni-close-right {
+		right: -60upx;
+		top: -80upx;
+	}
+
+	.uni-close-bottom:after {
+		content: '';
+		position: absolute;
+		width: 0px;
+		border: 1px #f5f5f5 solid;
+		top: -200upx;
+		bottom: 56upx;
+		left: 50%;
+		transform: translate(-50%, -0%);
+		opacity: 0.8;
+	}
+
+	.uni-popup-top {
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100upx;
+		line-height: 100upx;
+		text-align: center;
+	}
+
+	.uni-popup-bottom {
+		left: 0;
+		bottom: 0;
+		width: 100%;
+		min-height: 100upx;
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-rate/uni-rate.vue b/components/uni-rate/uni-rate.vue
new file mode 100644
index 0000000..53686a1
--- /dev/null
+++ b/components/uni-rate/uni-rate.vue
@@ -0,0 +1,131 @@
+<template>
+	<view class="uni-rate">
+		<view class="uni-rate-icon" v-for="(star, index) in stars" :key="index" :style="{ marginLeft: margin + 'px' }" @click="_onClick(index)">
+			<uni-icon :size="size" :color="color" :type="isFill ? 'star-filled' : 'star'"></uni-icon>
+			<view class="uni-rate-icon-on" :style="{ width: star.activeWitch }">
+				<uni-icon :size="size" :color="activeColor" type="star-filled"></uni-icon>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '../uni-icon/uni-icon.vue';
+	export default {
+		name: 'uni-rate',
+		components: {
+			uniIcon
+		},
+		props: {
+			isFill: {
+				//星星的类型,是否镂空
+				type: [Boolean, String],
+				default: true
+			},
+			color: {
+				//星星的颜色
+				type: String,
+				default: '#ececec'
+			},
+			activeColor: {
+				//星星选中状态颜色
+				type: String,
+				default: '#ffca3e'
+			},
+			size: {
+				//星星的大小
+				type: [Number, String],
+				default: 24
+			},
+			value: {
+				//当前评分
+				type: [Number, String],
+				default: 0
+			},
+			max: {
+				//最大评分
+				type: [Number, String],
+				default: 5
+			},
+			margin: {
+				//星星的间距
+				type: [Number, String],
+				default: 0
+			},
+			disabled: {
+				//是否可点击
+				type: [Boolean, String],
+				default: false
+			}
+		},
+		data() {
+			return {
+				valueSync: ''
+			};
+		},
+		computed: {
+			stars() {
+				const value = Number(this.valueSync) ? Number(this.valueSync) : 0;
+				const starList = [];
+				const floorValue = Math.floor(value);
+				const ceilValue = Math.ceil(value);
+				for (let i = 0; i < this.max; i++) {
+					if (floorValue > i) {
+						starList.push({
+							activeWitch: '100%'
+						});
+					} else if (ceilValue - 1 === i) {
+						starList.push({
+							activeWitch: (value - floorValue) * 100 + '%'
+						});
+					} else {
+						starList.push({
+							activeWitch: '0'
+						});
+					}
+				}
+				return starList;
+			}
+		},
+		methods: {
+			_onClick(index) {
+				if (this.disabled) {
+					return;
+				}
+				this.valueSync = index + 1;
+				this.$emit('change', {
+					value: this.valueSync
+				});
+			}
+		},
+		created() {
+			this.valueSync = this.value;
+		}
+	};
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-rate {
+		line-height: 0;
+		font-size: 0;
+		display: flex;
+		flex-direction: row
+	}
+
+	.uni-rate-icon {
+		position: relative;
+		line-height: 0;
+		font-size: 0;
+		display: inline-block
+	}
+
+	.uni-rate-icon-on {
+		line-height: 1;
+		position: absolute;
+		top: 0;
+		left: 0;
+		overflow: hidden
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-status-bar/uni-status-bar.vue b/components/uni-status-bar/uni-status-bar.vue
new file mode 100644
index 0000000..06f57a3
--- /dev/null
+++ b/components/uni-status-bar/uni-status-bar.vue
@@ -0,0 +1,26 @@
+<template>
+	<view class="uni-status-bar" :style="{ height: statusBarHeight }">
+		<slot></slot>
+	</view>
+</template>
+
+<script>
+	var statusBarHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
+	export default {
+		name: 'uni-status-bar',
+		data() {
+			return {
+				statusBarHeight: statusBarHeight
+			};
+		}
+	};
+</script>
+
+<style>
+	.uni-status-bar {
+		display: block;
+		width: 100%;
+		height: 20px;
+		height: var(--status-bar-height);
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-steps/uni-steps.vue b/components/uni-steps/uni-steps.vue
new file mode 100644
index 0000000..573ffee
--- /dev/null
+++ b/components/uni-steps/uni-steps.vue
@@ -0,0 +1,218 @@
+<template>
+	<view class="uni-steps">
+		<view class="uni-steps-items" :class="'uni-steps-' + direction">
+			<view class="uni-steps-item" v-for="(item,index) in options" :key="index" :class="{'uni-steps-process':index === active,'uni-steps-finish':index < active}">
+				<view class="uni-steps-item-title-container" :style="{color:index === active ? activeColor : ''}">
+					<view class="uni-steps-item-title">{{ item.title }}</view>
+					<view class="uni-steps-item-desc" v-if="item.desc">{{ item.desc}}</view>
+				</view>
+				<view class="uni-steps-item-circle-container">
+					<view class="uni-steps-item-circle" v-if="index !== active" :style="{backgroundColor:index < active ? activeColor : ''}"></view>
+					<uni-icon v-else type="checkbox-filled" size="14" :color="activeColor"></uni-icon>
+				</view>
+				<view class="uni-steps-item-line" v-if="index !== options.length-1" :style="{backgroundColor:index < active ? activeColor : ''}"></view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '../uni-icon/uni-icon.vue'
+	export default {
+		name: "uni-steps",
+		components: {
+			uniIcon
+		},
+		props: {
+			direction: { //排列方向 row column
+				type: String,
+				default: 'row'
+			},
+			activeColor: { //激活状态颜色
+				type: String,
+				default: '#1aad19'
+			},
+			active: { //当前步骤
+				type: Number,
+				default: 0
+			},
+			options: Array //数据
+		},
+		data() {
+			return {}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-steps {
+		width: 100%;
+		box-sizing: border-box;
+		display: flex;
+		flex-direction: column;
+		overflow: hidden;
+		position: relative
+	}
+
+	.uni-steps-items {
+		position: relative;
+		display: flex;
+		flex-direction: row;
+		margin: 10px;
+		box-sizing: border-box;
+		overflow: hidden
+	}
+
+	.uni-steps-items.uni-steps-column {
+		margin: 10px 0;
+		padding-left: 31px;
+		flex-direction: column
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item:after {
+		content: ' ';
+		position: absolute;
+		height: 1px;
+		width: 100%;
+		bottom: 9px;
+		left: 0;
+		background-color: #ebedf0;
+		transform: scaleY(.5)
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item:last-child {
+		position: relative
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item:last-child:after {
+		height: 0
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item:last-child .uni-steps-item-title-container {
+		text-align: left
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item:last-child .uni-steps-item-circle-container {
+		left: -17px;
+		right: auto
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item-title-container {
+		transform: none;
+		display: block;
+		line-height: 36upx
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item-title {
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		overflow: hidden
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item-desc {
+		white-space: normal;
+		display: -webkit-box;
+		-webkit-box-orient: vertical;
+		-webkit-line-clamp: 2;
+		overflow: hidden
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item-circle-container {
+		left: -17px;
+		top: -1px;
+		bottom: auto;
+		padding: 8px 0;
+		z-index: 1
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item-line {
+		height: 100%;
+		width: 1px;
+		left: -15px;
+		top: -1px;
+		bottom: auto
+	}
+
+	.uni-steps-items.uni-steps-column .uni-steps-item.uni-steps-process .uni-steps-item-circle-container {
+		bottom: auto;
+		left: -21px
+	}
+
+	.uni-steps-item {
+		flex: 1;
+		position: relative;
+		padding-bottom: 18px
+	}
+
+	.uni-steps-item-title-container {
+		text-align: left;
+		margin-left: 3px;
+		display: inline-block;
+		transform: translateX(-50%);
+		color: #999
+	}
+
+	.uni-steps-item-title {
+		font-size: 28upx
+	}
+
+	.uni-steps-item-desc {
+		font-size: 24upx
+	}
+
+	.uni-steps-item:first-child .uni-steps-item-title-container {
+		transform: none;
+		margin-left: 0
+	}
+
+	.uni-steps-item:last-child {
+		position: absolute;
+		right: 0
+	}
+
+	.uni-steps-item:last-child .uni-steps-item-title-container {
+		transform: none;
+		text-align: right
+	}
+
+	.uni-steps-item:last-child .uni-steps-item-circle-container {
+		left: auto;
+		right: -8px
+	}
+
+	.uni-steps-item-circle-container {
+		position: absolute;
+		bottom: 8px;
+		left: -8px;
+		padding: 0 8px;
+		background-color: #fff;
+		z-index: 1
+	}
+
+	.uni-steps-item-circle {
+		width: 5px;
+		height: 5px;
+		background-color: #999;
+		border-radius: 50%
+	}
+
+	.uni-steps-item-line {
+		background-color: #ebedf0;
+		position: absolute;
+		bottom: 10px;
+		left: 0;
+		width: 100%;
+		height: 1px
+	}
+
+	.uni-steps-item.uni-steps-finish .uni-steps-item-title-container {
+		color: #333
+	}
+
+	.uni-steps-item.uni-steps-process .uni-steps-item-circle-container {
+		bottom: 3px;
+		display: flex
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-swipe-action/uni-swipe-action.vue b/components/uni-swipe-action/uni-swipe-action.vue
new file mode 100644
index 0000000..d4b481a
--- /dev/null
+++ b/components/uni-swipe-action/uni-swipe-action.vue
@@ -0,0 +1,233 @@
+<template>
+	<view class="uni-swipe-action">
+		<view class="uni-swipe-action__container" :class="{'uni-swipe-action--show':isShowBtn}" @touchstart="touchStart" @touchmove="touchMove" @touchend="touchEnd" @touchcancel="touchEnd" @click="bindClickCont" :style="{'transform':transformX,'-webkit-transform':transformX}">
+			<view class="uni-swipe-action__content">
+				<slot></slot>
+			</view>
+			<view class="uni-swipe-action__btn-group" :id="elId">
+				<div v-for="(item,index) in options" :key="index" class="uni-swipe-action--btn" :style="{backgroundColor: item.style && item.style.backgroundColor ? item.style.backgroundColor : '#C7C6CD',color: item.style && item.style.color ? item.style.color : '#FFFFFF',fontSize: item.style && item.style.fontSize ? item.style.fontSize : '28rpx',borderRadius: item.style && item.style.borderRadius ? item.style.borderRadius : '1rpx'}" @click="bindClickBtn(item,index)">
+					{{item.text}}
+				</div>
+			</view>
+		</view>
+		<view class="uni-swipe-action__mask" v-if="isShowBtn" @click="close" @touchmove.stop.prevent="close"></view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'uni-swipe-action',
+		props: {
+			isDrag: {
+				type: Boolean,
+				default: false
+			},
+			isOpened: {
+				type: Boolean,
+				default: false
+			},
+			disabled: {
+				type: Boolean,
+				default: false
+			},
+			autoClose: {
+				type: Boolean,
+				default: true
+			},
+			options: Array
+		},
+		watch: {
+			isOpened(newValue, oldValue) {
+				this.isShowBtn = newValue ? true : false;
+				this.endMove();
+			}
+		},
+		data() {
+			const elId = `Uni_${Math.ceil(Math.random() * 10e5).toString(36)}`
+			return {
+				elId: elId,
+				isShowBtn: false,
+				transformX: 'translateX(0px)'
+			}
+		},
+		created() {
+			this.direction = ''
+			this.startX = 0
+			this.startY = 0
+			this.btnGroupWidth = 0
+			this.isMoving = false
+			this.startTime = 0
+		},
+		// #ifdef H5
+		mounted() {
+			this.getSize()
+		},
+		// #endif
+		// #ifndef H5
+		onReady() {
+			this.getSize()
+		},
+		// #endif
+		methods: {
+			getSize() {
+				uni.createSelectorQuery().in(this).select(`#${this.elId}`).boundingClientRect().exec((ret) => {
+					this.btnGroupWidth = ret[0].width;
+				});
+				if (this.isOpened === true) {
+					this.isShowBtn = true;
+					this.endMove();
+				}
+			},
+			bindClickBtn(item, index) {
+				this.$emit('click', {
+					text: item.text,
+					style: item.style,
+					index: index
+				})
+			},
+			bindClickCont(e) {
+				if (this.isShowBtn && this.autoClose === true) {
+					this.isShowBtn = false;
+					this.endMove();
+				}
+			},
+			touchStart(event) {
+				this.startTime = event.timeStamp;
+				this.startX = event.touches[0].pageX;
+				this.startY = event.touches[0].pageY;
+			},
+			touchMove(event) {
+				if (this.direction === 'Y' || this.disabled === true) {
+					return;
+				}
+				var moveY = event.touches[0].pageY - this.startY,
+					moveX = event.touches[0].pageX - this.startX;
+				if (!this.isMoving && Math.abs(moveY) > Math.abs(moveX)) { //纵向滑动
+					this.direction = 'Y';
+					return;
+				}
+				this.direction = moveX > 0 ? 'right' : 'left';
+				this.isMoving = true;
+				if (this.isDrag) {
+					let movedLength = this.isShowBtn ? -this.btnGroupWidth : 0;
+					if (movedLength + moveX >= 0) {
+						this.transformX = `translateX(0px)`;
+						return;
+					}
+					if (-movedLength - moveX >= this.btnGroupWidth) {
+						this.transformX = `translateX(${-this.btnGroupWidth}px)`;
+						return;
+					}
+					if (movedLength - moveX > 0) {
+						this.transformX = `translateX(${moveX}px)`;
+					} else {
+						if (moveX >= -this.btnGroupWidth) {
+							this.transformX = `translateX(${moveX - this.btnGroupWidth}px)`;
+						}
+					}
+				}
+			},
+			touchEnd(event) {
+				this.isMoving = false;
+				if (this.direction !== 'right' && this.direction !== 'left') {
+					this.direction = '';
+					return;
+				}
+				if (this.isDrag) {
+					let movedLength = Math.abs(Number(this.transformX.slice(11, -3)));
+					let movedTime = event.timeStamp - this.startTime;
+					this.isShowBtn = movedLength >= this.btnGroupWidth / 2 ? true : false;
+					if (50 < movedTime && movedTime < 300 && movedLength > 20) { //在这个时间里面,且滑动了一定的距离
+						if (this.direction == 'right') {
+							this.isShowBtn = false
+						} else {
+							this.isShowBtn = true
+						}
+					}
+				} else {
+					if (this.direction == 'right') {
+						this.isShowBtn = false
+					} else {
+						this.isShowBtn = true
+					}
+				}
+
+				this.endMove()
+			},
+			endMove() {
+				if (this.direction === 'Y' || this.disabled === true) {
+					this.direction = '';
+					return;
+				}
+				if (this.isShowBtn) {
+					this.transformX = `translateX(${-this.btnGroupWidth}px)`;
+					this.$emit('opened');
+				} else {
+					this.transformX = 'translateX(0px)';
+					this.$emit('closed');
+				}
+				this.direction = '';
+			},
+			close() {
+				this.isShowBtn = false
+				this.endMove()
+			}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-swipe-action {
+		width: 100%;
+		overflow: hidden
+	}
+
+	.uni-swipe-action__container {
+		position: relative;
+		color: #FF9900;
+		/* background-color: #fff; */
+		width: 200%;
+		display: flex;
+		flex-direction: row;
+		flex-wrap: wrap;
+		transition: transform 350ms cubic-bezier(.165, .84, .44, 1)
+	}
+
+	.uni-swipe-action__content {
+		width: 50%
+	}
+
+	.uni-swipe-action__btn-group {
+		display: flex;
+		flex-direction: row
+	}
+
+	.uni-swipe-action--show {
+		position: relative;
+		z-index: 1000
+	}
+
+	.uni-swipe-action--btn {
+		padding: 0 32upx;
+		color: #fff;
+		background-color: #c7c6cd;
+		font-size: 28upx;
+		display: inline-flex;
+		text-align: center;
+		flex-direction: row;
+		align-items: center
+	}
+
+	.uni-swipe-action__mask {
+		display: block;
+		opacity: 0;
+		position: fixed;
+		z-index: 999;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-swiper-dot/uni-swiper-dot.vue b/components/uni-swiper-dot/uni-swiper-dot.vue
new file mode 100644
index 0000000..64083b5
--- /dev/null
+++ b/components/uni-swiper-dot/uni-swiper-dot.vue
@@ -0,0 +1,158 @@
+<template>
+	<view class="uni-swiper__warp">
+		<slot></slot>
+		<view v-if="mode === 'default'" class="uni-swiper__dots-box" :style="{'bottom':dots.bottom + 'px'}">
+			<view class="uni-swiper__dots-item" v-for="(item,index) in info" :style="{
+				 'width': dots.width + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}" :key="index"></view>
+		</view>
+		<view v-if="mode === 'long'" class="uni-swiper__dots-box" :style="{'bottom':dots.bottom + 'px'}">
+			<view class="uni-swiper__dots-item " v-for="(item,index) in info" :class="[index === current&&'uni-swiper__dots-long']" :style="{
+				 'width':(index === current? dots.width*3:dots.width ) + 'px','height':dots.height +'px' ,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}" :key="index"></view>
+		</view>
+		<view v-if="mode === 'nav'" class="uni-swiper__dots-box uni-swiper__dots-nav" :style="{'background-color':dotsStyles.backgroundColor}">
+			<view class="uni-swiper__dots-nav-item" :style="{'color':dotsStyles.color}">{{(current+1)+"/"+info.length}}
+				{{info[current][field]}}</view>
+		</view>
+		<view v-if="mode === 'indexes'" class="uni-swiper__dots-box" :style="{'bottom':dots.bottom + 'px'}">
+			<view class="uni-swiper__dots-item uni-swiper__dots-indexes" v-for="(item,index) in info" :style="{
+				 'width':dots.width + 'px','height':dots.height +'px' ,'color':index === current?dots.selectedColor:dots.color,'background-color':index !== current?dots.backgroundColor:dots.selectedBackgroundColor,'border':index !==current ? dots.border:dots.selectedBorder}" :key="index">{{index+1}}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'uni-swiper-dot',
+		props: {
+			info: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			current: {
+				info: Number,
+				default: 0
+			},
+			dotsStyles: {
+				type: Object,
+				default () {
+					return {}
+				}
+			},
+			// 类型 :default(默认) indexes long nav
+			mode: {
+				type: String,
+				default: 'default'
+			},
+			// 只在 nav 模式下生效,变量名称
+			field: {
+				type: String,
+				default: ''
+			}
+		},
+		data() {
+			return {
+				dots: {
+					width: 8,
+					height: 8,
+					bottom: 10,
+					color: '#fff',
+					backgroundColor: 'rgba(0, 0, 0, .3)',
+					border: '1px rgba(0, 0, 0, .3) solid',
+					selectedBackgroundColor: '#333',
+					selectedBorder: '1px rgba(0, 0, 0, .9) solid'
+				}
+			};
+		},
+		created() {
+			if (this.mode === 'indexes') {
+				this.dots.width = 20
+				this.dots.height = 20
+			}
+			this.dots = Object.assign(this.dots, this.dotsStyles)
+		},
+		watch: {
+			dotsStyles(newVal) {
+				this.dots = Object.assign(this.dots, this.dotsStyles)
+			},
+			mode(newVal) {
+				if (newVal === 'indexes') {
+					this.dots.width = 20
+					this.dots.height = 20
+				} else {
+					this.dots.width = 8
+					this.dots.height = 8
+				}
+			}
+
+		}
+	}
+</script>
+
+<style>
+	.uni-swiper__warp {
+		position: relative;
+		width: 100%;
+		box-sizing: border-box;
+		overflow: hidden;
+	}
+
+	.uni-swiper__dots-box {
+		position: absolute;
+		bottom: 20upx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		box-sizing: box-sizing;
+		width: 100%;
+	}
+
+	.uni-swiper__dots-item {
+		flex-shrink: 0;
+		width: 16upx;
+		border-radius: 50%;
+		margin-left: 12upx;
+		background: rgba(0, 0, 0, .3);
+		transition: all 0.2s linear;
+	}
+
+	.uni-swiper__dots-item:first-child {
+		margin: 0;
+	}
+
+	.uni-swiper__dots-default {
+		border-radius: 50%;
+	}
+
+	.uni-swiper__dots-long {
+		border-radius: 100upx;
+	}
+
+	.uni-swiper__dots-nav {
+		bottom: 0;
+		height: 80upx;
+		justify-content: flex-start;
+		background: rgba(0, 0, 0, 0.2);
+		box-sizing: box-sizing;
+		overflow: hidden;
+	}
+
+	.uni-swiper__dots-nav-item {
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		font-size: 28upx;
+		color: #fff;
+		box-sizing: box-sizing;
+		margin: 0 30upx;
+	}
+
+	.uni-swiper__dots-indexes {
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		color: #fff;
+		font-size: 24upx;
+	}
+</style>
\ No newline at end of file
diff --git a/components/uni-tag/uni-tag.vue b/components/uni-tag/uni-tag.vue
new file mode 100644
index 0000000..46bda64
--- /dev/null
+++ b/components/uni-tag/uni-tag.vue
@@ -0,0 +1,135 @@
+<template>
+	<view class="uni-tag" v-if="text" :class="[disabled === true || disabled === 'true' ? 'uni-tag--disabled' : '',inverted === true || inverted === 'true' ? 'uni-tag--inverted' : '',circle === true || circle === 'true' ? 'uni-tag--circle' : '',mark === true || mark === 'true' ? 'uni-tag--mark' : '','uni-tag--'+size,'uni-tag--'+type]" @click="onClick()">{{text}}</view>
+</template>
+
+<script>
+	export default {
+		name: 'uni-tag',
+		props: {
+			type: { //标签类型default、primary、success、warning、danger、royal
+				type: String,
+				default: 'default'
+			},
+			size: { //标签大小 normal, small
+				type: String,
+				default: 'normal'
+			},
+			text: String, //标签内容
+			disabled: { //是否为禁用状态
+				type: [String, Boolean],
+				defalut: false
+			},
+			inverted: { //是否为空心
+				type: [String, Boolean],
+				defalut: false
+			},
+			circle: { //是否为圆角样式
+				type: [String, Boolean],
+				defalut: false
+			},
+			mark: { //是否为标记样式
+				type: [String, Boolean],
+				defalut: false
+			}
+		},
+		methods: {
+			onClick() {
+				if (this.disabled === true || this.disabled === 'true') {
+					return;
+				}
+				this.$emit('click')
+			}
+		}
+	}
+</script>
+
+<style>
+	@charset "UTF-8";
+
+	.uni-tag {
+		box-sizing: border-box;
+		padding: 0 32upx;
+		height: 60upx;
+		line-height: calc(60upx - 2px);
+		font-size: 28upx;
+		display: inline-flex;
+		align-items: center;
+		color: #333;
+		border-radius: 6upx;
+		background-color: #f8f8f8;
+		border: 1px solid #f8f8f8
+	}
+
+	.uni-tag--circle {
+		border-radius: 30upx
+	}
+
+	.uni-tag--mark {
+		border-radius: 0 30upx 30upx 0
+	}
+
+	.uni-tag--disabled {
+		opacity: .5
+	}
+
+	.uni-tag--small {
+		height: 40upx;
+		padding: 0 16upx;
+		line-height: calc(40upx - 2px);
+		font-size: 24upx
+	}
+
+	.uni-tag--primary {
+		color: #fff;
+		background-color: #007aff;
+		border: 1px solid #007aff
+	}
+
+	.uni-tag--primary.uni-tag--inverted {
+		color: #007aff;
+		background-color: #fff;
+		border: 1px solid #007aff
+	}
+
+	.uni-tag--success {
+		color: #fff;
+		background-color: #4cd964;
+		border: 1px solid #4cd964
+	}
+
+	.uni-tag--success.uni-tag--inverted {
+		color: #4cd964;
+		background-color: #fff;
+		border: 1px solid #4cd964
+	}
+
+	.uni-tag--warning {
+		color: #fff;
+		background-color: #f0ad4e;
+		border: 1px solid #f0ad4e
+	}
+
+	.uni-tag--warning.uni-tag--inverted {
+		color: #f0ad4e;
+		background-color: #fff;
+		border: 1px solid #f0ad4e
+	}
+
+	.uni-tag--error {
+		color: #fff;
+		background-color: #dd524d;
+		border: 1px solid #dd524d
+	}
+
+	.uni-tag--error.uni-tag--inverted {
+		color: #dd524d;
+		background-color: #fff;
+		border: 1px solid #dd524d
+	}
+
+	.uni-tag--inverted {
+		color: #333;
+		background-color: #fff;
+		border: 1px solid #f8f8f8
+	}
+</style>
\ No newline at end of file
diff --git a/components/xing-refresh/xing-refresh.vue b/components/xing-refresh/xing-refresh.vue
new file mode 100644
index 0000000..d07f465
--- /dev/null
+++ b/components/xing-refresh/xing-refresh.vue
@@ -0,0 +1,162 @@
+<template>
+	<view>
+		<movable-area :style="'height:' + scrollHeight + 'px;width:100%'">
+			<movable-view :style="'height:' + (topHeight + scrollHeight) + 'px;width:100%;z-index:3'" direction="vertical"
+			 :out-of-bounds="true" :disabled="!scrollmark || status == 3" :y="y" :damping="50" @touchstart="touchstart"
+			 @touchend="touchend" @change="change">
+				<view :style="'height:' + topHeight + 'px;position:relative'">
+					<slot name="top"></slot>
+				</view>
+				<scroll-view :style="'height:' + scrollHeight + 'px;'" :scroll-y="status !== 3" :scroll-with-animation="scrollAnimation"
+				 :scroll-top="top" @scroll="scroll" @scrolltolower="scrolltolower">
+					<view>
+						<slot name="content"></slot>
+						<template v-if="downLoading">
+							<slot name="bottom"></slot>
+						</template>
+					</view>
+				</scroll-view>
+			</movable-view>
+		</movable-area>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			downLoading: {
+				//控制下面下拉加载区的显示 , 默认关闭
+				type: Boolean,
+				default: false
+			},
+			scrollHeight: {
+				//scroll显示区的高度(px)
+				type: Number,
+				default: 550
+			},
+			topHeight: {
+				//下拉区的高度(px)
+				type: Number,
+				default: 60
+			},
+			interruptPosition: {
+				//暂停区的高度(px)
+				type: Number,
+				default: 40
+			},
+			damping: {
+				//回弹动画的速度 , 值越大越快
+				type: Number,
+				default: 50
+			},
+			scrollTop: {
+				//即scroll-top属性 设置竖向滚动条位置
+				type: Number,
+				default: 0
+			},
+			scrollAnimation: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				isTouch: false, //触摸的标识
+				y: 0, //控制y
+				diff: 0, //定值topHeight-interruptPotion
+				scrollmark: true,
+				timeId: null,
+				top: 0,
+				status: 0,
+				count: 0.01,
+				scrollCount: 0.01,
+				fingers: 0, //记录手指数
+				clearFingers: null, //清除手指定时器
+			};
+		},
+		changePositon() {
+
+		},
+		created() {
+			this.y = -this.topHeight;
+			this.diff = this.interruptPosition - this.topHeight;
+		},
+		methods: {
+			change(e) {
+				//为3即是正在回弹状态
+				if (this.status == 3 || !this.isTouch) return;
+
+				if (e.detail.y >= this.diff || this.fingers > 1) {
+					this.status = 2;
+				} else if (e.detail.y < this.diff) {
+					this.status = 1;
+				}
+			},
+			touchstart(e) {
+				this.fingers++;
+				this.isTouch = true;
+			},
+			touchend(e) {
+				clearTimeout(this.clearFingers);
+				this.clearFingers = setTimeout(() => {
+					this.fingers = 0;
+					//重置手指数防止bug;
+				}, 200);
+				this.fingers--;
+				if (this.status == 3 || this.fingers != 0) return; //防止多指下滑问题 , 匹配手指 只用到最后一次touchend;栈的思想
+				this.isTouch = false;
+				if (this.scrollmark) {
+					if (this.status == 2) {
+						this.status = 3;
+						this.y = this.diff;
+						this.$emit('interrupt', () => {
+							this.y = -this.topHeight - 0.02;
+							setTimeout(() => {
+								this.$emit('finished');
+								this.status = 0; //回弹过程中
+								this.y = -this.topHeight; //结束之后,再次设置y坐标
+							}, 200);
+						});
+					} else if (this.status == 1) {
+						this.status = 3;
+						this.y = -this.topHeight + this.count;
+						//微小改变 否则无响应
+						this.count = -this.count;
+						setTimeout(() => {
+							this.status = 0; //回弹过程中
+						}, 200);
+					}
+				}
+			},
+
+			scroll(e) {
+				//事件
+				this.$emit('scroll', e)
+				clearTimeout(this.timeId);
+				this.scrollmark = false;
+				this.timeId = setTimeout(() => {
+					if (e.detail.scrollTop <= 15 || e.detail.scrollTop - e.detail.deltaY <= 0) {
+						this.top = 0 + this.count;
+						this.$emit('scrolltoupper', e)
+						this.scrollCount = -this.scrollCount;
+						this.scrollmark = true;
+					}
+				}, 100);
+			},
+			scrolltolower(e) {
+				this.$emit('scrolltolower', e);
+			}
+		},
+		watch: {
+			status(value) {
+				if (this.status == 2) this.$emit('pushToInterrupt');
+				else if (this.status == 1) this.$emit('backToInterrupt');
+			},
+			scrollTop() {
+				this.top = this.scrollTop;
+			}
+		}
+	};
+</script>
+
+<style></style>
diff --git "a/components/xing-refresh/\345\256\214\345\205\250\350\207\252\345\256\232\344\271\211\347\232\204\345\270\246\346\234\211\344\270\213\346\213\211\345\210\267\346\226\260\347\232\204scroll-view\347\273\204\344\273\266.md" "b/components/xing-refresh/\345\256\214\345\205\250\350\207\252\345\256\232\344\271\211\347\232\204\345\270\246\346\234\211\344\270\213\346\213\211\345\210\267\346\226\260\347\232\204scroll-view\347\273\204\344\273\266.md"
new file mode 100644
index 0000000..b115110
--- /dev/null
+++ "b/components/xing-refresh/\345\256\214\345\205\250\350\207\252\345\256\232\344\271\211\347\232\204\345\270\246\346\234\211\344\270\213\346\213\211\345\210\267\346\226\260\347\232\204scroll-view\347\273\204\344\273\266.md"
@@ -0,0 +1,192 @@
+## 完全自定义的带有下拉刷新的scroll-view组件
+
+​	看到很多人都需要下拉刷新的scroll-view组件 , 也有很多是从自己项目中抽离出来的组件 . 前端不是设计师 , 而且也难以定制样式 , 授人🐟不如授之以渔 , 所以我这边写了一个基于scroll-view的带下拉刷新的组件 . 我这边只封装了逻辑和进行优化组件的性能 . 
+
+​	大致说明下效果 下拉时遵循一个 ease-in-out曲线(慢快慢,即手滑动距离与下拉距离非线性)  , 下拉距离至超过设置值时 可以有回弹后暂停继续回弹的效果,可以参照手机QQ的下拉刷新效果 ; 过程中有钩子事件 , 你可以改变下拉框的内容和发送请求或别的事情 . 可以看gif 可能有些卡 但是实际上不是卡的(电脑端) 手机端不知道怎么样
+
+
+
+#### 自定义属性
+
+```Javascript
+upRefresh: {
+	//是否开启下拉刷新功能 , 不要动态改变这个属性
+​      type: Boolean,
+    
+​      default: true
+
+​    },
+	//控制显示底部的提示框(可配合scrolltolower事件用于底部加载 )
+​    downLoading: {
+
+​      type: Boolean,
+
+​      default: false
+
+​    },
+
+​    scrollHeight: {
+
+​      //scroll显示区的高度(rpx)
+
+​      type: Number,
+
+​      default: 800
+
+​    },
+
+​    moveMax: {
+
+​      //可下拉的最大距离 指手指滑动的距离(px)  超出后会被截断 此时下拉框已经完全显示 即已经到达
+//下面属性topHeight的高度
+
+​      type: Number,
+
+​      default: 300
+
+​    },
+
+​    topHeight: {
+    
+​      //下拉整个框的最大的高度
+
+​      type: Number,
+
+​      default: 100
+
+​    },
+
+​    animationTime: {
+
+​      //回弹的缓动时间 当upFresh完全显示时 需要花费300ms回弹
+
+​      //upFresh不完全显示时 时间减少 距离曲线按照ease-in-out函数 慢->快->慢
+
+​      type: Number,
+
+​      default: 300
+
+​    },
+
+​    interruptPosition: {
+​      //回弹中断时的高度(px),同时判断是否下拉成功钩子的临界点 建议设置成传入提示框的高度以保持回弹暂停时文字的居中
+​      type: Number,
+
+​      default: 40
+
+​    }
+```
+
+#### 自定义事件和下拉时的钩子
+
+@start,@move,@end 对应touchstart,touchmove,touchend事件参数为event
+
+**注意这些事件判断标准都是下拉的高度 , 而不是手指移动的距离**
+
+**重要!**
+
+##### @pushToInterrupt 下拉达到interruptPosition就会触发这个钩子 下拉过程中只会执行一次
+
+##### @interrupt 回弹暂停的钩子,此时高度为interruptPosition,参数为解除回弹暂停的函数
+
+##### @finished 最后回弹结束高度为0时的钩子
+
+#### **插槽**
+
+```
+<template slot="top"></template>
+<template slot="content"></template>
+<template slot="bottom"></template>
+```
+
+top对应传入提示文字内容 整个下拉框要因为要设置height的变化 所以无法移除 设置了 position:relative , 你可以 slot可以设置position:absolute来控制居中之类的 如果有有要求可以回到源码中改 比如
+
+```html
+<template slot="top">
+<view :style="'position: absolute;bottom: 0px;height: ' + 40 + 'px;line-height:' + 40 + 'px;width: 100%;text-align: center;'">{{tip}}</view>
+</template>
+//设置 position: absolute;bottom: 0px; 可以使提示文字一直在下拉框底部
+//上面提到interruptPosition建议为slot的view的高度40 以保证暂停时文字的居中
+```
+
+```html
+源码
+ <view
+      class="transform will"
+      v-if="upRefresh"
+      :style="'position:relative;height:' + height + 'px;'"
+    >
+      <slot name="top"></slot>
+    </view>
+//其他样式也可自行修改 , "'height:'+height+'px'"为控制下拉框变化部分 , 不可修改
+```
+
+其他两个content即为view-scroll的内容 bottom为底部加载的内容(默认关闭)
+
+#### 示例
+
+```Javascript
+<view class="content">
+		<refresh @interrupt="interrupt" @pushToInterrupt="pushToInterrupt" @finished="finished" @scrolltolower="g">
+			<template slot="top">
+					<view :style="'position: absolute;bottom: 0px;height: ' + 40 + 'px;line-height:' + 40 + 'px;width: 100%;text-align: center;'">
+					{{tip}}	
+					</view>
+			</template>
+			<template slot="content">
+				<view v-for="index in 5" :key="index" class="" style="height: 500px;background:#B2B2B2;border: #2C405A 1px solid;">在美国总统眼里,一切都是生意,只要是生意他不在乎用什么手段。他更喜欢用敲诈勒索,刮地三尺来榨取别国的血汗钱来实现美国的伟大。就在这段日子里,美国总统喊话日韩,要求韩国上交50亿美元保护费,要求日本支付比现在多5倍的保护费,如果不给,就等着美国的怒火吧。美国总统这种做法给了日韩很大的压力,他们在给与不给的选择上左右为难,然而有一个国家却不管美国总统的臭毛病。要求韩国上交50亿美元保护费,要求日本支付比现在多5倍的保护费,如果不给,就等着美国的怒火吧。美国总统这种做法给了日韩很大的压力,他们在给与不给的选择上左右为难,然而有一个国家却不管美国总统的臭毛病。
+				</view>
+			</template>
+			<template slot="bottom">
+				<view>
+				11111111111111111111111111111111111111111111111
+				</view>
+			</template>
+		</refresh>
+	</view>
+	<script>
+import refresh from '@/components/refresh.vue';
+export default {
+	components: {
+		refresh
+	},
+	data() {
+		return {
+			tip: '下拉刷新'
+		};
+	},
+	onLoad() {},
+	methods: {
+		g(e){},
+		interrupt(e) {
+            this.tip = '刷新中'
+            //模拟发送请求
+			setTimeout(e, 500);
+			this.tip = '刷新成功';
+		},
+		pushToInterrupt() {
+			this.tip = '释放刷新';
+		},
+		finished() {
+			this.tip = '下拉刷新';
+		}
+	}
+};
+</script>
+
+<style></style>
+
+```
+
+(1)下拉至interrupt,tip:下拉刷新->释放刷新 
+
+(2)回弹中断:tip->刷新中,发送请求 ,回调函数 tip->刷新成功 ,执行参数e() 回弹继续
+
+(3)完成整个过程 tip->释放刷新
+
+###### 其他的问题
+
+我这边只测试了h5端和微信小程序开发者工具 , 基本上bug已经被改完了,但是注意小程序端我这边使用的是自定义组件是成功的 非自定义组件不成功 , 貌似是uniapp非自定义组件不支持多slot的原因 只显示了content的slot(再次吐槽uniapp对插槽支持度 不完善slot和slot作用域非常影响插件质量) 你可以把提示移入源码都可以的 .  视极端与否 有bug可以在下面反馈下
+
+ 
+
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseAudio.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseAudio.vue
new file mode 100644
index 0000000..86df246
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseAudio.vue
@@ -0,0 +1,27 @@
+<template>
+  <!--增加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>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseImg.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseImg.vue
new file mode 100644
index 0000000..623c416
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseImg.vue
@@ -0,0 +1,90 @@
+<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,
+			};
+		},
+		props: {
+			node: {
+				type: Object,
+				default () {
+					return {};
+				},
+			},
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseImgTap(e) {
+				if (!this.preview) return;
+				const {
+					src
+				} = e.currentTarget.dataset;
+				if (!src) return;
+				this.uparse.preview(src, e);
+			},
+			// 图片视觉宽高计算函数区
+			wxParseImgLoad(e) {
+				const {
+					src
+				} = e.currentTarget.dataset;
+				if (!src) return;
+				const {
+					width,
+					height
+				} = e.mp.detail;
+				const recal = this.wxAutoImageCal(width, height);
+				const {
+					imageheight,
+					imageWidth
+				} = recal;
+				const {
+					padding,
+					mode
+				} = this.node.attr;
+				const {
+					styleStr
+				} = this.node;
+				const imageHeightStyle = mode === 'widthFix' ? '' : `height: ${imageheight}px;`;
+				this.newStyleStr = `${styleStr || ''}; ${imageHeightStyle || ''}; width:` + (!imageWidth || imageWidth === '100%' ? '100%;' : `${imageWidth}px;`) +`padding: 0 ${+padding}px;`;
+			},
+			// 计算视觉优先的图片宽高
+			wxAutoImageCal(originalWidth, originalHeight) {
+				// 获取图片的原始长宽
+				const {
+					padding
+				} = this.node.attr;
+				const windowWidth = this.node.$screen.width - (2 * padding);
+				const results = {};
+
+				if (originalWidth < 60 || originalHeight < 60) {
+					const {
+						src
+					} = this.node.attr;
+					this.uparse.removeImageUrl(src);
+					this.preview = false;
+				}
+
+				// 判断按照那种方式进行缩放
+				if (originalWidth > windowWidth) {
+					// 在图片width大于手机屏幕width时候
+					results.imageWidth = '100%';
+					results.imageheight = (windowWidth * (originalHeight / originalWidth));
+				} else {
+					// 否则展示原来的数据
+					results.imageWidth = originalWidth;
+					results.imageheight = originalHeight;
+				}
+
+				return results;
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate0.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate0.vue
new file mode 100644
index 0000000..1045ebb
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate0.vue
@@ -0,0 +1,104 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--table类型-->
+			<block v-else-if="node.tag == 'table'">
+				<view :class="node.classStr" class="table" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate1';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate0',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;// TODO currentTarget才有dataset
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate1.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate1.vue
new file mode 100644
index 0000000..354a4ff
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate1.vue
@@ -0,0 +1,96 @@
+<template>
+	<view :class="(node.tag == 'li' ? node.classStr : (node.node==='text'?'text':''))">
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<!-- <view :class="node.classStr" :style="node.styleStr"> -->
+				<view :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate2';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate1',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			},
+		},
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate10.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate10.vue
new file mode 100644
index 0000000..40f0d54
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate10.vue
@@ -0,0 +1,94 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate11';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate10',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate11.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate11.vue
new file mode 100644
index 0000000..81caa7f
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate11.vue
@@ -0,0 +1,84 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<!--button类型-->
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					{{node.text}}
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :class="node.classStr" :data-href="node.attr.href" :style="node.styleStr">
+					{{node.text}}
+				</view>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :class="node.classStr" :style="node.styleStr">
+					{{node.text}}
+				</view>
+			</block>
+		</block>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate11',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate2.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate2.vue
new file mode 100644
index 0000000..a48f1be
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate2.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate3';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate2',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate3.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate3.vue
new file mode 100644
index 0000000..90fc9bd
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate3.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate4';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate3',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate4.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate4.vue
new file mode 100644
index 0000000..af20eef
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate4.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate5';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate4',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate5.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate5.vue
new file mode 100644
index 0000000..0962239
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate5.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate6';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate5',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate6.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate6.vue
new file mode 100644
index 0000000..c322ab0
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate6.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate7';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate6',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate7.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate7.vue
new file mode 100644
index 0000000..591bcd6
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate7.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate8';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate7',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate8.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate8.vue
new file mode 100644
index 0000000..0ec0b3f
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate8.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate9';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate8',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate9.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate9.vue
new file mode 100644
index 0000000..ec799ac
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseTemplate9.vue
@@ -0,0 +1,95 @@
+<template>
+	<view>
+		<!--判断是否是标签节点-->
+		<block v-if="node.node == 'element'">
+			<block v-if="node.tag == 'button'">
+				<button type="default" size="mini">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</button>
+			</block>
+
+			<!--li类型-->
+			<block v-else-if="node.tag == 'li'">
+				<view :class="node.classStr" :style="node.styleStr">
+					<block v-for="(node, index) of node.nodes" :key="index">
+						<wx-parse-template :node="node" />
+					</block>
+				</view>
+			</block>
+
+			<!--video类型-->
+			<block v-else-if="node.tag == 'video'">
+				<wx-parse-video :node="node" />
+			</block>
+
+			<!--audio类型-->
+			<block v-else-if="node.tag == 'audio'">
+				<wx-parse-audio :node="node" />
+			</block>
+
+			<!--img类型-->
+			<block v-else-if="node.tag == 'img'">
+				<wx-parse-img :node="node" />
+			</block>
+
+			<!--a类型-->
+			<block v-else-if="node.tag == 'a'">
+				<view @click="wxParseATap" :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>
+			</block>
+
+			<!--br类型-->
+			<block v-else-if="node.tag == 'br'">
+				<text>\n</text>
+			</block>
+
+			<!--其他标签-->
+			<block v-else>
+				<view :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>
+
+		<!--判断是否是文本节点-->
+		<block v-else-if="node.node == 'text'">{{node.text}}</block>
+	</view>
+</template>
+
+<script>
+	import wxParseTemplate from './wxParseTemplate10';
+	import wxParseImg from './wxParseImg';
+	import wxParseVideo from './wxParseVideo';
+	import wxParseAudio from './wxParseAudio';
+
+	export default {
+		name: 'wxParseTemplate9',
+		props: {
+			node: {},
+		},
+		components: {
+			wxParseTemplate,
+			wxParseImg,
+			wxParseVideo,
+			wxParseAudio,
+		},
+		inject: ['uparse'],
+		methods: {
+			wxParseATap(e) {
+				const {
+					href
+				} = e.currentTarget.dataset;
+				if (!href) return;
+				this.uparse.navigate(href, e);
+			}
+		}
+	};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/components/wxParseVideo.vue b/components/zhihuai-DigitJump/uParse/src/components/wxParseVideo.vue
new file mode 100644
index 0000000..a952f58
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/components/wxParseVideo.vue
@@ -0,0 +1,15 @@
+<template>
+  <!--增加video标签支持,并循环添加-->
+  <view :class="node.classStr" :style="node.styleStr">
+    <video :class="node.classStr" class="video-video" :src="node.attr.src"></video>
+  </view>
+</template>
+
+<script>
+export default {
+  name: 'wxParseVideo',
+  props: {
+    node: {},
+  },
+};
+</script>
diff --git a/components/zhihuai-DigitJump/uParse/src/libs/html2json.js b/components/zhihuai-DigitJump/uParse/src/libs/html2json.js
new file mode 100644
index 0000000..de1bdd4
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/libs/html2json.js
@@ -0,0 +1,274 @@
+/**
+ * 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 (name === 'align') {
+					node.styleStr = node.styleStr || '';
+					node.styleStr = node.styleStr += 'text-align:' + 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;
diff --git a/components/zhihuai-DigitJump/uParse/src/libs/htmlparser.js b/components/zhihuai-DigitJump/uParse/src/libs/htmlparser.js
new file mode 100644
index 0000000..2939da3
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/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;
diff --git a/components/zhihuai-DigitJump/uParse/src/libs/wxDiscode.js b/components/zhihuai-DigitJump/uParse/src/libs/wxDiscode.js
new file mode 100644
index 0000000..a7a36a6
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/libs/wxDiscode.js
@@ -0,0 +1,195 @@
+// HTML 支持的数学符号
+function strNumDiscode(str) {
+  str = str.replace(/&forall;/g, '∀');
+  str = str.replace(/&part;/g, '∂');
+  str = str.replace(/&exist;/g, '∃');
+  str = str.replace(/&empty;/g, '∅');
+  str = str.replace(/&nabla;/g, '∇');
+  str = str.replace(/&isin;/g, '∈');
+  str = str.replace(/&notin;/g, '∉');
+  str = str.replace(/&ni;/g, '∋');
+  str = str.replace(/&prod;/g, '∏');
+  str = str.replace(/&sum;/g, '∑');
+  str = str.replace(/&minus;/g, '−');
+  str = str.replace(/&lowast;/g, '∗');
+  str = str.replace(/&radic;/g, '√');
+  str = str.replace(/&prop;/g, '∝');
+  str = str.replace(/&infin;/g, '∞');
+  str = str.replace(/&ang;/g, '∠');
+  str = str.replace(/&and;/g, '∧');
+  str = str.replace(/&or;/g, '∨');
+  str = str.replace(/&cap;/g, '∩');
+  str = str.replace(/&cup;/g, '∪');
+  str = str.replace(/&int;/g, '∫');
+  str = str.replace(/&there4;/g, '∴');
+  str = str.replace(/&sim;/g, '∼');
+  str = str.replace(/&cong;/g, '≅');
+  str = str.replace(/&asymp;/g, '≈');
+  str = str.replace(/&ne;/g, '≠');
+  str = str.replace(/&le;/g, '≤');
+  str = str.replace(/&ge;/g, '≥');
+  str = str.replace(/&sub;/g, '⊂');
+  str = str.replace(/&sup;/g, '⊃');
+  str = str.replace(/&nsub;/g, '⊄');
+  str = str.replace(/&sube;/g, '⊆');
+  str = str.replace(/&supe;/g, '⊇');
+  str = str.replace(/&oplus;/g, '⊕');
+  str = str.replace(/&otimes;/g, '⊗');
+  str = str.replace(/&perp;/g, '⊥');
+  str = str.replace(/&sdot;/g, '⋅');
+  return str;
+}
+
+// HTML 支持的希腊字母
+function strGreeceDiscode(str) {
+  str = str.replace(/&Alpha;/g, 'Α');
+  str = str.replace(/&Beta;/g, 'Β');
+  str = str.replace(/&Gamma;/g, 'Γ');
+  str = str.replace(/&Delta;/g, 'Δ');
+  str = str.replace(/&Epsilon;/g, 'Ε');
+  str = str.replace(/&Zeta;/g, 'Ζ');
+  str = str.replace(/&Eta;/g, 'Η');
+  str = str.replace(/&Theta;/g, 'Θ');
+  str = str.replace(/&Iota;/g, 'Ι');
+  str = str.replace(/&Kappa;/g, 'Κ');
+  str = str.replace(/&Lambda;/g, 'Λ');
+  str = str.replace(/&Mu;/g, 'Μ');
+  str = str.replace(/&Nu;/g, 'Ν');
+  str = str.replace(/&Xi;/g, 'Ν');
+  str = str.replace(/&Omicron;/g, 'Ο');
+  str = str.replace(/&Pi;/g, 'Π');
+  str = str.replace(/&Rho;/g, 'Ρ');
+  str = str.replace(/&Sigma;/g, 'Σ');
+  str = str.replace(/&Tau;/g, 'Τ');
+  str = str.replace(/&Upsilon;/g, 'Υ');
+  str = str.replace(/&Phi;/g, 'Φ');
+  str = str.replace(/&Chi;/g, 'Χ');
+  str = str.replace(/&Psi;/g, 'Ψ');
+  str = str.replace(/&Omega;/g, 'Ω');
+
+  str = str.replace(/&alpha;/g, 'α');
+  str = str.replace(/&beta;/g, 'β');
+  str = str.replace(/&gamma;/g, 'γ');
+  str = str.replace(/&delta;/g, 'δ');
+  str = str.replace(/&epsilon;/g, 'ε');
+  str = str.replace(/&zeta;/g, 'ζ');
+  str = str.replace(/&eta;/g, 'η');
+  str = str.replace(/&theta;/g, 'θ');
+  str = str.replace(/&iota;/g, 'ι');
+  str = str.replace(/&kappa;/g, 'κ');
+  str = str.replace(/&lambda;/g, 'λ');
+  str = str.replace(/&mu;/g, 'μ');
+  str = str.replace(/&nu;/g, 'ν');
+  str = str.replace(/&xi;/g, 'ξ');
+  str = str.replace(/&omicron;/g, 'ο');
+  str = str.replace(/&pi;/g, 'π');
+  str = str.replace(/&rho;/g, 'ρ');
+  str = str.replace(/&sigmaf;/g, 'ς');
+  str = str.replace(/&sigma;/g, 'σ');
+  str = str.replace(/&tau;/g, 'τ');
+  str = str.replace(/&upsilon;/g, 'υ');
+  str = str.replace(/&phi;/g, 'φ');
+  str = str.replace(/&chi;/g, 'χ');
+  str = str.replace(/&psi;/g, 'ψ');
+  str = str.replace(/&omega;/g, 'ω');
+  str = str.replace(/&thetasym;/g, 'ϑ');
+  str = str.replace(/&upsih;/g, 'ϒ');
+  str = str.replace(/&piv;/g, 'ϖ');
+  str = str.replace(/&middot;/g, '·');
+  return str;
+}
+
+function strcharacterDiscode(str) {
+  // 加入常用解析
+  str = str.replace(/&nbsp;/g, ' ');
+  str = str.replace(/&ensp;/g, ' ');
+  str = str.replace(/&emsp;/g, ' ');
+  str = str.replace(/&quot;/g, "'");
+  str = str.replace(/&amp;/g, '&');
+  str = str.replace(/&lt;/g, '<');
+  str = str.replace(/&gt;/g, '>');
+  str = str.replace(/&#8226;/g, '•');
+
+  return str;
+}
+
+// HTML 支持的其他实体
+function strOtherDiscode(str) {
+  str = str.replace(/&OElig;/g, 'Œ');
+  str = str.replace(/&oelig;/g, 'œ');
+  str = str.replace(/&Scaron;/g, 'Š');
+  str = str.replace(/&scaron;/g, 'š');
+  str = str.replace(/&Yuml;/g, 'Ÿ');
+  str = str.replace(/&fnof;/g, 'ƒ');
+  str = str.replace(/&circ;/g, 'ˆ');
+  str = str.replace(/&tilde;/g, '˜');
+  str = str.replace(/&ensp;/g, '');
+  str = str.replace(/&emsp;/g, '');
+  str = str.replace(/&thinsp;/g, '');
+  str = str.replace(/&zwnj;/g, '');
+  str = str.replace(/&zwj;/g, '');
+  str = str.replace(/&lrm;/g, '');
+  str = str.replace(/&rlm;/g, '');
+  str = str.replace(/&ndash;/g, '–');
+  str = str.replace(/&mdash;/g, '—');
+  str = str.replace(/&lsquo;/g, '‘');
+  str = str.replace(/&rsquo;/g, '’');
+  str = str.replace(/&sbquo;/g, '‚');
+  str = str.replace(/&ldquo;/g, '“');
+  str = str.replace(/&rdquo;/g, '”');
+  str = str.replace(/&bdquo;/g, '„');
+  str = str.replace(/&dagger;/g, '†');
+  str = str.replace(/&Dagger;/g, '‡');
+  str = str.replace(/&bull;/g, '•');
+  str = str.replace(/&hellip;/g, '…');
+  str = str.replace(/&permil;/g, '‰');
+  str = str.replace(/&prime;/g, '′');
+  str = str.replace(/&Prime;/g, '″');
+  str = str.replace(/&lsaquo;/g, '‹');
+  str = str.replace(/&rsaquo;/g, '›');
+  str = str.replace(/&oline;/g, '‾');
+  str = str.replace(/&euro;/g, '€');
+  str = str.replace(/&trade;/g, '™');
+
+  str = str.replace(/&larr;/g, '←');
+  str = str.replace(/&uarr;/g, '↑');
+  str = str.replace(/&rarr;/g, '→');
+  str = str.replace(/&darr;/g, '↓');
+  str = str.replace(/&harr;/g, '↔');
+  str = str.replace(/&crarr;/g, '↵');
+  str = str.replace(/&lceil;/g, '⌈');
+  str = str.replace(/&rceil;/g, '⌉');
+
+  str = str.replace(/&lfloor;/g, '⌊');
+  str = str.replace(/&rfloor;/g, '⌋');
+  str = str.replace(/&loz;/g, '◊');
+  str = str.replace(/&spades;/g, '♠');
+  str = str.replace(/&clubs;/g, '♣');
+  str = str.replace(/&hearts;/g, '♥');
+
+  str = str.replace(/&diams;/g, '♦');
+  str = str.replace(/&#39;/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,
+};
diff --git a/components/zhihuai-DigitJump/uParse/src/wxParse.css b/components/zhihuai-DigitJump/uParse/src/wxParse.css
new file mode 100644
index 0000000..691993a
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/wxParse.css
@@ -0,0 +1,232 @@
+/**
+ * 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
+ */
+
+.wxParse {
+  width: 100%;
+  font-family: Helvetica, sans-serif;
+  font-size: 30upx;
+  color: #666;
+  line-height: 1.8;
+}
+
+.wxParse view {
+  word-break: hyphenate;
+}
+
+.wxParse .inline {
+  display: inline;
+  margin: 0;
+  padding: 0;
+}
+
+.wxParse .div {
+  margin: 0;
+  padding: 0;
+}
+
+.wxParse .h1 .text {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+.wxParse .h2 .text {
+  font-size: 1.5em;
+  margin: 0.83em 0;
+}
+.wxParse .h3 .text {
+  font-size: 1.17em;
+  margin: 1em 0;
+}
+.wxParse .h4 .text {
+  margin: 1.33em 0;
+}
+.wxParse .h5 .text {
+  font-size: 0.83em;
+  margin: 1.67em 0;
+}
+.wxParse .h6 .text {
+  font-size: 0.67em;
+  margin: 2.33em 0;
+}
+
+.wxParse .h1 .text,
+.wxParse .h2 .text,
+.wxParse .h3 .text,
+.wxParse .h4 .text,
+.wxParse .h5 .text,
+.wxParse .h6 .text,
+.wxParse .b,
+.wxParse .strong {
+  font-weight: bolder;
+}
+
+
+.wxParse .p {
+  margin: 1em 0;
+}
+
+.wxParse .i,
+.wxParse .cite,
+.wxParse .em,
+.wxParse .var,
+.wxParse .address {
+  font-style: italic;
+}
+
+.wxParse .pre,
+.wxParse .tt,
+.wxParse .code,
+.wxParse .kbd,
+.wxParse .samp {
+  font-family: monospace;
+}
+.wxParse .pre {
+  overflow: auto;
+  background: #f5f5f5;
+  padding: 16upx;
+  white-space: pre;
+  margin: 1em 0upx;
+}
+.wxParse .code {
+  display: inline;
+  background: #f5f5f5;
+}
+
+.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 .s {
+  display: inline;
+}
+
+.wxParse .a {
+  color: deepskyblue;
+}
+
+.wxParse .video {
+  text-align: center;
+  margin: 22upx 0;
+}
+
+.wxParse .video-video {
+  width: 100%;
+}
+
+.wxParse .img {
+  display: inline-block;
+  width: 0;
+  height: 0;
+  max-width: 100%;
+  overflow: hidden;
+}
+
+.wxParse .blockquote {
+  margin: 10upx 0;
+  padding: 22upx 0 22upx 22upx;
+  font-family: Courier, Calibri, "宋体";
+  background: #f5f5f5;
+  border-left: 6upx solid #dbdbdb;
+}
+.wxParse .blockquote .p {
+  margin: 0;
+}
+
+.wxParse .ul, .wxParse .ol {
+  display: block;
+  margin: 1em 0;
+  padding-left: 33upx;
+}
+.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 .table {
+  width: 100%;
+}
+.wxParse .thead, .wxParse .tfoot, .wxParse .tr {
+  display: flex;
+  flex-direction: row;
+}
+.wxParse .tr {
+  width:100%;
+  display: flex;
+  border-right: 2upx solid #e0e0e0;
+  border-bottom: 2upx solid #e0e0e0;
+}
+.wxParse .th,
+.wxParse .td {
+  display: flex;
+  width: 1276upx;
+  overflow: auto;
+  flex: 1;
+  padding: 11upx;
+  border-left: 2upx solid #e0e0e0;
+}
+.wxParse .td:last {
+  border-top: 2upx solid #e0e0e0;
+}
+.wxParse .th {
+  background: #f0f0f0;
+  border-top: 2upx solid #e0e0e0;
+}
diff --git a/components/zhihuai-DigitJump/uParse/src/wxParse.vue b/components/zhihuai-DigitJump/uParse/src/wxParse.vue
new file mode 100644
index 0000000..824f533
--- /dev/null
+++ b/components/zhihuai-DigitJump/uParse/src/wxParse.vue
@@ -0,0 +1,122 @@
+<!--**
+ * forked from:https://github.com/F-loat/mpvue-wxParse
+ *
+ * github地址: https://github.com/dcloudio/uParse
+ *
+ * for: uni-app框架下 富文本解析
+ */-->
+
+<template>
+<!--基础元素-->
+<div class="wxParse" :class="className" v-if="!loading">
+  <block v-for="(node,index) of nodes" :key="index">
+    <wxParseTemplate :node="node" />
+  </block>
+</div>
+</template>
+
+<script>
+import HtmlToJson from './libs/html2json';
+import wxParseTemplate from './components/wxParseTemplate0';
+
+export default {
+  name: 'wxParse',
+  props: {
+    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: '',
+        };
+      },
+    },
+  },
+	provide() {
+		return {
+			uparse: this
+		}
+	},
+  components: {
+    wxParseTemplate,
+  },
+  data() {
+    return {
+      imageUrls: []
+    };
+  },
+  computed: {
+    nodes() {
+      const {
+        content,
+        noData,
+        imageProp,
+        startHandler,
+        endHandler,
+        charsHandler,
+      } = this;
+      const parseData = content || noData;
+      const customHandler = {
+        start: startHandler,
+        end: endHandler,
+        chars: charsHandler,
+      };
+      const results = HtmlToJson(parseData, customHandler, imageProp, this);
+      this.imageUrls = results.imageUrls;
+      return results.nodes;
+    },
+  },
+  methods: {
+    navigate(href, $event) {
+      this.$emit('navigate', href, $event);
+    },
+    preview(src, $event) {
+      if (!this.imageUrls.length) return;
+      wx.previewImage({
+        current: src,
+        urls: this.imageUrls,
+      });
+      this.$emit('preview', src, $event);
+    },
+    removeImageUrl(src) {
+      const { imageUrls } = this;
+      imageUrls.splice(imageUrls.indexOf(src), 1);
+    },
+  },
+};
+</script>
diff --git a/components/zhihuai-DigitJump/zhihuai-DigitJump.vue b/components/zhihuai-DigitJump/zhihuai-DigitJump.vue
new file mode 100644
index 0000000..e815b27
--- /dev/null
+++ b/components/zhihuai-DigitJump/zhihuai-DigitJump.vue
@@ -0,0 +1,113 @@
+<template>
+	<view :class="[textColor]">{{digit}}</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				speed: 10,
+				digit: 0,
+			};
+		},
+		props: {
+			digitTo: {
+				type: Number,
+				default: 1000,
+			},
+			digitFrom: {
+				type: Number,
+				default: 0,
+			},
+			runTime: {
+				type: Number,
+				default: 1000,
+			},
+			digitFiex: {
+				type: Number,
+				default: 0,
+			},
+			digitDelay: {
+				type: Number,
+				default: 1000,
+			},
+			modeType: {
+				type: String,
+				default: 'RANDOM'
+			},textColor:{
+				type:String,
+				default:'zh_text_black'
+			}
+		},
+		methods: {
+			start() {
+				let that = this;
+				that.digit = that.digitFrom
+				if (that.modeType == "RANDOM") {
+					var times = that.runTime / that.speed;
+					let i = 0;
+					let time = setInterval(function() {
+
+						var addVal = 0;
+						if (times == 0) {
+							clearInterval(time);
+						} else if (times == 1) {
+							var dVal = (that.digitTo - that.digit) / times;
+							addVal = dVal;
+						} else {
+							var dVal = (that.digitTo - that.digit) / times;
+							addVal = parseFloat(Math.random() * dVal).toFixed(that.digitFiex);
+						}
+
+						that.digit = (parseFloat(that.digit) + parseFloat(addVal)).toFixed(that.digitFiex);
+						times--;
+					}, that.speed)
+				} else if (that.modeType == "AVERAGE") {
+					var times = that.runTime / that.speed;
+					var dValue = (that.digitTo - that.digitFrom) / times;
+					let i = 0;
+					let time = setInterval(function() {
+						that.digit = parseFloat((that.digitFrom + dValue * i)).toFixed(that.digitFiex);
+						if (times == i) {
+							clearInterval(time);
+						}
+						i++;
+					}, that.speed)
+				}
+
+
+			}
+		},
+		created() {
+			let that = this;
+			setTimeout(function() {
+				that.start();
+			}, that.digitDelay);
+		},
+		watch: {
+			digitTo(newVal, oldVal) {
+				this.digitFrom = oldVal;
+				this.start();
+			}
+		}
+	}
+</script>
+
+<style>
+	.zh_text_white{
+		color: #FFFFFF;
+	}
+	
+	.zh_text_black{
+		color: #000000;
+	}
+</style>
+
+<!-- 属性	类型	默认	备注
+digitTo	Number	1000	数字目标值
+digitFrom	Number	0	数字起始值
+runTime	Number	1000	总运行时间(单位毫秒),单次运行时间 10毫秒,如果需要改动则去插件代码中,修改speed值
+digitFiex	Number	0	保留小数位数
+digitDelay	Number	1000	首次执行延迟时间
+modeType	String	'RANDOM'	执行方式;RANDOM,随机增长;AVERAGE,均速增长;
+textColor	String	'zh_text_black'	默认黑色,值为class名 -->
\ No newline at end of file
diff --git a/css/uni.css b/css/uni.css
new file mode 100644
index 0000000..9d7059e
--- /dev/null
+++ b/css/uni.css
@@ -0,0 +1,1873 @@
+.white-color {
+	color: #FFFFFF;
+}
+
+.primary-color {
+	color: #2d8cf0;
+}
+
+.light-primary-color {
+	color: #5cadff;
+}
+
+.dark-primary-color {
+	color: #2b85e4;
+}
+
+.info-color {
+	color: #2d8cf0;
+}
+
+
+
+.success-color {
+	color: #19be6b;
+}
+
+.warning-color {
+	color: #ff9900;
+}
+
+.error-color {
+	color: #ed3f14;
+}
+
+.title-color {
+	color: #1c2438;
+}
+
+.content-color {
+	color: #495060;
+}
+
+.sub-color {
+	color: #80848f;
+}
+
+.disabled-color {
+	color: #bbbec4;
+}
+
+.border-color {
+	color: #dddee1;
+}
+
+.divider-color {
+	color: #e9eaec;
+}
+
+.gray-color {
+	color: #666666;
+}
+
+.pink-color {
+	color: #e7507b;
+}
+
+.bg-gray-color {
+	background: #666666;
+}
+
+.bg-color {
+	background: #EBEEF5;
+}
+
+.bg-primary-color {
+	background: #2d8cf0;
+}
+
+.bg-light-primary-color {
+	background: #5cadff;
+}
+
+.bg-dark-primary-color {
+	background: #2b85e4;
+}
+
+.bg-info-color {
+	background: #2d8cf0;
+}
+
+.bg-success-color {
+	background: #19be6b;
+}
+
+.bg-warning-color {
+	background: #ff9900;
+}
+
+.bg-error-color {
+	background: #ed3f14;
+}
+
+.bg-pink-color {
+	background: #e7507b;
+}
+
+.bg-title-color {
+	background: #1c2438;
+}
+
+.bg-content-color {
+	background: #495060;
+}
+
+.bg-sub-color {
+	background: #80848f;
+}
+
+.bg-disabled-color {
+	background: #bbbec4;
+}
+
+.bg-border-color {
+	background: #dddee1;
+}
+
+.bg-divider-color {
+	background: #e9eaec;
+}
+
+.bg-white-color {
+	background: #FFFFFF;
+}
+
+.bg-black-color {
+	background: #000;
+}
+
+.full-height {
+	height: 100%;
+}
+
+.full-width {
+	width: 100%;
+}
+
+.align-center {
+	text-align: center;
+}
+
+.align-left {
+	text-align: left;
+}
+
+.align-right {
+	text-align: right;
+}
+
+.float-left {
+	float: left;
+}
+
+.float-right {
+	float: right;
+}
+.border-radius-50 {
+	border-radius: 50%;
+}
+
+.text-overflow {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: -webkit-box !important;
+	-webkit-line-clamp: 1;
+	/* 限制在一个块元素显示的文本的行数 */
+	-webkit-box-orient: vertical;
+	/* 垂直排列 */
+	word-break: break-all;
+	/* 内容自动换行 */
+}
+
+.text-overflow2 {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	display: -webkit-box !important;
+	-webkit-line-clamp: 2;
+	/* 限制在一个块元素显示的文本的行数 */
+	-webkit-box-orient: vertical;
+	/* 垂直排列 */
+	word-break: break-all;
+	/* 内容自动换行 */
+}
+
+.uni-flex {
+	display: flex;
+	flex-direction: row;
+}
+
+.uni-flex-item {
+	flex: 1;
+}
+
+.uni-row {
+	flex-direction: row;
+}
+
+.uni-column {
+	flex-direction: column;
+}
+
+.uni-link {
+	color: #576B95;
+	font-size: 26upx;
+}
+
+.uni-center {
+	text-align: center;
+}
+
+.uni-inline-item {
+	display: flex;
+	flex-direction: row;
+	align-items: center;
+}
+
+.uni-inline-item text {
+	margin-right: 20upx;
+}
+
+.uni-inline-item text:last-child {
+	margin-right: 0upx;
+	margin-left: 20upx;
+}
+
+/* page */
+.uni-page-head {
+	padding: 35upx;
+	text-align: center;
+}
+
+.uni-page-head-title {
+	display: inline-block;
+	padding: 0 40upx;
+	font-size: 30upx;
+	height: 88upx;
+	line-height: 88upx;
+	color: #BEBEBE;
+	box-sizing: border-box;
+	border-bottom: 2upx solid #D8D8D8;
+}
+
+.uni-page-body {
+	width: 100%;
+	flex-grow: 1;
+	overflow-x: hidden;
+}
+
+.uni-padding-wrap {
+	width: 690upx;
+	padding: 0 30upx;
+}
+
+.uni-word {
+	text-align: center;
+	padding: 200upx 100upx;
+}
+
+.uni-title {
+	font-size: 30upx;
+	font-weight: 500;
+	padding: 20upx 0;
+	line-height: 1.5;
+}
+
+.uni-text {
+	font-size: 28upx;
+}
+
+.uni-title text {
+	font-size: 24upx;
+	color: #888;
+}
+
+.uni-text-gray {
+	color: #ccc;
+}
+
+.uni-text-small {
+	font-size: 24upx;
+}
+
+.uni-common-mb {
+	margin-bottom: 30upx;
+}
+
+.uni-common-pb {
+	padding-bottom: 30upx;
+}
+
+.uni-common-pl {
+	padding-left: 30upx;
+}
+
+.uni-common-mt {
+	margin-top: 30upx;
+}
+
+/* 背景色 */
+.uni-bg-red {
+	background: #F76260;
+	color: #FFF;
+}
+
+.uni-bg-green {
+	background: #09BB07;
+	color: #FFF;
+}
+
+.uni-bg-blue {
+	background: #007AFF;
+	color: #FFF;
+}
+
+/* 标题 */
+.uni-h1 {
+	font-size: 80upx;
+	font-weight: 700;
+}
+
+.uni-h2 {
+	font-size: 60upx;
+	font-weight: 700;
+}
+
+.uni-h3 {
+	font-size: 48upx;
+	font-weight: 700;
+}
+
+.uni-h4 {
+	font-size: 36upx;
+	font-weight: 700;
+}
+
+.uni-h5 {
+	font-size: 28upx;
+	color: #8f8f94;
+}
+
+.uni-h6 {
+	font-size: 24upx;
+	color: #8f8f94;
+}
+
+.uni-bold {
+	font-weight: bold;
+}
+
+/* 文本溢出隐藏 */
+.uni-ellipsis {
+	overflow: hidden;
+	white-space: nowrap;
+	text-overflow: ellipsis;
+}
+
+/* 竖向百分百按钮 */
+.uni-btn-v {
+	padding: 10upx 0;
+}
+
+.uni-btn-v button {
+	margin: 20upx 0;
+}
+
+/* 表单 */
+.uni-form-item {
+	display: flex;
+	width: 100%;
+	padding: 10upx 0;
+}
+
+.uni-form-item .title {
+	padding: 10upx 25upx;
+}
+
+.uni-label {
+	width: 210upx;
+	word-wrap: break-word;
+	word-break: break-all;
+	text-indent: 20upx;
+}
+
+.uni-input {
+	height: 50upx;
+	padding: 15upx 25upx;
+	line-height: 50upx;
+	font-size: 28upx;
+	background: #FFF;
+	flex: 1;
+}
+
+radio-group,
+checkbox-group {
+	width: 100%;
+}
+
+radio-group label,
+checkbox-group label {
+	padding-right: 20upx;
+}
+
+.uni-form-item .with-fun {
+	display: flex;
+	flex-wrap: nowrap;
+	background: #FFFFFF;
+}
+
+.uni-form-item .with-fun .uni-icon {
+	width: 40px;
+	height: 80upx;
+	line-height: 80upx;
+	flex-shrink: 0;
+}
+
+/* loadmore */
+.uni-loadmore {
+	height: 80upx;
+	line-height: 80upx;
+	text-align: center;
+	padding-bottom: 30upx;
+}
+
+/*数字角标*/
+.uni-badge,
+.uni-badge-default {
+	font-family: 'Helvetica Neue', Helvetica, sans-serif;
+	font-size: 12px;
+	line-height: 1;
+	display: inline-block;
+	padding: 3px 6px;
+	color: #333;
+	border-radius: 100px;
+	background-color: rgba(0, 0, 0, .15);
+}
+
+.uni-badge.uni-badge-inverted {
+	padding: 0 5px 0 0;
+	color: #929292;
+	background-color: transparent
+}
+
+.uni-badge-primary {
+	color: #fff;
+	background-color: #007aff
+}
+
+.uni-badge-blue.uni-badge-inverted,
+.uni-badge-primary.uni-badge-inverted {
+	color: #007aff;
+	background-color: transparent
+}
+
+.uni-badge-green,
+.uni-badge-success {
+	color: #fff;
+	background-color: #4cd964;
+}
+
+.uni-badge-green.uni-badge-inverted,
+.uni-badge-success.uni-badge-inverted {
+	color: #4cd964;
+	background-color: transparent
+}
+
+.uni-badge-warning,
+.uni-badge-yellow {
+	color: #fff;
+	background-color: #f0ad4e
+}
+
+.uni-badge-warning.uni-badge-inverted,
+.uni-badge-yellow.uni-badge-inverted {
+	color: #f0ad4e;
+	background-color: transparent
+}
+
+.uni-badge-danger,
+.uni-badge-red {
+	color: #fff;
+	background-color: #dd524d
+}
+
+.uni-badge-danger.uni-badge-inverted,
+.uni-badge-red.uni-badge-inverted {
+	color: #dd524d;
+	background-color: transparent
+}
+
+.uni-badge-purple,
+.uni-badge-royal {
+	color: #fff;
+	background-color: #8a6de9
+}
+
+.uni-badge-purple.uni-badge-inverted,
+.uni-badge-royal.uni-badge-inverted {
+	color: #8a6de9;
+	background-color: transparent
+}
+
+/*折叠面板 */
+.uni-collapse-content {
+	height: 0;
+	width: 100%;
+	overflow: hidden;
+}
+
+.uni-collapse-content.uni-active {
+	height: auto;
+}
+
+/*卡片视图 */
+.uni-card {
+	background: #fff;
+	border-radius: 8upx;
+	margin: 20upx 0;
+	position: relative;
+	box-shadow: 0 2upx 4upx rgba(0, 0, 0, .3);
+}
+
+.uni-card-content {
+	font-size: 30upx;
+}
+
+.uni-card-content.image-view {
+	width: 100%;
+	margin: 0;
+}
+
+.uni-card-content-inner {
+	position: relative;
+	padding: 30upx;
+}
+
+.uni-card-footer,
+.uni-card-header {
+	position: relative;
+	display: flex;
+	min-height: 50upx;
+	padding: 20upx 30upx;
+	justify-content: space-between;
+	align-items: center;
+}
+
+.uni-card-header {
+	font-size: 36upx;
+}
+
+.uni-card-footer {
+	color: #6d6d72;
+}
+
+.uni-card-footer:before,
+.uni-card-header:after {
+	position: absolute;
+	top: 0;
+	right: 0;
+	left: 0;
+	height: 2upx;
+	content: '';
+	-webkit-transform: scaleY(.5);
+	transform: scaleY(.5);
+	background-color: #c8c7cc;
+}
+
+.uni-card-header:after {
+	top: auto;
+	bottom: 0;
+}
+
+.uni-card-media {
+	justify-content: flex-start;
+}
+
+.uni-card-media-logo {
+	height: 84upx;
+	width: 84upx;
+	margin-right: 20upx;
+}
+
+.uni-card-media-body {
+	height: 84upx;
+	display: flex;
+	flex-direction: column;
+	justify-content: space-between;
+	align-items: flex-start;
+}
+
+.uni-card-media-text-top {
+	line-height: 36upx;
+	font-size: 34upx;
+}
+
+.uni-card-media-text-bottom {
+	line-height: 30upx;
+	font-size: 28upx;
+	color: #8f8f94;
+}
+
+.uni-card-link {
+	color: #007AFF;
+}
+
+/* 列表 */
+.uni-list {
+	background-color: #FFFFFF;
+	position: relative;
+	width: 100%;
+	display: flex;
+	flex-direction: column;
+}
+
+.uni-list:after {
+	position: absolute;
+	z-index: 10;
+	right: 0;
+	bottom: 0;
+	left: 0;
+	height: 1px;
+	content: '';
+	-webkit-transform: scaleY(.5);
+	transform: scaleY(.5);
+	background-color: #c8c7cc;
+}
+
+.uni-list::before {
+	position: absolute;
+	z-index: 10;
+	right: 0;
+	top: 0;
+	left: 0;
+	height: 1px;
+	content: '';
+	-webkit-transform: scaleY(.5);
+	transform: scaleY(.5);
+	background-color: #c8c7cc;
+}
+
+.uni-list-cell {
+	position: relative;
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+	align-items: center;
+}
+
+.uni-list-cell-hover {
+	background-color: #eee;
+}
+
+.uni-list-cell-pd {
+	padding: 22upx 30upx;
+}
+
+.uni-list-cell-left {
+	font-size: 28upx;
+	padding: 0 30upx;
+}
+
+.uni-list-cell-db,
+.uni-list-cell-right {
+	flex: 1;
+}
+
+.uni-list-cell::after {
+	position: absolute;
+	z-index: 3;
+	right: 0;
+	bottom: 0;
+	left: 30upx;
+	height: 1px;
+	content: '';
+	-webkit-transform: scaleY(.5);
+	transform: scaleY(.5);
+	background-color: #c8c7cc;
+}
+
+.uni-list .uni-list-cell:last-child::after {
+	height: 0upx;
+}
+
+.uni-list-cell-last.uni-list-cell::after {
+	height: 0upx;
+}
+
+.uni-list-cell-divider {
+	position: relative;
+	display: flex;
+	color: #999;
+	background-color: #f7f7f7;
+	padding: 15upx 20upx;
+}
+
+.uni-list-cell-divider::before {
+	position: absolute;
+	right: 0;
+	top: 0;
+	left: 0;
+	height: 1px;
+	content: '';
+	-webkit-transform: scaleY(.5);
+	transform: scaleY(.5);
+	background-color: #c8c7cc;
+}
+
+.uni-list-cell-divider::after {
+	position: absolute;
+	right: 0;
+	bottom: 0;
+	left: 0upx;
+	height: 1px;
+	content: '';
+	-webkit-transform: scaleY(.5);
+	transform: scaleY(.5);
+	background-color: #c8c7cc;
+}
+
+.uni-list-cell-navigate {
+	font-size: 30upx;
+	padding: 22upx 30upx;
+	line-height: 48upx;
+	position: relative;
+	display: flex;
+	box-sizing: border-box;
+	width: 100%;
+	flex: 1;
+	justify-content: space-between;
+	align-items: center;
+}
+
+.uni-list-cell-navigate {
+	padding-right: 36upx;
+}
+
+.uni-navigate-badge {
+	padding-right: 50upx;
+}
+
+.uni-list-cell-navigate.uni-navigate-right:after {
+	font-family: uniicons;
+	content: '\e583';
+	position: absolute;
+	right: 24upx;
+	top: 50%;
+	color: #bbb;
+	-webkit-transform: translateY(-50%);
+	transform: translateY(-50%);
+}
+
+.uni-list-cell-navigate.uni-navigate-bottom:after {
+	font-family: uniicons;
+	content: '\e581';
+	position: absolute;
+	right: 24upx;
+	top: 50%;
+	color: #bbb;
+	-webkit-transform: translateY(-50%);
+	transform: translateY(-50%);
+}
+
+.uni-list-cell-navigate.uni-navigate-bottom.uni-active::after {
+	font-family: uniicons;
+	content: '\e580';
+	position: absolute;
+	right: 24upx;
+	top: 50%;
+	color: #bbb;
+	-webkit-transform: translateY(-50%);
+	transform: translateY(-50%);
+}
+
+.uni-collapse.uni-list-cell {
+	flex-direction: column;
+}
+
+.uni-list-cell-navigate.uni-active {
+	background: #eee;
+}
+
+.uni-list.uni-collapse {
+	box-sizing: border-box;
+	height: 0;
+	overflow: hidden;
+}
+
+.uni-collapse .uni-list-cell {
+	padding-left: 20upx;
+}
+
+.uni-collapse .uni-list-cell::after {
+	left: 52upx;
+}
+
+.uni-list.uni-active {
+	height: auto;
+}
+
+/* 三行列表 */
+.uni-triplex-row {
+	display: flex;
+	flex: 1;
+	width: 100%;
+	box-sizing: border-box;
+	flex-direction: row;
+	padding: 22upx 30upx;
+}
+
+.uni-triplex-right,
+.uni-triplex-left {
+	display: flex;
+	flex-direction: column;
+}
+
+.uni-triplex-left {
+	width: 84%;
+}
+
+.uni-triplex-left .uni-title {
+	padding: 8upx 0;
+}
+
+.uni-triplex-left .uni-text,
+.uni-triplex-left .uni-text-small {
+	color: #999999;
+}
+
+.uni-triplex-right {
+	width: 16%;
+	text-align: right;
+}
+
+/* 图文列表 */
+.uni-media-list {
+	padding: 22upx 30upx;
+	box-sizing: border-box;
+	display: flex;
+	width: 100%;
+	flex-direction: row;
+}
+
+.uni-navigate-right.uni-media-list {
+	padding-right: 74upx;
+}
+
+.uni-pull-right {
+	flex-direction: row-reverse;
+}
+
+.uni-pull-right>.uni-media-list-logo {
+	margin-right: 0upx;
+	margin-left: 20upx;
+}
+
+.uni-media-list-logo {
+	height: 84upx;
+	width: 84upx;
+	margin-right: 20upx;
+}
+
+.uni-media-list-logo image {
+	height: 100%;
+	width: 100%;
+}
+
+.uni-media-list-body {
+	height: 84upx;
+	display: flex;
+	flex: 1;
+	flex-direction: column;
+	justify-content: space-between;
+	align-items: flex-start;
+	overflow: hidden;
+}
+
+.uni-media-list-text-top {
+	width: 100%;
+	line-height: 36upx;
+	font-size: 30upx;
+}
+
+.uni-media-list-text-bottom {
+	width: 100%;
+	line-height: 30upx;
+	font-size: 26upx;
+	color: #8f8f94;
+}
+
+/* 九宫格 */
+.uni-grid-9 {
+	background: #f2f2f2;
+	width: 750upx;
+	display: flex;
+	flex-direction: row;
+	flex-wrap: wrap;
+	border-top: 2upx solid #eee;
+}
+
+.uni-grid-9-item {
+	width: 250upx;
+	height: 200upx;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	justify-content: center;
+	border-bottom: 2upx solid;
+	border-right: 2upx solid;
+	border-color: #eee;
+	box-sizing: border-box;
+}
+
+.no-border-right {
+	border-right: none;
+}
+
+.uni-grid-9-image {
+	width: 100upx;
+	height: 100upx;
+}
+
+.uni-grid-9-text {
+	width: 250upx;
+	line-height: 4upx;
+	height: 40upx;
+	text-align: center;
+	font-size: 30upx;
+}
+
+.uni-grid-9-item-hover {
+	background: rgba(0, 0, 0, 0.1);
+}
+
+/* 上传 */
+.uni-uploader {
+	flex: 1;
+	flex-direction: column;
+}
+
+.uni-uploader-head {
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+}
+
+.uni-uploader-info {
+	color: #B2B2B2;
+}
+
+.uni-uploader-body {
+	margin-top: 16upx;
+}
+
+.uni-uploader__files {
+	display: flex;
+	flex-direction: row;
+	flex-wrap: wrap;
+}
+
+.uni-uploader__file {
+	margin: 10upx;
+	width: 210upx;
+	height: 210upx;
+}
+
+.uni-uploader__img {
+	display: block;
+	width: 210upx;
+	height: 210upx;
+}
+
+.uni-uploader__input-box {
+	position: relative;
+	margin: 10upx;
+	width: 208upx;
+	height: 208upx;
+	border: 2upx solid #D9D9D9;
+}
+
+.uni-uploader__input-box:before,
+.uni-uploader__input-box:after {
+	content: " ";
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	-webkit-transform: translate(-50%, -50%);
+	transform: translate(-50%, -50%);
+	background-color: #D9D9D9;
+}
+
+.uni-uploader__input-box:before {
+	width: 4upx;
+	height: 79upx;
+}
+
+.uni-uploader__input-box:after {
+	width: 79upx;
+	height: 4upx;
+}
+
+.uni-uploader__input-box:active {
+	border-color: #999999;
+}
+
+.uni-uploader__input-box:active:before,
+.uni-uploader__input-box:active:after {
+	background-color: #999999;
+}
+
+.uni-uploader__input {
+	position: absolute;
+	z-index: 1;
+	top: 0;
+	left: 0;
+	width: 100%;
+	height: 100%;
+	opacity: 0;
+}
+
+/*问题反馈*/
+.feedback-title {
+	display: flex;
+	flex-direction: row;
+	justify-content: space-between;
+	align-items: center;
+	padding: 20upx;
+	color: #8f8f94;
+	font-size: 28upx;
+}
+
+.feedback-star-view.feedback-title {
+	justify-content: flex-start;
+	margin: 0;
+}
+
+.feedback-quick {
+	position: relative;
+	padding-right: 40upx;
+}
+
+.feedback-quick:after {
+	font-family: uniicons;
+	font-size: 40upx;
+	content: '\e581';
+	position: absolute;
+	right: 0;
+	top: 50%;
+	color: #bbb;
+	-webkit-transform: translateY(-50%);
+	transform: translateY(-50%);
+}
+
+.feedback-body {
+	background: #fff;
+}
+
+.feedback-textare {
+	height: 200upx;
+	font-size: 34upx;
+	line-height: 50upx;
+	width: 100%;
+	box-sizing: border-box;
+	padding: 20upx 30upx 0;
+}
+
+.feedback-input {
+	font-size: 34upx;
+	height: 50upx;
+	min-height: 50upx;
+	padding: 15upx 20upx;
+	line-height: 50upx;
+}
+
+.feedback-uploader {
+	padding: 22upx 20upx;
+}
+
+.feedback-star {
+	font-family: uniicons;
+	font-size: 40upx;
+	margin-left: 6upx;
+}
+
+.feedback-star-view {
+	margin-left: 20upx;
+}
+
+.feedback-star:after {
+	content: '\e408';
+}
+
+.feedback-star.active {
+	color: #FFB400;
+}
+
+.feedback-star.active:after {
+	content: '\e438';
+}
+
+.feedback-submit {
+	background: #007AFF;
+	color: #FFFFFF;
+	margin: 20upx;
+}
+
+/* input group */
+.uni-input-group {
+	position: relative;
+	padding: 0;
+	border: 0;
+	background-color: #fff;
+}
+
+.uni-input-group:before {
+	position: absolute;
+	top: 0;
+	right: 0;
+	left: 0;
+	height: 2upx;
+	content: '';
+	transform: scaleY(.5);
+	background-color: #c8c7cc;
+}
+
+.uni-input-group:after {
+	position: absolute;
+	right: 0;
+	bottom: 0;
+	left: 0;
+	height: 2upx;
+	content: '';
+	transform: scaleY(.5);
+	background-color: #c8c7cc;
+}
+
+.uni-input-row {
+	position: relative;
+	display: flex;
+	flex-direction: row;
+	font-size: 28upx;
+	padding: 22upx 30upx;
+	justify-content: space-between;
+}
+
+.uni-input-group .uni-input-row:after {
+	position: absolute;
+	right: 0;
+	bottom: 0;
+	left: 30upx;
+	height: 2upx;
+	content: '';
+	transform: scaleY(.5);
+	background-color: #c8c7cc;
+}
+
+.uni-input-row label {
+	line-height: 70upx;
+}
+
+/* textarea */
+.uni-textarea {
+	width: 100%;
+	background: #FFF;
+}
+
+.uni-textarea textarea {
+	width: 96%;
+	padding: 18upx 2%;
+	line-height: 1.6;
+	font-size: 28upx;
+	height: 150upx;
+}
+
+/* tab bar */
+.uni-tab-bar {
+	display: flex;
+	flex: 1;
+	flex-direction: column;
+	overflow: hidden;
+	height: 100%;
+}
+
+.uni-tab-bar .list {
+	width: 750upx;
+	height: 100%;
+}
+
+.uni-swiper-tab {
+	width: 100%;
+	white-space: nowrap;
+	line-height: 100upx;
+	height: 100upx;
+	border-bottom: 1px solid #c8c7cc;
+}
+
+.swiper-tab-list {
+	font-size: 30upx;
+	width: 150upx;
+	display: inline-block;
+	text-align: center;
+}
+
+.uni-tab-bar .active {
+	color: #007AFF;
+}
+
+.uni-tab-bar .swiper-box {
+	flex: 1;
+	width: 100%;
+	height: calc(100% - 100upx);
+}
+
+.uni-tab-bar-loading {
+	padding: 20upx 0;
+}
+
+/* comment */
+.uni-comment {
+	padding: 5upx 0;
+	display: flex;
+	flex-grow: 1;
+	flex-direction: column;
+}
+
+.uni-comment-list {
+	flex-wrap: nowrap;
+	padding: 10upx 0;
+	margin: 10upx 0;
+	width: 100%;
+	display: flex;
+}
+
+.uni-comment-face {
+	width: 70upx;
+	height: 70upx;
+	border-radius: 100%;
+	margin-right: 20upx;
+	flex-shrink: 0;
+	overflow: hidden;
+}
+
+.uni-comment-face image {
+	width: 100%;
+	border-radius: 100%;
+}
+
+.uni-comment-body {
+	width: 100%;
+}
+
+.uni-comment-top {
+	line-height: 1.5em;
+	justify-content: space-between;
+}
+
+.uni-comment-top text {
+	color: #0A98D5;
+	font-size: 24upx;
+}
+
+.uni-comment-date {
+	line-height: 38upx;
+	flex-direction: row;
+	justify-content: space-between;
+	display: flex !important;
+	flex-grow: 1;
+}
+
+.uni-comment-date view {
+	color: #666666;
+	font-size: 24upx;
+	line-height: 38upx;
+}
+
+.uni-comment-content {
+	line-height: 1.6em;
+	font-size: 28upx;
+	padding: 8upx 0;
+}
+
+.uni-comment-replay-btn {
+	background: #FFF;
+	font-size: 24upx;
+	line-height: 28upx;
+	padding: 5upx 20upx;
+	border-radius: 30upx;
+	color: #333 !important;
+	margin: 0 10upx;
+}
+
+/* swiper msg */
+.uni-swiper-msg {
+	width: 100%;
+	padding: 12upx 0;
+	flex-wrap: nowrap;
+	display: flex;
+}
+
+.uni-swiper-msg-icon {
+	width: 50upx;
+	margin-right: 20upx;
+}
+
+.uni-swiper-msg-icon image {
+	width: 100%;
+	flex-shrink: 0;
+}
+
+.uni-swiper-msg swiper {
+	width: 100%;
+	height: 50upx;
+}
+
+.uni-swiper-msg swiper-item {
+	line-height: 50upx;
+}
+
+/* product */
+.uni-product-list {
+	display: flex;
+	width: 100%;
+	flex-wrap: wrap;
+	flex-direction: row;
+}
+
+.uni-product {
+	padding: 20upx;
+	display: flex;
+	flex-direction: column;
+}
+
+.image-view {
+	height: 330upx;
+	width: 330upx;
+	margin: 12upx 0;
+}
+
+.uni-product-image {
+	height: 330upx;
+	width: 330upx;
+}
+
+.uni-product-title {
+	width: 300upx;
+	word-break: break-all;
+	display: -webkit-box;
+	overflow: hidden;
+	line-height: 1.5;
+	text-overflow: ellipsis;
+	-webkit-box-orient: vertical;
+	-webkit-line-clamp: 2;
+}
+
+.uni-product-price {
+	margin-top: 10upx;
+	font-size: 28upx;
+	line-height: 1.5;
+	position: relative;
+}
+
+.uni-product-price-original {
+	color: #e80080;
+}
+
+.uni-product-price-favour {
+	color: #888888;
+	text-decoration: line-through;
+	margin-left: 10upx;
+}
+
+.uni-product-tip {
+	position: absolute;
+	right: 10upx;
+	background-color: #ff3333;
+	color: #ffffff;
+	padding: 0 10upx;
+	border-radius: 5upx;
+}
+
+/* timeline */
+.uni-timeline {
+	margin: 35upx 0;
+	display: flex;
+	flex-direction: column;
+	position: relative;
+}
+
+
+.uni-timeline-item {
+	display: flex;
+	flex-direction: row;
+	position: relative;
+	padding-bottom: 20upx;
+	box-sizing: border-box;
+	overflow: hidden;
+
+}
+
+.uni-timeline-item .uni-timeline-item-keynode {
+	width: 160upx;
+	flex-shrink: 0;
+	box-sizing: border-box;
+	padding-right: 20upx;
+	text-align: right;
+	line-height: 65upx;
+}
+
+.uni-timeline-item .uni-timeline-item-divider {
+	flex-shrink: 0;
+	position: relative;
+	width: 30upx;
+	height: 30upx;
+	top: 15upx;
+	border-radius: 50%;
+	background-color: #bbb;
+}
+
+
+
+.uni-timeline-item-divider::before,
+.uni-timeline-item-divider::after {
+	position: absolute;
+	left: 15upx;
+	width: 1upx;
+	height: 100vh;
+	content: '';
+	background: inherit;
+}
+
+.uni-timeline-item-divider::before {
+	bottom: 100%;
+}
+
+.uni-timeline-item-divider::after {
+	top: 100%;
+}
+
+
+.uni-timeline-last-item .uni-timeline-item-divider:after {
+	display: none;
+}
+
+.uni-timeline-first-item .uni-timeline-item-divider:before {
+	display: none;
+}
+
+.uni-timeline-item .uni-timeline-item-content {
+	padding-left: 20upx;
+}
+
+.uni-timeline-last-item .bottom-border::after {
+	display: none;
+}
+
+.uni-timeline-item-content .datetime {
+	color: #CCCCCC;
+}
+
+/* 自定义节点颜色 */
+.uni-timeline-last-item .uni-timeline-item-divider {
+	background-color: #1AAD19;
+}
+
+
+/* uni-icon */
+
+.uni-icon {
+	font-family: uniicons;
+	font-size: 24px;
+	font-weight: normal;
+	font-style: normal;
+	line-height: 1;
+	display: inline-block;
+	text-decoration: none;
+	-webkit-font-smoothing: antialiased;
+}
+
+.uni-icon.uni-active {
+	color: #007aff;
+}
+
+.uni-icon-contact:before {
+	content: '\e100';
+}
+
+.uni-icon-person:before {
+	content: '\e101';
+}
+
+.uni-icon-personadd:before {
+	content: '\e102';
+}
+
+.uni-icon-contact-filled:before {
+	content: '\e130';
+}
+
+.uni-icon-person-filled:before {
+	content: '\e131';
+}
+
+.uni-icon-personadd-filled:before {
+	content: '\e132';
+}
+
+.uni-icon-phone:before {
+	content: '\e200';
+}
+
+.uni-icon-email:before {
+	content: '\e201';
+}
+
+.uni-icon-chatbubble:before {
+	content: '\e202';
+}
+
+.uni-icon-chatboxes:before {
+	content: '\e203';
+}
+
+.uni-icon-phone-filled:before {
+	content: '\e230';
+}
+
+.uni-icon-email-filled:before {
+	content: '\e231';
+}
+
+.uni-icon-chatbubble-filled:before {
+	content: '\e232';
+}
+
+.uni-icon-chatboxes-filled:before {
+	content: '\e233';
+}
+
+.uni-icon-weibo:before {
+	content: '\e260';
+}
+
+.uni-icon-weixin:before {
+	content: '\e261';
+}
+
+.uni-icon-pengyouquan:before {
+	content: '\e262';
+}
+
+.uni-icon-chat:before {
+	content: '\e263';
+}
+
+.uni-icon-qq:before {
+	content: '\e264';
+}
+
+.uni-icon-videocam:before {
+	content: '\e300';
+}
+
+.uni-icon-camera:before {
+	content: '\e301';
+}
+
+.uni-icon-mic:before {
+	content: '\e302';
+}
+
+.uni-icon-location:before {
+	content: '\e303';
+}
+
+.uni-icon-mic-filled:before,
+.uni-icon-speech:before {
+	content: '\e332';
+}
+
+.uni-icon-location-filled:before {
+	content: '\e333';
+}
+
+.uni-icon-micoff:before {
+	content: '\e360';
+}
+
+.uni-icon-image:before {
+	content: '\e363';
+}
+
+.uni-icon-map:before {
+	content: '\e364';
+}
+
+.uni-icon-compose:before {
+	content: '\e400';
+}
+
+.uni-icon-trash:before {
+	content: '\e401';
+}
+
+.uni-icon-upload:before {
+	content: '\e402';
+}
+
+.uni-icon-download:before {
+	content: '\e403';
+}
+
+.uni-icon-close:before {
+	content: '\e404';
+}
+
+.uni-icon-redo:before {
+	content: '\e405';
+}
+
+.uni-icon-undo:before {
+	content: '\e406';
+}
+
+.uni-icon-refresh:before {
+	content: '\e407';
+}
+
+.uni-icon-star:before {
+	content: '\e408';
+}
+
+.uni-icon-plus:before {
+	content: '\e409';
+}
+
+.uni-icon-minus:before {
+	content: '\e410';
+}
+
+.uni-icon-circle:before,
+.uni-icon-checkbox:before {
+	content: '\e411';
+}
+
+.uni-icon-close-filled:before,
+.uni-icon-clear:before {
+	content: '\e434';
+}
+
+.uni-icon-refresh-filled:before {
+	content: '\e437';
+}
+
+.uni-icon-star-filled:before {
+	content: '\e438';
+}
+
+.uni-icon-plus-filled:before {
+	content: '\e439';
+}
+
+.uni-icon-minus-filled:before {
+	content: '\e440';
+}
+
+.uni-icon-circle-filled:before {
+	content: '\e441';
+}
+
+.uni-icon-checkbox-filled:before {
+	content: '\e442';
+}
+
+.uni-icon-closeempty:before {
+	content: '\e460';
+}
+
+.uni-icon-refreshempty:before {
+	content: '\e461';
+}
+
+.uni-icon-reload:before {
+	content: '\e462';
+}
+
+.uni-icon-starhalf:before {
+	content: '\e463';
+}
+
+.uni-icon-spinner:before {
+	content: '\e464';
+}
+
+.uni-icon-spinner-cycle:before {
+	content: '\e465';
+}
+
+.uni-icon-search:before {
+	content: '\e466';
+}
+
+.uni-icon-plusempty:before {
+	content: '\e468';
+}
+
+.uni-icon-forward:before {
+	content: '\e470';
+}
+
+.uni-icon-back:before,
+.uni-icon-left-nav:before {
+	content: '\e471';
+}
+
+.uni-icon-checkmarkempty:before {
+	content: '\e472';
+}
+
+.uni-icon-home:before {
+	content: '\e500';
+}
+
+.uni-icon-navigate:before {
+	content: '\e501';
+}
+
+.uni-icon-gear:before {
+	content: '\e502';
+}
+
+.uni-icon-paperplane:before {
+	content: '\e503';
+}
+
+.uni-icon-info:before {
+	content: '\e504';
+}
+
+.uni-icon-help:before {
+	content: '\e505';
+}
+
+.uni-icon-locked:before {
+	content: '\e506';
+}
+
+.uni-icon-more:before {
+	content: '\e507';
+}
+
+.uni-icon-flag:before {
+	content: '\e508';
+}
+
+.uni-icon-home-filled:before {
+	content: '\e530';
+}
+
+.uni-icon-gear-filled:before {
+	content: '\e532';
+}
+
+.uni-icon-info-filled:before {
+	content: '\e534';
+}
+
+.uni-icon-help-filled:before {
+	content: '\e535';
+}
+
+.uni-icon-more-filled:before {
+	content: '\e537';
+}
+
+.uni-icon-settings:before {
+	content: '\e560';
+}
+
+.uni-icon-list:before {
+	content: '\e562';
+}
+
+.uni-icon-bars:before {
+	content: '\e563';
+}
+
+.uni-icon-loop:before {
+	content: '\e565';
+}
+
+.uni-icon-paperclip:before {
+	content: '\e567';
+}
+
+.uni-icon-eye:before {
+	content: '\e568';
+}
+
+.uni-icon-arrowup:before {
+	content: '\e580';
+}
+
+.uni-icon-arrowdown:before {
+	content: '\e581';
+}
+
+.uni-icon-arrowleft:before {
+	content: '\e582';
+}
+
+.uni-icon-arrowright:before {
+	content: '\e583';
+}
+
+.uni-icon-arrowthinup:before {
+	content: '\e584';
+}
+
+.uni-icon-arrowthindown:before {
+	content: '\e585';
+}
+
+.uni-icon-arrowthinleft:before {
+	content: '\e586';
+}
+
+.uni-icon-arrowthinright:before {
+	content: '\e587';
+}
+
+.uni-icon-pulldown:before {
+	content: '\e588';
+}
+
+.uni-icon-scan:before {
+	content: "\e612";
+}
+
+/* 分界线 */
+.uni-divider {
+	height: 110upx;
+	display: flex;
+	align-items: center;
+	justify-content: center;
+	position: relative;
+}
+
+.uni-divider__content {
+	font-size: 28upx;
+	color: #999;
+	padding: 0 20upx;
+	position: relative;
+	z-index: 101;
+	background: #F4F5F6;
+}
+
+.uni-divider__line {
+	background-color: #CCCCCC;
+	height: 1px;
+	width: 100%;
+	position: absolute;
+	z-index: 100;
+	top: 50%;
+	left: 0;
+	transform: translateY(50%);
+}
diff --git a/js_sdk/u-charts/config.js b/js_sdk/u-charts/config.js
new file mode 100644
index 0000000..0fe89ef
--- /dev/null
+++ b/js_sdk/u-charts/config.js
@@ -0,0 +1,471 @@
+/*
+ * uCharts组件 默认配置文件,如有修改,更新前请备份此文件!!
+ * Copyright (c) 2021 QIUN秋云 https://www.ucharts.cn All rights reserved.
+ * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+ * 
+ * uCharts官方网站
+ * https://www.uCharts.cn
+ * 
+ * 开源地址:
+ * https://gitee.com/uCharts/uCharts
+ * 
+ * uni-app插件市场地址:
+ * http://ext.dcloud.net.cn/plugin?id=271
+ * 
+ */
+module.exports = {
+	"type":["pie","ring","rose","word","funnel","map","arcbar","line","column","area","radar","gauge","candle","mix","point","bubble"],
+	"categories":["line","column","area","radar","gauge","candle","mix","point","bubble"],
+	//以上数据请勿改动,下面是自定义默认配置,请添加项目所需的个性配置
+	"pie":{
+		type: 'pie',
+		padding:[15,15,0,15],
+		legend:{
+			show:true,
+			padding:5,
+			lineHeight:11,
+			margin:0,
+		},
+		dataLabel: true,
+		extra: {
+			pie: {
+		    border:true,
+		    borderColor:'#FFFFFF',
+		    borderWidth:3
+			}
+		}
+	},
+	"ring":{
+		type: 'ring',
+		padding:[5,5,5,5],
+		legend:{
+			show:true,
+			position:'right',
+			float:'center',
+			itemGap:10,
+			padding:5,
+			lineHeight:26,
+			margin:5,
+			borderWidth :1
+		},
+		disablePieStroke: true,
+		dataLabel: true,
+		subtitle: {
+			name: '70%',
+			color: '#7cb5ec',
+			fontSize: 25,
+		},
+		title: {
+			name: '收益率',
+			color: '#666666',
+			fontSize: 15,
+		},
+		extra: {
+			pie: {
+			  offsetAngle: 0,
+			  ringWidth: 40,
+			  labelWidth:15
+			}
+		}
+	},
+	"rose":{
+		type: 'rose',
+		padding:[15,15,0,15],
+		legend:{
+			show:true,
+			position:'left',
+			float:'center',
+			itemGap:10,
+			padding:5,
+			lineHeight:26,
+			margin:5,
+			borderWidth :1
+		},
+		dataLabel: true,
+		extra: {
+			rose: {
+				type:'area',
+				minRadius:50,
+				activeOpacity:0.5,
+				offsetAngle:0,
+				labelWidth:15
+			}
+		}
+	},
+	"word":{
+		type: 'word',
+		extra: {
+			word: {
+				type: 'normal'
+			}
+		}
+	},
+	"funnel":{
+		type: 'funnel',
+		padding:[15,15,0,15],
+		legend:{
+			show:true,
+			padding:5,
+			lineHeight:11,
+			margin:0,
+		},
+		dataLabel: true,
+		extra: {
+			funnel: {
+		    border:true,
+		    borderWidth:2,
+		    borderColor:'#FFFFFF'
+			}
+		}
+	},
+	"map":{
+		type: 'map',
+		padding:[0,0,0,0],
+		legend:{
+			show:false
+		},
+		dataLabel:true,
+		extra: {
+			map: {
+		    border:true,
+		    borderWidth:1,
+		    borderColor:'#666666',
+		    fillOpacity:0.6
+			}
+		}
+	},
+	"arcbar":{
+		type: 'arcbar',
+		legend:{show:false},
+		dataLabel: true,
+		title: {
+			name: "百分比",
+			color: '#00FF00',
+			fontSize: 25
+		},
+		subtitle: {
+			name: "默认标题",
+			color: '#666666',
+			fontSize: 15
+		},
+		extra: {
+			arcbar:{
+				type:'default',
+				width: 12,
+			}
+		}
+	},
+	"line":{
+		type: 'line',
+		padding:[15,30,0,15],
+		legend:{
+			show:true,
+			padding:5,
+			lineHeight:11,
+			margin:0,
+		},
+		dataLabel: true,
+		dataPointShape:true,
+		xAxis: {
+			disableGrid: true,
+		},
+		yAxis: {
+			gridType: 'dash',
+			gridColor: '#CCCCCC',
+			dashLength: 8,
+			splitNumber: 4,
+			format: val => {
+				return val.toFixed(0);
+			}
+		},
+		extra: {
+			line:{
+				type: 'straight'
+			}
+		}
+	},
+	"column":{
+		type: 'column',
+		padding:[15,5,0,15],
+		legend:{
+			show:true,
+			padding:5,
+			lineHeight:11,
+			margin:0,
+		},
+		animation: true,
+		dataLabel: true,
+		xAxis: {
+			disableGrid:true,
+		},
+		yAxis: {
+		  data:[{
+		    position:'right',
+				axisLine:false,
+		    format:(val)=>{return val.toFixed(0)},
+		  }]
+		},
+		extra: {
+			column: {
+				type:'group',
+				width:30
+			}
+		}
+	},
+	"area":{
+		type: 'area',
+		padding:[15,15,0,15],
+		legend:{
+			show:true,
+		},
+		dataLabel:true,
+		dataPointShape:true,
+		xAxis: {
+			disableGrid:true,
+		},
+		yAxis: {
+			gridType:'dash',
+			gridColor:'#CCCCCC',
+			dashLength:8,
+			splitNumber:5,
+		},
+		extra: {
+			area:{
+				type: 'straight',
+				opacity:0.2,
+				addLine:true,
+				width:2,
+				gradient:false
+			}
+		}
+	},
+	"radar":{
+		type: 'radar',
+		padding:[15,15,0,15],
+		legend:{
+			show:true,
+			padding:5,
+			lineHeight:11,
+			margin:0,
+		},
+		animation: true,
+		dataLabel: true,
+		extra: {
+			radar: {
+				max: 200,
+				gridType:'radar'//radar或者circle可选,网格样式,默认radar
+			}
+		}
+	},
+	"gauge":{
+		type: 'gauge',
+		legend:{show:false},
+		animation: true,
+		dataLabel: true,
+		title: {
+			name: "字符串类型",
+			color: '#00FF00',
+			fontSize: 25,
+			offsetY:50,
+		},
+		subtitle: {
+			name: "字符串类型",
+			color: '#666666',
+			fontSize: 15,
+			offsetY:-50,
+		},
+		extra: {
+			gauge:{
+				type:'default',
+				width: 30,
+				startAngle:0.75,
+				endAngle:0.25,
+				startNumber:0,
+				endNumber:100,
+				splitLine:{
+					fixRadius:0,
+					splitNumber:10,
+					width: 30,
+					color:'#FFFFFF',
+					childNumber:5,
+					childWidth:30*0.4,
+				},
+				pointer:{
+					width: 30*0.8,
+					color:'auto'
+				}
+			}
+		}
+	},
+	"candle":{
+		type: 'candle',
+		padding:[15,15,0,15],
+		legend:{
+			show:true,
+			padding:5,
+			lineHeight:11,
+			margin:8,
+		},
+		enableMarkLine: true,
+		enableScroll: true,
+		dataLabel: false,
+		dataPointShape: true,
+		xAxis: {
+			disableGrid:true,
+			labelCount:4,
+			itemCount:5,
+			scrollShow:true,
+			scrollAlign:'right',
+		},
+		yAxis: {
+			gridType:'dash',
+			splitNumber:5,
+			format:(val)=>{return val.toFixed(0)}
+		},
+		extra: {
+			candle:{
+				color:{
+					upLine:'#f04864',
+					upFill:'#f04864',
+					downLine:'#2fc25b',
+					downFill:'#2fc25b'
+				},
+				average:{
+					show:true,
+					name:['MA5','MA10','MA30'],
+					day:[5,10,20],
+					color:['#1890ff', '#2fc25b', '#facc14']
+				}
+			},
+			tooltip:{
+				bgColor:'#000000',
+				bgOpacity:0.7,
+				gridType:'dash',
+				dashLength:5,
+				gridColor:'#1890ff',
+				fontColor:'#FFFFFF',
+				horizentalLine:true,
+				xAxisLabel:true,
+				yAxisLabel:true,
+				labelBgColor:'#DFE8FF',
+				labelBgOpacity:0.95,
+				labelAlign:'left',
+				labelFontColor:'#666666'
+			},
+		  markLine: {
+		    type: 'dash',
+		    dashLength: 5,
+		    data: [{
+		      value:2150,
+		      lineColor: '#f04864',
+		      showLabel:true
+		    },{
+		      value:2350,
+		      lineColor: '#f04864',
+		      showLabel:true
+		    }]
+		  }
+		}
+	},
+	"mix":{
+		type: 'mix',
+		padding:[15,15,0,15],
+		legend:{
+			show:true,
+		  position:'bottom',
+		  float:'center',
+			padding:5,
+			lineHeight:11,
+			margin:6,
+		},
+		dataLabel: true,
+		dataPointShape: true,
+		xAxis: {
+			disableGrid:true,
+		},
+		yAxis: {
+		  data:[{
+		    calibration:true,
+		    position:'left',
+		    title:'折线',
+		    titleFontSize:12,
+		    format:(val)=>{return val.toFixed(0)+'度'}
+		  },{
+		    calibration:true,
+		    position:'right',
+		    min:0,
+		    max:200,
+		    title:'柱状图',
+		    titleFontSize:12,
+		    format:(val)=>{return val.toFixed(0)+'元'}
+		  },{
+		    calibration:true,
+		    position:'right',
+		    min:0,
+		    max:200,
+		    title:'点',
+		    titleFontSize:12
+		  }],
+		  showTitle:true,
+			gridType:'dash',
+			dashLength:4,
+			splitNumber:5
+		},
+		extra: {
+		  column:{
+		    width:20
+		  }
+		}
+	},
+	"point":{
+		type: 'point',
+		padding:[15,30,0,15],
+		legend:{
+			show:true
+		},
+		dataLabel: false,
+		dataPointShape:true,
+		xAxis: {
+			disableGrid: true,
+			labelCount: 4
+		},
+		yAxis: {
+			gridType: 'dash',
+			gridColor: '#CCCCCC',
+			dashLength: 8,
+			splitNumber: 4,
+			format: val => {
+				return val.toFixed(1);
+			}
+		},
+		extra: {
+			point:{
+			}
+		}
+	},
+	"bubble":{
+		type: 'bubble',
+		padding:[15,30,0,15],
+		legend:{
+			show:true
+		},
+		dataLabel: true,
+		xAxis: {
+			disableGrid: true,
+			labelCount: 4
+		},
+		yAxis: {
+			gridType: 'dash',
+			gridColor: '#CCCCCC',
+			dashLength: 8,
+			splitNumber: 4,
+			format: val => {
+				return val.toFixed(1);
+			}
+		},
+		extra: {
+			bubble:{
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/js_sdk/u-charts/demodata.json b/js_sdk/u-charts/demodata.json
new file mode 100644
index 0000000..fb4e343
--- /dev/null
+++ b/js_sdk/u-charts/demodata.json
@@ -0,0 +1,267 @@
+{
+	"Column": {
+		"categories": ["2016", "2017", "2018", "2019", "2020", "2021"],
+		"series": [{
+			"name": "目标值",
+			"data": [35, 36, 31, 33, 13, 34]
+		}, {
+			"name": "完成量",
+			"data": [18, 27, 21, 24, 6, 28]
+		}]
+	},
+	"ColumnA": {
+		"categories": ["2016", "2017", "2018", "2019", "2020", "2021"],
+		"series": [{
+			"name": "成交量1",
+			"data": [15, {
+				"value": 20,
+				"color": "#f04864"
+			}, 45, 37, 43, 34]
+		}, {
+			"name": "成交量2",
+			"data": [30, {
+				"value": 40,
+				"color": "#facc14"
+			}, 25, 14, 34, 18]
+		}]
+	},
+	"Mix": {
+		"categories": ["2016", "2017", "2018", "2019", "2020", "2021"],
+		"series": [{
+			"name": "曲面",
+			"data": [70, 50, 85, 130, 64, 88],
+			"type": "area",
+			"style": "curve"
+		}, {
+			"name": "柱1",
+			"data": [40, 30, 55, 110, 24, 58],
+			"type": "column"
+		}, {
+			"name": "柱2",
+			"data": [50, 20, 75, 60, 34, 38],
+			"type": "column"
+		}, {
+			"name": "曲线",
+			"data": [70, 50, 85, 130, 64, 88],
+			"type": "line",
+			"style": "curve",
+			"color": "#1890ff",
+			"disableLegend": true
+		}, {
+			"name": "折线",
+			"data": [120, 140, 105, 170, 95, 160],
+			"type": "line",
+			"color": "#2fc25b"
+		}, {
+			"name": "点",
+			"data": [100, 80, 125, 150, 112, 132],
+			"type": "point",
+			"color": "#f04864"
+		}]
+	},
+	"Line": {
+		"categories": ["2016", "2017", "2018", "2019", "2020", "2021"],
+		"series": [{
+			"name": "成交量A",
+			"data": [35, 8, 25, 37, 4, 20]
+		}, {
+			"name": "成交量B",
+			"data": [70, 40, 65, 100, 44, 68]
+		}, {
+			"name": "成交量C",
+			"data": [100, 80, 95, 150, 112, 132]
+		}]
+	},
+	"Pie": {
+		"series": [{
+			"name": "一班",
+			"data": 50
+		}, {
+			"name": "二班",
+			"data": 30
+		}, {
+			"name": "三班",
+			"data": 20
+		}, {
+			"name": "四班",
+			"data": 18
+		}, {
+			"name": "五班",
+			"data": 8
+		}]
+	},
+	"Radar": {
+		"categories": ["维度1", "维度2", "维度3", "维度4", "维度5", "维度6"],
+		"series": [{
+			"name": "成交量1",
+			"data": [90, 110, 165, 195, 187, 172]
+		}, {
+			"name": "成交量2",
+			"data": [190, 210, 105, 35, 27, 102]
+		}]
+	},
+	"Arcbar": {
+		"series": [{
+			"name": "正确率",
+			"data": 0.29,
+			"color": "#2fc25b"
+		}]
+	},
+	"Gauge": {
+		"categories": [{
+			"value": 0.2,
+			"color": "#1890ff"
+		}, {
+			"value": 0.8,
+			"color": "#2fc25b"
+		}, {
+			"value": 1,
+			"color": "#f04864"
+		}],
+		"series": [{
+			"name": "完成率",
+			"data": 0.66
+		}]
+	},
+	"Candle": {
+		"categories": [
+			"2020/1/24", "2020/1/25", "2020/1/28", "2020/1/29", "2020/1/30",
+			"2020/1/31", "2020/2/1", "2020/2/4", "2020/2/5", "2020/2/6",
+			"2020/2/7", "2020/2/8", "2020/2/18", "2020/2/19", "2020/2/20",
+			"2020/2/21", "2020/2/22", "2020/2/25", "2020/2/26", "2020/2/27",
+			"2020/2/28", "2020/3/1", "2020/3/4", "2020/3/5", "2020/3/6",
+			"2020/3/7", "2020/3/8", "2020/3/11", "2020/3/12", "2020/3/13",
+			"2020/3/14", "2020/3/15", "2020/3/18", "2020/3/19", "2020/3/20",
+			"2020/3/21", "2020/3/22", "2020/3/25", "2020/3/26", "2020/3/27",
+			"2020/3/28", "2020/3/29", "2020/4/1", "2020/4/2", "2020/4/3",
+			"2020/4/8", "2020/4/9", "2020/4/10", "2020/4/11", "2020/4/12",
+			"2020/4/15", "2020/4/16", "2020/4/17", "2020/4/18", "2020/4/19",
+			"2020/4/22", "2020/4/23", "2020/4/24", "2020/4/25", "2020/4/26",
+			"2020/5/2", "2020/5/3", "2020/5/6", "2020/5/7", "2020/5/8",
+			"2020/5/9", "2020/5/10", "2020/5/13", "2020/5/14", "2020/5/15",
+			"2020/5/16", "2020/5/17", "2020/5/20", "2020/5/21", "2020/5/22",
+			"2020/5/23", "2020/5/24", "2020/5/27", "2020/5/28", "2020/5/29",
+			"2020/5/30", "2020/5/31", "2020/6/3", "2020/6/4", "2020/6/5",
+			"2020/6/6", "2020/6/7", "2020/6/13"
+		],
+		"series": [{
+			"name": "上证指数",
+			"data": [
+				[2320.26, 2302.6, 2287.3, 2362.94],
+				[2300, 2291.3, 2288.26, 2308.38],
+				[2295.35, 2346.5, 2295.35, 2346.92],
+				[2347.22, 2358.98, 2337.35, 2363.8],
+				[2360.75, 2382.48, 2347.89, 2383.76],
+				[2383.43, 2385.42, 2371.23, 2391.82],
+				[2377.41, 2419.02, 2369.57, 2421.15],
+				[2425.92, 2428.15, 2417.58, 2440.38],
+				[2411, 2433.13, 2403.3, 2437.42],
+				[2432.68, 2434.48, 2427.7, 2441.73],
+				[2430.69, 2418.53, 2394.22, 2433.89],
+				[2416.62, 2432.4, 2414.4, 2443.03],
+				[2441.91, 2421.56, 2415.43, 2444.8],
+				[2420.26, 2382.91, 2373.53, 2427.07],
+				[2383.49, 2397.18, 2370.61, 2397.94],
+				[2378.82, 2325.95, 2309.17, 2378.82],
+				[2322.94, 2314.16, 2308.76, 2330.88],
+				[2320.62, 2325.82, 2315.01, 2338.78],
+				[2313.74, 2293.34, 2289.89, 2340.71],
+				[2297.77, 2313.22, 2292.03, 2324.63],
+				[2322.32, 2365.59, 2308.92, 2366.16],
+				[2364.54, 2359.51, 2330.86, 2369.65],
+				[2332.08, 2273.4, 2259.25, 2333.54],
+				[2274.81, 2326.31, 2270.1, 2328.14],
+				[2333.61, 2347.18, 2321.6, 2351.44],
+				[2340.44, 2324.29, 2304.27, 2352.02],
+				[2326.42, 2318.61, 2314.59, 2333.67],
+				[2314.68, 2310.59, 2296.58, 2320.96],
+				[2309.16, 2286.6, 2264.83, 2333.29],
+				[2282.17, 2263.97, 2253.25, 2286.33],
+				[2255.77, 2270.28, 2253.31, 2276.22],
+				[2269.31, 2278.4, 2250, 2312.08],
+				[2267.29, 2240.02, 2239.21, 2276.05],
+				[2244.26, 2257.43, 2232.02, 2261.31],
+				[2257.74, 2317.37, 2257.42, 2317.86],
+				[2318.21, 2324.24, 2311.6, 2330.81],
+				[2321.4, 2328.28, 2314.97, 2332],
+				[2334.74, 2326.72, 2319.91, 2344.89],
+				[2318.58, 2297.67, 2281.12, 2319.99],
+				[2299.38, 2301.26, 2289, 2323.48],
+				[2273.55, 2236.3, 2232.91, 2273.55],
+				[2238.49, 2236.62, 2228.81, 2246.87],
+				[2229.46, 2234.4, 2227.31, 2243.95],
+				[2234.9, 2227.74, 2220.44, 2253.42],
+				[2232.69, 2225.29, 2217.25, 2241.34],
+				[2196.24, 2211.59, 2180.67, 2212.59],
+				[2215.47, 2225.77, 2215.47, 2234.73],
+				[2224.93, 2226.13, 2212.56, 2233.04],
+				[2236.98, 2219.55, 2217.26, 2242.48],
+				[2218.09, 2206.78, 2204.44, 2226.26],
+				[2199.91, 2181.94, 2177.39, 2204.99],
+				[2169.63, 2194.85, 2165.78, 2196.43],
+				[2195.03, 2193.8, 2178.47, 2197.51],
+				[2181.82, 2197.6, 2175.44, 2206.03],
+				[2201.12, 2244.64, 2200.58, 2250.11],
+				[2236.4, 2242.17, 2232.26, 2245.12],
+				[2242.62, 2184.54, 2182.81, 2242.62],
+				[2187.35, 2218.32, 2184.11, 2226.12],
+				[2213.19, 2199.31, 2191.85, 2224.63],
+				[2203.89, 2177.91, 2173.86, 2210.58],
+				[2170.78, 2174.12, 2161.14, 2179.65],
+				[2179.05, 2205.5, 2179.05, 2222.81],
+				[2212.5, 2231.17, 2212.5, 2236.07],
+				[2227.86, 2235.57, 2219.44, 2240.26],
+				[2242.39, 2246.3, 2235.42, 2255.21],
+				[2246.96, 2232.97, 2221.38, 2247.86],
+				[2228.82, 2246.83, 2225.81, 2247.67],
+				[2247.68, 2241.92, 2231.36, 2250.85],
+				[2238.9, 2217.01, 2205.87, 2239.93],
+				[2217.09, 2224.8, 2213.58, 2225.19],
+				[2221.34, 2251.81, 2210.77, 2252.87],
+				[2249.81, 2282.87, 2248.41, 2288.09],
+				[2286.33, 2299.99, 2281.9, 2309.39],
+				[2297.11, 2305.11, 2290.12, 2305.3],
+				[2303.75, 2302.4, 2292.43, 2314.18],
+				[2293.81, 2275.67, 2274.1, 2304.95],
+				[2281.45, 2288.53, 2270.25, 2292.59],
+				[2286.66, 2293.08, 2283.94, 2301.7],
+				[2293.4, 2321.32, 2281.47, 2322.1],
+				[2323.54, 2324.02, 2321.17, 2334.33],
+				[2316.25, 2317.75, 2310.49, 2325.72],
+				[2320.74, 2300.59, 2299.37, 2325.53],
+				[2300.21, 2299.25, 2294.11, 2313.43],
+				[2297.1, 2272.42, 2264.76, 2297.1],
+				[2270.71, 2270.93, 2260.87, 2276.86],
+				[2264.43, 2242.11, 2240.07, 2266.69],
+				[2242.26, 2210.9, 2205.07, 2250.63],
+				[2190.1, 2148.35, 2126.22, 2190.1]
+			]
+		}]
+	},
+	"CandleColumn": {
+		"categories": [
+			"2020/1/24", "2020/1/25", "2020/1/28", "2020/1/29", "2020/1/30",
+			"2020/1/31", "2020/2/1", "2020/2/4", "2020/2/5", "2020/2/6",
+			"2020/2/7", "2020/2/8", "2020/2/18", "2020/2/19", "2020/2/20",
+			"2020/2/21", "2020/2/22", "2020/2/25", "2020/2/26", "2020/2/27",
+			"2020/2/28", "2020/3/1", "2020/3/4", "2020/3/5", "2020/3/6",
+			"2020/3/7", "2020/3/8", "2020/3/11", "2020/3/12", "2020/3/13",
+			"2020/3/14", "2020/3/15", "2020/3/18", "2020/3/19", "2020/3/20",
+			"2020/3/21", "2020/3/22", "2020/3/25", "2020/3/26", "2020/3/27",
+			"2020/3/28", "2020/3/29", "2020/4/1", "2020/4/2", "2020/4/3",
+			"2020/4/8", "2020/4/9", "2020/4/10", "2020/4/11", "2020/4/12",
+			"2020/4/15", "2020/4/16", "2020/4/17", "2020/4/18", "2020/4/19",
+			"2020/4/22", "2020/4/23", "2020/4/24", "2020/4/25", "2020/4/26",
+			"2020/5/2", "2020/5/3", "2020/5/6", "2020/5/7", "2020/5/8",
+			"2020/5/9", "2020/5/10", "2020/5/13", "2020/5/14", "2020/5/15",
+			"2020/5/16", "2020/5/17", "2020/5/20", "2020/5/21", "2020/5/22",
+			"2020/5/23", "2020/5/24", "2020/5/27", "2020/5/28", "2020/5/29",
+			"2020/5/30", "2020/5/31", "2020/6/3", "2020/6/4", "2020/6/5",
+			"2020/6/6", "2020/6/7", "2020/6/13"
+		],
+		"series": [{
+			"name": "成交量1",
+			"data": [15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45, 37, 43, 15, 20, 45]
+		}]
+	}
+}
diff --git a/js_sdk/u-charts/mapdata.json b/js_sdk/u-charts/mapdata.json
new file mode 100644
index 0000000..4aa4573
--- /dev/null
+++ b/js_sdk/u-charts/mapdata.json
@@ -0,0 +1,41 @@
+{
+"type": "FeatureCollection",
+"name": "100000_full",
+"features": [
+{ "type": "Feature", "properties": { "adcode": "110000", "name": "北京市", "center": [ 116.405285, 39.904989 ], "centroid": [ 116.41995, 40.18994 ], "childrenNum": 16, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 0, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 117.348611, 40.581141 ], [ 117.348611, 40.581141 ], [ 117.269771, 40.560684 ], [ 117.247597, 40.539766 ], [ 117.262995, 40.512927 ], [ 117.208793, 40.501552 ], [ 117.263611, 40.442367 ], [ 117.234046, 40.417312 ], [ 117.226039, 40.368997 ], [ 117.243285, 40.369453 ], [ 117.271618, 40.325211 ], [ 117.271618, 40.325211 ], [ 117.295024, 40.2782 ], [ 117.331365, 40.289613 ], [ 117.351075, 40.229786 ], [ 117.389879, 40.227958 ], [ 117.383719, 40.188195 ], [ 117.367089, 40.172649 ], [ 117.367089, 40.173106 ], [ 117.367089, 40.173106 ], [ 117.367089, 40.172649 ], [ 117.349227, 40.136513 ], [ 117.307343, 40.136971 ], [ 117.274082, 40.105852 ], [ 117.254988, 40.114548 ], [ 117.254988, 40.114548 ], [ 117.254988, 40.114548 ], [ 117.224191, 40.094865 ], [ 117.224191, 40.094865 ], [ 117.210024, 40.082045 ], [ 117.204481, 40.069681 ], [ 117.159517, 40.077008 ], [ 117.140423, 40.064185 ], [ 117.105315, 40.074261 ], [ 117.105315, 40.074261 ], [ 117.051728, 40.059605 ], [ 117.025243, 40.030283 ], [ 116.945171, 40.04128 ], [ 116.927924, 40.055024 ], [ 116.867562, 40.041739 ], [ 116.831222, 40.051359 ], [ 116.820135, 40.02845 ], [ 116.781331, 40.034866 ], [ 116.757925, 39.967934 ], [ 116.782563, 39.947749 ], [ 116.78441, 39.891294 ], [ 116.812128, 39.889916 ], [ 116.865714, 39.843982 ], [ 116.907598, 39.832494 ], [ 116.918069, 39.84628 ], [ 116.949482, 39.778703 ], [ 116.902055, 39.763523 ], [ 116.916837, 39.731314 ], [ 116.887272, 39.72533 ], [ 116.889736, 39.687576 ], [ 116.90575, 39.688037 ], [ 116.906366, 39.677444 ], [ 116.8497, 39.66777 ], [ 116.812128, 39.615695 ], [ 116.79057, 39.595868 ], [ 116.748686, 39.619844 ], [ 116.709266, 39.618 ], [ 116.726512, 39.595407 ], [ 116.726512, 39.595407 ], [ 116.724048, 39.59264 ], [ 116.723432, 39.59264 ], [ 116.724048, 39.59264 ], [ 116.723432, 39.59264 ], [ 116.664918, 39.605552 ], [ 116.620571, 39.601863 ], [ 116.592237, 39.621227 ], [ 116.592237, 39.621227 ], [ 116.524484, 39.596329 ], [ 116.50847, 39.551122 ], [ 116.473361, 39.552968 ], [ 116.478289, 39.535431 ], [ 116.437637, 39.526661 ], [ 116.443796, 39.510041 ], [ 116.401912, 39.528046 ], [ 116.411767, 39.482794 ], [ 116.444412, 39.482332 ], [ 116.454883, 39.453226 ], [ 116.434557, 39.442597 ], [ 116.361876, 39.455074 ], [ 116.361876, 39.455074 ], [ 116.337854, 39.455536 ], [ 116.307057, 39.488337 ], [ 116.257782, 39.500344 ], [ 116.240536, 39.564041 ], [ 116.198652, 39.589412 ], [ 116.151841, 39.583416 ], [ 116.130283, 39.567732 ], [ 116.09887, 39.575113 ], [ 116.036044, 39.571884 ], [ 116.026189, 39.587567 ], [ 115.995392, 39.576958 ], [ 115.978146, 39.595868 ], [ 115.957204, 39.560812 ], [ 115.910393, 39.600479 ], [ 115.910393, 39.600479 ], [ 115.91532, 39.582955 ], [ 115.91532, 39.582955 ], [ 115.867893, 39.546507 ], [ 115.867893, 39.546507 ], [ 115.828473, 39.541431 ], [ 115.821081, 39.522968 ], [ 115.821081, 39.522968 ], [ 115.806299, 39.510041 ], [ 115.806299, 39.510041 ], [ 115.752712, 39.515581 ], [ 115.738545, 39.539585 ], [ 115.738545, 39.540046 ], [ 115.738545, 39.539585 ], [ 115.738545, 39.540046 ], [ 115.724995, 39.5442 ], [ 115.724995, 39.5442 ], [ 115.722531, 39.543738 ], [ 115.721299, 39.543738 ], [ 115.722531, 39.543738 ], [ 115.722531, 39.5442 ], [ 115.721299, 39.543738 ], [ 115.722531, 39.5442 ], [ 115.720683, 39.551122 ], [ 115.720683, 39.551122 ], [ 115.718835, 39.553891 ], [ 115.718835, 39.553891 ], [ 115.716988, 39.56035 ], [ 115.716988, 39.56035 ], [ 115.699125, 39.570039 ], [ 115.699125, 39.570039 ], [ 115.698509, 39.577881 ], [ 115.698509, 39.577881 ], [ 115.667712, 39.615234 ], [ 115.633836, 39.599557 ], [ 115.633836, 39.599557 ], [ 115.587024, 39.589873 ], [ 115.545756, 39.618922 ], [ 115.518039, 39.597252 ], [ 115.522351, 39.640124 ], [ 115.478619, 39.650723 ], [ 115.478619, 39.650723 ], [ 115.491554, 39.670074 ], [ 115.486626, 39.741899 ], [ 115.439815, 39.752022 ], [ 115.443511, 39.785601 ], [ 115.483547, 39.798477 ], [ 115.483547, 39.798477 ], [ 115.50572, 39.784222 ], [ 115.552532, 39.794799 ], [ 115.567314, 39.816407 ], [ 115.514344, 39.837549 ], [ 115.526046, 39.87568 ], [ 115.515575, 39.892212 ], [ 115.515575, 39.892212 ], [ 115.522967, 39.899099 ], [ 115.481083, 39.935819 ], [ 115.426264, 39.950502 ], [ 115.428728, 39.984443 ], [ 115.450286, 39.992697 ], [ 115.454597, 40.029825 ], [ 115.485394, 40.040364 ], [ 115.527278, 40.076092 ], [ 115.59072, 40.096239 ], [ 115.599959, 40.119583 ], [ 115.75456, 40.145663 ], [ 115.75456, 40.145663 ], [ 115.773654, 40.176307 ], [ 115.806299, 40.15344 ], [ 115.847567, 40.147036 ], [ 115.855574, 40.188652 ], [ 115.870356, 40.185909 ], [ 115.89869, 40.234354 ], [ 115.968907, 40.264045 ], [ 115.95166, 40.281852 ], [ 115.917784, 40.354405 ], [ 115.864197, 40.359422 ], [ 115.771806, 40.443734 ], [ 115.781045, 40.49336 ], [ 115.736082, 40.503372 ], [ 115.755176, 40.540221 ], [ 115.784741, 40.55841 ], [ 115.819849, 40.55932 ], [ 115.827857, 40.587504 ], [ 115.885139, 40.595229 ], [ 115.907929, 40.617493 ], [ 115.971986, 40.6025 ], [ 115.982457, 40.578868 ], [ 116.005247, 40.583868 ], [ 116.09887, 40.630665 ], [ 116.133979, 40.666536 ], [ 116.162928, 40.662451 ], [ 116.171551, 40.695582 ], [ 116.204812, 40.740035 ], [ 116.22021, 40.744115 ], [ 116.247311, 40.791707 ], [ 116.273181, 40.762703 ], [ 116.311369, 40.754996 ], [ 116.316912, 40.772221 ], [ 116.453651, 40.765876 ], [ 116.46597, 40.774487 ], [ 116.438253, 40.81934 ], [ 116.334159, 40.90443 ], [ 116.339702, 40.929303 ], [ 116.370499, 40.94377 ], [ 116.398216, 40.90624 ], [ 116.477057, 40.899907 ], [ 116.447492, 40.953715 ], [ 116.455499, 40.980828 ], [ 116.519557, 40.98128 ], [ 116.519557, 40.98128 ], [ 116.5676, 40.992574 ], [ 116.598397, 40.974503 ], [ 116.623034, 41.021026 ], [ 116.615643, 41.053076 ], [ 116.647672, 41.059394 ], [ 116.688324, 41.044501 ], [ 116.698795, 41.021477 ], [ 116.677853, 40.970888 ], [ 116.722201, 40.927495 ], [ 116.713577, 40.909858 ], [ 116.759773, 40.889954 ], [ 116.81336, 40.848319 ], [ 116.848468, 40.839264 ], [ 116.924229, 40.773581 ], [ 116.926692, 40.745022 ], [ 116.964881, 40.709647 ], [ 117.012308, 40.693767 ], [ 117.11209, 40.707379 ], [ 117.117018, 40.70012 ], [ 117.208177, 40.694675 ], [ 117.278394, 40.664267 ], [ 117.319662, 40.657911 ], [ 117.342451, 40.673799 ], [ 117.408973, 40.686961 ], [ 117.493973, 40.675161 ], [ 117.514914, 40.660181 ], [ 117.501364, 40.636569 ], [ 117.467487, 40.649738 ], [ 117.467487, 40.649738 ], [ 117.412669, 40.605226 ], [ 117.429915, 40.576141 ], [ 117.389879, 40.561593 ], [ 117.348611, 40.581141 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "120000", "name": "天津市", "center": [ 117.190182, 39.125596 ], "centroid": [ 117.347019, 39.28803 ], "childrenNum": 16, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 1, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 117.765602, 39.400527 ], [ 117.699696, 39.407463 ], [ 117.673211, 39.386652 ], [ 117.668899, 39.412087 ], [ 117.614081, 39.407001 ], [ 117.601146, 39.419485 ], [ 117.570965, 39.404689 ], [ 117.521074, 39.357043 ], [ 117.536472, 39.338068 ], [ 117.594987, 39.349176 ], [ 117.669515, 39.322792 ], [ 117.670747, 39.35658 ], [ 117.74466, 39.354729 ], [ 117.784696, 39.376938 ], [ 117.805022, 39.373237 ], [ 117.810565, 39.354729 ], [ 117.850601, 39.363984 ], [ 117.850601, 39.363984 ], [ 117.854297, 39.328348 ], [ 117.854913, 39.328348 ], [ 117.854297, 39.328348 ], [ 117.854913, 39.328348 ], [ 117.88879, 39.332051 ], [ 117.919587, 39.318162 ], [ 117.919587, 39.318162 ], [ 117.965782, 39.314921 ], [ 117.965782, 39.314921 ], [ 117.973173, 39.312143 ], [ 117.973173, 39.312143 ], [ 117.979333, 39.300566 ], [ 117.979333, 39.300566 ], [ 117.982412, 39.298714 ], [ 117.982412, 39.298714 ], [ 118.024296, 39.289451 ], [ 118.024296, 39.289451 ], [ 118.036615, 39.264898 ], [ 118.064948, 39.256094 ], [ 118.064948, 39.231065 ], [ 118.037231, 39.220402 ], [ 117.977485, 39.206028 ], [ 117.96455, 39.172631 ], [ 117.871543, 39.122506 ], [ 117.837667, 39.057011 ], [ 117.855529, 38.957492 ], [ 117.898029, 38.948649 ], [ 117.875855, 38.920252 ], [ 117.847522, 38.855502 ], [ 117.778536, 38.869016 ], [ 117.752051, 38.847579 ], [ 117.64611, 38.828933 ], [ 117.646725, 38.788827 ], [ 117.671363, 38.772032 ], [ 117.740964, 38.753833 ], [ 117.740964, 38.700141 ], [ 117.729261, 38.680055 ], [ 117.65658, 38.66043 ], [ 117.639334, 38.626776 ], [ 117.55803, 38.613683 ], [ 117.47919, 38.616489 ], [ 117.432379, 38.601524 ], [ 117.368937, 38.564566 ], [ 117.25314, 38.556143 ], [ 117.238358, 38.580943 ], [ 117.258684, 38.608072 ], [ 117.258684, 38.608072 ], [ 117.213104, 38.639866 ], [ 117.213104, 38.639866 ], [ 117.183539, 38.61836 ], [ 117.183539, 38.61836 ], [ 117.150894, 38.617892 ], [ 117.109626, 38.584685 ], [ 117.070822, 38.608072 ], [ 117.055424, 38.639398 ], [ 117.068358, 38.680522 ], [ 117.038793, 38.688464 ], [ 116.95133, 38.689398 ], [ 116.948866, 38.689398 ], [ 116.950714, 38.689398 ], [ 116.95133, 38.689398 ], [ 116.950714, 38.689398 ], [ 116.948866, 38.689398 ], [ 116.877417, 38.680522 ], [ 116.858939, 38.741231 ], [ 116.794265, 38.744498 ], [ 116.794265, 38.744498 ], [ 116.746222, 38.754299 ], [ 116.737599, 38.784629 ], [ 116.75115, 38.831264 ], [ 116.723432, 38.852706 ], [ 116.722201, 38.896968 ], [ 116.708034, 38.931892 ], [ 116.72836, 38.975174 ], [ 116.754845, 39.003084 ], [ 116.754229, 39.034701 ], [ 116.754229, 39.034701 ], [ 116.783179, 39.05097 ], [ 116.783179, 39.05097 ], [ 116.812744, 39.05097 ], [ 116.812744, 39.05097 ], [ 116.871874, 39.054688 ], [ 116.912526, 39.110898 ], [ 116.91191, 39.111362 ], [ 116.91191, 39.111362 ], [ 116.912526, 39.110898 ], [ 116.909446, 39.150822 ], [ 116.870026, 39.153607 ], [ 116.855859, 39.215766 ], [ 116.881729, 39.225966 ], [ 116.881729, 39.225966 ], [ 116.87249, 39.291304 ], [ 116.889736, 39.338068 ], [ 116.870642, 39.357506 ], [ 116.829374, 39.338994 ], [ 116.818287, 39.3737 ], [ 116.840461, 39.378326 ], [ 116.839845, 39.413474 ], [ 116.876185, 39.43474 ], [ 116.832454, 39.435664 ], [ 116.785026, 39.465702 ], [ 116.820751, 39.482332 ], [ 116.819519, 39.528507 ], [ 116.78749, 39.554352 ], [ 116.808432, 39.576497 ], [ 116.812128, 39.615695 ], [ 116.8497, 39.66777 ], [ 116.906366, 39.677444 ], [ 116.90575, 39.688037 ], [ 116.932236, 39.706456 ], [ 116.932236, 39.706456 ], [ 116.944555, 39.695405 ], [ 116.944555, 39.695405 ], [ 116.948866, 39.680668 ], [ 116.948866, 39.680668 ], [ 116.964265, 39.64335 ], [ 116.983359, 39.638742 ], [ 116.983359, 39.638742 ], [ 117.016004, 39.653949 ], [ 117.10901, 39.625375 ], [ 117.10901, 39.625375 ], [ 117.152742, 39.623532 ], [ 117.177996, 39.645194 ], [ 117.165061, 39.718886 ], [ 117.165061, 39.718886 ], [ 117.161981, 39.748801 ], [ 117.205713, 39.763984 ], [ 117.15767, 39.796638 ], [ 117.156438, 39.817326 ], [ 117.192162, 39.832953 ], [ 117.251908, 39.834332 ], [ 117.247597, 39.860981 ], [ 117.227887, 39.852712 ], [ 117.162597, 39.876598 ], [ 117.162597, 39.876598 ], [ 117.150894, 39.944996 ], [ 117.198322, 39.992697 ], [ 117.192162, 40.066475 ], [ 117.210024, 40.082045 ], [ 117.224191, 40.094865 ], [ 117.224191, 40.094865 ], [ 117.254988, 40.114548 ], [ 117.254988, 40.114548 ], [ 117.254988, 40.114548 ], [ 117.274082, 40.105852 ], [ 117.307343, 40.136971 ], [ 117.349227, 40.136513 ], [ 117.367089, 40.172649 ], [ 117.367089, 40.173106 ], [ 117.367089, 40.173106 ], [ 117.367089, 40.172649 ], [ 117.383719, 40.188195 ], [ 117.389879, 40.227958 ], [ 117.415748, 40.248973 ], [ 117.450241, 40.252627 ], [ 117.505059, 40.227044 ], [ 117.548791, 40.232527 ], [ 117.571581, 40.219276 ], [ 117.576508, 40.178593 ], [ 117.609769, 40.160301 ], [ 117.609769, 40.160301 ], [ 117.613465, 40.158014 ], [ 117.613465, 40.158014 ], [ 117.651653, 40.122786 ], [ 117.651653, 40.122786 ], [ 117.654117, 40.114548 ], [ 117.654117, 40.114548 ], [ 117.655965, 40.109514 ], [ 117.655965, 40.109514 ], [ 117.675059, 40.082045 ], [ 117.71879, 40.082045 ], [ 117.71879, 40.082045 ], [ 117.752667, 40.081588 ], [ 117.776073, 40.059605 ], [ 117.74774, 40.047236 ], [ 117.744044, 40.018368 ], [ 117.768681, 40.022034 ], [ 117.768681, 40.022034 ], [ 117.793319, 40.005534 ], [ 117.793319, 40.005534 ], [ 117.795167, 39.996823 ], [ 117.795167, 39.996823 ], [ 117.781616, 39.966558 ], [ 117.781616, 39.966558 ], [ 117.756363, 39.965181 ], [ 117.691073, 39.984902 ], [ 117.671363, 39.973896 ], [ 117.614697, 39.97252 ], [ 117.594987, 39.994531 ], [ 117.594987, 39.994531 ], [ 117.546327, 39.999116 ], [ 117.534625, 39.954631 ], [ 117.514914, 39.946832 ], [ 117.513067, 39.910576 ], [ 117.513067, 39.910576 ], [ 117.512451, 39.90874 ], [ 117.512451, 39.90874 ], [ 117.508139, 39.901854 ], [ 117.508139, 39.901854 ], [ 117.529081, 39.859144 ], [ 117.529081, 39.859144 ], [ 117.561726, 39.799856 ], [ 117.546327, 39.775943 ], [ 117.56111, 39.754782 ], [ 117.595603, 39.74604 ], [ 117.57774, 39.726711 ], [ 117.627015, 39.703693 ], [ 117.668899, 39.666849 ], [ 117.66274, 39.636437 ], [ 117.637486, 39.603246 ], [ 117.654117, 39.575113 ], [ 117.684914, 39.58895 ], [ 117.707088, 39.576036 ], [ 117.715711, 39.529892 ], [ 117.745276, 39.547892 ], [ 117.753899, 39.579726 ], [ 117.753899, 39.579726 ], [ 117.766834, 39.598635 ], [ 117.829659, 39.589873 ], [ 117.868464, 39.59679 ], [ 117.933753, 39.574191 ], [ 117.904804, 39.533585 ], [ 117.912195, 39.517428 ], [ 117.912195, 39.517428 ], [ 117.899877, 39.474479 ], [ 117.870311, 39.455074 ], [ 117.871543, 39.411625 ], [ 117.846906, 39.407926 ], [ 117.765602, 39.400527 ] ] ], [ [ [ 117.805022, 39.373237 ], [ 117.784696, 39.376938 ], [ 117.765602, 39.400527 ], [ 117.846906, 39.407926 ], [ 117.852449, 39.380639 ], [ 117.805022, 39.373237 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "130000", "name": "河北省", "center": [ 114.502461, 38.045474 ], "childrenNum": 11, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 2, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 117.467487, 40.649738 ], [ 117.467487, 40.649738 ], [ 117.501364, 40.636569 ], [ 117.514914, 40.660181 ], [ 117.493973, 40.675161 ], [ 117.408973, 40.686961 ], [ 117.342451, 40.673799 ], [ 117.319662, 40.657911 ], [ 117.278394, 40.664267 ], [ 117.208177, 40.694675 ], [ 117.117018, 40.70012 ], [ 117.11209, 40.707379 ], [ 117.012308, 40.693767 ], [ 116.964881, 40.709647 ], [ 116.926692, 40.745022 ], [ 116.924229, 40.773581 ], [ 116.848468, 40.839264 ], [ 116.81336, 40.848319 ], [ 116.759773, 40.889954 ], [ 116.713577, 40.909858 ], [ 116.722201, 40.927495 ], [ 116.677853, 40.970888 ], [ 116.698795, 41.021477 ], [ 116.688324, 41.044501 ], [ 116.647672, 41.059394 ], [ 116.615643, 41.053076 ], [ 116.623034, 41.021026 ], [ 116.598397, 40.974503 ], [ 116.5676, 40.992574 ], [ 116.519557, 40.98128 ], [ 116.519557, 40.98128 ], [ 116.455499, 40.980828 ], [ 116.447492, 40.953715 ], [ 116.477057, 40.899907 ], [ 116.398216, 40.90624 ], [ 116.370499, 40.94377 ], [ 116.339702, 40.929303 ], [ 116.334159, 40.90443 ], [ 116.438253, 40.81934 ], [ 116.46597, 40.774487 ], [ 116.453651, 40.765876 ], [ 116.316912, 40.772221 ], [ 116.311369, 40.754996 ], [ 116.273181, 40.762703 ], [ 116.247311, 40.791707 ], [ 116.22021, 40.744115 ], [ 116.204812, 40.740035 ], [ 116.171551, 40.695582 ], [ 116.162928, 40.662451 ], [ 116.133979, 40.666536 ], [ 116.09887, 40.630665 ], [ 116.005247, 40.583868 ], [ 115.982457, 40.578868 ], [ 115.971986, 40.6025 ], [ 115.907929, 40.617493 ], [ 115.885139, 40.595229 ], [ 115.827857, 40.587504 ], [ 115.819849, 40.55932 ], [ 115.784741, 40.55841 ], [ 115.755176, 40.540221 ], [ 115.736082, 40.503372 ], [ 115.781045, 40.49336 ], [ 115.771806, 40.443734 ], [ 115.864197, 40.359422 ], [ 115.917784, 40.354405 ], [ 115.95166, 40.281852 ], [ 115.968907, 40.264045 ], [ 115.89869, 40.234354 ], [ 115.870356, 40.185909 ], [ 115.855574, 40.188652 ], [ 115.847567, 40.147036 ], [ 115.806299, 40.15344 ], [ 115.773654, 40.176307 ], [ 115.75456, 40.145663 ], [ 115.75456, 40.145663 ], [ 115.599959, 40.119583 ], [ 115.59072, 40.096239 ], [ 115.527278, 40.076092 ], [ 115.485394, 40.040364 ], [ 115.454597, 40.029825 ], [ 115.450286, 39.992697 ], [ 115.428728, 39.984443 ], [ 115.426264, 39.950502 ], [ 115.481083, 39.935819 ], [ 115.522967, 39.899099 ], [ 115.515575, 39.892212 ], [ 115.515575, 39.892212 ], [ 115.526046, 39.87568 ], [ 115.514344, 39.837549 ], [ 115.567314, 39.816407 ], [ 115.552532, 39.794799 ], [ 115.50572, 39.784222 ], [ 115.483547, 39.798477 ], [ 115.483547, 39.798477 ], [ 115.443511, 39.785601 ], [ 115.439815, 39.752022 ], [ 115.486626, 39.741899 ], [ 115.491554, 39.670074 ], [ 115.478619, 39.650723 ], [ 115.478619, 39.650723 ], [ 115.522351, 39.640124 ], [ 115.518039, 39.597252 ], [ 115.545756, 39.618922 ], [ 115.587024, 39.589873 ], [ 115.633836, 39.599557 ], [ 115.633836, 39.599557 ], [ 115.667712, 39.615234 ], [ 115.698509, 39.577881 ], [ 115.698509, 39.577881 ], [ 115.699125, 39.570039 ], [ 115.699125, 39.570039 ], [ 115.716988, 39.56035 ], [ 115.716988, 39.56035 ], [ 115.718835, 39.553891 ], [ 115.718835, 39.553891 ], [ 115.720683, 39.551122 ], [ 115.720683, 39.551122 ], [ 115.722531, 39.5442 ], [ 115.721299, 39.543738 ], [ 115.722531, 39.5442 ], [ 115.722531, 39.543738 ], [ 115.721299, 39.543738 ], [ 115.722531, 39.543738 ], [ 115.724995, 39.5442 ], [ 115.724995, 39.5442 ], [ 115.738545, 39.540046 ], [ 115.738545, 39.539585 ], [ 115.738545, 39.540046 ], [ 115.738545, 39.539585 ], [ 115.752712, 39.515581 ], [ 115.806299, 39.510041 ], [ 115.806299, 39.510041 ], [ 115.821081, 39.522968 ], [ 115.821081, 39.522968 ], [ 115.828473, 39.541431 ], [ 115.867893, 39.546507 ], [ 115.867893, 39.546507 ], [ 115.91532, 39.582955 ], [ 115.91532, 39.582955 ], [ 115.910393, 39.600479 ], [ 115.910393, 39.600479 ], [ 115.957204, 39.560812 ], [ 115.978146, 39.595868 ], [ 115.995392, 39.576958 ], [ 116.026189, 39.587567 ], [ 116.036044, 39.571884 ], [ 116.09887, 39.575113 ], [ 116.130283, 39.567732 ], [ 116.151841, 39.583416 ], [ 116.198652, 39.589412 ], [ 116.240536, 39.564041 ], [ 116.257782, 39.500344 ], [ 116.307057, 39.488337 ], [ 116.337854, 39.455536 ], [ 116.361876, 39.455074 ], [ 116.361876, 39.455074 ], [ 116.434557, 39.442597 ], [ 116.454883, 39.453226 ], [ 116.444412, 39.482332 ], [ 116.411767, 39.482794 ], [ 116.401912, 39.528046 ], [ 116.443796, 39.510041 ], [ 116.437637, 39.526661 ], [ 116.478289, 39.535431 ], [ 116.473361, 39.552968 ], [ 116.50847, 39.551122 ], [ 116.524484, 39.596329 ], [ 116.592237, 39.621227 ], [ 116.592237, 39.621227 ], [ 116.620571, 39.601863 ], [ 116.664918, 39.605552 ], [ 116.723432, 39.59264 ], [ 116.724048, 39.59264 ], [ 116.723432, 39.59264 ], [ 116.724048, 39.59264 ], [ 116.726512, 39.595407 ], [ 116.726512, 39.595407 ], [ 116.709266, 39.618 ], [ 116.748686, 39.619844 ], [ 116.79057, 39.595868 ], [ 116.812128, 39.615695 ], [ 116.808432, 39.576497 ], [ 116.78749, 39.554352 ], [ 116.819519, 39.528507 ], [ 116.820751, 39.482332 ], [ 116.785026, 39.465702 ], [ 116.832454, 39.435664 ], [ 116.876185, 39.43474 ], [ 116.839845, 39.413474 ], [ 116.840461, 39.378326 ], [ 116.818287, 39.3737 ], [ 116.829374, 39.338994 ], [ 116.870642, 39.357506 ], [ 116.889736, 39.338068 ], [ 116.87249, 39.291304 ], [ 116.881729, 39.225966 ], [ 116.881729, 39.225966 ], [ 116.855859, 39.215766 ], [ 116.870026, 39.153607 ], [ 116.909446, 39.150822 ], [ 116.912526, 39.110898 ], [ 116.91191, 39.111362 ], [ 116.91191, 39.111362 ], [ 116.912526, 39.110898 ], [ 116.871874, 39.054688 ], [ 116.812744, 39.05097 ], [ 116.812744, 39.05097 ], [ 116.783179, 39.05097 ], [ 116.783179, 39.05097 ], [ 116.754229, 39.034701 ], [ 116.754229, 39.034701 ], [ 116.754845, 39.003084 ], [ 116.72836, 38.975174 ], [ 116.708034, 38.931892 ], [ 116.722201, 38.896968 ], [ 116.723432, 38.852706 ], [ 116.75115, 38.831264 ], [ 116.737599, 38.784629 ], [ 116.746222, 38.754299 ], [ 116.794265, 38.744498 ], [ 116.794265, 38.744498 ], [ 116.858939, 38.741231 ], [ 116.877417, 38.680522 ], [ 116.948866, 38.689398 ], [ 116.950714, 38.689398 ], [ 116.95133, 38.689398 ], [ 116.950714, 38.689398 ], [ 116.948866, 38.689398 ], [ 116.95133, 38.689398 ], [ 117.038793, 38.688464 ], [ 117.068358, 38.680522 ], [ 117.055424, 38.639398 ], [ 117.070822, 38.608072 ], [ 117.109626, 38.584685 ], [ 117.150894, 38.617892 ], [ 117.183539, 38.61836 ], [ 117.183539, 38.61836 ], [ 117.213104, 38.639866 ], [ 117.213104, 38.639866 ], [ 117.258684, 38.608072 ], [ 117.258684, 38.608072 ], [ 117.238358, 38.580943 ], [ 117.25314, 38.556143 ], [ 117.368937, 38.564566 ], [ 117.432379, 38.601524 ], [ 117.47919, 38.616489 ], [ 117.55803, 38.613683 ], [ 117.639334, 38.626776 ], [ 117.638102, 38.54491 ], [ 117.68553, 38.539293 ], [ 117.644878, 38.52759 ], [ 117.678754, 38.477008 ], [ 117.72495, 38.457328 ], [ 117.730493, 38.424985 ], [ 117.781, 38.373862 ], [ 117.84629, 38.368232 ], [ 117.937449, 38.387936 ], [ 117.957775, 38.376208 ], [ 117.948536, 38.346644 ], [ 117.895565, 38.301572 ], [ 117.848754, 38.255062 ], [ 117.808718, 38.22827 ], [ 117.789007, 38.180772 ], [ 117.766834, 38.158658 ], [ 117.771145, 38.134655 ], [ 117.746508, 38.12524 ], [ 117.704624, 38.076262 ], [ 117.586979, 38.071551 ], [ 117.557414, 38.046105 ], [ 117.557414, 38.046105 ], [ 117.524154, 37.989527 ], [ 117.513067, 37.94329 ], [ 117.481038, 37.914967 ], [ 117.438538, 37.854035 ], [ 117.400966, 37.844584 ], [ 117.320278, 37.861596 ], [ 117.271618, 37.839858 ], [ 117.185387, 37.849783 ], [ 117.150278, 37.839385 ], [ 117.074518, 37.848837 ], [ 117.027091, 37.832296 ], [ 116.919301, 37.846002 ], [ 116.837997, 37.835132 ], [ 116.804736, 37.848837 ], [ 116.753613, 37.793054 ], [ 116.753613, 37.77035 ], [ 116.724664, 37.744327 ], [ 116.679085, 37.728708 ], [ 116.66307, 37.686096 ], [ 116.604556, 37.624975 ], [ 116.575607, 37.610754 ], [ 116.4826, 37.521573 ], [ 116.448108, 37.503059 ], [ 116.433941, 37.473142 ], [ 116.38097, 37.522522 ], [ 116.379738, 37.522047 ], [ 116.38097, 37.522522 ], [ 116.379738, 37.522047 ], [ 116.36742, 37.566177 ], [ 116.336007, 37.581355 ], [ 116.295355, 37.554316 ], [ 116.278724, 37.524895 ], [ 116.290427, 37.484065 ], [ 116.27626, 37.466967 ], [ 116.240536, 37.489764 ], [ 116.240536, 37.489764 ], [ 116.224522, 37.479791 ], [ 116.243, 37.447965 ], [ 116.226369, 37.428007 ], [ 116.2855, 37.404241 ], [ 116.236224, 37.361442 ], [ 116.193109, 37.365723 ], [ 116.169087, 37.384271 ], [ 116.106261, 37.368577 ], [ 116.085935, 37.373809 ], [ 116.024341, 37.360015 ], [ 115.975682, 37.337179 ], [ 115.969523, 37.239572 ], [ 115.909777, 37.20669 ], [ 115.91224, 37.177132 ], [ 115.879596, 37.150901 ], [ 115.888219, 37.112254 ], [ 115.85619, 37.060694 ], [ 115.776734, 36.992848 ], [ 115.79706, 36.968945 ], [ 115.75764, 36.902453 ], [ 115.71206, 36.883308 ], [ 115.688654, 36.838777 ], [ 115.686807, 36.810034 ], [ 115.524815, 36.763543 ], [ 115.479851, 36.760187 ], [ 115.451518, 36.702151 ], [ 115.420105, 36.686795 ], [ 115.365902, 36.621979 ], [ 115.355431, 36.627262 ], [ 115.33141, 36.550378 ], [ 115.272895, 36.497476 ], [ 115.291374, 36.460423 ], [ 115.317243, 36.454166 ], [ 115.297533, 36.413239 ], [ 115.340033, 36.398307 ], [ 115.368982, 36.342409 ], [ 115.366518, 36.30914 ], [ 115.423185, 36.32216 ], [ 115.417025, 36.292742 ], [ 115.462605, 36.276339 ], [ 115.466916, 36.258969 ], [ 115.466916, 36.258969 ], [ 115.474923, 36.248352 ], [ 115.483547, 36.148865 ], [ 115.465068, 36.170125 ], [ 115.450902, 36.152248 ], [ 115.376989, 36.128083 ], [ 115.365902, 36.099074 ], [ 115.312931, 36.088436 ], [ 115.30246, 36.127599 ], [ 115.279055, 36.13775 ], [ 115.242098, 36.19138 ], [ 115.202678, 36.208765 ], [ 115.202678, 36.208765 ], [ 115.202678, 36.209248 ], [ 115.202678, 36.209248 ], [ 115.201446, 36.210214 ], [ 115.201446, 36.210214 ], [ 115.1842, 36.193312 ], [ 115.12507, 36.209731 ], [ 115.104744, 36.172058 ], [ 115.06286, 36.178338 ], [ 115.048693, 36.161912 ], [ 115.04623, 36.112613 ], [ 114.998186, 36.069572 ], [ 114.914419, 36.052155 ], [ 114.926737, 36.089403 ], [ 114.912571, 36.140649 ], [ 114.858368, 36.144516 ], [ 114.857752, 36.127599 ], [ 114.771521, 36.124699 ], [ 114.734564, 36.15563 ], [ 114.720398, 36.140166 ], [ 114.640326, 36.137266 ], [ 114.588587, 36.118414 ], [ 114.586739, 36.141133 ], [ 114.533152, 36.171575 ], [ 114.480181, 36.177855 ], [ 114.466015, 36.197658 ], [ 114.417356, 36.205868 ], [ 114.408117, 36.224699 ], [ 114.356378, 36.230492 ], [ 114.345291, 36.255591 ], [ 114.299095, 36.245938 ], [ 114.257827, 36.263794 ], [ 114.241197, 36.251247 ], [ 114.2104, 36.272962 ], [ 114.203009, 36.245456 ], [ 114.170364, 36.245938 ], [ 114.170364, 36.245938 ], [ 114.175907, 36.264759 ], [ 114.129096, 36.280199 ], [ 114.080437, 36.269585 ], [ 114.04348, 36.303353 ], [ 114.056415, 36.329392 ], [ 114.002828, 36.334214 ], [ 113.981887, 36.31782 ], [ 113.962792, 36.353977 ], [ 113.911054, 36.314927 ], [ 113.882104, 36.353977 ], [ 113.84946, 36.347711 ], [ 113.856851, 36.329392 ], [ 113.813119, 36.332285 ], [ 113.755221, 36.366026 ], [ 113.731199, 36.363135 ], [ 113.708409, 36.423352 ], [ 113.670221, 36.425278 ], [ 113.635729, 36.451277 ], [ 113.587069, 36.460904 ], [ 113.554425, 36.494589 ], [ 113.559968, 36.528741 ], [ 113.588917, 36.547974 ], [ 113.569823, 36.585947 ], [ 113.539642, 36.594116 ], [ 113.54457, 36.62342 ], [ 113.486671, 36.635427 ], [ 113.476816, 36.655114 ], [ 113.506997, 36.705029 ], [ 113.465113, 36.707908 ], [ 113.499606, 36.740527 ], [ 113.535946, 36.732373 ], [ 113.549497, 36.752515 ], [ 113.600004, 36.752995 ], [ 113.680692, 36.789907 ], [ 113.676381, 36.855539 ], [ 113.696707, 36.882351 ], [ 113.731815, 36.878521 ], [ 113.731815, 36.858891 ], [ 113.773083, 36.85506 ], [ 113.792793, 36.894796 ], [ 113.76138, 36.956034 ], [ 113.791561, 36.98759 ], [ 113.771851, 37.016745 ], [ 113.788482, 37.059739 ], [ 113.758301, 37.075497 ], [ 113.773699, 37.107004 ], [ 113.773083, 37.151855 ], [ 113.832213, 37.167594 ], [ 113.853155, 37.215269 ], [ 113.886416, 37.239095 ], [ 113.90243, 37.310052 ], [ 113.962792, 37.355734 ], [ 113.973879, 37.40329 ], [ 114.014531, 37.42468 ], [ 114.036705, 37.494037 ], [ 114.118625, 37.59084 ], [ 114.115545, 37.619761 ], [ 114.139567, 37.675676 ], [ 114.12848, 37.698409 ], [ 114.068118, 37.721608 ], [ 113.993589, 37.706932 ], [ 113.996669, 37.730128 ], [ 114.044712, 37.761834 ], [ 114.006524, 37.813386 ], [ 113.976959, 37.816696 ], [ 113.959097, 37.906468 ], [ 113.936307, 37.922993 ], [ 113.901198, 37.984811 ], [ 113.872249, 37.990471 ], [ 113.876561, 38.055059 ], [ 113.811271, 38.117707 ], [ 113.831597, 38.16854 ], [ 113.797105, 38.162894 ], [ 113.720728, 38.174656 ], [ 113.711489, 38.213695 ], [ 113.678844, 38.20523 ], [ 113.64312, 38.232031 ], [ 113.598772, 38.22733 ], [ 113.570439, 38.237202 ], [ 113.54457, 38.270569 ], [ 113.557504, 38.343359 ], [ 113.525475, 38.383245 ], [ 113.537794, 38.417952 ], [ 113.583374, 38.459671 ], [ 113.5612, 38.485909 ], [ 113.561816, 38.558483 ], [ 113.603084, 38.587024 ], [ 113.612939, 38.645942 ], [ 113.70225, 38.651551 ], [ 113.720728, 38.713218 ], [ 113.775547, 38.709949 ], [ 113.802648, 38.763166 ], [ 113.839605, 38.7585 ], [ 113.836525, 38.795824 ], [ 113.855619, 38.828933 ], [ 113.795257, 38.860628 ], [ 113.776163, 38.885788 ], [ 113.76754, 38.959819 ], [ 113.776779, 38.986804 ], [ 113.80696, 38.989595 ], [ 113.898119, 39.067699 ], [ 113.930148, 39.063517 ], [ 113.961561, 39.100681 ], [ 113.994821, 39.095572 ], [ 114.006524, 39.122971 ], [ 114.050872, 39.135969 ], [ 114.064422, 39.094179 ], [ 114.082901, 39.09325 ], [ 114.082901, 39.09325 ], [ 114.10877, 39.052364 ], [ 114.157429, 39.061194 ], [ 114.180835, 39.049111 ], [ 114.252284, 39.073739 ], [ 114.345907, 39.075133 ], [ 114.369928, 39.107648 ], [ 114.360689, 39.134112 ], [ 114.388406, 39.176807 ], [ 114.443841, 39.174023 ], [ 114.47587, 39.21623 ], [ 114.416124, 39.242654 ], [ 114.437066, 39.259337 ], [ 114.430906, 39.307513 ], [ 114.466631, 39.329736 ], [ 114.469095, 39.400989 ], [ 114.496812, 39.438437 ], [ 114.501739, 39.476789 ], [ 114.532536, 39.486027 ], [ 114.568877, 39.573729 ], [ 114.51529, 39.564964 ], [ 114.49558, 39.608318 ], [ 114.431522, 39.613851 ], [ 114.408117, 39.652106 ], [ 114.409964, 39.761683 ], [ 114.41674, 39.775943 ], [ 114.390254, 39.819165 ], [ 114.406885, 39.833413 ], [ 114.395182, 39.867412 ], [ 114.285545, 39.858225 ], [ 114.286776, 39.871087 ], [ 114.215943, 39.8619 ], [ 114.204241, 39.885324 ], [ 114.229494, 39.899558 ], [ 114.212248, 39.918839 ], [ 114.17406, 39.897722 ], [ 114.067502, 39.922511 ], [ 114.047176, 39.916085 ], [ 114.028082, 39.959218 ], [ 114.029314, 39.985819 ], [ 113.910438, 40.015618 ], [ 113.959097, 40.033491 ], [ 113.989278, 40.11226 ], [ 114.018227, 40.103563 ], [ 114.045944, 40.056856 ], [ 114.086596, 40.071513 ], [ 114.101995, 40.099901 ], [ 114.073046, 40.168533 ], [ 114.073046, 40.168533 ], [ 114.097683, 40.193681 ], [ 114.135871, 40.175392 ], [ 114.180219, 40.191395 ], [ 114.235654, 40.198252 ], [ 114.255364, 40.236182 ], [ 114.292936, 40.230242 ], [ 114.362537, 40.249886 ], [ 114.406269, 40.246232 ], [ 114.46971, 40.268155 ], [ 114.510978, 40.302851 ], [ 114.530688, 40.345283 ], [ 114.481413, 40.34802 ], [ 114.438914, 40.371733 ], [ 114.390254, 40.351213 ], [ 114.381015, 40.36307 ], [ 114.31203, 40.372645 ], [ 114.286161, 40.425057 ], [ 114.299711, 40.44009 ], [ 114.267066, 40.474242 ], [ 114.282465, 40.494725 ], [ 114.293552, 40.55159 ], [ 114.273842, 40.552954 ], [ 114.283081, 40.590685 ], [ 114.236269, 40.607043 ], [ 114.183299, 40.67153 ], [ 114.162357, 40.71373 ], [ 114.134639, 40.737314 ], [ 114.103227, 40.770861 ], [ 114.104458, 40.797597 ], [ 114.080437, 40.790348 ], [ 114.044712, 40.830661 ], [ 114.073661, 40.857372 ], [ 114.055183, 40.867782 ], [ 114.041633, 40.917546 ], [ 114.057647, 40.925234 ], [ 113.994821, 40.938798 ], [ 113.973263, 40.983087 ], [ 113.868554, 41.06887 ], [ 113.819279, 41.09774 ], [ 113.877793, 41.115777 ], [ 113.920293, 41.172112 ], [ 113.960945, 41.171211 ], [ 113.996669, 41.19238 ], [ 114.016379, 41.231999 ], [ 113.992357, 41.269794 ], [ 113.971416, 41.239649 ], [ 113.95109, 41.282837 ], [ 113.914749, 41.294529 ], [ 113.899351, 41.316108 ], [ 113.92522, 41.325546 ], [ 113.94493, 41.392477 ], [ 113.871017, 41.413126 ], [ 113.877793, 41.431076 ], [ 113.919677, 41.454404 ], [ 113.933227, 41.487139 ], [ 113.953553, 41.483553 ], [ 113.976959, 41.505966 ], [ 114.032394, 41.529715 ], [ 114.101379, 41.537779 ], [ 114.230726, 41.513584 ], [ 114.221487, 41.582111 ], [ 114.226414, 41.616572 ], [ 114.259059, 41.623282 ], [ 114.215328, 41.68499 ], [ 114.237501, 41.698843 ], [ 114.206704, 41.7386 ], [ 114.215328, 41.75646 ], [ 114.200545, 41.789934 ], [ 114.282465, 41.863517 ], [ 114.343443, 41.926774 ], [ 114.352066, 41.953484 ], [ 114.419203, 41.942356 ], [ 114.478334, 41.951704 ], [ 114.511594, 41.981962 ], [ 114.467863, 42.025989 ], [ 114.480181, 42.064654 ], [ 114.502355, 42.06732 ], [ 114.510978, 42.110844 ], [ 114.560254, 42.132595 ], [ 114.647717, 42.109512 ], [ 114.675434, 42.12061 ], [ 114.75489, 42.115727 ], [ 114.789383, 42.130819 ], [ 114.79431, 42.149457 ], [ 114.825723, 42.139695 ], [ 114.86268, 42.097967 ], [ 114.860832, 42.054879 ], [ 114.9021, 42.015763 ], [ 114.915035, 41.960605 ], [ 114.923658, 41.871093 ], [ 114.939056, 41.846132 ], [ 114.922426, 41.825175 ], [ 114.868839, 41.813579 ], [ 114.89594, 41.76762 ], [ 114.902716, 41.695715 ], [ 114.895325, 41.636255 ], [ 114.860832, 41.60091 ], [ 115.016049, 41.615229 ], [ 115.056085, 41.602253 ], [ 115.0992, 41.62373 ], [ 115.195287, 41.602253 ], [ 115.20391, 41.571367 ], [ 115.256881, 41.580768 ], [ 115.26612, 41.616124 ], [ 115.290142, 41.622835 ], [ 115.310468, 41.592854 ], [ 115.377605, 41.603148 ], [ 115.345576, 41.635807 ], [ 115.360975, 41.661297 ], [ 115.319091, 41.691693 ], [ 115.346808, 41.712247 ], [ 115.42996, 41.728775 ], [ 115.488474, 41.760924 ], [ 115.519887, 41.76762 ], [ 115.57409, 41.80555 ], [ 115.654162, 41.829189 ], [ 115.688038, 41.867528 ], [ 115.726227, 41.870202 ], [ 115.811226, 41.912525 ], [ 115.834632, 41.93835 ], [ 115.85311, 41.927665 ], [ 115.916552, 41.945027 ], [ 115.954124, 41.874213 ], [ 115.994776, 41.828743 ], [ 116.007095, 41.797966 ], [ 116.007095, 41.79752 ], [ 116.007095, 41.797966 ], [ 116.007095, 41.79752 ], [ 116.034196, 41.782795 ], [ 116.09887, 41.776547 ], [ 116.129051, 41.805996 ], [ 116.106877, 41.831419 ], [ 116.122892, 41.861734 ], [ 116.194341, 41.861734 ], [ 116.212819, 41.885352 ], [ 116.223906, 41.932562 ], [ 116.298434, 41.96817 ], [ 116.310137, 41.997086 ], [ 116.373579, 42.009983 ], [ 116.414231, 41.982407 ], [ 116.393289, 41.942802 ], [ 116.453651, 41.945917 ], [ 116.4826, 41.975734 ], [ 116.510933, 41.974399 ], [ 116.553433, 41.928555 ], [ 116.597165, 41.935679 ], [ 116.639049, 41.929891 ], [ 116.66923, 41.947698 ], [ 116.727744, 41.951259 ], [ 116.748686, 41.984186 ], [ 116.796113, 41.977958 ], [ 116.879881, 42.018431 ], [ 116.890352, 42.092639 ], [ 116.850316, 42.156556 ], [ 116.825062, 42.155669 ], [ 116.789338, 42.200462 ], [ 116.903287, 42.190708 ], [ 116.918685, 42.229716 ], [ 116.897743, 42.297479 ], [ 116.886656, 42.366496 ], [ 116.910678, 42.394789 ], [ 116.910678, 42.394789 ], [ 116.910062, 42.395231 ], [ 116.910062, 42.395231 ], [ 116.921765, 42.403628 ], [ 116.921765, 42.403628 ], [ 116.936547, 42.410256 ], [ 116.936547, 42.410256 ], [ 116.944555, 42.415116 ], [ 116.944555, 42.415116 ], [ 116.97104, 42.427486 ], [ 116.97104, 42.427486 ], [ 116.974736, 42.426603 ], [ 116.974736, 42.426603 ], [ 116.99075, 42.425719 ], [ 116.99075, 42.425719 ], [ 117.005533, 42.43367 ], [ 117.005533, 42.43367 ], [ 117.009228, 42.44957 ], [ 117.009228, 42.44957 ], [ 117.01662, 42.456193 ], [ 117.01662, 42.456193 ], [ 117.080061, 42.463699 ], [ 117.080061, 42.463699 ], [ 117.09546, 42.484004 ], [ 117.135496, 42.468996 ], [ 117.188467, 42.468114 ], [ 117.188467, 42.468114 ], [ 117.275314, 42.481797 ], [ 117.275314, 42.481797 ], [ 117.332596, 42.46105 ], [ 117.332596, 42.46105 ], [ 117.390495, 42.461933 ], [ 117.413284, 42.471645 ], [ 117.410205, 42.519743 ], [ 117.387415, 42.517537 ], [ 117.387415, 42.517537 ], [ 117.434226, 42.557224 ], [ 117.435458, 42.585431 ], [ 117.475494, 42.602613 ], [ 117.530313, 42.590278 ], [ 117.537088, 42.603054 ], [ 117.60053, 42.603054 ], [ 117.667051, 42.582347 ], [ 117.708935, 42.588515 ], [ 117.779768, 42.61847 ], [ 117.801326, 42.612744 ], [ 117.797631, 42.585431 ], [ 117.856761, 42.539148 ], [ 117.874007, 42.510038 ], [ 117.997811, 42.416884 ], [ 118.024296, 42.385064 ], [ 118.008898, 42.346595 ], [ 118.060021, 42.298364 ], [ 118.047702, 42.280656 ], [ 117.974405, 42.25054 ], [ 117.977485, 42.229716 ], [ 118.033535, 42.199132 ], [ 118.106216, 42.172082 ], [ 118.089586, 42.12283 ], [ 118.097593, 42.105072 ], [ 118.155491, 42.081091 ], [ 118.116687, 42.037102 ], [ 118.194296, 42.031324 ], [ 118.220165, 42.058434 ], [ 118.212774, 42.081091 ], [ 118.239259, 42.092639 ], [ 118.27252, 42.083312 ], [ 118.296541, 42.057545 ], [ 118.286686, 42.033991 ], [ 118.239875, 42.024655 ], [ 118.291614, 42.007759 ], [ 118.313788, 41.98819 ], [ 118.306396, 41.940131 ], [ 118.268824, 41.930336 ], [ 118.340273, 41.87243 ], [ 118.335346, 41.845241 ], [ 118.29223, 41.772976 ], [ 118.247266, 41.773869 ], [ 118.236179, 41.80778 ], [ 118.178281, 41.814917 ], [ 118.140093, 41.784134 ], [ 118.132702, 41.733241 ], [ 118.155491, 41.712694 ], [ 118.159187, 41.67605 ], [ 118.206614, 41.650566 ], [ 118.215237, 41.59554 ], [ 118.302701, 41.55256 ], [ 118.315636, 41.512688 ], [ 118.271904, 41.471446 ], [ 118.327338, 41.450816 ], [ 118.348896, 41.428384 ], [ 118.361215, 41.384844 ], [ 118.348896, 41.342622 ], [ 118.380309, 41.312062 ], [ 118.412338, 41.331838 ], [ 118.528135, 41.355202 ], [ 118.629765, 41.346666 ], [ 118.677192, 41.35026 ], [ 118.741866, 41.324198 ], [ 118.770199, 41.352956 ], [ 118.843496, 41.374516 ], [ 118.844727, 41.342622 ], [ 118.890923, 41.300823 ], [ 118.949437, 41.317906 ], [ 118.980234, 41.305769 ], [ 119.092951, 41.293629 ], [ 119.168712, 41.294978 ], [ 119.197661, 41.282837 ], [ 119.211827, 41.308016 ], [ 119.239545, 41.31431 ], [ 119.2494, 41.279689 ], [ 119.209364, 41.244599 ], [ 119.204436, 41.222546 ], [ 119.169943, 41.222996 ], [ 119.189038, 41.198234 ], [ 119.126212, 41.138767 ], [ 119.081248, 41.131555 ], [ 119.080632, 41.095936 ], [ 119.037516, 41.067516 ], [ 118.964836, 41.079246 ], [ 118.937118, 41.052625 ], [ 118.951901, 41.018317 ], [ 119.013495, 41.007479 ], [ 119.00056, 40.967273 ], [ 118.977154, 40.959138 ], [ 118.977154, 40.959138 ], [ 118.916792, 40.969984 ], [ 118.90201, 40.960946 ], [ 118.873061, 40.847866 ], [ 118.845959, 40.822057 ], [ 118.878604, 40.783098 ], [ 118.907553, 40.775394 ], [ 118.895234, 40.75409 ], [ 118.950053, 40.747743 ], [ 118.96114, 40.72008 ], [ 119.011031, 40.687414 ], [ 119.028277, 40.692406 ], [ 119.054763, 40.664721 ], [ 119.115125, 40.666536 ], [ 119.165632, 40.69286 ], [ 119.184726, 40.680153 ], [ 119.14469, 40.632482 ], [ 119.162552, 40.600228 ], [ 119.177951, 40.609315 ], [ 119.230921, 40.603863 ], [ 119.22045, 40.569322 ], [ 119.256175, 40.543404 ], [ 119.30237, 40.530215 ], [ 119.429254, 40.540221 ], [ 119.477913, 40.533399 ], [ 119.503783, 40.553864 ], [ 119.559217, 40.547952 ], [ 119.572152, 40.523846 ], [ 119.553674, 40.502007 ], [ 119.604797, 40.455119 ], [ 119.586934, 40.375381 ], [ 119.598021, 40.334335 ], [ 119.651608, 40.271808 ], [ 119.639289, 40.231613 ], [ 119.639289, 40.231613 ], [ 119.671934, 40.23938 ], [ 119.716898, 40.195966 ], [ 119.745847, 40.207851 ], [ 119.760629, 40.136056 ], [ 119.736608, 40.104936 ], [ 119.772332, 40.08113 ], [ 119.783419, 40.046778 ], [ 119.783419, 40.046778 ], [ 119.787115, 40.041739 ], [ 119.787115, 40.041739 ], [ 119.81668, 40.050443 ], [ 119.81668, 40.050443 ], [ 119.854252, 40.033033 ], [ 119.845629, 40.000949 ], [ 119.845629, 40.000949 ], [ 119.854252, 39.98857 ], [ 119.872114, 39.960594 ], [ 119.842549, 39.956007 ], [ 119.820375, 39.979399 ], [ 119.787115, 39.950502 ], [ 119.726137, 39.940867 ], [ 119.681789, 39.922511 ], [ 119.642369, 39.925264 ], [ 119.620195, 39.904609 ], [ 119.588166, 39.910576 ], [ 119.540739, 39.888079 ], [ 119.520413, 39.840306 ], [ 119.536427, 39.809052 ], [ 119.474217, 39.813189 ], [ 119.366428, 39.734996 ], [ 119.269726, 39.498497 ], [ 119.316537, 39.437051 ], [ 119.317153, 39.4107 ], [ 119.272805, 39.363521 ], [ 119.185342, 39.342234 ], [ 119.121284, 39.281576 ], [ 119.096031, 39.24219 ], [ 119.038132, 39.211593 ], [ 119.023966, 39.187012 ], [ 118.97777, 39.163352 ], [ 118.926031, 39.123435 ], [ 118.890307, 39.118792 ], [ 118.896466, 39.139683 ], [ 118.951285, 39.178662 ], [ 118.920488, 39.171703 ], [ 118.897082, 39.151286 ], [ 118.857662, 39.162888 ], [ 118.814546, 39.138754 ], [ 118.76096, 39.133648 ], [ 118.637156, 39.157319 ], [ 118.578642, 39.130863 ], [ 118.588497, 39.107648 ], [ 118.533062, 39.090928 ], [ 118.570634, 38.999363 ], [ 118.604511, 38.971452 ], [ 118.539837, 38.910008 ], [ 118.491178, 38.909077 ], [ 118.377845, 38.971917 ], [ 118.366143, 39.016104 ], [ 118.319331, 39.009594 ], [ 118.225092, 39.034701 ], [ 118.1906, 39.080708 ], [ 118.162883, 39.136433 ], [ 118.12531, 39.182838 ], [ 118.065564, 39.218084 ], [ 118.056941, 39.219939 ], [ 118.037231, 39.220402 ], [ 118.064948, 39.231065 ], [ 118.064948, 39.256094 ], [ 118.036615, 39.264898 ], [ 118.024296, 39.289451 ], [ 118.024296, 39.289451 ], [ 117.982412, 39.298714 ], [ 117.982412, 39.298714 ], [ 117.979333, 39.300566 ], [ 117.979333, 39.300566 ], [ 117.973173, 39.312143 ], [ 117.973173, 39.312143 ], [ 117.965782, 39.314921 ], [ 117.965782, 39.314921 ], [ 117.919587, 39.318162 ], [ 117.919587, 39.318162 ], [ 117.88879, 39.332051 ], [ 117.854913, 39.328348 ], [ 117.854297, 39.328348 ], [ 117.854913, 39.328348 ], [ 117.854297, 39.328348 ], [ 117.850601, 39.363984 ], [ 117.850601, 39.363984 ], [ 117.810565, 39.354729 ], [ 117.805022, 39.373237 ], [ 117.852449, 39.380639 ], [ 117.846906, 39.407926 ], [ 117.871543, 39.411625 ], [ 117.870311, 39.455074 ], [ 117.899877, 39.474479 ], [ 117.912195, 39.517428 ], [ 117.912195, 39.517428 ], [ 117.904804, 39.533585 ], [ 117.933753, 39.574191 ], [ 117.868464, 39.59679 ], [ 117.829659, 39.589873 ], [ 117.766834, 39.598635 ], [ 117.753899, 39.579726 ], [ 117.753899, 39.579726 ], [ 117.745276, 39.547892 ], [ 117.715711, 39.529892 ], [ 117.707088, 39.576036 ], [ 117.684914, 39.58895 ], [ 117.654117, 39.575113 ], [ 117.637486, 39.603246 ], [ 117.66274, 39.636437 ], [ 117.668899, 39.666849 ], [ 117.627015, 39.703693 ], [ 117.57774, 39.726711 ], [ 117.595603, 39.74604 ], [ 117.56111, 39.754782 ], [ 117.546327, 39.775943 ], [ 117.561726, 39.799856 ], [ 117.529081, 39.859144 ], [ 117.529081, 39.859144 ], [ 117.508139, 39.901854 ], [ 117.508139, 39.901854 ], [ 117.512451, 39.90874 ], [ 117.512451, 39.90874 ], [ 117.513067, 39.910576 ], [ 117.513067, 39.910576 ], [ 117.514914, 39.946832 ], [ 117.534625, 39.954631 ], [ 117.546327, 39.999116 ], [ 117.594987, 39.994531 ], [ 117.594987, 39.994531 ], [ 117.614697, 39.97252 ], [ 117.671363, 39.973896 ], [ 117.691073, 39.984902 ], [ 117.756363, 39.965181 ], [ 117.781616, 39.966558 ], [ 117.781616, 39.966558 ], [ 117.795167, 39.996823 ], [ 117.795167, 39.996823 ], [ 117.793319, 40.005534 ], [ 117.793319, 40.005534 ], [ 117.768681, 40.022034 ], [ 117.768681, 40.022034 ], [ 117.744044, 40.018368 ], [ 117.74774, 40.047236 ], [ 117.776073, 40.059605 ], [ 117.752667, 40.081588 ], [ 117.71879, 40.082045 ], [ 117.71879, 40.082045 ], [ 117.675059, 40.082045 ], [ 117.655965, 40.109514 ], [ 117.655965, 40.109514 ], [ 117.654117, 40.114548 ], [ 117.654117, 40.114548 ], [ 117.651653, 40.122786 ], [ 117.651653, 40.122786 ], [ 117.613465, 40.158014 ], [ 117.613465, 40.158014 ], [ 117.609769, 40.160301 ], [ 117.609769, 40.160301 ], [ 117.576508, 40.178593 ], [ 117.571581, 40.219276 ], [ 117.548791, 40.232527 ], [ 117.505059, 40.227044 ], [ 117.450241, 40.252627 ], [ 117.415748, 40.248973 ], [ 117.389879, 40.227958 ], [ 117.351075, 40.229786 ], [ 117.331365, 40.289613 ], [ 117.295024, 40.2782 ], [ 117.271618, 40.325211 ], [ 117.271618, 40.325211 ], [ 117.243285, 40.369453 ], [ 117.226039, 40.368997 ], [ 117.234046, 40.417312 ], [ 117.263611, 40.442367 ], [ 117.208793, 40.501552 ], [ 117.262995, 40.512927 ], [ 117.247597, 40.539766 ], [ 117.269771, 40.560684 ], [ 117.348611, 40.581141 ], [ 117.348611, 40.581141 ], [ 117.389879, 40.561593 ], [ 117.429915, 40.576141 ], [ 117.412669, 40.605226 ], [ 117.467487, 40.649738 ] ] ], [ [ [ 117.210024, 40.082045 ], [ 117.192162, 40.066475 ], [ 117.198322, 39.992697 ], [ 117.150894, 39.944996 ], [ 117.162597, 39.876598 ], [ 117.162597, 39.876598 ], [ 117.227887, 39.852712 ], [ 117.247597, 39.860981 ], [ 117.251908, 39.834332 ], [ 117.192162, 39.832953 ], [ 117.156438, 39.817326 ], [ 117.15767, 39.796638 ], [ 117.205713, 39.763984 ], [ 117.161981, 39.748801 ], [ 117.165061, 39.718886 ], [ 117.165061, 39.718886 ], [ 117.177996, 39.645194 ], [ 117.152742, 39.623532 ], [ 117.10901, 39.625375 ], [ 117.10901, 39.625375 ], [ 117.016004, 39.653949 ], [ 116.983359, 39.638742 ], [ 116.983359, 39.638742 ], [ 116.964265, 39.64335 ], [ 116.948866, 39.680668 ], [ 116.948866, 39.680668 ], [ 116.944555, 39.695405 ], [ 116.944555, 39.695405 ], [ 116.932236, 39.706456 ], [ 116.932236, 39.706456 ], [ 116.90575, 39.688037 ], [ 116.889736, 39.687576 ], [ 116.887272, 39.72533 ], [ 116.916837, 39.731314 ], [ 116.902055, 39.763523 ], [ 116.949482, 39.778703 ], [ 116.918069, 39.84628 ], [ 116.907598, 39.832494 ], [ 116.865714, 39.843982 ], [ 116.812128, 39.889916 ], [ 116.78441, 39.891294 ], [ 116.782563, 39.947749 ], [ 116.757925, 39.967934 ], [ 116.781331, 40.034866 ], [ 116.820135, 40.02845 ], [ 116.831222, 40.051359 ], [ 116.867562, 40.041739 ], [ 116.927924, 40.055024 ], [ 116.945171, 40.04128 ], [ 117.025243, 40.030283 ], [ 117.051728, 40.059605 ], [ 117.105315, 40.074261 ], [ 117.105315, 40.074261 ], [ 117.140423, 40.064185 ], [ 117.159517, 40.077008 ], [ 117.204481, 40.069681 ], [ 117.210024, 40.082045 ] ] ], [ [ [ 117.784696, 39.376938 ], [ 117.74466, 39.354729 ], [ 117.670747, 39.35658 ], [ 117.669515, 39.322792 ], [ 117.594987, 39.349176 ], [ 117.536472, 39.338068 ], [ 117.521074, 39.357043 ], [ 117.570965, 39.404689 ], [ 117.601146, 39.419485 ], [ 117.614081, 39.407001 ], [ 117.668899, 39.412087 ], [ 117.673211, 39.386652 ], [ 117.699696, 39.407463 ], [ 117.765602, 39.400527 ], [ 117.784696, 39.376938 ] ] ], [ [ [ 118.869365, 39.142932 ], [ 118.857662, 39.098824 ], [ 118.82009, 39.108576 ], [ 118.869365, 39.142932 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "140000", "name": "山西省", "center": [ 112.549248, 37.857014 ], "centroid": [ 112.304761, 37.618555 ], "childrenNum": 11, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 3, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 114.134639, 40.737314 ], [ 114.162357, 40.71373 ], [ 114.183299, 40.67153 ], [ 114.236269, 40.607043 ], [ 114.283081, 40.590685 ], [ 114.273842, 40.552954 ], [ 114.293552, 40.55159 ], [ 114.282465, 40.494725 ], [ 114.267066, 40.474242 ], [ 114.299711, 40.44009 ], [ 114.286161, 40.425057 ], [ 114.31203, 40.372645 ], [ 114.381015, 40.36307 ], [ 114.390254, 40.351213 ], [ 114.438914, 40.371733 ], [ 114.481413, 40.34802 ], [ 114.530688, 40.345283 ], [ 114.510978, 40.302851 ], [ 114.46971, 40.268155 ], [ 114.406269, 40.246232 ], [ 114.362537, 40.249886 ], [ 114.292936, 40.230242 ], [ 114.255364, 40.236182 ], [ 114.235654, 40.198252 ], [ 114.180219, 40.191395 ], [ 114.135871, 40.175392 ], [ 114.097683, 40.193681 ], [ 114.073046, 40.168533 ], [ 114.073046, 40.168533 ], [ 114.101995, 40.099901 ], [ 114.086596, 40.071513 ], [ 114.045944, 40.056856 ], [ 114.018227, 40.103563 ], [ 113.989278, 40.11226 ], [ 113.959097, 40.033491 ], [ 113.910438, 40.015618 ], [ 114.029314, 39.985819 ], [ 114.028082, 39.959218 ], [ 114.047176, 39.916085 ], [ 114.067502, 39.922511 ], [ 114.17406, 39.897722 ], [ 114.212248, 39.918839 ], [ 114.229494, 39.899558 ], [ 114.204241, 39.885324 ], [ 114.215943, 39.8619 ], [ 114.286776, 39.871087 ], [ 114.285545, 39.858225 ], [ 114.395182, 39.867412 ], [ 114.406885, 39.833413 ], [ 114.390254, 39.819165 ], [ 114.41674, 39.775943 ], [ 114.409964, 39.761683 ], [ 114.408117, 39.652106 ], [ 114.431522, 39.613851 ], [ 114.49558, 39.608318 ], [ 114.51529, 39.564964 ], [ 114.568877, 39.573729 ], [ 114.532536, 39.486027 ], [ 114.501739, 39.476789 ], [ 114.496812, 39.438437 ], [ 114.469095, 39.400989 ], [ 114.466631, 39.329736 ], [ 114.430906, 39.307513 ], [ 114.437066, 39.259337 ], [ 114.416124, 39.242654 ], [ 114.47587, 39.21623 ], [ 114.443841, 39.174023 ], [ 114.388406, 39.176807 ], [ 114.360689, 39.134112 ], [ 114.369928, 39.107648 ], [ 114.345907, 39.075133 ], [ 114.252284, 39.073739 ], [ 114.180835, 39.049111 ], [ 114.157429, 39.061194 ], [ 114.10877, 39.052364 ], [ 114.082901, 39.09325 ], [ 114.082901, 39.09325 ], [ 114.064422, 39.094179 ], [ 114.050872, 39.135969 ], [ 114.006524, 39.122971 ], [ 113.994821, 39.095572 ], [ 113.961561, 39.100681 ], [ 113.930148, 39.063517 ], [ 113.898119, 39.067699 ], [ 113.80696, 38.989595 ], [ 113.776779, 38.986804 ], [ 113.76754, 38.959819 ], [ 113.776163, 38.885788 ], [ 113.795257, 38.860628 ], [ 113.855619, 38.828933 ], [ 113.836525, 38.795824 ], [ 113.839605, 38.7585 ], [ 113.802648, 38.763166 ], [ 113.775547, 38.709949 ], [ 113.720728, 38.713218 ], [ 113.70225, 38.651551 ], [ 113.612939, 38.645942 ], [ 113.603084, 38.587024 ], [ 113.561816, 38.558483 ], [ 113.5612, 38.485909 ], [ 113.583374, 38.459671 ], [ 113.537794, 38.417952 ], [ 113.525475, 38.383245 ], [ 113.557504, 38.343359 ], [ 113.54457, 38.270569 ], [ 113.570439, 38.237202 ], [ 113.598772, 38.22733 ], [ 113.64312, 38.232031 ], [ 113.678844, 38.20523 ], [ 113.711489, 38.213695 ], [ 113.720728, 38.174656 ], [ 113.797105, 38.162894 ], [ 113.831597, 38.16854 ], [ 113.811271, 38.117707 ], [ 113.876561, 38.055059 ], [ 113.872249, 37.990471 ], [ 113.901198, 37.984811 ], [ 113.936307, 37.922993 ], [ 113.959097, 37.906468 ], [ 113.976959, 37.816696 ], [ 114.006524, 37.813386 ], [ 114.044712, 37.761834 ], [ 113.996669, 37.730128 ], [ 113.993589, 37.706932 ], [ 114.068118, 37.721608 ], [ 114.12848, 37.698409 ], [ 114.139567, 37.675676 ], [ 114.115545, 37.619761 ], [ 114.118625, 37.59084 ], [ 114.036705, 37.494037 ], [ 114.014531, 37.42468 ], [ 113.973879, 37.40329 ], [ 113.962792, 37.355734 ], [ 113.90243, 37.310052 ], [ 113.886416, 37.239095 ], [ 113.853155, 37.215269 ], [ 113.832213, 37.167594 ], [ 113.773083, 37.151855 ], [ 113.773699, 37.107004 ], [ 113.758301, 37.075497 ], [ 113.788482, 37.059739 ], [ 113.771851, 37.016745 ], [ 113.791561, 36.98759 ], [ 113.76138, 36.956034 ], [ 113.792793, 36.894796 ], [ 113.773083, 36.85506 ], [ 113.731815, 36.858891 ], [ 113.731815, 36.878521 ], [ 113.696707, 36.882351 ], [ 113.676381, 36.855539 ], [ 113.680692, 36.789907 ], [ 113.600004, 36.752995 ], [ 113.549497, 36.752515 ], [ 113.535946, 36.732373 ], [ 113.499606, 36.740527 ], [ 113.465113, 36.707908 ], [ 113.506997, 36.705029 ], [ 113.476816, 36.655114 ], [ 113.486671, 36.635427 ], [ 113.54457, 36.62342 ], [ 113.539642, 36.594116 ], [ 113.569823, 36.585947 ], [ 113.588917, 36.547974 ], [ 113.559968, 36.528741 ], [ 113.554425, 36.494589 ], [ 113.587069, 36.460904 ], [ 113.635729, 36.451277 ], [ 113.670221, 36.425278 ], [ 113.708409, 36.423352 ], [ 113.731199, 36.363135 ], [ 113.736127, 36.324571 ], [ 113.712105, 36.303353 ], [ 113.716417, 36.262347 ], [ 113.681924, 36.216491 ], [ 113.697939, 36.181719 ], [ 113.651127, 36.174473 ], [ 113.705946, 36.148865 ], [ 113.712721, 36.129533 ], [ 113.655439, 36.125182 ], [ 113.671453, 36.115514 ], [ 113.68562, 36.056026 ], [ 113.660366, 36.034735 ], [ 113.694859, 36.026991 ], [ 113.678844, 35.985841 ], [ 113.648663, 35.994073 ], [ 113.654207, 35.931586 ], [ 113.637576, 35.870019 ], [ 113.660982, 35.837035 ], [ 113.582758, 35.818111 ], [ 113.604932, 35.797727 ], [ 113.587685, 35.736542 ], [ 113.592613, 35.691838 ], [ 113.622794, 35.674825 ], [ 113.625258, 35.632518 ], [ 113.578446, 35.633491 ], [ 113.547649, 35.656835 ], [ 113.55812, 35.621816 ], [ 113.513773, 35.57364 ], [ 113.49899, 35.532254 ], [ 113.439244, 35.507412 ], [ 113.391817, 35.506925 ], [ 113.348085, 35.468429 ], [ 113.31236, 35.481101 ], [ 113.304353, 35.426989 ], [ 113.243375, 35.449418 ], [ 113.189789, 35.44893 ], [ 113.188557, 35.412357 ], [ 113.165151, 35.412845 ], [ 113.149137, 35.350878 ], [ 113.126347, 35.332327 ], [ 113.067217, 35.353806 ], [ 112.996384, 35.362104 ], [ 112.985913, 35.33965 ], [ 112.992072, 35.29619 ], [ 112.936022, 35.284466 ], [ 112.934174, 35.262968 ], [ 112.884283, 35.243909 ], [ 112.822073, 35.258082 ], [ 112.772798, 35.207732 ], [ 112.720443, 35.206265 ], [ 112.628052, 35.263457 ], [ 112.637291, 35.225822 ], [ 112.513487, 35.218489 ], [ 112.390915, 35.239021 ], [ 112.36751, 35.219956 ], [ 112.288053, 35.219956 ], [ 112.304684, 35.251728 ], [ 112.242474, 35.234622 ], [ 112.21722, 35.253195 ], [ 112.094033, 35.279092 ], [ 112.058924, 35.280069 ], [ 112.078634, 35.219467 ], [ 112.03983, 35.194039 ], [ 112.066315, 35.153437 ], [ 112.05646, 35.098615 ], [ 112.062004, 35.056005 ], [ 112.039214, 35.045717 ], [ 112.018888, 35.068742 ], [ 111.97762, 35.067272 ], [ 111.933272, 35.083435 ], [ 111.810084, 35.062374 ], [ 111.807005, 35.032977 ], [ 111.739251, 35.00406 ], [ 111.664107, 34.984449 ], [ 111.681969, 34.9511 ], [ 111.646861, 34.938836 ], [ 111.617911, 34.894671 ], [ 111.592042, 34.881416 ], [ 111.570484, 34.843114 ], [ 111.543999, 34.853428 ], [ 111.502731, 34.829851 ], [ 111.439289, 34.838202 ], [ 111.389398, 34.815113 ], [ 111.345666, 34.831816 ], [ 111.29208, 34.806759 ], [ 111.255123, 34.819535 ], [ 111.232949, 34.789559 ], [ 111.148566, 34.807742 ], [ 111.118385, 34.756623 ], [ 111.035233, 34.740887 ], [ 110.976103, 34.706456 ], [ 110.929907, 34.731543 ], [ 110.89911, 34.661673 ], [ 110.870777, 34.636072 ], [ 110.812263, 34.624746 ], [ 110.780234, 34.648874 ], [ 110.749437, 34.65232 ], [ 110.710017, 34.605045 ], [ 110.610851, 34.607508 ], [ 110.533242, 34.583368 ], [ 110.488279, 34.610956 ], [ 110.424837, 34.588295 ], [ 110.379257, 34.600612 ], [ 110.29549, 34.610956 ], [ 110.23636, 34.670533 ], [ 110.231432, 34.701044 ], [ 110.259149, 34.737937 ], [ 110.232664, 34.80332 ], [ 110.233896, 34.83722 ], [ 110.259149, 34.884853 ], [ 110.257301, 34.934912 ], [ 110.272084, 34.942761 ], [ 110.325671, 35.014844 ], [ 110.369402, 35.158329 ], [ 110.374946, 35.251728 ], [ 110.45009, 35.327933 ], [ 110.477808, 35.413821 ], [ 110.531394, 35.511309 ], [ 110.567735, 35.539559 ], [ 110.609619, 35.632031 ], [ 110.57759, 35.701559 ], [ 110.571431, 35.800639 ], [ 110.550489, 35.838005 ], [ 110.549257, 35.877778 ], [ 110.511684, 35.879718 ], [ 110.516612, 35.918501 ], [ 110.502445, 35.947575 ], [ 110.516612, 35.971796 ], [ 110.49259, 35.994073 ], [ 110.491974, 36.034735 ], [ 110.467953, 36.074893 ], [ 110.447011, 36.164328 ], [ 110.45625, 36.22663 ], [ 110.474112, 36.248352 ], [ 110.474112, 36.306729 ], [ 110.459946, 36.327946 ], [ 110.487047, 36.393972 ], [ 110.489511, 36.430094 ], [ 110.47288, 36.453203 ], [ 110.503677, 36.488335 ], [ 110.488895, 36.556628 ], [ 110.496902, 36.582102 ], [ 110.447627, 36.621018 ], [ 110.426685, 36.657514 ], [ 110.394656, 36.676716 ], [ 110.402663, 36.697352 ], [ 110.438388, 36.685835 ], [ 110.447011, 36.737649 ], [ 110.407591, 36.776007 ], [ 110.423605, 36.818179 ], [ 110.406975, 36.824886 ], [ 110.424221, 36.855539 ], [ 110.376178, 36.882351 ], [ 110.408823, 36.892403 ], [ 110.424221, 36.963685 ], [ 110.381721, 37.002408 ], [ 110.382953, 37.022001 ], [ 110.426685, 37.008621 ], [ 110.417446, 37.027257 ], [ 110.460561, 37.044932 ], [ 110.49567, 37.086956 ], [ 110.535706, 37.115118 ], [ 110.53509, 37.138021 ], [ 110.590525, 37.187145 ], [ 110.651503, 37.256722 ], [ 110.660126, 37.281011 ], [ 110.690307, 37.287201 ], [ 110.678604, 37.317668 ], [ 110.695234, 37.34955 ], [ 110.641648, 37.360015 ], [ 110.630561, 37.372858 ], [ 110.644111, 37.435135 ], [ 110.740198, 37.44939 ], [ 110.759292, 37.474567 ], [ 110.770995, 37.538184 ], [ 110.795017, 37.558586 ], [ 110.771611, 37.594634 ], [ 110.763604, 37.639668 ], [ 110.793169, 37.650567 ], [ 110.775306, 37.680886 ], [ 110.706321, 37.705511 ], [ 110.716792, 37.728708 ], [ 110.750669, 37.736281 ], [ 110.735886, 37.77035 ], [ 110.680452, 37.790216 ], [ 110.59422, 37.922049 ], [ 110.522771, 37.955088 ], [ 110.528315, 37.990471 ], [ 110.507989, 38.013107 ], [ 110.501829, 38.097929 ], [ 110.519692, 38.130889 ], [ 110.509221, 38.192061 ], [ 110.528315, 38.211814 ], [ 110.565887, 38.215105 ], [ 110.57759, 38.297345 ], [ 110.601612, 38.308147 ], [ 110.661358, 38.308617 ], [ 110.701394, 38.353215 ], [ 110.746973, 38.366355 ], [ 110.77777, 38.440924 ], [ 110.796864, 38.453579 ], [ 110.840596, 38.439986 ], [ 110.874473, 38.453579 ], [ 110.870777, 38.510265 ], [ 110.907733, 38.521035 ], [ 110.920052, 38.581878 ], [ 110.898494, 38.587024 ], [ 110.880632, 38.626776 ], [ 110.916357, 38.673981 ], [ 110.915125, 38.704345 ], [ 110.965016, 38.755699 ], [ 111.009363, 38.847579 ], [ 110.995813, 38.868084 ], [ 111.016755, 38.889981 ], [ 111.009979, 38.932823 ], [ 110.980414, 38.970056 ], [ 110.998276, 38.998433 ], [ 111.038313, 39.020289 ], [ 111.094363, 39.030053 ], [ 111.138095, 39.064447 ], [ 111.147334, 39.100681 ], [ 111.173819, 39.135041 ], [ 111.163348, 39.152678 ], [ 111.219399, 39.244044 ], [ 111.213239, 39.257021 ], [ 111.247732, 39.302419 ], [ 111.202152, 39.305197 ], [ 111.179363, 39.326959 ], [ 111.186138, 39.35149 ], [ 111.155341, 39.338531 ], [ 111.159037, 39.362596 ], [ 111.125776, 39.366297 ], [ 111.143022, 39.407926 ], [ 111.171971, 39.423183 ], [ 111.287152, 39.417173 ], [ 111.358601, 39.432428 ], [ 111.385086, 39.489722 ], [ 111.431282, 39.508656 ], [ 111.422043, 39.539123 ], [ 111.441137, 39.59679 ], [ 111.460847, 39.606935 ], [ 111.445448, 39.640124 ], [ 111.497187, 39.661781 ], [ 111.525521, 39.662242 ], [ 111.61668, 39.633211 ], [ 111.646245, 39.644272 ], [ 111.707839, 39.621227 ], [ 111.722621, 39.606013 ], [ 111.783599, 39.58895 ], [ 111.842729, 39.620305 ], [ 111.87907, 39.606013 ], [ 111.9382, 39.623071 ], [ 111.925265, 39.66731 ], [ 111.959758, 39.692642 ], [ 111.970229, 39.796638 ], [ 112.012729, 39.827438 ], [ 112.042294, 39.886243 ], [ 112.07617, 39.919298 ], [ 112.133453, 40.001866 ], [ 112.142076, 40.027076 ], [ 112.182112, 40.061437 ], [ 112.183344, 40.083877 ], [ 112.232003, 40.133311 ], [ 112.232619, 40.169905 ], [ 112.299756, 40.21105 ], [ 112.310227, 40.256281 ], [ 112.349031, 40.257194 ], [ 112.418017, 40.295091 ], [ 112.456205, 40.300112 ], [ 112.511639, 40.269068 ], [ 112.6299, 40.235725 ], [ 112.712436, 40.178593 ], [ 112.744464, 40.167161 ], [ 112.848558, 40.206937 ], [ 112.898449, 40.329317 ], [ 113.03334, 40.368997 ], [ 113.083231, 40.374925 ], [ 113.251382, 40.413211 ], [ 113.27602, 40.388601 ], [ 113.316672, 40.319736 ], [ 113.387505, 40.319279 ], [ 113.500222, 40.334335 ], [ 113.559968, 40.348476 ], [ 113.688699, 40.448288 ], [ 113.763228, 40.473787 ], [ 113.794641, 40.517932 ], [ 113.850691, 40.460583 ], [ 113.890112, 40.466503 ], [ 113.948626, 40.514747 ], [ 114.011452, 40.515657 ], [ 114.061959, 40.52885 ], [ 114.080437, 40.547952 ], [ 114.076741, 40.575686 ], [ 114.041633, 40.608861 ], [ 114.07243, 40.679246 ], [ 114.063806, 40.706925 ], [ 114.084748, 40.729605 ], [ 114.134639, 40.737314 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "150000", "name": "内蒙古自治区", "center": [ 111.670801, 40.818311 ], "centroid": [ 114.077404, 44.331072 ], "childrenNum": 12, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 4, "acroutes": [ 100000 ] }, "geometry": { "type": "Polygon", "coordinates": [ [ [ 111.125776, 39.366297 ], [ 111.087588, 39.376013 ], [ 111.098059, 39.401914 ], [ 111.064182, 39.400989 ], [ 111.058639, 39.447681 ], [ 111.10545, 39.472631 ], [ 111.10545, 39.497573 ], [ 111.148566, 39.531277 ], [ 111.154725, 39.569116 ], [ 111.136863, 39.587106 ], [ 111.101138, 39.559428 ], [ 111.017371, 39.552045 ], [ 110.958856, 39.519275 ], [ 110.891103, 39.509118 ], [ 110.869545, 39.494341 ], [ 110.782698, 39.38804 ], [ 110.73835, 39.348713 ], [ 110.731575, 39.30705 ], [ 110.702626, 39.273701 ], [ 110.626249, 39.266751 ], [ 110.596684, 39.282966 ], [ 110.566503, 39.320014 ], [ 110.559728, 39.351027 ], [ 110.524003, 39.382952 ], [ 110.482735, 39.360745 ], [ 110.434692, 39.381101 ], [ 110.429764, 39.341308 ], [ 110.385417, 39.310291 ], [ 110.257917, 39.407001 ], [ 110.243751, 39.423645 ], [ 110.152592, 39.45415 ], [ 110.12549, 39.432891 ], [ 110.136577, 39.39174 ], [ 110.161831, 39.387115 ], [ 110.184005, 39.355192 ], [ 110.217881, 39.281113 ], [ 110.109476, 39.249606 ], [ 110.041107, 39.21623 ], [ 109.962267, 39.212056 ], [ 109.90252, 39.271848 ], [ 109.871723, 39.243581 ], [ 109.961035, 39.191651 ], [ 109.893897, 39.141075 ], [ 109.92223, 39.107183 ], [ 109.890818, 39.103932 ], [ 109.851397, 39.122971 ], [ 109.793499, 39.074204 ], [ 109.762086, 39.057476 ], [ 109.72513, 39.018429 ], [ 109.665384, 38.981687 ], [ 109.685094, 38.968195 ], [ 109.672159, 38.928167 ], [ 109.624116, 38.85457 ], [ 109.549587, 38.805618 ], [ 109.511399, 38.833595 ], [ 109.444262, 38.782763 ], [ 109.404226, 38.720689 ], [ 109.338936, 38.701542 ], [ 109.329081, 38.66043 ], [ 109.367269, 38.627711 ], [ 109.331545, 38.597783 ], [ 109.276726, 38.623035 ], [ 109.196654, 38.552867 ], [ 109.175712, 38.518694 ], [ 109.128901, 38.480288 ], [ 109.054372, 38.433892 ], [ 109.051292, 38.385122 ], [ 109.007561, 38.359316 ], [ 108.961981, 38.26493 ], [ 108.976148, 38.245192 ], [ 108.938575, 38.207582 ], [ 108.964445, 38.154894 ], [ 109.069155, 38.091336 ], [ 109.050676, 38.055059 ], [ 109.06977, 38.023008 ], [ 109.037742, 38.021593 ], [ 109.018648, 37.971602 ], [ 108.982923, 37.964053 ], [ 108.9743, 37.931962 ], [ 108.93488, 37.922521 ], [ 108.893612, 37.978207 ], [ 108.883141, 38.01405 ], [ 108.830786, 38.049875 ], [ 108.797525, 38.04799 ], [ 108.82709, 37.989056 ], [ 108.798141, 37.93385 ], [ 108.791982, 37.872934 ], [ 108.799989, 37.784068 ], [ 108.784591, 37.764673 ], [ 108.791982, 37.700303 ], [ 108.777815, 37.683728 ], [ 108.720533, 37.683728 ], [ 108.699591, 37.669518 ], [ 108.628142, 37.651988 ], [ 108.532671, 37.690832 ], [ 108.485244, 37.678044 ], [ 108.422418, 37.648672 ], [ 108.301078, 37.640616 ], [ 108.293071, 37.656726 ], [ 108.24626, 37.665728 ], [ 108.205608, 37.655779 ], [ 108.193905, 37.638246 ], [ 108.134159, 37.622131 ], [ 108.055318, 37.652462 ], [ 108.025137, 37.649619 ], [ 108.012819, 37.66857 ], [ 108.025753, 37.696041 ], [ 107.993109, 37.735335 ], [ 107.982022, 37.787378 ], [ 107.884703, 37.808186 ], [ 107.842819, 37.828987 ], [ 107.732566, 37.84931 ], [ 107.684523, 37.888522 ], [ 107.65003, 37.86443 ], [ 107.560719, 37.893717 ], [ 107.49235, 37.944706 ], [ 107.448618, 37.933378 ], [ 107.411662, 37.948009 ], [ 107.440611, 37.995659 ], [ 107.3938, 38.014993 ], [ 107.33159, 38.086625 ], [ 107.240431, 38.111586 ], [ 107.19054, 38.153953 ], [ 107.138801, 38.161011 ], [ 107.119091, 38.134185 ], [ 107.071047, 38.138892 ], [ 107.051337, 38.122886 ], [ 107.010069, 38.120532 ], [ 106.942316, 38.132302 ], [ 106.858548, 38.156306 ], [ 106.779092, 38.171833 ], [ 106.737824, 38.197706 ], [ 106.654672, 38.22921 ], [ 106.627571, 38.232501 ], [ 106.555506, 38.263521 ], [ 106.482209, 38.319417 ], [ 106.599854, 38.389812 ], [ 106.647897, 38.470917 ], [ 106.66268, 38.601524 ], [ 106.709491, 38.718821 ], [ 106.756302, 38.748699 ], [ 106.837606, 38.847579 ], [ 106.954019, 38.941202 ], [ 106.971881, 39.026333 ], [ 106.96757, 39.054688 ], [ 106.933693, 39.076527 ], [ 106.878874, 39.091392 ], [ 106.859164, 39.107648 ], [ 106.825288, 39.19397 ], [ 106.795723, 39.214375 ], [ 106.790795, 39.241263 ], [ 106.806193, 39.277407 ], [ 106.806809, 39.318625 ], [ 106.781556, 39.371849 ], [ 106.751375, 39.381564 ], [ 106.683622, 39.357506 ], [ 106.643586, 39.357969 ], [ 106.602318, 39.37555 ], [ 106.556122, 39.322329 ], [ 106.525325, 39.308439 ], [ 106.511774, 39.272311 ], [ 106.402753, 39.291767 ], [ 106.280181, 39.262118 ], [ 106.29558, 39.167992 ], [ 106.285109, 39.146181 ], [ 106.251232, 39.131327 ], [ 106.192718, 39.142932 ], [ 106.170544, 39.163352 ], [ 106.145907, 39.153142 ], [ 106.096631, 39.084889 ], [ 106.078153, 39.026333 ], [ 106.087392, 39.006339 ], [ 106.060907, 38.96866 ], [ 106.021487, 38.953769 ], [ 105.97098, 38.909077 ], [ 105.992538, 38.857366 ], [ 105.909386, 38.791159 ], [ 105.908154, 38.737496 ], [ 105.88598, 38.716953 ], [ 105.894603, 38.696405 ], [ 105.852719, 38.641735 ], [ 105.874277, 38.593105 ], [ 105.856415, 38.569714 ], [ 105.863806, 38.53508 ], [ 105.836705, 38.476071 ], [ 105.850872, 38.443736 ], [ 105.827466, 38.432486 ], [ 105.835473, 38.387467 ], [ 105.821307, 38.366824 ], [ 105.86627, 38.296406 ], [ 105.842248, 38.240962 ], [ 105.802828, 38.220277 ], [ 105.775111, 38.186887 ], [ 105.76772, 38.121474 ], [ 105.780655, 38.084741 ], [ 105.840401, 38.004147 ], [ 105.799749, 37.939986 ], [ 105.80406, 37.862068 ], [ 105.760944, 37.799674 ], [ 105.677177, 37.771769 ], [ 105.622358, 37.777919 ], [ 105.616199, 37.722555 ], [ 105.598952, 37.699356 ], [ 105.467141, 37.695094 ], [ 105.4037, 37.710246 ], [ 105.315004, 37.702197 ], [ 105.221998, 37.677097 ], [ 105.187505, 37.657674 ], [ 105.111128, 37.633981 ], [ 105.027977, 37.580881 ], [ 104.866601, 37.566651 ], [ 104.805007, 37.539133 ], [ 104.623305, 37.522522 ], [ 104.433595, 37.515402 ], [ 104.419429, 37.511604 ], [ 104.407726, 37.464592 ], [ 104.322726, 37.44844 ], [ 104.287002, 37.428007 ], [ 104.237727, 37.411847 ], [ 104.183524, 37.406618 ], [ 104.089285, 37.465067 ], [ 103.935916, 37.572818 ], [ 103.874938, 37.604117 ], [ 103.841062, 37.64725 ], [ 103.683381, 37.777919 ], [ 103.627947, 37.797783 ], [ 103.40744, 37.860651 ], [ 103.362477, 38.037621 ], [ 103.368636, 38.08898 ], [ 103.53494, 38.156776 ], [ 103.507838, 38.280905 ], [ 103.465339, 38.353215 ], [ 103.416063, 38.404821 ], [ 103.85954, 38.64454 ], [ 104.011677, 38.85923 ], [ 104.044322, 38.895105 ], [ 104.173053, 38.94446 ], [ 104.196459, 38.9882 ], [ 104.190915, 39.042139 ], [ 104.207546, 39.083495 ], [ 104.171205, 39.160567 ], [ 104.047401, 39.297788 ], [ 104.073271, 39.351953 ], [ 104.089901, 39.419947 ], [ 103.955626, 39.456923 ], [ 103.85338, 39.461543 ], [ 103.728961, 39.430117 ], [ 103.595302, 39.386652 ], [ 103.428998, 39.353341 ], [ 103.344615, 39.331588 ], [ 103.259615, 39.263971 ], [ 103.188166, 39.215302 ], [ 103.133347, 39.192579 ], [ 103.007696, 39.099753 ], [ 102.883892, 39.120649 ], [ 102.616574, 39.171703 ], [ 102.579002, 39.183301 ], [ 102.45335, 39.255167 ], [ 102.3548, 39.231993 ], [ 102.276576, 39.188868 ], [ 102.050526, 39.141075 ], [ 102.012338, 39.127149 ], [ 101.902701, 39.111827 ], [ 101.833715, 39.08907 ], [ 101.926106, 39.000758 ], [ 101.955055, 38.985874 ], [ 102.045599, 38.904885 ], [ 102.075164, 38.891378 ], [ 101.941505, 38.808883 ], [ 101.873751, 38.733761 ], [ 101.777049, 38.66043 ], [ 101.672955, 38.6908 ], [ 101.601506, 38.65529 ], [ 101.562702, 38.713218 ], [ 101.412413, 38.764099 ], [ 101.331109, 38.777164 ], [ 101.307087, 38.80282 ], [ 101.34158, 38.822406 ], [ 101.33542, 38.847113 ], [ 101.24303, 38.860628 ], [ 101.237486, 38.907214 ], [ 101.198682, 38.943064 ], [ 101.228863, 39.020754 ], [ 101.117378, 38.975174 ], [ 100.969553, 38.946788 ], [ 100.961545, 39.005874 ], [ 100.901799, 39.030053 ], [ 100.875314, 39.002619 ], [ 100.835278, 39.025869 ], [ 100.829118, 39.075133 ], [ 100.864227, 39.106719 ], [ 100.842669, 39.199999 ], [ 100.842053, 39.405614 ], [ 100.707778, 39.404689 ], [ 100.606764, 39.387577 ], [ 100.498975, 39.400527 ], [ 100.500823, 39.481408 ], [ 100.44354, 39.485565 ], [ 100.326512, 39.509118 ], [ 100.301258, 39.572345 ], [ 100.314193, 39.606935 ], [ 100.250135, 39.685274 ], [ 100.128179, 39.702312 ], [ 100.040716, 39.757083 ], [ 99.958796, 39.769504 ], [ 99.904593, 39.785601 ], [ 99.822058, 39.860063 ], [ 99.672384, 39.888079 ], [ 99.469124, 39.875221 ], [ 99.440791, 39.885783 ], [ 99.459885, 39.898181 ], [ 99.491298, 39.884406 ], [ 99.533182, 39.891753 ], [ 99.714268, 39.972061 ], [ 99.751225, 40.006909 ], [ 99.841152, 40.013326 ], [ 99.927383, 40.063727 ], [ 99.955716, 40.150695 ], [ 100.007455, 40.20008 ], [ 100.169447, 40.277743 ], [ 100.169447, 40.541131 ], [ 100.242744, 40.618855 ], [ 100.237201, 40.716905 ], [ 100.224882, 40.727337 ], [ 100.107853, 40.875475 ], [ 100.057346, 40.908049 ], [ 99.985897, 40.909858 ], [ 99.673, 40.93292 ], [ 99.565827, 40.846961 ], [ 99.174705, 40.858278 ], [ 99.172858, 40.747289 ], [ 99.12543, 40.715091 ], [ 99.102025, 40.676522 ], [ 99.041662, 40.693767 ], [ 98.984996, 40.782644 ], [ 98.790975, 40.705564 ], [ 98.80699, 40.660181 ], [ 98.802678, 40.607043 ], [ 98.762642, 40.639748 ], [ 98.72199, 40.657911 ], [ 98.689345, 40.691952 ], [ 98.668403, 40.773128 ], [ 98.569853, 40.746836 ], [ 98.627751, 40.677884 ], [ 98.344419, 40.568413 ], [ 98.333332, 40.918903 ], [ 98.25018, 40.93925 ], [ 98.184891, 40.988056 ], [ 98.142391, 41.001607 ], [ 97.971776, 41.09774 ], [ 97.903407, 41.168057 ], [ 97.629314, 41.440498 ], [ 97.613915, 41.477276 ], [ 97.84674, 41.656379 ], [ 97.653335, 41.986856 ], [ 97.500582, 42.243894 ], [ 97.371235, 42.457076 ], [ 97.172903, 42.795257 ], [ 97.28254, 42.782081 ], [ 97.831958, 42.706047 ], [ 98.195362, 42.653251 ], [ 98.546447, 42.638284 ], [ 98.962822, 42.607018 ], [ 99.51224, 42.568244 ], [ 99.969267, 42.647969 ], [ 100.004376, 42.648849 ], [ 100.272309, 42.636523 ], [ 100.32528, 42.690213 ], [ 100.826655, 42.675255 ], [ 100.862995, 42.671295 ], [ 101.291689, 42.586312 ], [ 101.557775, 42.529887 ], [ 101.770274, 42.509597 ], [ 101.803534, 42.503861 ], [ 101.877447, 42.432345 ], [ 102.070236, 42.232374 ], [ 102.093642, 42.223512 ], [ 102.449039, 42.144133 ], [ 102.540814, 42.162323 ], [ 102.621502, 42.154338 ], [ 102.712045, 42.153007 ], [ 103.021862, 42.028212 ], [ 103.20726, 41.96283 ], [ 103.418527, 41.882233 ], [ 103.454868, 41.877332 ], [ 103.868779, 41.802427 ], [ 104.080046, 41.805104 ], [ 104.30856, 41.840782 ], [ 104.418813, 41.860397 ], [ 104.530298, 41.875104 ], [ 104.524138, 41.661745 ], [ 104.68921, 41.6452 ], [ 104.803775, 41.652355 ], [ 104.923267, 41.654143 ], [ 105.009498, 41.583007 ], [ 105.230621, 41.751103 ], [ 105.291599, 41.749763 ], [ 105.385221, 41.797073 ], [ 105.589713, 41.888471 ], [ 105.74185, 41.949033 ], [ 106.01348, 42.032213 ], [ 106.344855, 42.149457 ], [ 106.372572, 42.161436 ], [ 106.612789, 42.241679 ], [ 106.785867, 42.291281 ], [ 107.051337, 42.319166 ], [ 107.271844, 42.364285 ], [ 107.303872, 42.412465 ], [ 107.46648, 42.458842 ], [ 107.501589, 42.456635 ], [ 107.57427, 42.412907 ], [ 107.736262, 42.415116 ], [ 107.939522, 42.403628 ], [ 107.986949, 42.413349 ], [ 108.022058, 42.433229 ], [ 108.089195, 42.436321 ], [ 108.238252, 42.460167 ], [ 108.298614, 42.438529 ], [ 108.532671, 42.442945 ], [ 108.705134, 42.413349 ], [ 108.798757, 42.415116 ], [ 108.845569, 42.395673 ], [ 108.983539, 42.449128 ], [ 109.026039, 42.458401 ], [ 109.291509, 42.435879 ], [ 109.486761, 42.458842 ], [ 109.544044, 42.472528 ], [ 109.683862, 42.558988 ], [ 109.733753, 42.579262 ], [ 109.906216, 42.635643 ], [ 110.108244, 42.642687 ], [ 110.139657, 42.674815 ], [ 110.34846, 42.742098 ], [ 110.437156, 42.781203 ], [ 110.469801, 42.839156 ], [ 110.631177, 42.936061 ], [ 110.689691, 43.02144 ], [ 110.687227, 43.036314 ], [ 110.736502, 43.089657 ], [ 110.769763, 43.099272 ], [ 110.82027, 43.149067 ], [ 111.02045, 43.329998 ], [ 111.069725, 43.357852 ], [ 111.151029, 43.38004 ], [ 111.183674, 43.396132 ], [ 111.354289, 43.436125 ], [ 111.400485, 43.472618 ], [ 111.456535, 43.494329 ], [ 111.564325, 43.490422 ], [ 111.606209, 43.513863 ], [ 111.79407, 43.672068 ], [ 111.891388, 43.6738 ], [ 111.951135, 43.693275 ], [ 111.970845, 43.748205 ], [ 111.959758, 43.823382 ], [ 111.870447, 43.940279 ], [ 111.773128, 44.010479 ], [ 111.702295, 44.034147 ], [ 111.662875, 44.061247 ], [ 111.559397, 44.171238 ], [ 111.541535, 44.206855 ], [ 111.534144, 44.26217 ], [ 111.507042, 44.294305 ], [ 111.428818, 44.319573 ], [ 111.415883, 44.35724 ], [ 111.427586, 44.394455 ], [ 111.478709, 44.488884 ], [ 111.514434, 44.507666 ], [ 111.530448, 44.55033 ], [ 111.569868, 44.57634 ], [ 111.560629, 44.647062 ], [ 111.585267, 44.705789 ], [ 111.624687, 44.778477 ], [ 111.69244, 44.859983 ], [ 111.764505, 44.969325 ], [ 111.903707, 45.052252 ], [ 112.002874, 45.090713 ], [ 112.071243, 45.096206 ], [ 112.113743, 45.072965 ], [ 112.396459, 45.064512 ], [ 112.438959, 45.071697 ], [ 112.540589, 45.001072 ], [ 112.599719, 44.930783 ], [ 112.712436, 44.879494 ], [ 112.850406, 44.840466 ], [ 112.937869, 44.840042 ], [ 113.037652, 44.822641 ], [ 113.11526, 44.799714 ], [ 113.503918, 44.777628 ], [ 113.540874, 44.759358 ], [ 113.631417, 44.745333 ], [ 113.712105, 44.788247 ], [ 113.798953, 44.849377 ], [ 113.861778, 44.863377 ], [ 113.907358, 44.915104 ], [ 114.065038, 44.931206 ], [ 114.116777, 44.957045 ], [ 114.158045, 44.994301 ], [ 114.19069, 45.036607 ], [ 114.313262, 45.107189 ], [ 114.347139, 45.119436 ], [ 114.409348, 45.179371 ], [ 114.459855, 45.21353 ], [ 114.519602, 45.283893 ], [ 114.539928, 45.325985 ], [ 114.551014, 45.387383 ], [ 114.600906, 45.403773 ], [ 114.745035, 45.438217 ], [ 114.920578, 45.386122 ], [ 114.983404, 45.379397 ], [ 115.178041, 45.396209 ], [ 115.36467, 45.392427 ], [ 115.586408, 45.440317 ], [ 115.699741, 45.45963 ], [ 115.864197, 45.572853 ], [ 115.936878, 45.632727 ], [ 116.026805, 45.661177 ], [ 116.035428, 45.685013 ], [ 116.1155, 45.679577 ], [ 116.17463, 45.688775 ], [ 116.217746, 45.72221 ], [ 116.22329, 45.747273 ], [ 116.260862, 45.776082 ], [ 116.286731, 45.775247 ], [ 116.278108, 45.831152 ], [ 116.288579, 45.839074 ], [ 116.243, 45.876169 ], [ 116.271949, 45.966926 ], [ 116.414231, 46.133896 ], [ 116.439484, 46.137628 ], [ 116.536187, 46.23251 ], [ 116.573143, 46.258998 ], [ 116.585462, 46.292504 ], [ 116.673541, 46.325163 ], [ 116.745606, 46.327642 ], [ 116.81336, 46.355737 ], [ 116.834302, 46.384229 ], [ 116.876801, 46.375559 ], [ 117.097308, 46.356976 ], [ 117.247597, 46.366888 ], [ 117.372017, 46.36028 ], [ 117.383719, 46.394962 ], [ 117.375712, 46.416421 ], [ 117.392343, 46.463023 ], [ 117.447777, 46.528117 ], [ 117.42006, 46.582029 ], [ 117.49582, 46.600535 ], [ 117.596218, 46.603414 ], [ 117.622704, 46.596012 ], [ 117.641182, 46.558166 ], [ 117.704008, 46.516587 ], [ 117.748355, 46.521941 ], [ 117.769913, 46.537586 ], [ 117.813645, 46.530588 ], [ 117.870927, 46.549935 ], [ 117.868464, 46.575447 ], [ 117.914659, 46.607936 ], [ 117.982412, 46.614925 ], [ 117.992883, 46.631366 ], [ 118.04647, 46.631366 ], [ 118.124078, 46.678195 ], [ 118.192448, 46.682711 ], [ 118.238643, 46.709392 ], [ 118.274984, 46.715957 ], [ 118.316252, 46.73934 ], [ 118.41049, 46.728265 ], [ 118.446831, 46.704467 ], [ 118.586033, 46.692975 ], [ 118.639004, 46.721291 ], [ 118.677192, 46.6979 ], [ 118.788061, 46.687227 ], [ 118.788061, 46.717598 ], [ 118.845343, 46.771731 ], [ 118.914329, 46.77501 ], [ 118.912481, 46.733188 ], [ 118.951285, 46.722111 ], [ 119.011647, 46.745902 ], [ 119.073857, 46.676552 ], [ 119.123132, 46.642872 ], [ 119.152081, 46.658072 ], [ 119.20074, 46.648213 ], [ 119.26295, 46.649034 ], [ 119.325776, 46.608759 ], [ 119.357805, 46.619447 ], [ 119.374435, 46.603414 ], [ 119.431718, 46.638763 ], [ 119.491464, 46.629311 ], [ 119.557985, 46.633832 ], [ 119.598637, 46.618214 ], [ 119.656535, 46.625612 ], [ 119.682405, 46.605058 ], [ 119.677477, 46.584908 ], [ 119.739687, 46.615336 ], [ 119.783419, 46.626023 ], [ 119.8136, 46.66834 ], [ 119.804361, 46.68189 ], [ 119.859179, 46.669572 ], [ 119.911534, 46.669572 ], [ 119.93494, 46.712674 ], [ 119.917078, 46.758203 ], [ 119.936172, 46.790173 ], [ 119.920157, 46.853238 ], [ 119.926933, 46.903963 ], [ 119.859795, 46.917046 ], [ 119.845013, 46.964852 ], [ 119.795122, 47.013024 ], [ 119.79081, 47.04525 ], [ 119.806825, 47.055037 ], [ 119.763093, 47.13082 ], [ 119.716282, 47.195518 ], [ 119.627586, 47.247544 ], [ 119.56784, 47.248357 ], [ 119.559217, 47.303172 ], [ 119.450812, 47.353065 ], [ 119.437877, 47.378602 ], [ 119.386138, 47.397645 ], [ 119.365812, 47.423161 ], [ 119.32208, 47.42721 ], [ 119.365812, 47.47739 ], [ 119.205052, 47.520249 ], [ 119.152081, 47.540453 ], [ 119.134219, 47.664335 ], [ 118.773278, 47.771034 ], [ 118.568171, 47.992187 ], [ 118.441903, 47.995791 ], [ 118.422193, 48.01461 ], [ 118.37415, 48.016612 ], [ 118.351976, 48.006203 ], [ 118.284839, 48.011007 ], [ 118.238027, 48.031422 ], [ 118.238643, 48.041826 ], [ 118.150564, 48.036224 ], [ 118.124694, 48.047427 ], [ 118.107448, 48.031021 ], [ 118.052014, 48.01421 ], [ 117.96147, 48.011007 ], [ 117.886942, 48.025418 ], [ 117.813645, 48.016212 ], [ 117.529081, 47.782697 ], [ 117.519226, 47.761782 ], [ 117.493357, 47.758563 ], [ 117.384335, 47.641356 ], [ 117.094844, 47.8241 ], [ 116.879265, 47.893968 ], [ 116.791186, 47.89758 ], [ 116.669846, 47.890758 ], [ 116.453035, 47.837358 ], [ 116.26579, 47.876711 ], [ 116.130283, 47.823296 ], [ 116.111189, 47.811642 ], [ 115.968291, 47.689721 ], [ 115.939342, 47.683275 ], [ 115.580249, 47.921649 ], [ 115.539597, 48.104607 ], [ 115.545141, 48.134971 ], [ 115.529126, 48.155336 ], [ 115.81061, 48.257042 ], [ 115.822929, 48.259432 ], [ 115.799523, 48.514982 ], [ 115.83032, 48.560156 ], [ 116.069305, 48.811437 ], [ 116.077928, 48.822471 ], [ 116.048363, 48.873274 ], [ 116.428397, 49.430659 ], [ 116.717889, 49.847288 ], [ 116.736367, 49.847674 ], [ 117.068974, 49.695389 ], [ 117.278394, 49.636512 ], [ 117.485349, 49.633024 ], [ 117.638102, 49.574847 ], [ 117.809333, 49.521263 ], [ 117.849369, 49.551557 ], [ 117.866, 49.591532 ], [ 117.950999, 49.596187 ], [ 117.995963, 49.623332 ], [ 118.011362, 49.614803 ], [ 118.082811, 49.616741 ], [ 118.129622, 49.669446 ], [ 118.156723, 49.660149 ], [ 118.211542, 49.690744 ], [ 118.220781, 49.729831 ], [ 118.284223, 49.743755 ], [ 118.315636, 49.766953 ], [ 118.384005, 49.783958 ], [ 118.398787, 49.802502 ], [ 118.385853, 49.827217 ], [ 118.443751, 49.835709 ], [ 118.483787, 49.830691 ], [ 118.485019, 49.866194 ], [ 118.531214, 49.887791 ], [ 118.574946, 49.931342 ], [ 118.605127, 49.926719 ], [ 118.672264, 49.955991 ], [ 118.739402, 49.946364 ], [ 118.761576, 49.959456 ], [ 118.791757, 49.955606 ], [ 118.964836, 49.988708 ], [ 118.982082, 49.979087 ], [ 119.090487, 49.985629 ], [ 119.12498, 50.019095 ], [ 119.163168, 50.027554 ], [ 119.193965, 50.069826 ], [ 119.190269, 50.087877 ], [ 119.236465, 50.075204 ], [ 119.290052, 50.121655 ], [ 119.309762, 50.161161 ], [ 119.350414, 50.166145 ], [ 119.339327, 50.192206 ], [ 119.358421, 50.197953 ], [ 119.319001, 50.220933 ], [ 119.339943, 50.244668 ], [ 119.35103, 50.303953 ], [ 119.381827, 50.324208 ], [ 119.358421, 50.358965 ], [ 119.322696, 50.352474 ], [ 119.277117, 50.366218 ], [ 119.259871, 50.345218 ], [ 119.232153, 50.365455 ], [ 119.188422, 50.347509 ], [ 119.155777, 50.364691 ], [ 119.176719, 50.378814 ], [ 119.125596, 50.389118 ], [ 119.165016, 50.422683 ], [ 119.217371, 50.414675 ], [ 119.22353, 50.441363 ], [ 119.250631, 50.448604 ], [ 119.262334, 50.490124 ], [ 119.264182, 50.536933 ], [ 119.295595, 50.573814 ], [ 119.281428, 50.601551 ], [ 119.298059, 50.616743 ], [ 119.361501, 50.632689 ], [ 119.394145, 50.667219 ], [ 119.385522, 50.682769 ], [ 119.430486, 50.684286 ], [ 119.450196, 50.695281 ], [ 119.506862, 50.763846 ], [ 119.496391, 50.771795 ], [ 119.515485, 50.814165 ], [ 119.498855, 50.827776 ], [ 119.491464, 50.87878 ], [ 119.569688, 50.933879 ], [ 119.598637, 50.984767 ], [ 119.630666, 51.00925 ], [ 119.678093, 51.016404 ], [ 119.726753, 51.051028 ], [ 119.719361, 51.075099 ], [ 119.764325, 51.092017 ], [ 119.752622, 51.117193 ], [ 119.771716, 51.124331 ], [ 119.788346, 51.174636 ], [ 119.760629, 51.212516 ], [ 119.784035, 51.22601 ], [ 119.821607, 51.21439 ], [ 119.797586, 51.243622 ], [ 119.828383, 51.263099 ], [ 119.811136, 51.281071 ], [ 119.885049, 51.302777 ], [ 119.883817, 51.336813 ], [ 119.946643, 51.360736 ], [ 119.914614, 51.374187 ], [ 119.910918, 51.390994 ], [ 119.97128, 51.40033 ], [ 119.982983, 51.445112 ], [ 120.002693, 51.459283 ], [ 119.982367, 51.482396 ], [ 119.985447, 51.505125 ], [ 120.017476, 51.52114 ], [ 120.052584, 51.560967 ], [ 120.035954, 51.583657 ], [ 120.05936, 51.634203 ], [ 120.100628, 51.649058 ], [ 120.087077, 51.678013 ], [ 120.172693, 51.679868 ], [ 120.226279, 51.717703 ], [ 120.294649, 51.752171 ], [ 120.317438, 51.785873 ], [ 120.363634, 51.789945 ], [ 120.40675, 51.81659 ], [ 120.40059, 51.833605 ], [ 120.480046, 51.855049 ], [ 120.481278, 51.885719 ], [ 120.549032, 51.882394 ], [ 120.548416, 51.907877 ], [ 120.656821, 51.926333 ], [ 120.66298, 51.958061 ], [ 120.704864, 51.983501 ], [ 120.717799, 52.015556 ], [ 120.691929, 52.026973 ], [ 120.690698, 52.047221 ], [ 120.717183, 52.072978 ], [ 120.753523, 52.085483 ], [ 120.76769, 52.10938 ], [ 120.760299, 52.136937 ], [ 120.786784, 52.15787 ], [ 120.745516, 52.20594 ], [ 120.755371, 52.258355 ], [ 120.715951, 52.261286 ], [ 120.695625, 52.290214 ], [ 120.653741, 52.302658 ], [ 120.627256, 52.323878 ], [ 120.62356, 52.361172 ], [ 120.653741, 52.371038 ], [ 120.64943, 52.3904 ], [ 120.688234, 52.427637 ], [ 120.68269, 52.464479 ], [ 120.706712, 52.492909 ], [ 120.687002, 52.511489 ], [ 120.734429, 52.536977 ], [ 120.690698, 52.547532 ], [ 120.658669, 52.56718 ], [ 120.62664, 52.570818 ], [ 120.605082, 52.589364 ], [ 120.56135, 52.595544 ], [ 120.483742, 52.630066 ], [ 120.462184, 52.64532 ], [ 120.396895, 52.616261 ], [ 120.289721, 52.623527 ], [ 120.194866, 52.578819 ], [ 120.125265, 52.586819 ], [ 120.07599, 52.586092 ], [ 120.049505, 52.598453 ], [ 120.035338, 52.646409 ], [ 120.071063, 52.70628 ], [ 120.031642, 52.773674 ], [ 120.101244, 52.788877 ], [ 120.14128, 52.813119 ], [ 120.181316, 52.806969 ], [ 120.222584, 52.84277 ], [ 120.297112, 52.869872 ], [ 120.295265, 52.891542 ], [ 120.350699, 52.906343 ], [ 120.363018, 52.94134 ], [ 120.411061, 52.957927 ], [ 120.452945, 53.01017 ], [ 120.529321, 53.045803 ], [ 120.562582, 53.082845 ], [ 120.643886, 53.106923 ], [ 120.659901, 53.137091 ], [ 120.687002, 53.142476 ], [ 120.690698, 53.174771 ], [ 120.736277, 53.204892 ], [ 120.821893, 53.241797 ], [ 120.838523, 53.239648 ], [ 120.820661, 53.269007 ], [ 120.867472, 53.278669 ], [ 120.882871, 53.294411 ], [ 120.936457, 53.28833 ], [ 120.950624, 53.29763 ], [ 121.055334, 53.29155 ], [ 121.098449, 53.306929 ], [ 121.129246, 53.277238 ], [ 121.155732, 53.285468 ], [ 121.227797, 53.280459 ], [ 121.308485, 53.301565 ], [ 121.336818, 53.325877 ], [ 121.416274, 53.319443 ], [ 121.499426, 53.337314 ], [ 121.504969, 53.323018 ], [ 121.575802, 53.29155 ], [ 121.615222, 53.258984 ], [ 121.642324, 53.262564 ], [ 121.679896, 53.240722 ], [ 121.67928, 53.199515 ], [ 121.660186, 53.195213 ], [ 121.665114, 53.170467 ], [ 121.722396, 53.145706 ], [ 121.753193, 53.147501 ], [ 121.784606, 53.104408 ], [ 121.775367, 53.089674 ], [ 121.817867, 53.061631 ], [ 121.785838, 53.018451 ], [ 121.715621, 52.997926 ], [ 121.677432, 52.948192 ], [ 121.66265, 52.912478 ], [ 121.610295, 52.892264 ], [ 121.604136, 52.872401 ], [ 121.620766, 52.853251 ], [ 121.591201, 52.824693 ], [ 121.537614, 52.801542 ], [ 121.511129, 52.779104 ], [ 121.476636, 52.772225 ], [ 121.455078, 52.73528 ], [ 121.373158, 52.683067 ], [ 121.309717, 52.676173 ], [ 121.29247, 52.651855 ], [ 121.237036, 52.619167 ], [ 121.182217, 52.59918 ], [ 121.225333, 52.577364 ], [ 121.280151, 52.586819 ], [ 121.323883, 52.573727 ], [ 121.353448, 52.534793 ], [ 121.411963, 52.52205 ], [ 121.416274, 52.499468 ], [ 121.474172, 52.482706 ], [ 121.495114, 52.484892 ], [ 121.519136, 52.456821 ], [ 121.565331, 52.460468 ], [ 121.590585, 52.443326 ], [ 121.63986, 52.44442 ], [ 121.678664, 52.419973 ], [ 121.658338, 52.3904 ], [ 121.715621, 52.342894 ], [ 121.714389, 52.318025 ], [ 121.769207, 52.308147 ], [ 121.841272, 52.282526 ], [ 121.901018, 52.280695 ], [ 121.94783, 52.298266 ], [ 121.976779, 52.343626 ], [ 122.035909, 52.377615 ], [ 122.040837, 52.413038 ], [ 122.091344, 52.427272 ], [ 122.080873, 52.440407 ], [ 122.107358, 52.452445 ], [ 122.142467, 52.495096 ], [ 122.140003, 52.510032 ], [ 122.168952, 52.513674 ], [ 122.178191, 52.48963 ], [ 122.207756, 52.469218 ], [ 122.310618, 52.475416 ], [ 122.326016, 52.459374 ], [ 122.342031, 52.414133 ], [ 122.367284, 52.413768 ], [ 122.378987, 52.395512 ], [ 122.419023, 52.375057 ], [ 122.447356, 52.394052 ], [ 122.484313, 52.341432 ], [ 122.478153, 52.29607 ], [ 122.560689, 52.282526 ], [ 122.585943, 52.266413 ], [ 122.67895, 52.276667 ], [ 122.710979, 52.256157 ], [ 122.76087, 52.26678 ], [ 122.787355, 52.252494 ], [ 122.766413, 52.232705 ], [ 122.769493, 52.179893 ], [ 122.73808, 52.153464 ], [ 122.690653, 52.140243 ], [ 122.629059, 52.13657 ], [ 122.643841, 52.111585 ], [ 122.625363, 52.067459 ], [ 122.650616, 52.058997 ], [ 122.664783, 51.99861 ], [ 122.683877, 51.974654 ], [ 122.726377, 51.978709 ], [ 122.729457, 51.919321 ], [ 122.706051, 51.890151 ], [ 122.725761, 51.87833 ], [ 122.732536, 51.832495 ], [ 122.771957, 51.779579 ], [ 122.749167, 51.746613 ], [ 122.778732, 51.698048 ], [ 122.816304, 51.655371 ], [ 122.820616, 51.633088 ], [ 122.85634, 51.606707 ], [ 122.832935, 51.581797 ], [ 122.874202, 51.561339 ], [ 122.880362, 51.537894 ], [ 122.858804, 51.524864 ], [ 122.880362, 51.511085 ], [ 122.854492, 51.477551 ], [ 122.871123, 51.455181 ], [ 122.900072, 51.445112 ], [ 122.903768, 51.415262 ], [ 122.946267, 51.405183 ], [ 122.965977, 51.386886 ], [ 122.965977, 51.345786 ], [ 123.002934, 51.31213 ], [ 123.069455, 51.321108 ], [ 123.127969, 51.297913 ], [ 123.231447, 51.279199 ], [ 123.231447, 51.268716 ], [ 123.294273, 51.254111 ], [ 123.339853, 51.27246 ], [ 123.376809, 51.266844 ], [ 123.414381, 51.278825 ], [ 123.440251, 51.270963 ], [ 123.46304, 51.286686 ], [ 123.582533, 51.294545 ], [ 123.582533, 51.306893 ], [ 123.661989, 51.319237 ], [ 123.660141, 51.342795 ], [ 123.711264, 51.398089 ], [ 123.794416, 51.361109 ], [ 123.842459, 51.367462 ], [ 123.887423, 51.320734 ], [ 123.926227, 51.300532 ], [ 123.939777, 51.313253 ], [ 123.994596, 51.322604 ], [ 124.071588, 51.320734 ], [ 124.090067, 51.3413 ], [ 124.128255, 51.347281 ], [ 124.192313, 51.33943 ], [ 124.239124, 51.344664 ], [ 124.271769, 51.308389 ], [ 124.297638, 51.298661 ], [ 124.339522, 51.293422 ], [ 124.406659, 51.272086 ], [ 124.430065, 51.301281 ], [ 124.426985, 51.331953 ], [ 124.443616, 51.35812 ], [ 124.478108, 51.36223 ], [ 124.490427, 51.380537 ], [ 124.555717, 51.375307 ], [ 124.58713, 51.363725 ], [ 124.62655, 51.327465 ], [ 124.693687, 51.3327 ], [ 124.752817, 51.35812 ], [ 124.76452, 51.38726 ], [ 124.783614, 51.392115 ], [ 124.864302, 51.37979 ], [ 124.885244, 51.40817 ], [ 124.942527, 51.447349 ], [ 124.917889, 51.474196 ], [ 124.928976, 51.498419 ], [ 124.983795, 51.508478 ], [ 125.004737, 51.529332 ], [ 125.047236, 51.529704 ], [ 125.073106, 51.553526 ], [ 125.060171, 51.59667 ], [ 125.098975, 51.658341 ], [ 125.12854, 51.659083 ], [ 125.130388, 51.635317 ], [ 125.175968, 51.639403 ], [ 125.214772, 51.627888 ], [ 125.228938, 51.640517 ], [ 125.289301, 51.633831 ], [ 125.316402, 51.610052 ], [ 125.35151, 51.623801 ], [ 125.38046, 51.585516 ], [ 125.424807, 51.562827 ], [ 125.528285, 51.488359 ], [ 125.559082, 51.461521 ], [ 125.595422, 51.416755 ], [ 125.60035, 51.413396 ], [ 125.600966, 51.410409 ], [ 125.62314, 51.398089 ], [ 125.623756, 51.387633 ], [ 125.626219, 51.380163 ], [ 125.700132, 51.327465 ], [ 125.740784, 51.27583 ], [ 125.76111, 51.261976 ], [ 125.761726, 51.226385 ], [ 125.819008, 51.227134 ], [ 125.850421, 51.21364 ], [ 125.864588, 51.146487 ], [ 125.909551, 51.138977 ], [ 125.946508, 51.108176 ], [ 125.970529, 51.123955 ], [ 125.993935, 51.119072 ], [ 125.976073, 51.084498 ], [ 126.059225, 51.043503 ], [ 126.033971, 51.011132 ], [ 126.041978, 50.981753 ], [ 126.068464, 50.967434 ], [ 126.042594, 50.92558 ], [ 126.02042, 50.927466 ], [ 125.996399, 50.906715 ], [ 125.997631, 50.872738 ], [ 125.961906, 50.901054 ], [ 125.939732, 50.85423 ], [ 125.913247, 50.825885 ], [ 125.878138, 50.816812 ], [ 125.890457, 50.805845 ], [ 125.836255, 50.793363 ], [ 125.846726, 50.769524 ], [ 125.828863, 50.756654 ], [ 125.804226, 50.773309 ], [ 125.758646, 50.746809 ], [ 125.795603, 50.738856 ], [ 125.78082, 50.725598 ], [ 125.825784, 50.70362 ], [ 125.789443, 50.679735 ], [ 125.804226, 50.658874 ], [ 125.793139, 50.643316 ], [ 125.814697, 50.62092 ], [ 125.807921, 50.60383 ], [ 125.829479, 50.56165 ], [ 125.794987, 50.532748 ], [ 125.770349, 50.531227 ], [ 125.754335, 50.506874 ], [ 125.740784, 50.523237 ], [ 125.699516, 50.487078 ], [ 125.654553, 50.471082 ], [ 125.627451, 50.443268 ], [ 125.580024, 50.449366 ], [ 125.562162, 50.438314 ], [ 125.583104, 50.409717 ], [ 125.567089, 50.402852 ], [ 125.536292, 50.420014 ], [ 125.522126, 50.404759 ], [ 125.546763, 50.358965 ], [ 125.520278, 50.3498 ], [ 125.530749, 50.331085 ], [ 125.463611, 50.295925 ], [ 125.466075, 50.266861 ], [ 125.442053, 50.260357 ], [ 125.448829, 50.216338 ], [ 125.417416, 50.195654 ], [ 125.39093, 50.199868 ], [ 125.382923, 50.172278 ], [ 125.335496, 50.161161 ], [ 125.376148, 50.137385 ], [ 125.311474, 50.140453 ], [ 125.27883, 50.127411 ], [ 125.258504, 50.103618 ], [ 125.287453, 50.093636 ], [ 125.283757, 50.070211 ], [ 125.328105, 50.065985 ], [ 125.315786, 50.04562 ], [ 125.289916, 50.057917 ], [ 125.25296, 50.041393 ], [ 125.283757, 50.036012 ], [ 125.297924, 50.014481 ], [ 125.278214, 49.996402 ], [ 125.241873, 49.987938 ], [ 125.231402, 49.957531 ], [ 125.190134, 49.959841 ], [ 125.199373, 49.935194 ], [ 125.225859, 49.922481 ], [ 125.212924, 49.907452 ], [ 125.245569, 49.87198 ], [ 125.225243, 49.867351 ], [ 125.239409, 49.844587 ], [ 125.177815, 49.829533 ], [ 125.222779, 49.799026 ], [ 125.221547, 49.754969 ], [ 125.204301, 49.734086 ], [ 125.225243, 49.726349 ], [ 125.219699, 49.669058 ], [ 125.185207, 49.634574 ], [ 125.189518, 49.652401 ], [ 125.164881, 49.669446 ], [ 125.132236, 49.672157 ], [ 125.127308, 49.655113 ], [ 125.15441, 49.616741 ], [ 125.16796, 49.629923 ], [ 125.205533, 49.593859 ], [ 125.23017, 49.595411 ], [ 125.233866, 49.536801 ], [ 125.211076, 49.539908 ], [ 125.228323, 49.487063 ], [ 125.270822, 49.454395 ], [ 125.256656, 49.437275 ], [ 125.25604, 49.395227 ], [ 125.277598, 49.379644 ], [ 125.256656, 49.359769 ], [ 125.261583, 49.322336 ], [ 125.214772, 49.277066 ], [ 125.233866, 49.255587 ], [ 125.219699, 49.189139 ], [ 125.187671, 49.186792 ], [ 125.158721, 49.144921 ], [ 125.117453, 49.126127 ], [ 125.034302, 49.157056 ], [ 125.039845, 49.17623 ], [ 124.983179, 49.162535 ], [ 124.906802, 49.184054 ], [ 124.860607, 49.166448 ], [ 124.847672, 49.129651 ], [ 124.809484, 49.115943 ], [ 124.828578, 49.077933 ], [ 124.808252, 49.020666 ], [ 124.756513, 48.967262 ], [ 124.744194, 48.920487 ], [ 124.709086, 48.920487 ], [ 124.715861, 48.885475 ], [ 124.697383, 48.841775 ], [ 124.654267, 48.83429 ], [ 124.644412, 48.80789 ], [ 124.656115, 48.783842 ], [ 124.612383, 48.747945 ], [ 124.624702, 48.701755 ], [ 124.601912, 48.632587 ], [ 124.579122, 48.596582 ], [ 124.520608, 48.556195 ], [ 124.548941, 48.535593 ], [ 124.533543, 48.515379 ], [ 124.555717, 48.467784 ], [ 124.507674, 48.445558 ], [ 124.52492, 48.426897 ], [ 124.51876, 48.378027 ], [ 124.547094, 48.35775 ], [ 124.540934, 48.335476 ], [ 124.579738, 48.297269 ], [ 124.558796, 48.268197 ], [ 124.579122, 48.262221 ], [ 124.547094, 48.200829 ], [ 124.512601, 48.164518 ], [ 124.529847, 48.146951 ], [ 124.505826, 48.124985 ], [ 124.478108, 48.123387 ], [ 124.46579, 48.098213 ], [ 124.415899, 48.08782 ], [ 124.430065, 48.12099 ], [ 124.471333, 48.133373 ], [ 124.467637, 48.178886 ], [ 124.418978, 48.181679 ], [ 124.412819, 48.219175 ], [ 124.422058, 48.245884 ], [ 124.365392, 48.283731 ], [ 124.353689, 48.315978 ], [ 124.317964, 48.35099 ], [ 124.331515, 48.380015 ], [ 124.309957, 48.413393 ], [ 124.330283, 48.435633 ], [ 124.302566, 48.456673 ], [ 124.314269, 48.503881 ], [ 124.25945, 48.536385 ], [ 124.136878, 48.463023 ], [ 124.07898, 48.43603 ], [ 124.019234, 48.39313 ], [ 123.862785, 48.271782 ], [ 123.746373, 48.197638 ], [ 123.705105, 48.152142 ], [ 123.579453, 48.045427 ], [ 123.537569, 48.021816 ], [ 123.300432, 47.953723 ], [ 123.256085, 47.876711 ], [ 123.214201, 47.824502 ], [ 123.161846, 47.781892 ], [ 123.041122, 47.746492 ], [ 122.926557, 47.697777 ], [ 122.848949, 47.67441 ], [ 122.765181, 47.614333 ], [ 122.59395, 47.54732 ], [ 122.543443, 47.495589 ], [ 122.507103, 47.401291 ], [ 122.418407, 47.350632 ], [ 122.441197, 47.310476 ], [ 122.462755, 47.27841 ], [ 122.498479, 47.255262 ], [ 122.531124, 47.198771 ], [ 122.582863, 47.158092 ], [ 122.615508, 47.124306 ], [ 122.679566, 47.094164 ], [ 122.710363, 47.093349 ], [ 122.821232, 47.065636 ], [ 122.852645, 47.072158 ], [ 122.845869, 47.046881 ], [ 122.778116, 47.002822 ], [ 122.77442, 46.973837 ], [ 122.798442, 46.9575 ], [ 122.791051, 46.941567 ], [ 122.83971, 46.937072 ], [ 122.895144, 46.960359 ], [ 122.893913, 46.895376 ], [ 122.906847, 46.80738 ], [ 122.996774, 46.761483 ], [ 123.00355, 46.730726 ], [ 123.026339, 46.718829 ], [ 123.076846, 46.745082 ], [ 123.103332, 46.734828 ], [ 123.163694, 46.74016 ], [ 123.198802, 46.803283 ], [ 123.22344, 46.821305 ], [ 123.221592, 46.850373 ], [ 123.295505, 46.865105 ], [ 123.341084, 46.826628 ], [ 123.374345, 46.837683 ], [ 123.40699, 46.906416 ], [ 123.404526, 46.935438 ], [ 123.360179, 46.970978 ], [ 123.304128, 46.964852 ], [ 123.301664, 46.999965 ], [ 123.337389, 46.988943 ], [ 123.42362, 46.934212 ], [ 123.487678, 46.959951 ], [ 123.52833, 46.944836 ], [ 123.483366, 46.84587 ], [ 123.506772, 46.827038 ], [ 123.562823, 46.82581 ], [ 123.575757, 46.845461 ], [ 123.576989, 46.891286 ], [ 123.605322, 46.891286 ], [ 123.599163, 46.868378 ], [ 123.625648, 46.847508 ], [ 123.580069, 46.827447 ], [ 123.629344, 46.813524 ], [ 123.631808, 46.728675 ], [ 123.603475, 46.68928 ], [ 123.474743, 46.686817 ], [ 123.366338, 46.677784 ], [ 123.318295, 46.662179 ], [ 123.276411, 46.660947 ], [ 123.279491, 46.616981 ], [ 123.228368, 46.588198 ], [ 123.18094, 46.614103 ], [ 123.098404, 46.603002 ], [ 123.077462, 46.622324 ], [ 123.04605, 46.617803 ], [ 123.052825, 46.579972 ], [ 123.002318, 46.574624 ], [ 123.010325, 46.524823 ], [ 123.011557, 46.434984 ], [ 123.089781, 46.347888 ], [ 123.142136, 46.298293 ], [ 123.178476, 46.248239 ], [ 123.128585, 46.210565 ], [ 123.127354, 46.174523 ], [ 123.102716, 46.172037 ], [ 123.112571, 46.130163 ], [ 123.070071, 46.123527 ], [ 123.04605, 46.099878 ], [ 122.792898, 46.073313 ], [ 122.828623, 45.912406 ], [ 122.80029, 45.856583 ], [ 122.772572, 45.856583 ], [ 122.752246, 45.834905 ], [ 122.792283, 45.766063 ], [ 122.751015, 45.735996 ], [ 122.741775, 45.705077 ], [ 122.671558, 45.70048 ], [ 122.650001, 45.731401 ], [ 122.640761, 45.771072 ], [ 122.603189, 45.778169 ], [ 122.556378, 45.82156 ], [ 122.522501, 45.786933 ], [ 122.504639, 45.786933 ], [ 122.496016, 45.85825 ], [ 122.446125, 45.916986 ], [ 122.362357, 45.917403 ], [ 122.372828, 45.856166 ], [ 122.337719, 45.859917 ], [ 122.301379, 45.813218 ], [ 122.253952, 45.7982 ], [ 122.236705, 45.831569 ], [ 122.200981, 45.857 ], [ 122.091344, 45.882002 ], [ 122.085184, 45.912406 ], [ 122.040221, 45.959022 ], [ 121.92812, 45.988552 ], [ 121.923808, 46.004767 ], [ 121.864062, 46.002272 ], [ 121.843736, 46.024301 ], [ 121.819098, 46.023054 ], [ 121.761816, 45.998947 ], [ 121.809243, 45.961102 ], [ 121.821562, 45.918235 ], [ 121.805548, 45.900746 ], [ 121.817251, 45.875336 ], [ 121.769823, 45.84366 ], [ 121.766744, 45.830318 ], [ 121.754425, 45.794862 ], [ 121.697142, 45.76314 ], [ 121.657106, 45.770238 ], [ 121.644172, 45.752284 ], [ 121.666345, 45.727641 ], [ 121.713773, 45.701734 ], [ 121.811091, 45.687103 ], [ 121.812323, 45.704659 ], [ 121.867142, 45.719703 ], [ 121.934279, 45.71051 ], [ 121.970004, 45.692956 ], [ 122.003264, 45.623102 ], [ 121.995873, 45.59882 ], [ 121.966308, 45.596308 ], [ 121.993409, 45.552741 ], [ 122.002648, 45.507882 ], [ 122.064242, 45.472641 ], [ 122.168336, 45.439897 ], [ 122.180039, 45.409655 ], [ 122.146778, 45.374352 ], [ 122.147394, 45.295682 ], [ 122.239169, 45.276313 ], [ 122.22993, 45.206784 ], [ 122.192358, 45.180636 ], [ 122.143082, 45.183167 ], [ 122.109822, 45.142236 ], [ 122.119677, 45.068739 ], [ 122.098735, 45.02138 ], [ 122.074713, 45.006573 ], [ 122.087032, 44.95281 ], [ 122.079025, 44.914256 ], [ 122.04946, 44.912985 ], [ 122.098119, 44.81882 ], [ 122.099967, 44.7823 ], [ 122.168952, 44.770405 ], [ 122.142467, 44.753833 ], [ 122.110438, 44.767856 ], [ 122.10243, 44.736406 ], [ 122.152322, 44.744057 ], [ 122.161561, 44.728328 ], [ 122.117213, 44.701961 ], [ 122.103046, 44.67388 ], [ 122.113517, 44.615546 ], [ 122.13138, 44.577619 ], [ 122.196053, 44.559712 ], [ 122.224386, 44.526016 ], [ 122.228082, 44.480345 ], [ 122.28598, 44.477783 ], [ 122.294604, 44.41113 ], [ 122.291524, 44.310152 ], [ 122.271198, 44.255741 ], [ 122.319241, 44.233018 ], [ 122.483081, 44.236877 ], [ 122.515726, 44.251025 ], [ 122.641993, 44.283595 ], [ 122.675254, 44.285738 ], [ 122.702971, 44.319145 ], [ 122.76087, 44.369648 ], [ 122.85634, 44.398304 ], [ 123.025108, 44.493153 ], [ 123.06576, 44.505959 ], [ 123.12489, 44.5098 ], [ 123.137209, 44.486322 ], [ 123.125506, 44.455147 ], [ 123.142136, 44.428228 ], [ 123.114419, 44.40258 ], [ 123.128585, 44.367081 ], [ 123.196955, 44.34483 ], [ 123.277027, 44.25274 ], [ 123.286882, 44.211574 ], [ 123.323838, 44.179823 ], [ 123.386664, 44.161794 ], [ 123.362642, 44.133452 ], [ 123.350939, 44.092633 ], [ 123.32815, 44.084035 ], [ 123.331229, 44.028984 ], [ 123.365722, 44.013922 ], [ 123.400831, 43.979481 ], [ 123.37065, 43.970006 ], [ 123.397135, 43.954929 ], [ 123.467968, 43.853599 ], [ 123.461809, 43.822518 ], [ 123.498149, 43.771114 ], [ 123.48275, 43.737396 ], [ 123.520323, 43.708419 ], [ 123.518475, 43.682024 ], [ 123.536953, 43.633964 ], [ 123.510468, 43.624867 ], [ 123.5117, 43.592801 ], [ 123.421157, 43.598435 ], [ 123.434091, 43.575461 ], [ 123.461193, 43.568523 ], [ 123.452569, 43.545971 ], [ 123.360179, 43.567223 ], [ 123.304744, 43.550742 ], [ 123.329998, 43.519071 ], [ 123.315831, 43.492159 ], [ 123.36449, 43.483475 ], [ 123.382968, 43.469143 ], [ 123.419925, 43.410046 ], [ 123.442098, 43.437863 ], [ 123.486446, 43.44525 ], [ 123.519707, 43.402219 ], [ 123.54496, 43.415262 ], [ 123.608402, 43.366119 ], [ 123.703873, 43.37047 ], [ 123.698329, 43.272071 ], [ 123.664453, 43.264663 ], [ 123.676771, 43.223684 ], [ 123.645974, 43.208855 ], [ 123.666916, 43.179623 ], [ 123.636119, 43.141644 ], [ 123.631192, 43.088346 ], [ 123.580685, 43.036314 ], [ 123.572678, 43.003498 ], [ 123.536337, 43.007 ], [ 123.474743, 43.042438 ], [ 123.434707, 43.027565 ], [ 123.323222, 43.000872 ], [ 123.259165, 42.993431 ], [ 123.18402, 42.925983 ], [ 123.188947, 42.895739 ], [ 123.169853, 42.859777 ], [ 123.227752, 42.831695 ], [ 123.118114, 42.801405 ], [ 123.058368, 42.768903 ], [ 122.980144, 42.777689 ], [ 122.945651, 42.753524 ], [ 122.925941, 42.772417 ], [ 122.887137, 42.770221 ], [ 122.883442, 42.751766 ], [ 122.848949, 42.712203 ], [ 122.786123, 42.757479 ], [ 122.73808, 42.77066 ], [ 122.733152, 42.786034 ], [ 122.653696, 42.78252 ], [ 122.624747, 42.773296 ], [ 122.580399, 42.789987 ], [ 122.576088, 42.819405 ], [ 122.556378, 42.827745 ], [ 122.436886, 42.843105 ], [ 122.35127, 42.830378 ], [ 122.371596, 42.776371 ], [ 122.439349, 42.770221 ], [ 122.460907, 42.755282 ], [ 122.396234, 42.707366 ], [ 122.396234, 42.684054 ], [ 122.338951, 42.669975 ], [ 122.324785, 42.684934 ], [ 122.261343, 42.695931 ], [ 122.204676, 42.732867 ], [ 122.204676, 42.685374 ], [ 122.160945, 42.684934 ], [ 122.072865, 42.710444 ], [ 122.062394, 42.723635 ], [ 122.018663, 42.69901 ], [ 121.939207, 42.688453 ], [ 121.94167, 42.666014 ], [ 121.915801, 42.656332 ], [ 121.921344, 42.605697 ], [ 121.889931, 42.556784 ], [ 121.844352, 42.522389 ], [ 121.831417, 42.533856 ], [ 121.817867, 42.504303 ], [ 121.803084, 42.514891 ], [ 121.747649, 42.484887 ], [ 121.69899, 42.438529 ], [ 121.66573, 42.437204 ], [ 121.604136, 42.495037 ], [ 121.607831, 42.516214 ], [ 121.570875, 42.487093 ], [ 121.506201, 42.482239 ], [ 121.4791, 42.49636 ], [ 121.434752, 42.475176 ], [ 121.386093, 42.474294 ], [ 121.304789, 42.435879 ], [ 121.314644, 42.42837 ], [ 121.285079, 42.387717 ], [ 121.218558, 42.371802 ], [ 121.184681, 42.333324 ], [ 121.133558, 42.300135 ], [ 121.120623, 42.280656 ], [ 121.087978, 42.278885 ], [ 121.070732, 42.254083 ], [ 121.028848, 42.242565 ], [ 120.992508, 42.264714 ], [ 120.933994, 42.27977 ], [ 120.883487, 42.269585 ], [ 120.883487, 42.242565 ], [ 120.8299, 42.252755 ], [ 120.820661, 42.227943 ], [ 120.79048, 42.218636 ], [ 120.745516, 42.223512 ], [ 120.72211, 42.203565 ], [ 120.624792, 42.154338 ], [ 120.58414, 42.167203 ], [ 120.56751, 42.152119 ], [ 120.466496, 42.105516 ], [ 120.493597, 42.073539 ], [ 120.450481, 42.057101 ], [ 120.456641, 42.016208 ], [ 120.399358, 41.984631 ], [ 120.373489, 41.994862 ], [ 120.309431, 41.951704 ], [ 120.318054, 41.93746 ], [ 120.271859, 41.925439 ], [ 120.260156, 41.904062 ], [ 120.290337, 41.897381 ], [ 120.286641, 41.880005 ], [ 120.251533, 41.884016 ], [ 120.215808, 41.853265 ], [ 120.188707, 41.848361 ], [ 120.183164, 41.826513 ], [ 120.127113, 41.77253 ], [ 120.1382, 41.729221 ], [ 120.096316, 41.697056 ], [ 120.035954, 41.708226 ], [ 120.024867, 41.737707 ], [ 120.050737, 41.776101 ], [ 120.041498, 41.818932 ], [ 120.023019, 41.816701 ], [ 119.989759, 41.899163 ], [ 119.954034, 41.923212 ], [ 119.950954, 41.974399 ], [ 119.924469, 41.98908 ], [ 119.921389, 42.014429 ], [ 119.897368, 42.030879 ], [ 119.87581, 42.077982 ], [ 119.845629, 42.097079 ], [ 119.837622, 42.135257 ], [ 119.854868, 42.170308 ], [ 119.841933, 42.215534 ], [ 119.744615, 42.211545 ], [ 119.679941, 42.240793 ], [ 119.617115, 42.252755 ], [ 119.609108, 42.276671 ], [ 119.557985, 42.289068 ], [ 119.539507, 42.297922 ], [ 119.571536, 42.335536 ], [ 119.572152, 42.359421 ], [ 119.540123, 42.363401 ], [ 119.502551, 42.388159 ], [ 119.482841, 42.347037 ], [ 119.432949, 42.317396 ], [ 119.34795, 42.300578 ], [ 119.280197, 42.260728 ], [ 119.274037, 42.239021 ], [ 119.237697, 42.200905 ], [ 119.277733, 42.185387 ], [ 119.286972, 42.154781 ], [ 119.30853, 42.147239 ], [ 119.314689, 42.119723 ], [ 119.352261, 42.118391 ], [ 119.384906, 42.08953 ], [ 119.375667, 42.023322 ], [ 119.324544, 41.969505 ], [ 119.323928, 41.937014 ], [ 119.340559, 41.926774 ], [ 119.323312, 41.889807 ], [ 119.334399, 41.871539 ], [ 119.312841, 41.80555 ], [ 119.292515, 41.790827 ], [ 119.317769, 41.764049 ], [ 119.319001, 41.727435 ], [ 119.299907, 41.705545 ], [ 119.307914, 41.657273 ], [ 119.342406, 41.617914 ], [ 119.415703, 41.590169 ], [ 119.420015, 41.567785 ], [ 119.362116, 41.566442 ], [ 119.361501, 41.545841 ], [ 119.406464, 41.503276 ], [ 119.401537, 41.472343 ], [ 119.378131, 41.459787 ], [ 119.376283, 41.422102 ], [ 119.309762, 41.405944 ], [ 119.330704, 41.385293 ], [ 119.296211, 41.325097 ], [ 119.239545, 41.31431 ], [ 119.211827, 41.308016 ], [ 119.197661, 41.282837 ], [ 119.168712, 41.294978 ], [ 119.092951, 41.293629 ], [ 118.980234, 41.305769 ], [ 118.949437, 41.317906 ], [ 118.890923, 41.300823 ], [ 118.844727, 41.342622 ], [ 118.843496, 41.374516 ], [ 118.770199, 41.352956 ], [ 118.741866, 41.324198 ], [ 118.677192, 41.35026 ], [ 118.629765, 41.346666 ], [ 118.528135, 41.355202 ], [ 118.412338, 41.331838 ], [ 118.380309, 41.312062 ], [ 118.348896, 41.342622 ], [ 118.361215, 41.384844 ], [ 118.348896, 41.428384 ], [ 118.327338, 41.450816 ], [ 118.271904, 41.471446 ], [ 118.315636, 41.512688 ], [ 118.302701, 41.55256 ], [ 118.215237, 41.59554 ], [ 118.206614, 41.650566 ], [ 118.159187, 41.67605 ], [ 118.155491, 41.712694 ], [ 118.132702, 41.733241 ], [ 118.140093, 41.784134 ], [ 118.178281, 41.814917 ], [ 118.236179, 41.80778 ], [ 118.247266, 41.773869 ], [ 118.29223, 41.772976 ], [ 118.335346, 41.845241 ], [ 118.340273, 41.87243 ], [ 118.268824, 41.930336 ], [ 118.306396, 41.940131 ], [ 118.313788, 41.98819 ], [ 118.291614, 42.007759 ], [ 118.239875, 42.024655 ], [ 118.286686, 42.033991 ], [ 118.296541, 42.057545 ], [ 118.27252, 42.083312 ], [ 118.239259, 42.092639 ], [ 118.212774, 42.081091 ], [ 118.220165, 42.058434 ], [ 118.194296, 42.031324 ], [ 118.116687, 42.037102 ], [ 118.155491, 42.081091 ], [ 118.097593, 42.105072 ], [ 118.089586, 42.12283 ], [ 118.106216, 42.172082 ], [ 118.033535, 42.199132 ], [ 117.977485, 42.229716 ], [ 117.974405, 42.25054 ], [ 118.047702, 42.280656 ], [ 118.060021, 42.298364 ], [ 118.008898, 42.346595 ], [ 118.024296, 42.385064 ], [ 117.997811, 42.416884 ], [ 117.874007, 42.510038 ], [ 117.856761, 42.539148 ], [ 117.797631, 42.585431 ], [ 117.801326, 42.612744 ], [ 117.779768, 42.61847 ], [ 117.708935, 42.588515 ], [ 117.667051, 42.582347 ], [ 117.60053, 42.603054 ], [ 117.537088, 42.603054 ], [ 117.530313, 42.590278 ], [ 117.475494, 42.602613 ], [ 117.435458, 42.585431 ], [ 117.434226, 42.557224 ], [ 117.387415, 42.517537 ], [ 117.410205, 42.519743 ], [ 117.413284, 42.471645 ], [ 117.390495, 42.461933 ], [ 117.332596, 42.46105 ], [ 117.275314, 42.481797 ], [ 117.188467, 42.468114 ], [ 117.135496, 42.468996 ], [ 117.09546, 42.484004 ], [ 117.080061, 42.463699 ], [ 117.01662, 42.456193 ], [ 117.009228, 42.44957 ], [ 117.005533, 42.43367 ], [ 116.99075, 42.425719 ], [ 116.974736, 42.426603 ], [ 116.97104, 42.427486 ], [ 116.944555, 42.415116 ], [ 116.936547, 42.410256 ], [ 116.921765, 42.403628 ], [ 116.910062, 42.395231 ], [ 116.910678, 42.394789 ], [ 116.886656, 42.366496 ], [ 116.897743, 42.297479 ], [ 116.918685, 42.229716 ], [ 116.903287, 42.190708 ], [ 116.789338, 42.200462 ], [ 116.825062, 42.155669 ], [ 116.850316, 42.156556 ], [ 116.890352, 42.092639 ], [ 116.879881, 42.018431 ], [ 116.796113, 41.977958 ], [ 116.748686, 41.984186 ], [ 116.727744, 41.951259 ], [ 116.66923, 41.947698 ], [ 116.639049, 41.929891 ], [ 116.597165, 41.935679 ], [ 116.553433, 41.928555 ], [ 116.510933, 41.974399 ], [ 116.4826, 41.975734 ], [ 116.453651, 41.945917 ], [ 116.393289, 41.942802 ], [ 116.414231, 41.982407 ], [ 116.373579, 42.009983 ], [ 116.310137, 41.997086 ], [ 116.298434, 41.96817 ], [ 116.223906, 41.932562 ], [ 116.212819, 41.885352 ], [ 116.194341, 41.861734 ], [ 116.122892, 41.861734 ], [ 116.106877, 41.831419 ], [ 116.129051, 41.805996 ], [ 116.09887, 41.776547 ], [ 116.034196, 41.782795 ], [ 116.007095, 41.79752 ], [ 116.007095, 41.797966 ], [ 116.007095, 41.79752 ], [ 116.007095, 41.797966 ], [ 115.994776, 41.828743 ], [ 115.954124, 41.874213 ], [ 115.916552, 41.945027 ], [ 115.85311, 41.927665 ], [ 115.834632, 41.93835 ], [ 115.811226, 41.912525 ], [ 115.726227, 41.870202 ], [ 115.688038, 41.867528 ], [ 115.654162, 41.829189 ], [ 115.57409, 41.80555 ], [ 115.519887, 41.76762 ], [ 115.488474, 41.760924 ], [ 115.42996, 41.728775 ], [ 115.346808, 41.712247 ], [ 115.319091, 41.691693 ], [ 115.360975, 41.661297 ], [ 115.345576, 41.635807 ], [ 115.377605, 41.603148 ], [ 115.310468, 41.592854 ], [ 115.290142, 41.622835 ], [ 115.26612, 41.616124 ], [ 115.256881, 41.580768 ], [ 115.20391, 41.571367 ], [ 115.195287, 41.602253 ], [ 115.0992, 41.62373 ], [ 115.056085, 41.602253 ], [ 115.016049, 41.615229 ], [ 114.860832, 41.60091 ], [ 114.895325, 41.636255 ], [ 114.902716, 41.695715 ], [ 114.89594, 41.76762 ], [ 114.868839, 41.813579 ], [ 114.922426, 41.825175 ], [ 114.939056, 41.846132 ], [ 114.923658, 41.871093 ], [ 114.915035, 41.960605 ], [ 114.9021, 42.015763 ], [ 114.860832, 42.054879 ], [ 114.86268, 42.097967 ], [ 114.825723, 42.139695 ], [ 114.79431, 42.149457 ], [ 114.789383, 42.130819 ], [ 114.75489, 42.115727 ], [ 114.675434, 42.12061 ], [ 114.647717, 42.109512 ], [ 114.560254, 42.132595 ], [ 114.510978, 42.110844 ], [ 114.502355, 42.06732 ], [ 114.480181, 42.064654 ], [ 114.467863, 42.025989 ], [ 114.511594, 41.981962 ], [ 114.478334, 41.951704 ], [ 114.419203, 41.942356 ], [ 114.352066, 41.953484 ], [ 114.343443, 41.926774 ], [ 114.282465, 41.863517 ], [ 114.200545, 41.789934 ], [ 114.215328, 41.75646 ], [ 114.206704, 41.7386 ], [ 114.237501, 41.698843 ], [ 114.215328, 41.68499 ], [ 114.259059, 41.623282 ], [ 114.226414, 41.616572 ], [ 114.221487, 41.582111 ], [ 114.230726, 41.513584 ], [ 114.101379, 41.537779 ], [ 114.032394, 41.529715 ], [ 113.976959, 41.505966 ], [ 113.953553, 41.483553 ], [ 113.933227, 41.487139 ], [ 113.919677, 41.454404 ], [ 113.877793, 41.431076 ], [ 113.871017, 41.413126 ], [ 113.94493, 41.392477 ], [ 113.92522, 41.325546 ], [ 113.899351, 41.316108 ], [ 113.914749, 41.294529 ], [ 113.95109, 41.282837 ], [ 113.971416, 41.239649 ], [ 113.992357, 41.269794 ], [ 114.016379, 41.231999 ], [ 113.996669, 41.19238 ], [ 113.960945, 41.171211 ], [ 113.920293, 41.172112 ], [ 113.877793, 41.115777 ], [ 113.819279, 41.09774 ], [ 113.868554, 41.06887 ], [ 113.973263, 40.983087 ], [ 113.994821, 40.938798 ], [ 114.057647, 40.925234 ], [ 114.041633, 40.917546 ], [ 114.055183, 40.867782 ], [ 114.073661, 40.857372 ], [ 114.044712, 40.830661 ], [ 114.080437, 40.790348 ], [ 114.104458, 40.797597 ], [ 114.103227, 40.770861 ], [ 114.134639, 40.737314 ], [ 114.084748, 40.729605 ], [ 114.063806, 40.706925 ], [ 114.07243, 40.679246 ], [ 114.041633, 40.608861 ], [ 114.076741, 40.575686 ], [ 114.080437, 40.547952 ], [ 114.061959, 40.52885 ], [ 114.011452, 40.515657 ], [ 113.948626, 40.514747 ], [ 113.890112, 40.466503 ], [ 113.850691, 40.460583 ], [ 113.794641, 40.517932 ], [ 113.763228, 40.473787 ], [ 113.688699, 40.448288 ], [ 113.559968, 40.348476 ], [ 113.500222, 40.334335 ], [ 113.387505, 40.319279 ], [ 113.316672, 40.319736 ], [ 113.27602, 40.388601 ], [ 113.251382, 40.413211 ], [ 113.083231, 40.374925 ], [ 113.03334, 40.368997 ], [ 112.898449, 40.329317 ], [ 112.848558, 40.206937 ], [ 112.744464, 40.167161 ], [ 112.712436, 40.178593 ], [ 112.6299, 40.235725 ], [ 112.511639, 40.269068 ], [ 112.456205, 40.300112 ], [ 112.418017, 40.295091 ], [ 112.349031, 40.257194 ], [ 112.310227, 40.256281 ], [ 112.299756, 40.21105 ], [ 112.232619, 40.169905 ], [ 112.232003, 40.133311 ], [ 112.183344, 40.083877 ], [ 112.182112, 40.061437 ], [ 112.142076, 40.027076 ], [ 112.133453, 40.001866 ], [ 112.07617, 39.919298 ], [ 112.042294, 39.886243 ], [ 112.012729, 39.827438 ], [ 111.970229, 39.796638 ], [ 111.959758, 39.692642 ], [ 111.925265, 39.66731 ], [ 111.9382, 39.623071 ], [ 111.87907, 39.606013 ], [ 111.842729, 39.620305 ], [ 111.783599, 39.58895 ], [ 111.722621, 39.606013 ], [ 111.707839, 39.621227 ], [ 111.646245, 39.644272 ], [ 111.61668, 39.633211 ], [ 111.525521, 39.662242 ], [ 111.497187, 39.661781 ], [ 111.445448, 39.640124 ], [ 111.460847, 39.606935 ], [ 111.441137, 39.59679 ], [ 111.422043, 39.539123 ], [ 111.431282, 39.508656 ], [ 111.385086, 39.489722 ], [ 111.358601, 39.432428 ], [ 111.287152, 39.417173 ], [ 111.171971, 39.423183 ], [ 111.143022, 39.407926 ], [ 111.125776, 39.366297 ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "210000", "name": "辽宁省", "center": [ 123.429096, 41.796767 ], "centroid": [ 122.605251, 41.299975 ], "childrenNum": 14, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 5, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 119.557985, 42.289068 ], [ 119.557985, 42.289068 ], [ 119.609108, 42.276671 ], [ 119.617115, 42.252755 ], [ 119.679941, 42.240793 ], [ 119.744615, 42.211545 ], [ 119.841933, 42.215534 ], [ 119.854868, 42.170308 ], [ 119.837622, 42.135257 ], [ 119.845629, 42.097079 ], [ 119.87581, 42.077982 ], [ 119.897368, 42.030879 ], [ 119.921389, 42.014429 ], [ 119.924469, 41.98908 ], [ 119.950954, 41.974399 ], [ 119.954034, 41.923212 ], [ 119.989759, 41.899163 ], [ 120.023019, 41.816701 ], [ 120.041498, 41.818932 ], [ 120.050737, 41.776101 ], [ 120.024867, 41.737707 ], [ 120.035954, 41.708226 ], [ 120.096316, 41.697056 ], [ 120.1382, 41.729221 ], [ 120.127113, 41.77253 ], [ 120.183164, 41.826513 ], [ 120.188707, 41.848361 ], [ 120.215808, 41.853265 ], [ 120.251533, 41.884016 ], [ 120.286641, 41.880005 ], [ 120.290337, 41.897381 ], [ 120.260156, 41.904062 ], [ 120.271859, 41.925439 ], [ 120.318054, 41.93746 ], [ 120.309431, 41.951704 ], [ 120.373489, 41.994862 ], [ 120.399358, 41.984631 ], [ 120.456641, 42.016208 ], [ 120.450481, 42.057101 ], [ 120.493597, 42.073539 ], [ 120.466496, 42.105516 ], [ 120.56751, 42.152119 ], [ 120.58414, 42.167203 ], [ 120.624792, 42.154338 ], [ 120.72211, 42.203565 ], [ 120.745516, 42.223512 ], [ 120.79048, 42.218636 ], [ 120.820661, 42.227943 ], [ 120.8299, 42.252755 ], [ 120.883487, 42.242565 ], [ 120.883487, 42.269585 ], [ 120.883487, 42.269585 ], [ 120.933994, 42.27977 ], [ 120.992508, 42.264714 ], [ 121.028848, 42.242565 ], [ 121.070732, 42.254083 ], [ 121.087978, 42.278885 ], [ 121.120623, 42.280656 ], [ 121.133558, 42.300135 ], [ 121.184681, 42.333324 ], [ 121.218558, 42.371802 ], [ 121.285079, 42.387717 ], [ 121.314644, 42.42837 ], [ 121.304789, 42.435879 ], [ 121.386093, 42.474294 ], [ 121.434752, 42.475176 ], [ 121.4791, 42.49636 ], [ 121.506201, 42.482239 ], [ 121.570875, 42.487093 ], [ 121.607831, 42.516214 ], [ 121.604136, 42.495037 ], [ 121.66573, 42.437204 ], [ 121.69899, 42.438529 ], [ 121.747649, 42.484887 ], [ 121.803084, 42.514891 ], [ 121.817867, 42.504303 ], [ 121.831417, 42.533856 ], [ 121.844352, 42.522389 ], [ 121.889931, 42.556784 ], [ 121.921344, 42.605697 ], [ 121.915801, 42.656332 ], [ 121.94167, 42.666014 ], [ 121.939207, 42.688453 ], [ 122.018663, 42.69901 ], [ 122.062394, 42.723635 ], [ 122.072865, 42.710444 ], [ 122.160945, 42.684934 ], [ 122.204676, 42.685374 ], [ 122.204676, 42.732867 ], [ 122.261343, 42.695931 ], [ 122.324785, 42.684934 ], [ 122.338951, 42.669975 ], [ 122.396234, 42.684054 ], [ 122.396234, 42.707366 ], [ 122.460907, 42.755282 ], [ 122.439349, 42.770221 ], [ 122.371596, 42.776371 ], [ 122.35127, 42.830378 ], [ 122.436886, 42.843105 ], [ 122.556378, 42.827745 ], [ 122.576088, 42.819405 ], [ 122.580399, 42.789987 ], [ 122.624747, 42.773296 ], [ 122.653696, 42.78252 ], [ 122.733152, 42.786034 ], [ 122.73808, 42.77066 ], [ 122.786123, 42.757479 ], [ 122.848949, 42.712203 ], [ 122.848949, 42.712203 ], [ 122.883442, 42.751766 ], [ 122.883442, 42.751766 ], [ 122.887137, 42.770221 ], [ 122.925941, 42.772417 ], [ 122.945651, 42.753524 ], [ 122.980144, 42.777689 ], [ 123.058368, 42.768903 ], [ 123.118114, 42.801405 ], [ 123.227752, 42.831695 ], [ 123.169853, 42.859777 ], [ 123.188947, 42.895739 ], [ 123.18402, 42.925983 ], [ 123.259165, 42.993431 ], [ 123.323222, 43.000872 ], [ 123.434707, 43.027565 ], [ 123.474743, 43.042438 ], [ 123.536337, 43.007 ], [ 123.572678, 43.003498 ], [ 123.580685, 43.036314 ], [ 123.631192, 43.088346 ], [ 123.636119, 43.141644 ], [ 123.666916, 43.179623 ], [ 123.645974, 43.208855 ], [ 123.676771, 43.223684 ], [ 123.664453, 43.264663 ], [ 123.698329, 43.272071 ], [ 123.703873, 43.37047 ], [ 123.710032, 43.417001 ], [ 123.749452, 43.439167 ], [ 123.747604, 43.472184 ], [ 123.79688, 43.489988 ], [ 123.857858, 43.459153 ], [ 123.857858, 43.459153 ], [ 123.852314, 43.406133 ], [ 123.881263, 43.392218 ], [ 123.881263, 43.392218 ], [ 123.896046, 43.361333 ], [ 123.964415, 43.34088 ], [ 124.032784, 43.280786 ], [ 124.099306, 43.292983 ], [ 124.117168, 43.2773 ], [ 124.114088, 43.247229 ], [ 124.168291, 43.244177 ], [ 124.215102, 43.255947 ], [ 124.228653, 43.235022 ], [ 124.27608, 43.233278 ], [ 124.287167, 43.207983 ], [ 124.273617, 43.17875 ], [ 124.366007, 43.121554 ], [ 124.425754, 43.076107 ], [ 124.333363, 42.997371 ], [ 124.369703, 42.972854 ], [ 124.42329, 42.975482 ], [ 124.442384, 42.958841 ], [ 124.431913, 42.930803 ], [ 124.38079, 42.912835 ], [ 124.371551, 42.880831 ], [ 124.435609, 42.880831 ], [ 124.466406, 42.847054 ], [ 124.586514, 42.905384 ], [ 124.607456, 42.937376 ], [ 124.632093, 42.949642 ], [ 124.635173, 42.972854 ], [ 124.658579, 42.972854 ], [ 124.677673, 43.002185 ], [ 124.686912, 43.051185 ], [ 124.719557, 43.069987 ], [ 124.755281, 43.074359 ], [ 124.785462, 43.117185 ], [ 124.882781, 43.13422 ], [ 124.88894, 43.074796 ], [ 124.840897, 43.032377 ], [ 124.869846, 42.988178 ], [ 124.87231, 42.962344 ], [ 124.84952, 42.882585 ], [ 124.856911, 42.824234 ], [ 124.874157, 42.789987 ], [ 124.897563, 42.787791 ], [ 124.92836, 42.819844 ], [ 124.975171, 42.802722 ], [ 124.996729, 42.745174 ], [ 124.968396, 42.722756 ], [ 124.99057, 42.677455 ], [ 125.014592, 42.666014 ], [ 125.010896, 42.63212 ], [ 125.038613, 42.615387 ], [ 125.097127, 42.622433 ], [ 125.082961, 42.591159 ], [ 125.089736, 42.567803 ], [ 125.066946, 42.534738 ], [ 125.090968, 42.515773 ], [ 125.068794, 42.499449 ], [ 125.105135, 42.490624 ], [ 125.150098, 42.458842 ], [ 125.140243, 42.44692 ], [ 125.186439, 42.427928 ], [ 125.185823, 42.38197 ], [ 125.203685, 42.366938 ], [ 125.167345, 42.351903 ], [ 125.175352, 42.308102 ], [ 125.224011, 42.30102 ], [ 125.264047, 42.312528 ], [ 125.299156, 42.289953 ], [ 125.27575, 42.266928 ], [ 125.27575, 42.231045 ], [ 125.312706, 42.219966 ], [ 125.280677, 42.175187 ], [ 125.312706, 42.197359 ], [ 125.305931, 42.146351 ], [ 125.357054, 42.145464 ], [ 125.368141, 42.182726 ], [ 125.41372, 42.156112 ], [ 125.458068, 42.160105 ], [ 125.458068, 42.160105 ], [ 125.490097, 42.136145 ], [ 125.446365, 42.098411 ], [ 125.414336, 42.101964 ], [ 125.416184, 42.063766 ], [ 125.363213, 42.017097 ], [ 125.369989, 42.002868 ], [ 125.29854, 41.974399 ], [ 125.291764, 41.958825 ], [ 125.35151, 41.92811 ], [ 125.307779, 41.924548 ], [ 125.294844, 41.822945 ], [ 125.319482, 41.776993 ], [ 125.319482, 41.776993 ], [ 125.323177, 41.771191 ], [ 125.323177, 41.771191 ], [ 125.336112, 41.768067 ], [ 125.336112, 41.768067 ], [ 125.332416, 41.711354 ], [ 125.317018, 41.676944 ], [ 125.344119, 41.672474 ], [ 125.412488, 41.691246 ], [ 125.446981, 41.67605 ], [ 125.461148, 41.642516 ], [ 125.450061, 41.597777 ], [ 125.479626, 41.544946 ], [ 125.507343, 41.534195 ], [ 125.493176, 41.509103 ], [ 125.533212, 41.479069 ], [ 125.534444, 41.428833 ], [ 125.547995, 41.401006 ], [ 125.581256, 41.396517 ], [ 125.589879, 41.359245 ], [ 125.610205, 41.365084 ], [ 125.637306, 41.34442 ], [ 125.62006, 41.318355 ], [ 125.642234, 41.296327 ], [ 125.646545, 41.264396 ], [ 125.685349, 41.273842 ], [ 125.695205, 41.244599 ], [ 125.749407, 41.245499 ], [ 125.758646, 41.232449 ], [ 125.73832, 41.178418 ], [ 125.791291, 41.167607 ], [ 125.759878, 41.132908 ], [ 125.734009, 41.125695 ], [ 125.712451, 41.095485 ], [ 125.739552, 41.08917 ], [ 125.726617, 41.055332 ], [ 125.684118, 41.021929 ], [ 125.674879, 40.974503 ], [ 125.650241, 40.970888 ], [ 125.635458, 40.94151 ], [ 125.589263, 40.931112 ], [ 125.584335, 40.891764 ], [ 125.652089, 40.91619 ], [ 125.687813, 40.897645 ], [ 125.707523, 40.866877 ], [ 125.648393, 40.826133 ], [ 125.641002, 40.798503 ], [ 125.67611, 40.788082 ], [ 125.685349, 40.769048 ], [ 125.61698, 40.763609 ], [ 125.585567, 40.788535 ], [ 125.551075, 40.761796 ], [ 125.544915, 40.729605 ], [ 125.49564, 40.728697 ], [ 125.459916, 40.707379 ], [ 125.453756, 40.676522 ], [ 125.418648, 40.673345 ], [ 125.422343, 40.635661 ], [ 125.375532, 40.658365 ], [ 125.329337, 40.643835 ], [ 125.305315, 40.661089 ], [ 125.279445, 40.655187 ], [ 125.262815, 40.620218 ], [ 125.181511, 40.611132 ], [ 125.113758, 40.569322 ], [ 125.076801, 40.562048 ], [ 125.015823, 40.533853 ], [ 125.004737, 40.496091 ], [ 125.042925, 40.483802 ], [ 125.044157, 40.466503 ], [ 124.985642, 40.475153 ], [ 124.945606, 40.45603 ], [ 124.913578, 40.481981 ], [ 124.834121, 40.423235 ], [ 124.739267, 40.371733 ], [ 124.722636, 40.321561 ], [ 124.62655, 40.291896 ], [ 124.513833, 40.22019 ], [ 124.490427, 40.18408 ], [ 124.457782, 40.177679 ], [ 124.428217, 40.144291 ], [ 124.346913, 40.079756 ], [ 124.336442, 40.049985 ], [ 124.372167, 40.021576 ], [ 124.349377, 39.989029 ], [ 124.288399, 39.962888 ], [ 124.286551, 39.931689 ], [ 124.241588, 39.928477 ], [ 124.216334, 39.89313 ], [ 124.214486, 39.865116 ], [ 124.173218, 39.841225 ], [ 124.151045, 39.74558 ], [ 124.099306, 39.777323 ], [ 124.103001, 39.823302 ], [ 124.002603, 39.800316 ], [ 123.95148, 39.817786 ], [ 123.812278, 39.831115 ], [ 123.795032, 39.822842 ], [ 123.687858, 39.808132 ], [ 123.674924, 39.826979 ], [ 123.645358, 39.823761 ], [ 123.642279, 39.796178 ], [ 123.612714, 39.775023 ], [ 123.579453, 39.781002 ], [ 123.546808, 39.756163 ], [ 123.536337, 39.788361 ], [ 123.484598, 39.763063 ], [ 123.477823, 39.74696 ], [ 123.392823, 39.723949 ], [ 123.388512, 39.74742 ], [ 123.350939, 39.750641 ], [ 123.274563, 39.753862 ], [ 123.270251, 39.714743 ], [ 123.286882, 39.704154 ], [ 123.253005, 39.689879 ], [ 123.215433, 39.696786 ], [ 123.212969, 39.665928 ], [ 123.166774, 39.674219 ], [ 123.146448, 39.647037 ], [ 123.103332, 39.676983 ], [ 123.010941, 39.655331 ], [ 123.021412, 39.64335 ], [ 122.978912, 39.616156 ], [ 122.972753, 39.594946 ], [ 122.941956, 39.604629 ], [ 122.860652, 39.604629 ], [ 122.847101, 39.581571 ], [ 122.808913, 39.559889 ], [ 122.682645, 39.514658 ], [ 122.649385, 39.516505 ], [ 122.637066, 39.488799 ], [ 122.581631, 39.464316 ], [ 122.532972, 39.419947 ], [ 122.489856, 39.403764 ], [ 122.412864, 39.411625 ], [ 122.366053, 39.370461 ], [ 122.30877, 39.346399 ], [ 122.274893, 39.322329 ], [ 122.242865, 39.267678 ], [ 122.160329, 39.238019 ], [ 122.117213, 39.213911 ], [ 122.123988, 39.172631 ], [ 122.167104, 39.158711 ], [ 122.127684, 39.144788 ], [ 122.088264, 39.112291 ], [ 122.048228, 39.101146 ], [ 122.071634, 39.074204 ], [ 122.061778, 39.060264 ], [ 122.013735, 39.073275 ], [ 121.963228, 39.030053 ], [ 121.913953, 39.0598 ], [ 121.929352, 39.024939 ], [ 121.864062, 39.037026 ], [ 121.855439, 39.025869 ], [ 121.905946, 38.997503 ], [ 121.920728, 38.969591 ], [ 121.863446, 38.942598 ], [ 121.804932, 38.970986 ], [ 121.790149, 39.022614 ], [ 121.756889, 39.025869 ], [ 121.73841, 38.998898 ], [ 121.671273, 39.010059 ], [ 121.66265, 38.966333 ], [ 121.618918, 38.950046 ], [ 121.655874, 38.946788 ], [ 121.719316, 38.920252 ], [ 121.708845, 38.872744 ], [ 121.675585, 38.86156 ], [ 121.618302, 38.862492 ], [ 121.564715, 38.874607 ], [ 121.509897, 38.817743 ], [ 121.399028, 38.812613 ], [ 121.359608, 38.822406 ], [ 121.302325, 38.78976 ], [ 121.259825, 38.786495 ], [ 121.198848, 38.721623 ], [ 121.13787, 38.723023 ], [ 121.112, 38.776231 ], [ 121.12863, 38.799089 ], [ 121.110768, 38.862026 ], [ 121.129862, 38.879266 ], [ 121.094138, 38.894173 ], [ 121.08921, 38.922115 ], [ 121.128014, 38.958888 ], [ 121.180369, 38.959819 ], [ 121.204391, 38.941202 ], [ 121.275224, 38.971917 ], [ 121.341129, 38.980757 ], [ 121.317108, 39.012384 ], [ 121.370695, 39.060264 ], [ 121.431057, 39.027263 ], [ 121.508049, 39.034237 ], [ 121.581962, 39.075598 ], [ 121.599208, 39.098824 ], [ 121.562252, 39.127149 ], [ 121.590585, 39.154999 ], [ 121.642324, 39.11972 ], [ 121.605983, 39.080708 ], [ 121.631853, 39.077921 ], [ 121.68236, 39.117863 ], [ 121.639244, 39.166136 ], [ 121.604136, 39.166136 ], [ 121.586889, 39.193506 ], [ 121.591201, 39.228748 ], [ 121.631237, 39.22643 ], [ 121.589353, 39.263044 ], [ 121.623846, 39.285745 ], [ 121.672505, 39.275554 ], [ 121.667577, 39.310754 ], [ 121.70207, 39.326496 ], [ 121.72486, 39.364447 ], [ 121.621382, 39.326033 ], [ 121.562252, 39.322792 ], [ 121.51544, 39.286672 ], [ 121.464933, 39.30103 ], [ 121.466781, 39.320014 ], [ 121.435984, 39.329736 ], [ 121.432904, 39.357506 ], [ 121.35468, 39.377863 ], [ 121.324499, 39.371386 ], [ 121.307869, 39.391277 ], [ 121.270296, 39.374162 ], [ 121.245659, 39.389427 ], [ 121.246891, 39.421334 ], [ 121.304173, 39.48187 ], [ 121.286927, 39.507271 ], [ 121.268449, 39.482794 ], [ 121.224717, 39.519275 ], [ 121.226565, 39.554814 ], [ 121.263521, 39.589873 ], [ 121.299246, 39.606013 ], [ 121.325731, 39.601402 ], [ 121.450151, 39.624914 ], [ 121.451999, 39.658095 ], [ 121.482796, 39.659478 ], [ 121.502506, 39.703233 ], [ 121.45939, 39.747881 ], [ 121.487107, 39.760303 ], [ 121.472325, 39.802155 ], [ 121.530223, 39.851334 ], [ 121.541926, 39.874302 ], [ 121.572107, 39.865116 ], [ 121.626925, 39.882569 ], [ 121.699606, 39.937196 ], [ 121.76428, 39.933525 ], [ 121.779062, 39.942702 ], [ 121.796309, 39.999116 ], [ 121.824642, 40.025701 ], [ 121.910257, 40.072887 ], [ 121.956453, 40.133311 ], [ 121.995257, 40.128277 ], [ 122.003264, 40.172191 ], [ 121.98109, 40.173106 ], [ 121.950293, 40.204194 ], [ 121.940438, 40.242121 ], [ 122.02667, 40.244862 ], [ 122.039605, 40.260391 ], [ 122.040221, 40.322017 ], [ 122.079641, 40.332967 ], [ 122.110438, 40.315629 ], [ 122.138155, 40.338897 ], [ 122.111054, 40.348932 ], [ 122.135691, 40.374925 ], [ 122.152322, 40.357597 ], [ 122.198517, 40.382219 ], [ 122.186814, 40.422779 ], [ 122.229314, 40.424146 ], [ 122.250872, 40.445555 ], [ 122.241633, 40.465137 ], [ 122.278589, 40.482891 ], [ 122.244712, 40.485167 ], [ 122.245944, 40.519752 ], [ 122.150474, 40.588413 ], [ 122.133843, 40.614313 ], [ 122.148626, 40.671983 ], [ 122.122141, 40.657457 ], [ 122.06609, 40.64883 ], [ 122.025438, 40.674253 ], [ 121.951525, 40.680607 ], [ 121.936127, 40.711462 ], [ 121.934279, 40.79805 ], [ 121.883772, 40.802127 ], [ 121.84312, 40.831567 ], [ 121.816019, 40.894931 ], [ 121.778446, 40.886787 ], [ 121.735331, 40.862351 ], [ 121.732251, 40.846961 ], [ 121.682976, 40.829755 ], [ 121.626309, 40.844244 ], [ 121.576418, 40.837906 ], [ 121.553013, 40.817528 ], [ 121.55486, 40.849677 ], [ 121.526527, 40.85194 ], [ 121.499426, 40.880001 ], [ 121.440296, 40.88181 ], [ 121.440912, 40.84017 ], [ 121.342977, 40.841528 ], [ 121.290622, 40.851488 ], [ 121.274608, 40.886335 ], [ 121.251202, 40.880453 ], [ 121.23642, 40.851035 ], [ 121.177906, 40.873665 ], [ 121.126167, 40.86914 ], [ 121.076892, 40.815716 ], [ 121.086747, 40.79805 ], [ 121.010986, 40.784457 ], [ 121.00729, 40.807563 ], [ 120.971566, 40.805751 ], [ 120.994356, 40.790801 ], [ 120.980189, 40.766329 ], [ 120.991276, 40.744115 ], [ 121.028848, 40.746382 ], [ 121.032544, 40.709193 ], [ 120.983269, 40.712822 ], [ 120.945081, 40.687868 ], [ 120.861313, 40.684692 ], [ 120.8299, 40.671076 ], [ 120.837291, 40.644289 ], [ 120.822509, 40.59432 ], [ 120.72827, 40.539311 ], [ 120.72211, 40.515657 ], [ 120.693777, 40.505647 ], [ 120.666676, 40.467413 ], [ 120.615553, 40.453298 ], [ 120.617401, 40.41959 ], [ 120.596459, 40.399084 ], [ 120.602618, 40.36079 ], [ 120.537329, 40.325211 ], [ 120.52193, 40.304676 ], [ 120.523778, 40.256737 ], [ 120.491749, 40.20008 ], [ 120.451097, 40.177679 ], [ 120.371641, 40.174478 ], [ 120.273091, 40.127362 ], [ 120.161606, 40.096239 ], [ 120.134504, 40.074719 ], [ 120.092005, 40.077466 ], [ 119.947259, 40.040364 ], [ 119.941715, 40.009659 ], [ 119.91831, 39.989946 ], [ 119.854252, 39.98857 ], [ 119.845629, 40.000949 ], [ 119.845629, 40.000949 ], [ 119.854252, 40.033033 ], [ 119.81668, 40.050443 ], [ 119.81668, 40.050443 ], [ 119.787115, 40.041739 ], [ 119.787115, 40.041739 ], [ 119.783419, 40.046778 ], [ 119.783419, 40.046778 ], [ 119.772332, 40.08113 ], [ 119.736608, 40.104936 ], [ 119.760629, 40.136056 ], [ 119.745847, 40.207851 ], [ 119.716898, 40.195966 ], [ 119.671934, 40.23938 ], [ 119.639289, 40.231613 ], [ 119.639289, 40.231613 ], [ 119.651608, 40.271808 ], [ 119.598021, 40.334335 ], [ 119.586934, 40.375381 ], [ 119.604797, 40.455119 ], [ 119.553674, 40.502007 ], [ 119.572152, 40.523846 ], [ 119.559217, 40.547952 ], [ 119.503783, 40.553864 ], [ 119.477913, 40.533399 ], [ 119.429254, 40.540221 ], [ 119.30237, 40.530215 ], [ 119.256175, 40.543404 ], [ 119.22045, 40.569322 ], [ 119.230921, 40.603863 ], [ 119.177951, 40.609315 ], [ 119.162552, 40.600228 ], [ 119.14469, 40.632482 ], [ 119.184726, 40.680153 ], [ 119.165632, 40.69286 ], [ 119.115125, 40.666536 ], [ 119.054763, 40.664721 ], [ 119.028277, 40.692406 ], [ 119.011031, 40.687414 ], [ 118.96114, 40.72008 ], [ 118.950053, 40.747743 ], [ 118.895234, 40.75409 ], [ 118.907553, 40.775394 ], [ 118.878604, 40.783098 ], [ 118.845959, 40.822057 ], [ 118.873061, 40.847866 ], [ 118.90201, 40.960946 ], [ 118.916792, 40.969984 ], [ 118.977154, 40.959138 ], [ 118.977154, 40.959138 ], [ 119.00056, 40.967273 ], [ 119.013495, 41.007479 ], [ 118.951901, 41.018317 ], [ 118.937118, 41.052625 ], [ 118.964836, 41.079246 ], [ 119.037516, 41.067516 ], [ 119.080632, 41.095936 ], [ 119.081248, 41.131555 ], [ 119.126212, 41.138767 ], [ 119.189038, 41.198234 ], [ 119.169943, 41.222996 ], [ 119.204436, 41.222546 ], [ 119.209364, 41.244599 ], [ 119.2494, 41.279689 ], [ 119.239545, 41.31431 ], [ 119.296211, 41.325097 ], [ 119.330704, 41.385293 ], [ 119.309762, 41.405944 ], [ 119.376283, 41.422102 ], [ 119.378131, 41.459787 ], [ 119.401537, 41.472343 ], [ 119.406464, 41.503276 ], [ 119.361501, 41.545841 ], [ 119.362116, 41.566442 ], [ 119.420015, 41.567785 ], [ 119.415703, 41.590169 ], [ 119.342406, 41.617914 ], [ 119.307914, 41.657273 ], [ 119.299907, 41.705545 ], [ 119.319001, 41.727435 ], [ 119.317769, 41.764049 ], [ 119.292515, 41.790827 ], [ 119.312841, 41.80555 ], [ 119.334399, 41.871539 ], [ 119.323312, 41.889807 ], [ 119.340559, 41.926774 ], [ 119.323928, 41.937014 ], [ 119.324544, 41.969505 ], [ 119.375667, 42.023322 ], [ 119.384906, 42.08953 ], [ 119.352261, 42.118391 ], [ 119.314689, 42.119723 ], [ 119.30853, 42.147239 ], [ 119.286972, 42.154781 ], [ 119.277733, 42.185387 ], [ 119.237697, 42.200905 ], [ 119.274037, 42.239021 ], [ 119.280197, 42.260728 ], [ 119.34795, 42.300578 ], [ 119.432949, 42.317396 ], [ 119.482841, 42.347037 ], [ 119.502551, 42.388159 ], [ 119.540123, 42.363401 ], [ 119.572152, 42.359421 ], [ 119.571536, 42.335536 ], [ 119.539507, 42.297922 ], [ 119.557985, 42.289068 ] ] ], [ [ [ 122.673406, 39.269531 ], [ 122.67895, 39.268605 ], [ 122.57732, 39.269994 ], [ 122.497248, 39.300566 ], [ 122.540979, 39.308439 ], [ 122.593334, 39.278334 ], [ 122.641993, 39.288061 ], [ 122.673406, 39.269531 ] ] ], [ [ [ 122.335256, 39.149894 ], [ 122.316161, 39.185157 ], [ 122.343263, 39.203246 ], [ 122.393154, 39.213448 ], [ 122.383299, 39.190723 ], [ 122.398697, 39.16196 ], [ 122.366053, 39.174951 ], [ 122.335256, 39.149894 ] ] ], [ [ [ 122.691884, 39.23292 ], [ 122.691268, 39.23431 ], [ 122.690037, 39.234774 ], [ 122.628443, 39.231993 ], [ 122.635834, 39.241727 ], [ 122.740544, 39.248679 ], [ 122.751631, 39.229675 ], [ 122.696812, 39.206492 ], [ 122.691884, 39.23292 ] ] ], [ [ [ 122.759022, 39.025404 ], [ 122.732536, 39.013779 ], [ 122.704819, 39.044463 ], [ 122.725145, 39.048181 ], [ 122.759022, 39.025404 ] ] ], [ [ [ 123.022644, 39.546507 ], [ 123.036194, 39.533123 ], [ 122.995542, 39.495264 ], [ 122.945035, 39.520198 ], [ 122.96105, 39.551122 ], [ 123.022644, 39.546507 ] ] ], [ [ [ 122.503407, 39.241263 ], [ 122.547755, 39.229211 ], [ 122.502175, 39.224112 ], [ 122.503407, 39.241263 ] ] ], [ [ [ 120.786784, 40.473787 ], [ 120.774465, 40.48016 ], [ 120.805262, 40.525666 ], [ 120.8299, 40.516112 ], [ 120.83298, 40.491995 ], [ 120.786784, 40.473787 ] ] ], [ [ [ 123.086702, 39.426881 ], [ 123.054057, 39.457847 ], [ 123.090397, 39.450915 ], [ 123.086702, 39.426881 ] ] ], [ [ [ 123.160614, 39.025404 ], [ 123.143984, 39.038885 ], [ 123.145832, 39.091857 ], [ 123.20065, 39.077921 ], [ 123.205578, 39.057011 ], [ 123.160614, 39.025404 ] ] ], [ [ [ 123.716807, 39.74512 ], [ 123.719887, 39.763063 ], [ 123.756843, 39.754322 ], [ 123.716807, 39.74512 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "220000", "name": "吉林省", "center": [ 125.3245, 43.886841 ], "centroid": [ 126.171249, 43.70394 ], "childrenNum": 9, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 6, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 126.188572, 41.114875 ], [ 126.187956, 41.113072 ], [ 126.16763, 41.094583 ], [ 126.124514, 41.092327 ], [ 126.133753, 41.063906 ], [ 126.099877, 41.036376 ], [ 126.1085, 41.011995 ], [ 126.066, 40.997542 ], [ 126.08263, 40.976762 ], [ 126.051833, 40.96185 ], [ 126.041362, 40.928851 ], [ 126.008102, 40.936537 ], [ 125.959442, 40.88181 ], [ 125.921254, 40.882715 ], [ 125.875059, 40.908501 ], [ 125.860892, 40.888597 ], [ 125.817161, 40.866877 ], [ 125.778356, 40.897645 ], [ 125.707523, 40.866877 ], [ 125.687813, 40.897645 ], [ 125.652089, 40.91619 ], [ 125.584335, 40.891764 ], [ 125.589263, 40.931112 ], [ 125.635458, 40.94151 ], [ 125.650241, 40.970888 ], [ 125.674879, 40.974503 ], [ 125.684118, 41.021929 ], [ 125.726617, 41.055332 ], [ 125.739552, 41.08917 ], [ 125.712451, 41.095485 ], [ 125.734009, 41.125695 ], [ 125.759878, 41.132908 ], [ 125.791291, 41.167607 ], [ 125.73832, 41.178418 ], [ 125.758646, 41.232449 ], [ 125.749407, 41.245499 ], [ 125.695205, 41.244599 ], [ 125.685349, 41.273842 ], [ 125.646545, 41.264396 ], [ 125.642234, 41.296327 ], [ 125.62006, 41.318355 ], [ 125.637306, 41.34442 ], [ 125.610205, 41.365084 ], [ 125.589879, 41.359245 ], [ 125.581256, 41.396517 ], [ 125.547995, 41.401006 ], [ 125.534444, 41.428833 ], [ 125.533212, 41.479069 ], [ 125.493176, 41.509103 ], [ 125.507343, 41.534195 ], [ 125.479626, 41.544946 ], [ 125.450061, 41.597777 ], [ 125.461148, 41.642516 ], [ 125.446981, 41.67605 ], [ 125.412488, 41.691246 ], [ 125.344119, 41.672474 ], [ 125.317018, 41.676944 ], [ 125.332416, 41.711354 ], [ 125.336112, 41.768067 ], [ 125.336112, 41.768067 ], [ 125.323177, 41.771191 ], [ 125.323177, 41.771191 ], [ 125.319482, 41.776993 ], [ 125.319482, 41.776993 ], [ 125.294844, 41.822945 ], [ 125.307779, 41.924548 ], [ 125.35151, 41.92811 ], [ 125.291764, 41.958825 ], [ 125.29854, 41.974399 ], [ 125.369989, 42.002868 ], [ 125.363213, 42.017097 ], [ 125.416184, 42.063766 ], [ 125.414336, 42.101964 ], [ 125.446365, 42.098411 ], [ 125.490097, 42.136145 ], [ 125.458068, 42.160105 ], [ 125.458068, 42.160105 ], [ 125.41372, 42.156112 ], [ 125.368141, 42.182726 ], [ 125.357054, 42.145464 ], [ 125.305931, 42.146351 ], [ 125.312706, 42.197359 ], [ 125.280677, 42.175187 ], [ 125.312706, 42.219966 ], [ 125.27575, 42.231045 ], [ 125.27575, 42.266928 ], [ 125.299156, 42.289953 ], [ 125.264047, 42.312528 ], [ 125.224011, 42.30102 ], [ 125.175352, 42.308102 ], [ 125.167345, 42.351903 ], [ 125.203685, 42.366938 ], [ 125.185823, 42.38197 ], [ 125.186439, 42.427928 ], [ 125.140243, 42.44692 ], [ 125.150098, 42.458842 ], [ 125.105135, 42.490624 ], [ 125.068794, 42.499449 ], [ 125.090968, 42.515773 ], [ 125.066946, 42.534738 ], [ 125.089736, 42.567803 ], [ 125.082961, 42.591159 ], [ 125.097127, 42.622433 ], [ 125.038613, 42.615387 ], [ 125.010896, 42.63212 ], [ 125.014592, 42.666014 ], [ 124.99057, 42.677455 ], [ 124.968396, 42.722756 ], [ 124.996729, 42.745174 ], [ 124.975171, 42.802722 ], [ 124.92836, 42.819844 ], [ 124.897563, 42.787791 ], [ 124.874157, 42.789987 ], [ 124.856911, 42.824234 ], [ 124.84952, 42.882585 ], [ 124.87231, 42.962344 ], [ 124.869846, 42.988178 ], [ 124.840897, 43.032377 ], [ 124.88894, 43.074796 ], [ 124.882781, 43.13422 ], [ 124.785462, 43.117185 ], [ 124.755281, 43.074359 ], [ 124.719557, 43.069987 ], [ 124.686912, 43.051185 ], [ 124.677673, 43.002185 ], [ 124.658579, 42.972854 ], [ 124.635173, 42.972854 ], [ 124.632093, 42.949642 ], [ 124.607456, 42.937376 ], [ 124.586514, 42.905384 ], [ 124.466406, 42.847054 ], [ 124.435609, 42.880831 ], [ 124.371551, 42.880831 ], [ 124.38079, 42.912835 ], [ 124.431913, 42.930803 ], [ 124.442384, 42.958841 ], [ 124.42329, 42.975482 ], [ 124.369703, 42.972854 ], [ 124.333363, 42.997371 ], [ 124.425754, 43.076107 ], [ 124.366007, 43.121554 ], [ 124.273617, 43.17875 ], [ 124.287167, 43.207983 ], [ 124.27608, 43.233278 ], [ 124.228653, 43.235022 ], [ 124.215102, 43.255947 ], [ 124.168291, 43.244177 ], [ 124.114088, 43.247229 ], [ 124.117168, 43.2773 ], [ 124.099306, 43.292983 ], [ 124.032784, 43.280786 ], [ 123.964415, 43.34088 ], [ 123.896046, 43.361333 ], [ 123.881263, 43.392218 ], [ 123.881263, 43.392218 ], [ 123.852314, 43.406133 ], [ 123.857858, 43.459153 ], [ 123.857858, 43.459153 ], [ 123.79688, 43.489988 ], [ 123.747604, 43.472184 ], [ 123.749452, 43.439167 ], [ 123.710032, 43.417001 ], [ 123.703873, 43.37047 ], [ 123.608402, 43.366119 ], [ 123.54496, 43.415262 ], [ 123.519707, 43.402219 ], [ 123.486446, 43.44525 ], [ 123.442098, 43.437863 ], [ 123.419925, 43.410046 ], [ 123.382968, 43.469143 ], [ 123.36449, 43.483475 ], [ 123.315831, 43.492159 ], [ 123.329998, 43.519071 ], [ 123.304744, 43.550742 ], [ 123.360179, 43.567223 ], [ 123.452569, 43.545971 ], [ 123.452569, 43.545971 ], [ 123.461193, 43.568523 ], [ 123.434091, 43.575461 ], [ 123.421157, 43.598435 ], [ 123.5117, 43.592801 ], [ 123.510468, 43.624867 ], [ 123.536953, 43.633964 ], [ 123.518475, 43.682024 ], [ 123.520323, 43.708419 ], [ 123.48275, 43.737396 ], [ 123.498149, 43.771114 ], [ 123.461809, 43.822518 ], [ 123.467968, 43.853599 ], [ 123.397135, 43.954929 ], [ 123.37065, 43.970006 ], [ 123.400831, 43.979481 ], [ 123.365722, 44.013922 ], [ 123.331229, 44.028984 ], [ 123.32815, 44.084035 ], [ 123.350939, 44.092633 ], [ 123.362642, 44.133452 ], [ 123.386664, 44.161794 ], [ 123.323838, 44.179823 ], [ 123.286882, 44.211574 ], [ 123.277027, 44.25274 ], [ 123.196955, 44.34483 ], [ 123.128585, 44.367081 ], [ 123.114419, 44.40258 ], [ 123.142136, 44.428228 ], [ 123.125506, 44.455147 ], [ 123.137209, 44.486322 ], [ 123.12489, 44.5098 ], [ 123.06576, 44.505959 ], [ 123.025108, 44.493153 ], [ 122.85634, 44.398304 ], [ 122.76087, 44.369648 ], [ 122.702971, 44.319145 ], [ 122.675254, 44.285738 ], [ 122.641993, 44.283595 ], [ 122.515726, 44.251025 ], [ 122.483081, 44.236877 ], [ 122.319241, 44.233018 ], [ 122.271198, 44.255741 ], [ 122.291524, 44.310152 ], [ 122.294604, 44.41113 ], [ 122.28598, 44.477783 ], [ 122.228082, 44.480345 ], [ 122.224386, 44.526016 ], [ 122.196053, 44.559712 ], [ 122.13138, 44.577619 ], [ 122.113517, 44.615546 ], [ 122.103046, 44.67388 ], [ 122.117213, 44.701961 ], [ 122.161561, 44.728328 ], [ 122.152322, 44.744057 ], [ 122.10243, 44.736406 ], [ 122.110438, 44.767856 ], [ 122.142467, 44.753833 ], [ 122.168952, 44.770405 ], [ 122.099967, 44.7823 ], [ 122.098119, 44.81882 ], [ 122.04946, 44.912985 ], [ 122.079025, 44.914256 ], [ 122.087032, 44.95281 ], [ 122.074713, 45.006573 ], [ 122.098735, 45.02138 ], [ 122.119677, 45.068739 ], [ 122.109822, 45.142236 ], [ 122.143082, 45.183167 ], [ 122.192358, 45.180636 ], [ 122.22993, 45.206784 ], [ 122.239169, 45.276313 ], [ 122.147394, 45.295682 ], [ 122.146778, 45.374352 ], [ 122.180039, 45.409655 ], [ 122.168336, 45.439897 ], [ 122.064242, 45.472641 ], [ 122.002648, 45.507882 ], [ 121.993409, 45.552741 ], [ 121.966308, 45.596308 ], [ 121.995873, 45.59882 ], [ 122.003264, 45.623102 ], [ 121.970004, 45.692956 ], [ 121.934279, 45.71051 ], [ 121.867142, 45.719703 ], [ 121.812323, 45.704659 ], [ 121.811091, 45.687103 ], [ 121.713773, 45.701734 ], [ 121.666345, 45.727641 ], [ 121.644172, 45.752284 ], [ 121.657106, 45.770238 ], [ 121.697142, 45.76314 ], [ 121.754425, 45.794862 ], [ 121.766744, 45.830318 ], [ 121.766744, 45.830318 ], [ 121.769823, 45.84366 ], [ 121.817251, 45.875336 ], [ 121.805548, 45.900746 ], [ 121.821562, 45.918235 ], [ 121.809243, 45.961102 ], [ 121.761816, 45.998947 ], [ 121.819098, 46.023054 ], [ 121.843736, 46.024301 ], [ 121.864062, 46.002272 ], [ 121.923808, 46.004767 ], [ 121.92812, 45.988552 ], [ 122.040221, 45.959022 ], [ 122.085184, 45.912406 ], [ 122.091344, 45.882002 ], [ 122.200981, 45.857 ], [ 122.236705, 45.831569 ], [ 122.253952, 45.7982 ], [ 122.301379, 45.813218 ], [ 122.337719, 45.859917 ], [ 122.372828, 45.856166 ], [ 122.362357, 45.917403 ], [ 122.446125, 45.916986 ], [ 122.496016, 45.85825 ], [ 122.504639, 45.786933 ], [ 122.522501, 45.786933 ], [ 122.556378, 45.82156 ], [ 122.603189, 45.778169 ], [ 122.640761, 45.771072 ], [ 122.650001, 45.731401 ], [ 122.671558, 45.70048 ], [ 122.741775, 45.705077 ], [ 122.751015, 45.735996 ], [ 122.792283, 45.766063 ], [ 122.752246, 45.834905 ], [ 122.772572, 45.856583 ], [ 122.80029, 45.856583 ], [ 122.828623, 45.912406 ], [ 122.792898, 46.073313 ], [ 123.04605, 46.099878 ], [ 123.070071, 46.123527 ], [ 123.112571, 46.130163 ], [ 123.102716, 46.172037 ], [ 123.127354, 46.174523 ], [ 123.128585, 46.210565 ], [ 123.178476, 46.248239 ], [ 123.248078, 46.273065 ], [ 123.286266, 46.250308 ], [ 123.320758, 46.254447 ], [ 123.357099, 46.232096 ], [ 123.357099, 46.232096 ], [ 123.430396, 46.243687 ], [ 123.452569, 46.233338 ], [ 123.499381, 46.259826 ], [ 123.569598, 46.223816 ], [ 123.569598, 46.223816 ], [ 123.604706, 46.251964 ], [ 123.673692, 46.258585 ], [ 123.726047, 46.255688 ], [ 123.775938, 46.263136 ], [ 123.84985, 46.302428 ], [ 123.896046, 46.303668 ], [ 123.917604, 46.25693 ], [ 123.936082, 46.286715 ], [ 123.960103, 46.288369 ], [ 123.952096, 46.256516 ], [ 123.979814, 46.228784 ], [ 123.956408, 46.206009 ], [ 123.971806, 46.170379 ], [ 124.001987, 46.166649 ], [ 123.991516, 46.143019 ], [ 124.01677, 46.118549 ], [ 123.99398, 46.101123 ], [ 124.015538, 46.088257 ], [ 124.009995, 46.057534 ], [ 124.034016, 46.045074 ], [ 124.040176, 46.01973 ], [ 123.989053, 46.011833 ], [ 124.011842, 45.981899 ], [ 123.973654, 45.973997 ], [ 123.968727, 45.936551 ], [ 123.996444, 45.906993 ], [ 124.061118, 45.886168 ], [ 124.067277, 45.840325 ], [ 124.03648, 45.83824 ], [ 124.064197, 45.802372 ], [ 124.001987, 45.770655 ], [ 124.014922, 45.749779 ], [ 124.054342, 45.751449 ], [ 124.098074, 45.722628 ], [ 124.10177, 45.700898 ], [ 124.13503, 45.690448 ], [ 124.122096, 45.669123 ], [ 124.147349, 45.665359 ], [ 124.128255, 45.641933 ], [ 124.162132, 45.616404 ], [ 124.226805, 45.633564 ], [ 124.238508, 45.591702 ], [ 124.273001, 45.584163 ], [ 124.264377, 45.555256 ], [ 124.287783, 45.539329 ], [ 124.348761, 45.546874 ], [ 124.369087, 45.512915 ], [ 124.352457, 45.496557 ], [ 124.374015, 45.45795 ], [ 124.398652, 45.440737 ], [ 124.480572, 45.456271 ], [ 124.507058, 45.424778 ], [ 124.544014, 45.411756 ], [ 124.579738, 45.424358 ], [ 124.575427, 45.451234 ], [ 124.625318, 45.437377 ], [ 124.690607, 45.452493 ], [ 124.729412, 45.444096 ], [ 124.776223, 45.468024 ], [ 124.792853, 45.436958 ], [ 124.839665, 45.455852 ], [ 124.886476, 45.442836 ], [ 124.884628, 45.495299 ], [ 124.911114, 45.535976 ], [ 124.936983, 45.53388 ], [ 124.961005, 45.495299 ], [ 125.025678, 45.493201 ], [ 125.0497, 45.428558 ], [ 125.08912, 45.420998 ], [ 125.06633, 45.39915 ], [ 125.097127, 45.38276 ], [ 125.137779, 45.409655 ], [ 125.189518, 45.39915 ], [ 125.248649, 45.417637 ], [ 125.301619, 45.402092 ], [ 125.319482, 45.422678 ], [ 125.361981, 45.392847 ], [ 125.398322, 45.416797 ], [ 125.434662, 45.462988 ], [ 125.424807, 45.485649 ], [ 125.480242, 45.486488 ], [ 125.497488, 45.469283 ], [ 125.583104, 45.491942 ], [ 125.61698, 45.517947 ], [ 125.660096, 45.507043 ], [ 125.687813, 45.514173 ], [ 125.711835, 45.477677 ], [ 125.712451, 45.389485 ], [ 125.695205, 45.352066 ], [ 125.726001, 45.336503 ], [ 125.761726, 45.291472 ], [ 125.815929, 45.264942 ], [ 125.823936, 45.237978 ], [ 125.849805, 45.23882 ], [ 125.915095, 45.196664 ], [ 125.957595, 45.201303 ], [ 125.992703, 45.192447 ], [ 125.998247, 45.162072 ], [ 126.047522, 45.170933 ], [ 126.091869, 45.149411 ], [ 126.142992, 45.147723 ], [ 126.166398, 45.13337 ], [ 126.225528, 45.154054 ], [ 126.235383, 45.140125 ], [ 126.285274, 45.162494 ], [ 126.293282, 45.180214 ], [ 126.356107, 45.185698 ], [ 126.402919, 45.222805 ], [ 126.519331, 45.248091 ], [ 126.540273, 45.23882 ], [ 126.569222, 45.252725 ], [ 126.644983, 45.225334 ], [ 126.640055, 45.214373 ], [ 126.685635, 45.187807 ], [ 126.732446, 45.187385 ], [ 126.787265, 45.159118 ], [ 126.792808, 45.135481 ], [ 126.85625, 45.145613 ], [ 126.96404, 45.132104 ], [ 126.970815, 45.070852 ], [ 126.984981, 45.067893 ], [ 127.018242, 45.024341 ], [ 127.050271, 45.004034 ], [ 127.092771, 44.94688 ], [ 127.073061, 44.907051 ], [ 127.021938, 44.898997 ], [ 126.999764, 44.87398 ], [ 126.984366, 44.823914 ], [ 126.9973, 44.764882 ], [ 127.041032, 44.712169 ], [ 127.030561, 44.673454 ], [ 127.044112, 44.653874 ], [ 127.041648, 44.591258 ], [ 127.049655, 44.566961 ], [ 127.089691, 44.593816 ], [ 127.094619, 44.615972 ], [ 127.138966, 44.607451 ], [ 127.182082, 44.644507 ], [ 127.228893, 44.642804 ], [ 127.214111, 44.624917 ], [ 127.261538, 44.61299 ], [ 127.275705, 44.640249 ], [ 127.392733, 44.632158 ], [ 127.557189, 44.575488 ], [ 127.570124, 44.55033 ], [ 127.536247, 44.522176 ], [ 127.485124, 44.528576 ], [ 127.465414, 44.516628 ], [ 127.463566, 44.484615 ], [ 127.50853, 44.437202 ], [ 127.486356, 44.410275 ], [ 127.579363, 44.310581 ], [ 127.623711, 44.278025 ], [ 127.59045, 44.227872 ], [ 127.626174, 44.187977 ], [ 127.641573, 44.193555 ], [ 127.681609, 44.166946 ], [ 127.712406, 44.199133 ], [ 127.735811, 44.11412 ], [ 127.729036, 44.09908 ], [ 127.783239, 44.071997 ], [ 127.808492, 44.086615 ], [ 127.846065, 44.081886 ], [ 127.862695, 44.062967 ], [ 127.912586, 44.064687 ], [ 127.950158, 44.088334 ], [ 128.042549, 44.103807 ], [ 128.091208, 44.133022 ], [ 128.088129, 44.158359 ], [ 128.060411, 44.168663 ], [ 128.09244, 44.181539 ], [ 128.104143, 44.230017 ], [ 128.064107, 44.251454 ], [ 128.101679, 44.293449 ], [ 128.065339, 44.307155 ], [ 128.049941, 44.349965 ], [ 128.074578, 44.370075 ], [ 128.094904, 44.354673 ], [ 128.137404, 44.357668 ], [ 128.172512, 44.34697 ], [ 128.211317, 44.431647 ], [ 128.228563, 44.445748 ], [ 128.293237, 44.467961 ], [ 128.295084, 44.480772 ], [ 128.372693, 44.514495 ], [ 128.397946, 44.483761 ], [ 128.427511, 44.473512 ], [ 128.463236, 44.431647 ], [ 128.457076, 44.409848 ], [ 128.481714, 44.375637 ], [ 128.475555, 44.346114 ], [ 128.446605, 44.339694 ], [ 128.472475, 44.320001 ], [ 128.453997, 44.257884 ], [ 128.471859, 44.247596 ], [ 128.450301, 44.203423 ], [ 128.471859, 44.157501 ], [ 128.529141, 44.112401 ], [ 128.574721, 44.047914 ], [ 128.584576, 43.990246 ], [ 128.610445, 43.960529 ], [ 128.64001, 43.948035 ], [ 128.636315, 43.891132 ], [ 128.696061, 43.903207 ], [ 128.729938, 43.889838 ], [ 128.760734, 43.857482 ], [ 128.719467, 43.816905 ], [ 128.739177, 43.806972 ], [ 128.760119, 43.755554 ], [ 128.729322, 43.736964 ], [ 128.768126, 43.732207 ], [ 128.78722, 43.686784 ], [ 128.821097, 43.637429 ], [ 128.834647, 43.587599 ], [ 128.878379, 43.539898 ], [ 128.949828, 43.553779 ], [ 128.962763, 43.53903 ], [ 129.013886, 43.522976 ], [ 129.037907, 43.540332 ], [ 129.093958, 43.547706 ], [ 129.145081, 43.570258 ], [ 129.169102, 43.561585 ], [ 129.23008, 43.593234 ], [ 129.232544, 43.635263 ], [ 129.217146, 43.648689 ], [ 129.214066, 43.695006 ], [ 129.232544, 43.709284 ], [ 129.211602, 43.784509 ], [ 129.254718, 43.819496 ], [ 129.289826, 43.797038 ], [ 129.30892, 43.812155 ], [ 129.348341, 43.798333 ], [ 129.406855, 43.819496 ], [ 129.417942, 43.843672 ], [ 129.449971, 43.850578 ], [ 129.467833, 43.874741 ], [ 129.529427, 43.870427 ], [ 129.650767, 43.873016 ], [ 129.699426, 43.8838 ], [ 129.743158, 43.876035 ], [ 129.739462, 43.895876 ], [ 129.780114, 43.892857 ], [ 129.802904, 43.964837 ], [ 129.868193, 44.012631 ], [ 129.881128, 44.000148 ], [ 129.907614, 44.023821 ], [ 129.951345, 44.027263 ], [ 129.979062, 44.015644 ], [ 130.017867, 43.961821 ], [ 130.022794, 43.917866 ], [ 130.009243, 43.889407 ], [ 130.027722, 43.851872 ], [ 130.079461, 43.835039 ], [ 130.110873, 43.852735 ], [ 130.116417, 43.878192 ], [ 130.143518, 43.878624 ], [ 130.153373, 43.915711 ], [ 130.208192, 43.948466 ], [ 130.262395, 43.949328 ], [ 130.27225, 43.981634 ], [ 130.307358, 44.002731 ], [ 130.319061, 44.03974 ], [ 130.365256, 44.044042 ], [ 130.364025, 43.992399 ], [ 130.338155, 43.963975 ], [ 130.381887, 43.910106 ], [ 130.368336, 43.894151 ], [ 130.386198, 43.85403 ], [ 130.362793, 43.844967 ], [ 130.381887, 43.817768 ], [ 130.382503, 43.777164 ], [ 130.423155, 43.745179 ], [ 130.394206, 43.703227 ], [ 130.412684, 43.652586 ], [ 130.437937, 43.646091 ], [ 130.488444, 43.65605 ], [ 130.501995, 43.636563 ], [ 130.57098, 43.626167 ], [ 130.57098, 43.626167 ], [ 130.630726, 43.622268 ], [ 130.623335, 43.589767 ], [ 130.665835, 43.583698 ], [ 130.671378, 43.565054 ], [ 130.727429, 43.560284 ], [ 130.776704, 43.52341 ], [ 130.822899, 43.503446 ], [ 130.841378, 43.454374 ], [ 130.864167, 43.437863 ], [ 130.907283, 43.434387 ], [ 130.959638, 43.48608 ], [ 131.026775, 43.508655 ], [ 131.142572, 43.425695 ], [ 131.175217, 43.444816 ], [ 131.201086, 43.442209 ], [ 131.234963, 43.475224 ], [ 131.294093, 43.470012 ], [ 131.304564, 43.502144 ], [ 131.31873, 43.499539 ], [ 131.314419, 43.461325 ], [ 131.295941, 43.441774 ], [ 131.314419, 43.392653 ], [ 131.275615, 43.369165 ], [ 131.269455, 43.297775 ], [ 131.255289, 43.265099 ], [ 131.206014, 43.237202 ], [ 131.201086, 43.203185 ], [ 131.218948, 43.191405 ], [ 131.207861, 43.1316 ], [ 131.173985, 43.111506 ], [ 131.171521, 43.06955 ], [ 131.120398, 43.068238 ], [ 131.102536, 43.021002 ], [ 131.11855, 43.007875 ], [ 131.115471, 42.975482 ], [ 131.151195, 42.968475 ], [ 131.14442, 42.939566 ], [ 131.114855, 42.915027 ], [ 131.034167, 42.929051 ], [ 131.017536, 42.915027 ], [ 131.045869, 42.866796 ], [ 130.981812, 42.857145 ], [ 130.949783, 42.876884 ], [ 130.890653, 42.852758 ], [ 130.845073, 42.881269 ], [ 130.801957, 42.879515 ], [ 130.784095, 42.842227 ], [ 130.75453, 42.845738 ], [ 130.719422, 42.831695 ], [ 130.708335, 42.846615 ], [ 130.665835, 42.847932 ], [ 130.603625, 42.819405 ], [ 130.562357, 42.815015 ], [ 130.532792, 42.787352 ], [ 130.46627, 42.772417 ], [ 130.40714, 42.731548 ], [ 130.425003, 42.706926 ], [ 130.464423, 42.688453 ], [ 130.529096, 42.703408 ], [ 130.592538, 42.671295 ], [ 130.633806, 42.603494 ], [ 130.622719, 42.573092 ], [ 130.570364, 42.557224 ], [ 130.565437, 42.506509 ], [ 130.599929, 42.486211 ], [ 130.600545, 42.450453 ], [ 130.645509, 42.426603 ], [ 130.581451, 42.435437 ], [ 130.585763, 42.485328 ], [ 130.558661, 42.495919 ], [ 130.556198, 42.523712 ], [ 130.520473, 42.583228 ], [ 130.522937, 42.622433 ], [ 130.482285, 42.626837 ], [ 130.459495, 42.588075 ], [ 130.476125, 42.570007 ], [ 130.435474, 42.553257 ], [ 130.423771, 42.574855 ], [ 130.44656, 42.607459 ], [ 130.420691, 42.617148 ], [ 130.388046, 42.603054 ], [ 130.373264, 42.630799 ], [ 130.333228, 42.64973 ], [ 130.290112, 42.702968 ], [ 130.257467, 42.710884 ], [ 130.242069, 42.738582 ], [ 130.245148, 42.799209 ], [ 130.258083, 42.860655 ], [ 130.277793, 42.892232 ], [ 130.258083, 42.90626 ], [ 130.21004, 42.902315 ], [ 130.17062, 42.912397 ], [ 130.136127, 42.90363 ], [ 130.10225, 42.922916 ], [ 130.127504, 42.932556 ], [ 130.120729, 42.954461 ], [ 130.144134, 42.976357 ], [ 130.10841, 42.989929 ], [ 130.072685, 42.971541 ], [ 130.027106, 42.9676 ], [ 130.002468, 42.981174 ], [ 129.963664, 42.978547 ], [ 129.954425, 43.010938 ], [ 129.897143, 43.001748 ], [ 129.903918, 42.968475 ], [ 129.868193, 42.97373 ], [ 129.856491, 42.951833 ], [ 129.874969, 42.923792 ], [ 129.846636, 42.918533 ], [ 129.835549, 42.866796 ], [ 129.816454, 42.851003 ], [ 129.810911, 42.795257 ], [ 129.78381, 42.762752 ], [ 129.767179, 42.707806 ], [ 129.796744, 42.681854 ], [ 129.754245, 42.645768 ], [ 129.786889, 42.615387 ], [ 129.746237, 42.58455 ], [ 129.749933, 42.546644 ], [ 129.738846, 42.500332 ], [ 129.748701, 42.471204 ], [ 129.704354, 42.427045 ], [ 129.643991, 42.43102 ], [ 129.624281, 42.459284 ], [ 129.60026, 42.41114 ], [ 129.546057, 42.361632 ], [ 129.49863, 42.412023 ], [ 129.452434, 42.441179 ], [ 129.400695, 42.449128 ], [ 129.368051, 42.425719 ], [ 129.376058, 42.447803 ], [ 129.344029, 42.451777 ], [ 129.356348, 42.427045 ], [ 129.331094, 42.429695 ], [ 129.30892, 42.403628 ], [ 129.326167, 42.389927 ], [ 129.240551, 42.376223 ], [ 129.231312, 42.356325 ], [ 129.260261, 42.335536 ], [ 129.208522, 42.293052 ], [ 129.231312, 42.283755 ], [ 129.215914, 42.265157 ], [ 129.183269, 42.262056 ], [ 129.181421, 42.242122 ], [ 129.209138, 42.237692 ], [ 129.215914, 42.208442 ], [ 129.166639, 42.188047 ], [ 129.113668, 42.140583 ], [ 129.048378, 42.137476 ], [ 129.039139, 42.107736 ], [ 129.008958, 42.09175 ], [ 128.971386, 42.097079 ], [ 128.954755, 42.083756 ], [ 128.952908, 42.025545 ], [ 128.898089, 42.016653 ], [ 128.795227, 42.042436 ], [ 128.779213, 42.033546 ], [ 128.737945, 42.050435 ], [ 128.70222, 42.02021 ], [ 128.658489, 42.018876 ], [ 128.637547, 42.035324 ], [ 128.60675, 42.02999 ], [ 128.598127, 42.007315 ], [ 128.49896, 42.000644 ], [ 128.466316, 42.020654 ], [ 128.405338, 42.018876 ], [ 128.294468, 42.026434 ], [ 128.090593, 42.022877 ], [ 128.033926, 42.000199 ], [ 128.106607, 41.949923 ], [ 128.115846, 41.896935 ], [ 128.104143, 41.843457 ], [ 128.112766, 41.793504 ], [ 128.147875, 41.78101 ], [ 128.163889, 41.721628 ], [ 128.208853, 41.688565 ], [ 128.248889, 41.681414 ], [ 128.30186, 41.627756 ], [ 128.317874, 41.575844 ], [ 128.301244, 41.544498 ], [ 128.238418, 41.497898 ], [ 128.243345, 41.477276 ], [ 128.203925, 41.410882 ], [ 128.169433, 41.404149 ], [ 128.114614, 41.364186 ], [ 128.090593, 41.374516 ], [ 128.110919, 41.393375 ], [ 128.040085, 41.393375 ], [ 128.000049, 41.442741 ], [ 127.991426, 41.421204 ], [ 127.970484, 41.438704 ], [ 127.93168, 41.444984 ], [ 127.909506, 41.42973 ], [ 127.882405, 41.448124 ], [ 127.86947, 41.4037 ], [ 127.854688, 41.420755 ], [ 127.780159, 41.427038 ], [ 127.684073, 41.422999 ], [ 127.636645, 41.413575 ], [ 127.618783, 41.432871 ], [ 127.563964, 41.432871 ], [ 127.547334, 41.477276 ], [ 127.526392, 41.467859 ], [ 127.465414, 41.479069 ], [ 127.459255, 41.461581 ], [ 127.419835, 41.460235 ], [ 127.405668, 41.478621 ], [ 127.360088, 41.479518 ], [ 127.360704, 41.466065 ], [ 127.296031, 41.486243 ], [ 127.253531, 41.486691 ], [ 127.28864, 41.501932 ], [ 127.241212, 41.520754 ], [ 127.188241, 41.527475 ], [ 127.164836, 41.542706 ], [ 127.14143, 41.530163 ], [ 127.125416, 41.566442 ], [ 127.178386, 41.600015 ], [ 127.135887, 41.600463 ], [ 127.127263, 41.622388 ], [ 127.093387, 41.629993 ], [ 127.103242, 41.647883 ], [ 127.037952, 41.676944 ], [ 127.057662, 41.703758 ], [ 127.050887, 41.744852 ], [ 127.005923, 41.749317 ], [ 126.979438, 41.776993 ], [ 126.940018, 41.773423 ], [ 126.952953, 41.804212 ], [ 126.931395, 41.812687 ], [ 126.861178, 41.768067 ], [ 126.83962, 41.727435 ], [ 126.809439, 41.749317 ], [ 126.8002, 41.702865 ], [ 126.723207, 41.753335 ], [ 126.694874, 41.751103 ], [ 126.690562, 41.728328 ], [ 126.724439, 41.710907 ], [ 126.688099, 41.674262 ], [ 126.644983, 41.661297 ], [ 126.608027, 41.669345 ], [ 126.592628, 41.624624 ], [ 126.564295, 41.608965 ], [ 126.582773, 41.563307 ], [ 126.559983, 41.548081 ], [ 126.497158, 41.406842 ], [ 126.539041, 41.366881 ], [ 126.524259, 41.349362 ], [ 126.497158, 41.374965 ], [ 126.437411, 41.353405 ], [ 126.373354, 41.289133 ], [ 126.35426, 41.244599 ], [ 126.332086, 41.236949 ], [ 126.295129, 41.171661 ], [ 126.188572, 41.114875 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "230000", "name": "黑龙江省", "center": [ 126.642464, 45.756967 ], "centroid": [ 127.693016, 48.04047 ], "childrenNum": 13, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 7, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 123.569598, 46.223816 ], [ 123.569598, 46.223816 ], [ 123.499381, 46.259826 ], [ 123.452569, 46.233338 ], [ 123.430396, 46.243687 ], [ 123.357099, 46.232096 ], [ 123.357099, 46.232096 ], [ 123.320758, 46.254447 ], [ 123.286266, 46.250308 ], [ 123.248078, 46.273065 ], [ 123.178476, 46.248239 ], [ 123.142136, 46.298293 ], [ 123.089781, 46.347888 ], [ 123.011557, 46.434984 ], [ 123.010325, 46.524823 ], [ 123.002318, 46.574624 ], [ 123.052825, 46.579972 ], [ 123.04605, 46.617803 ], [ 123.077462, 46.622324 ], [ 123.098404, 46.603002 ], [ 123.18094, 46.614103 ], [ 123.228368, 46.588198 ], [ 123.279491, 46.616981 ], [ 123.276411, 46.660947 ], [ 123.318295, 46.662179 ], [ 123.366338, 46.677784 ], [ 123.474743, 46.686817 ], [ 123.603475, 46.68928 ], [ 123.631808, 46.728675 ], [ 123.629344, 46.813524 ], [ 123.580069, 46.827447 ], [ 123.625648, 46.847508 ], [ 123.599163, 46.868378 ], [ 123.605322, 46.891286 ], [ 123.576989, 46.891286 ], [ 123.575757, 46.845461 ], [ 123.562823, 46.82581 ], [ 123.506772, 46.827038 ], [ 123.483366, 46.84587 ], [ 123.52833, 46.944836 ], [ 123.487678, 46.959951 ], [ 123.42362, 46.934212 ], [ 123.337389, 46.988943 ], [ 123.301664, 46.999965 ], [ 123.304128, 46.964852 ], [ 123.360179, 46.970978 ], [ 123.404526, 46.935438 ], [ 123.40699, 46.906416 ], [ 123.374345, 46.837683 ], [ 123.341084, 46.826628 ], [ 123.295505, 46.865105 ], [ 123.221592, 46.850373 ], [ 123.22344, 46.821305 ], [ 123.198802, 46.803283 ], [ 123.163694, 46.74016 ], [ 123.103332, 46.734828 ], [ 123.076846, 46.745082 ], [ 123.026339, 46.718829 ], [ 123.00355, 46.730726 ], [ 122.996774, 46.761483 ], [ 122.906847, 46.80738 ], [ 122.893913, 46.895376 ], [ 122.895144, 46.960359 ], [ 122.83971, 46.937072 ], [ 122.791051, 46.941567 ], [ 122.798442, 46.9575 ], [ 122.77442, 46.973837 ], [ 122.778116, 47.002822 ], [ 122.845869, 47.046881 ], [ 122.852645, 47.072158 ], [ 122.821232, 47.065636 ], [ 122.710363, 47.093349 ], [ 122.710363, 47.093349 ], [ 122.679566, 47.094164 ], [ 122.615508, 47.124306 ], [ 122.582863, 47.158092 ], [ 122.582863, 47.158092 ], [ 122.531124, 47.198771 ], [ 122.498479, 47.255262 ], [ 122.462755, 47.27841 ], [ 122.441197, 47.310476 ], [ 122.441197, 47.310476 ], [ 122.418407, 47.350632 ], [ 122.507103, 47.401291 ], [ 122.543443, 47.495589 ], [ 122.59395, 47.54732 ], [ 122.765181, 47.614333 ], [ 122.848949, 47.67441 ], [ 122.926557, 47.697777 ], [ 123.041122, 47.746492 ], [ 123.161846, 47.781892 ], [ 123.214201, 47.824502 ], [ 123.256085, 47.876711 ], [ 123.300432, 47.953723 ], [ 123.537569, 48.021816 ], [ 123.579453, 48.045427 ], [ 123.705105, 48.152142 ], [ 123.746373, 48.197638 ], [ 123.862785, 48.271782 ], [ 124.019234, 48.39313 ], [ 124.07898, 48.43603 ], [ 124.136878, 48.463023 ], [ 124.25945, 48.536385 ], [ 124.25945, 48.536385 ], [ 124.314269, 48.503881 ], [ 124.302566, 48.456673 ], [ 124.330283, 48.435633 ], [ 124.309957, 48.413393 ], [ 124.331515, 48.380015 ], [ 124.317964, 48.35099 ], [ 124.353689, 48.315978 ], [ 124.365392, 48.283731 ], [ 124.422058, 48.245884 ], [ 124.412819, 48.219175 ], [ 124.418978, 48.181679 ], [ 124.467637, 48.178886 ], [ 124.471333, 48.133373 ], [ 124.430065, 48.12099 ], [ 124.415899, 48.08782 ], [ 124.46579, 48.098213 ], [ 124.478108, 48.123387 ], [ 124.505826, 48.124985 ], [ 124.529847, 48.146951 ], [ 124.512601, 48.164518 ], [ 124.547094, 48.200829 ], [ 124.579122, 48.262221 ], [ 124.558796, 48.268197 ], [ 124.579738, 48.297269 ], [ 124.540934, 48.335476 ], [ 124.547094, 48.35775 ], [ 124.51876, 48.378027 ], [ 124.52492, 48.426897 ], [ 124.507674, 48.445558 ], [ 124.555717, 48.467784 ], [ 124.533543, 48.515379 ], [ 124.548941, 48.535593 ], [ 124.520608, 48.556195 ], [ 124.579122, 48.596582 ], [ 124.601912, 48.632587 ], [ 124.624702, 48.701755 ], [ 124.612383, 48.747945 ], [ 124.656115, 48.783842 ], [ 124.644412, 48.80789 ], [ 124.654267, 48.83429 ], [ 124.697383, 48.841775 ], [ 124.715861, 48.885475 ], [ 124.709086, 48.920487 ], [ 124.744194, 48.920487 ], [ 124.756513, 48.967262 ], [ 124.808252, 49.020666 ], [ 124.828578, 49.077933 ], [ 124.809484, 49.115943 ], [ 124.847672, 49.129651 ], [ 124.860607, 49.166448 ], [ 124.906802, 49.184054 ], [ 124.983179, 49.162535 ], [ 125.039845, 49.17623 ], [ 125.034302, 49.157056 ], [ 125.117453, 49.126127 ], [ 125.158721, 49.144921 ], [ 125.187671, 49.186792 ], [ 125.219699, 49.189139 ], [ 125.233866, 49.255587 ], [ 125.214772, 49.277066 ], [ 125.261583, 49.322336 ], [ 125.256656, 49.359769 ], [ 125.277598, 49.379644 ], [ 125.25604, 49.395227 ], [ 125.256656, 49.437275 ], [ 125.270822, 49.454395 ], [ 125.228323, 49.487063 ], [ 125.211076, 49.539908 ], [ 125.233866, 49.536801 ], [ 125.23017, 49.595411 ], [ 125.205533, 49.593859 ], [ 125.16796, 49.629923 ], [ 125.15441, 49.616741 ], [ 125.127308, 49.655113 ], [ 125.132236, 49.672157 ], [ 125.164881, 49.669446 ], [ 125.189518, 49.652401 ], [ 125.185207, 49.634574 ], [ 125.219699, 49.669058 ], [ 125.225243, 49.726349 ], [ 125.204301, 49.734086 ], [ 125.221547, 49.754969 ], [ 125.222779, 49.799026 ], [ 125.177815, 49.829533 ], [ 125.239409, 49.844587 ], [ 125.225243, 49.867351 ], [ 125.245569, 49.87198 ], [ 125.212924, 49.907452 ], [ 125.225859, 49.922481 ], [ 125.199373, 49.935194 ], [ 125.190134, 49.959841 ], [ 125.231402, 49.957531 ], [ 125.241873, 49.987938 ], [ 125.278214, 49.996402 ], [ 125.297924, 50.014481 ], [ 125.283757, 50.036012 ], [ 125.25296, 50.041393 ], [ 125.289916, 50.057917 ], [ 125.315786, 50.04562 ], [ 125.328105, 50.065985 ], [ 125.283757, 50.070211 ], [ 125.287453, 50.093636 ], [ 125.258504, 50.103618 ], [ 125.27883, 50.127411 ], [ 125.311474, 50.140453 ], [ 125.376148, 50.137385 ], [ 125.335496, 50.161161 ], [ 125.382923, 50.172278 ], [ 125.39093, 50.199868 ], [ 125.417416, 50.195654 ], [ 125.448829, 50.216338 ], [ 125.442053, 50.260357 ], [ 125.466075, 50.266861 ], [ 125.463611, 50.295925 ], [ 125.530749, 50.331085 ], [ 125.520278, 50.3498 ], [ 125.546763, 50.358965 ], [ 125.522126, 50.404759 ], [ 125.536292, 50.420014 ], [ 125.567089, 50.402852 ], [ 125.583104, 50.409717 ], [ 125.562162, 50.438314 ], [ 125.580024, 50.449366 ], [ 125.627451, 50.443268 ], [ 125.654553, 50.471082 ], [ 125.699516, 50.487078 ], [ 125.740784, 50.523237 ], [ 125.754335, 50.506874 ], [ 125.770349, 50.531227 ], [ 125.794987, 50.532748 ], [ 125.829479, 50.56165 ], [ 125.807921, 50.60383 ], [ 125.814697, 50.62092 ], [ 125.793139, 50.643316 ], [ 125.804226, 50.658874 ], [ 125.789443, 50.679735 ], [ 125.825784, 50.70362 ], [ 125.78082, 50.725598 ], [ 125.795603, 50.738856 ], [ 125.758646, 50.746809 ], [ 125.804226, 50.773309 ], [ 125.828863, 50.756654 ], [ 125.846726, 50.769524 ], [ 125.836255, 50.793363 ], [ 125.890457, 50.805845 ], [ 125.878138, 50.816812 ], [ 125.913247, 50.825885 ], [ 125.939732, 50.85423 ], [ 125.961906, 50.901054 ], [ 125.997631, 50.872738 ], [ 125.996399, 50.906715 ], [ 126.02042, 50.927466 ], [ 126.042594, 50.92558 ], [ 126.068464, 50.967434 ], [ 126.041978, 50.981753 ], [ 126.033971, 51.011132 ], [ 126.059225, 51.043503 ], [ 125.976073, 51.084498 ], [ 125.993935, 51.119072 ], [ 125.970529, 51.123955 ], [ 125.946508, 51.108176 ], [ 125.909551, 51.138977 ], [ 125.864588, 51.146487 ], [ 125.850421, 51.21364 ], [ 125.819008, 51.227134 ], [ 125.761726, 51.226385 ], [ 125.76111, 51.261976 ], [ 125.76111, 51.261976 ], [ 125.740784, 51.27583 ], [ 125.740784, 51.27583 ], [ 125.700132, 51.327465 ], [ 125.700132, 51.327465 ], [ 125.626219, 51.380163 ], [ 125.626219, 51.380163 ], [ 125.623756, 51.387633 ], [ 125.623756, 51.387633 ], [ 125.62314, 51.398089 ], [ 125.62314, 51.398089 ], [ 125.600966, 51.410409 ], [ 125.600966, 51.410409 ], [ 125.60035, 51.413396 ], [ 125.60035, 51.413396 ], [ 125.595422, 51.416755 ], [ 125.595422, 51.416755 ], [ 125.559082, 51.461521 ], [ 125.559082, 51.461521 ], [ 125.528285, 51.488359 ], [ 125.424807, 51.562827 ], [ 125.38046, 51.585516 ], [ 125.35151, 51.623801 ], [ 125.316402, 51.610052 ], [ 125.289301, 51.633831 ], [ 125.228938, 51.640517 ], [ 125.214772, 51.627888 ], [ 125.175968, 51.639403 ], [ 125.130388, 51.635317 ], [ 125.12854, 51.659083 ], [ 125.098975, 51.658341 ], [ 125.060171, 51.59667 ], [ 125.073106, 51.553526 ], [ 125.047236, 51.529704 ], [ 125.004737, 51.529332 ], [ 124.983795, 51.508478 ], [ 124.928976, 51.498419 ], [ 124.917889, 51.474196 ], [ 124.942527, 51.447349 ], [ 124.885244, 51.40817 ], [ 124.864302, 51.37979 ], [ 124.783614, 51.392115 ], [ 124.76452, 51.38726 ], [ 124.752817, 51.35812 ], [ 124.693687, 51.3327 ], [ 124.62655, 51.327465 ], [ 124.58713, 51.363725 ], [ 124.555717, 51.375307 ], [ 124.490427, 51.380537 ], [ 124.478108, 51.36223 ], [ 124.443616, 51.35812 ], [ 124.426985, 51.331953 ], [ 124.430065, 51.301281 ], [ 124.406659, 51.272086 ], [ 124.339522, 51.293422 ], [ 124.297638, 51.298661 ], [ 124.271769, 51.308389 ], [ 124.239124, 51.344664 ], [ 124.192313, 51.33943 ], [ 124.128255, 51.347281 ], [ 124.090067, 51.3413 ], [ 124.071588, 51.320734 ], [ 123.994596, 51.322604 ], [ 123.939777, 51.313253 ], [ 123.926227, 51.300532 ], [ 123.887423, 51.320734 ], [ 123.842459, 51.367462 ], [ 123.794416, 51.361109 ], [ 123.711264, 51.398089 ], [ 123.660141, 51.342795 ], [ 123.661989, 51.319237 ], [ 123.582533, 51.306893 ], [ 123.582533, 51.294545 ], [ 123.46304, 51.286686 ], [ 123.440251, 51.270963 ], [ 123.414381, 51.278825 ], [ 123.376809, 51.266844 ], [ 123.339853, 51.27246 ], [ 123.294273, 51.254111 ], [ 123.231447, 51.268716 ], [ 123.231447, 51.279199 ], [ 123.127969, 51.297913 ], [ 123.069455, 51.321108 ], [ 123.002934, 51.31213 ], [ 122.965977, 51.345786 ], [ 122.965977, 51.386886 ], [ 122.946267, 51.405183 ], [ 122.903768, 51.415262 ], [ 122.900072, 51.445112 ], [ 122.871123, 51.455181 ], [ 122.854492, 51.477551 ], [ 122.880362, 51.511085 ], [ 122.858804, 51.524864 ], [ 122.880362, 51.537894 ], [ 122.874202, 51.561339 ], [ 122.832935, 51.581797 ], [ 122.85634, 51.606707 ], [ 122.820616, 51.633088 ], [ 122.816304, 51.655371 ], [ 122.778732, 51.698048 ], [ 122.749167, 51.746613 ], [ 122.771957, 51.779579 ], [ 122.732536, 51.832495 ], [ 122.725761, 51.87833 ], [ 122.706051, 51.890151 ], [ 122.729457, 51.919321 ], [ 122.726377, 51.978709 ], [ 122.683877, 51.974654 ], [ 122.664783, 51.99861 ], [ 122.650616, 52.058997 ], [ 122.625363, 52.067459 ], [ 122.643841, 52.111585 ], [ 122.629059, 52.13657 ], [ 122.690653, 52.140243 ], [ 122.73808, 52.153464 ], [ 122.769493, 52.179893 ], [ 122.766413, 52.232705 ], [ 122.787355, 52.252494 ], [ 122.76087, 52.26678 ], [ 122.710979, 52.256157 ], [ 122.67895, 52.276667 ], [ 122.585943, 52.266413 ], [ 122.560689, 52.282526 ], [ 122.478153, 52.29607 ], [ 122.484313, 52.341432 ], [ 122.447356, 52.394052 ], [ 122.419023, 52.375057 ], [ 122.378987, 52.395512 ], [ 122.367284, 52.413768 ], [ 122.342031, 52.414133 ], [ 122.326016, 52.459374 ], [ 122.310618, 52.475416 ], [ 122.207756, 52.469218 ], [ 122.178191, 52.48963 ], [ 122.168952, 52.513674 ], [ 122.140003, 52.510032 ], [ 122.142467, 52.495096 ], [ 122.107358, 52.452445 ], [ 122.080873, 52.440407 ], [ 122.091344, 52.427272 ], [ 122.040837, 52.413038 ], [ 122.035909, 52.377615 ], [ 121.976779, 52.343626 ], [ 121.94783, 52.298266 ], [ 121.901018, 52.280695 ], [ 121.841272, 52.282526 ], [ 121.769207, 52.308147 ], [ 121.714389, 52.318025 ], [ 121.715621, 52.342894 ], [ 121.658338, 52.3904 ], [ 121.678664, 52.419973 ], [ 121.63986, 52.44442 ], [ 121.590585, 52.443326 ], [ 121.565331, 52.460468 ], [ 121.519136, 52.456821 ], [ 121.495114, 52.484892 ], [ 121.474172, 52.482706 ], [ 121.416274, 52.499468 ], [ 121.411963, 52.52205 ], [ 121.353448, 52.534793 ], [ 121.323883, 52.573727 ], [ 121.280151, 52.586819 ], [ 121.225333, 52.577364 ], [ 121.182217, 52.59918 ], [ 121.237036, 52.619167 ], [ 121.29247, 52.651855 ], [ 121.309717, 52.676173 ], [ 121.373158, 52.683067 ], [ 121.455078, 52.73528 ], [ 121.476636, 52.772225 ], [ 121.511129, 52.779104 ], [ 121.537614, 52.801542 ], [ 121.591201, 52.824693 ], [ 121.620766, 52.853251 ], [ 121.604136, 52.872401 ], [ 121.610295, 52.892264 ], [ 121.66265, 52.912478 ], [ 121.677432, 52.948192 ], [ 121.715621, 52.997926 ], [ 121.785838, 53.018451 ], [ 121.817867, 53.061631 ], [ 121.775367, 53.089674 ], [ 121.784606, 53.104408 ], [ 121.753193, 53.147501 ], [ 121.722396, 53.145706 ], [ 121.665114, 53.170467 ], [ 121.660186, 53.195213 ], [ 121.67928, 53.199515 ], [ 121.679896, 53.240722 ], [ 121.642324, 53.262564 ], [ 121.615222, 53.258984 ], [ 121.575802, 53.29155 ], [ 121.504969, 53.323018 ], [ 121.499426, 53.337314 ], [ 121.589969, 53.350891 ], [ 121.697758, 53.392666 ], [ 121.754425, 53.389454 ], [ 121.816019, 53.41336 ], [ 121.875765, 53.426556 ], [ 122.026054, 53.428339 ], [ 122.077177, 53.422277 ], [ 122.111054, 53.426913 ], [ 122.161561, 53.468614 ], [ 122.227466, 53.461845 ], [ 122.266886, 53.470039 ], [ 122.350038, 53.505647 ], [ 122.37406, 53.47467 ], [ 122.435038, 53.444739 ], [ 122.496016, 53.458638 ], [ 122.5379, 53.453293 ], [ 122.608117, 53.465408 ], [ 122.673406, 53.459351 ], [ 122.763949, 53.463626 ], [ 122.826775, 53.457213 ], [ 122.894528, 53.462914 ], [ 122.943804, 53.483929 ], [ 123.052209, 53.506715 ], [ 123.093477, 53.508138 ], [ 123.137209, 53.498172 ], [ 123.179092, 53.509918 ], [ 123.231447, 53.549404 ], [ 123.274563, 53.563269 ], [ 123.309672, 53.56078 ], [ 123.394055, 53.538024 ], [ 123.454417, 53.536602 ], [ 123.47228, 53.509206 ], [ 123.499381, 53.497816 ], [ 123.510468, 53.509206 ], [ 123.490758, 53.542648 ], [ 123.517243, 53.558292 ], [ 123.546808, 53.551537 ], [ 123.557895, 53.531978 ], [ 123.53141, 53.507071 ], [ 123.569598, 53.505291 ], [ 123.58746, 53.546915 ], [ 123.620721, 53.550115 ], [ 123.668764, 53.533756 ], [ 123.698329, 53.498528 ], [ 123.746373, 53.500308 ], [ 123.797495, 53.489983 ], [ 123.865249, 53.489627 ], [ 123.985973, 53.434401 ], [ 124.01369, 53.403371 ], [ 124.058038, 53.404085 ], [ 124.125791, 53.348033 ], [ 124.19416, 53.37339 ], [ 124.239124, 53.379817 ], [ 124.327819, 53.331954 ], [ 124.375863, 53.258984 ], [ 124.412203, 53.248601 ], [ 124.435609, 53.223886 ], [ 124.487348, 53.217436 ], [ 124.496587, 53.207759 ], [ 124.563108, 53.201666 ], [ 124.590209, 53.208476 ], [ 124.678905, 53.207043 ], [ 124.720789, 53.192344 ], [ 124.712165, 53.162574 ], [ 124.734339, 53.146783 ], [ 124.787926, 53.140681 ], [ 124.832889, 53.145347 ], [ 124.87231, 53.099018 ], [ 124.909266, 53.118059 ], [ 124.887708, 53.164368 ], [ 124.970244, 53.194137 ], [ 125.038613, 53.202741 ], [ 125.142091, 53.204175 ], [ 125.195062, 53.198439 ], [ 125.252344, 53.18051 ], [ 125.315786, 53.144989 ], [ 125.343503, 53.14463 ], [ 125.452524, 53.107641 ], [ 125.503647, 53.095424 ], [ 125.504263, 53.061271 ], [ 125.530749, 53.0512 ], [ 125.588647, 53.081047 ], [ 125.613901, 53.083564 ], [ 125.640386, 53.06199 ], [ 125.643466, 53.039686 ], [ 125.684118, 53.00801 ], [ 125.742632, 52.993964 ], [ 125.737088, 52.943504 ], [ 125.665023, 52.913561 ], [ 125.666871, 52.869872 ], [ 125.678574, 52.86084 ], [ 125.722306, 52.880347 ], [ 125.751255, 52.88143 ], [ 125.772197, 52.89804 ], [ 125.827631, 52.899123 ], [ 125.854117, 52.891542 ], [ 125.855349, 52.866259 ], [ 125.923718, 52.815651 ], [ 125.937269, 52.786705 ], [ 125.966834, 52.759914 ], [ 125.985312, 52.758465 ], [ 126.02042, 52.795753 ], [ 126.052449, 52.800095 ], [ 126.116507, 52.768243 ], [ 126.112195, 52.757016 ], [ 126.044442, 52.739628 ], [ 126.072775, 52.691048 ], [ 126.061688, 52.673271 ], [ 125.995783, 52.675085 ], [ 125.971145, 52.654033 ], [ 125.968682, 52.630429 ], [ 125.989008, 52.603178 ], [ 126.030891, 52.576273 ], [ 126.055529, 52.582455 ], [ 126.066616, 52.603905 ], [ 126.147304, 52.573 ], [ 126.213209, 52.525327 ], [ 126.192883, 52.492181 ], [ 126.205202, 52.466302 ], [ 126.268644, 52.475051 ], [ 126.326542, 52.424353 ], [ 126.353644, 52.389304 ], [ 126.348716, 52.357882 ], [ 126.320999, 52.342163 ], [ 126.327774, 52.310342 ], [ 126.4331, 52.298632 ], [ 126.436795, 52.277034 ], [ 126.401071, 52.279597 ], [ 126.357955, 52.264216 ], [ 126.312992, 52.235271 ], [ 126.306832, 52.205574 ], [ 126.34502, 52.192002 ], [ 126.403535, 52.185031 ], [ 126.457121, 52.165212 ], [ 126.499005, 52.16044 ], [ 126.556288, 52.136203 ], [ 126.563679, 52.119302 ], [ 126.514404, 52.037282 ], [ 126.487918, 52.041699 ], [ 126.450962, 52.027709 ], [ 126.447882, 52.009294 ], [ 126.468208, 51.982395 ], [ 126.462665, 51.948471 ], [ 126.510092, 51.922274 ], [ 126.555056, 51.874266 ], [ 126.580925, 51.824728 ], [ 126.622809, 51.777357 ], [ 126.658534, 51.762544 ], [ 126.6727, 51.73179 ], [ 126.724439, 51.7266 ], [ 126.734294, 51.711399 ], [ 126.723823, 51.679126 ], [ 126.741069, 51.642374 ], [ 126.67886, 51.602246 ], [ 126.69549, 51.57845 ], [ 126.837156, 51.536033 ], [ 126.843931, 51.521885 ], [ 126.812518, 51.493948 ], [ 126.784185, 51.448095 ], [ 126.791577, 51.432428 ], [ 126.835308, 51.413769 ], [ 126.908605, 51.407423 ], [ 126.930163, 51.359241 ], [ 126.904293, 51.340552 ], [ 126.837156, 51.345038 ], [ 126.813134, 51.311756 ], [ 126.820526, 51.281071 ], [ 126.863025, 51.248492 ], [ 126.908605, 51.246619 ], [ 126.92154, 51.259729 ], [ 126.908605, 51.283691 ], [ 126.877808, 51.300906 ], [ 126.887047, 51.321856 ], [ 126.970815, 51.332327 ], [ 126.98375, 51.318863 ], [ 126.976358, 51.291551 ], [ 126.926467, 51.246244 ], [ 126.899982, 51.200518 ], [ 126.917844, 51.138977 ], [ 126.922772, 51.061937 ], [ 126.985597, 51.029202 ], [ 127.052119, 50.962911 ], [ 127.113713, 50.93765 ], [ 127.143894, 50.910111 ], [ 127.236285, 50.781256 ], [ 127.295415, 50.755139 ], [ 127.305886, 50.733932 ], [ 127.28864, 50.699451 ], [ 127.294799, 50.663426 ], [ 127.370559, 50.581415 ], [ 127.36132, 50.547582 ], [ 127.323132, 50.52552 ], [ 127.293567, 50.46575 ], [ 127.30527, 50.45432 ], [ 127.3644, 50.438314 ], [ 127.369944, 50.403996 ], [ 127.332371, 50.340634 ], [ 127.371791, 50.29669 ], [ 127.44632, 50.270686 ], [ 127.603385, 50.239309 ], [ 127.60708, 50.178794 ], [ 127.58737, 50.137768 ], [ 127.501755, 50.056764 ], [ 127.495595, 49.994479 ], [ 127.543638, 49.944438 ], [ 127.547334, 49.928645 ], [ 127.529472, 49.864265 ], [ 127.531936, 49.826059 ], [ 127.583059, 49.786277 ], [ 127.653892, 49.780094 ], [ 127.674833, 49.764247 ], [ 127.677913, 49.697712 ], [ 127.705015, 49.665185 ], [ 127.782007, 49.630698 ], [ 127.815268, 49.593859 ], [ 127.897804, 49.579116 ], [ 127.949542, 49.596187 ], [ 128.001281, 49.592307 ], [ 128.070882, 49.556604 ], [ 128.122005, 49.55311 ], [ 128.185447, 49.53952 ], [ 128.243345, 49.563203 ], [ 128.287077, 49.566309 ], [ 128.343128, 49.544956 ], [ 128.389939, 49.58998 ], [ 128.500192, 49.593859 ], [ 128.537764, 49.604332 ], [ 128.619684, 49.593471 ], [ 128.656025, 49.577564 ], [ 128.715155, 49.564756 ], [ 128.744104, 49.595023 ], [ 128.802618, 49.58222 ], [ 128.813089, 49.558157 ], [ 128.763198, 49.515824 ], [ 128.76135, 49.482009 ], [ 128.792147, 49.473065 ], [ 128.871604, 49.492506 ], [ 128.932582, 49.46801 ], [ 129.013886, 49.457119 ], [ 129.061929, 49.374189 ], [ 129.084719, 49.359769 ], [ 129.143849, 49.357431 ], [ 129.180805, 49.386657 ], [ 129.215298, 49.399122 ], [ 129.266421, 49.396006 ], [ 129.320623, 49.3586 ], [ 129.358196, 49.355871 ], [ 129.379138, 49.367175 ], [ 129.374826, 49.414309 ], [ 129.390224, 49.432605 ], [ 129.448739, 49.441167 ], [ 129.51834, 49.423652 ], [ 129.546057, 49.395227 ], [ 129.562687, 49.299706 ], [ 129.604571, 49.279018 ], [ 129.696962, 49.298535 ], [ 129.730223, 49.288387 ], [ 129.761636, 49.25754 ], [ 129.753629, 49.208692 ], [ 129.784426, 49.184054 ], [ 129.847867, 49.181316 ], [ 129.864498, 49.158621 ], [ 129.855259, 49.133567 ], [ 129.866962, 49.113985 ], [ 129.913157, 49.1085 ], [ 129.934715, 49.078717 ], [ 129.9187, 49.060681 ], [ 129.937179, 49.040285 ], [ 130.020946, 49.021058 ], [ 130.059135, 48.979047 ], [ 130.113337, 48.956653 ], [ 130.219895, 48.893739 ], [ 130.237757, 48.868551 ], [ 130.279641, 48.866976 ], [ 130.412068, 48.905148 ], [ 130.471198, 48.905541 ], [ 130.501995, 48.865795 ], [ 130.559277, 48.861071 ], [ 130.609168, 48.881146 ], [ 130.680617, 48.881146 ], [ 130.689856, 48.849651 ], [ 130.622103, 48.783842 ], [ 130.576524, 48.688719 ], [ 130.538951, 48.635751 ], [ 130.538335, 48.612016 ], [ 130.605473, 48.594207 ], [ 130.615944, 48.575601 ], [ 130.620871, 48.49595 ], [ 130.647357, 48.484844 ], [ 130.711414, 48.511414 ], [ 130.767465, 48.507846 ], [ 130.776704, 48.480084 ], [ 130.745907, 48.449131 ], [ 130.747755, 48.404256 ], [ 130.785327, 48.357353 ], [ 130.81982, 48.341444 ], [ 130.845073, 48.296473 ], [ 130.817972, 48.265409 ], [ 130.787791, 48.256643 ], [ 130.769313, 48.231136 ], [ 130.765617, 48.18926 ], [ 130.673842, 48.12818 ], [ 130.666451, 48.105007 ], [ 130.699711, 48.044227 ], [ 130.737284, 48.034223 ], [ 130.770544, 47.998194 ], [ 130.870943, 47.943301 ], [ 130.891269, 47.927263 ], [ 130.961486, 47.828118 ], [ 130.966413, 47.733211 ], [ 130.983659, 47.713081 ], [ 131.029855, 47.694555 ], [ 131.115471, 47.689721 ], [ 131.183224, 47.702611 ], [ 131.236811, 47.733211 ], [ 131.273767, 47.738846 ], [ 131.359998, 47.730796 ], [ 131.456085, 47.747297 ], [ 131.543548, 47.736028 ], [ 131.559563, 47.724757 ], [ 131.568186, 47.682469 ], [ 131.59036, 47.660707 ], [ 131.641483, 47.663932 ], [ 131.690142, 47.707041 ], [ 131.741881, 47.706638 ], [ 131.825649, 47.677231 ], [ 131.900793, 47.685692 ], [ 131.976554, 47.673201 ], [ 132.000575, 47.712276 ], [ 132.086191, 47.703013 ], [ 132.157024, 47.70543 ], [ 132.19706, 47.714289 ], [ 132.242639, 47.70986 ], [ 132.272205, 47.718718 ], [ 132.288835, 47.742065 ], [ 132.325175, 47.762184 ], [ 132.371987, 47.765402 ], [ 132.469305, 47.726368 ], [ 132.558, 47.718316 ], [ 132.6005, 47.740858 ], [ 132.599268, 47.792347 ], [ 132.621442, 47.82852 ], [ 132.662094, 47.854227 ], [ 132.687348, 47.88514 ], [ 132.662094, 47.922451 ], [ 132.661478, 47.944905 ], [ 132.691043, 47.962941 ], [ 132.723072, 47.962941 ], [ 132.769268, 47.93849 ], [ 132.819159, 47.936887 ], [ 132.883216, 48.002599 ], [ 132.992238, 48.035424 ], [ 133.016259, 48.054228 ], [ 133.02673, 48.085421 ], [ 133.053216, 48.110202 ], [ 133.130208, 48.134971 ], [ 133.182563, 48.135769 ], [ 133.239845, 48.126583 ], [ 133.302055, 48.103009 ], [ 133.407997, 48.124585 ], [ 133.451728, 48.112999 ], [ 133.545967, 48.121389 ], [ 133.573068, 48.182078 ], [ 133.59709, 48.194846 ], [ 133.667307, 48.183275 ], [ 133.693177, 48.186866 ], [ 133.740604, 48.254651 ], [ 133.791111, 48.261026 ], [ 133.824372, 48.277359 ], [ 133.876111, 48.282536 ], [ 133.940784, 48.302047 ], [ 133.995603, 48.303639 ], [ 134.029479, 48.327519 ], [ 134.0689, 48.338659 ], [ 134.116327, 48.333089 ], [ 134.150819, 48.346217 ], [ 134.20379, 48.3824 ], [ 134.369478, 48.382797 ], [ 134.438463, 48.405448 ], [ 134.501905, 48.418954 ], [ 134.578281, 48.405448 ], [ 134.696542, 48.407037 ], [ 134.764295, 48.370076 ], [ 134.820961, 48.37604 ], [ 134.848679, 48.393925 ], [ 134.886867, 48.437618 ], [ 134.927519, 48.451513 ], [ 134.996504, 48.439603 ], [ 135.035924, 48.440795 ], [ 135.068569, 48.459451 ], [ 135.09567, 48.437618 ], [ 135.090743, 48.403461 ], [ 135.009439, 48.365703 ], [ 134.864077, 48.332293 ], [ 134.77107, 48.288908 ], [ 134.679295, 48.256245 ], [ 134.67252, 48.170505 ], [ 134.632484, 48.099412 ], [ 134.551796, 48.032622 ], [ 134.55426, 47.982173 ], [ 134.599839, 47.947711 ], [ 134.607846, 47.909214 ], [ 134.658969, 47.901191 ], [ 134.677448, 47.884738 ], [ 134.670056, 47.864667 ], [ 134.678679, 47.819278 ], [ 134.772918, 47.763391 ], [ 134.779694, 47.7159 ], [ 134.689766, 47.63813 ], [ 134.678064, 47.588507 ], [ 134.627556, 47.546512 ], [ 134.576434, 47.519036 ], [ 134.568426, 47.478199 ], [ 134.522847, 47.468086 ], [ 134.490202, 47.446235 ], [ 134.339297, 47.439759 ], [ 134.307268, 47.428829 ], [ 134.266616, 47.391974 ], [ 134.263536, 47.371307 ], [ 134.203174, 47.347389 ], [ 134.177305, 47.326299 ], [ 134.156979, 47.248357 ], [ 134.210566, 47.210155 ], [ 134.230276, 47.182097 ], [ 134.232739, 47.134892 ], [ 134.222268, 47.105164 ], [ 134.142812, 47.093349 ], [ 134.118175, 47.061968 ], [ 134.10216, 47.005678 ], [ 134.063972, 46.979962 ], [ 134.076291, 46.938298 ], [ 134.042414, 46.886787 ], [ 134.041182, 46.848326 ], [ 134.025168, 46.810657 ], [ 134.052885, 46.779928 ], [ 134.033175, 46.759023 ], [ 134.030711, 46.708981 ], [ 134.011001, 46.637941 ], [ 133.919842, 46.596012 ], [ 133.890893, 46.525235 ], [ 133.849625, 46.475389 ], [ 133.852089, 46.450242 ], [ 133.902596, 46.446119 ], [ 133.948791, 46.401153 ], [ 133.940784, 46.38134 ], [ 133.876726, 46.362345 ], [ 133.869335, 46.338386 ], [ 133.922922, 46.330948 ], [ 133.908139, 46.308216 ], [ 133.91861, 46.280924 ], [ 133.909987, 46.254447 ], [ 133.867487, 46.250722 ], [ 133.87919, 46.233752 ], [ 133.849625, 46.203939 ], [ 133.814517, 46.230854 ], [ 133.794807, 46.193583 ], [ 133.764626, 46.17328 ], [ 133.706111, 46.163333 ], [ 133.690713, 46.133896 ], [ 133.745531, 46.075389 ], [ 133.740604, 46.048812 ], [ 133.681474, 45.986473 ], [ 133.676546, 45.94321 ], [ 133.614952, 45.942794 ], [ 133.618032, 45.903662 ], [ 133.583539, 45.868669 ], [ 133.55459, 45.893249 ], [ 133.51209, 45.887001 ], [ 133.491764, 45.867002 ], [ 133.494228, 45.840325 ], [ 133.467743, 45.834905 ], [ 133.469591, 45.799451 ], [ 133.505315, 45.785681 ], [ 133.469591, 45.777751 ], [ 133.486837, 45.740173 ], [ 133.454192, 45.731819 ], [ 133.445569, 45.705077 ], [ 133.484989, 45.691702 ], [ 133.485605, 45.658667 ], [ 133.448649, 45.647372 ], [ 133.471438, 45.631053 ], [ 133.412924, 45.618079 ], [ 133.423395, 45.584163 ], [ 133.393214, 45.580393 ], [ 133.342707, 45.554836 ], [ 133.333468, 45.562379 ], [ 133.246005, 45.517528 ], [ 133.201657, 45.515431 ], [ 133.170244, 45.465506 ], [ 133.164701, 45.437377 ], [ 133.143759, 45.430658 ], [ 133.144991, 45.367205 ], [ 133.119121, 45.352908 ], [ 133.128976, 45.336924 ], [ 133.097563, 45.281788 ], [ 133.109266, 45.232077 ], [ 133.124665, 45.222805 ], [ 133.137599, 45.178105 ], [ 133.139447, 45.127459 ], [ 133.107418, 45.124504 ], [ 133.089556, 45.097473 ], [ 133.070462, 45.097051 ], [ 133.045824, 45.066203 ], [ 132.986078, 45.031109 ], [ 132.954049, 45.023072 ], [ 132.916477, 45.031109 ], [ 132.867202, 45.061976 ], [ 132.76434, 45.081417 ], [ 132.394161, 45.16376 ], [ 132.17427, 45.216903 ], [ 132.003655, 45.25441 ], [ 131.976554, 45.277156 ], [ 131.93159, 45.287683 ], [ 131.917423, 45.339448 ], [ 131.887858, 45.342393 ], [ 131.82996, 45.311677 ], [ 131.825649, 45.291472 ], [ 131.788692, 45.245984 ], [ 131.79362, 45.211844 ], [ 131.759127, 45.213952 ], [ 131.721555, 45.234606 ], [ 131.681519, 45.215217 ], [ 131.650722, 45.159962 ], [ 131.687678, 45.1511 ], [ 131.695685, 45.132104 ], [ 131.63286, 45.075078 ], [ 131.566338, 45.045487 ], [ 131.529382, 45.012073 ], [ 131.484418, 44.99557 ], [ 131.501664, 44.977793 ], [ 131.464708, 44.963397 ], [ 131.409889, 44.985836 ], [ 131.380324, 44.978216 ], [ 131.355071, 44.990068 ], [ 131.313803, 44.965938 ], [ 131.311955, 44.94688 ], [ 131.274999, 44.919766 ], [ 131.263296, 44.929935 ], [ 131.207861, 44.913833 ], [ 131.20355, 44.932901 ], [ 131.16105, 44.948151 ], [ 131.090217, 44.924427 ], [ 131.10192, 44.898997 ], [ 131.07913, 44.881614 ], [ 130.965181, 44.85065 ], [ 130.972573, 44.820094 ], [ 131.016304, 44.814575 ], [ 131.016304, 44.789521 ], [ 131.064348, 44.786973 ], [ 131.069275, 44.759783 ], [ 131.093297, 44.746183 ], [ 131.090833, 44.717272 ], [ 131.111775, 44.710042 ], [ 131.310723, 44.046623 ], [ 131.26576, 44.034578 ], [ 131.245434, 43.95579 ], [ 131.26268, 43.948897 ], [ 131.254057, 43.893289 ], [ 131.2171, 43.836334 ], [ 131.213405, 43.801357 ], [ 131.232499, 43.742585 ], [ 131.215869, 43.72745 ], [ 131.221412, 43.682024 ], [ 131.239274, 43.670337 ], [ 131.216485, 43.613169 ], [ 131.222028, 43.593234 ], [ 131.20047, 43.532089 ], [ 131.276847, 43.495632 ], [ 131.304564, 43.502144 ], [ 131.294093, 43.470012 ], [ 131.234963, 43.475224 ], [ 131.201086, 43.442209 ], [ 131.175217, 43.444816 ], [ 131.142572, 43.425695 ], [ 131.026775, 43.508655 ], [ 130.959638, 43.48608 ], [ 130.907283, 43.434387 ], [ 130.864167, 43.437863 ], [ 130.841378, 43.454374 ], [ 130.822899, 43.503446 ], [ 130.776704, 43.52341 ], [ 130.727429, 43.560284 ], [ 130.671378, 43.565054 ], [ 130.665835, 43.583698 ], [ 130.623335, 43.589767 ], [ 130.630726, 43.622268 ], [ 130.57098, 43.626167 ], [ 130.57098, 43.626167 ], [ 130.501995, 43.636563 ], [ 130.488444, 43.65605 ], [ 130.437937, 43.646091 ], [ 130.412684, 43.652586 ], [ 130.394206, 43.703227 ], [ 130.423155, 43.745179 ], [ 130.382503, 43.777164 ], [ 130.381887, 43.817768 ], [ 130.362793, 43.844967 ], [ 130.386198, 43.85403 ], [ 130.368336, 43.894151 ], [ 130.381887, 43.910106 ], [ 130.338155, 43.963975 ], [ 130.364025, 43.992399 ], [ 130.365256, 44.044042 ], [ 130.319061, 44.03974 ], [ 130.307358, 44.002731 ], [ 130.27225, 43.981634 ], [ 130.262395, 43.949328 ], [ 130.208192, 43.948466 ], [ 130.153373, 43.915711 ], [ 130.143518, 43.878624 ], [ 130.116417, 43.878192 ], [ 130.110873, 43.852735 ], [ 130.079461, 43.835039 ], [ 130.027722, 43.851872 ], [ 130.009243, 43.889407 ], [ 130.022794, 43.917866 ], [ 130.017867, 43.961821 ], [ 129.979062, 44.015644 ], [ 129.951345, 44.027263 ], [ 129.907614, 44.023821 ], [ 129.881128, 44.000148 ], [ 129.868193, 44.012631 ], [ 129.802904, 43.964837 ], [ 129.780114, 43.892857 ], [ 129.739462, 43.895876 ], [ 129.743158, 43.876035 ], [ 129.699426, 43.8838 ], [ 129.650767, 43.873016 ], [ 129.529427, 43.870427 ], [ 129.467833, 43.874741 ], [ 129.449971, 43.850578 ], [ 129.417942, 43.843672 ], [ 129.406855, 43.819496 ], [ 129.348341, 43.798333 ], [ 129.30892, 43.812155 ], [ 129.289826, 43.797038 ], [ 129.254718, 43.819496 ], [ 129.211602, 43.784509 ], [ 129.232544, 43.709284 ], [ 129.214066, 43.695006 ], [ 129.217146, 43.648689 ], [ 129.232544, 43.635263 ], [ 129.23008, 43.593234 ], [ 129.169102, 43.561585 ], [ 129.145081, 43.570258 ], [ 129.093958, 43.547706 ], [ 129.037907, 43.540332 ], [ 129.013886, 43.522976 ], [ 128.962763, 43.53903 ], [ 128.949828, 43.553779 ], [ 128.878379, 43.539898 ], [ 128.834647, 43.587599 ], [ 128.821097, 43.637429 ], [ 128.78722, 43.686784 ], [ 128.768126, 43.732207 ], [ 128.729322, 43.736964 ], [ 128.760119, 43.755554 ], [ 128.739177, 43.806972 ], [ 128.719467, 43.816905 ], [ 128.760734, 43.857482 ], [ 128.729938, 43.889838 ], [ 128.696061, 43.903207 ], [ 128.636315, 43.891132 ], [ 128.64001, 43.948035 ], [ 128.610445, 43.960529 ], [ 128.584576, 43.990246 ], [ 128.574721, 44.047914 ], [ 128.529141, 44.112401 ], [ 128.471859, 44.157501 ], [ 128.450301, 44.203423 ], [ 128.471859, 44.247596 ], [ 128.453997, 44.257884 ], [ 128.472475, 44.320001 ], [ 128.446605, 44.339694 ], [ 128.475555, 44.346114 ], [ 128.481714, 44.375637 ], [ 128.457076, 44.409848 ], [ 128.463236, 44.431647 ], [ 128.427511, 44.473512 ], [ 128.397946, 44.483761 ], [ 128.372693, 44.514495 ], [ 128.295084, 44.480772 ], [ 128.293237, 44.467961 ], [ 128.228563, 44.445748 ], [ 128.211317, 44.431647 ], [ 128.172512, 44.34697 ], [ 128.137404, 44.357668 ], [ 128.094904, 44.354673 ], [ 128.074578, 44.370075 ], [ 128.049941, 44.349965 ], [ 128.065339, 44.307155 ], [ 128.101679, 44.293449 ], [ 128.064107, 44.251454 ], [ 128.104143, 44.230017 ], [ 128.09244, 44.181539 ], [ 128.060411, 44.168663 ], [ 128.088129, 44.158359 ], [ 128.091208, 44.133022 ], [ 128.042549, 44.103807 ], [ 127.950158, 44.088334 ], [ 127.912586, 44.064687 ], [ 127.862695, 44.062967 ], [ 127.846065, 44.081886 ], [ 127.808492, 44.086615 ], [ 127.783239, 44.071997 ], [ 127.729036, 44.09908 ], [ 127.735811, 44.11412 ], [ 127.712406, 44.199133 ], [ 127.681609, 44.166946 ], [ 127.641573, 44.193555 ], [ 127.626174, 44.187977 ], [ 127.59045, 44.227872 ], [ 127.623711, 44.278025 ], [ 127.579363, 44.310581 ], [ 127.486356, 44.410275 ], [ 127.50853, 44.437202 ], [ 127.463566, 44.484615 ], [ 127.465414, 44.516628 ], [ 127.485124, 44.528576 ], [ 127.536247, 44.522176 ], [ 127.570124, 44.55033 ], [ 127.557189, 44.575488 ], [ 127.392733, 44.632158 ], [ 127.275705, 44.640249 ], [ 127.261538, 44.61299 ], [ 127.214111, 44.624917 ], [ 127.228893, 44.642804 ], [ 127.182082, 44.644507 ], [ 127.138966, 44.607451 ], [ 127.094619, 44.615972 ], [ 127.089691, 44.593816 ], [ 127.049655, 44.566961 ], [ 127.041648, 44.591258 ], [ 127.044112, 44.653874 ], [ 127.030561, 44.673454 ], [ 127.041032, 44.712169 ], [ 126.9973, 44.764882 ], [ 126.984366, 44.823914 ], [ 126.999764, 44.87398 ], [ 127.021938, 44.898997 ], [ 127.073061, 44.907051 ], [ 127.092771, 44.94688 ], [ 127.050271, 45.004034 ], [ 127.018242, 45.024341 ], [ 126.984981, 45.067893 ], [ 126.970815, 45.070852 ], [ 126.96404, 45.132104 ], [ 126.85625, 45.145613 ], [ 126.792808, 45.135481 ], [ 126.787265, 45.159118 ], [ 126.732446, 45.187385 ], [ 126.685635, 45.187807 ], [ 126.640055, 45.214373 ], [ 126.644983, 45.225334 ], [ 126.569222, 45.252725 ], [ 126.540273, 45.23882 ], [ 126.519331, 45.248091 ], [ 126.402919, 45.222805 ], [ 126.356107, 45.185698 ], [ 126.293282, 45.180214 ], [ 126.285274, 45.162494 ], [ 126.235383, 45.140125 ], [ 126.225528, 45.154054 ], [ 126.166398, 45.13337 ], [ 126.142992, 45.147723 ], [ 126.091869, 45.149411 ], [ 126.047522, 45.170933 ], [ 125.998247, 45.162072 ], [ 125.992703, 45.192447 ], [ 125.957595, 45.201303 ], [ 125.915095, 45.196664 ], [ 125.849805, 45.23882 ], [ 125.823936, 45.237978 ], [ 125.815929, 45.264942 ], [ 125.761726, 45.291472 ], [ 125.726001, 45.336503 ], [ 125.695205, 45.352066 ], [ 125.712451, 45.389485 ], [ 125.711835, 45.477677 ], [ 125.687813, 45.514173 ], [ 125.660096, 45.507043 ], [ 125.61698, 45.517947 ], [ 125.583104, 45.491942 ], [ 125.497488, 45.469283 ], [ 125.480242, 45.486488 ], [ 125.424807, 45.485649 ], [ 125.434662, 45.462988 ], [ 125.398322, 45.416797 ], [ 125.361981, 45.392847 ], [ 125.319482, 45.422678 ], [ 125.301619, 45.402092 ], [ 125.248649, 45.417637 ], [ 125.189518, 45.39915 ], [ 125.137779, 45.409655 ], [ 125.097127, 45.38276 ], [ 125.06633, 45.39915 ], [ 125.08912, 45.420998 ], [ 125.0497, 45.428558 ], [ 125.025678, 45.493201 ], [ 124.961005, 45.495299 ], [ 124.936983, 45.53388 ], [ 124.911114, 45.535976 ], [ 124.884628, 45.495299 ], [ 124.886476, 45.442836 ], [ 124.839665, 45.455852 ], [ 124.792853, 45.436958 ], [ 124.776223, 45.468024 ], [ 124.729412, 45.444096 ], [ 124.690607, 45.452493 ], [ 124.625318, 45.437377 ], [ 124.575427, 45.451234 ], [ 124.579738, 45.424358 ], [ 124.544014, 45.411756 ], [ 124.507058, 45.424778 ], [ 124.480572, 45.456271 ], [ 124.398652, 45.440737 ], [ 124.374015, 45.45795 ], [ 124.352457, 45.496557 ], [ 124.369087, 45.512915 ], [ 124.348761, 45.546874 ], [ 124.287783, 45.539329 ], [ 124.264377, 45.555256 ], [ 124.273001, 45.584163 ], [ 124.238508, 45.591702 ], [ 124.226805, 45.633564 ], [ 124.162132, 45.616404 ], [ 124.128255, 45.641933 ], [ 124.147349, 45.665359 ], [ 124.122096, 45.669123 ], [ 124.13503, 45.690448 ], [ 124.10177, 45.700898 ], [ 124.098074, 45.722628 ], [ 124.054342, 45.751449 ], [ 124.014922, 45.749779 ], [ 124.001987, 45.770655 ], [ 124.064197, 45.802372 ], [ 124.03648, 45.83824 ], [ 124.067277, 45.840325 ], [ 124.061118, 45.886168 ], [ 123.996444, 45.906993 ], [ 123.968727, 45.936551 ], [ 123.973654, 45.973997 ], [ 124.011842, 45.981899 ], [ 123.989053, 46.011833 ], [ 124.040176, 46.01973 ], [ 124.034016, 46.045074 ], [ 124.009995, 46.057534 ], [ 124.015538, 46.088257 ], [ 123.99398, 46.101123 ], [ 124.01677, 46.118549 ], [ 123.991516, 46.143019 ], [ 124.001987, 46.166649 ], [ 123.971806, 46.170379 ], [ 123.956408, 46.206009 ], [ 123.979814, 46.228784 ], [ 123.952096, 46.256516 ], [ 123.960103, 46.288369 ], [ 123.936082, 46.286715 ], [ 123.917604, 46.25693 ], [ 123.896046, 46.303668 ], [ 123.84985, 46.302428 ], [ 123.775938, 46.263136 ], [ 123.726047, 46.255688 ], [ 123.673692, 46.258585 ], [ 123.604706, 46.251964 ], [ 123.569598, 46.223816 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "310000", "name": "上海市", "center": [ 121.472644, 31.231706 ], "centroid": [ 121.438734, 31.07256 ], "childrenNum": 16, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 8, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 120.901349, 31.017327 ], [ 120.890878, 31.094229 ], [ 120.859465, 31.100379 ], [ 120.881023, 31.134706 ], [ 120.930298, 31.141365 ], [ 121.018377, 31.134194 ], [ 121.076892, 31.158267 ], [ 121.060261, 31.245289 ], [ 121.090442, 31.291838 ], [ 121.138485, 31.276495 ], [ 121.160659, 31.283144 ], [ 121.129862, 31.302577 ], [ 121.130478, 31.343987 ], [ 121.113848, 31.37465 ], [ 121.143413, 31.392021 ], [ 121.174826, 31.44922 ], [ 121.240731, 31.493627 ], [ 121.247507, 31.476785 ], [ 121.301093, 31.49873 ], [ 121.301093, 31.49873 ], [ 121.343593, 31.511996 ], [ 121.404571, 31.479337 ], [ 121.520984, 31.394575 ], [ 121.599208, 31.37465 ], [ 121.722396, 31.3036 ], [ 121.809859, 31.196669 ], [ 121.946598, 31.066039 ], [ 121.977395, 31.016301 ], [ 121.990945, 30.96859 ], [ 121.994025, 30.862823 ], [ 121.954605, 30.825828 ], [ 121.970004, 30.789333 ], [ 121.943518, 30.776993 ], [ 121.904714, 30.814007 ], [ 121.681128, 30.818633 ], [ 121.601056, 30.805269 ], [ 121.517288, 30.775451 ], [ 121.426129, 30.730192 ], [ 121.362071, 30.679764 ], [ 121.274608, 30.677191 ], [ 121.272144, 30.723504 ], [ 121.232108, 30.755909 ], [ 121.21671, 30.785734 ], [ 121.174826, 30.771851 ], [ 121.123087, 30.77905 ], [ 121.13787, 30.826342 ], [ 121.097833, 30.857171 ], [ 121.060261, 30.845354 ], [ 121.038087, 30.814007 ], [ 120.991892, 30.837133 ], [ 121.020225, 30.872069 ], [ 120.993124, 30.889532 ], [ 121.000515, 30.938309 ], [ 120.989428, 31.01425 ], [ 120.949392, 31.030148 ], [ 120.940153, 31.010146 ], [ 120.901349, 31.017327 ] ] ], [ [ [ 121.974931, 31.61704 ], [ 121.995873, 31.493117 ], [ 121.981706, 31.464024 ], [ 121.890547, 31.428795 ], [ 121.819098, 31.437987 ], [ 121.682976, 31.491075 ], [ 121.625693, 31.501792 ], [ 121.547469, 31.531382 ], [ 121.434136, 31.590535 ], [ 121.395332, 31.585437 ], [ 121.371926, 31.553314 ], [ 121.289391, 31.61653 ], [ 121.145261, 31.75403 ], [ 121.118775, 31.759119 ], [ 121.200079, 31.834907 ], [ 121.265369, 31.863883 ], [ 121.323267, 31.868458 ], [ 121.384861, 31.833382 ], [ 121.431673, 31.769295 ], [ 121.49881, 31.753012 ], [ 121.599824, 31.703128 ], [ 121.64294, 31.697527 ], [ 121.715005, 31.673592 ], [ 121.974931, 31.61704 ] ] ], [ [ [ 121.779062, 31.310247 ], [ 121.727939, 31.35472 ], [ 121.572107, 31.435944 ], [ 121.509897, 31.4824 ], [ 121.520984, 31.494137 ], [ 121.567179, 31.48342 ], [ 121.585657, 31.454836 ], [ 121.742106, 31.407345 ], [ 121.792613, 31.363408 ], [ 121.793845, 31.31945 ], [ 121.779062, 31.310247 ] ] ], [ [ [ 121.801852, 31.356765 ], [ 121.792613, 31.377715 ], [ 121.845584, 31.37465 ], [ 121.951525, 31.337343 ], [ 122.040837, 31.324051 ], [ 122.116597, 31.320984 ], [ 122.122756, 31.307179 ], [ 122.097503, 31.255522 ], [ 122.016199, 31.282121 ], [ 121.932431, 31.283144 ], [ 121.840656, 31.295418 ], [ 121.8037, 31.328652 ], [ 121.801852, 31.356765 ] ] ], [ [ [ 121.626925, 31.445135 ], [ 121.579498, 31.479848 ], [ 121.631853, 31.456878 ], [ 121.626925, 31.445135 ] ] ], [ [ [ 121.943518, 31.215608 ], [ 121.950909, 31.228915 ], [ 122.008808, 31.221238 ], [ 121.995873, 31.160828 ], [ 121.959533, 31.159291 ], [ 121.943518, 31.215608 ] ] ], [ [ [ 121.88254, 31.240684 ], [ 121.923808, 31.234032 ], [ 121.909026, 31.195133 ], [ 121.88254, 31.240684 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "320000", "name": "江苏省", "center": [ 118.767413, 32.041544 ], "centroid": [ 119.486395, 32.983908 ], "childrenNum": 13, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 9, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 117.311654, 34.561686 ], [ 117.311654, 34.561686 ], [ 117.32151, 34.566614 ], [ 117.32151, 34.566614 ], [ 117.325205, 34.573021 ], [ 117.325205, 34.573021 ], [ 117.362777, 34.589281 ], [ 117.402813, 34.569571 ], [ 117.402813, 34.550843 ], [ 117.465023, 34.484767 ], [ 117.53832, 34.467006 ], [ 117.592523, 34.462566 ], [ 117.609769, 34.490686 ], [ 117.659044, 34.501044 ], [ 117.684298, 34.547392 ], [ 117.801942, 34.518798 ], [ 117.791471, 34.583368 ], [ 117.793935, 34.651827 ], [ 117.902956, 34.644443 ], [ 117.909732, 34.670533 ], [ 117.951615, 34.678408 ], [ 118.053861, 34.650843 ], [ 118.084042, 34.655766 ], [ 118.114839, 34.614404 ], [ 118.079115, 34.569571 ], [ 118.185056, 34.543942 ], [ 118.16473, 34.50499 ], [ 118.132702, 34.483287 ], [ 118.177665, 34.45319 ], [ 118.179513, 34.379628 ], [ 118.217701, 34.379134 ], [ 118.220165, 34.405802 ], [ 118.277447, 34.404814 ], [ 118.290382, 34.424563 ], [ 118.379693, 34.415183 ], [ 118.404947, 34.427525 ], [ 118.416034, 34.473914 ], [ 118.439439, 34.507949 ], [ 118.424657, 34.595193 ], [ 118.439439, 34.626223 ], [ 118.473932, 34.623269 ], [ 118.460997, 34.656258 ], [ 118.545997, 34.705964 ], [ 118.601431, 34.714327 ], [ 118.607591, 34.694155 ], [ 118.664257, 34.693663 ], [ 118.690127, 34.678408 ], [ 118.739402, 34.693663 ], [ 118.783749, 34.723181 ], [ 118.764039, 34.740396 ], [ 118.719076, 34.745313 ], [ 118.739402, 34.792508 ], [ 118.772047, 34.794474 ], [ 118.80038, 34.843114 ], [ 118.805307, 34.87307 ], [ 118.860742, 34.944233 ], [ 118.86259, 35.025626 ], [ 118.928495, 35.051106 ], [ 118.942662, 35.040817 ], [ 119.027045, 35.055516 ], [ 119.114509, 35.055026 ], [ 119.137915, 35.096167 ], [ 119.217371, 35.106939 ], [ 119.250016, 35.124562 ], [ 119.286972, 35.115261 ], [ 119.306066, 35.076578 ], [ 119.292515, 35.068742 ], [ 119.307298, 35.032977 ], [ 119.291899, 35.028567 ], [ 119.285124, 35.068252 ], [ 119.238313, 35.048657 ], [ 119.211211, 34.981507 ], [ 119.214907, 34.925589 ], [ 119.202588, 34.890253 ], [ 119.217371, 34.827886 ], [ 119.238313, 34.799388 ], [ 119.272189, 34.797914 ], [ 119.312841, 34.774813 ], [ 119.378747, 34.764489 ], [ 119.440957, 34.769406 ], [ 119.439725, 34.785136 ], [ 119.497007, 34.754164 ], [ 119.494543, 34.754656 ], [ 119.381827, 34.752198 ], [ 119.456971, 34.748264 ], [ 119.525956, 34.73351 ], [ 119.465594, 34.672994 ], [ 119.569072, 34.615389 ], [ 119.610956, 34.592729 ], [ 119.641137, 34.569078 ], [ 119.781571, 34.515839 ], [ 119.811752, 34.485754 ], [ 119.962657, 34.459112 ], [ 120.103707, 34.391481 ], [ 120.311895, 34.306991 ], [ 120.314359, 34.255563 ], [ 120.347619, 34.179352 ], [ 120.367329, 34.091674 ], [ 120.48559, 33.859411 ], [ 120.500372, 33.818152 ], [ 120.534249, 33.782346 ], [ 120.583524, 33.668362 ], [ 120.651277, 33.57567 ], [ 120.717183, 33.436945 ], [ 120.741205, 33.337505 ], [ 120.769538, 33.307 ], [ 120.813885, 33.303499 ], [ 120.833595, 33.274984 ], [ 120.819429, 33.237951 ], [ 120.843451, 33.209915 ], [ 120.874247, 33.093672 ], [ 120.871784, 33.047032 ], [ 120.917979, 33.02596 ], [ 120.932762, 33.005887 ], [ 120.957399, 32.893395 ], [ 120.981421, 32.85972 ], [ 120.972182, 32.761134 ], [ 120.953088, 32.714318 ], [ 120.916131, 32.701225 ], [ 120.963559, 32.68259 ], [ 120.979573, 32.636236 ], [ 120.961711, 32.612042 ], [ 121.020225, 32.605489 ], [ 121.153268, 32.52933 ], [ 121.269681, 32.483402 ], [ 121.352216, 32.474315 ], [ 121.390405, 32.460682 ], [ 121.425513, 32.430885 ], [ 121.450151, 32.282256 ], [ 121.493882, 32.263533 ], [ 121.499426, 32.211394 ], [ 121.458774, 32.177462 ], [ 121.542542, 32.152132 ], [ 121.525295, 32.136423 ], [ 121.759352, 32.059362 ], [ 121.772287, 32.032984 ], [ 121.856055, 31.955328 ], [ 121.889315, 31.866425 ], [ 121.970004, 31.718911 ], [ 121.974931, 31.61704 ], [ 121.715005, 31.673592 ], [ 121.64294, 31.697527 ], [ 121.599824, 31.703128 ], [ 121.49881, 31.753012 ], [ 121.431673, 31.769295 ], [ 121.384861, 31.833382 ], [ 121.323267, 31.868458 ], [ 121.265369, 31.863883 ], [ 121.200079, 31.834907 ], [ 121.118775, 31.759119 ], [ 121.145261, 31.75403 ], [ 121.289391, 31.61653 ], [ 121.371926, 31.553314 ], [ 121.343593, 31.511996 ], [ 121.301093, 31.49873 ], [ 121.301093, 31.49873 ], [ 121.247507, 31.476785 ], [ 121.240731, 31.493627 ], [ 121.174826, 31.44922 ], [ 121.143413, 31.392021 ], [ 121.113848, 31.37465 ], [ 121.130478, 31.343987 ], [ 121.129862, 31.302577 ], [ 121.160659, 31.283144 ], [ 121.138485, 31.276495 ], [ 121.090442, 31.291838 ], [ 121.060261, 31.245289 ], [ 121.076892, 31.158267 ], [ 121.018377, 31.134194 ], [ 120.930298, 31.141365 ], [ 120.881023, 31.134706 ], [ 120.859465, 31.100379 ], [ 120.890878, 31.094229 ], [ 120.901349, 31.017327 ], [ 120.865624, 30.989627 ], [ 120.820661, 31.006556 ], [ 120.770154, 30.996809 ], [ 120.746132, 30.962432 ], [ 120.698089, 30.970643 ], [ 120.684538, 30.955247 ], [ 120.709176, 30.933176 ], [ 120.713487, 30.88491 ], [ 120.68269, 30.882342 ], [ 120.653741, 30.846896 ], [ 120.589068, 30.854603 ], [ 120.563814, 30.835592 ], [ 120.503452, 30.757967 ], [ 120.489285, 30.763624 ], [ 120.460336, 30.839702 ], [ 120.441858, 30.860768 ], [ 120.435083, 30.920855 ], [ 120.42338, 30.902884 ], [ 120.35809, 30.886964 ], [ 120.371025, 30.948575 ], [ 120.316206, 30.933689 ], [ 120.223816, 30.926502 ], [ 120.149903, 30.937283 ], [ 120.111099, 30.955761 ], [ 120.052584, 31.00553 ], [ 120.001461, 31.027071 ], [ 119.988527, 31.059375 ], [ 119.946027, 31.106016 ], [ 119.921389, 31.170045 ], [ 119.878274, 31.160828 ], [ 119.827151, 31.174142 ], [ 119.809904, 31.148536 ], [ 119.779723, 31.17875 ], [ 119.715666, 31.169533 ], [ 119.705811, 31.152634 ], [ 119.678093, 31.167997 ], [ 119.623891, 31.130096 ], [ 119.599869, 31.10909 ], [ 119.532732, 31.159291 ], [ 119.461283, 31.156219 ], [ 119.439109, 31.177214 ], [ 119.391682, 31.174142 ], [ 119.360269, 31.213049 ], [ 119.374435, 31.258591 ], [ 119.350414, 31.301043 ], [ 119.338095, 31.259103 ], [ 119.294363, 31.263195 ], [ 119.266646, 31.250405 ], [ 119.198277, 31.270357 ], [ 119.197661, 31.295418 ], [ 119.158241, 31.294907 ], [ 119.107118, 31.250917 ], [ 119.10527, 31.235055 ], [ 119.014727, 31.241707 ], [ 118.984546, 31.237102 ], [ 118.870597, 31.242219 ], [ 118.794836, 31.229426 ], [ 118.756648, 31.279564 ], [ 118.726467, 31.282121 ], [ 118.720924, 31.322518 ], [ 118.745561, 31.372606 ], [ 118.767735, 31.363919 ], [ 118.824401, 31.375672 ], [ 118.852119, 31.393553 ], [ 118.883532, 31.500261 ], [ 118.885995, 31.519139 ], [ 118.881684, 31.564023 ], [ 118.858894, 31.623665 ], [ 118.802844, 31.619078 ], [ 118.773894, 31.682759 ], [ 118.748025, 31.675629 ], [ 118.736322, 31.633347 ], [ 118.643315, 31.649651 ], [ 118.643315, 31.671555 ], [ 118.697518, 31.709747 ], [ 118.653786, 31.73011 ], [ 118.641467, 31.75861 ], [ 118.571866, 31.746397 ], [ 118.5577, 31.73011 ], [ 118.521975, 31.743343 ], [ 118.533678, 31.76726 ], [ 118.481939, 31.778453 ], [ 118.504729, 31.841516 ], [ 118.466541, 31.857784 ], [ 118.472084, 31.879639 ], [ 118.363679, 31.930443 ], [ 118.389548, 31.985281 ], [ 118.394476, 32.076098 ], [ 118.433896, 32.086746 ], [ 118.501033, 32.121726 ], [ 118.49549, 32.165304 ], [ 118.510888, 32.194176 ], [ 118.643931, 32.209875 ], [ 118.674728, 32.250375 ], [ 118.657482, 32.30148 ], [ 118.703061, 32.328792 ], [ 118.685199, 32.403604 ], [ 118.691359, 32.472295 ], [ 118.628533, 32.467751 ], [ 118.592192, 32.481383 ], [ 118.608823, 32.536899 ], [ 118.564475, 32.562122 ], [ 118.568787, 32.585825 ], [ 118.59712, 32.600951 ], [ 118.632844, 32.578261 ], [ 118.658714, 32.594397 ], [ 118.688895, 32.588346 ], [ 118.719076, 32.614059 ], [ 118.719076, 32.614059 ], [ 118.73509, 32.58885 ], [ 118.757264, 32.603976 ], [ 118.784981, 32.582295 ], [ 118.820706, 32.60448 ], [ 118.84288, 32.56767 ], [ 118.908169, 32.59238 ], [ 118.890923, 32.553042 ], [ 118.92172, 32.557078 ], [ 118.922336, 32.557078 ], [ 118.92172, 32.557078 ], [ 118.922336, 32.557078 ], [ 118.975923, 32.505108 ], [ 119.041212, 32.515201 ], [ 119.084944, 32.452602 ], [ 119.142226, 32.499556 ], [ 119.168096, 32.536394 ], [ 119.152697, 32.557582 ], [ 119.22045, 32.576748 ], [ 119.230921, 32.607001 ], [ 119.208748, 32.641276 ], [ 119.211827, 32.708275 ], [ 119.184726, 32.825529 ], [ 119.113277, 32.823014 ], [ 119.054763, 32.8748 ], [ 119.020886, 32.955685 ], [ 118.993169, 32.958196 ], [ 118.934039, 32.93861 ], [ 118.892771, 32.941121 ], [ 118.89585, 32.957694 ], [ 118.89585, 32.957694 ], [ 118.849039, 32.956689 ], [ 118.846575, 32.922034 ], [ 118.821322, 32.920527 ], [ 118.810235, 32.853687 ], [ 118.743097, 32.853184 ], [ 118.743097, 32.853184 ], [ 118.73817, 32.772708 ], [ 118.756648, 32.737477 ], [ 118.707373, 32.72036 ], [ 118.642699, 32.744525 ], [ 118.572482, 32.719856 ], [ 118.560163, 32.729926 ], [ 118.483787, 32.721367 ], [ 118.450526, 32.743518 ], [ 118.411106, 32.715828 ], [ 118.375382, 32.718849 ], [ 118.363063, 32.770695 ], [ 118.334114, 32.761637 ], [ 118.300237, 32.783275 ], [ 118.301469, 32.846145 ], [ 118.250346, 32.848157 ], [ 118.2331, 32.914498 ], [ 118.252194, 32.936601 ], [ 118.291614, 32.946143 ], [ 118.303933, 32.96874 ], [ 118.26944, 32.969242 ], [ 118.244803, 32.998359 ], [ 118.243571, 33.027967 ], [ 118.219549, 33.114227 ], [ 118.217085, 33.191888 ], [ 118.178281, 33.217926 ], [ 118.149332, 33.169348 ], [ 118.038463, 33.134776 ], [ 118.037231, 33.152314 ], [ 117.988572, 33.180869 ], [ 117.977485, 33.226437 ], [ 117.942376, 33.224936 ], [ 117.939297, 33.262475 ], [ 117.974405, 33.279487 ], [ 117.992883, 33.333005 ], [ 118.029224, 33.374995 ], [ 118.016905, 33.402978 ], [ 118.027376, 33.455421 ], [ 118.050782, 33.491863 ], [ 118.107448, 33.475391 ], [ 118.117919, 33.594615 ], [ 118.112376, 33.617045 ], [ 118.16781, 33.663381 ], [ 118.161035, 33.735576 ], [ 118.117919, 33.766427 ], [ 118.065564, 33.76593 ], [ 118.019985, 33.738562 ], [ 117.972557, 33.74951 ], [ 117.901724, 33.720146 ], [ 117.843826, 33.736074 ], [ 117.791471, 33.733585 ], [ 117.750203, 33.710688 ], [ 117.72495, 33.74951 ], [ 117.739732, 33.758467 ], [ 117.759442, 33.874318 ], [ 117.753899, 33.891211 ], [ 117.715095, 33.879287 ], [ 117.672595, 33.934916 ], [ 117.671363, 33.992494 ], [ 117.629479, 34.028708 ], [ 117.612849, 34.000433 ], [ 117.569117, 33.985051 ], [ 117.543248, 34.038627 ], [ 117.514914, 34.060941 ], [ 117.435458, 34.028212 ], [ 117.404045, 34.03218 ], [ 117.357234, 34.088205 ], [ 117.311654, 34.067882 ], [ 117.277162, 34.078787 ], [ 117.257452, 34.065899 ], [ 117.192162, 34.068873 ], [ 117.130568, 34.101586 ], [ 117.123793, 34.128342 ], [ 117.046801, 34.151622 ], [ 117.025243, 34.167469 ], [ 117.051112, 34.221425 ], [ 116.969192, 34.283753 ], [ 116.983359, 34.348011 ], [ 116.960569, 34.363821 ], [ 116.969192, 34.389012 ], [ 116.909446, 34.408271 ], [ 116.828142, 34.389012 ], [ 116.782563, 34.429993 ], [ 116.773939, 34.453683 ], [ 116.722816, 34.472434 ], [ 116.662454, 34.472927 ], [ 116.592237, 34.493646 ], [ 116.594085, 34.511894 ], [ 116.490607, 34.573513 ], [ 116.477057, 34.614896 ], [ 116.432709, 34.630163 ], [ 116.430245, 34.650843 ], [ 116.374195, 34.640011 ], [ 116.392057, 34.710391 ], [ 116.363724, 34.715311 ], [ 116.369267, 34.749247 ], [ 116.403144, 34.756131 ], [ 116.408071, 34.850972 ], [ 116.445028, 34.895652 ], [ 116.557745, 34.908905 ], [ 116.613795, 34.922645 ], [ 116.622418, 34.939818 ], [ 116.677853, 34.939327 ], [ 116.781331, 34.916757 ], [ 116.781947, 34.961891 ], [ 116.809048, 34.968757 ], [ 116.821983, 34.929515 ], [ 116.858323, 34.928533 ], [ 116.922381, 34.894671 ], [ 116.929156, 34.843114 ], [ 116.966113, 34.844588 ], [ 116.979047, 34.815113 ], [ 116.95133, 34.81069 ], [ 116.969192, 34.771864 ], [ 117.022163, 34.759081 ], [ 117.070206, 34.713835 ], [ 117.061583, 34.675947 ], [ 117.073286, 34.639026 ], [ 117.104083, 34.648874 ], [ 117.15151, 34.559222 ], [ 117.139191, 34.526687 ], [ 117.166293, 34.434435 ], [ 117.248213, 34.451216 ], [ 117.252524, 34.48674 ], [ 117.27285, 34.499565 ], [ 117.267307, 34.528659 ], [ 117.311654, 34.561686 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "330000", "name": "浙江省", "center": [ 120.153576, 30.287459 ], "centroid": [ 120.109921, 29.181449 ], "childrenNum": 11, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 10, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 118.433896, 28.288335 ], [ 118.480091, 28.327325 ], [ 118.455454, 28.384204 ], [ 118.432048, 28.402104 ], [ 118.456686, 28.424738 ], [ 118.474548, 28.478934 ], [ 118.414802, 28.497344 ], [ 118.4302, 28.515225 ], [ 118.412338, 28.55676 ], [ 118.428352, 28.617193 ], [ 118.428352, 28.617193 ], [ 118.428352, 28.681267 ], [ 118.403099, 28.702791 ], [ 118.364295, 28.813491 ], [ 118.300237, 28.826075 ], [ 118.270056, 28.918836 ], [ 118.195527, 28.904167 ], [ 118.227556, 28.942406 ], [ 118.165346, 28.986912 ], [ 118.133933, 28.983771 ], [ 118.115455, 29.009944 ], [ 118.115455, 29.009944 ], [ 118.097593, 28.998952 ], [ 118.066796, 29.053898 ], [ 118.076035, 29.074822 ], [ 118.037847, 29.102017 ], [ 118.045238, 29.149068 ], [ 118.027992, 29.167882 ], [ 118.042159, 29.210202 ], [ 118.073571, 29.216993 ], [ 118.077883, 29.290614 ], [ 118.138861, 29.283828 ], [ 118.178281, 29.297921 ], [ 118.166578, 29.314099 ], [ 118.205382, 29.343839 ], [ 118.193064, 29.395472 ], [ 118.248498, 29.431443 ], [ 118.316252, 29.422581 ], [ 118.306396, 29.479384 ], [ 118.329802, 29.495012 ], [ 118.347664, 29.474174 ], [ 118.381541, 29.504909 ], [ 118.496106, 29.519492 ], [ 118.500417, 29.57572 ], [ 118.532446, 29.588731 ], [ 118.573714, 29.638159 ], [ 118.61991, 29.654282 ], [ 118.647011, 29.64336 ], [ 118.700598, 29.706277 ], [ 118.744945, 29.73902 ], [ 118.740634, 29.814859 ], [ 118.841032, 29.891159 ], [ 118.838568, 29.934733 ], [ 118.894619, 29.937845 ], [ 118.902626, 30.029078 ], [ 118.878604, 30.064822 ], [ 118.873677, 30.11505 ], [ 118.895234, 30.148694 ], [ 118.852119, 30.149729 ], [ 118.852735, 30.166805 ], [ 118.929727, 30.2025 ], [ 118.905089, 30.216464 ], [ 118.877988, 30.282637 ], [ 118.880452, 30.31519 ], [ 118.954365, 30.360126 ], [ 118.988857, 30.332237 ], [ 119.06277, 30.304856 ], [ 119.091719, 30.323972 ], [ 119.126828, 30.304856 ], [ 119.201356, 30.290905 ], [ 119.236465, 30.297106 ], [ 119.246936, 30.341018 ], [ 119.277117, 30.341018 ], [ 119.326392, 30.372002 ], [ 119.349182, 30.349281 ], [ 119.402768, 30.374584 ], [ 119.36766, 30.38491 ], [ 119.335015, 30.448389 ], [ 119.336247, 30.508734 ], [ 119.326392, 30.532964 ], [ 119.272189, 30.510281 ], [ 119.237081, 30.546881 ], [ 119.265414, 30.574709 ], [ 119.238929, 30.609225 ], [ 119.323312, 30.630341 ], [ 119.343022, 30.664322 ], [ 119.39045, 30.685941 ], [ 119.408312, 30.645274 ], [ 119.444652, 30.650422 ], [ 119.482841, 30.704467 ], [ 119.479761, 30.772365 ], [ 119.527188, 30.77905 ], [ 119.55429, 30.825828 ], [ 119.575847, 30.829939 ], [ 119.557369, 30.874124 ], [ 119.563529, 30.919315 ], [ 119.582007, 30.932149 ], [ 119.580159, 30.967051 ], [ 119.633746, 31.019379 ], [ 119.629434, 31.085517 ], [ 119.649144, 31.104991 ], [ 119.623891, 31.130096 ], [ 119.678093, 31.167997 ], [ 119.705811, 31.152634 ], [ 119.715666, 31.169533 ], [ 119.779723, 31.17875 ], [ 119.809904, 31.148536 ], [ 119.827151, 31.174142 ], [ 119.878274, 31.160828 ], [ 119.921389, 31.170045 ], [ 119.946027, 31.106016 ], [ 119.988527, 31.059375 ], [ 120.001461, 31.027071 ], [ 120.052584, 31.00553 ], [ 120.111099, 30.955761 ], [ 120.149903, 30.937283 ], [ 120.223816, 30.926502 ], [ 120.316206, 30.933689 ], [ 120.371025, 30.948575 ], [ 120.35809, 30.886964 ], [ 120.42338, 30.902884 ], [ 120.435083, 30.920855 ], [ 120.441858, 30.860768 ], [ 120.460336, 30.839702 ], [ 120.489285, 30.763624 ], [ 120.503452, 30.757967 ], [ 120.563814, 30.835592 ], [ 120.589068, 30.854603 ], [ 120.653741, 30.846896 ], [ 120.68269, 30.882342 ], [ 120.713487, 30.88491 ], [ 120.709176, 30.933176 ], [ 120.684538, 30.955247 ], [ 120.698089, 30.970643 ], [ 120.746132, 30.962432 ], [ 120.770154, 30.996809 ], [ 120.820661, 31.006556 ], [ 120.865624, 30.989627 ], [ 120.901349, 31.017327 ], [ 120.940153, 31.010146 ], [ 120.949392, 31.030148 ], [ 120.989428, 31.01425 ], [ 121.000515, 30.938309 ], [ 120.993124, 30.889532 ], [ 121.020225, 30.872069 ], [ 120.991892, 30.837133 ], [ 121.038087, 30.814007 ], [ 121.060261, 30.845354 ], [ 121.097833, 30.857171 ], [ 121.13787, 30.826342 ], [ 121.123087, 30.77905 ], [ 121.174826, 30.771851 ], [ 121.21671, 30.785734 ], [ 121.232108, 30.755909 ], [ 121.272144, 30.723504 ], [ 121.274608, 30.677191 ], [ 121.239499, 30.648878 ], [ 121.188992, 30.632916 ], [ 121.148956, 30.599953 ], [ 121.058413, 30.563888 ], [ 121.092906, 30.515952 ], [ 121.183449, 30.434458 ], [ 121.225333, 30.404526 ], [ 121.328195, 30.397299 ], [ 121.371926, 30.37097 ], [ 121.395332, 30.338435 ], [ 121.497578, 30.258861 ], [ 121.561636, 30.184395 ], [ 121.635548, 30.070002 ], [ 121.652795, 30.071037 ], [ 121.699606, 30.007832 ], [ 121.721164, 29.992802 ], [ 121.78399, 29.99332 ], [ 121.835113, 29.958068 ], [ 121.919497, 29.920729 ], [ 121.971235, 29.955476 ], [ 122.00388, 29.92021 ], [ 122.00696, 29.891678 ], [ 122.140003, 29.901535 ], [ 122.143082, 29.877668 ], [ 122.10243, 29.859504 ], [ 122.043916, 29.822647 ], [ 122.003264, 29.762401 ], [ 121.937359, 29.748373 ], [ 121.833265, 29.653242 ], [ 121.872685, 29.632437 ], [ 121.909641, 29.650122 ], [ 121.966308, 29.636078 ], [ 122.000185, 29.582486 ], [ 121.995257, 29.545007 ], [ 121.968772, 29.515846 ], [ 121.973083, 29.477821 ], [ 121.993409, 29.45229 ], [ 121.975547, 29.411113 ], [ 121.937975, 29.384 ], [ 121.936127, 29.348012 ], [ 121.958301, 29.334448 ], [ 121.94475, 29.28435 ], [ 122.000185, 29.278608 ], [ 122.002032, 29.260336 ], [ 121.966924, 29.249894 ], [ 121.971851, 29.193485 ], [ 121.948446, 29.193485 ], [ 121.986634, 29.154817 ], [ 121.988482, 29.110906 ], [ 121.970004, 29.092604 ], [ 121.966308, 29.052852 ], [ 121.884388, 29.105677 ], [ 121.85975, 29.086328 ], [ 121.811091, 29.10986 ], [ 121.780294, 29.10986 ], [ 121.767975, 29.166837 ], [ 121.750113, 29.136523 ], [ 121.715621, 29.125022 ], [ 121.608447, 29.168927 ], [ 121.616454, 29.143318 ], [ 121.660186, 29.118226 ], [ 121.658954, 29.058606 ], [ 121.712541, 29.028783 ], [ 121.711309, 28.985865 ], [ 121.743338, 28.954451 ], [ 121.772287, 28.898404 ], [ 121.774751, 28.863818 ], [ 121.687287, 28.863294 ], [ 121.704534, 28.804577 ], [ 121.689135, 28.719062 ], [ 121.646019, 28.682842 ], [ 121.540694, 28.655537 ], [ 121.557324, 28.645033 ], [ 121.596128, 28.575156 ], [ 121.634317, 28.562542 ], [ 121.646019, 28.511544 ], [ 121.671273, 28.472621 ], [ 121.692831, 28.407368 ], [ 121.658954, 28.392628 ], [ 121.634317, 28.347868 ], [ 121.660186, 28.355768 ], [ 121.669425, 28.33312 ], [ 121.627541, 28.251966 ], [ 121.580114, 28.240368 ], [ 121.571491, 28.279376 ], [ 121.538846, 28.299401 ], [ 121.488955, 28.301509 ], [ 121.45631, 28.250385 ], [ 121.402107, 28.197127 ], [ 121.373774, 28.133287 ], [ 121.328195, 28.134343 ], [ 121.299862, 28.067297 ], [ 121.261057, 28.034551 ], [ 121.176058, 28.022401 ], [ 121.140949, 28.031382 ], [ 121.121239, 28.12537 ], [ 121.108304, 28.139092 ], [ 121.059029, 28.096338 ], [ 121.015298, 27.981714 ], [ 120.991892, 27.95 ], [ 121.05595, 27.900294 ], [ 121.099681, 27.895005 ], [ 121.162507, 27.90717 ], [ 121.162507, 27.879136 ], [ 121.193304, 27.872259 ], [ 121.192072, 27.822518 ], [ 121.152652, 27.810344 ], [ 121.153268, 27.809815 ], [ 121.149572, 27.801875 ], [ 121.149572, 27.801345 ], [ 121.13479, 27.787051 ], [ 121.134174, 27.787051 ], [ 121.152036, 27.815638 ], [ 121.107688, 27.81352 ], [ 121.070116, 27.834162 ], [ 121.027616, 27.832574 ], [ 120.97403, 27.887071 ], [ 120.942001, 27.896592 ], [ 120.910588, 27.864852 ], [ 120.840371, 27.758986 ], [ 120.797871, 27.779638 ], [ 120.760915, 27.717671 ], [ 120.709176, 27.682699 ], [ 120.685154, 27.622797 ], [ 120.634647, 27.577186 ], [ 120.637111, 27.561271 ], [ 120.703016, 27.478475 ], [ 120.673451, 27.420055 ], [ 120.665444, 27.357884 ], [ 120.580444, 27.321203 ], [ 120.554575, 27.25206 ], [ 120.574901, 27.234501 ], [ 120.545952, 27.156785 ], [ 120.492365, 27.136016 ], [ 120.461568, 27.142407 ], [ 120.404286, 27.204166 ], [ 120.401822, 27.250996 ], [ 120.430155, 27.258976 ], [ 120.343924, 27.363199 ], [ 120.340844, 27.399867 ], [ 120.273091, 27.38924 ], [ 120.26262, 27.432804 ], [ 120.221352, 27.420055 ], [ 120.134504, 27.420055 ], [ 120.136968, 27.402523 ], [ 120.096316, 27.390302 ], [ 120.052584, 27.338747 ], [ 120.026099, 27.344063 ], [ 120.008237, 27.375423 ], [ 119.960194, 27.365857 ], [ 119.938636, 27.329709 ], [ 119.843165, 27.300464 ], [ 119.768636, 27.307909 ], [ 119.782187, 27.330241 ], [ 119.739687, 27.362668 ], [ 119.750774, 27.373829 ], [ 119.711354, 27.403054 ], [ 119.685485, 27.438646 ], [ 119.703347, 27.446613 ], [ 119.70889, 27.514042 ], [ 119.690412, 27.537394 ], [ 119.659615, 27.540578 ], [ 119.675014, 27.574534 ], [ 119.630666, 27.582491 ], [ 119.626354, 27.620676 ], [ 119.644217, 27.663619 ], [ 119.606028, 27.674749 ], [ 119.541971, 27.666799 ], [ 119.501319, 27.649837 ], [ 119.501935, 27.610601 ], [ 119.466826, 27.526249 ], [ 119.438493, 27.508734 ], [ 119.416935, 27.539517 ], [ 119.360269, 27.524657 ], [ 119.334399, 27.480067 ], [ 119.285124, 27.457766 ], [ 119.26911, 27.42218 ], [ 119.224146, 27.416868 ], [ 119.14777, 27.424836 ], [ 119.121284, 27.438115 ], [ 119.129907, 27.475289 ], [ 119.092335, 27.466262 ], [ 119.03998, 27.478475 ], [ 119.020886, 27.498118 ], [ 118.983314, 27.498649 ], [ 118.986393, 27.47582 ], [ 118.955597, 27.4498 ], [ 118.907553, 27.460952 ], [ 118.869365, 27.540047 ], [ 118.909401, 27.568168 ], [ 118.913713, 27.619616 ], [ 118.879836, 27.667859 ], [ 118.873677, 27.733563 ], [ 118.829329, 27.847921 ], [ 118.818242, 27.916689 ], [ 118.753568, 27.947885 ], [ 118.730163, 27.970615 ], [ 118.733858, 28.027684 ], [ 118.719076, 28.063601 ], [ 118.767735, 28.10584 ], [ 118.802228, 28.117453 ], [ 118.805923, 28.154923 ], [ 118.771431, 28.188687 ], [ 118.804075, 28.207675 ], [ 118.802228, 28.240368 ], [ 118.756032, 28.252493 ], [ 118.719692, 28.312047 ], [ 118.699366, 28.309939 ], [ 118.674728, 28.27147 ], [ 118.651322, 28.277267 ], [ 118.595272, 28.258292 ], [ 118.588497, 28.282538 ], [ 118.493026, 28.262509 ], [ 118.490562, 28.238259 ], [ 118.444367, 28.253548 ], [ 118.433896, 28.288335 ] ] ], [ [ [ 122.163408, 29.988137 ], [ 122.118445, 29.986582 ], [ 122.106742, 30.005759 ], [ 122.027902, 29.991247 ], [ 121.978011, 30.059125 ], [ 121.989714, 30.077252 ], [ 121.983554, 30.100554 ], [ 121.934895, 30.161631 ], [ 121.955221, 30.183878 ], [ 122.048844, 30.147141 ], [ 122.095655, 30.158008 ], [ 122.152938, 30.113497 ], [ 122.293988, 30.100554 ], [ 122.288444, 30.073109 ], [ 122.310002, 30.039958 ], [ 122.343879, 30.020269 ], [ 122.341415, 29.976733 ], [ 122.322321, 29.940438 ], [ 122.279205, 29.937326 ], [ 122.239785, 29.962735 ], [ 122.163408, 29.988137 ] ] ], [ [ [ 122.213915, 30.186464 ], [ 122.168336, 30.138343 ], [ 122.143698, 30.163183 ], [ 122.152938, 30.19112 ], [ 122.178807, 30.199396 ], [ 122.213915, 30.186464 ] ] ], [ [ [ 122.229314, 29.711995 ], [ 122.231162, 29.710435 ], [ 122.269966, 29.685482 ], [ 122.210836, 29.700559 ], [ 122.229314, 29.711995 ] ] ], [ [ [ 122.427646, 30.738422 ], [ 122.445509, 30.745109 ], [ 122.475074, 30.714243 ], [ 122.528045, 30.725047 ], [ 122.532972, 30.696748 ], [ 122.427031, 30.697777 ], [ 122.427646, 30.738422 ] ] ], [ [ [ 122.162793, 30.329654 ], [ 122.176343, 30.351863 ], [ 122.191126, 30.329654 ], [ 122.228082, 30.329654 ], [ 122.247176, 30.30124 ], [ 122.231778, 30.234562 ], [ 122.154169, 30.244903 ], [ 122.058083, 30.291938 ], [ 122.162793, 30.329654 ] ] ], [ [ [ 122.317393, 30.249556 ], [ 122.333408, 30.272817 ], [ 122.40732, 30.272817 ], [ 122.417175, 30.238699 ], [ 122.365437, 30.255242 ], [ 122.358661, 30.236113 ], [ 122.277973, 30.242835 ], [ 122.317393, 30.249556 ] ] ], [ [ [ 122.026054, 29.178333 ], [ 122.036525, 29.20759 ], [ 122.075945, 29.176243 ], [ 122.056851, 29.158476 ], [ 122.013119, 29.151681 ], [ 122.026054, 29.178333 ] ] ], [ [ [ 122.372212, 29.893234 ], [ 122.362973, 29.894272 ], [ 122.353734, 29.89946 ], [ 122.338951, 29.911911 ], [ 122.330944, 29.937845 ], [ 122.351886, 29.959105 ], [ 122.398081, 29.9394 ], [ 122.411632, 29.951846 ], [ 122.43319, 29.919173 ], [ 122.433806, 29.883376 ], [ 122.401777, 29.869884 ], [ 122.415944, 29.828877 ], [ 122.386379, 29.834069 ], [ 122.372212, 29.893234 ] ] ], [ [ [ 122.43011, 30.408655 ], [ 122.352502, 30.422074 ], [ 122.318625, 30.407106 ], [ 122.281669, 30.418461 ], [ 122.277973, 30.471603 ], [ 122.37406, 30.461802 ], [ 122.432574, 30.445294 ], [ 122.43011, 30.408655 ] ] ], [ [ [ 121.837577, 28.770484 ], [ 121.861598, 28.814016 ], [ 121.86283, 28.782024 ], [ 121.837577, 28.770484 ] ] ], [ [ [ 122.265038, 29.84549 ], [ 122.319241, 29.829397 ], [ 122.299531, 29.819532 ], [ 122.325401, 29.781621 ], [ 122.310002, 29.766557 ], [ 122.248408, 29.804473 ], [ 122.221307, 29.832512 ], [ 122.265038, 29.84549 ] ] ], [ [ [ 121.790765, 29.082144 ], [ 121.82033, 29.099402 ], [ 121.84312, 29.082144 ], [ 121.832649, 29.050236 ], [ 121.790765, 29.082144 ] ] ], [ [ [ 121.943518, 30.776993 ], [ 121.970004, 30.789333 ], [ 121.987866, 30.753338 ], [ 121.992793, 30.695204 ], [ 122.011271, 30.66947 ], [ 122.075329, 30.647848 ], [ 122.133227, 30.595317 ], [ 122.087032, 30.602014 ], [ 121.997105, 30.658659 ], [ 121.968156, 30.688514 ], [ 121.943518, 30.776993 ] ] ], [ [ [ 121.889315, 28.471569 ], [ 121.881924, 28.502603 ], [ 121.918881, 28.497344 ], [ 121.889315, 28.471569 ] ] ], [ [ [ 122.182503, 29.650642 ], [ 122.138155, 29.662083 ], [ 122.095655, 29.716673 ], [ 122.074097, 29.701599 ], [ 122.047612, 29.719791 ], [ 122.083952, 29.78318 ], [ 122.13138, 29.788893 ], [ 122.146778, 29.749412 ], [ 122.200365, 29.712515 ], [ 122.211452, 29.692241 ], [ 122.182503, 29.650642 ] ] ], [ [ [ 122.461523, 29.944068 ], [ 122.459059, 29.938882 ], [ 122.467067, 29.928509 ], [ 122.462755, 29.927991 ], [ 122.457827, 29.927472 ], [ 122.45598, 29.926435 ], [ 122.452284, 29.935252 ], [ 122.4529, 29.936807 ], [ 122.449204, 29.9394 ], [ 122.450436, 29.940956 ], [ 122.451052, 29.940956 ], [ 122.451668, 29.943031 ], [ 122.460291, 29.947179 ], [ 122.459675, 29.944586 ], [ 122.461523, 29.944068 ] ] ], [ [ [ 122.570544, 30.644244 ], [ 122.546523, 30.651967 ], [ 122.559457, 30.679764 ], [ 122.570544, 30.644244 ] ] ], [ [ [ 121.869605, 28.423685 ], [ 121.889931, 28.45105 ], [ 121.910873, 28.44 ], [ 121.869605, 28.423685 ] ] ], [ [ [ 122.391306, 29.970512 ], [ 122.3679, 29.980361 ], [ 122.378371, 30.023896 ], [ 122.411632, 30.025969 ], [ 122.391306, 29.970512 ] ] ], [ [ [ 122.065474, 30.179739 ], [ 122.025438, 30.161631 ], [ 122.017431, 30.186464 ], [ 122.055619, 30.200431 ], [ 122.065474, 30.179739 ] ] ], [ [ [ 121.850511, 29.977251 ], [ 121.844968, 29.982953 ], [ 121.84004, 30.047211 ], [ 121.848663, 30.101072 ], [ 121.88562, 30.094859 ], [ 121.924424, 30.052391 ], [ 121.933047, 29.994875 ], [ 121.874533, 29.964809 ], [ 121.850511, 29.977251 ] ] ], [ [ [ 121.066421, 27.478475 ], [ 121.067036, 27.478475 ], [ 121.107073, 27.443958 ], [ 121.066421, 27.461483 ], [ 121.066421, 27.478475 ] ] ], [ [ [ 121.952141, 29.187738 ], [ 121.976779, 29.191918 ], [ 121.979243, 29.160043 ], [ 121.952141, 29.187738 ] ] ], [ [ [ 122.038373, 29.759284 ], [ 122.02975, 29.716673 ], [ 122.011271, 29.746294 ], [ 122.038373, 29.759284 ] ] ], [ [ [ 121.957685, 30.287804 ], [ 121.921344, 30.30744 ], [ 121.94167, 30.33327 ], [ 121.989098, 30.339985 ], [ 122.0008, 30.308473 ], [ 121.957685, 30.287804 ] ] ], [ [ [ 121.940438, 30.114533 ], [ 121.962612, 30.106249 ], [ 121.945982, 30.064304 ], [ 121.910257, 30.089163 ], [ 121.940438, 30.114533 ] ] ], [ [ [ 122.155401, 29.970512 ], [ 122.154169, 29.97103 ], [ 122.152322, 29.97103 ], [ 122.163408, 29.988137 ], [ 122.196053, 29.960661 ], [ 122.155401, 29.970512 ] ] ], [ [ [ 122.287828, 29.723949 ], [ 122.251488, 29.731225 ], [ 122.2133, 29.771752 ], [ 122.241633, 29.784738 ], [ 122.258263, 29.753569 ], [ 122.301379, 29.748373 ], [ 122.287828, 29.723949 ] ] ], [ [ [ 121.134174, 27.787051 ], [ 121.13479, 27.787051 ], [ 121.134174, 27.785992 ], [ 121.134174, 27.787051 ] ] ], [ [ [ 122.264423, 30.269716 ], [ 122.300147, 30.271266 ], [ 122.315545, 30.250073 ], [ 122.253952, 30.237147 ], [ 122.264423, 30.269716 ] ] ], [ [ [ 122.282901, 29.860542 ], [ 122.301379, 29.883895 ], [ 122.343263, 29.882857 ], [ 122.343263, 29.860542 ], [ 122.30877, 29.849642 ], [ 122.282901, 29.860542 ] ] ], [ [ [ 122.781196, 30.694175 ], [ 122.757174, 30.713728 ], [ 122.778732, 30.729677 ], [ 122.799674, 30.716301 ], [ 122.781196, 30.694175 ] ] ], [ [ [ 121.098449, 27.937311 ], [ 121.038087, 27.948942 ], [ 121.0695, 27.984357 ], [ 121.120623, 27.986471 ], [ 121.152652, 27.961629 ], [ 121.098449, 27.937311 ] ] ], [ [ [ 121.185913, 27.963215 ], [ 121.17113, 27.978543 ], [ 121.197616, 28.000739 ], [ 121.237652, 27.988056 ], [ 121.185913, 27.963215 ] ] ], [ [ [ 122.454132, 29.956513 ], [ 122.455364, 29.955994 ], [ 122.458443, 29.951846 ], [ 122.459059, 29.950809 ], [ 122.447972, 29.947698 ], [ 122.446741, 29.951327 ], [ 122.445509, 29.952365 ], [ 122.447972, 29.955994 ], [ 122.454132, 29.956513 ] ] ], [ [ [ 122.836014, 30.698806 ], [ 122.807681, 30.714243 ], [ 122.831087, 30.728648 ], [ 122.836014, 30.698806 ] ] ], [ [ [ 122.200365, 29.969475 ], [ 122.239785, 29.960142 ], [ 122.273662, 29.93214 ], [ 122.233626, 29.946661 ], [ 122.200365, 29.969475 ] ] ], [ [ [ 122.029134, 29.954957 ], [ 122.058699, 29.955994 ], [ 122.043916, 29.930584 ], [ 122.029134, 29.954957 ] ] ], [ [ [ 121.044247, 27.979072 ], [ 121.073812, 28.007608 ], [ 121.089826, 27.998625 ], [ 121.044247, 27.979072 ] ] ], [ [ [ 122.471378, 29.927472 ], [ 122.47261, 29.927472 ], [ 122.473226, 29.925397 ], [ 122.470762, 29.925916 ], [ 122.471378, 29.927472 ] ] ], [ [ [ 122.152322, 29.97103 ], [ 122.154169, 29.97103 ], [ 122.155401, 29.970512 ], [ 122.152322, 29.97103 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "340000", "name": "安徽省", "center": [ 117.283042, 31.86119 ], "centroid": [ 117.226862, 31.849273 ], "childrenNum": 16, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 11, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 116.599629, 34.014324 ], [ 116.599629, 34.014324 ], [ 116.576223, 34.068873 ], [ 116.576223, 34.068873 ], [ 116.52818, 34.122892 ], [ 116.536187, 34.151127 ], [ 116.565752, 34.16945 ], [ 116.542962, 34.203608 ], [ 116.545426, 34.241711 ], [ 116.582382, 34.266444 ], [ 116.562056, 34.285731 ], [ 116.516477, 34.296114 ], [ 116.456731, 34.268917 ], [ 116.409303, 34.273863 ], [ 116.409303, 34.273863 ], [ 116.372347, 34.26595 ], [ 116.363724, 34.316877 ], [ 116.301514, 34.342082 ], [ 116.255934, 34.376665 ], [ 116.213435, 34.382098 ], [ 116.215898, 34.403333 ], [ 116.178942, 34.430487 ], [ 116.162312, 34.459605 ], [ 116.178326, 34.496112 ], [ 116.204196, 34.508442 ], [ 116.191261, 34.535561 ], [ 116.196804, 34.575977 ], [ 116.247927, 34.551829 ], [ 116.286116, 34.608986 ], [ 116.32492, 34.601104 ], [ 116.334159, 34.620806 ], [ 116.374195, 34.640011 ], [ 116.430245, 34.650843 ], [ 116.432709, 34.630163 ], [ 116.477057, 34.614896 ], [ 116.490607, 34.573513 ], [ 116.594085, 34.511894 ], [ 116.592237, 34.493646 ], [ 116.662454, 34.472927 ], [ 116.722816, 34.472434 ], [ 116.773939, 34.453683 ], [ 116.782563, 34.429993 ], [ 116.828142, 34.389012 ], [ 116.909446, 34.408271 ], [ 116.969192, 34.389012 ], [ 116.960569, 34.363821 ], [ 116.983359, 34.348011 ], [ 116.969192, 34.283753 ], [ 117.051112, 34.221425 ], [ 117.025243, 34.167469 ], [ 117.046801, 34.151622 ], [ 117.123793, 34.128342 ], [ 117.130568, 34.101586 ], [ 117.192162, 34.068873 ], [ 117.257452, 34.065899 ], [ 117.277162, 34.078787 ], [ 117.311654, 34.067882 ], [ 117.357234, 34.088205 ], [ 117.404045, 34.03218 ], [ 117.435458, 34.028212 ], [ 117.514914, 34.060941 ], [ 117.543248, 34.038627 ], [ 117.569117, 33.985051 ], [ 117.612849, 34.000433 ], [ 117.629479, 34.028708 ], [ 117.671363, 33.992494 ], [ 117.672595, 33.934916 ], [ 117.715095, 33.879287 ], [ 117.753899, 33.891211 ], [ 117.759442, 33.874318 ], [ 117.739732, 33.758467 ], [ 117.72495, 33.74951 ], [ 117.750203, 33.710688 ], [ 117.791471, 33.733585 ], [ 117.843826, 33.736074 ], [ 117.901724, 33.720146 ], [ 117.972557, 33.74951 ], [ 118.019985, 33.738562 ], [ 118.065564, 33.76593 ], [ 118.117919, 33.766427 ], [ 118.161035, 33.735576 ], [ 118.16781, 33.663381 ], [ 118.112376, 33.617045 ], [ 118.117919, 33.594615 ], [ 118.107448, 33.475391 ], [ 118.050782, 33.491863 ], [ 118.027376, 33.455421 ], [ 118.016905, 33.402978 ], [ 118.029224, 33.374995 ], [ 117.992883, 33.333005 ], [ 117.974405, 33.279487 ], [ 117.939297, 33.262475 ], [ 117.942376, 33.224936 ], [ 117.977485, 33.226437 ], [ 117.988572, 33.180869 ], [ 118.037231, 33.152314 ], [ 118.038463, 33.134776 ], [ 118.149332, 33.169348 ], [ 118.178281, 33.217926 ], [ 118.217085, 33.191888 ], [ 118.219549, 33.114227 ], [ 118.243571, 33.027967 ], [ 118.244803, 32.998359 ], [ 118.26944, 32.969242 ], [ 118.303933, 32.96874 ], [ 118.291614, 32.946143 ], [ 118.252194, 32.936601 ], [ 118.2331, 32.914498 ], [ 118.250346, 32.848157 ], [ 118.301469, 32.846145 ], [ 118.300237, 32.783275 ], [ 118.334114, 32.761637 ], [ 118.363063, 32.770695 ], [ 118.375382, 32.718849 ], [ 118.411106, 32.715828 ], [ 118.450526, 32.743518 ], [ 118.483787, 32.721367 ], [ 118.560163, 32.729926 ], [ 118.572482, 32.719856 ], [ 118.642699, 32.744525 ], [ 118.707373, 32.72036 ], [ 118.756648, 32.737477 ], [ 118.73817, 32.772708 ], [ 118.743097, 32.853184 ], [ 118.743097, 32.853184 ], [ 118.810235, 32.853687 ], [ 118.821322, 32.920527 ], [ 118.846575, 32.922034 ], [ 118.849039, 32.956689 ], [ 118.89585, 32.957694 ], [ 118.89585, 32.957694 ], [ 118.892771, 32.941121 ], [ 118.934039, 32.93861 ], [ 118.993169, 32.958196 ], [ 119.020886, 32.955685 ], [ 119.054763, 32.8748 ], [ 119.113277, 32.823014 ], [ 119.184726, 32.825529 ], [ 119.211827, 32.708275 ], [ 119.208748, 32.641276 ], [ 119.230921, 32.607001 ], [ 119.22045, 32.576748 ], [ 119.152697, 32.557582 ], [ 119.168096, 32.536394 ], [ 119.142226, 32.499556 ], [ 119.084944, 32.452602 ], [ 119.041212, 32.515201 ], [ 118.975923, 32.505108 ], [ 118.922336, 32.557078 ], [ 118.92172, 32.557078 ], [ 118.922336, 32.557078 ], [ 118.92172, 32.557078 ], [ 118.890923, 32.553042 ], [ 118.908169, 32.59238 ], [ 118.84288, 32.56767 ], [ 118.820706, 32.60448 ], [ 118.784981, 32.582295 ], [ 118.757264, 32.603976 ], [ 118.73509, 32.58885 ], [ 118.719076, 32.614059 ], [ 118.719076, 32.614059 ], [ 118.688895, 32.588346 ], [ 118.658714, 32.594397 ], [ 118.632844, 32.578261 ], [ 118.59712, 32.600951 ], [ 118.568787, 32.585825 ], [ 118.564475, 32.562122 ], [ 118.608823, 32.536899 ], [ 118.592192, 32.481383 ], [ 118.628533, 32.467751 ], [ 118.691359, 32.472295 ], [ 118.685199, 32.403604 ], [ 118.703061, 32.328792 ], [ 118.657482, 32.30148 ], [ 118.674728, 32.250375 ], [ 118.643931, 32.209875 ], [ 118.510888, 32.194176 ], [ 118.49549, 32.165304 ], [ 118.501033, 32.121726 ], [ 118.433896, 32.086746 ], [ 118.394476, 32.076098 ], [ 118.389548, 31.985281 ], [ 118.363679, 31.930443 ], [ 118.472084, 31.879639 ], [ 118.466541, 31.857784 ], [ 118.504729, 31.841516 ], [ 118.481939, 31.778453 ], [ 118.533678, 31.76726 ], [ 118.521975, 31.743343 ], [ 118.5577, 31.73011 ], [ 118.571866, 31.746397 ], [ 118.641467, 31.75861 ], [ 118.653786, 31.73011 ], [ 118.697518, 31.709747 ], [ 118.643315, 31.671555 ], [ 118.643315, 31.649651 ], [ 118.736322, 31.633347 ], [ 118.748025, 31.675629 ], [ 118.773894, 31.682759 ], [ 118.802844, 31.619078 ], [ 118.858894, 31.623665 ], [ 118.881684, 31.564023 ], [ 118.885995, 31.519139 ], [ 118.868133, 31.520669 ], [ 118.857046, 31.506384 ], [ 118.883532, 31.500261 ], [ 118.852119, 31.393553 ], [ 118.824401, 31.375672 ], [ 118.767735, 31.363919 ], [ 118.745561, 31.372606 ], [ 118.720924, 31.322518 ], [ 118.726467, 31.282121 ], [ 118.756648, 31.279564 ], [ 118.794836, 31.229426 ], [ 118.870597, 31.242219 ], [ 118.984546, 31.237102 ], [ 119.014727, 31.241707 ], [ 119.10527, 31.235055 ], [ 119.107118, 31.250917 ], [ 119.158241, 31.294907 ], [ 119.197661, 31.295418 ], [ 119.198277, 31.270357 ], [ 119.266646, 31.250405 ], [ 119.294363, 31.263195 ], [ 119.338095, 31.259103 ], [ 119.350414, 31.301043 ], [ 119.374435, 31.258591 ], [ 119.360269, 31.213049 ], [ 119.391682, 31.174142 ], [ 119.439109, 31.177214 ], [ 119.461283, 31.156219 ], [ 119.532732, 31.159291 ], [ 119.599869, 31.10909 ], [ 119.623891, 31.130096 ], [ 119.649144, 31.104991 ], [ 119.629434, 31.085517 ], [ 119.633746, 31.019379 ], [ 119.580159, 30.967051 ], [ 119.582007, 30.932149 ], [ 119.563529, 30.919315 ], [ 119.557369, 30.874124 ], [ 119.575847, 30.829939 ], [ 119.55429, 30.825828 ], [ 119.527188, 30.77905 ], [ 119.479761, 30.772365 ], [ 119.482841, 30.704467 ], [ 119.444652, 30.650422 ], [ 119.408312, 30.645274 ], [ 119.39045, 30.685941 ], [ 119.343022, 30.664322 ], [ 119.323312, 30.630341 ], [ 119.238929, 30.609225 ], [ 119.265414, 30.574709 ], [ 119.237081, 30.546881 ], [ 119.272189, 30.510281 ], [ 119.326392, 30.532964 ], [ 119.336247, 30.508734 ], [ 119.335015, 30.448389 ], [ 119.36766, 30.38491 ], [ 119.402768, 30.374584 ], [ 119.349182, 30.349281 ], [ 119.326392, 30.372002 ], [ 119.277117, 30.341018 ], [ 119.246936, 30.341018 ], [ 119.236465, 30.297106 ], [ 119.201356, 30.290905 ], [ 119.126828, 30.304856 ], [ 119.091719, 30.323972 ], [ 119.06277, 30.304856 ], [ 118.988857, 30.332237 ], [ 118.954365, 30.360126 ], [ 118.880452, 30.31519 ], [ 118.877988, 30.282637 ], [ 118.905089, 30.216464 ], [ 118.929727, 30.2025 ], [ 118.852735, 30.166805 ], [ 118.852119, 30.149729 ], [ 118.895234, 30.148694 ], [ 118.873677, 30.11505 ], [ 118.878604, 30.064822 ], [ 118.902626, 30.029078 ], [ 118.894619, 29.937845 ], [ 118.838568, 29.934733 ], [ 118.841032, 29.891159 ], [ 118.740634, 29.814859 ], [ 118.744945, 29.73902 ], [ 118.700598, 29.706277 ], [ 118.647011, 29.64336 ], [ 118.61991, 29.654282 ], [ 118.573714, 29.638159 ], [ 118.532446, 29.588731 ], [ 118.500417, 29.57572 ], [ 118.496106, 29.519492 ], [ 118.381541, 29.504909 ], [ 118.347664, 29.474174 ], [ 118.329802, 29.495012 ], [ 118.306396, 29.479384 ], [ 118.316252, 29.422581 ], [ 118.248498, 29.431443 ], [ 118.193064, 29.395472 ], [ 118.136397, 29.418932 ], [ 118.127774, 29.47209 ], [ 118.143788, 29.489803 ], [ 118.095129, 29.534072 ], [ 118.050782, 29.542924 ], [ 118.042774, 29.566351 ], [ 118.00397, 29.578322 ], [ 117.933753, 29.549172 ], [ 117.872775, 29.54761 ], [ 117.795167, 29.570515 ], [ 117.729877, 29.550213 ], [ 117.690457, 29.555939 ], [ 117.678754, 29.595496 ], [ 117.647957, 29.614749 ], [ 117.608537, 29.591333 ], [ 117.543248, 29.588731 ], [ 117.523538, 29.630356 ], [ 117.530313, 29.654282 ], [ 117.490277, 29.660003 ], [ 117.453936, 29.688082 ], [ 117.455168, 29.749412 ], [ 117.408973, 29.802396 ], [ 117.415132, 29.85068 ], [ 117.382487, 29.840818 ], [ 117.359082, 29.812782 ], [ 117.338756, 29.848085 ], [ 117.29256, 29.822647 ], [ 117.25314, 29.834588 ], [ 117.261763, 29.880781 ], [ 117.246365, 29.915023 ], [ 117.2168, 29.926953 ], [ 117.171836, 29.920729 ], [ 117.129952, 29.89946 ], [ 117.127489, 29.86158 ], [ 117.073286, 29.831992 ], [ 117.123177, 29.798761 ], [ 117.136728, 29.775388 ], [ 117.108395, 29.75201 ], [ 117.112706, 29.711995 ], [ 117.041873, 29.680803 ], [ 116.996294, 29.683403 ], [ 116.974736, 29.657403 ], [ 116.939627, 29.648561 ], [ 116.873722, 29.609546 ], [ 116.849084, 29.57624 ], [ 116.780715, 29.569994 ], [ 116.760389, 29.599139 ], [ 116.721585, 29.564789 ], [ 116.716657, 29.590813 ], [ 116.651983, 29.637118 ], [ 116.680317, 29.681323 ], [ 116.704954, 29.688602 ], [ 116.706802, 29.6964 ], [ 116.70557, 29.69692 ], [ 116.698795, 29.707836 ], [ 116.673541, 29.709916 ], [ 116.762237, 29.802396 ], [ 116.780715, 29.792529 ], [ 116.882961, 29.893753 ], [ 116.900207, 29.949253 ], [ 116.868794, 29.980361 ], [ 116.83307, 29.95755 ], [ 116.830606, 30.004723 ], [ 116.802889, 29.99643 ], [ 116.783794, 30.030632 ], [ 116.747454, 30.057053 ], [ 116.720353, 30.053945 ], [ 116.666766, 30.076734 ], [ 116.620571, 30.073109 ], [ 116.585462, 30.045657 ], [ 116.552201, 29.909836 ], [ 116.525716, 29.897385 ], [ 116.467818, 29.896347 ], [ 116.342782, 29.835626 ], [ 116.280572, 29.788893 ], [ 116.250391, 29.785777 ], [ 116.227601, 29.816936 ], [ 116.172783, 29.828358 ], [ 116.13521, 29.819532 ], [ 116.128435, 29.897904 ], [ 116.073616, 29.969993 ], [ 116.091479, 30.036331 ], [ 116.078544, 30.062233 ], [ 116.088399, 30.110391 ], [ 116.055754, 30.180774 ], [ 116.065609, 30.204569 ], [ 115.997856, 30.252657 ], [ 115.985537, 30.290905 ], [ 115.903001, 30.31364 ], [ 115.91532, 30.337919 ], [ 115.885139, 30.379747 ], [ 115.921479, 30.416397 ], [ 115.894994, 30.452517 ], [ 115.910393, 30.519046 ], [ 115.887603, 30.542758 ], [ 115.876516, 30.582438 ], [ 115.848799, 30.602014 ], [ 115.819234, 30.597893 ], [ 115.81369, 30.637035 ], [ 115.762567, 30.685426 ], [ 115.782893, 30.751795 ], [ 115.851262, 30.756938 ], [ 115.863581, 30.815549 ], [ 115.848799, 30.828397 ], [ 115.865429, 30.864364 ], [ 115.932566, 30.889532 ], [ 115.976298, 30.931636 ], [ 116.03974, 30.957813 ], [ 116.071769, 30.956787 ], [ 116.058834, 31.012711 ], [ 116.015102, 31.011685 ], [ 116.006479, 31.034764 ], [ 115.938726, 31.04707 ], [ 115.939958, 31.071678 ], [ 115.887603, 31.10909 ], [ 115.867277, 31.147512 ], [ 115.837712, 31.127022 ], [ 115.797676, 31.128047 ], [ 115.778582, 31.112164 ], [ 115.700973, 31.201276 ], [ 115.655394, 31.211002 ], [ 115.603655, 31.17363 ], [ 115.585793, 31.143926 ], [ 115.540213, 31.194621 ], [ 115.539597, 31.231985 ], [ 115.507568, 31.267799 ], [ 115.473076, 31.265242 ], [ 115.443511, 31.344498 ], [ 115.40717, 31.337854 ], [ 115.372062, 31.349098 ], [ 115.393004, 31.389977 ], [ 115.373909, 31.405813 ], [ 115.389924, 31.450241 ], [ 115.371446, 31.495668 ], [ 115.415793, 31.525771 ], [ 115.439815, 31.588496 ], [ 115.485394, 31.608885 ], [ 115.476771, 31.643028 ], [ 115.495249, 31.673083 ], [ 115.534054, 31.698545 ], [ 115.553764, 31.69549 ], [ 115.676336, 31.778453 ], [ 115.731154, 31.76726 ], [ 115.767495, 31.78761 ], [ 115.808147, 31.770313 ], [ 115.808147, 31.770313 ], [ 115.851878, 31.786593 ], [ 115.886371, 31.776418 ], [ 115.914704, 31.814567 ], [ 115.893762, 31.832365 ], [ 115.894994, 31.8649 ], [ 115.920248, 31.920285 ], [ 115.909161, 31.94314 ], [ 115.928871, 32.003046 ], [ 115.922095, 32.049725 ], [ 115.941805, 32.166318 ], [ 115.912856, 32.227596 ], [ 115.899306, 32.390971 ], [ 115.865429, 32.458662 ], [ 115.883291, 32.487946 ], [ 115.845719, 32.501575 ], [ 115.8759, 32.542448 ], [ 115.910393, 32.567165 ], [ 115.891298, 32.576243 ], [ 115.861117, 32.537403 ], [ 115.789052, 32.468761 ], [ 115.771806, 32.505108 ], [ 115.742241, 32.476335 ], [ 115.704669, 32.495013 ], [ 115.667712, 32.409667 ], [ 115.657857, 32.428864 ], [ 115.626445, 32.40512 ], [ 115.604271, 32.425833 ], [ 115.57101, 32.419266 ], [ 115.522967, 32.441997 ], [ 115.509416, 32.466741 ], [ 115.510648, 32.467751 ], [ 115.510648, 32.468256 ], [ 115.510648, 32.468761 ], [ 115.5088, 32.468761 ], [ 115.497713, 32.492489 ], [ 115.409018, 32.549007 ], [ 115.411482, 32.575235 ], [ 115.304924, 32.553042 ], [ 115.30554, 32.583303 ], [ 115.267352, 32.578261 ], [ 115.24333, 32.593388 ], [ 115.20083, 32.591876 ], [ 115.182968, 32.666973 ], [ 115.179273, 32.726402 ], [ 115.189744, 32.770695 ], [ 115.211301, 32.785791 ], [ 115.189744, 32.812452 ], [ 115.197135, 32.856201 ], [ 115.155867, 32.864747 ], [ 115.139237, 32.897917 ], [ 115.029599, 32.906962 ], [ 115.035143, 32.932582 ], [ 115.009273, 32.940117 ], [ 114.943368, 32.935094 ], [ 114.916266, 32.971251 ], [ 114.883006, 32.990328 ], [ 114.891629, 33.020441 ], [ 114.925506, 33.016928 ], [ 114.913187, 33.083143 ], [ 114.897172, 33.086653 ], [ 114.902716, 33.129764 ], [ 114.932897, 33.153817 ], [ 114.966158, 33.147304 ], [ 114.990795, 33.102195 ], [ 115.041302, 33.086653 ], [ 115.168186, 33.088658 ], [ 115.194671, 33.120743 ], [ 115.245178, 33.135778 ], [ 115.289526, 33.131769 ], [ 115.303692, 33.149809 ], [ 115.300613, 33.204407 ], [ 115.340033, 33.260973 ], [ 115.335105, 33.297997 ], [ 115.361591, 33.298497 ], [ 115.365286, 33.336005 ], [ 115.341881, 33.370997 ], [ 115.313547, 33.376994 ], [ 115.328946, 33.403477 ], [ 115.316627, 33.44893 ], [ 115.345576, 33.449928 ], [ 115.345576, 33.502842 ], [ 115.366518, 33.5233 ], [ 115.394851, 33.506335 ], [ 115.422569, 33.557219 ], [ 115.463837, 33.567193 ], [ 115.561771, 33.563703 ], [ 115.564851, 33.576169 ], [ 115.639995, 33.585143 ], [ 115.601191, 33.658898 ], [ 115.601807, 33.718653 ], [ 115.563003, 33.772895 ], [ 115.576553, 33.787817 ], [ 115.614126, 33.775879 ], [ 115.631988, 33.869846 ], [ 115.547604, 33.874815 ], [ 115.577785, 33.950307 ], [ 115.579017, 33.974133 ], [ 115.60735, 34.030196 ], [ 115.642459, 34.03218 ], [ 115.658473, 34.061437 ], [ 115.705901, 34.059949 ], [ 115.736082, 34.076805 ], [ 115.809378, 34.062428 ], [ 115.846335, 34.028708 ], [ 115.852494, 34.003906 ], [ 115.877132, 34.002913 ], [ 115.876516, 34.028708 ], [ 115.904233, 34.009859 ], [ 115.95782, 34.007875 ], [ 116.00032, 33.965199 ], [ 115.982457, 33.917039 ], [ 116.05945, 33.860902 ], [ 116.055754, 33.804727 ], [ 116.074232, 33.781351 ], [ 116.100102, 33.782843 ], [ 116.132747, 33.751501 ], [ 116.155536, 33.709693 ], [ 116.2005, 33.72612 ], [ 116.263326, 33.730101 ], [ 116.316912, 33.771402 ], [ 116.393905, 33.782843 ], [ 116.408071, 33.805721 ], [ 116.437021, 33.801246 ], [ 116.437637, 33.846489 ], [ 116.486296, 33.869846 ], [ 116.558361, 33.881274 ], [ 116.566984, 33.9081 ], [ 116.631042, 33.887733 ], [ 116.64336, 33.896675 ], [ 116.641512, 33.978103 ], [ 116.599629, 34.014324 ] ] ], [ [ [ 118.868133, 31.520669 ], [ 118.885995, 31.519139 ], [ 118.883532, 31.500261 ], [ 118.857046, 31.506384 ], [ 118.868133, 31.520669 ] ] ], [ [ [ 116.698795, 29.707836 ], [ 116.70557, 29.69692 ], [ 116.706802, 29.6964 ], [ 116.704954, 29.688602 ], [ 116.680317, 29.681323 ], [ 116.653831, 29.694841 ], [ 116.673541, 29.709916 ], [ 116.698795, 29.707836 ] ] ], [ [ [ 115.5088, 32.468761 ], [ 115.510648, 32.468761 ], [ 115.510648, 32.468256 ], [ 115.510648, 32.467751 ], [ 115.509416, 32.466741 ], [ 115.5088, 32.468761 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "350000", "name": "福建省", "center": [ 119.306239, 26.075302 ], "centroid": [ 118.006365, 26.069889 ], "childrenNum": 9, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 12, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 119.004872, 24.970009 ], [ 119.007335, 24.963499 ], [ 119.032589, 24.961871 ], [ 119.032589, 24.961328 ], [ 119.014111, 24.941252 ], [ 118.945741, 24.954275 ], [ 118.91864, 24.932569 ], [ 118.932807, 24.906518 ], [ 118.987009, 24.898375 ], [ 118.988857, 24.878831 ], [ 118.933423, 24.870687 ], [ 118.864437, 24.887518 ], [ 118.834256, 24.854397 ], [ 118.807771, 24.870687 ], [ 118.748641, 24.84245 ], [ 118.69875, 24.848967 ], [ 118.702445, 24.865258 ], [ 118.647627, 24.843536 ], [ 118.650707, 24.808774 ], [ 118.786213, 24.77672 ], [ 118.778822, 24.743569 ], [ 118.703677, 24.665278 ], [ 118.670417, 24.679962 ], [ 118.652554, 24.653857 ], [ 118.661178, 24.622306 ], [ 118.687047, 24.63373 ], [ 118.680272, 24.58204 ], [ 118.614366, 24.521617 ], [ 118.558316, 24.51236 ], [ 118.557084, 24.572788 ], [ 118.512736, 24.60816 ], [ 118.444367, 24.614689 ], [ 118.363679, 24.567889 ], [ 118.375382, 24.536317 ], [ 118.242955, 24.51236 ], [ 118.169042, 24.559725 ], [ 118.150564, 24.583673 ], [ 118.121615, 24.570067 ], [ 118.084042, 24.528695 ], [ 118.048934, 24.418122 ], [ 118.088354, 24.408858 ], [ 118.081579, 24.35653 ], [ 118.112376, 24.357075 ], [ 118.158571, 24.269814 ], [ 118.115455, 24.229435 ], [ 118.074803, 24.225615 ], [ 118.019369, 24.197232 ], [ 118.000275, 24.152462 ], [ 117.936217, 24.100029 ], [ 117.927594, 24.039922 ], [ 117.910347, 24.012045 ], [ 117.864768, 24.004938 ], [ 117.807486, 23.947521 ], [ 117.792703, 23.906494 ], [ 117.762522, 23.886796 ], [ 117.691073, 23.888985 ], [ 117.671979, 23.878041 ], [ 117.651653, 23.815093 ], [ 117.660276, 23.789357 ], [ 117.601762, 23.70171 ], [ 117.54448, 23.715956 ], [ 117.501364, 23.70445 ], [ 117.493357, 23.642514 ], [ 117.454552, 23.628259 ], [ 117.463791, 23.584937 ], [ 117.387415, 23.555317 ], [ 117.302415, 23.550379 ], [ 117.291328, 23.571225 ], [ 117.192778, 23.5619 ], [ 117.192778, 23.629356 ], [ 117.147199, 23.654027 ], [ 117.123793, 23.647448 ], [ 117.055424, 23.694038 ], [ 117.048032, 23.758687 ], [ 117.019083, 23.801952 ], [ 117.012308, 23.855054 ], [ 116.981511, 23.855602 ], [ 116.955642, 23.922359 ], [ 116.976583, 23.931659 ], [ 116.981511, 23.999471 ], [ 116.953178, 24.008218 ], [ 116.930388, 24.064514 ], [ 116.9347, 24.126794 ], [ 116.998757, 24.179217 ], [ 116.956257, 24.216883 ], [ 116.933468, 24.220157 ], [ 116.938395, 24.28127 ], [ 116.914374, 24.287817 ], [ 116.919301, 24.321087 ], [ 116.895895, 24.350533 ], [ 116.903903, 24.369614 ], [ 116.839229, 24.442097 ], [ 116.860787, 24.460075 ], [ 116.83307, 24.496568 ], [ 116.796729, 24.502014 ], [ 116.759157, 24.545572 ], [ 116.761005, 24.583128 ], [ 116.815207, 24.654944 ], [ 116.777635, 24.679418 ], [ 116.667382, 24.658752 ], [ 116.623034, 24.64189 ], [ 116.600861, 24.654401 ], [ 116.570679, 24.621762 ], [ 116.530027, 24.604895 ], [ 116.506622, 24.621218 ], [ 116.517709, 24.652225 ], [ 116.485064, 24.720196 ], [ 116.44626, 24.714216 ], [ 116.416079, 24.744113 ], [ 116.419158, 24.767482 ], [ 116.375427, 24.803885 ], [ 116.381586, 24.82507 ], [ 116.417927, 24.840821 ], [ 116.395137, 24.877746 ], [ 116.363724, 24.87123 ], [ 116.345862, 24.828872 ], [ 116.297202, 24.801712 ], [ 116.244232, 24.793563 ], [ 116.251007, 24.82507 ], [ 116.221442, 24.829959 ], [ 116.191877, 24.877203 ], [ 116.153073, 24.846795 ], [ 116.068073, 24.850053 ], [ 116.015102, 24.905975 ], [ 115.985537, 24.899461 ], [ 115.907929, 24.923343 ], [ 115.89253, 24.936911 ], [ 115.870356, 24.959701 ], [ 115.925175, 24.960786 ], [ 115.873436, 25.019911 ], [ 115.928255, 25.050276 ], [ 115.908545, 25.084428 ], [ 115.880212, 25.092016 ], [ 115.888219, 25.128866 ], [ 115.860501, 25.165704 ], [ 115.855574, 25.20957 ], [ 115.930719, 25.236099 ], [ 115.949813, 25.292386 ], [ 115.987385, 25.290221 ], [ 116.008327, 25.319437 ], [ 115.992928, 25.374063 ], [ 116.023109, 25.435691 ], [ 116.005247, 25.490264 ], [ 116.03666, 25.514571 ], [ 116.040356, 25.548052 ], [ 116.063145, 25.56317 ], [ 116.041588, 25.62416 ], [ 116.068689, 25.646282 ], [ 116.067457, 25.703995 ], [ 116.106877, 25.701299 ], [ 116.129667, 25.758985 ], [ 116.18079, 25.778926 ], [ 116.131515, 25.824185 ], [ 116.132131, 25.860273 ], [ 116.17771, 25.894195 ], [ 116.225138, 25.908731 ], [ 116.258398, 25.902809 ], [ 116.303362, 25.924341 ], [ 116.326152, 25.956631 ], [ 116.369883, 25.963088 ], [ 116.360028, 25.991601 ], [ 116.384666, 26.030864 ], [ 116.489375, 26.113649 ], [ 116.476441, 26.172745 ], [ 116.435789, 26.159854 ], [ 116.392057, 26.171133 ], [ 116.400064, 26.202819 ], [ 116.385282, 26.238253 ], [ 116.412999, 26.297822 ], [ 116.437021, 26.308016 ], [ 116.459194, 26.345026 ], [ 116.499846, 26.361651 ], [ 116.519557, 26.410437 ], [ 116.553433, 26.400253 ], [ 116.553433, 26.365404 ], [ 116.601476, 26.372911 ], [ 116.608252, 26.429732 ], [ 116.638433, 26.477418 ], [ 116.610716, 26.476882 ], [ 116.597165, 26.512768 ], [ 116.539267, 26.559349 ], [ 116.553433, 26.575942 ], [ 116.566368, 26.650315 ], [ 116.520172, 26.684543 ], [ 116.515245, 26.720898 ], [ 116.557745, 26.773806 ], [ 116.543578, 26.803723 ], [ 116.548506, 26.84004 ], [ 116.602092, 26.888623 ], [ 116.632889, 26.933984 ], [ 116.679085, 26.978259 ], [ 116.817671, 27.018252 ], [ 116.851548, 27.009188 ], [ 116.910062, 27.034779 ], [ 116.936547, 27.019319 ], [ 116.967344, 27.061962 ], [ 117.05296, 27.100327 ], [ 117.044953, 27.146667 ], [ 117.149662, 27.241419 ], [ 117.171836, 27.29036 ], [ 117.136728, 27.303123 ], [ 117.140423, 27.322798 ], [ 117.104699, 27.330773 ], [ 117.107163, 27.393491 ], [ 117.133032, 27.42218 ], [ 117.110242, 27.458828 ], [ 117.103467, 27.533149 ], [ 117.076982, 27.566046 ], [ 117.054808, 27.5427 ], [ 117.01662, 27.563393 ], [ 117.024627, 27.592569 ], [ 117.003685, 27.625449 ], [ 117.040641, 27.669979 ], [ 117.065279, 27.665739 ], [ 117.094228, 27.627569 ], [ 117.11209, 27.645596 ], [ 117.096076, 27.667329 ], [ 117.114554, 27.692238 ], [ 117.174916, 27.677399 ], [ 117.204481, 27.683759 ], [ 117.205097, 27.714492 ], [ 117.245133, 27.71926 ], [ 117.296256, 27.764282 ], [ 117.303031, 27.833103 ], [ 117.276546, 27.847921 ], [ 117.280242, 27.871201 ], [ 117.334444, 27.8876 ], [ 117.341836, 27.855858 ], [ 117.366473, 27.88231 ], [ 117.407741, 27.893948 ], [ 117.453936, 27.939955 ], [ 117.477958, 27.930966 ], [ 117.52169, 27.982243 ], [ 117.556182, 27.966387 ], [ 117.609769, 27.863265 ], [ 117.649805, 27.851625 ], [ 117.68245, 27.823577 ], [ 117.704624, 27.834162 ], [ 117.740348, 27.800286 ], [ 117.788392, 27.855858 ], [ 117.78716, 27.896063 ], [ 117.856145, 27.94577 ], [ 117.910963, 27.949471 ], [ 117.942992, 27.974315 ], [ 117.965166, 27.962687 ], [ 117.999043, 27.991227 ], [ 118.096977, 27.970615 ], [ 118.094513, 28.003909 ], [ 118.129006, 28.017118 ], [ 118.120999, 28.041946 ], [ 118.153644, 28.062016 ], [ 118.199839, 28.049869 ], [ 118.242339, 28.075746 ], [ 118.356288, 28.091586 ], [ 118.361215, 28.155978 ], [ 118.375382, 28.186577 ], [ 118.339041, 28.193962 ], [ 118.314404, 28.221913 ], [ 118.424041, 28.291497 ], [ 118.433896, 28.288335 ], [ 118.444367, 28.253548 ], [ 118.490562, 28.238259 ], [ 118.493026, 28.262509 ], [ 118.588497, 28.282538 ], [ 118.595272, 28.258292 ], [ 118.651322, 28.277267 ], [ 118.674728, 28.27147 ], [ 118.699366, 28.309939 ], [ 118.719692, 28.312047 ], [ 118.756032, 28.252493 ], [ 118.802228, 28.240368 ], [ 118.804075, 28.207675 ], [ 118.771431, 28.188687 ], [ 118.805923, 28.154923 ], [ 118.802228, 28.117453 ], [ 118.767735, 28.10584 ], [ 118.719076, 28.063601 ], [ 118.733858, 28.027684 ], [ 118.730163, 27.970615 ], [ 118.753568, 27.947885 ], [ 118.818242, 27.916689 ], [ 118.829329, 27.847921 ], [ 118.873677, 27.733563 ], [ 118.879836, 27.667859 ], [ 118.913713, 27.619616 ], [ 118.909401, 27.568168 ], [ 118.869365, 27.540047 ], [ 118.907553, 27.460952 ], [ 118.955597, 27.4498 ], [ 118.986393, 27.47582 ], [ 118.983314, 27.498649 ], [ 119.020886, 27.498118 ], [ 119.03998, 27.478475 ], [ 119.092335, 27.466262 ], [ 119.129907, 27.475289 ], [ 119.121284, 27.438115 ], [ 119.14777, 27.424836 ], [ 119.224146, 27.416868 ], [ 119.26911, 27.42218 ], [ 119.285124, 27.457766 ], [ 119.334399, 27.480067 ], [ 119.360269, 27.524657 ], [ 119.416935, 27.539517 ], [ 119.438493, 27.508734 ], [ 119.466826, 27.526249 ], [ 119.501935, 27.610601 ], [ 119.501319, 27.649837 ], [ 119.541971, 27.666799 ], [ 119.606028, 27.674749 ], [ 119.644217, 27.663619 ], [ 119.626354, 27.620676 ], [ 119.630666, 27.582491 ], [ 119.675014, 27.574534 ], [ 119.659615, 27.540578 ], [ 119.690412, 27.537394 ], [ 119.70889, 27.514042 ], [ 119.703347, 27.446613 ], [ 119.685485, 27.438646 ], [ 119.711354, 27.403054 ], [ 119.750774, 27.373829 ], [ 119.739687, 27.362668 ], [ 119.782187, 27.330241 ], [ 119.768636, 27.307909 ], [ 119.843165, 27.300464 ], [ 119.938636, 27.329709 ], [ 119.960194, 27.365857 ], [ 120.008237, 27.375423 ], [ 120.026099, 27.344063 ], [ 120.052584, 27.338747 ], [ 120.096316, 27.390302 ], [ 120.136968, 27.402523 ], [ 120.134504, 27.420055 ], [ 120.221352, 27.420055 ], [ 120.26262, 27.432804 ], [ 120.273091, 27.38924 ], [ 120.340844, 27.399867 ], [ 120.343924, 27.363199 ], [ 120.430155, 27.258976 ], [ 120.401822, 27.250996 ], [ 120.404286, 27.204166 ], [ 120.461568, 27.142407 ], [ 120.403054, 27.10086 ], [ 120.391967, 27.081146 ], [ 120.282946, 27.089671 ], [ 120.29588, 27.035845 ], [ 120.275554, 27.027315 ], [ 120.279866, 26.987326 ], [ 120.25954, 26.982526 ], [ 120.232439, 26.907303 ], [ 120.1807, 26.920644 ], [ 120.117258, 26.916909 ], [ 120.103707, 26.873143 ], [ 120.037802, 26.86033 ], [ 120.042729, 26.828292 ], [ 120.082765, 26.822417 ], [ 120.103707, 26.794642 ], [ 120.136352, 26.797847 ], [ 120.106787, 26.752966 ], [ 120.151135, 26.750829 ], [ 120.162222, 26.717691 ], [ 120.110483, 26.692563 ], [ 120.1382, 26.638012 ], [ 120.093852, 26.613938 ], [ 120.063671, 26.627848 ], [ 120.007621, 26.595744 ], [ 119.967585, 26.597885 ], [ 119.93802, 26.576478 ], [ 119.947875, 26.56042 ], [ 119.867187, 26.509019 ], [ 119.828383, 26.524013 ], [ 119.851788, 26.595209 ], [ 119.901679, 26.624638 ], [ 119.949107, 26.624638 ], [ 119.972512, 26.654594 ], [ 119.969433, 26.686681 ], [ 119.99407, 26.720363 ], [ 120.061824, 26.768997 ], [ 120.052584, 26.786629 ], [ 119.942947, 26.784492 ], [ 119.938636, 26.747088 ], [ 119.899216, 26.693098 ], [ 119.908455, 26.661547 ], [ 119.873962, 26.642827 ], [ 119.864107, 26.671174 ], [ 119.833926, 26.690959 ], [ 119.711354, 26.686681 ], [ 119.664543, 26.726243 ], [ 119.637441, 26.703256 ], [ 119.619579, 26.649246 ], [ 119.577695, 26.622498 ], [ 119.605412, 26.595744 ], [ 119.670086, 26.618218 ], [ 119.740303, 26.610727 ], [ 119.788346, 26.583435 ], [ 119.83639, 26.454381 ], [ 119.835774, 26.434019 ], [ 119.893672, 26.355752 ], [ 119.946027, 26.374519 ], [ 119.95465, 26.352534 ], [ 119.909687, 26.310161 ], [ 119.862875, 26.307479 ], [ 119.845013, 26.323036 ], [ 119.806825, 26.307479 ], [ 119.802513, 26.268846 ], [ 119.7711, 26.285481 ], [ 119.676246, 26.262943 ], [ 119.664543, 26.202282 ], [ 119.604181, 26.168985 ], [ 119.618963, 26.11956 ], [ 119.654688, 26.090002 ], [ 119.668854, 26.026024 ], [ 119.700267, 26.032477 ], [ 119.723673, 26.011503 ], [ 119.69534, 25.904424 ], [ 119.638057, 25.889888 ], [ 119.628202, 25.87212 ], [ 119.626354, 25.723406 ], [ 119.602949, 25.714779 ], [ 119.602949, 25.68512 ], [ 119.543819, 25.684581 ], [ 119.472986, 25.662466 ], [ 119.478529, 25.631715 ], [ 119.541355, 25.6247 ], [ 119.534579, 25.585303 ], [ 119.586934, 25.59232 ], [ 119.616499, 25.556691 ], [ 119.611572, 25.519972 ], [ 119.634362, 25.475137 ], [ 119.675014, 25.475137 ], [ 119.680557, 25.497827 ], [ 119.715666, 25.51187 ], [ 119.716898, 25.551292 ], [ 119.683637, 25.592859 ], [ 119.700267, 25.616606 ], [ 119.784651, 25.667321 ], [ 119.790194, 25.614447 ], [ 119.843165, 25.597717 ], [ 119.831462, 25.579905 ], [ 119.883817, 25.546432 ], [ 119.861027, 25.531313 ], [ 119.81668, 25.532393 ], [ 119.811136, 25.507009 ], [ 119.83331, 25.48162 ], [ 119.864107, 25.48 ], [ 119.866571, 25.455145 ], [ 119.804977, 25.457847 ], [ 119.764325, 25.433529 ], [ 119.773564, 25.395691 ], [ 119.688564, 25.441095 ], [ 119.682405, 25.445959 ], [ 119.675014, 25.468113 ], [ 119.622659, 25.434069 ], [ 119.670086, 25.435691 ], [ 119.656535, 25.396772 ], [ 119.665159, 25.3719 ], [ 119.649144, 25.342697 ], [ 119.597405, 25.334584 ], [ 119.582623, 25.374063 ], [ 119.59063, 25.398394 ], [ 119.577695, 25.445959 ], [ 119.555521, 25.429205 ], [ 119.578927, 25.400556 ], [ 119.548746, 25.365952 ], [ 119.486536, 25.369737 ], [ 119.507478, 25.396231 ], [ 119.48592, 25.418935 ], [ 119.491464, 25.443257 ], [ 119.463131, 25.448661 ], [ 119.438493, 25.412449 ], [ 119.45266, 25.493505 ], [ 119.400921, 25.493505 ], [ 119.359037, 25.521592 ], [ 119.343638, 25.472436 ], [ 119.353493, 25.411908 ], [ 119.288204, 25.410827 ], [ 119.26295, 25.428124 ], [ 119.275269, 25.476758 ], [ 119.256175, 25.488643 ], [ 119.219834, 25.468654 ], [ 119.232153, 25.442176 ], [ 119.191501, 25.424341 ], [ 119.151465, 25.426503 ], [ 119.14469, 25.388121 ], [ 119.218603, 25.368115 ], [ 119.240776, 25.316733 ], [ 119.247552, 25.333502 ], [ 119.299291, 25.328634 ], [ 119.333167, 25.287516 ], [ 119.380595, 25.250173 ], [ 119.331935, 25.230685 ], [ 119.294979, 25.237182 ], [ 119.314689, 25.190076 ], [ 119.26911, 25.159746 ], [ 119.231537, 25.188993 ], [ 119.190269, 25.175995 ], [ 119.131755, 25.223106 ], [ 119.108349, 25.193867 ], [ 119.137299, 25.15487 ], [ 119.165632, 25.145661 ], [ 119.146538, 25.056782 ], [ 119.119436, 25.012861 ], [ 119.107118, 25.075214 ], [ 119.134219, 25.106107 ], [ 119.075705, 25.099604 ], [ 119.06585, 25.102855 ], [ 119.028893, 25.139702 ], [ 119.032589, 25.17437 ], [ 119.054147, 25.168412 ], [ 119.074473, 25.211195 ], [ 119.055379, 25.219316 ], [ 118.990089, 25.20199 ], [ 118.975307, 25.237723 ], [ 118.996864, 25.266411 ], [ 118.956212, 25.272905 ], [ 118.91556, 25.256668 ], [ 118.940198, 25.21715 ], [ 118.942046, 25.211195 ], [ 118.985162, 25.19495 ], [ 118.985162, 25.168954 ], [ 118.951901, 25.15162 ], [ 118.974691, 25.115319 ], [ 118.892155, 25.092558 ], [ 118.945126, 25.028588 ], [ 118.974691, 25.024792 ], [ 119.016575, 25.058409 ], [ 119.023966, 25.04377 ], [ 118.989473, 24.973807 ], [ 119.004872, 24.970009 ] ] ], [ [ [ 118.412338, 24.514538 ], [ 118.451758, 24.506915 ], [ 118.477012, 24.437738 ], [ 118.457918, 24.412128 ], [ 118.405563, 24.427931 ], [ 118.353208, 24.415398 ], [ 118.329802, 24.382152 ], [ 118.282375, 24.413218 ], [ 118.31194, 24.424661 ], [ 118.298389, 24.477506 ], [ 118.318715, 24.486765 ], [ 118.374766, 24.458986 ], [ 118.412338, 24.514538 ] ] ], [ [ [ 119.471138, 25.197116 ], [ 119.444036, 25.20199 ], [ 119.44342, 25.238806 ], [ 119.473601, 25.259916 ], [ 119.501319, 25.21715 ], [ 119.540739, 25.20199 ], [ 119.566608, 25.210112 ], [ 119.549362, 25.161912 ], [ 119.52534, 25.157579 ], [ 119.507478, 25.183036 ], [ 119.471138, 25.197116 ] ] ], [ [ [ 119.580159, 25.627398 ], [ 119.580775, 25.650059 ], [ 119.611572, 25.669479 ], [ 119.580159, 25.627398 ] ] ], [ [ [ 119.976824, 26.191005 ], [ 119.970665, 26.217852 ], [ 119.998998, 26.235569 ], [ 120.016244, 26.217316 ], [ 119.976824, 26.191005 ] ] ], [ [ [ 118.230636, 24.401228 ], [ 118.233716, 24.445911 ], [ 118.273752, 24.441007 ], [ 118.230636, 24.401228 ] ] ], [ [ [ 119.906607, 26.68989 ], [ 119.950954, 26.692563 ], [ 119.926933, 26.664756 ], [ 119.906607, 26.68989 ] ] ], [ [ [ 118.204151, 24.504737 ], [ 118.19368, 24.463344 ], [ 118.143173, 24.420847 ], [ 118.084042, 24.435559 ], [ 118.068644, 24.463344 ], [ 118.093281, 24.540672 ], [ 118.14502, 24.560814 ], [ 118.191832, 24.536861 ], [ 118.204151, 24.504737 ] ] ], [ [ [ 119.929397, 26.134067 ], [ 119.919542, 26.172208 ], [ 119.960194, 26.146961 ], [ 119.929397, 26.134067 ] ] ], [ [ [ 119.642985, 26.129231 ], [ 119.606028, 26.15287 ], [ 119.62697, 26.173282 ], [ 119.665159, 26.155556 ], [ 119.642985, 26.129231 ] ] ], [ [ [ 120.034106, 26.488667 ], [ 120.035954, 26.515981 ], [ 120.071679, 26.521336 ], [ 120.066751, 26.498308 ], [ 120.034106, 26.488667 ] ] ], [ [ [ 119.662079, 25.646822 ], [ 119.716898, 25.664624 ], [ 119.718745, 25.634952 ], [ 119.673782, 25.632794 ], [ 119.662079, 25.646822 ] ] ], [ [ [ 119.760629, 26.613402 ], [ 119.796354, 26.630523 ], [ 119.818527, 26.616613 ], [ 119.776644, 26.600025 ], [ 119.760629, 26.613402 ] ] ], [ [ [ 120.135736, 26.550784 ], [ 120.117874, 26.568984 ], [ 120.153598, 26.604841 ], [ 120.167149, 26.571661 ], [ 120.135736, 26.550784 ] ] ], [ [ [ 120.360554, 26.916909 ], [ 120.319286, 26.944654 ], [ 120.327909, 26.963858 ], [ 120.363018, 26.967592 ], [ 120.394431, 26.933984 ], [ 120.360554, 26.916909 ] ] ], [ [ [ 119.668238, 26.628383 ], [ 119.651608, 26.657269 ], [ 119.673782, 26.680799 ], [ 119.712586, 26.6685 ], [ 119.748926, 26.681334 ], [ 119.758781, 26.659408 ], [ 119.720593, 26.635873 ], [ 119.668238, 26.628383 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "360000", "name": "江西省", "center": [ 115.892151, 28.676493 ], "centroid": [ 115.732975, 27.636112 ], "childrenNum": 11, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 13, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 118.193064, 29.395472 ], [ 118.205382, 29.343839 ], [ 118.166578, 29.314099 ], [ 118.178281, 29.297921 ], [ 118.138861, 29.283828 ], [ 118.077883, 29.290614 ], [ 118.073571, 29.216993 ], [ 118.042159, 29.210202 ], [ 118.027992, 29.167882 ], [ 118.045238, 29.149068 ], [ 118.037847, 29.102017 ], [ 118.076035, 29.074822 ], [ 118.066796, 29.053898 ], [ 118.097593, 28.998952 ], [ 118.115455, 29.009944 ], [ 118.115455, 29.009944 ], [ 118.133933, 28.983771 ], [ 118.165346, 28.986912 ], [ 118.227556, 28.942406 ], [ 118.195527, 28.904167 ], [ 118.270056, 28.918836 ], [ 118.300237, 28.826075 ], [ 118.364295, 28.813491 ], [ 118.403099, 28.702791 ], [ 118.428352, 28.681267 ], [ 118.428352, 28.617193 ], [ 118.428352, 28.617193 ], [ 118.412338, 28.55676 ], [ 118.4302, 28.515225 ], [ 118.414802, 28.497344 ], [ 118.474548, 28.478934 ], [ 118.456686, 28.424738 ], [ 118.432048, 28.402104 ], [ 118.455454, 28.384204 ], [ 118.480091, 28.327325 ], [ 118.433896, 28.288335 ], [ 118.424041, 28.291497 ], [ 118.314404, 28.221913 ], [ 118.339041, 28.193962 ], [ 118.375382, 28.186577 ], [ 118.361215, 28.155978 ], [ 118.356288, 28.091586 ], [ 118.242339, 28.075746 ], [ 118.199839, 28.049869 ], [ 118.153644, 28.062016 ], [ 118.120999, 28.041946 ], [ 118.129006, 28.017118 ], [ 118.094513, 28.003909 ], [ 118.096977, 27.970615 ], [ 117.999043, 27.991227 ], [ 117.965166, 27.962687 ], [ 117.942992, 27.974315 ], [ 117.910963, 27.949471 ], [ 117.856145, 27.94577 ], [ 117.78716, 27.896063 ], [ 117.788392, 27.855858 ], [ 117.740348, 27.800286 ], [ 117.704624, 27.834162 ], [ 117.68245, 27.823577 ], [ 117.649805, 27.851625 ], [ 117.609769, 27.863265 ], [ 117.556182, 27.966387 ], [ 117.52169, 27.982243 ], [ 117.477958, 27.930966 ], [ 117.453936, 27.939955 ], [ 117.407741, 27.893948 ], [ 117.366473, 27.88231 ], [ 117.341836, 27.855858 ], [ 117.334444, 27.8876 ], [ 117.280242, 27.871201 ], [ 117.276546, 27.847921 ], [ 117.303031, 27.833103 ], [ 117.296256, 27.764282 ], [ 117.245133, 27.71926 ], [ 117.205097, 27.714492 ], [ 117.204481, 27.683759 ], [ 117.174916, 27.677399 ], [ 117.114554, 27.692238 ], [ 117.096076, 27.667329 ], [ 117.11209, 27.645596 ], [ 117.094228, 27.627569 ], [ 117.065279, 27.665739 ], [ 117.040641, 27.669979 ], [ 117.003685, 27.625449 ], [ 117.024627, 27.592569 ], [ 117.01662, 27.563393 ], [ 117.054808, 27.5427 ], [ 117.076982, 27.566046 ], [ 117.103467, 27.533149 ], [ 117.110242, 27.458828 ], [ 117.133032, 27.42218 ], [ 117.107163, 27.393491 ], [ 117.104699, 27.330773 ], [ 117.140423, 27.322798 ], [ 117.136728, 27.303123 ], [ 117.171836, 27.29036 ], [ 117.149662, 27.241419 ], [ 117.044953, 27.146667 ], [ 117.05296, 27.100327 ], [ 116.967344, 27.061962 ], [ 116.936547, 27.019319 ], [ 116.910062, 27.034779 ], [ 116.851548, 27.009188 ], [ 116.817671, 27.018252 ], [ 116.679085, 26.978259 ], [ 116.632889, 26.933984 ], [ 116.602092, 26.888623 ], [ 116.548506, 26.84004 ], [ 116.543578, 26.803723 ], [ 116.557745, 26.773806 ], [ 116.515245, 26.720898 ], [ 116.520172, 26.684543 ], [ 116.566368, 26.650315 ], [ 116.553433, 26.575942 ], [ 116.539267, 26.559349 ], [ 116.597165, 26.512768 ], [ 116.610716, 26.476882 ], [ 116.638433, 26.477418 ], [ 116.608252, 26.429732 ], [ 116.601476, 26.372911 ], [ 116.553433, 26.365404 ], [ 116.553433, 26.400253 ], [ 116.519557, 26.410437 ], [ 116.499846, 26.361651 ], [ 116.459194, 26.345026 ], [ 116.437021, 26.308016 ], [ 116.412999, 26.297822 ], [ 116.385282, 26.238253 ], [ 116.400064, 26.202819 ], [ 116.392057, 26.171133 ], [ 116.435789, 26.159854 ], [ 116.476441, 26.172745 ], [ 116.489375, 26.113649 ], [ 116.384666, 26.030864 ], [ 116.360028, 25.991601 ], [ 116.369883, 25.963088 ], [ 116.326152, 25.956631 ], [ 116.303362, 25.924341 ], [ 116.258398, 25.902809 ], [ 116.225138, 25.908731 ], [ 116.17771, 25.894195 ], [ 116.132131, 25.860273 ], [ 116.131515, 25.824185 ], [ 116.18079, 25.778926 ], [ 116.129667, 25.758985 ], [ 116.106877, 25.701299 ], [ 116.067457, 25.703995 ], [ 116.068689, 25.646282 ], [ 116.041588, 25.62416 ], [ 116.063145, 25.56317 ], [ 116.040356, 25.548052 ], [ 116.03666, 25.514571 ], [ 116.005247, 25.490264 ], [ 116.023109, 25.435691 ], [ 115.992928, 25.374063 ], [ 116.008327, 25.319437 ], [ 115.987385, 25.290221 ], [ 115.949813, 25.292386 ], [ 115.930719, 25.236099 ], [ 115.855574, 25.20957 ], [ 115.860501, 25.165704 ], [ 115.888219, 25.128866 ], [ 115.880212, 25.092016 ], [ 115.908545, 25.084428 ], [ 115.928255, 25.050276 ], [ 115.873436, 25.019911 ], [ 115.925175, 24.960786 ], [ 115.870356, 24.959701 ], [ 115.89253, 24.936911 ], [ 115.885139, 24.898918 ], [ 115.907313, 24.879917 ], [ 115.861733, 24.863629 ], [ 115.863581, 24.891318 ], [ 115.824161, 24.909232 ], [ 115.807531, 24.862543 ], [ 115.790284, 24.856027 ], [ 115.764415, 24.791933 ], [ 115.776734, 24.774546 ], [ 115.756408, 24.749004 ], [ 115.769342, 24.708236 ], [ 115.801371, 24.705517 ], [ 115.780429, 24.663103 ], [ 115.797676, 24.628834 ], [ 115.840791, 24.584217 ], [ 115.843871, 24.562446 ], [ 115.785357, 24.567345 ], [ 115.752712, 24.546116 ], [ 115.68927, 24.545027 ], [ 115.671408, 24.604895 ], [ 115.605503, 24.62557 ], [ 115.569778, 24.622306 ], [ 115.555611, 24.683768 ], [ 115.522967, 24.702799 ], [ 115.476771, 24.762591 ], [ 115.412714, 24.79302 ], [ 115.372678, 24.774546 ], [ 115.358511, 24.735416 ], [ 115.306772, 24.758787 ], [ 115.269816, 24.749548 ], [ 115.258729, 24.728894 ], [ 115.1842, 24.711498 ], [ 115.104744, 24.667997 ], [ 115.083802, 24.699537 ], [ 115.057317, 24.703343 ], [ 115.024672, 24.669085 ], [ 115.00373, 24.679418 ], [ 114.940288, 24.650049 ], [ 114.909491, 24.661471 ], [ 114.893477, 24.582584 ], [ 114.868839, 24.562446 ], [ 114.846665, 24.602719 ], [ 114.827571, 24.588026 ], [ 114.781376, 24.613057 ], [ 114.729637, 24.608704 ], [ 114.73826, 24.565168 ], [ 114.704999, 24.525973 ], [ 114.664963, 24.583673 ], [ 114.627391, 24.576598 ], [ 114.589819, 24.537406 ], [ 114.534384, 24.559181 ], [ 114.429058, 24.48622 ], [ 114.403189, 24.497657 ], [ 114.391486, 24.563535 ], [ 114.363769, 24.582584 ], [ 114.300943, 24.578775 ], [ 114.289856, 24.619042 ], [ 114.258443, 24.641346 ], [ 114.19069, 24.656576 ], [ 114.169132, 24.689749 ], [ 114.27261, 24.700624 ], [ 114.281849, 24.724001 ], [ 114.336052, 24.749004 ], [ 114.342211, 24.807145 ], [ 114.378551, 24.861457 ], [ 114.403189, 24.877746 ], [ 114.395798, 24.951019 ], [ 114.454928, 24.977062 ], [ 114.45616, 24.99659 ], [ 114.506051, 24.999844 ], [ 114.532536, 25.022623 ], [ 114.561485, 25.077382 ], [ 114.604601, 25.083886 ], [ 114.640326, 25.074129 ], [ 114.664963, 25.10123 ], [ 114.735796, 25.121822 ], [ 114.73518, 25.155954 ], [ 114.685905, 25.173287 ], [ 114.693912, 25.213902 ], [ 114.73518, 25.225813 ], [ 114.743188, 25.274528 ], [ 114.714238, 25.315651 ], [ 114.63663, 25.324306 ], [ 114.599674, 25.385959 ], [ 114.541159, 25.416773 ], [ 114.477718, 25.37136 ], [ 114.438914, 25.376226 ], [ 114.43029, 25.343779 ], [ 114.382863, 25.317274 ], [ 114.31511, 25.33837 ], [ 114.2954, 25.299961 ], [ 114.260291, 25.291845 ], [ 114.204857, 25.29942 ], [ 114.190074, 25.316733 ], [ 114.115545, 25.302125 ], [ 114.083517, 25.275611 ], [ 114.055799, 25.277775 ], [ 114.039785, 25.250714 ], [ 114.017611, 25.273987 ], [ 114.029314, 25.328093 ], [ 114.050256, 25.36433 ], [ 113.983118, 25.415152 ], [ 114.003444, 25.442716 ], [ 113.94493, 25.441635 ], [ 113.962792, 25.528072 ], [ 113.986198, 25.529153 ], [ 113.983118, 25.599336 ], [ 113.957249, 25.611749 ], [ 113.913517, 25.701299 ], [ 113.920293, 25.741197 ], [ 113.961561, 25.77731 ], [ 113.971416, 25.836036 ], [ 114.028082, 25.893119 ], [ 114.028082, 25.98138 ], [ 114.008372, 26.015806 ], [ 114.044096, 26.076564 ], [ 114.087828, 26.06635 ], [ 114.121089, 26.085702 ], [ 114.10569, 26.097526 ], [ 114.188842, 26.121172 ], [ 114.237501, 26.152333 ], [ 114.216559, 26.203355 ], [ 114.181451, 26.214631 ], [ 114.102611, 26.187783 ], [ 114.088444, 26.168448 ], [ 114.013299, 26.184023 ], [ 113.962792, 26.150722 ], [ 113.949242, 26.192616 ], [ 113.972647, 26.20604 ], [ 113.978807, 26.237716 ], [ 114.029314, 26.266163 ], [ 114.021307, 26.288701 ], [ 114.047792, 26.337518 ], [ 114.030546, 26.376664 ], [ 114.062575, 26.406149 ], [ 114.085364, 26.406149 ], [ 114.090292, 26.455988 ], [ 114.110002, 26.482775 ], [ 114.07243, 26.480096 ], [ 114.10877, 26.56952 ], [ 114.019459, 26.587182 ], [ 113.996669, 26.615543 ], [ 113.912901, 26.613938 ], [ 113.860546, 26.664221 ], [ 113.853771, 26.769532 ], [ 113.835909, 26.806394 ], [ 113.877177, 26.859262 ], [ 113.890112, 26.895562 ], [ 113.927068, 26.948922 ], [ 113.892575, 26.964925 ], [ 113.86301, 27.018252 ], [ 113.824206, 27.036378 ], [ 113.803264, 27.099261 ], [ 113.771851, 27.096598 ], [ 113.779242, 27.137081 ], [ 113.846996, 27.222262 ], [ 113.872865, 27.289828 ], [ 113.854387, 27.30525 ], [ 113.872865, 27.346721 ], [ 113.872865, 27.384988 ], [ 113.72812, 27.350442 ], [ 113.699786, 27.331836 ], [ 113.657902, 27.347253 ], [ 113.616635, 27.345658 ], [ 113.605548, 27.38924 ], [ 113.632033, 27.40518 ], [ 113.59754, 27.428554 ], [ 113.591381, 27.467855 ], [ 113.627105, 27.49971 ], [ 113.583374, 27.524657 ], [ 113.579062, 27.545354 ], [ 113.608627, 27.585143 ], [ 113.607395, 27.625449 ], [ 113.652359, 27.663619 ], [ 113.696707, 27.71979 ], [ 113.69917, 27.740979 ], [ 113.763228, 27.799228 ], [ 113.756453, 27.860091 ], [ 113.72812, 27.874904 ], [ 113.752141, 27.93361 ], [ 113.822974, 27.982243 ], [ 113.845148, 27.971672 ], [ 113.864242, 28.004966 ], [ 113.914133, 27.991227 ], [ 113.936307, 28.018703 ], [ 113.966488, 28.017646 ], [ 113.970184, 28.041418 ], [ 114.025618, 28.031382 ], [ 114.047176, 28.057263 ], [ 114.025002, 28.080499 ], [ 113.992357, 28.161255 ], [ 114.012068, 28.174972 ], [ 114.068734, 28.171806 ], [ 114.107538, 28.182885 ], [ 114.109386, 28.205038 ], [ 114.143879, 28.246694 ], [ 114.182067, 28.249858 ], [ 114.198081, 28.29097 ], [ 114.2529, 28.319423 ], [ 114.252284, 28.395787 ], [ 114.214712, 28.403157 ], [ 114.172212, 28.432632 ], [ 114.217175, 28.466308 ], [ 114.218407, 28.48472 ], [ 114.15435, 28.507337 ], [ 114.138335, 28.533629 ], [ 114.08598, 28.558337 ], [ 114.132176, 28.607211 ], [ 114.122321, 28.623497 ], [ 114.157429, 28.761566 ], [ 114.137719, 28.779926 ], [ 114.153734, 28.829221 ], [ 114.124784, 28.843376 ], [ 114.076741, 28.834464 ], [ 114.056415, 28.872204 ], [ 114.060111, 28.902596 ], [ 114.028082, 28.891069 ], [ 114.005292, 28.917788 ], [ 114.008988, 28.955498 ], [ 113.973879, 28.937692 ], [ 113.955401, 28.978536 ], [ 113.961561, 28.999476 ], [ 113.94185, 29.047097 ], [ 113.952321, 29.092604 ], [ 113.98743, 29.126068 ], [ 114.034857, 29.152204 ], [ 114.063191, 29.204978 ], [ 114.169748, 29.216993 ], [ 114.252284, 29.23475 ], [ 114.259059, 29.343839 ], [ 114.307102, 29.365225 ], [ 114.341595, 29.327665 ], [ 114.376088, 29.322969 ], [ 114.440145, 29.341752 ], [ 114.466015, 29.324013 ], [ 114.519602, 29.325578 ], [ 114.589819, 29.352707 ], [ 114.621847, 29.379828 ], [ 114.67297, 29.395993 ], [ 114.740724, 29.386607 ], [ 114.759818, 29.363139 ], [ 114.784455, 29.386086 ], [ 114.812173, 29.383478 ], [ 114.866375, 29.404335 ], [ 114.895325, 29.397557 ], [ 114.931049, 29.422581 ], [ 114.947063, 29.465317 ], [ 114.935977, 29.486678 ], [ 114.90518, 29.473132 ], [ 114.918114, 29.454374 ], [ 114.888549, 29.436134 ], [ 114.860216, 29.476258 ], [ 114.900868, 29.505951 ], [ 114.940288, 29.493971 ], [ 114.966773, 29.522096 ], [ 114.947679, 29.542924 ], [ 115.00065, 29.572076 ], [ 115.033295, 29.546568 ], [ 115.087498, 29.560104 ], [ 115.086266, 29.525741 ], [ 115.154019, 29.510117 ], [ 115.157099, 29.584568 ], [ 115.120142, 29.597578 ], [ 115.143548, 29.645961 ], [ 115.117679, 29.655843 ], [ 115.113367, 29.684963 ], [ 115.176809, 29.654803 ], [ 115.250722, 29.660003 ], [ 115.28583, 29.618391 ], [ 115.304924, 29.637118 ], [ 115.355431, 29.649602 ], [ 115.412714, 29.688602 ], [ 115.470612, 29.739539 ], [ 115.479235, 29.811224 ], [ 115.51188, 29.840299 ], [ 115.611662, 29.841337 ], [ 115.667712, 29.850161 ], [ 115.706517, 29.837703 ], [ 115.762567, 29.793048 ], [ 115.837096, 29.748373 ], [ 115.909777, 29.723949 ], [ 115.965827, 29.724469 ], [ 116.049595, 29.761881 ], [ 116.087167, 29.795125 ], [ 116.13521, 29.819532 ], [ 116.172783, 29.828358 ], [ 116.227601, 29.816936 ], [ 116.250391, 29.785777 ], [ 116.280572, 29.788893 ], [ 116.342782, 29.835626 ], [ 116.467818, 29.896347 ], [ 116.525716, 29.897385 ], [ 116.552201, 29.909836 ], [ 116.585462, 30.045657 ], [ 116.620571, 30.073109 ], [ 116.666766, 30.076734 ], [ 116.720353, 30.053945 ], [ 116.747454, 30.057053 ], [ 116.783794, 30.030632 ], [ 116.802889, 29.99643 ], [ 116.830606, 30.004723 ], [ 116.83307, 29.95755 ], [ 116.868794, 29.980361 ], [ 116.900207, 29.949253 ], [ 116.882961, 29.893753 ], [ 116.780715, 29.792529 ], [ 116.762237, 29.802396 ], [ 116.673541, 29.709916 ], [ 116.653831, 29.694841 ], [ 116.680317, 29.681323 ], [ 116.651983, 29.637118 ], [ 116.716657, 29.590813 ], [ 116.721585, 29.564789 ], [ 116.760389, 29.599139 ], [ 116.780715, 29.569994 ], [ 116.849084, 29.57624 ], [ 116.873722, 29.609546 ], [ 116.939627, 29.648561 ], [ 116.974736, 29.657403 ], [ 116.996294, 29.683403 ], [ 117.041873, 29.680803 ], [ 117.112706, 29.711995 ], [ 117.108395, 29.75201 ], [ 117.136728, 29.775388 ], [ 117.123177, 29.798761 ], [ 117.073286, 29.831992 ], [ 117.127489, 29.86158 ], [ 117.129952, 29.89946 ], [ 117.171836, 29.920729 ], [ 117.2168, 29.926953 ], [ 117.246365, 29.915023 ], [ 117.261763, 29.880781 ], [ 117.25314, 29.834588 ], [ 117.29256, 29.822647 ], [ 117.338756, 29.848085 ], [ 117.359082, 29.812782 ], [ 117.382487, 29.840818 ], [ 117.415132, 29.85068 ], [ 117.408973, 29.802396 ], [ 117.455168, 29.749412 ], [ 117.453936, 29.688082 ], [ 117.490277, 29.660003 ], [ 117.530313, 29.654282 ], [ 117.523538, 29.630356 ], [ 117.543248, 29.588731 ], [ 117.608537, 29.591333 ], [ 117.647957, 29.614749 ], [ 117.678754, 29.595496 ], [ 117.690457, 29.555939 ], [ 117.729877, 29.550213 ], [ 117.795167, 29.570515 ], [ 117.872775, 29.54761 ], [ 117.933753, 29.549172 ], [ 118.00397, 29.578322 ], [ 118.042774, 29.566351 ], [ 118.050782, 29.542924 ], [ 118.095129, 29.534072 ], [ 118.143788, 29.489803 ], [ 118.127774, 29.47209 ], [ 118.136397, 29.418932 ], [ 118.193064, 29.395472 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "370000", "name": "山东省", "center": [ 117.000923, 36.675807 ], "centroid": [ 118.187667, 36.376018 ], "childrenNum": 16, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 14, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 116.374195, 34.640011 ], [ 116.334159, 34.620806 ], [ 116.32492, 34.601104 ], [ 116.286116, 34.608986 ], [ 116.247927, 34.551829 ], [ 116.196804, 34.575977 ], [ 116.156768, 34.5538 ], [ 116.134594, 34.559715 ], [ 116.101334, 34.60603 ], [ 116.037276, 34.593222 ], [ 115.991081, 34.615389 ], [ 115.984305, 34.589281 ], [ 115.838328, 34.5676 ], [ 115.827241, 34.558236 ], [ 115.787821, 34.580905 ], [ 115.697278, 34.594207 ], [ 115.685575, 34.556265 ], [ 115.622749, 34.574499 ], [ 115.553148, 34.568586 ], [ 115.515575, 34.582383 ], [ 115.461373, 34.637057 ], [ 115.433655, 34.725149 ], [ 115.449054, 34.74433 ], [ 115.42688, 34.805285 ], [ 115.317243, 34.859321 ], [ 115.256265, 34.845079 ], [ 115.239019, 34.87798 ], [ 115.251953, 34.906451 ], [ 115.205142, 34.914303 ], [ 115.219309, 34.96042 ], [ 115.157099, 34.957968 ], [ 115.12815, 35.00455 ], [ 115.075179, 35.000628 ], [ 115.028983, 34.9717 ], [ 115.008041, 34.988372 ], [ 114.950759, 34.989843 ], [ 114.923658, 34.968757 ], [ 114.880542, 35.00357 ], [ 114.824492, 35.012393 ], [ 114.852209, 35.041797 ], [ 114.818948, 35.051596 ], [ 114.835578, 35.076578 ], [ 114.883006, 35.098615 ], [ 114.841738, 35.15099 ], [ 114.861448, 35.182301 ], [ 114.932281, 35.198441 ], [ 114.929201, 35.244886 ], [ 114.957534, 35.261014 ], [ 115.04315, 35.376744 ], [ 115.073947, 35.374304 ], [ 115.091809, 35.416259 ], [ 115.117679, 35.400163 ], [ 115.126302, 35.41821 ], [ 115.172497, 35.426501 ], [ 115.237171, 35.423087 ], [ 115.307388, 35.480126 ], [ 115.356047, 35.490359 ], [ 115.34496, 35.55368 ], [ 115.383148, 35.568772 ], [ 115.48601, 35.710306 ], [ 115.52851, 35.733628 ], [ 115.622749, 35.739457 ], [ 115.693582, 35.754028 ], [ 115.696046, 35.788989 ], [ 115.73485, 35.833154 ], [ 115.773654, 35.854014 ], [ 115.81677, 35.844312 ], [ 115.859886, 35.857894 ], [ 115.882675, 35.879718 ], [ 115.873436, 35.918985 ], [ 115.907929, 35.92674 ], [ 115.911624, 35.960171 ], [ 115.984921, 35.974218 ], [ 116.048979, 35.970343 ], [ 116.063145, 36.028927 ], [ 116.099486, 36.112129 ], [ 116.057602, 36.104877 ], [ 115.989849, 36.045381 ], [ 115.89869, 36.026507 ], [ 115.859886, 36.003756 ], [ 115.817386, 36.012954 ], [ 115.779813, 35.993588 ], [ 115.774886, 35.974702 ], [ 115.699125, 35.966468 ], [ 115.648618, 35.922863 ], [ 115.583945, 35.921893 ], [ 115.513112, 35.890385 ], [ 115.505104, 35.899112 ], [ 115.495249, 35.896203 ], [ 115.487858, 35.880688 ], [ 115.460141, 35.867594 ], [ 115.407786, 35.80889 ], [ 115.363438, 35.779765 ], [ 115.335105, 35.796756 ], [ 115.364054, 35.894264 ], [ 115.353583, 35.938854 ], [ 115.362822, 35.971796 ], [ 115.447822, 36.01247 ], [ 115.449054, 36.047317 ], [ 115.484163, 36.125666 ], [ 115.483547, 36.148865 ], [ 115.474923, 36.248352 ], [ 115.466916, 36.258969 ], [ 115.466916, 36.258969 ], [ 115.462605, 36.276339 ], [ 115.417025, 36.292742 ], [ 115.423185, 36.32216 ], [ 115.366518, 36.30914 ], [ 115.368982, 36.342409 ], [ 115.340033, 36.398307 ], [ 115.297533, 36.413239 ], [ 115.317243, 36.454166 ], [ 115.291374, 36.460423 ], [ 115.272895, 36.497476 ], [ 115.33141, 36.550378 ], [ 115.355431, 36.627262 ], [ 115.365902, 36.621979 ], [ 115.420105, 36.686795 ], [ 115.451518, 36.702151 ], [ 115.479851, 36.760187 ], [ 115.524815, 36.763543 ], [ 115.686807, 36.810034 ], [ 115.688654, 36.838777 ], [ 115.71206, 36.883308 ], [ 115.75764, 36.902453 ], [ 115.79706, 36.968945 ], [ 115.776734, 36.992848 ], [ 115.85619, 37.060694 ], [ 115.888219, 37.112254 ], [ 115.879596, 37.150901 ], [ 115.91224, 37.177132 ], [ 115.909777, 37.20669 ], [ 115.969523, 37.239572 ], [ 115.975682, 37.337179 ], [ 116.024341, 37.360015 ], [ 116.085935, 37.373809 ], [ 116.106261, 37.368577 ], [ 116.169087, 37.384271 ], [ 116.193109, 37.365723 ], [ 116.236224, 37.361442 ], [ 116.2855, 37.404241 ], [ 116.226369, 37.428007 ], [ 116.243, 37.447965 ], [ 116.224522, 37.479791 ], [ 116.240536, 37.489764 ], [ 116.240536, 37.489764 ], [ 116.27626, 37.466967 ], [ 116.290427, 37.484065 ], [ 116.278724, 37.524895 ], [ 116.295355, 37.554316 ], [ 116.336007, 37.581355 ], [ 116.36742, 37.566177 ], [ 116.379738, 37.522047 ], [ 116.38097, 37.522522 ], [ 116.379738, 37.522047 ], [ 116.38097, 37.522522 ], [ 116.433941, 37.473142 ], [ 116.448108, 37.503059 ], [ 116.4826, 37.521573 ], [ 116.575607, 37.610754 ], [ 116.604556, 37.624975 ], [ 116.66307, 37.686096 ], [ 116.679085, 37.728708 ], [ 116.724664, 37.744327 ], [ 116.753613, 37.77035 ], [ 116.753613, 37.793054 ], [ 116.804736, 37.848837 ], [ 116.837997, 37.835132 ], [ 116.919301, 37.846002 ], [ 117.027091, 37.832296 ], [ 117.074518, 37.848837 ], [ 117.150278, 37.839385 ], [ 117.185387, 37.849783 ], [ 117.271618, 37.839858 ], [ 117.320278, 37.861596 ], [ 117.400966, 37.844584 ], [ 117.438538, 37.854035 ], [ 117.481038, 37.914967 ], [ 117.513067, 37.94329 ], [ 117.524154, 37.989527 ], [ 117.557414, 38.046105 ], [ 117.557414, 38.046105 ], [ 117.586979, 38.071551 ], [ 117.704624, 38.076262 ], [ 117.746508, 38.12524 ], [ 117.771145, 38.134655 ], [ 117.766834, 38.158658 ], [ 117.789007, 38.180772 ], [ 117.808718, 38.22827 ], [ 117.848754, 38.255062 ], [ 117.895565, 38.301572 ], [ 117.896797, 38.279495 ], [ 118.018753, 38.202409 ], [ 118.045238, 38.214165 ], [ 118.112376, 38.210403 ], [ 118.177665, 38.186417 ], [ 118.217085, 38.146893 ], [ 118.331034, 38.12524 ], [ 118.404331, 38.121003 ], [ 118.431432, 38.106406 ], [ 118.44991, 38.124299 ], [ 118.504729, 38.11394 ], [ 118.534294, 38.063541 ], [ 118.552156, 38.05553 ], [ 118.597736, 38.079088 ], [ 118.607591, 38.129006 ], [ 118.626069, 38.138421 ], [ 118.703677, 38.151129 ], [ 118.811467, 38.157717 ], [ 118.908169, 38.139362 ], [ 118.974075, 38.094162 ], [ 119.001792, 37.99613 ], [ 119.110813, 37.921577 ], [ 119.12806, 37.847892 ], [ 119.16132, 37.81906 ], [ 119.212443, 37.838913 ], [ 119.24016, 37.878131 ], [ 119.291899, 37.869627 ], [ 119.309146, 37.805349 ], [ 119.280197, 37.692726 ], [ 119.262334, 37.660517 ], [ 119.236465, 37.651988 ], [ 119.153313, 37.655305 ], [ 119.023966, 37.642037 ], [ 118.988857, 37.620709 ], [ 118.939582, 37.527268 ], [ 118.942662, 37.497361 ], [ 119.001176, 37.31862 ], [ 119.03998, 37.30434 ], [ 119.054147, 37.254816 ], [ 119.084328, 37.239572 ], [ 119.091103, 37.257674 ], [ 119.12806, 37.254816 ], [ 119.136683, 37.230995 ], [ 119.204436, 37.280058 ], [ 119.190885, 37.25958 ], [ 119.2069, 37.223371 ], [ 119.298675, 37.197156 ], [ 119.301138, 37.139452 ], [ 119.327624, 37.115595 ], [ 119.361501, 37.125616 ], [ 119.428022, 37.125616 ], [ 119.489616, 37.134681 ], [ 119.576463, 37.127524 ], [ 119.678709, 37.158056 ], [ 119.698419, 37.127047 ], [ 119.744615, 37.135158 ], [ 119.83023, 37.225754 ], [ 119.865339, 37.233854 ], [ 119.89244, 37.263866 ], [ 119.883201, 37.311004 ], [ 119.837006, 37.346695 ], [ 119.843781, 37.376662 ], [ 119.926933, 37.386649 ], [ 119.949723, 37.419927 ], [ 120.010085, 37.442263 ], [ 120.064903, 37.448915 ], [ 120.086461, 37.465067 ], [ 120.144359, 37.481691 ], [ 120.222584, 37.532963 ], [ 120.246605, 37.556689 ], [ 120.208417, 37.588469 ], [ 120.215192, 37.621183 ], [ 120.272475, 37.636824 ], [ 120.269395, 37.658622 ], [ 120.22012, 37.671886 ], [ 120.227511, 37.693673 ], [ 120.367945, 37.697935 ], [ 120.454793, 37.757576 ], [ 120.517619, 37.750005 ], [ 120.590915, 37.7642 ], [ 120.634031, 37.796364 ], [ 120.656821, 37.793054 ], [ 120.733197, 37.833714 ], [ 120.839139, 37.82426 ], [ 120.845298, 37.826623 ], [ 120.874863, 37.833241 ], [ 120.940769, 37.819533 ], [ 120.943233, 37.785486 ], [ 120.994356, 37.759468 ], [ 121.037471, 37.718767 ], [ 121.136022, 37.723501 ], [ 121.160043, 37.698882 ], [ 121.142797, 37.661464 ], [ 121.161891, 37.646302 ], [ 121.148956, 37.626397 ], [ 121.17421, 37.597479 ], [ 121.217326, 37.582778 ], [ 121.304789, 37.582778 ], [ 121.358376, 37.597479 ], [ 121.349137, 37.635403 ], [ 121.391021, 37.625449 ], [ 121.435368, 37.592737 ], [ 121.395948, 37.589891 ], [ 121.400876, 37.557638 ], [ 121.460006, 37.522522 ], [ 121.477252, 37.475992 ], [ 121.571491, 37.441313 ], [ 121.575802, 37.460317 ], [ 121.635548, 37.494037 ], [ 121.66573, 37.473617 ], [ 121.772903, 37.466492 ], [ 121.923808, 37.473142 ], [ 121.997721, 37.494512 ], [ 122.017431, 37.531065 ], [ 122.075329, 37.540556 ], [ 122.08888, 37.554316 ], [ 122.150474, 37.557163 ], [ 122.163408, 37.519199 ], [ 122.131996, 37.49926 ], [ 122.166488, 37.438937 ], [ 122.194205, 37.456041 ], [ 122.25272, 37.467917 ], [ 122.287212, 37.445114 ], [ 122.281053, 37.430858 ], [ 122.337103, 37.414223 ], [ 122.41656, 37.414699 ], [ 122.487393, 37.43466 ], [ 122.4954, 37.413748 ], [ 122.553914, 37.407093 ], [ 122.641377, 37.428482 ], [ 122.67587, 37.413273 ], [ 122.701739, 37.418501 ], [ 122.714058, 37.392355 ], [ 122.6925, 37.373809 ], [ 122.650616, 37.388551 ], [ 122.607501, 37.364296 ], [ 122.611196, 37.339558 ], [ 122.573624, 37.296247 ], [ 122.567465, 37.25958 ], [ 122.592718, 37.261485 ], [ 122.624131, 37.190959 ], [ 122.573624, 37.176178 ], [ 122.581015, 37.147562 ], [ 122.533588, 37.153286 ], [ 122.484313, 37.128956 ], [ 122.478769, 37.058784 ], [ 122.467067, 37.037289 ], [ 122.494168, 37.033945 ], [ 122.575472, 37.054485 ], [ 122.583479, 37.037289 ], [ 122.544675, 37.004797 ], [ 122.55761, 36.968467 ], [ 122.532356, 36.901496 ], [ 122.48924, 36.886659 ], [ 122.483081, 36.913938 ], [ 122.434422, 36.914416 ], [ 122.457212, 36.868946 ], [ 122.383915, 36.865595 ], [ 122.378371, 36.844525 ], [ 122.344495, 36.828239 ], [ 122.280437, 36.835904 ], [ 122.275509, 36.83734 ], [ 122.220691, 36.848835 ], [ 122.174495, 36.842609 ], [ 122.188662, 36.866073 ], [ 122.175727, 36.894317 ], [ 122.119677, 36.891924 ], [ 122.141235, 36.938337 ], [ 122.124604, 36.944077 ], [ 122.115981, 36.94025 ], [ 122.093191, 36.913938 ], [ 122.051923, 36.904846 ], [ 122.042684, 36.871819 ], [ 122.008808, 36.96225 ], [ 121.965076, 36.938337 ], [ 121.927504, 36.932597 ], [ 121.767975, 36.874691 ], [ 121.762432, 36.84644 ], [ 121.726092, 36.826323 ], [ 121.6762, 36.819137 ], [ 121.631853, 36.80093 ], [ 121.651563, 36.723739 ], [ 121.556092, 36.764502 ], [ 121.575186, 36.740047 ], [ 121.532071, 36.73621 ], [ 121.485259, 36.786073 ], [ 121.548701, 36.807638 ], [ 121.565331, 36.830635 ], [ 121.506817, 36.803805 ], [ 121.496962, 36.795179 ], [ 121.454462, 36.752515 ], [ 121.3941, 36.738129 ], [ 121.400876, 36.701191 ], [ 121.35776, 36.713186 ], [ 121.31218, 36.702151 ], [ 121.29863, 36.702151 ], [ 121.251818, 36.671436 ], [ 121.161275, 36.651273 ], [ 121.078123, 36.607568 ], [ 121.028848, 36.572971 ], [ 120.955551, 36.575855 ], [ 120.926602, 36.611892 ], [ 120.882255, 36.627262 ], [ 120.847146, 36.618617 ], [ 120.884718, 36.601323 ], [ 120.909972, 36.568645 ], [ 120.962327, 36.562877 ], [ 120.983269, 36.546051 ], [ 120.95432, 36.507578 ], [ 120.965407, 36.466199 ], [ 120.938305, 36.447908 ], [ 120.90874, 36.450315 ], [ 120.919827, 36.419018 ], [ 120.871784, 36.36699 ], [ 120.848994, 36.403124 ], [ 120.858849, 36.424797 ], [ 120.828668, 36.46668 ], [ 120.759683, 36.46283 ], [ 120.694393, 36.390118 ], [ 120.744284, 36.327946 ], [ 120.66298, 36.331803 ], [ 120.653741, 36.282129 ], [ 120.686386, 36.279234 ], [ 120.696857, 36.15563 ], [ 120.712255, 36.126632 ], [ 120.672835, 36.130016 ], [ 120.64327, 36.114547 ], [ 120.615553, 36.120348 ], [ 120.593995, 36.100525 ], [ 120.546568, 36.107778 ], [ 120.546568, 36.091821 ], [ 120.468959, 36.087952 ], [ 120.429539, 36.056994 ], [ 120.370409, 36.053607 ], [ 120.289721, 36.059413 ], [ 120.35809, 36.174956 ], [ 120.362402, 36.196209 ], [ 120.319902, 36.232423 ], [ 120.297112, 36.225664 ], [ 120.310047, 36.185101 ], [ 120.263236, 36.182202 ], [ 120.260772, 36.198624 ], [ 120.224432, 36.19138 ], [ 120.22012, 36.209248 ], [ 120.181316, 36.203936 ], [ 120.140664, 36.173507 ], [ 120.142512, 36.143549 ], [ 120.108635, 36.127599 ], [ 120.116642, 36.102943 ], [ 120.152367, 36.095206 ], [ 120.181316, 36.066669 ], [ 120.239214, 36.062316 ], [ 120.234902, 36.030863 ], [ 120.198562, 35.995525 ], [ 120.257076, 36.025055 ], [ 120.249069, 35.992136 ], [ 120.285409, 36.01247 ], [ 120.289721, 36.017311 ], [ 120.316206, 36.002304 ], [ 120.30512, 35.971796 ], [ 120.265699, 35.966468 ], [ 120.209033, 35.917531 ], [ 120.202258, 35.89184 ], [ 120.169613, 35.888446 ], [ 120.207801, 35.947575 ], [ 120.152983, 35.907353 ], [ 120.125265, 35.906868 ], [ 120.112331, 35.885052 ], [ 120.064287, 35.873414 ], [ 120.032258, 35.812288 ], [ 120.049505, 35.786562 ], [ 120.01378, 35.714193 ], [ 119.958346, 35.760342 ], [ 119.926317, 35.759856 ], [ 119.920157, 35.739943 ], [ 119.950339, 35.729741 ], [ 119.91215, 35.660725 ], [ 119.925085, 35.637382 ], [ 119.868419, 35.60868 ], [ 119.83023, 35.620357 ], [ 119.824071, 35.646136 ], [ 119.792658, 35.615492 ], [ 119.800665, 35.581915 ], [ 119.752622, 35.588729 ], [ 119.75139, 35.617924 ], [ 119.718129, 35.615492 ], [ 119.662079, 35.589215 ], [ 119.663311, 35.562931 ], [ 119.618963, 35.459655 ], [ 119.579543, 35.406504 ], [ 119.590014, 35.37284 ], [ 119.543819, 35.347949 ], [ 119.538275, 35.296678 ], [ 119.493312, 35.318655 ], [ 119.450812, 35.285443 ], [ 119.411392, 35.231689 ], [ 119.397841, 35.137777 ], [ 119.428022, 35.121136 ], [ 119.373819, 35.078538 ], [ 119.354109, 35.080007 ], [ 119.306066, 35.076578 ], [ 119.286972, 35.115261 ], [ 119.250016, 35.124562 ], [ 119.217371, 35.106939 ], [ 119.137915, 35.096167 ], [ 119.114509, 35.055026 ], [ 119.027045, 35.055516 ], [ 118.942662, 35.040817 ], [ 118.928495, 35.051106 ], [ 118.86259, 35.025626 ], [ 118.860742, 34.944233 ], [ 118.805307, 34.87307 ], [ 118.80038, 34.843114 ], [ 118.772047, 34.794474 ], [ 118.739402, 34.792508 ], [ 118.719076, 34.745313 ], [ 118.764039, 34.740396 ], [ 118.783749, 34.723181 ], [ 118.739402, 34.693663 ], [ 118.690127, 34.678408 ], [ 118.664257, 34.693663 ], [ 118.607591, 34.694155 ], [ 118.601431, 34.714327 ], [ 118.545997, 34.705964 ], [ 118.460997, 34.656258 ], [ 118.473932, 34.623269 ], [ 118.439439, 34.626223 ], [ 118.424657, 34.595193 ], [ 118.439439, 34.507949 ], [ 118.416034, 34.473914 ], [ 118.404947, 34.427525 ], [ 118.379693, 34.415183 ], [ 118.290382, 34.424563 ], [ 118.277447, 34.404814 ], [ 118.220165, 34.405802 ], [ 118.217701, 34.379134 ], [ 118.179513, 34.379628 ], [ 118.177665, 34.45319 ], [ 118.132702, 34.483287 ], [ 118.16473, 34.50499 ], [ 118.185056, 34.543942 ], [ 118.079115, 34.569571 ], [ 118.114839, 34.614404 ], [ 118.084042, 34.655766 ], [ 118.053861, 34.650843 ], [ 117.951615, 34.678408 ], [ 117.909732, 34.670533 ], [ 117.902956, 34.644443 ], [ 117.793935, 34.651827 ], [ 117.791471, 34.583368 ], [ 117.801942, 34.518798 ], [ 117.684298, 34.547392 ], [ 117.659044, 34.501044 ], [ 117.609769, 34.490686 ], [ 117.592523, 34.462566 ], [ 117.53832, 34.467006 ], [ 117.465023, 34.484767 ], [ 117.402813, 34.550843 ], [ 117.402813, 34.569571 ], [ 117.362777, 34.589281 ], [ 117.325205, 34.573021 ], [ 117.325205, 34.573021 ], [ 117.32151, 34.566614 ], [ 117.32151, 34.566614 ], [ 117.311654, 34.561686 ], [ 117.311654, 34.561686 ], [ 117.267307, 34.528659 ], [ 117.27285, 34.499565 ], [ 117.252524, 34.48674 ], [ 117.248213, 34.451216 ], [ 117.166293, 34.434435 ], [ 117.139191, 34.526687 ], [ 117.15151, 34.559222 ], [ 117.104083, 34.648874 ], [ 117.073286, 34.639026 ], [ 117.061583, 34.675947 ], [ 117.070206, 34.713835 ], [ 117.022163, 34.759081 ], [ 116.969192, 34.771864 ], [ 116.95133, 34.81069 ], [ 116.979047, 34.815113 ], [ 116.966113, 34.844588 ], [ 116.929156, 34.843114 ], [ 116.922381, 34.894671 ], [ 116.858323, 34.928533 ], [ 116.821983, 34.929515 ], [ 116.809048, 34.968757 ], [ 116.781947, 34.961891 ], [ 116.781331, 34.916757 ], [ 116.677853, 34.939327 ], [ 116.622418, 34.939818 ], [ 116.613795, 34.922645 ], [ 116.557745, 34.908905 ], [ 116.445028, 34.895652 ], [ 116.408071, 34.850972 ], [ 116.403144, 34.756131 ], [ 116.369267, 34.749247 ], [ 116.363724, 34.715311 ], [ 116.392057, 34.710391 ], [ 116.374195, 34.640011 ] ] ], [ [ [ 120.729502, 37.947065 ], [ 120.76461, 37.923937 ], [ 120.76461, 37.895134 ], [ 120.721495, 37.917328 ], [ 120.729502, 37.947065 ] ] ], [ [ [ 120.692545, 37.983867 ], [ 120.724574, 37.987641 ], [ 120.732581, 37.961694 ], [ 120.692545, 37.983867 ] ] ], [ [ [ 120.990044, 36.413239 ], [ 120.950624, 36.414684 ], [ 120.978341, 36.428649 ], [ 120.990044, 36.413239 ] ] ], [ [ [ 120.750444, 38.150188 ], [ 120.742436, 38.199116 ], [ 120.7874, 38.158658 ], [ 120.750444, 38.150188 ] ] ], [ [ [ 120.918595, 38.345236 ], [ 120.895189, 38.36307 ], [ 120.914899, 38.373393 ], [ 120.918595, 38.345236 ] ] ], [ [ [ 120.159142, 35.765198 ], [ 120.172077, 35.785591 ], [ 120.193019, 35.756942 ], [ 120.169613, 35.740428 ], [ 120.159142, 35.765198 ] ] ], [ [ [ 120.62664, 37.94565 ], [ 120.602002, 37.978678 ], [ 120.631567, 37.981037 ], [ 120.62664, 37.94565 ] ] ], [ [ [ 120.802183, 38.284193 ], [ 120.816349, 38.318008 ], [ 120.848378, 38.305799 ], [ 120.802183, 38.284193 ] ] ], [ [ [ 121.489571, 37.577086 ], [ 121.488955, 37.578035 ], [ 121.489571, 37.578509 ], [ 121.489571, 37.577561 ], [ 121.489571, 37.577086 ] ] ], [ [ [ 121.485875, 37.578509 ], [ 121.487723, 37.578509 ], [ 121.487723, 37.578035 ], [ 121.485875, 37.578509 ] ] ], [ [ [ 121.487723, 37.578509 ], [ 121.488339, 37.578509 ], [ 121.488955, 37.578509 ], [ 121.488955, 37.578035 ], [ 121.487723, 37.577561 ], [ 121.487723, 37.578509 ] ] ], [ [ [ 115.495249, 35.896203 ], [ 115.505104, 35.899112 ], [ 115.513112, 35.890385 ], [ 115.487858, 35.880688 ], [ 115.495249, 35.896203 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "410000", "name": "河南省", "center": [ 113.665412, 34.757975 ], "centroid": [ 113.619748, 33.902617 ], "childrenNum": 18, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 15, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 115.5088, 32.468761 ], [ 115.509416, 32.466741 ], [ 115.522967, 32.441997 ], [ 115.57101, 32.419266 ], [ 115.604271, 32.425833 ], [ 115.626445, 32.40512 ], [ 115.657857, 32.428864 ], [ 115.667712, 32.409667 ], [ 115.704669, 32.495013 ], [ 115.742241, 32.476335 ], [ 115.771806, 32.505108 ], [ 115.789052, 32.468761 ], [ 115.861117, 32.537403 ], [ 115.891298, 32.576243 ], [ 115.910393, 32.567165 ], [ 115.8759, 32.542448 ], [ 115.845719, 32.501575 ], [ 115.883291, 32.487946 ], [ 115.865429, 32.458662 ], [ 115.899306, 32.390971 ], [ 115.912856, 32.227596 ], [ 115.941805, 32.166318 ], [ 115.922095, 32.049725 ], [ 115.928871, 32.003046 ], [ 115.909161, 31.94314 ], [ 115.920248, 31.920285 ], [ 115.894994, 31.8649 ], [ 115.893762, 31.832365 ], [ 115.914704, 31.814567 ], [ 115.886371, 31.776418 ], [ 115.851878, 31.786593 ], [ 115.808147, 31.770313 ], [ 115.808147, 31.770313 ], [ 115.767495, 31.78761 ], [ 115.731154, 31.76726 ], [ 115.676336, 31.778453 ], [ 115.553764, 31.69549 ], [ 115.534054, 31.698545 ], [ 115.495249, 31.673083 ], [ 115.476771, 31.643028 ], [ 115.485394, 31.608885 ], [ 115.439815, 31.588496 ], [ 115.415793, 31.525771 ], [ 115.371446, 31.495668 ], [ 115.389924, 31.450241 ], [ 115.373909, 31.405813 ], [ 115.338801, 31.40428 ], [ 115.301229, 31.383846 ], [ 115.250722, 31.392021 ], [ 115.252569, 31.421646 ], [ 115.211301, 31.442072 ], [ 115.218077, 31.515057 ], [ 115.235939, 31.555354 ], [ 115.212533, 31.555354 ], [ 115.16449, 31.604808 ], [ 115.12507, 31.599201 ], [ 115.106592, 31.567592 ], [ 115.114599, 31.530362 ], [ 115.096121, 31.508425 ], [ 115.022824, 31.527811 ], [ 114.995107, 31.471171 ], [ 114.962462, 31.494648 ], [ 114.884238, 31.469129 ], [ 114.870071, 31.479337 ], [ 114.830035, 31.45892 ], [ 114.789383, 31.480358 ], [ 114.778912, 31.520669 ], [ 114.696376, 31.525771 ], [ 114.641558, 31.582378 ], [ 114.61692, 31.585437 ], [ 114.572572, 31.553824 ], [ 114.560869, 31.560963 ], [ 114.547935, 31.623665 ], [ 114.57134, 31.660858 ], [ 114.586123, 31.762172 ], [ 114.549783, 31.766751 ], [ 114.530688, 31.742834 ], [ 114.443841, 31.728074 ], [ 114.403189, 31.746906 ], [ 114.350218, 31.755557 ], [ 114.292936, 31.752503 ], [ 114.235654, 31.833382 ], [ 114.191922, 31.852192 ], [ 114.134024, 31.843042 ], [ 114.119241, 31.805922 ], [ 114.089676, 31.781506 ], [ 114.017611, 31.770822 ], [ 113.988662, 31.749959 ], [ 113.952321, 31.793714 ], [ 113.957865, 31.852701 ], [ 113.914749, 31.877098 ], [ 113.893807, 31.847109 ], [ 113.854387, 31.843042 ], [ 113.830981, 31.87913 ], [ 113.832213, 31.918761 ], [ 113.805728, 31.929428 ], [ 113.817431, 31.964467 ], [ 113.757685, 31.98985 ], [ 113.791561, 32.036028 ], [ 113.728735, 32.083197 ], [ 113.722576, 32.12426 ], [ 113.750293, 32.11615 ], [ 113.782322, 32.184553 ], [ 113.752757, 32.215951 ], [ 113.73859, 32.255942 ], [ 113.749061, 32.272642 ], [ 113.758301, 32.27669 ], [ 113.768156, 32.284279 ], [ 113.768772, 32.30148 ], [ 113.753989, 32.328286 ], [ 113.76754, 32.370249 ], [ 113.735511, 32.410677 ], [ 113.700402, 32.420782 ], [ 113.650511, 32.412698 ], [ 113.624642, 32.36115 ], [ 113.511925, 32.316654 ], [ 113.428773, 32.270618 ], [ 113.376418, 32.298445 ], [ 113.353628, 32.294904 ], [ 113.317904, 32.327275 ], [ 113.333918, 32.336377 ], [ 113.2366, 32.407141 ], [ 113.211962, 32.431895 ], [ 113.158992, 32.410677 ], [ 113.155912, 32.380863 ], [ 113.118956, 32.375809 ], [ 113.107869, 32.398551 ], [ 113.078919, 32.394508 ], [ 113.025949, 32.425328 ], [ 113.000695, 32.41674 ], [ 112.992072, 32.378336 ], [ 112.912, 32.390971 ], [ 112.888594, 32.37682 ], [ 112.860877, 32.396024 ], [ 112.776493, 32.358623 ], [ 112.735841, 32.356095 ], [ 112.716747, 32.357612 ], [ 112.645298, 32.368227 ], [ 112.612037, 32.386928 ], [ 112.589248, 32.381369 ], [ 112.545516, 32.404109 ], [ 112.530733, 32.37682 ], [ 112.477147, 32.380863 ], [ 112.448814, 32.34295 ], [ 112.390915, 32.37126 ], [ 112.360118, 32.3657 ], [ 112.328089, 32.321712 ], [ 112.206133, 32.392992 ], [ 112.172873, 32.385412 ], [ 112.150083, 32.411688 ], [ 112.155626, 32.377326 ], [ 112.081098, 32.425833 ], [ 112.063851, 32.474315 ], [ 112.014576, 32.450077 ], [ 111.975772, 32.471791 ], [ 111.948671, 32.51722 ], [ 111.890157, 32.503089 ], [ 111.858128, 32.528826 ], [ 111.808853, 32.536899 ], [ 111.713382, 32.606497 ], [ 111.646245, 32.605993 ], [ 111.640701, 32.634724 ], [ 111.577875, 32.593388 ], [ 111.530448, 32.628172 ], [ 111.513202, 32.674026 ], [ 111.458383, 32.726402 ], [ 111.475629, 32.760127 ], [ 111.41342, 32.757108 ], [ 111.380159, 32.829049 ], [ 111.293311, 32.859217 ], [ 111.276065, 32.903445 ], [ 111.255123, 32.883846 ], [ 111.242804, 32.930573 ], [ 111.273601, 32.971753 ], [ 111.258819, 33.006389 ], [ 111.221862, 33.042517 ], [ 111.152877, 33.039507 ], [ 111.192913, 33.071609 ], [ 111.179363, 33.115229 ], [ 111.146102, 33.12375 ], [ 111.12824, 33.15532 ], [ 111.08882, 33.181871 ], [ 111.045704, 33.169849 ], [ 111.046936, 33.202905 ], [ 110.984726, 33.255469 ], [ 111.025994, 33.330504 ], [ 111.025994, 33.375495 ], [ 110.996429, 33.435946 ], [ 111.02661, 33.467903 ], [ 111.02661, 33.478386 ], [ 111.002588, 33.535772 ], [ 111.00382, 33.578662 ], [ 110.966864, 33.609071 ], [ 110.878784, 33.634486 ], [ 110.823966, 33.685793 ], [ 110.831973, 33.713675 ], [ 110.81719, 33.751003 ], [ 110.782082, 33.796272 ], [ 110.74143, 33.798759 ], [ 110.712481, 33.833564 ], [ 110.66259, 33.85295 ], [ 110.612083, 33.852453 ], [ 110.587445, 33.887733 ], [ 110.628713, 33.910086 ], [ 110.627481, 33.925482 ], [ 110.665669, 33.937895 ], [ 110.671213, 33.966192 ], [ 110.620706, 34.035652 ], [ 110.587445, 34.023252 ], [ 110.591757, 34.101586 ], [ 110.61393, 34.113478 ], [ 110.642264, 34.161032 ], [ 110.621938, 34.177372 ], [ 110.55788, 34.193214 ], [ 110.55172, 34.213012 ], [ 110.507989, 34.217466 ], [ 110.43962, 34.243196 ], [ 110.428533, 34.288203 ], [ 110.451938, 34.292653 ], [ 110.503677, 34.33714 ], [ 110.473496, 34.393457 ], [ 110.403279, 34.433448 ], [ 110.403279, 34.433448 ], [ 110.360779, 34.516825 ], [ 110.372482, 34.544435 ], [ 110.404511, 34.557743 ], [ 110.366939, 34.566614 ], [ 110.379257, 34.600612 ], [ 110.424837, 34.588295 ], [ 110.488279, 34.610956 ], [ 110.533242, 34.583368 ], [ 110.610851, 34.607508 ], [ 110.710017, 34.605045 ], [ 110.749437, 34.65232 ], [ 110.780234, 34.648874 ], [ 110.812263, 34.624746 ], [ 110.870777, 34.636072 ], [ 110.89911, 34.661673 ], [ 110.929907, 34.731543 ], [ 110.976103, 34.706456 ], [ 111.035233, 34.740887 ], [ 111.118385, 34.756623 ], [ 111.148566, 34.807742 ], [ 111.232949, 34.789559 ], [ 111.255123, 34.819535 ], [ 111.29208, 34.806759 ], [ 111.345666, 34.831816 ], [ 111.389398, 34.815113 ], [ 111.439289, 34.838202 ], [ 111.502731, 34.829851 ], [ 111.543999, 34.853428 ], [ 111.570484, 34.843114 ], [ 111.592042, 34.881416 ], [ 111.617911, 34.894671 ], [ 111.646861, 34.938836 ], [ 111.681969, 34.9511 ], [ 111.664107, 34.984449 ], [ 111.739251, 35.00406 ], [ 111.807005, 35.032977 ], [ 111.810084, 35.062374 ], [ 111.933272, 35.083435 ], [ 111.97762, 35.067272 ], [ 112.018888, 35.068742 ], [ 112.039214, 35.045717 ], [ 112.062004, 35.056005 ], [ 112.05646, 35.098615 ], [ 112.066315, 35.153437 ], [ 112.03983, 35.194039 ], [ 112.078634, 35.219467 ], [ 112.058924, 35.280069 ], [ 112.094033, 35.279092 ], [ 112.21722, 35.253195 ], [ 112.242474, 35.234622 ], [ 112.304684, 35.251728 ], [ 112.288053, 35.219956 ], [ 112.36751, 35.219956 ], [ 112.390915, 35.239021 ], [ 112.513487, 35.218489 ], [ 112.637291, 35.225822 ], [ 112.628052, 35.263457 ], [ 112.720443, 35.206265 ], [ 112.772798, 35.207732 ], [ 112.822073, 35.258082 ], [ 112.884283, 35.243909 ], [ 112.934174, 35.262968 ], [ 112.936022, 35.284466 ], [ 112.992072, 35.29619 ], [ 112.985913, 35.33965 ], [ 112.996384, 35.362104 ], [ 113.067217, 35.353806 ], [ 113.126347, 35.332327 ], [ 113.149137, 35.350878 ], [ 113.165151, 35.412845 ], [ 113.188557, 35.412357 ], [ 113.189789, 35.44893 ], [ 113.243375, 35.449418 ], [ 113.304353, 35.426989 ], [ 113.31236, 35.481101 ], [ 113.348085, 35.468429 ], [ 113.391817, 35.506925 ], [ 113.439244, 35.507412 ], [ 113.49899, 35.532254 ], [ 113.513773, 35.57364 ], [ 113.55812, 35.621816 ], [ 113.547649, 35.656835 ], [ 113.578446, 35.633491 ], [ 113.625258, 35.632518 ], [ 113.622794, 35.674825 ], [ 113.592613, 35.691838 ], [ 113.587685, 35.736542 ], [ 113.604932, 35.797727 ], [ 113.582758, 35.818111 ], [ 113.660982, 35.837035 ], [ 113.637576, 35.870019 ], [ 113.654207, 35.931586 ], [ 113.648663, 35.994073 ], [ 113.678844, 35.985841 ], [ 113.694859, 36.026991 ], [ 113.660366, 36.034735 ], [ 113.68562, 36.056026 ], [ 113.671453, 36.115514 ], [ 113.655439, 36.125182 ], [ 113.712721, 36.129533 ], [ 113.705946, 36.148865 ], [ 113.651127, 36.174473 ], [ 113.697939, 36.181719 ], [ 113.681924, 36.216491 ], [ 113.716417, 36.262347 ], [ 113.712105, 36.303353 ], [ 113.736127, 36.324571 ], [ 113.731199, 36.363135 ], [ 113.755221, 36.366026 ], [ 113.813119, 36.332285 ], [ 113.856851, 36.329392 ], [ 113.84946, 36.347711 ], [ 113.882104, 36.353977 ], [ 113.911054, 36.314927 ], [ 113.962792, 36.353977 ], [ 113.981887, 36.31782 ], [ 114.002828, 36.334214 ], [ 114.056415, 36.329392 ], [ 114.04348, 36.303353 ], [ 114.080437, 36.269585 ], [ 114.129096, 36.280199 ], [ 114.175907, 36.264759 ], [ 114.170364, 36.245938 ], [ 114.170364, 36.245938 ], [ 114.203009, 36.245456 ], [ 114.2104, 36.272962 ], [ 114.241197, 36.251247 ], [ 114.257827, 36.263794 ], [ 114.299095, 36.245938 ], [ 114.345291, 36.255591 ], [ 114.356378, 36.230492 ], [ 114.408117, 36.224699 ], [ 114.417356, 36.205868 ], [ 114.466015, 36.197658 ], [ 114.480181, 36.177855 ], [ 114.533152, 36.171575 ], [ 114.586739, 36.141133 ], [ 114.588587, 36.118414 ], [ 114.640326, 36.137266 ], [ 114.720398, 36.140166 ], [ 114.734564, 36.15563 ], [ 114.771521, 36.124699 ], [ 114.857752, 36.127599 ], [ 114.858368, 36.144516 ], [ 114.912571, 36.140649 ], [ 114.926737, 36.089403 ], [ 114.914419, 36.052155 ], [ 114.998186, 36.069572 ], [ 115.04623, 36.112613 ], [ 115.048693, 36.161912 ], [ 115.06286, 36.178338 ], [ 115.104744, 36.172058 ], [ 115.12507, 36.209731 ], [ 115.1842, 36.193312 ], [ 115.201446, 36.210214 ], [ 115.201446, 36.210214 ], [ 115.202678, 36.209248 ], [ 115.202678, 36.209248 ], [ 115.202678, 36.208765 ], [ 115.202678, 36.208765 ], [ 115.242098, 36.19138 ], [ 115.279055, 36.13775 ], [ 115.30246, 36.127599 ], [ 115.312931, 36.088436 ], [ 115.365902, 36.099074 ], [ 115.376989, 36.128083 ], [ 115.450902, 36.152248 ], [ 115.465068, 36.170125 ], [ 115.483547, 36.148865 ], [ 115.484163, 36.125666 ], [ 115.449054, 36.047317 ], [ 115.447822, 36.01247 ], [ 115.362822, 35.971796 ], [ 115.353583, 35.938854 ], [ 115.364054, 35.894264 ], [ 115.335105, 35.796756 ], [ 115.363438, 35.779765 ], [ 115.407786, 35.80889 ], [ 115.460141, 35.867594 ], [ 115.487858, 35.880688 ], [ 115.513112, 35.890385 ], [ 115.583945, 35.921893 ], [ 115.648618, 35.922863 ], [ 115.699125, 35.966468 ], [ 115.774886, 35.974702 ], [ 115.779813, 35.993588 ], [ 115.817386, 36.012954 ], [ 115.859886, 36.003756 ], [ 115.89869, 36.026507 ], [ 115.989849, 36.045381 ], [ 116.057602, 36.104877 ], [ 116.099486, 36.112129 ], [ 116.063145, 36.028927 ], [ 116.048979, 35.970343 ], [ 115.984921, 35.974218 ], [ 115.911624, 35.960171 ], [ 115.907929, 35.92674 ], [ 115.873436, 35.918985 ], [ 115.882675, 35.879718 ], [ 115.859886, 35.857894 ], [ 115.81677, 35.844312 ], [ 115.773654, 35.854014 ], [ 115.73485, 35.833154 ], [ 115.696046, 35.788989 ], [ 115.693582, 35.754028 ], [ 115.622749, 35.739457 ], [ 115.52851, 35.733628 ], [ 115.48601, 35.710306 ], [ 115.383148, 35.568772 ], [ 115.34496, 35.55368 ], [ 115.356047, 35.490359 ], [ 115.307388, 35.480126 ], [ 115.237171, 35.423087 ], [ 115.172497, 35.426501 ], [ 115.126302, 35.41821 ], [ 115.117679, 35.400163 ], [ 115.091809, 35.416259 ], [ 115.073947, 35.374304 ], [ 115.04315, 35.376744 ], [ 114.957534, 35.261014 ], [ 114.929201, 35.244886 ], [ 114.932281, 35.198441 ], [ 114.861448, 35.182301 ], [ 114.841738, 35.15099 ], [ 114.883006, 35.098615 ], [ 114.835578, 35.076578 ], [ 114.818948, 35.051596 ], [ 114.852209, 35.041797 ], [ 114.824492, 35.012393 ], [ 114.880542, 35.00357 ], [ 114.923658, 34.968757 ], [ 114.950759, 34.989843 ], [ 115.008041, 34.988372 ], [ 115.028983, 34.9717 ], [ 115.075179, 35.000628 ], [ 115.12815, 35.00455 ], [ 115.157099, 34.957968 ], [ 115.219309, 34.96042 ], [ 115.205142, 34.914303 ], [ 115.251953, 34.906451 ], [ 115.239019, 34.87798 ], [ 115.256265, 34.845079 ], [ 115.317243, 34.859321 ], [ 115.42688, 34.805285 ], [ 115.449054, 34.74433 ], [ 115.433655, 34.725149 ], [ 115.461373, 34.637057 ], [ 115.515575, 34.582383 ], [ 115.553148, 34.568586 ], [ 115.622749, 34.574499 ], [ 115.685575, 34.556265 ], [ 115.697278, 34.594207 ], [ 115.787821, 34.580905 ], [ 115.827241, 34.558236 ], [ 115.838328, 34.5676 ], [ 115.984305, 34.589281 ], [ 115.991081, 34.615389 ], [ 116.037276, 34.593222 ], [ 116.101334, 34.60603 ], [ 116.134594, 34.559715 ], [ 116.156768, 34.5538 ], [ 116.196804, 34.575977 ], [ 116.191261, 34.535561 ], [ 116.204196, 34.508442 ], [ 116.178326, 34.496112 ], [ 116.162312, 34.459605 ], [ 116.178942, 34.430487 ], [ 116.215898, 34.403333 ], [ 116.213435, 34.382098 ], [ 116.255934, 34.376665 ], [ 116.301514, 34.342082 ], [ 116.363724, 34.316877 ], [ 116.372347, 34.26595 ], [ 116.409303, 34.273863 ], [ 116.409303, 34.273863 ], [ 116.456731, 34.268917 ], [ 116.516477, 34.296114 ], [ 116.562056, 34.285731 ], [ 116.582382, 34.266444 ], [ 116.545426, 34.241711 ], [ 116.542962, 34.203608 ], [ 116.565752, 34.16945 ], [ 116.536187, 34.151127 ], [ 116.52818, 34.122892 ], [ 116.576223, 34.068873 ], [ 116.576223, 34.068873 ], [ 116.599629, 34.014324 ], [ 116.599629, 34.014324 ], [ 116.641512, 33.978103 ], [ 116.64336, 33.896675 ], [ 116.631042, 33.887733 ], [ 116.566984, 33.9081 ], [ 116.558361, 33.881274 ], [ 116.486296, 33.869846 ], [ 116.437637, 33.846489 ], [ 116.437021, 33.801246 ], [ 116.408071, 33.805721 ], [ 116.393905, 33.782843 ], [ 116.316912, 33.771402 ], [ 116.263326, 33.730101 ], [ 116.2005, 33.72612 ], [ 116.155536, 33.709693 ], [ 116.132747, 33.751501 ], [ 116.100102, 33.782843 ], [ 116.074232, 33.781351 ], [ 116.055754, 33.804727 ], [ 116.05945, 33.860902 ], [ 115.982457, 33.917039 ], [ 116.00032, 33.965199 ], [ 115.95782, 34.007875 ], [ 115.904233, 34.009859 ], [ 115.876516, 34.028708 ], [ 115.877132, 34.002913 ], [ 115.852494, 34.003906 ], [ 115.846335, 34.028708 ], [ 115.809378, 34.062428 ], [ 115.736082, 34.076805 ], [ 115.705901, 34.059949 ], [ 115.658473, 34.061437 ], [ 115.642459, 34.03218 ], [ 115.60735, 34.030196 ], [ 115.579017, 33.974133 ], [ 115.577785, 33.950307 ], [ 115.547604, 33.874815 ], [ 115.631988, 33.869846 ], [ 115.614126, 33.775879 ], [ 115.576553, 33.787817 ], [ 115.563003, 33.772895 ], [ 115.601807, 33.718653 ], [ 115.601191, 33.658898 ], [ 115.639995, 33.585143 ], [ 115.564851, 33.576169 ], [ 115.561771, 33.563703 ], [ 115.463837, 33.567193 ], [ 115.422569, 33.557219 ], [ 115.394851, 33.506335 ], [ 115.366518, 33.5233 ], [ 115.345576, 33.502842 ], [ 115.345576, 33.449928 ], [ 115.316627, 33.44893 ], [ 115.328946, 33.403477 ], [ 115.313547, 33.376994 ], [ 115.341881, 33.370997 ], [ 115.365286, 33.336005 ], [ 115.361591, 33.298497 ], [ 115.335105, 33.297997 ], [ 115.340033, 33.260973 ], [ 115.300613, 33.204407 ], [ 115.303692, 33.149809 ], [ 115.289526, 33.131769 ], [ 115.245178, 33.135778 ], [ 115.194671, 33.120743 ], [ 115.168186, 33.088658 ], [ 115.041302, 33.086653 ], [ 114.990795, 33.102195 ], [ 114.966158, 33.147304 ], [ 114.932897, 33.153817 ], [ 114.902716, 33.129764 ], [ 114.897172, 33.086653 ], [ 114.913187, 33.083143 ], [ 114.925506, 33.016928 ], [ 114.891629, 33.020441 ], [ 114.883006, 32.990328 ], [ 114.916266, 32.971251 ], [ 114.943368, 32.935094 ], [ 115.009273, 32.940117 ], [ 115.035143, 32.932582 ], [ 115.029599, 32.906962 ], [ 115.139237, 32.897917 ], [ 115.155867, 32.864747 ], [ 115.197135, 32.856201 ], [ 115.189744, 32.812452 ], [ 115.211301, 32.785791 ], [ 115.189744, 32.770695 ], [ 115.179273, 32.726402 ], [ 115.182968, 32.666973 ], [ 115.20083, 32.591876 ], [ 115.24333, 32.593388 ], [ 115.267352, 32.578261 ], [ 115.30554, 32.583303 ], [ 115.304924, 32.553042 ], [ 115.411482, 32.575235 ], [ 115.409018, 32.549007 ], [ 115.497713, 32.492489 ], [ 115.5088, 32.468761 ] ] ], [ [ [ 113.768156, 32.284279 ], [ 113.758301, 32.27669 ], [ 113.749061, 32.272642 ], [ 113.768772, 32.30148 ], [ 113.768156, 32.284279 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "420000", "name": "湖北省", "center": [ 114.298572, 30.584355 ], "centroid": [ 112.271286, 30.987521 ], "childrenNum": 17, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 16, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 111.045704, 33.169849 ], [ 111.08882, 33.181871 ], [ 111.12824, 33.15532 ], [ 111.146102, 33.12375 ], [ 111.179363, 33.115229 ], [ 111.192913, 33.071609 ], [ 111.152877, 33.039507 ], [ 111.221862, 33.042517 ], [ 111.258819, 33.006389 ], [ 111.273601, 32.971753 ], [ 111.242804, 32.930573 ], [ 111.255123, 32.883846 ], [ 111.276065, 32.903445 ], [ 111.293311, 32.859217 ], [ 111.380159, 32.829049 ], [ 111.41342, 32.757108 ], [ 111.475629, 32.760127 ], [ 111.458383, 32.726402 ], [ 111.513202, 32.674026 ], [ 111.530448, 32.628172 ], [ 111.577875, 32.593388 ], [ 111.640701, 32.634724 ], [ 111.646245, 32.605993 ], [ 111.713382, 32.606497 ], [ 111.808853, 32.536899 ], [ 111.858128, 32.528826 ], [ 111.890157, 32.503089 ], [ 111.948671, 32.51722 ], [ 111.975772, 32.471791 ], [ 112.014576, 32.450077 ], [ 112.063851, 32.474315 ], [ 112.081098, 32.425833 ], [ 112.155626, 32.377326 ], [ 112.150083, 32.411688 ], [ 112.172873, 32.385412 ], [ 112.206133, 32.392992 ], [ 112.328089, 32.321712 ], [ 112.360118, 32.3657 ], [ 112.390915, 32.37126 ], [ 112.448814, 32.34295 ], [ 112.477147, 32.380863 ], [ 112.530733, 32.37682 ], [ 112.545516, 32.404109 ], [ 112.589248, 32.381369 ], [ 112.612037, 32.386928 ], [ 112.645298, 32.368227 ], [ 112.716747, 32.357612 ], [ 112.724138, 32.358623 ], [ 112.733993, 32.356601 ], [ 112.735841, 32.356095 ], [ 112.776493, 32.358623 ], [ 112.860877, 32.396024 ], [ 112.888594, 32.37682 ], [ 112.912, 32.390971 ], [ 112.992072, 32.378336 ], [ 113.000695, 32.41674 ], [ 113.025949, 32.425328 ], [ 113.078919, 32.394508 ], [ 113.107869, 32.398551 ], [ 113.118956, 32.375809 ], [ 113.155912, 32.380863 ], [ 113.158992, 32.410677 ], [ 113.211962, 32.431895 ], [ 113.2366, 32.407141 ], [ 113.333918, 32.336377 ], [ 113.317904, 32.327275 ], [ 113.353628, 32.294904 ], [ 113.376418, 32.298445 ], [ 113.428773, 32.270618 ], [ 113.511925, 32.316654 ], [ 113.624642, 32.36115 ], [ 113.650511, 32.412698 ], [ 113.700402, 32.420782 ], [ 113.735511, 32.410677 ], [ 113.76754, 32.370249 ], [ 113.753989, 32.328286 ], [ 113.768772, 32.30148 ], [ 113.749061, 32.272642 ], [ 113.73859, 32.255942 ], [ 113.752757, 32.215951 ], [ 113.782322, 32.184553 ], [ 113.750293, 32.11615 ], [ 113.722576, 32.12426 ], [ 113.728735, 32.083197 ], [ 113.791561, 32.036028 ], [ 113.757685, 31.98985 ], [ 113.817431, 31.964467 ], [ 113.805728, 31.929428 ], [ 113.832213, 31.918761 ], [ 113.830981, 31.87913 ], [ 113.854387, 31.843042 ], [ 113.893807, 31.847109 ], [ 113.914749, 31.877098 ], [ 113.957865, 31.852701 ], [ 113.952321, 31.793714 ], [ 113.988662, 31.749959 ], [ 114.017611, 31.770822 ], [ 114.089676, 31.781506 ], [ 114.119241, 31.805922 ], [ 114.134024, 31.843042 ], [ 114.191922, 31.852192 ], [ 114.235654, 31.833382 ], [ 114.292936, 31.752503 ], [ 114.350218, 31.755557 ], [ 114.403189, 31.746906 ], [ 114.443841, 31.728074 ], [ 114.530688, 31.742834 ], [ 114.549783, 31.766751 ], [ 114.586123, 31.762172 ], [ 114.57134, 31.660858 ], [ 114.547935, 31.623665 ], [ 114.560869, 31.560963 ], [ 114.572572, 31.553824 ], [ 114.61692, 31.585437 ], [ 114.641558, 31.582378 ], [ 114.696376, 31.525771 ], [ 114.778912, 31.520669 ], [ 114.789383, 31.480358 ], [ 114.830035, 31.45892 ], [ 114.870071, 31.479337 ], [ 114.884238, 31.469129 ], [ 114.962462, 31.494648 ], [ 114.995107, 31.471171 ], [ 115.022824, 31.527811 ], [ 115.096121, 31.508425 ], [ 115.114599, 31.530362 ], [ 115.106592, 31.567592 ], [ 115.12507, 31.599201 ], [ 115.16449, 31.604808 ], [ 115.212533, 31.555354 ], [ 115.235939, 31.555354 ], [ 115.218077, 31.515057 ], [ 115.211301, 31.442072 ], [ 115.252569, 31.421646 ], [ 115.250722, 31.392021 ], [ 115.301229, 31.383846 ], [ 115.338801, 31.40428 ], [ 115.373909, 31.405813 ], [ 115.393004, 31.389977 ], [ 115.372062, 31.349098 ], [ 115.40717, 31.337854 ], [ 115.443511, 31.344498 ], [ 115.473076, 31.265242 ], [ 115.507568, 31.267799 ], [ 115.539597, 31.231985 ], [ 115.540213, 31.194621 ], [ 115.585793, 31.143926 ], [ 115.603655, 31.17363 ], [ 115.655394, 31.211002 ], [ 115.700973, 31.201276 ], [ 115.778582, 31.112164 ], [ 115.797676, 31.128047 ], [ 115.837712, 31.127022 ], [ 115.867277, 31.147512 ], [ 115.887603, 31.10909 ], [ 115.939958, 31.071678 ], [ 115.938726, 31.04707 ], [ 116.006479, 31.034764 ], [ 116.015102, 31.011685 ], [ 116.058834, 31.012711 ], [ 116.071769, 30.956787 ], [ 116.03974, 30.957813 ], [ 115.976298, 30.931636 ], [ 115.932566, 30.889532 ], [ 115.865429, 30.864364 ], [ 115.848799, 30.828397 ], [ 115.863581, 30.815549 ], [ 115.851262, 30.756938 ], [ 115.782893, 30.751795 ], [ 115.762567, 30.685426 ], [ 115.81369, 30.637035 ], [ 115.819234, 30.597893 ], [ 115.848799, 30.602014 ], [ 115.876516, 30.582438 ], [ 115.887603, 30.542758 ], [ 115.910393, 30.519046 ], [ 115.894994, 30.452517 ], [ 115.921479, 30.416397 ], [ 115.885139, 30.379747 ], [ 115.91532, 30.337919 ], [ 115.903001, 30.31364 ], [ 115.985537, 30.290905 ], [ 115.997856, 30.252657 ], [ 116.065609, 30.204569 ], [ 116.055754, 30.180774 ], [ 116.088399, 30.110391 ], [ 116.078544, 30.062233 ], [ 116.091479, 30.036331 ], [ 116.073616, 29.969993 ], [ 116.128435, 29.897904 ], [ 116.13521, 29.819532 ], [ 116.087167, 29.795125 ], [ 116.049595, 29.761881 ], [ 115.965827, 29.724469 ], [ 115.909777, 29.723949 ], [ 115.837096, 29.748373 ], [ 115.762567, 29.793048 ], [ 115.706517, 29.837703 ], [ 115.667712, 29.850161 ], [ 115.611662, 29.841337 ], [ 115.51188, 29.840299 ], [ 115.479235, 29.811224 ], [ 115.470612, 29.739539 ], [ 115.412714, 29.688602 ], [ 115.355431, 29.649602 ], [ 115.304924, 29.637118 ], [ 115.28583, 29.618391 ], [ 115.250722, 29.660003 ], [ 115.176809, 29.654803 ], [ 115.113367, 29.684963 ], [ 115.117679, 29.655843 ], [ 115.143548, 29.645961 ], [ 115.120142, 29.597578 ], [ 115.157099, 29.584568 ], [ 115.154019, 29.510117 ], [ 115.086266, 29.525741 ], [ 115.087498, 29.560104 ], [ 115.033295, 29.546568 ], [ 115.00065, 29.572076 ], [ 114.947679, 29.542924 ], [ 114.966773, 29.522096 ], [ 114.940288, 29.493971 ], [ 114.900868, 29.505951 ], [ 114.860216, 29.476258 ], [ 114.888549, 29.436134 ], [ 114.918114, 29.454374 ], [ 114.90518, 29.473132 ], [ 114.935977, 29.486678 ], [ 114.947063, 29.465317 ], [ 114.931049, 29.422581 ], [ 114.895325, 29.397557 ], [ 114.866375, 29.404335 ], [ 114.812173, 29.383478 ], [ 114.784455, 29.386086 ], [ 114.759818, 29.363139 ], [ 114.740724, 29.386607 ], [ 114.67297, 29.395993 ], [ 114.621847, 29.379828 ], [ 114.589819, 29.352707 ], [ 114.519602, 29.325578 ], [ 114.466015, 29.324013 ], [ 114.440145, 29.341752 ], [ 114.376088, 29.322969 ], [ 114.341595, 29.327665 ], [ 114.307102, 29.365225 ], [ 114.259059, 29.343839 ], [ 114.252284, 29.23475 ], [ 114.169748, 29.216993 ], [ 114.063191, 29.204978 ], [ 114.034857, 29.152204 ], [ 113.98743, 29.126068 ], [ 113.952321, 29.092604 ], [ 113.94185, 29.047097 ], [ 113.898119, 29.029307 ], [ 113.876561, 29.038202 ], [ 113.882104, 29.065407 ], [ 113.852539, 29.058606 ], [ 113.816199, 29.105154 ], [ 113.775547, 29.095219 ], [ 113.749677, 29.060699 ], [ 113.722576, 29.104631 ], [ 113.696091, 29.077437 ], [ 113.690547, 29.114566 ], [ 113.66283, 29.16945 ], [ 113.691779, 29.19662 ], [ 113.693011, 29.226394 ], [ 113.651743, 29.225872 ], [ 113.609859, 29.25146 ], [ 113.632033, 29.316186 ], [ 113.660982, 29.333405 ], [ 113.674533, 29.388172 ], [ 113.731199, 29.393907 ], [ 113.755221, 29.446557 ], [ 113.677613, 29.513763 ], [ 113.630801, 29.523137 ], [ 113.710257, 29.555419 ], [ 113.73859, 29.579363 ], [ 113.704098, 29.634518 ], [ 113.680692, 29.64336 ], [ 113.663446, 29.684443 ], [ 113.606164, 29.666764 ], [ 113.547033, 29.675603 ], [ 113.540258, 29.699519 ], [ 113.558736, 29.727067 ], [ 113.550729, 29.768115 ], [ 113.575367, 29.809147 ], [ 113.571671, 29.849123 ], [ 113.37765, 29.703158 ], [ 113.277252, 29.594976 ], [ 113.222433, 29.543965 ], [ 113.181781, 29.485636 ], [ 113.145441, 29.449163 ], [ 113.099861, 29.459585 ], [ 113.078304, 29.438218 ], [ 113.057362, 29.522616 ], [ 113.034572, 29.523658 ], [ 112.950188, 29.473132 ], [ 112.912, 29.606944 ], [ 112.915696, 29.620992 ], [ 113.005007, 29.693801 ], [ 113.025949, 29.772791 ], [ 112.974826, 29.732784 ], [ 112.944645, 29.682883 ], [ 112.926782, 29.692241 ], [ 112.923703, 29.766557 ], [ 112.929246, 29.77383 ], [ 112.902145, 29.79149 ], [ 112.894138, 29.783699 ], [ 112.861493, 29.78318 ], [ 112.79374, 29.735902 ], [ 112.788812, 29.681323 ], [ 112.733378, 29.645441 ], [ 112.714283, 29.648561 ], [ 112.693957, 29.601741 ], [ 112.650842, 29.592374 ], [ 112.640371, 29.607985 ], [ 112.572001, 29.624113 ], [ 112.54182, 29.60122 ], [ 112.499321, 29.629316 ], [ 112.439574, 29.633997 ], [ 112.424792, 29.598619 ], [ 112.368741, 29.541362 ], [ 112.333017, 29.545007 ], [ 112.291133, 29.517409 ], [ 112.281278, 29.536676 ], [ 112.303452, 29.585609 ], [ 112.233851, 29.61631 ], [ 112.244322, 29.659483 ], [ 112.202438, 29.633997 ], [ 112.178416, 29.656883 ], [ 112.111279, 29.659483 ], [ 112.089721, 29.685482 ], [ 112.065699, 29.681323 ], [ 112.07617, 29.743696 ], [ 112.008417, 29.778505 ], [ 111.95483, 29.796683 ], [ 111.965917, 29.832512 ], [ 111.925881, 29.836665 ], [ 111.899396, 29.855871 ], [ 111.899396, 29.855871 ], [ 111.861207, 29.856909 ], [ 111.8107, 29.901017 ], [ 111.75773, 29.92021 ], [ 111.723853, 29.909317 ], [ 111.723853, 29.909317 ], [ 111.705375, 29.890121 ], [ 111.669034, 29.888565 ], [ 111.669034, 29.888565 ], [ 111.553854, 29.894272 ], [ 111.527368, 29.925916 ], [ 111.475629, 29.918654 ], [ 111.436825, 29.930065 ], [ 111.394325, 29.912948 ], [ 111.382623, 29.95029 ], [ 111.342587, 29.944586 ], [ 111.3315, 29.970512 ], [ 111.266826, 30.01146 ], [ 111.242188, 30.040476 ], [ 111.031537, 30.048765 ], [ 110.929907, 30.063268 ], [ 110.924364, 30.111426 ], [ 110.851067, 30.126439 ], [ 110.746973, 30.112979 ], [ 110.756212, 30.054463 ], [ 110.712481, 30.033223 ], [ 110.650887, 30.07777 ], [ 110.600996, 30.054463 ], [ 110.531394, 30.061197 ], [ 110.497518, 30.055499 ], [ 110.491358, 30.019751 ], [ 110.557264, 29.988137 ], [ 110.517228, 29.961179 ], [ 110.49875, 29.91243 ], [ 110.538786, 29.895828 ], [ 110.549873, 29.848085 ], [ 110.60038, 29.839779 ], [ 110.642879, 29.775907 ], [ 110.562807, 29.712515 ], [ 110.507373, 29.692241 ], [ 110.467337, 29.713034 ], [ 110.447011, 29.664684 ], [ 110.372482, 29.633477 ], [ 110.339221, 29.668324 ], [ 110.302265, 29.661563 ], [ 110.289946, 29.6964 ], [ 110.219729, 29.746814 ], [ 110.160599, 29.753569 ], [ 110.113788, 29.789932 ], [ 110.02386, 29.769674 ], [ 109.941325, 29.774349 ], [ 109.908064, 29.763959 ], [ 109.869876, 29.774869 ], [ 109.779333, 29.757725 ], [ 109.755311, 29.733304 ], [ 109.760238, 29.689122 ], [ 109.714659, 29.673524 ], [ 109.701108, 29.636078 ], [ 109.717739, 29.615269 ], [ 109.664768, 29.599659 ], [ 109.651833, 29.625674 ], [ 109.578536, 29.629836 ], [ 109.558826, 29.606944 ], [ 109.516326, 29.626194 ], [ 109.488609, 29.553336 ], [ 109.467051, 29.560104 ], [ 109.458428, 29.513242 ], [ 109.433791, 29.530948 ], [ 109.436254, 29.488761 ], [ 109.415928, 29.497617 ], [ 109.418392, 29.453332 ], [ 109.368501, 29.413719 ], [ 109.391291, 29.372005 ], [ 109.343863, 29.369398 ], [ 109.352487, 29.284872 ], [ 109.312451, 29.25146 ], [ 109.257632, 29.222738 ], [ 109.275494, 29.202366 ], [ 109.261328, 29.161089 ], [ 109.274262, 29.121885 ], [ 109.232378, 29.119271 ], [ 109.215748, 29.145409 ], [ 109.162777, 29.180946 ], [ 109.139372, 29.168927 ], [ 109.110422, 29.21647 ], [ 109.141835, 29.270256 ], [ 109.106727, 29.288526 ], [ 109.11227, 29.361053 ], [ 109.060531, 29.403292 ], [ 109.034662, 29.360531 ], [ 108.999553, 29.36366 ], [ 108.983539, 29.332883 ], [ 108.919481, 29.3261 ], [ 108.934264, 29.399643 ], [ 108.927488, 29.435612 ], [ 108.884373, 29.440824 ], [ 108.866511, 29.470527 ], [ 108.888684, 29.502305 ], [ 108.878213, 29.539279 ], [ 108.913322, 29.574679 ], [ 108.901003, 29.604863 ], [ 108.870206, 29.596537 ], [ 108.888068, 29.628795 ], [ 108.844337, 29.658443 ], [ 108.781511, 29.635558 ], [ 108.797525, 29.660003 ], [ 108.786438, 29.691721 ], [ 108.752562, 29.649082 ], [ 108.690968, 29.689642 ], [ 108.676801, 29.749412 ], [ 108.680497, 29.800319 ], [ 108.658939, 29.854833 ], [ 108.601041, 29.863656 ], [ 108.556077, 29.818493 ], [ 108.52528, 29.770713 ], [ 108.548686, 29.749412 ], [ 108.504954, 29.728626 ], [ 108.504338, 29.707836 ], [ 108.460606, 29.741098 ], [ 108.437201, 29.741098 ], [ 108.442744, 29.778505 ], [ 108.422418, 29.772791 ], [ 108.424266, 29.815897 ], [ 108.371295, 29.841337 ], [ 108.433505, 29.880262 ], [ 108.467998, 29.864175 ], [ 108.516041, 29.885451 ], [ 108.517889, 29.9394 ], [ 108.536367, 29.983472 ], [ 108.532055, 30.051873 ], [ 108.513577, 30.057571 ], [ 108.546222, 30.104178 ], [ 108.56778, 30.157491 ], [ 108.551766, 30.1637 ], [ 108.581947, 30.255759 ], [ 108.54499, 30.269716 ], [ 108.524048, 30.309506 ], [ 108.501258, 30.314673 ], [ 108.460606, 30.35961 ], [ 108.431041, 30.354446 ], [ 108.402092, 30.376649 ], [ 108.430425, 30.416397 ], [ 108.411331, 30.438586 ], [ 108.42673, 30.492233 ], [ 108.472925, 30.487076 ], [ 108.512961, 30.501515 ], [ 108.556077, 30.487592 ], [ 108.56778, 30.468508 ], [ 108.6497, 30.53915 ], [ 108.642925, 30.578831 ], [ 108.688504, 30.58759 ], [ 108.698975, 30.54482 ], [ 108.743939, 30.494812 ], [ 108.789518, 30.513374 ], [ 108.808612, 30.491202 ], [ 108.838793, 30.503062 ], [ 108.893612, 30.565434 ], [ 108.971836, 30.627766 ], [ 109.006329, 30.626736 ], [ 109.042669, 30.655571 ], [ 109.071002, 30.640125 ], [ 109.111654, 30.646303 ], [ 109.106111, 30.61077 ], [ 109.09256, 30.578831 ], [ 109.103647, 30.565949 ], [ 109.143683, 30.521108 ], [ 109.191726, 30.545851 ], [ 109.191726, 30.545851 ], [ 109.245313, 30.580892 ], [ 109.299516, 30.630341 ], [ 109.314298, 30.599953 ], [ 109.36111, 30.551004 ], [ 109.337088, 30.521623 ], [ 109.35495, 30.487076 ], [ 109.418392, 30.559766 ], [ 109.435638, 30.595832 ], [ 109.535421, 30.664837 ], [ 109.543428, 30.63961 ], [ 109.574225, 30.646818 ], [ 109.590855, 30.69366 ], [ 109.625348, 30.702923 ], [ 109.661072, 30.738936 ], [ 109.656761, 30.760538 ], [ 109.701724, 30.783677 ], [ 109.780564, 30.848437 ], [ 109.828608, 30.864364 ], [ 109.894513, 30.899803 ], [ 109.943788, 30.878746 ], [ 110.008462, 30.883369 ], [ 110.019549, 30.829425 ], [ 110.048498, 30.800642 ], [ 110.082375, 30.799614 ], [ 110.151976, 30.911613 ], [ 110.153824, 30.953708 ], [ 110.172918, 30.978853 ], [ 110.140889, 30.987062 ], [ 110.140273, 31.030661 ], [ 110.120563, 31.0322 ], [ 110.119947, 31.088592 ], [ 110.147048, 31.116776 ], [ 110.180309, 31.121899 ], [ 110.200019, 31.158779 ], [ 110.180309, 31.179774 ], [ 110.155671, 31.279564 ], [ 110.161831, 31.314338 ], [ 110.118715, 31.409899 ], [ 110.054042, 31.410921 ], [ 110.036795, 31.436966 ], [ 109.98752, 31.474744 ], [ 109.94502, 31.47066 ], [ 109.969658, 31.508935 ], [ 109.894513, 31.519139 ], [ 109.837847, 31.555354 ], [ 109.727594, 31.548214 ], [ 109.745456, 31.598182 ], [ 109.76455, 31.602769 ], [ 109.737449, 31.628761 ], [ 109.731289, 31.700582 ], [ 109.683246, 31.719929 ], [ 109.622268, 31.711783 ], [ 109.585928, 31.726546 ], [ 109.592087, 31.789136 ], [ 109.633971, 31.804396 ], [ 109.633971, 31.824738 ], [ 109.60379, 31.885737 ], [ 109.584696, 31.900472 ], [ 109.62042, 31.928412 ], [ 109.631507, 31.962436 ], [ 109.590855, 32.012688 ], [ 109.590855, 32.047696 ], [ 109.621652, 32.106519 ], [ 109.58716, 32.161251 ], [ 109.604406, 32.199241 ], [ 109.592703, 32.219495 ], [ 109.550203, 32.225065 ], [ 109.528645, 32.270112 ], [ 109.495385, 32.300468 ], [ 109.513247, 32.342444 ], [ 109.502776, 32.38895 ], [ 109.529877, 32.405625 ], [ 109.526797, 32.43341 ], [ 109.575457, 32.506622 ], [ 109.637051, 32.540935 ], [ 109.619804, 32.56767 ], [ 109.631507, 32.599943 ], [ 109.726978, 32.608513 ], [ 109.746072, 32.594901 ], [ 109.816905, 32.577252 ], [ 109.910528, 32.592884 ], [ 109.97089, 32.577756 ], [ 110.017701, 32.546989 ], [ 110.084223, 32.580782 ], [ 110.090382, 32.617083 ], [ 110.124259, 32.616579 ], [ 110.153824, 32.593388 ], [ 110.206179, 32.633212 ], [ 110.156903, 32.683093 ], [ 110.159367, 32.767173 ], [ 110.127338, 32.77774 ], [ 110.142121, 32.802895 ], [ 110.105164, 32.832569 ], [ 110.051578, 32.851676 ], [ 109.988752, 32.886359 ], [ 109.927158, 32.887364 ], [ 109.907448, 32.903947 ], [ 109.856941, 32.910479 ], [ 109.847702, 32.893395 ], [ 109.789804, 32.882339 ], [ 109.76455, 32.909474 ], [ 109.785492, 32.987316 ], [ 109.794731, 33.067095 ], [ 109.704188, 33.101694 ], [ 109.688174, 33.116733 ], [ 109.576073, 33.110216 ], [ 109.522486, 33.138785 ], [ 109.468283, 33.140288 ], [ 109.438718, 33.152314 ], [ 109.498464, 33.207412 ], [ 109.514479, 33.237951 ], [ 109.60687, 33.235949 ], [ 109.619804, 33.275484 ], [ 109.649985, 33.251465 ], [ 109.693101, 33.254468 ], [ 109.732521, 33.231443 ], [ 109.813209, 33.236449 ], [ 109.852013, 33.247961 ], [ 109.916687, 33.229942 ], [ 109.973353, 33.203907 ], [ 109.999223, 33.212419 ], [ 110.031252, 33.191888 ], [ 110.164911, 33.209415 ], [ 110.218497, 33.163336 ], [ 110.285635, 33.171352 ], [ 110.33799, 33.160331 ], [ 110.372482, 33.186379 ], [ 110.398352, 33.176862 ], [ 110.398352, 33.176862 ], [ 110.471032, 33.171352 ], [ 110.54125, 33.255469 ], [ 110.57759, 33.250464 ], [ 110.59422, 33.168346 ], [ 110.623785, 33.143796 ], [ 110.650887, 33.157324 ], [ 110.702626, 33.097182 ], [ 110.753133, 33.15031 ], [ 110.824582, 33.158327 ], [ 110.828893, 33.201403 ], [ 110.865234, 33.213921 ], [ 110.9219, 33.203907 ], [ 110.960704, 33.253967 ], [ 110.984726, 33.255469 ], [ 111.046936, 33.202905 ], [ 111.035849, 33.187881 ], [ 111.034001, 33.177864 ], [ 111.045704, 33.169849 ] ] ], [ [ [ 109.106111, 30.570587 ], [ 109.09872, 30.579346 ], [ 109.101183, 30.579346 ], [ 109.106111, 30.570587 ] ] ], [ [ [ 111.046936, 33.202905 ], [ 111.045704, 33.169849 ], [ 111.034001, 33.177864 ], [ 111.035849, 33.187881 ], [ 111.046936, 33.202905 ] ] ], [ [ [ 112.716747, 32.357612 ], [ 112.735841, 32.356095 ], [ 112.733993, 32.356601 ], [ 112.724138, 32.358623 ], [ 112.716747, 32.357612 ] ] ], [ [ [ 112.902145, 29.79149 ], [ 112.929246, 29.77383 ], [ 112.923703, 29.766557 ], [ 112.894138, 29.783699 ], [ 112.902145, 29.79149 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "430000", "name": "湖南省", "center": [ 112.982279, 28.19409 ], "centroid": [ 111.711649, 27.629221 ], "childrenNum": 14, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 17, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 109.48245, 26.029788 ], [ 109.452885, 26.055598 ], [ 109.449805, 26.101826 ], [ 109.502776, 26.096451 ], [ 109.513863, 26.128157 ], [ 109.47629, 26.148035 ], [ 109.439334, 26.238789 ], [ 109.467051, 26.313917 ], [ 109.442414, 26.289774 ], [ 109.369733, 26.277432 ], [ 109.351255, 26.264016 ], [ 109.325385, 26.29031 ], [ 109.285965, 26.295676 ], [ 109.271183, 26.327863 ], [ 109.29582, 26.350389 ], [ 109.319842, 26.418477 ], [ 109.38082, 26.454381 ], [ 109.362342, 26.472061 ], [ 109.385747, 26.493487 ], [ 109.381436, 26.518659 ], [ 109.407305, 26.533116 ], [ 109.390675, 26.598955 ], [ 109.35495, 26.658873 ], [ 109.334008, 26.646036 ], [ 109.306291, 26.661012 ], [ 109.283501, 26.698445 ], [ 109.35495, 26.693098 ], [ 109.407305, 26.719829 ], [ 109.447957, 26.759913 ], [ 109.486761, 26.759913 ], [ 109.52187, 26.749226 ], [ 109.528645, 26.743881 ], [ 109.568065, 26.726243 ], [ 109.597015, 26.756173 ], [ 109.554515, 26.73533 ], [ 109.528645, 26.743881 ], [ 109.522486, 26.749226 ], [ 109.497232, 26.815474 ], [ 109.513247, 26.84004 ], [ 109.509551, 26.877947 ], [ 109.486761, 26.895562 ], [ 109.452885, 26.861932 ], [ 109.436254, 26.892359 ], [ 109.555131, 26.946788 ], [ 109.520022, 27.058764 ], [ 109.497848, 27.079548 ], [ 109.486761, 27.053968 ], [ 109.454733, 27.069423 ], [ 109.472595, 27.134951 ], [ 109.441182, 27.117907 ], [ 109.415312, 27.154123 ], [ 109.358646, 27.153058 ], [ 109.33524, 27.139212 ], [ 109.264407, 27.131755 ], [ 109.239154, 27.14933 ], [ 109.21698, 27.114711 ], [ 109.165857, 27.066758 ], [ 109.101183, 27.06889 ], [ 109.128901, 27.122701 ], [ 109.032814, 27.104056 ], [ 109.007561, 27.08008 ], [ 108.940423, 27.044907 ], [ 108.942887, 27.017186 ], [ 108.942887, 27.017186 ], [ 108.877597, 27.01612 ], [ 108.79075, 27.084343 ], [ 108.878829, 27.106187 ], [ 108.926873, 27.160512 ], [ 108.907778, 27.204699 ], [ 108.963213, 27.235565 ], [ 108.983539, 27.26802 ], [ 109.053756, 27.293551 ], [ 109.044517, 27.331304 ], [ 109.103647, 27.336621 ], [ 109.142451, 27.418461 ], [ 109.141835, 27.448207 ], [ 109.167089, 27.41793 ], [ 109.202197, 27.450331 ], [ 109.245313, 27.41793 ], [ 109.300132, 27.423774 ], [ 109.303211, 27.47582 ], [ 109.404841, 27.55066 ], [ 109.461508, 27.567637 ], [ 109.451037, 27.586204 ], [ 109.470131, 27.62863 ], [ 109.45658, 27.673689 ], [ 109.470747, 27.680049 ], [ 109.414081, 27.725087 ], [ 109.366653, 27.721909 ], [ 109.37774, 27.736741 ], [ 109.332777, 27.782815 ], [ 109.346943, 27.838396 ], [ 109.32169, 27.868027 ], [ 109.30198, 27.956343 ], [ 109.319842, 27.988585 ], [ 109.362342, 28.007608 ], [ 109.378972, 28.034551 ], [ 109.335856, 28.063073 ], [ 109.298284, 28.036136 ], [ 109.314298, 28.103729 ], [ 109.33832, 28.141731 ], [ 109.340168, 28.19027 ], [ 109.367885, 28.254602 ], [ 109.388211, 28.268307 ], [ 109.33524, 28.293605 ], [ 109.317994, 28.277795 ], [ 109.275494, 28.313101 ], [ 109.268719, 28.33786 ], [ 109.289045, 28.373673 ], [ 109.264407, 28.392628 ], [ 109.260712, 28.46473 ], [ 109.274262, 28.494714 ], [ 109.273646, 28.53836 ], [ 109.319842, 28.579886 ], [ 109.306907, 28.62087 ], [ 109.252089, 28.606685 ], [ 109.235458, 28.61982 ], [ 109.201581, 28.597753 ], [ 109.192958, 28.636104 ], [ 109.271183, 28.671816 ], [ 109.252704, 28.691767 ], [ 109.294588, 28.722211 ], [ 109.2989, 28.7474 ], [ 109.241002, 28.776779 ], [ 109.246545, 28.80143 ], [ 109.235458, 28.882161 ], [ 109.261328, 28.952356 ], [ 109.292741, 28.987436 ], [ 109.294588, 29.015177 ], [ 109.319842, 29.042388 ], [ 109.312451, 29.066453 ], [ 109.240386, 29.086328 ], [ 109.232378, 29.119271 ], [ 109.274262, 29.121885 ], [ 109.261328, 29.161089 ], [ 109.275494, 29.202366 ], [ 109.257632, 29.222738 ], [ 109.312451, 29.25146 ], [ 109.352487, 29.284872 ], [ 109.343863, 29.369398 ], [ 109.391291, 29.372005 ], [ 109.368501, 29.413719 ], [ 109.418392, 29.453332 ], [ 109.415928, 29.497617 ], [ 109.436254, 29.488761 ], [ 109.433791, 29.530948 ], [ 109.458428, 29.513242 ], [ 109.467051, 29.560104 ], [ 109.488609, 29.553336 ], [ 109.516326, 29.626194 ], [ 109.558826, 29.606944 ], [ 109.578536, 29.629836 ], [ 109.651833, 29.625674 ], [ 109.664768, 29.599659 ], [ 109.717739, 29.615269 ], [ 109.701108, 29.636078 ], [ 109.714659, 29.673524 ], [ 109.760238, 29.689122 ], [ 109.755311, 29.733304 ], [ 109.779333, 29.757725 ], [ 109.869876, 29.774869 ], [ 109.908064, 29.763959 ], [ 109.941325, 29.774349 ], [ 110.02386, 29.769674 ], [ 110.113788, 29.789932 ], [ 110.160599, 29.753569 ], [ 110.219729, 29.746814 ], [ 110.289946, 29.6964 ], [ 110.302265, 29.661563 ], [ 110.339221, 29.668324 ], [ 110.372482, 29.633477 ], [ 110.447011, 29.664684 ], [ 110.467337, 29.713034 ], [ 110.507373, 29.692241 ], [ 110.562807, 29.712515 ], [ 110.642879, 29.775907 ], [ 110.60038, 29.839779 ], [ 110.549873, 29.848085 ], [ 110.538786, 29.895828 ], [ 110.49875, 29.91243 ], [ 110.517228, 29.961179 ], [ 110.557264, 29.988137 ], [ 110.491358, 30.019751 ], [ 110.497518, 30.055499 ], [ 110.531394, 30.061197 ], [ 110.600996, 30.054463 ], [ 110.650887, 30.07777 ], [ 110.712481, 30.033223 ], [ 110.756212, 30.054463 ], [ 110.746973, 30.112979 ], [ 110.851067, 30.126439 ], [ 110.924364, 30.111426 ], [ 110.929907, 30.063268 ], [ 111.031537, 30.048765 ], [ 111.242188, 30.040476 ], [ 111.266826, 30.01146 ], [ 111.3315, 29.970512 ], [ 111.342587, 29.944586 ], [ 111.382623, 29.95029 ], [ 111.394325, 29.912948 ], [ 111.436825, 29.930065 ], [ 111.475629, 29.918654 ], [ 111.527368, 29.925916 ], [ 111.553854, 29.894272 ], [ 111.669034, 29.888565 ], [ 111.669034, 29.888565 ], [ 111.705375, 29.890121 ], [ 111.723853, 29.909317 ], [ 111.723853, 29.909317 ], [ 111.75773, 29.92021 ], [ 111.8107, 29.901017 ], [ 111.861207, 29.856909 ], [ 111.899396, 29.855871 ], [ 111.899396, 29.855871 ], [ 111.925881, 29.836665 ], [ 111.965917, 29.832512 ], [ 111.95483, 29.796683 ], [ 112.008417, 29.778505 ], [ 112.07617, 29.743696 ], [ 112.065699, 29.681323 ], [ 112.089721, 29.685482 ], [ 112.111279, 29.659483 ], [ 112.178416, 29.656883 ], [ 112.202438, 29.633997 ], [ 112.244322, 29.659483 ], [ 112.233851, 29.61631 ], [ 112.303452, 29.585609 ], [ 112.281278, 29.536676 ], [ 112.291133, 29.517409 ], [ 112.333017, 29.545007 ], [ 112.368741, 29.541362 ], [ 112.424792, 29.598619 ], [ 112.439574, 29.633997 ], [ 112.499321, 29.629316 ], [ 112.54182, 29.60122 ], [ 112.572001, 29.624113 ], [ 112.640371, 29.607985 ], [ 112.650842, 29.592374 ], [ 112.693957, 29.601741 ], [ 112.714283, 29.648561 ], [ 112.733378, 29.645441 ], [ 112.788812, 29.681323 ], [ 112.79374, 29.735902 ], [ 112.861493, 29.78318 ], [ 112.894138, 29.783699 ], [ 112.923703, 29.766557 ], [ 112.926782, 29.692241 ], [ 112.944645, 29.682883 ], [ 112.974826, 29.732784 ], [ 113.025949, 29.772791 ], [ 113.005007, 29.693801 ], [ 112.915696, 29.620992 ], [ 112.912, 29.606944 ], [ 112.950188, 29.473132 ], [ 113.034572, 29.523658 ], [ 113.057362, 29.522616 ], [ 113.078304, 29.438218 ], [ 113.099861, 29.459585 ], [ 113.145441, 29.449163 ], [ 113.181781, 29.485636 ], [ 113.222433, 29.543965 ], [ 113.277252, 29.594976 ], [ 113.37765, 29.703158 ], [ 113.571671, 29.849123 ], [ 113.575367, 29.809147 ], [ 113.550729, 29.768115 ], [ 113.558736, 29.727067 ], [ 113.540258, 29.699519 ], [ 113.547033, 29.675603 ], [ 113.606164, 29.666764 ], [ 113.663446, 29.684443 ], [ 113.680692, 29.64336 ], [ 113.704098, 29.634518 ], [ 113.73859, 29.579363 ], [ 113.710257, 29.555419 ], [ 113.630801, 29.523137 ], [ 113.677613, 29.513763 ], [ 113.755221, 29.446557 ], [ 113.731199, 29.393907 ], [ 113.674533, 29.388172 ], [ 113.660982, 29.333405 ], [ 113.632033, 29.316186 ], [ 113.609859, 29.25146 ], [ 113.651743, 29.225872 ], [ 113.693011, 29.226394 ], [ 113.691779, 29.19662 ], [ 113.66283, 29.16945 ], [ 113.690547, 29.114566 ], [ 113.696091, 29.077437 ], [ 113.722576, 29.104631 ], [ 113.749677, 29.060699 ], [ 113.775547, 29.095219 ], [ 113.816199, 29.105154 ], [ 113.852539, 29.058606 ], [ 113.882104, 29.065407 ], [ 113.876561, 29.038202 ], [ 113.898119, 29.029307 ], [ 113.94185, 29.047097 ], [ 113.961561, 28.999476 ], [ 113.955401, 28.978536 ], [ 113.973879, 28.937692 ], [ 114.008988, 28.955498 ], [ 114.005292, 28.917788 ], [ 114.028082, 28.891069 ], [ 114.060111, 28.902596 ], [ 114.056415, 28.872204 ], [ 114.076741, 28.834464 ], [ 114.124784, 28.843376 ], [ 114.153734, 28.829221 ], [ 114.137719, 28.779926 ], [ 114.157429, 28.761566 ], [ 114.122321, 28.623497 ], [ 114.132176, 28.607211 ], [ 114.08598, 28.558337 ], [ 114.138335, 28.533629 ], [ 114.15435, 28.507337 ], [ 114.218407, 28.48472 ], [ 114.217175, 28.466308 ], [ 114.172212, 28.432632 ], [ 114.214712, 28.403157 ], [ 114.252284, 28.395787 ], [ 114.2529, 28.319423 ], [ 114.198081, 28.29097 ], [ 114.182067, 28.249858 ], [ 114.143879, 28.246694 ], [ 114.109386, 28.205038 ], [ 114.107538, 28.182885 ], [ 114.068734, 28.171806 ], [ 114.012068, 28.174972 ], [ 113.992357, 28.161255 ], [ 114.025002, 28.080499 ], [ 114.047176, 28.057263 ], [ 114.025618, 28.031382 ], [ 113.970184, 28.041418 ], [ 113.966488, 28.017646 ], [ 113.936307, 28.018703 ], [ 113.914133, 27.991227 ], [ 113.864242, 28.004966 ], [ 113.845148, 27.971672 ], [ 113.822974, 27.982243 ], [ 113.752141, 27.93361 ], [ 113.72812, 27.874904 ], [ 113.756453, 27.860091 ], [ 113.763228, 27.799228 ], [ 113.69917, 27.740979 ], [ 113.696707, 27.71979 ], [ 113.652359, 27.663619 ], [ 113.607395, 27.625449 ], [ 113.608627, 27.585143 ], [ 113.579062, 27.545354 ], [ 113.583374, 27.524657 ], [ 113.627105, 27.49971 ], [ 113.591381, 27.467855 ], [ 113.59754, 27.428554 ], [ 113.632033, 27.40518 ], [ 113.605548, 27.38924 ], [ 113.616635, 27.345658 ], [ 113.657902, 27.347253 ], [ 113.699786, 27.331836 ], [ 113.72812, 27.350442 ], [ 113.872865, 27.384988 ], [ 113.872865, 27.346721 ], [ 113.854387, 27.30525 ], [ 113.872865, 27.289828 ], [ 113.846996, 27.222262 ], [ 113.779242, 27.137081 ], [ 113.771851, 27.096598 ], [ 113.803264, 27.099261 ], [ 113.824206, 27.036378 ], [ 113.86301, 27.018252 ], [ 113.892575, 26.964925 ], [ 113.927068, 26.948922 ], [ 113.890112, 26.895562 ], [ 113.877177, 26.859262 ], [ 113.835909, 26.806394 ], [ 113.853771, 26.769532 ], [ 113.860546, 26.664221 ], [ 113.912901, 26.613938 ], [ 113.996669, 26.615543 ], [ 114.019459, 26.587182 ], [ 114.10877, 26.56952 ], [ 114.07243, 26.480096 ], [ 114.110002, 26.482775 ], [ 114.090292, 26.455988 ], [ 114.085364, 26.406149 ], [ 114.062575, 26.406149 ], [ 114.030546, 26.376664 ], [ 114.047792, 26.337518 ], [ 114.021307, 26.288701 ], [ 114.029314, 26.266163 ], [ 113.978807, 26.237716 ], [ 113.972647, 26.20604 ], [ 113.949242, 26.192616 ], [ 113.962792, 26.150722 ], [ 114.013299, 26.184023 ], [ 114.088444, 26.168448 ], [ 114.102611, 26.187783 ], [ 114.181451, 26.214631 ], [ 114.216559, 26.203355 ], [ 114.237501, 26.152333 ], [ 114.188842, 26.121172 ], [ 114.10569, 26.097526 ], [ 114.121089, 26.085702 ], [ 114.087828, 26.06635 ], [ 114.044096, 26.076564 ], [ 114.008372, 26.015806 ], [ 114.028082, 25.98138 ], [ 114.028082, 25.893119 ], [ 113.971416, 25.836036 ], [ 113.961561, 25.77731 ], [ 113.920293, 25.741197 ], [ 113.913517, 25.701299 ], [ 113.957249, 25.611749 ], [ 113.983118, 25.599336 ], [ 113.986198, 25.529153 ], [ 113.962792, 25.528072 ], [ 113.94493, 25.441635 ], [ 113.887032, 25.436772 ], [ 113.877177, 25.380552 ], [ 113.839605, 25.363248 ], [ 113.814967, 25.328634 ], [ 113.76446, 25.333502 ], [ 113.753373, 25.362707 ], [ 113.686852, 25.351891 ], [ 113.680076, 25.334584 ], [ 113.611707, 25.327552 ], [ 113.584606, 25.306453 ], [ 113.579062, 25.34432 ], [ 113.535946, 25.368656 ], [ 113.479896, 25.375145 ], [ 113.449715, 25.359463 ], [ 113.407215, 25.401637 ], [ 113.373338, 25.402719 ], [ 113.341926, 25.448661 ], [ 113.314208, 25.442716 ], [ 113.311129, 25.490264 ], [ 113.248919, 25.514031 ], [ 113.226129, 25.50971 ], [ 113.176854, 25.471355 ], [ 113.11834, 25.44704 ], [ 113.130658, 25.427043 ], [ 113.096782, 25.412449 ], [ 113.078304, 25.382174 ], [ 113.013014, 25.352432 ], [ 112.969898, 25.350269 ], [ 112.93479, 25.325929 ], [ 112.924319, 25.296714 ], [ 112.891058, 25.339993 ], [ 112.854718, 25.337829 ], [ 112.867036, 25.249632 ], [ 112.897833, 25.238264 ], [ 112.958195, 25.254503 ], [ 112.992688, 25.247467 ], [ 113.034572, 25.198199 ], [ 112.97421, 25.168412 ], [ 112.96805, 25.141869 ], [ 113.018557, 25.083344 ], [ 112.979137, 25.03401 ], [ 113.009934, 24.977604 ], [ 113.011782, 24.946136 ], [ 112.984681, 24.921172 ], [ 112.904609, 24.921715 ], [ 112.873812, 24.896747 ], [ 112.780805, 24.896747 ], [ 112.778341, 24.947764 ], [ 112.743233, 24.959701 ], [ 112.742001, 24.99876 ], [ 112.714899, 25.025876 ], [ 112.712436, 25.083344 ], [ 112.660081, 25.132658 ], [ 112.628052, 25.140785 ], [ 112.562762, 25.124531 ], [ 112.458053, 25.152162 ], [ 112.44327, 25.185744 ], [ 112.414937, 25.14241 ], [ 112.365046, 25.191701 ], [ 112.315771, 25.175453 ], [ 112.302836, 25.157037 ], [ 112.256025, 25.159204 ], [ 112.246785, 25.185202 ], [ 112.19751, 25.187368 ], [ 112.174105, 25.128866 ], [ 112.177184, 25.106649 ], [ 112.151931, 25.055698 ], [ 112.155626, 25.026419 ], [ 112.12175, 24.989538 ], [ 112.119902, 24.963499 ], [ 112.175337, 24.927685 ], [ 112.167329, 24.859828 ], [ 112.149467, 24.837019 ], [ 112.124214, 24.841364 ], [ 112.03367, 24.771286 ], [ 112.024431, 24.740308 ], [ 111.951135, 24.769655 ], [ 111.929577, 24.75607 ], [ 111.875374, 24.756613 ], [ 111.868599, 24.771829 ], [ 111.814396, 24.770199 ], [ 111.783599, 24.785957 ], [ 111.708455, 24.788673 ], [ 111.666571, 24.760961 ], [ 111.637621, 24.715303 ], [ 111.641933, 24.684856 ], [ 111.588962, 24.690837 ], [ 111.570484, 24.64461 ], [ 111.526752, 24.637538 ], [ 111.499035, 24.667997 ], [ 111.451608, 24.665822 ], [ 111.431282, 24.687574 ], [ 111.461463, 24.728894 ], [ 111.479325, 24.797366 ], [ 111.449144, 24.857113 ], [ 111.447296, 24.892947 ], [ 111.470086, 24.92877 ], [ 111.434977, 24.951562 ], [ 111.43313, 24.979774 ], [ 111.460231, 24.992793 ], [ 111.467622, 25.02208 ], [ 111.416499, 25.047566 ], [ 111.435593, 25.093642 ], [ 111.375231, 25.128324 ], [ 111.36784, 25.108817 ], [ 111.321645, 25.105023 ], [ 111.274833, 25.151078 ], [ 111.221862, 25.106649 ], [ 111.200921, 25.074672 ], [ 111.139943, 25.042144 ], [ 111.101754, 25.035095 ], [ 111.100522, 24.945593 ], [ 111.009363, 24.921172 ], [ 110.968711, 24.975434 ], [ 110.951465, 25.04377 ], [ 110.98411, 25.101772 ], [ 110.998892, 25.161371 ], [ 111.112841, 25.21715 ], [ 111.103602, 25.285351 ], [ 111.138711, 25.303748 ], [ 111.184906, 25.367034 ], [ 111.210776, 25.363248 ], [ 111.257587, 25.395691 ], [ 111.26313, 25.42326 ], [ 111.300087, 25.44812 ], [ 111.32842, 25.521592 ], [ 111.324724, 25.564249 ], [ 111.343202, 25.602574 ], [ 111.309942, 25.645203 ], [ 111.30871, 25.720171 ], [ 111.399869, 25.744431 ], [ 111.442369, 25.77192 ], [ 111.43313, 25.84627 ], [ 111.4861, 25.859196 ], [ 111.460231, 25.885042 ], [ 111.383239, 25.881812 ], [ 111.376463, 25.906039 ], [ 111.346282, 25.906577 ], [ 111.297007, 25.874274 ], [ 111.29208, 25.854349 ], [ 111.251428, 25.864581 ], [ 111.230486, 25.916267 ], [ 111.189834, 25.953402 ], [ 111.235413, 26.048071 ], [ 111.267442, 26.058824 ], [ 111.244652, 26.078177 ], [ 111.26621, 26.095914 ], [ 111.258203, 26.151796 ], [ 111.274833, 26.183486 ], [ 111.271754, 26.217316 ], [ 111.293311, 26.222148 ], [ 111.277913, 26.272066 ], [ 111.228022, 26.261333 ], [ 111.204616, 26.276359 ], [ 111.208928, 26.30426 ], [ 111.090667, 26.308016 ], [ 111.008132, 26.336982 ], [ 111.008747, 26.35897 ], [ 110.974255, 26.385778 ], [ 110.94469, 26.373447 ], [ 110.944074, 26.326791 ], [ 110.926212, 26.320354 ], [ 110.939762, 26.286554 ], [ 110.836284, 26.255966 ], [ 110.759292, 26.248451 ], [ 110.73835, 26.271529 ], [ 110.742046, 26.313917 ], [ 110.711249, 26.29192 ], [ 110.673676, 26.317135 ], [ 110.643495, 26.308552 ], [ 110.612083, 26.333764 ], [ 110.584365, 26.296749 ], [ 110.552952, 26.283335 ], [ 110.546793, 26.233421 ], [ 110.495054, 26.166299 ], [ 110.477808, 26.179727 ], [ 110.437772, 26.153945 ], [ 110.373098, 26.088927 ], [ 110.325671, 25.975462 ], [ 110.257301, 25.961473 ], [ 110.24991, 26.010965 ], [ 110.181541, 26.060437 ], [ 110.168606, 26.028713 ], [ 110.100853, 26.020108 ], [ 110.065128, 26.050221 ], [ 110.100853, 26.132455 ], [ 110.099005, 26.168985 ], [ 110.03002, 26.166299 ], [ 109.970274, 26.195301 ], [ 109.904368, 26.135679 ], [ 109.898825, 26.095377 ], [ 109.864332, 26.027637 ], [ 109.814441, 26.041081 ], [ 109.782412, 25.996981 ], [ 109.806434, 25.973848 ], [ 109.826144, 25.911422 ], [ 109.811361, 25.877504 ], [ 109.779333, 25.866196 ], [ 109.768246, 25.890427 ], [ 109.685094, 25.880197 ], [ 109.67955, 25.921649 ], [ 109.693717, 25.959321 ], [ 109.710963, 25.954478 ], [ 109.730057, 25.989988 ], [ 109.649369, 26.016882 ], [ 109.635203, 26.047533 ], [ 109.588391, 26.019571 ], [ 109.560058, 26.021184 ], [ 109.513247, 25.998056 ], [ 109.48245, 26.029788 ] ] ], [ [ [ 109.528645, 26.743881 ], [ 109.52187, 26.749226 ], [ 109.522486, 26.749226 ], [ 109.528645, 26.743881 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "440000", "name": "广东省", "center": [ 113.280637, 23.125178 ], "centroid": [ 113.429915, 23.334652 ], "childrenNum": 21, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 18, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 109.785492, 21.45673 ], [ 109.788572, 21.490702 ], [ 109.754695, 21.556396 ], [ 109.742992, 21.616497 ], [ 109.778101, 21.670455 ], [ 109.786108, 21.637638 ], [ 109.839695, 21.636525 ], [ 109.888354, 21.652101 ], [ 109.888354, 21.652101 ], [ 109.916071, 21.668787 ], [ 109.940093, 21.769419 ], [ 109.94502, 21.84443 ], [ 109.999839, 21.881643 ], [ 110.050962, 21.857205 ], [ 110.101469, 21.86998 ], [ 110.12857, 21.902744 ], [ 110.196323, 21.899968 ], [ 110.212338, 21.886085 ], [ 110.212338, 21.886085 ], [ 110.224041, 21.882198 ], [ 110.224041, 21.882198 ], [ 110.283787, 21.892194 ], [ 110.290562, 21.917736 ], [ 110.337374, 21.887751 ], [ 110.391576, 21.89386 ], [ 110.378642, 21.939942 ], [ 110.378642, 21.939942 ], [ 110.374946, 21.967695 ], [ 110.374946, 21.967695 ], [ 110.352772, 21.97602 ], [ 110.359547, 22.015973 ], [ 110.35154, 22.097508 ], [ 110.364475, 22.125785 ], [ 110.326287, 22.152393 ], [ 110.34846, 22.195621 ], [ 110.378026, 22.164587 ], [ 110.414366, 22.208365 ], [ 110.456866, 22.189526 ], [ 110.505525, 22.14297 ], [ 110.55788, 22.196175 ], [ 110.602843, 22.18343 ], [ 110.598532, 22.162924 ], [ 110.629329, 22.149068 ], [ 110.678604, 22.172901 ], [ 110.646575, 22.220554 ], [ 110.687843, 22.249914 ], [ 110.725415, 22.29588 ], [ 110.759292, 22.274837 ], [ 110.787009, 22.28259 ], [ 110.749437, 22.329653 ], [ 110.74143, 22.361757 ], [ 110.711249, 22.369506 ], [ 110.712481, 22.440879 ], [ 110.688459, 22.477935 ], [ 110.74143, 22.464109 ], [ 110.740198, 22.498947 ], [ 110.762988, 22.518298 ], [ 110.749437, 22.556991 ], [ 110.778386, 22.585174 ], [ 110.812263, 22.576333 ], [ 110.897878, 22.591805 ], [ 110.896031, 22.613352 ], [ 110.950233, 22.61059 ], [ 110.958856, 22.636553 ], [ 110.997045, 22.631582 ], [ 111.055559, 22.648705 ], [ 111.089435, 22.695643 ], [ 111.058023, 22.729871 ], [ 111.118385, 22.744773 ], [ 111.185522, 22.735942 ], [ 111.218167, 22.748085 ], [ 111.358601, 22.889301 ], [ 111.374615, 22.938361 ], [ 111.362913, 22.967568 ], [ 111.403565, 22.99126 ], [ 111.389398, 23.005583 ], [ 111.433746, 23.036428 ], [ 111.43313, 23.073322 ], [ 111.402333, 23.066165 ], [ 111.377695, 23.082132 ], [ 111.365992, 23.14488 ], [ 111.38447, 23.16744 ], [ 111.388782, 23.210349 ], [ 111.36476, 23.240047 ], [ 111.353058, 23.284582 ], [ 111.376463, 23.30437 ], [ 111.363528, 23.340641 ], [ 111.389398, 23.375804 ], [ 111.383239, 23.399423 ], [ 111.399869, 23.469159 ], [ 111.428818, 23.466414 ], [ 111.479941, 23.532822 ], [ 111.487332, 23.626615 ], [ 111.555702, 23.64087 ], [ 111.615448, 23.639225 ], [ 111.614832, 23.65896 ], [ 111.666571, 23.718696 ], [ 111.621607, 23.725819 ], [ 111.627766, 23.78881 ], [ 111.654868, 23.833159 ], [ 111.683201, 23.822758 ], [ 111.683201, 23.822758 ], [ 111.722621, 23.823305 ], [ 111.8107, 23.80688 ], [ 111.824867, 23.832612 ], [ 111.812548, 23.887343 ], [ 111.845809, 23.904305 ], [ 111.854432, 23.947521 ], [ 111.911714, 23.943693 ], [ 111.940664, 23.987989 ], [ 111.92157, 24.012045 ], [ 111.878454, 24.109862 ], [ 111.886461, 24.163929 ], [ 111.871062, 24.176487 ], [ 111.877222, 24.227252 ], [ 111.912946, 24.221795 ], [ 111.958526, 24.263813 ], [ 111.986243, 24.25672 ], [ 111.990555, 24.279634 ], [ 112.026279, 24.294908 ], [ 112.05954, 24.339628 ], [ 112.057692, 24.387057 ], [ 112.025047, 24.438828 ], [ 111.985011, 24.467701 ], [ 112.009649, 24.503103 ], [ 112.007185, 24.534684 ], [ 111.972077, 24.578775 ], [ 111.936968, 24.595645 ], [ 111.927729, 24.629378 ], [ 111.953598, 24.64733 ], [ 111.939432, 24.686487 ], [ 111.961606, 24.721283 ], [ 112.024431, 24.740308 ], [ 112.03367, 24.771286 ], [ 112.124214, 24.841364 ], [ 112.149467, 24.837019 ], [ 112.167329, 24.859828 ], [ 112.175337, 24.927685 ], [ 112.119902, 24.963499 ], [ 112.12175, 24.989538 ], [ 112.155626, 25.026419 ], [ 112.151931, 25.055698 ], [ 112.177184, 25.106649 ], [ 112.174105, 25.128866 ], [ 112.19751, 25.187368 ], [ 112.246785, 25.185202 ], [ 112.256025, 25.159204 ], [ 112.302836, 25.157037 ], [ 112.315771, 25.175453 ], [ 112.365046, 25.191701 ], [ 112.414937, 25.14241 ], [ 112.44327, 25.185744 ], [ 112.458053, 25.152162 ], [ 112.562762, 25.124531 ], [ 112.628052, 25.140785 ], [ 112.660081, 25.132658 ], [ 112.712436, 25.083344 ], [ 112.714899, 25.025876 ], [ 112.742001, 24.99876 ], [ 112.743233, 24.959701 ], [ 112.778341, 24.947764 ], [ 112.780805, 24.896747 ], [ 112.873812, 24.896747 ], [ 112.904609, 24.921715 ], [ 112.984681, 24.921172 ], [ 113.011782, 24.946136 ], [ 113.009934, 24.977604 ], [ 112.979137, 25.03401 ], [ 113.018557, 25.083344 ], [ 112.96805, 25.141869 ], [ 112.97421, 25.168412 ], [ 113.034572, 25.198199 ], [ 112.992688, 25.247467 ], [ 112.958195, 25.254503 ], [ 112.897833, 25.238264 ], [ 112.867036, 25.249632 ], [ 112.854718, 25.337829 ], [ 112.891058, 25.339993 ], [ 112.924319, 25.296714 ], [ 112.93479, 25.325929 ], [ 112.969898, 25.350269 ], [ 113.013014, 25.352432 ], [ 113.078304, 25.382174 ], [ 113.096782, 25.412449 ], [ 113.130658, 25.427043 ], [ 113.11834, 25.44704 ], [ 113.176854, 25.471355 ], [ 113.226129, 25.50971 ], [ 113.248919, 25.514031 ], [ 113.311129, 25.490264 ], [ 113.314208, 25.442716 ], [ 113.341926, 25.448661 ], [ 113.373338, 25.402719 ], [ 113.407215, 25.401637 ], [ 113.449715, 25.359463 ], [ 113.479896, 25.375145 ], [ 113.535946, 25.368656 ], [ 113.579062, 25.34432 ], [ 113.584606, 25.306453 ], [ 113.611707, 25.327552 ], [ 113.680076, 25.334584 ], [ 113.686852, 25.351891 ], [ 113.753373, 25.362707 ], [ 113.76446, 25.333502 ], [ 113.814967, 25.328634 ], [ 113.839605, 25.363248 ], [ 113.877177, 25.380552 ], [ 113.887032, 25.436772 ], [ 113.94493, 25.441635 ], [ 114.003444, 25.442716 ], [ 113.983118, 25.415152 ], [ 114.050256, 25.36433 ], [ 114.029314, 25.328093 ], [ 114.017611, 25.273987 ], [ 114.039785, 25.250714 ], [ 114.055799, 25.277775 ], [ 114.083517, 25.275611 ], [ 114.115545, 25.302125 ], [ 114.190074, 25.316733 ], [ 114.204857, 25.29942 ], [ 114.260291, 25.291845 ], [ 114.2954, 25.299961 ], [ 114.31511, 25.33837 ], [ 114.382863, 25.317274 ], [ 114.43029, 25.343779 ], [ 114.438914, 25.376226 ], [ 114.477718, 25.37136 ], [ 114.541159, 25.416773 ], [ 114.599674, 25.385959 ], [ 114.63663, 25.324306 ], [ 114.714238, 25.315651 ], [ 114.743188, 25.274528 ], [ 114.73518, 25.225813 ], [ 114.693912, 25.213902 ], [ 114.685905, 25.173287 ], [ 114.73518, 25.155954 ], [ 114.735796, 25.121822 ], [ 114.664963, 25.10123 ], [ 114.640326, 25.074129 ], [ 114.604601, 25.083886 ], [ 114.561485, 25.077382 ], [ 114.532536, 25.022623 ], [ 114.506051, 24.999844 ], [ 114.45616, 24.99659 ], [ 114.454928, 24.977062 ], [ 114.395798, 24.951019 ], [ 114.403189, 24.877746 ], [ 114.378551, 24.861457 ], [ 114.342211, 24.807145 ], [ 114.336052, 24.749004 ], [ 114.281849, 24.724001 ], [ 114.27261, 24.700624 ], [ 114.169132, 24.689749 ], [ 114.19069, 24.656576 ], [ 114.258443, 24.641346 ], [ 114.289856, 24.619042 ], [ 114.300943, 24.578775 ], [ 114.363769, 24.582584 ], [ 114.391486, 24.563535 ], [ 114.403189, 24.497657 ], [ 114.429058, 24.48622 ], [ 114.534384, 24.559181 ], [ 114.589819, 24.537406 ], [ 114.627391, 24.576598 ], [ 114.664963, 24.583673 ], [ 114.704999, 24.525973 ], [ 114.73826, 24.565168 ], [ 114.729637, 24.608704 ], [ 114.781376, 24.613057 ], [ 114.827571, 24.588026 ], [ 114.846665, 24.602719 ], [ 114.868839, 24.562446 ], [ 114.893477, 24.582584 ], [ 114.909491, 24.661471 ], [ 114.940288, 24.650049 ], [ 115.00373, 24.679418 ], [ 115.024672, 24.669085 ], [ 115.057317, 24.703343 ], [ 115.083802, 24.699537 ], [ 115.104744, 24.667997 ], [ 115.1842, 24.711498 ], [ 115.258729, 24.728894 ], [ 115.269816, 24.749548 ], [ 115.306772, 24.758787 ], [ 115.358511, 24.735416 ], [ 115.372678, 24.774546 ], [ 115.412714, 24.79302 ], [ 115.476771, 24.762591 ], [ 115.522967, 24.702799 ], [ 115.555611, 24.683768 ], [ 115.569778, 24.622306 ], [ 115.605503, 24.62557 ], [ 115.671408, 24.604895 ], [ 115.68927, 24.545027 ], [ 115.752712, 24.546116 ], [ 115.785357, 24.567345 ], [ 115.843871, 24.562446 ], [ 115.840791, 24.584217 ], [ 115.797676, 24.628834 ], [ 115.780429, 24.663103 ], [ 115.801371, 24.705517 ], [ 115.769342, 24.708236 ], [ 115.756408, 24.749004 ], [ 115.776734, 24.774546 ], [ 115.764415, 24.791933 ], [ 115.790284, 24.856027 ], [ 115.807531, 24.862543 ], [ 115.824161, 24.909232 ], [ 115.863581, 24.891318 ], [ 115.861733, 24.863629 ], [ 115.907313, 24.879917 ], [ 115.885139, 24.898918 ], [ 115.89253, 24.936911 ], [ 115.907929, 24.923343 ], [ 115.985537, 24.899461 ], [ 116.015102, 24.905975 ], [ 116.068073, 24.850053 ], [ 116.153073, 24.846795 ], [ 116.191877, 24.877203 ], [ 116.221442, 24.829959 ], [ 116.251007, 24.82507 ], [ 116.244232, 24.793563 ], [ 116.297202, 24.801712 ], [ 116.345862, 24.828872 ], [ 116.363724, 24.87123 ], [ 116.395137, 24.877746 ], [ 116.417927, 24.840821 ], [ 116.381586, 24.82507 ], [ 116.375427, 24.803885 ], [ 116.419158, 24.767482 ], [ 116.416079, 24.744113 ], [ 116.44626, 24.714216 ], [ 116.485064, 24.720196 ], [ 116.517709, 24.652225 ], [ 116.506622, 24.621218 ], [ 116.530027, 24.604895 ], [ 116.570679, 24.621762 ], [ 116.600861, 24.654401 ], [ 116.623034, 24.64189 ], [ 116.667382, 24.658752 ], [ 116.777635, 24.679418 ], [ 116.815207, 24.654944 ], [ 116.761005, 24.583128 ], [ 116.759157, 24.545572 ], [ 116.796729, 24.502014 ], [ 116.83307, 24.496568 ], [ 116.860787, 24.460075 ], [ 116.839229, 24.442097 ], [ 116.903903, 24.369614 ], [ 116.895895, 24.350533 ], [ 116.919301, 24.321087 ], [ 116.914374, 24.287817 ], [ 116.938395, 24.28127 ], [ 116.933468, 24.220157 ], [ 116.956257, 24.216883 ], [ 116.998757, 24.179217 ], [ 116.9347, 24.126794 ], [ 116.930388, 24.064514 ], [ 116.953178, 24.008218 ], [ 116.981511, 23.999471 ], [ 116.976583, 23.931659 ], [ 116.955642, 23.922359 ], [ 116.981511, 23.855602 ], [ 117.012308, 23.855054 ], [ 117.019083, 23.801952 ], [ 117.048032, 23.758687 ], [ 117.055424, 23.694038 ], [ 117.123793, 23.647448 ], [ 117.147199, 23.654027 ], [ 117.192778, 23.629356 ], [ 117.192778, 23.5619 ], [ 117.085605, 23.536663 ], [ 117.044953, 23.539955 ], [ 117.01046, 23.502641 ], [ 116.963649, 23.507031 ], [ 116.92854, 23.530079 ], [ 116.888504, 23.501543 ], [ 116.895895, 23.476295 ], [ 116.874953, 23.447748 ], [ 116.874338, 23.447199 ], [ 116.871258, 23.416449 ], [ 116.871874, 23.4159 ], [ 116.782563, 23.313714 ], [ 116.798577, 23.244996 ], [ 116.821367, 23.240597 ], [ 116.806584, 23.200998 ], [ 116.74499, 23.215299 ], [ 116.701259, 23.198248 ], [ 116.665534, 23.158086 ], [ 116.566368, 23.134424 ], [ 116.550969, 23.109656 ], [ 116.566368, 23.088738 ], [ 116.557129, 23.056253 ], [ 116.576839, 23.014397 ], [ 116.542346, 22.995667 ], [ 116.50539, 22.930645 ], [ 116.449955, 22.936707 ], [ 116.382818, 22.91907 ], [ 116.317528, 22.95269 ], [ 116.226985, 22.91466 ], [ 116.191261, 22.874965 ], [ 116.104413, 22.816505 ], [ 116.05637, 22.844635 ], [ 115.99724, 22.826985 ], [ 115.965211, 22.800506 ], [ 115.931334, 22.802713 ], [ 115.883291, 22.78561 ], [ 115.829089, 22.734838 ], [ 115.796444, 22.739254 ], [ 115.788437, 22.809885 ], [ 115.760103, 22.834707 ], [ 115.696046, 22.84298 ], [ 115.654162, 22.865591 ], [ 115.583945, 22.82864 ], [ 115.570394, 22.786713 ], [ 115.541445, 22.755259 ], [ 115.609198, 22.753052 ], [ 115.565467, 22.684048 ], [ 115.575322, 22.650914 ], [ 115.471844, 22.697852 ], [ 115.430576, 22.684048 ], [ 115.381301, 22.684048 ], [ 115.349272, 22.712206 ], [ 115.338185, 22.776781 ], [ 115.319091, 22.783402 ], [ 115.230396, 22.776781 ], [ 115.236555, 22.82533 ], [ 115.190359, 22.818711 ], [ 115.190975, 22.77347 ], [ 115.154635, 22.80161 ], [ 115.061628, 22.783402 ], [ 115.053621, 22.747533 ], [ 115.02344, 22.726007 ], [ 115.039454, 22.713862 ], [ 114.945216, 22.645391 ], [ 114.927969, 22.621639 ], [ 114.922426, 22.549253 ], [ 114.88547, 22.538751 ], [ 114.866375, 22.591805 ], [ 114.746267, 22.581859 ], [ 114.743803, 22.632687 ], [ 114.728405, 22.651466 ], [ 114.73518, 22.724351 ], [ 114.749963, 22.764089 ], [ 114.709927, 22.787817 ], [ 114.689601, 22.7674 ], [ 114.601521, 22.730975 ], [ 114.591666, 22.690122 ], [ 114.567029, 22.685705 ], [ 114.51529, 22.655332 ], [ 114.579964, 22.661407 ], [ 114.603369, 22.638763 ], [ 114.559022, 22.583517 ], [ 114.568261, 22.560859 ], [ 114.614456, 22.545384 ], [ 114.628623, 22.513875 ], [ 114.611377, 22.481806 ], [ 114.549167, 22.465769 ], [ 114.506667, 22.438667 ], [ 114.476486, 22.459132 ], [ 114.472174, 22.522168 ], [ 114.427211, 22.589042 ], [ 114.381631, 22.60175 ], [ 114.321885, 22.587385 ], [ 114.294784, 22.563623 ], [ 114.232574, 22.539857 ], [ 114.222719, 22.553122 ], [ 114.166052, 22.559201 ], [ 114.156813, 22.543726 ], [ 114.095219, 22.534329 ], [ 114.082285, 22.512216 ], [ 114.031778, 22.503923 ], [ 113.976343, 22.510558 ], [ 113.954785, 22.491206 ], [ 113.952937, 22.486783 ], [ 113.893807, 22.442539 ], [ 113.869786, 22.459685 ], [ 113.856851, 22.539857 ], [ 113.803264, 22.593463 ], [ 113.773083, 22.643182 ], [ 113.751525, 22.715518 ], [ 113.733663, 22.736494 ], [ 113.678228, 22.726007 ], [ 113.717033, 22.645391 ], [ 113.740438, 22.534329 ], [ 113.691779, 22.514981 ], [ 113.668373, 22.4807 ], [ 113.631417, 22.475723 ], [ 113.573519, 22.41156 ], [ 113.608627, 22.408793 ], [ 113.624642, 22.443092 ], [ 113.66591, 22.438667 ], [ 113.669605, 22.416539 ], [ 113.627721, 22.349027 ], [ 113.604932, 22.339617 ], [ 113.617866, 22.315259 ], [ 113.595693, 22.304186 ], [ 113.594461, 22.228864 ], [ 113.558736, 22.212244 ], [ 113.53841, 22.209473 ], [ 113.534715, 22.174009 ], [ 113.554425, 22.142416 ], [ 113.554425, 22.107489 ], [ 113.567359, 22.075327 ], [ 113.527939, 22.073663 ], [ 113.45957, 22.043711 ], [ 113.442324, 22.009315 ], [ 113.330223, 21.96159 ], [ 113.319752, 21.909407 ], [ 113.266781, 21.871646 ], [ 113.235368, 21.887751 ], [ 113.1516, 21.979905 ], [ 113.142977, 22.012089 ], [ 113.091854, 22.065344 ], [ 113.086927, 22.12634 ], [ 113.045659, 22.088636 ], [ 113.032108, 22.04593 ], [ 113.053666, 22.012089 ], [ 113.047507, 21.956595 ], [ 112.989608, 21.869424 ], [ 112.929862, 21.838875 ], [ 112.893522, 21.84443 ], [ 112.841167, 21.920512 ], [ 112.792508, 21.921067 ], [ 112.68595, 21.810541 ], [ 112.647146, 21.758302 ], [ 112.535661, 21.753856 ], [ 112.497473, 21.785535 ], [ 112.445734, 21.803317 ], [ 112.427256, 21.789981 ], [ 112.415553, 21.734956 ], [ 112.353343, 21.707157 ], [ 112.238778, 21.702153 ], [ 112.236315, 21.727173 ], [ 112.196894, 21.736624 ], [ 112.192583, 21.789425 ], [ 112.136532, 21.793871 ], [ 112.036134, 21.761637 ], [ 111.956062, 21.710494 ], [ 111.954214, 21.667674 ], [ 111.997946, 21.657107 ], [ 112.026895, 21.633744 ], [ 111.972692, 21.603144 ], [ 111.941896, 21.607039 ], [ 111.887693, 21.578659 ], [ 111.810084, 21.555283 ], [ 111.832258, 21.578659 ], [ 111.794686, 21.61149 ], [ 111.736788, 21.609821 ], [ 111.693672, 21.590345 ], [ 111.677658, 21.529677 ], [ 111.650556, 21.512418 ], [ 111.609904, 21.530234 ], [ 111.560629, 21.50518 ], [ 111.521825, 21.517429 ], [ 111.494724, 21.501282 ], [ 111.444217, 21.514088 ], [ 111.382623, 21.495714 ], [ 111.353058, 21.464528 ], [ 111.28592, 21.41885 ], [ 111.258819, 21.412165 ], [ 111.253275, 21.452831 ], [ 111.276065, 21.443362 ], [ 111.28284, 21.485691 ], [ 111.171355, 21.458401 ], [ 111.103602, 21.455616 ], [ 111.034617, 21.438906 ], [ 110.929291, 21.375945 ], [ 110.888639, 21.367585 ], [ 110.796248, 21.37483 ], [ 110.768531, 21.364799 ], [ 110.713097, 21.3124 ], [ 110.65951, 21.239902 ], [ 110.626249, 21.215915 ], [ 110.534474, 21.204198 ], [ 110.501213, 21.217588 ], [ 110.451322, 21.186343 ], [ 110.422373, 21.190807 ], [ 110.39096, 21.124949 ], [ 110.296722, 21.093684 ], [ 110.24991, 21.045098 ], [ 110.241903, 21.016051 ], [ 110.208642, 21.050684 ], [ 110.204947, 21.003202 ], [ 110.180925, 20.98197 ], [ 110.184005, 20.891979 ], [ 110.209874, 20.860106 ], [ 110.269004, 20.839972 ], [ 110.327519, 20.847802 ], [ 110.393424, 20.816479 ], [ 110.407591, 20.731987 ], [ 110.392192, 20.682724 ], [ 110.411286, 20.670966 ], [ 110.466105, 20.680485 ], [ 110.487047, 20.640167 ], [ 110.499982, 20.572386 ], [ 110.550489, 20.47262 ], [ 110.54125, 20.42047 ], [ 110.491358, 20.373912 ], [ 110.452554, 20.311064 ], [ 110.425453, 20.291419 ], [ 110.384185, 20.293103 ], [ 110.349076, 20.258859 ], [ 110.296722, 20.249314 ], [ 110.220345, 20.25156 ], [ 110.168606, 20.219553 ], [ 110.118099, 20.219553 ], [ 110.082375, 20.258859 ], [ 109.993679, 20.254368 ], [ 109.929006, 20.211691 ], [ 109.909296, 20.236961 ], [ 109.916071, 20.316677 ], [ 109.861252, 20.376717 ], [ 109.864948, 20.40196 ], [ 109.895745, 20.42776 ], [ 109.888354, 20.475423 ], [ 109.839695, 20.489439 ], [ 109.811977, 20.541566 ], [ 109.813825, 20.574627 ], [ 109.793499, 20.615522 ], [ 109.74484, 20.621124 ], [ 109.730057, 20.719673 ], [ 109.711579, 20.774519 ], [ 109.664768, 20.862343 ], [ 109.655529, 20.929435 ], [ 109.674007, 21.067997 ], [ 109.674623, 21.136671 ], [ 109.763934, 21.226514 ], [ 109.757775, 21.346963 ], [ 109.770709, 21.359783 ], [ 109.868644, 21.365913 ], [ 109.904368, 21.429992 ], [ 109.894513, 21.442248 ], [ 109.819369, 21.445033 ], [ 109.785492, 21.45673 ] ] ], [ [ [ 117.145351, 23.455983 ], [ 117.142887, 23.400522 ], [ 117.124409, 23.389537 ], [ 117.081909, 23.409309 ], [ 117.050496, 23.400522 ], [ 117.027091, 23.41535 ], [ 116.946402, 23.42194 ], [ 116.944555, 23.440061 ], [ 116.982743, 23.460924 ], [ 117.022779, 23.436767 ], [ 117.058503, 23.47355 ], [ 117.093612, 23.459277 ], [ 117.129336, 23.483431 ], [ 117.145351, 23.455983 ] ] ], [ [ [ 112.853486, 21.740515 ], [ 112.83316, 21.736624 ], [ 112.804826, 21.686583 ], [ 112.821457, 21.655994 ], [ 112.798667, 21.610933 ], [ 112.817145, 21.590345 ], [ 112.775261, 21.564189 ], [ 112.730914, 21.613715 ], [ 112.780189, 21.671568 ], [ 112.734609, 21.666562 ], [ 112.70566, 21.679354 ], [ 112.724138, 21.719945 ], [ 112.782653, 21.739959 ], [ 112.840551, 21.776644 ], [ 112.876275, 21.772753 ], [ 112.853486, 21.740515 ] ] ], [ [ [ 112.530733, 21.583667 ], [ 112.535045, 21.628737 ], [ 112.57077, 21.645982 ], [ 112.560299, 21.666562 ], [ 112.592327, 21.693256 ], [ 112.663776, 21.714386 ], [ 112.66624, 21.683803 ], [ 112.639139, 21.67268 ], [ 112.665624, 21.642644 ], [ 112.621277, 21.606482 ], [ 112.571385, 21.619835 ], [ 112.563378, 21.591458 ], [ 112.530733, 21.583667 ] ] ], [ [ [ 114.231342, 22.016528 ], [ 114.239965, 22.03539 ], [ 114.302791, 22.050368 ], [ 114.311414, 22.041493 ], [ 114.231342, 22.016528 ] ] ], [ [ [ 112.435263, 21.663781 ], [ 112.458669, 21.68992 ], [ 112.456205, 21.648763 ], [ 112.435263, 21.663781 ] ] ], [ [ [ 110.435308, 21.182995 ], [ 110.445163, 21.184669 ], [ 110.499366, 21.213125 ], [ 110.525235, 21.190249 ], [ 110.589293, 21.194713 ], [ 110.632409, 21.210893 ], [ 110.582517, 21.094801 ], [ 110.544945, 21.083633 ], [ 110.508605, 21.140579 ], [ 110.434076, 21.168485 ], [ 110.435308, 21.182995 ] ] ], [ [ [ 110.517844, 21.079166 ], [ 110.560344, 21.061295 ], [ 110.539402, 20.987557 ], [ 110.535706, 20.922727 ], [ 110.511684, 20.916578 ], [ 110.47288, 20.983087 ], [ 110.407591, 20.990351 ], [ 110.347845, 20.984763 ], [ 110.309656, 20.963529 ], [ 110.201251, 20.938378 ], [ 110.211106, 20.986999 ], [ 110.27578, 21.033369 ], [ 110.305961, 21.0881 ], [ 110.352772, 21.079724 ], [ 110.398352, 21.096476 ], [ 110.459946, 21.062971 ], [ 110.517844, 21.079166 ] ] ], [ [ [ 113.765076, 21.962145 ], [ 113.74167, 21.991559 ], [ 113.774315, 21.998218 ], [ 113.765076, 21.962145 ] ] ], [ [ [ 113.723192, 21.922177 ], [ 113.71888, 21.951599 ], [ 113.742902, 21.950489 ], [ 113.723192, 21.922177 ] ] ], [ [ [ 113.142977, 21.831653 ], [ 113.136818, 21.868869 ], [ 113.167615, 21.876644 ], [ 113.203955, 21.861093 ], [ 113.162071, 21.853873 ], [ 113.142977, 21.831653 ] ] ], [ [ [ 113.819894, 22.396068 ], [ 113.786634, 22.413773 ], [ 113.813735, 22.419858 ], [ 113.819894, 22.396068 ] ] ], [ [ [ 114.190074, 21.986564 ], [ 114.180835, 22.00987 ], [ 114.229494, 21.995443 ], [ 114.190074, 21.986564 ] ] ], [ [ [ 114.153734, 21.97491 ], [ 114.124169, 21.985455 ], [ 114.171596, 22.000437 ], [ 114.153734, 21.97491 ] ] ], [ [ [ 116.769628, 20.771721 ], [ 116.820135, 20.780674 ], [ 116.88604, 20.775638 ], [ 116.925461, 20.726949 ], [ 116.934084, 20.676565 ], [ 116.905135, 20.619443 ], [ 116.862635, 20.588633 ], [ 116.796113, 20.582471 ], [ 116.749302, 20.600958 ], [ 116.849084, 20.628405 ], [ 116.889736, 20.683284 ], [ 116.87249, 20.738143 ], [ 116.761005, 20.750456 ], [ 116.769628, 20.771721 ] ] ], [ [ [ 113.025333, 21.847762 ], [ 113.007471, 21.869424 ], [ 113.045659, 21.882753 ], [ 113.025333, 21.847762 ] ] ], [ [ [ 110.405127, 20.678245 ], [ 110.414366, 20.710157 ], [ 110.437772, 20.677685 ], [ 110.405127, 20.678245 ] ] ], [ [ [ 110.644727, 20.935584 ], [ 110.646575, 20.917137 ], [ 110.611467, 20.860106 ], [ 110.562807, 20.861224 ], [ 110.548641, 20.908752 ], [ 110.584365, 20.948998 ], [ 110.644727, 20.935584 ] ] ], [ [ [ 110.556648, 20.32734 ], [ 110.586213, 20.381205 ], [ 110.593604, 20.360447 ], [ 110.556648, 20.32734 ] ] ], [ [ [ 115.943037, 21.097592 ], [ 115.965211, 21.123832 ], [ 116.024341, 21.12439 ], [ 116.044051, 21.110434 ], [ 116.067457, 21.04063 ], [ 116.040356, 21.02052 ], [ 115.989233, 21.035603 ], [ 115.953508, 21.064088 ], [ 115.943037, 21.097592 ] ] ], [ [ [ 115.926407, 20.981411 ], [ 115.954124, 20.99985 ], [ 116.000936, 20.948439 ], [ 115.999088, 20.922727 ], [ 115.970139, 20.919373 ], [ 115.939342, 20.945644 ], [ 115.926407, 20.981411 ] ] ], [ [ [ 115.834632, 22.722695 ], [ 115.835248, 22.722695 ], [ 115.834632, 22.722143 ], [ 115.834632, 22.722695 ] ] ], [ [ [ 115.834632, 22.723247 ], [ 115.835248, 22.722695 ], [ 115.834632, 22.722695 ], [ 115.834632, 22.723247 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "450000", "name": "广西壮族自治区", "center": [ 108.320004, 22.82402 ], "centroid": [ 108.7944, 23.833381 ], "childrenNum": 14, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 19, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 112.024431, 24.740308 ], [ 111.961606, 24.721283 ], [ 111.939432, 24.686487 ], [ 111.953598, 24.64733 ], [ 111.927729, 24.629378 ], [ 111.936968, 24.595645 ], [ 111.972077, 24.578775 ], [ 112.007185, 24.534684 ], [ 112.009649, 24.503103 ], [ 111.985011, 24.467701 ], [ 112.025047, 24.438828 ], [ 112.057692, 24.387057 ], [ 112.05954, 24.339628 ], [ 112.026279, 24.294908 ], [ 111.990555, 24.279634 ], [ 111.986243, 24.25672 ], [ 111.958526, 24.263813 ], [ 111.912946, 24.221795 ], [ 111.877222, 24.227252 ], [ 111.871062, 24.176487 ], [ 111.886461, 24.163929 ], [ 111.878454, 24.109862 ], [ 111.92157, 24.012045 ], [ 111.940664, 23.987989 ], [ 111.911714, 23.943693 ], [ 111.854432, 23.947521 ], [ 111.845809, 23.904305 ], [ 111.812548, 23.887343 ], [ 111.824867, 23.832612 ], [ 111.8107, 23.80688 ], [ 111.722621, 23.823305 ], [ 111.683201, 23.822758 ], [ 111.683201, 23.822758 ], [ 111.654868, 23.833159 ], [ 111.627766, 23.78881 ], [ 111.621607, 23.725819 ], [ 111.666571, 23.718696 ], [ 111.614832, 23.65896 ], [ 111.615448, 23.639225 ], [ 111.555702, 23.64087 ], [ 111.487332, 23.626615 ], [ 111.479941, 23.532822 ], [ 111.428818, 23.466414 ], [ 111.399869, 23.469159 ], [ 111.383239, 23.399423 ], [ 111.389398, 23.375804 ], [ 111.363528, 23.340641 ], [ 111.376463, 23.30437 ], [ 111.353058, 23.284582 ], [ 111.36476, 23.240047 ], [ 111.388782, 23.210349 ], [ 111.38447, 23.16744 ], [ 111.365992, 23.14488 ], [ 111.377695, 23.082132 ], [ 111.402333, 23.066165 ], [ 111.43313, 23.073322 ], [ 111.433746, 23.036428 ], [ 111.389398, 23.005583 ], [ 111.403565, 22.99126 ], [ 111.362913, 22.967568 ], [ 111.374615, 22.938361 ], [ 111.358601, 22.889301 ], [ 111.218167, 22.748085 ], [ 111.185522, 22.735942 ], [ 111.118385, 22.744773 ], [ 111.058023, 22.729871 ], [ 111.089435, 22.695643 ], [ 111.055559, 22.648705 ], [ 110.997045, 22.631582 ], [ 110.958856, 22.636553 ], [ 110.950233, 22.61059 ], [ 110.896031, 22.613352 ], [ 110.897878, 22.591805 ], [ 110.812263, 22.576333 ], [ 110.778386, 22.585174 ], [ 110.749437, 22.556991 ], [ 110.762988, 22.518298 ], [ 110.740198, 22.498947 ], [ 110.74143, 22.464109 ], [ 110.688459, 22.477935 ], [ 110.712481, 22.440879 ], [ 110.711249, 22.369506 ], [ 110.74143, 22.361757 ], [ 110.749437, 22.329653 ], [ 110.787009, 22.28259 ], [ 110.759292, 22.274837 ], [ 110.725415, 22.29588 ], [ 110.687843, 22.249914 ], [ 110.646575, 22.220554 ], [ 110.678604, 22.172901 ], [ 110.629329, 22.149068 ], [ 110.598532, 22.162924 ], [ 110.602843, 22.18343 ], [ 110.55788, 22.196175 ], [ 110.505525, 22.14297 ], [ 110.456866, 22.189526 ], [ 110.414366, 22.208365 ], [ 110.378026, 22.164587 ], [ 110.34846, 22.195621 ], [ 110.326287, 22.152393 ], [ 110.364475, 22.125785 ], [ 110.35154, 22.097508 ], [ 110.359547, 22.015973 ], [ 110.352772, 21.97602 ], [ 110.374946, 21.967695 ], [ 110.374946, 21.967695 ], [ 110.378642, 21.939942 ], [ 110.378642, 21.939942 ], [ 110.391576, 21.89386 ], [ 110.337374, 21.887751 ], [ 110.290562, 21.917736 ], [ 110.283787, 21.892194 ], [ 110.224041, 21.882198 ], [ 110.224041, 21.882198 ], [ 110.212338, 21.886085 ], [ 110.212338, 21.886085 ], [ 110.196323, 21.899968 ], [ 110.12857, 21.902744 ], [ 110.101469, 21.86998 ], [ 110.050962, 21.857205 ], [ 109.999839, 21.881643 ], [ 109.94502, 21.84443 ], [ 109.940093, 21.769419 ], [ 109.916071, 21.668787 ], [ 109.888354, 21.652101 ], [ 109.888354, 21.652101 ], [ 109.839695, 21.636525 ], [ 109.786108, 21.637638 ], [ 109.778101, 21.670455 ], [ 109.742992, 21.616497 ], [ 109.754695, 21.556396 ], [ 109.788572, 21.490702 ], [ 109.785492, 21.45673 ], [ 109.704188, 21.462857 ], [ 109.654913, 21.493487 ], [ 109.612413, 21.556953 ], [ 109.604406, 21.523553 ], [ 109.576689, 21.493487 ], [ 109.540964, 21.466199 ], [ 109.529877, 21.437234 ], [ 109.484914, 21.453388 ], [ 109.41716, 21.438906 ], [ 109.245929, 21.425536 ], [ 109.186183, 21.390991 ], [ 109.138756, 21.388762 ], [ 109.095024, 21.419407 ], [ 109.046365, 21.424421 ], [ 109.039589, 21.457844 ], [ 109.074698, 21.489589 ], [ 109.142451, 21.511861 ], [ 109.138756, 21.567528 ], [ 109.110422, 21.568085 ], [ 109.09872, 21.571424 ], [ 109.093792, 21.579215 ], [ 108.937959, 21.589789 ], [ 108.881293, 21.627068 ], [ 108.83325, 21.610933 ], [ 108.801837, 21.626512 ], [ 108.745786, 21.602587 ], [ 108.710062, 21.646538 ], [ 108.705134, 21.622061 ], [ 108.678033, 21.659331 ], [ 108.658939, 21.643757 ], [ 108.626294, 21.67991 ], [ 108.591802, 21.677129 ], [ 108.492635, 21.554727 ], [ 108.397781, 21.533017 ], [ 108.330027, 21.540254 ], [ 108.230245, 21.491259 ], [ 108.210535, 21.505737 ], [ 108.249955, 21.561406 ], [ 108.241332, 21.599805 ], [ 108.205608, 21.597579 ], [ 108.156332, 21.55083 ], [ 108.193905, 21.519656 ], [ 108.108289, 21.508521 ], [ 108.041768, 21.544151 ], [ 107.958, 21.534131 ], [ 107.929051, 21.585893 ], [ 107.893942, 21.596466 ], [ 107.892095, 21.622617 ], [ 107.863761, 21.650988 ], [ 107.837892, 21.640419 ], [ 107.807711, 21.655438 ], [ 107.712856, 21.616497 ], [ 107.603219, 21.597579 ], [ 107.584741, 21.614828 ], [ 107.547168, 21.58645 ], [ 107.486806, 21.59591 ], [ 107.500973, 21.613715 ], [ 107.477567, 21.659888 ], [ 107.431372, 21.642088 ], [ 107.388256, 21.594241 ], [ 107.363619, 21.602031 ], [ 107.356843, 21.667674 ], [ 107.310648, 21.733844 ], [ 107.271844, 21.727173 ], [ 107.242279, 21.703265 ], [ 107.199163, 21.718833 ], [ 107.194851, 21.736624 ], [ 107.148656, 21.758858 ], [ 107.093837, 21.803317 ], [ 107.018077, 21.81943 ], [ 107.018693, 21.859427 ], [ 107.058729, 21.887196 ], [ 107.05996, 21.914959 ], [ 106.999598, 21.947714 ], [ 106.974345, 21.923288 ], [ 106.935541, 21.933836 ], [ 106.926302, 21.967695 ], [ 106.859164, 21.986009 ], [ 106.802498, 21.98157 ], [ 106.790179, 22.004876 ], [ 106.73844, 22.008205 ], [ 106.698404, 21.959925 ], [ 106.683006, 21.999882 ], [ 106.706411, 22.021521 ], [ 106.71565, 22.089745 ], [ 106.691629, 22.13521 ], [ 106.706411, 22.160707 ], [ 106.673151, 22.182322 ], [ 106.7021, 22.207257 ], [ 106.688549, 22.260438 ], [ 106.670071, 22.283144 ], [ 106.663296, 22.33076 ], [ 106.562897, 22.345706 ], [ 106.588767, 22.374486 ], [ 106.560434, 22.455813 ], [ 106.588151, 22.472958 ], [ 106.585071, 22.517192 ], [ 106.61402, 22.602303 ], [ 106.652825, 22.57357 ], [ 106.711955, 22.575228 ], [ 106.756302, 22.68957 ], [ 106.780324, 22.708894 ], [ 106.768621, 22.739254 ], [ 106.820976, 22.768504 ], [ 106.838838, 22.803265 ], [ 106.813585, 22.817608 ], [ 106.808657, 22.817608 ], [ 106.804346, 22.816505 ], [ 106.801882, 22.815401 ], [ 106.776012, 22.813746 ], [ 106.709491, 22.866142 ], [ 106.716882, 22.881582 ], [ 106.674998, 22.891506 ], [ 106.657136, 22.863385 ], [ 106.631267, 22.88103 ], [ 106.606013, 22.925684 ], [ 106.562282, 22.923479 ], [ 106.525941, 22.946628 ], [ 106.504383, 22.91025 ], [ 106.41384, 22.877171 ], [ 106.37134, 22.878273 ], [ 106.366413, 22.857871 ], [ 106.286957, 22.867245 ], [ 106.258007, 22.889852 ], [ 106.270326, 22.907494 ], [ 106.206885, 22.978588 ], [ 106.153914, 22.988505 ], [ 106.106486, 22.980792 ], [ 106.08616, 22.996218 ], [ 106.019639, 22.990709 ], [ 105.994385, 22.93781 ], [ 105.959277, 22.948832 ], [ 105.893987, 22.936707 ], [ 105.879205, 22.916865 ], [ 105.839169, 22.987403 ], [ 105.805908, 22.994565 ], [ 105.780039, 23.022659 ], [ 105.74185, 23.030921 ], [ 105.724604, 23.06231 ], [ 105.648844, 23.078828 ], [ 105.625438, 23.064513 ], [ 105.574931, 23.066165 ], [ 105.558916, 23.177893 ], [ 105.542902, 23.184495 ], [ 105.526272, 23.234548 ], [ 105.560148, 23.257093 ], [ 105.593409, 23.312614 ], [ 105.649459, 23.346136 ], [ 105.699966, 23.327453 ], [ 105.694423, 23.363168 ], [ 105.637757, 23.404366 ], [ 105.699966, 23.40162 ], [ 105.758481, 23.459826 ], [ 105.805908, 23.467512 ], [ 105.815763, 23.507031 ], [ 105.852103, 23.526786 ], [ 105.89214, 23.52514 ], [ 105.913081, 23.499348 ], [ 105.935871, 23.508678 ], [ 105.986378, 23.489469 ], [ 105.999929, 23.447748 ], [ 106.039965, 23.484529 ], [ 106.071994, 23.495506 ], [ 106.08616, 23.524043 ], [ 106.141595, 23.569579 ], [ 106.120653, 23.605229 ], [ 106.149602, 23.665538 ], [ 106.157609, 23.724175 ], [ 106.136667, 23.795381 ], [ 106.192102, 23.824947 ], [ 106.173008, 23.861622 ], [ 106.192718, 23.879135 ], [ 106.157609, 23.891174 ], [ 106.128044, 23.956819 ], [ 106.091088, 23.998924 ], [ 106.096631, 24.018058 ], [ 106.053516, 24.051399 ], [ 106.04982, 24.089649 ], [ 106.011632, 24.099482 ], [ 105.998081, 24.120786 ], [ 105.963589, 24.110954 ], [ 105.919241, 24.122425 ], [ 105.901995, 24.099482 ], [ 105.908154, 24.069432 ], [ 105.89214, 24.040468 ], [ 105.859495, 24.056864 ], [ 105.841633, 24.03063 ], [ 105.796669, 24.023524 ], [ 105.802212, 24.051945 ], [ 105.765256, 24.073804 ], [ 105.739387, 24.059596 ], [ 105.704278, 24.0667 ], [ 105.649459, 24.032816 ], [ 105.628518, 24.126794 ], [ 105.594641, 24.137718 ], [ 105.533663, 24.130071 ], [ 105.493011, 24.016965 ], [ 105.406163, 24.043748 ], [ 105.395692, 24.065607 ], [ 105.334099, 24.094566 ], [ 105.320548, 24.116416 ], [ 105.273121, 24.092927 ], [ 105.292831, 24.074896 ], [ 105.260186, 24.061236 ], [ 105.20044, 24.105491 ], [ 105.182577, 24.167205 ], [ 105.229389, 24.165567 ], [ 105.24294, 24.208695 ], [ 105.215222, 24.214699 ], [ 105.164715, 24.288362 ], [ 105.196744, 24.326541 ], [ 105.188121, 24.347261 ], [ 105.138846, 24.376701 ], [ 105.111744, 24.37234 ], [ 105.106817, 24.414853 ], [ 105.042759, 24.442097 ], [ 104.979933, 24.412673 ], [ 104.930042, 24.411038 ], [ 104.914028, 24.426296 ], [ 104.83642, 24.446456 ], [ 104.784681, 24.443732 ], [ 104.765587, 24.45953 ], [ 104.74834, 24.435559 ], [ 104.715695, 24.441552 ], [ 104.703377, 24.419757 ], [ 104.721239, 24.340173 ], [ 104.70892, 24.321087 ], [ 104.641783, 24.367979 ], [ 104.610986, 24.377246 ], [ 104.63008, 24.397958 ], [ 104.616529, 24.421937 ], [ 104.575877, 24.424661 ], [ 104.550008, 24.518894 ], [ 104.520443, 24.535228 ], [ 104.489646, 24.653313 ], [ 104.529682, 24.731611 ], [ 104.595587, 24.709323 ], [ 104.628848, 24.660927 ], [ 104.703377, 24.645698 ], [ 104.729246, 24.617953 ], [ 104.771746, 24.659839 ], [ 104.841963, 24.676155 ], [ 104.865985, 24.730524 ], [ 104.899245, 24.752809 ], [ 105.03352, 24.787586 ], [ 105.026745, 24.815836 ], [ 105.039064, 24.872859 ], [ 105.077868, 24.918459 ], [ 105.082179, 24.915745 ], [ 105.096346, 24.928228 ], [ 105.09573, 24.92877 ], [ 105.131454, 24.959701 ], [ 105.157324, 24.958616 ], [ 105.178266, 24.985199 ], [ 105.212758, 24.995505 ], [ 105.251563, 24.967296 ], [ 105.267577, 24.929313 ], [ 105.334099, 24.9266 ], [ 105.365511, 24.943423 ], [ 105.428337, 24.930941 ], [ 105.457286, 24.87123 ], [ 105.493011, 24.833217 ], [ 105.497322, 24.809318 ], [ 105.573083, 24.797366 ], [ 105.607576, 24.803885 ], [ 105.617431, 24.78161 ], [ 105.70551, 24.768569 ], [ 105.767104, 24.719109 ], [ 105.827466, 24.702799 ], [ 105.863806, 24.729437 ], [ 105.942031, 24.725088 ], [ 105.961741, 24.677786 ], [ 106.024566, 24.633186 ], [ 106.047356, 24.684312 ], [ 106.113878, 24.714216 ], [ 106.150218, 24.762591 ], [ 106.173008, 24.760417 ], [ 106.206269, 24.851139 ], [ 106.197645, 24.885889 ], [ 106.145291, 24.954275 ], [ 106.191486, 24.95319 ], [ 106.215508, 24.981944 ], [ 106.253696, 24.971094 ], [ 106.304819, 24.973807 ], [ 106.332536, 24.988454 ], [ 106.442173, 25.019369 ], [ 106.450181, 25.033468 ], [ 106.519782, 25.054072 ], [ 106.551195, 25.082802 ], [ 106.590615, 25.08768 ], [ 106.63989, 25.132658 ], [ 106.644817, 25.164621 ], [ 106.691013, 25.179245 ], [ 106.732281, 25.162454 ], [ 106.764926, 25.183036 ], [ 106.787715, 25.17112 ], [ 106.853005, 25.186827 ], [ 106.888113, 25.181953 ], [ 106.904128, 25.231768 ], [ 106.933077, 25.250714 ], [ 106.975577, 25.232851 ], [ 107.013765, 25.275611 ], [ 107.012533, 25.352973 ], [ 106.987896, 25.358922 ], [ 106.963874, 25.437852 ], [ 106.996519, 25.442716 ], [ 107.015613, 25.495666 ], [ 107.066736, 25.50917 ], [ 107.064272, 25.559391 ], [ 107.185612, 25.578825 ], [ 107.205322, 25.607971 ], [ 107.228728, 25.604733 ], [ 107.232423, 25.556691 ], [ 107.263836, 25.543193 ], [ 107.336517, 25.461089 ], [ 107.308184, 25.432988 ], [ 107.318039, 25.401637 ], [ 107.358691, 25.393528 ], [ 107.375937, 25.411908 ], [ 107.420901, 25.392987 ], [ 107.409198, 25.347024 ], [ 107.432604, 25.289139 ], [ 107.481263, 25.299961 ], [ 107.489886, 25.276693 ], [ 107.472024, 25.213902 ], [ 107.512676, 25.209029 ], [ 107.576734, 25.256668 ], [ 107.599523, 25.250714 ], [ 107.632168, 25.310241 ], [ 107.659885, 25.316192 ], [ 107.661733, 25.258833 ], [ 107.696226, 25.219858 ], [ 107.700537, 25.194408 ], [ 107.741805, 25.24043 ], [ 107.762131, 25.229061 ], [ 107.760283, 25.188451 ], [ 107.789233, 25.15487 ], [ 107.762747, 25.125073 ], [ 107.839124, 25.115861 ], [ 107.872384, 25.141327 ], [ 107.928435, 25.155954 ], [ 108.001732, 25.196574 ], [ 108.080572, 25.193867 ], [ 108.115065, 25.210112 ], [ 108.143398, 25.269658 ], [ 108.152021, 25.324306 ], [ 108.142782, 25.390825 ], [ 108.193289, 25.405421 ], [ 108.162492, 25.444878 ], [ 108.192673, 25.458928 ], [ 108.251803, 25.430286 ], [ 108.241332, 25.46217 ], [ 108.280752, 25.48 ], [ 108.308469, 25.525912 ], [ 108.348506, 25.536173 ], [ 108.359592, 25.513491 ], [ 108.400244, 25.491344 ], [ 108.418723, 25.443257 ], [ 108.471693, 25.458928 ], [ 108.585642, 25.365952 ], [ 108.589338, 25.335125 ], [ 108.625062, 25.308076 ], [ 108.62999, 25.335666 ], [ 108.600425, 25.432448 ], [ 108.6072, 25.491885 ], [ 108.634917, 25.520512 ], [ 108.68912, 25.533473 ], [ 108.658323, 25.550212 ], [ 108.660787, 25.584763 ], [ 108.68604, 25.587462 ], [ 108.68912, 25.623081 ], [ 108.724844, 25.634952 ], [ 108.783975, 25.628477 ], [ 108.799989, 25.576666 ], [ 108.781511, 25.554531 ], [ 108.814772, 25.526992 ], [ 108.826474, 25.550212 ], [ 108.890532, 25.556151 ], [ 108.8893, 25.543193 ], [ 108.949046, 25.557231 ], [ 109.024807, 25.51241 ], [ 109.088249, 25.550752 ], [ 109.051908, 25.566949 ], [ 109.030966, 25.629556 ], [ 109.075314, 25.693749 ], [ 109.07901, 25.72071 ], [ 109.043285, 25.738502 ], [ 109.007561, 25.734728 ], [ 108.953974, 25.686738 ], [ 108.953974, 25.686738 ], [ 108.900387, 25.682423 ], [ 108.896076, 25.71424 ], [ 108.940423, 25.740119 ], [ 108.963829, 25.732572 ], [ 108.999553, 25.765453 ], [ 108.989698, 25.778926 ], [ 109.048213, 25.790781 ], [ 109.077778, 25.776771 ], [ 109.095024, 25.80533 ], [ 109.143683, 25.795092 ], [ 109.13198, 25.762758 ], [ 109.147995, 25.741736 ], [ 109.206509, 25.788087 ], [ 109.207125, 25.740119 ], [ 109.296436, 25.71424 ], [ 109.340168, 25.731493 ], [ 109.327849, 25.76168 ], [ 109.339552, 25.83442 ], [ 109.359262, 25.836036 ], [ 109.396834, 25.900117 ], [ 109.435022, 25.93349 ], [ 109.408537, 25.967392 ], [ 109.462124, 25.995367 ], [ 109.48245, 26.029788 ], [ 109.513247, 25.998056 ], [ 109.560058, 26.021184 ], [ 109.588391, 26.019571 ], [ 109.635203, 26.047533 ], [ 109.649369, 26.016882 ], [ 109.730057, 25.989988 ], [ 109.710963, 25.954478 ], [ 109.693717, 25.959321 ], [ 109.67955, 25.921649 ], [ 109.685094, 25.880197 ], [ 109.768246, 25.890427 ], [ 109.779333, 25.866196 ], [ 109.811361, 25.877504 ], [ 109.826144, 25.911422 ], [ 109.806434, 25.973848 ], [ 109.782412, 25.996981 ], [ 109.814441, 26.041081 ], [ 109.864332, 26.027637 ], [ 109.898825, 26.095377 ], [ 109.904368, 26.135679 ], [ 109.970274, 26.195301 ], [ 110.03002, 26.166299 ], [ 110.099005, 26.168985 ], [ 110.100853, 26.132455 ], [ 110.065128, 26.050221 ], [ 110.100853, 26.020108 ], [ 110.168606, 26.028713 ], [ 110.181541, 26.060437 ], [ 110.24991, 26.010965 ], [ 110.257301, 25.961473 ], [ 110.325671, 25.975462 ], [ 110.373098, 26.088927 ], [ 110.437772, 26.153945 ], [ 110.477808, 26.179727 ], [ 110.495054, 26.166299 ], [ 110.546793, 26.233421 ], [ 110.552952, 26.283335 ], [ 110.584365, 26.296749 ], [ 110.612083, 26.333764 ], [ 110.643495, 26.308552 ], [ 110.673676, 26.317135 ], [ 110.711249, 26.29192 ], [ 110.742046, 26.313917 ], [ 110.73835, 26.271529 ], [ 110.759292, 26.248451 ], [ 110.836284, 26.255966 ], [ 110.939762, 26.286554 ], [ 110.926212, 26.320354 ], [ 110.944074, 26.326791 ], [ 110.94469, 26.373447 ], [ 110.974255, 26.385778 ], [ 111.008747, 26.35897 ], [ 111.008132, 26.336982 ], [ 111.090667, 26.308016 ], [ 111.208928, 26.30426 ], [ 111.204616, 26.276359 ], [ 111.228022, 26.261333 ], [ 111.277913, 26.272066 ], [ 111.293311, 26.222148 ], [ 111.271754, 26.217316 ], [ 111.274833, 26.183486 ], [ 111.258203, 26.151796 ], [ 111.26621, 26.095914 ], [ 111.244652, 26.078177 ], [ 111.267442, 26.058824 ], [ 111.235413, 26.048071 ], [ 111.189834, 25.953402 ], [ 111.230486, 25.916267 ], [ 111.251428, 25.864581 ], [ 111.29208, 25.854349 ], [ 111.297007, 25.874274 ], [ 111.346282, 25.906577 ], [ 111.376463, 25.906039 ], [ 111.383239, 25.881812 ], [ 111.460231, 25.885042 ], [ 111.4861, 25.859196 ], [ 111.43313, 25.84627 ], [ 111.442369, 25.77192 ], [ 111.399869, 25.744431 ], [ 111.30871, 25.720171 ], [ 111.309942, 25.645203 ], [ 111.343202, 25.602574 ], [ 111.324724, 25.564249 ], [ 111.32842, 25.521592 ], [ 111.300087, 25.44812 ], [ 111.26313, 25.42326 ], [ 111.257587, 25.395691 ], [ 111.210776, 25.363248 ], [ 111.184906, 25.367034 ], [ 111.138711, 25.303748 ], [ 111.103602, 25.285351 ], [ 111.112841, 25.21715 ], [ 110.998892, 25.161371 ], [ 110.98411, 25.101772 ], [ 110.951465, 25.04377 ], [ 110.968711, 24.975434 ], [ 111.009363, 24.921172 ], [ 111.100522, 24.945593 ], [ 111.101754, 25.035095 ], [ 111.139943, 25.042144 ], [ 111.200921, 25.074672 ], [ 111.221862, 25.106649 ], [ 111.274833, 25.151078 ], [ 111.321645, 25.105023 ], [ 111.36784, 25.108817 ], [ 111.375231, 25.128324 ], [ 111.435593, 25.093642 ], [ 111.416499, 25.047566 ], [ 111.467622, 25.02208 ], [ 111.460231, 24.992793 ], [ 111.43313, 24.979774 ], [ 111.434977, 24.951562 ], [ 111.470086, 24.92877 ], [ 111.447296, 24.892947 ], [ 111.449144, 24.857113 ], [ 111.479325, 24.797366 ], [ 111.461463, 24.728894 ], [ 111.431282, 24.687574 ], [ 111.451608, 24.665822 ], [ 111.499035, 24.667997 ], [ 111.526752, 24.637538 ], [ 111.570484, 24.64461 ], [ 111.588962, 24.690837 ], [ 111.641933, 24.684856 ], [ 111.637621, 24.715303 ], [ 111.666571, 24.760961 ], [ 111.708455, 24.788673 ], [ 111.783599, 24.785957 ], [ 111.814396, 24.770199 ], [ 111.868599, 24.771829 ], [ 111.875374, 24.756613 ], [ 111.929577, 24.75607 ], [ 111.951135, 24.769655 ], [ 112.024431, 24.740308 ] ] ], [ [ [ 105.096346, 24.928228 ], [ 105.082179, 24.915745 ], [ 105.077868, 24.918459 ], [ 105.09573, 24.92877 ], [ 105.096346, 24.928228 ] ] ], [ [ [ 109.088249, 21.014934 ], [ 109.088865, 21.031134 ], [ 109.09256, 21.057386 ], [ 109.138756, 21.067439 ], [ 109.144299, 21.041189 ], [ 109.117814, 21.017727 ], [ 109.11227, 21.02499 ], [ 109.088249, 21.014934 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "460000", "name": "海南省", "center": [ 110.33119, 20.031971 ], "centroid": [ 109.754859, 19.189767 ], "childrenNum": 19, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 20, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 110.106396, 20.026812 ], [ 110.144585, 20.074598 ], [ 110.243135, 20.077408 ], [ 110.28933, 20.056047 ], [ 110.318279, 20.108882 ], [ 110.387265, 20.113378 ], [ 110.495054, 20.077408 ], [ 110.526467, 20.07516 ], [ 110.562191, 20.110006 ], [ 110.655814, 20.134169 ], [ 110.687843, 20.163947 ], [ 110.717408, 20.148778 ], [ 110.744509, 20.074036 ], [ 110.778386, 20.068415 ], [ 110.808567, 20.035808 ], [ 110.871393, 20.01163 ], [ 110.940994, 20.028499 ], [ 110.966248, 20.018377 ], [ 111.013675, 19.850159 ], [ 111.043856, 19.763448 ], [ 111.071573, 19.628784 ], [ 111.061718, 19.612436 ], [ 111.008747, 19.60398 ], [ 110.920668, 19.552668 ], [ 110.888023, 19.518827 ], [ 110.844292, 19.449996 ], [ 110.787009, 19.399765 ], [ 110.729727, 19.378878 ], [ 110.706321, 19.320153 ], [ 110.676756, 19.286264 ], [ 110.619474, 19.152334 ], [ 110.585597, 18.88075 ], [ 110.590525, 18.838841 ], [ 110.578206, 18.784458 ], [ 110.499366, 18.751592 ], [ 110.499366, 18.651824 ], [ 110.367555, 18.631977 ], [ 110.329366, 18.642185 ], [ 110.246215, 18.609859 ], [ 110.214186, 18.578662 ], [ 110.116867, 18.506602 ], [ 110.090382, 18.399309 ], [ 110.070672, 18.376025 ], [ 110.022629, 18.360121 ], [ 109.919767, 18.375457 ], [ 109.785492, 18.339672 ], [ 109.749767, 18.193618 ], [ 109.726362, 18.177698 ], [ 109.661688, 18.175424 ], [ 109.584696, 18.143579 ], [ 109.527413, 18.169169 ], [ 109.467051, 18.173718 ], [ 109.441182, 18.199303 ], [ 109.355566, 18.215221 ], [ 109.287813, 18.264671 ], [ 109.17448, 18.260125 ], [ 109.138756, 18.268081 ], [ 109.108575, 18.323766 ], [ 109.006329, 18.323198 ], [ 108.944735, 18.314107 ], [ 108.905315, 18.389087 ], [ 108.881293, 18.416344 ], [ 108.776583, 18.441894 ], [ 108.68912, 18.447571 ], [ 108.644772, 18.486738 ], [ 108.641077, 18.565614 ], [ 108.663866, 18.67337 ], [ 108.65278, 18.740258 ], [ 108.593033, 18.809386 ], [ 108.595497, 18.872256 ], [ 108.637997, 18.924346 ], [ 108.630606, 19.003017 ], [ 108.598577, 19.055633 ], [ 108.591186, 19.141592 ], [ 108.609048, 19.276661 ], [ 108.644772, 19.349518 ], [ 108.694047, 19.387346 ], [ 108.765496, 19.400894 ], [ 108.806148, 19.450561 ], [ 108.855424, 19.469182 ], [ 108.92872, 19.524468 ], [ 108.993394, 19.587065 ], [ 109.048829, 19.619764 ], [ 109.093792, 19.68965 ], [ 109.147379, 19.704863 ], [ 109.169553, 19.736411 ], [ 109.159082, 19.79048 ], [ 109.231147, 19.863105 ], [ 109.255784, 19.867045 ], [ 109.25948, 19.898561 ], [ 109.300748, 19.917693 ], [ 109.349407, 19.898561 ], [ 109.411001, 19.895184 ], [ 109.498464, 19.873236 ], [ 109.526797, 19.943573 ], [ 109.585312, 19.98801 ], [ 109.657993, 20.01163 ], [ 109.712195, 20.017253 ], [ 109.76147, 19.981261 ], [ 109.814441, 19.993072 ], [ 109.855093, 19.984073 ], [ 109.898825, 19.994196 ], [ 109.965346, 19.993634 ], [ 109.997375, 19.980136 ], [ 110.042339, 19.991384 ], [ 110.106396, 20.026812 ] ] ], [ [ [ 112.203848648399557, 3.87222818584552 ], [ 112.219068, 3.908969 ], [ 112.260336, 3.917925 ], [ 112.292871092971765, 3.856691249764521 ], [ 112.239961526858096, 3.836535224578359 ], [ 112.203848648399557, 3.87222818584552 ] ] ], [ [ [ 113.266165, 8.125929 ], [ 113.293882, 8.176284 ], [ 113.353628, 8.237887 ], [ 113.354244, 8.304217 ], [ 113.386273, 8.289412 ], [ 113.386273, 8.238479 ], [ 113.349933, 8.172137 ], [ 113.288955, 8.119412 ], [ 113.343157, 8.193463 ], [ 113.311129, 8.177469 ], [ 113.266165, 8.125929 ] ] ], [ [ [ 111.463311, 17.077491 ], [ 111.452224, 17.092936 ], [ 111.542151, 17.11982 ], [ 111.559397, 17.087788 ], [ 111.4861, 17.058039 ], [ 111.536607, 17.104949 ], [ 111.463311, 17.077491 ] ] ], [ [ [ 111.99733, 3.848065 ], [ 112.007327402834477, 3.874747688993791 ], [ 112.033782185891312, 3.88524561877825 ], [ 112.057717465799882, 3.882306198438601 ], [ 112.073707, 3.865979 ], [ 112.064467, 3.830152 ], [ 112.040500860953372, 3.814279613435307 ], [ 112.015192, 3.823583 ], [ 111.99733, 3.848065 ] ] ], [ [ [ 117.69258625690604, 15.174719308985452 ], [ 117.715095, 15.222561 ], [ 117.72659954940768, 15.237286970500829 ], [ 117.748355, 15.230068 ], [ 117.782848, 15.187333 ], [ 117.839977191079839, 15.157922621330318 ], [ 117.845856031759141, 15.138186513335535 ], [ 117.841656859845358, 15.124749163211428 ], [ 117.832838598826413, 15.152043780651022 ], [ 117.777409529564466, 15.172619723028561 ], [ 117.74466, 15.217941 ], [ 117.720638, 15.195418 ], [ 117.72495, 15.131302 ], [ 117.827812, 15.111659 ], [ 117.826959758147112, 15.099974048920105 ], [ 117.726798, 15.105303 ], [ 117.70980286175255, 15.108372392747672 ], [ 117.69258625690604, 15.174719308985452 ] ] ], [ [ [ 112.241858, 3.942404 ], [ 112.243320864389119, 3.968809139862543 ], [ 112.254177, 3.97942 ], [ 112.270195564637334, 3.986445661900434 ], [ 112.290771507014881, 3.980566821221137 ], [ 112.292365, 3.946583 ], [ 112.265156558340792, 3.932696261404004 ], [ 112.241858, 3.942404 ] ] ], [ [ [ 111.734324, 16.19732 ], [ 111.790374, 16.220307 ], [ 111.789758, 16.250186 ], [ 111.716462, 16.249036 ], [ 111.782367, 16.273741 ], [ 111.813164, 16.261676 ], [ 111.81686, 16.224329 ], [ 111.779903, 16.19732 ], [ 111.734324, 16.19732 ] ] ], [ [ [ 113.896887, 7.607204 ], [ 113.921524, 7.639235 ], [ 114.029314, 7.670078 ], [ 114.095219, 7.721082 ], [ 114.211632, 7.786904 ], [ 114.268298, 7.870501 ], [ 114.414892, 7.952895 ], [ 114.47279, 7.968898 ], [ 114.511594, 7.966527 ], [ 114.540543, 7.945783 ], [ 114.555326, 7.891249 ], [ 114.540543, 7.862201 ], [ 114.464167, 7.814771 ], [ 114.419819, 7.765557 ], [ 114.407501, 7.683126 ], [ 114.368696, 7.638642 ], [ 114.289856, 7.617288 ], [ 114.157429, 7.561525 ], [ 114.058879, 7.537794 ], [ 113.98743, 7.536014 ], [ 113.919677, 7.566865 ], [ 113.896887, 7.607204 ] ] ], [ [ [ 111.649324, 16.255931 ], [ 111.681353, 16.262251 ], [ 111.598817, 16.198469 ], [ 111.606825, 16.177779 ], [ 111.690592, 16.211112 ], [ 111.611136, 16.156511 ], [ 111.56802, 16.162834 ], [ 111.577875, 16.208239 ], [ 111.649324, 16.255931 ] ] ], [ [ [ 113.976959, 8.872888 ], [ 113.989894, 8.878801 ], [ 114.041017, 8.843913 ], [ 114.060111, 8.816119 ], [ 114.035473, 8.783591 ], [ 114.013299, 8.836817 ], [ 113.976959, 8.872888 ] ] ], [ [ [ 113.956017, 8.840365 ], [ 113.977575, 8.841548 ], [ 114.012068, 8.798376 ], [ 113.975111, 8.793054 ], [ 113.956017, 8.840365 ] ] ], [ [ [ 112.216604, 8.866383 ], [ 112.180264, 8.862244 ], [ 112.206133, 8.88767 ], [ 112.216604, 8.866383 ] ] ], [ [ [ 111.739251, 16.452898 ], [ 111.765737, 16.495366 ], [ 111.759577, 16.545857 ], [ 111.786679, 16.520039 ], [ 111.766969, 16.470116 ], [ 111.739251, 16.452898 ] ] ], [ [ [ 111.97454, 16.323715 ], [ 112.002874, 16.350707 ], [ 112.047221, 16.360469 ], [ 112.074938, 16.349558 ], [ 112.07617, 16.323715 ], [ 112.002258, 16.306484 ], [ 111.97454, 16.323715 ] ] ], [ [ [ 113.792177, 7.373422 ], [ 113.829134, 7.383511 ], [ 113.828518, 7.362145 ], [ 113.792177, 7.373422 ] ] ], [ [ [ 114.194386, 8.764664 ], [ 114.222103, 8.784773 ], [ 114.248588, 8.724442 ], [ 114.201161, 8.727991 ], [ 114.194386, 8.764664 ] ] ], [ [ [ 112.232619, 16.996239 ], [ 112.266496, 16.993949 ], [ 112.292981, 16.96762 ], [ 112.222764, 16.960751 ], [ 112.207981, 16.987081 ], [ 112.232619, 16.996239 ] ] ], [ [ [ 114.617536, 9.965688 ], [ 114.685905, 9.979245 ], [ 114.672355, 9.927963 ], [ 114.642173, 9.917351 ], [ 114.617536, 9.965688 ] ] ], [ [ [ 115.837712, 9.709775 ], [ 115.870972, 9.778785 ], [ 115.901153, 9.795888 ], [ 115.925791, 9.781734 ], [ 115.901153, 9.67084 ], [ 115.867277, 9.650191 ], [ 115.861117, 9.694438 ], [ 115.837712, 9.709775 ] ] ], [ [ [ 114.689601, 10.345648 ], [ 114.717318, 10.380381 ], [ 114.747499, 10.37214 ], [ 114.725941, 10.319154 ], [ 114.702536, 10.312677 ], [ 114.689601, 10.345648 ] ] ], [ [ [ 113.769387, 7.636862 ], [ 113.831597, 7.644573 ], [ 113.814967, 7.603051 ], [ 113.773699, 7.601865 ], [ 113.769387, 7.636862 ] ] ], [ [ [ 109.463972, 7.344339 ], [ 109.536037, 7.448792 ], [ 109.653065, 7.559745 ], [ 109.72205, 7.575763 ], [ 109.816289, 7.572797 ], [ 109.904984, 7.55144 ], [ 109.948716, 7.522962 ], [ 109.938861, 7.504569 ], [ 109.791651, 7.524742 ], [ 109.709115, 7.511095 ], [ 109.654297, 7.479648 ], [ 109.571761, 7.373422 ], [ 109.513247, 7.320002 ], [ 109.463972, 7.315254 ], [ 109.463972, 7.344339 ] ] ], [ [ [ 116.273181, 8.879392 ], [ 116.305826, 8.917233 ], [ 116.332311, 8.901269 ], [ 116.294123, 8.858105 ], [ 116.273181, 8.879392 ] ] ], [ [ [ 112.476531, 16.001247 ], [ 112.448814, 16.005274 ], [ 112.462364, 16.043813 ], [ 112.588016, 16.070844 ], [ 112.612037, 16.039212 ], [ 112.570154, 16.011027 ], [ 112.476531, 16.001247 ] ] ], [ [ [ 112.537509, 8.846278 ], [ 112.598487, 8.859288 ], [ 112.639755, 8.818484 ], [ 112.57077, 8.815527 ], [ 112.537509, 8.846278 ] ] ], [ [ [ 114.469095, 10.836261 ], [ 114.55471, 10.900911 ], [ 114.587355, 10.909138 ], [ 114.593514, 10.856245 ], [ 114.565181, 10.836261 ], [ 114.513442, 10.848605 ], [ 114.475254, 10.814512 ], [ 114.469095, 10.836261 ] ] ], [ [ [ 112.409393, 16.294996 ], [ 112.509176, 16.317397 ], [ 112.536893, 16.312228 ], [ 112.531349, 16.285805 ], [ 112.475915, 16.288677 ], [ 112.411241, 16.2634 ], [ 112.383524, 16.265698 ], [ 112.409393, 16.294996 ] ] ], [ [ [ 112.349031, 16.912088 ], [ 112.30222, 16.963041 ], [ 112.334249, 16.962469 ], [ 112.360734, 16.925257 ], [ 112.349031, 16.912088 ] ] ], [ [ [ 111.500267, 16.45175 ], [ 111.538455, 16.461507 ], [ 111.545847, 16.43453 ], [ 111.49534, 16.4374 ], [ 111.500267, 16.45175 ] ] ], [ [ [ 115.500177, 9.897897 ], [ 115.518039, 9.933857 ], [ 115.581481, 9.917351 ], [ 115.585177, 9.896128 ], [ 115.54822, 9.869007 ], [ 115.500177, 9.897897 ] ] ], [ [ [ 116.48876, 10.395686 ], [ 116.526332, 10.426883 ], [ 116.542346, 10.41982 ], [ 116.514629, 10.34918 ], [ 116.637817, 10.365076 ], [ 116.644592, 10.335051 ], [ 116.566368, 10.304434 ], [ 116.511549, 10.297957 ], [ 116.467202, 10.309144 ], [ 116.461658, 10.34918 ], [ 116.48876, 10.395686 ] ] ], [ [ [ 114.669891, 8.210048 ], [ 114.726557, 8.21064 ], [ 114.74134, 8.189316 ], [ 114.691449, 8.18517 ], [ 114.669891, 8.210048 ] ] ], [ [ [ 114.507899, 8.120004 ], [ 114.595978, 8.15792 ], [ 114.624311, 8.149626 ], [ 114.595978, 8.120596 ], [ 114.530073, 8.103415 ], [ 114.507899, 8.120004 ] ] ], [ [ [ 115.16757, 8.386523 ], [ 115.202678, 8.395403 ], [ 115.299381, 8.370537 ], [ 115.315395, 8.356326 ], [ 115.285214, 8.314876 ], [ 115.235939, 8.321982 ], [ 115.18112, 8.345668 ], [ 115.16757, 8.386523 ] ] ], [ [ [ 113.895039, 8.00505 ], [ 113.940003, 8.018088 ], [ 113.969568, 7.974825 ], [ 113.9708, 7.944597 ], [ 113.904894, 7.963564 ], [ 113.895039, 8.00505 ] ] ], [ [ [ 115.436119, 9.393447 ], [ 115.456445, 9.417064 ], [ 115.469996, 9.3592 ], [ 115.450286, 9.345028 ], [ 115.436119, 9.393447 ] ] ], [ [ [ 113.638192, 8.976942 ], [ 113.644968, 8.989355 ], [ 113.719496, 9.020092 ], [ 113.730583, 9.004133 ], [ 113.654823, 8.962163 ], [ 113.638192, 8.976942 ] ] ], [ [ [ 116.457347, 9.174326 ], [ 116.500462, 9.164282 ], [ 116.477057, 9.137103 ], [ 116.457347, 9.174326 ] ] ], [ [ [ 114.910723, 10.863298 ], [ 114.934129, 10.902674 ], [ 114.959998, 10.902087 ], [ 114.931049, 10.841551 ], [ 114.910723, 10.863298 ] ] ], [ [ [ 113.939387, 8.875253 ], [ 113.916597, 8.837999 ], [ 113.893807, 8.862836 ], [ 113.912285, 8.888853 ], [ 113.939387, 8.875253 ] ] ], [ [ [ 114.696992, 11.004322 ], [ 114.710543, 11.039567 ], [ 114.766593, 11.110045 ], [ 114.799854, 11.10476 ], [ 114.793079, 11.07657 ], [ 114.710543, 11.001972 ], [ 114.696992, 11.004322 ] ] ], [ [ [ 111.572948, 16.470116 ], [ 111.592658, 16.490775 ], [ 111.614216, 16.44027 ], [ 111.578491, 16.447158 ], [ 111.572948, 16.470116 ] ] ], [ [ [ 114.62, 11.432264 ], [ 114.621232, 11.518479 ], [ 114.661884, 11.522584 ], [ 114.652644, 11.436957 ], [ 114.62, 11.432264 ] ] ], [ [ [ 109.936397, 7.848566 ], [ 109.953027, 7.888878 ], [ 110.0331, 7.944597 ], [ 110.078063, 7.949339 ], [ 110.082991, 7.896584 ], [ 110.050346, 7.846194 ], [ 109.988136, 7.8124 ], [ 109.936397, 7.823665 ], [ 109.936397, 7.848566 ] ] ], [ [ [ 116.727128, 11.501473 ], [ 116.738215, 11.514961 ], [ 116.772092, 11.445755 ], [ 116.765316, 11.430504 ], [ 116.727128, 11.501473 ] ] ], [ [ [ 111.761425, 16.061642 ], [ 111.829795, 16.070844 ], [ 111.828563, 16.049565 ], [ 111.791606, 16.028859 ], [ 111.761425, 16.061642 ] ] ], [ [ [ 113.845764, 10.018733 ], [ 113.856851, 10.12185 ], [ 113.872249, 10.123029 ], [ 113.865474, 10.00341 ], [ 113.845764, 10.018733 ] ] ], [ [ [ 111.690592, 16.587731 ], [ 111.717078, 16.59404 ], [ 111.724469, 16.560198 ], [ 111.690592, 16.587731 ] ] ], [ [ [ 112.507328, 16.466098 ], [ 112.499321, 16.493645 ], [ 112.575081, 16.537251 ], [ 112.586784, 16.525777 ], [ 112.507328, 16.466098 ] ] ], [ [ [ 114.791847, 8.160882 ], [ 114.818332, 8.141332 ], [ 114.812173, 8.110524 ], [ 114.777064, 8.114079 ], [ 114.791847, 8.160882 ] ] ], [ [ [ 116.557129, 9.745167 ], [ 116.593469, 9.723932 ], [ 116.566368, 9.718623 ], [ 116.557129, 9.745167 ] ] ], [ [ [ 116.832454, 10.476908 ], [ 116.868794, 10.495739 ], [ 116.855243, 10.468669 ], [ 116.832454, 10.476908 ] ] ], [ [ [ 114.703151, 16.170307 ], [ 114.704383, 16.199044 ], [ 114.802934, 16.215135 ], [ 114.816484, 16.198469 ], [ 114.703151, 16.170307 ] ] ], [ [ [ 115.28275, 10.191951 ], [ 115.28891, 10.211388 ], [ 115.333257, 10.200198 ], [ 115.288294, 10.172513 ], [ 115.28275, 10.191951 ] ] ], [ [ [ 115.97753, 9.321997 ], [ 115.999088, 9.293649 ], [ 115.976298, 9.268252 ], [ 115.943037, 9.269433 ], [ 115.926407, 9.311366 ], [ 115.97753, 9.321997 ] ] ], [ [ [ 113.660366, 9.231039 ], [ 113.697323, 9.225722 ], [ 113.676997, 9.202683 ], [ 113.660366, 9.231039 ] ] ], [ [ [ 114.665579, 7.590001 ], [ 114.703767, 7.614915 ], [ 114.72163, 7.59178 ], [ 114.671739, 7.563898 ], [ 114.665579, 7.590001 ] ] ], [ [ [ 117.770529, 10.773361 ], [ 117.775457, 10.809222 ], [ 117.801942, 10.839788 ], [ 117.831507, 10.838612 ], [ 117.835819, 10.803931 ], [ 117.798862, 10.753371 ], [ 117.770529, 10.773361 ] ] ], [ [ [ 114.242429, 10.242014 ], [ 114.265219, 10.275581 ], [ 114.312646, 10.300901 ], [ 114.326197, 10.284414 ], [ 114.263371, 10.239658 ], [ 114.242429, 10.242014 ] ] ], [ [ [ 114.688985, 11.469217 ], [ 114.720398, 11.49209 ], [ 114.737644, 11.463938 ], [ 114.722246, 11.429331 ], [ 114.688985, 11.469217 ] ] ], [ [ [ 116.638433, 10.503977 ], [ 116.699411, 10.517511 ], [ 116.70865, 10.492797 ], [ 116.653215, 10.491031 ], [ 116.638433, 10.503977 ] ] ], [ [ [ 110.459946, 8.116449 ], [ 110.461793, 8.128298 ], [ 110.568351, 8.17273 ], [ 110.599764, 8.156735 ], [ 110.554184, 8.093935 ], [ 110.471032, 8.072012 ], [ 110.459946, 8.116449 ] ] ], [ [ [ 111.463311, 8.52504 ], [ 111.509506, 8.550489 ], [ 111.497187, 8.523857 ], [ 111.463311, 8.52504 ] ] ], [ [ [ 114.493116, 10.717504 ], [ 114.539312, 10.793349 ], [ 114.562717, 10.778064 ], [ 114.513442, 10.722208 ], [ 114.493116, 10.717504 ] ] ], [ [ [ 113.221817, 8.073789 ], [ 113.269861, 8.120004 ], [ 113.283411, 8.111117 ], [ 113.235984, 8.068456 ], [ 113.221817, 8.073789 ] ] ], [ [ [ 115.258113, 8.509652 ], [ 115.296301, 8.510836 ], [ 115.271048, 8.477098 ], [ 115.258113, 8.509652 ] ] ], [ [ [ 111.539071, 7.54432 ], [ 111.566788, 7.606017 ], [ 111.612368, 7.592374 ], [ 111.583419, 7.543134 ], [ 111.542767, 7.524742 ], [ 111.539071, 7.54432 ] ] ], [ [ [ 117.258068, 10.320331 ], [ 117.274698, 10.358011 ], [ 117.299952, 10.343293 ], [ 117.299336, 10.313855 ], [ 117.258068, 10.320331 ] ] ], [ [ [ 114.074893, 10.929118 ], [ 114.096451, 10.947921 ], [ 114.110002, 10.918541 ], [ 114.064422, 10.904437 ], [ 114.074893, 10.929118 ] ] ], [ [ [ 114.212864, 16.040937 ], [ 114.268914, 16.059342 ], [ 114.306487, 16.057616 ], [ 114.31203, 16.034611 ], [ 114.212864, 16.040937 ] ] ], [ [ [ 110.609003, 8.010976 ], [ 110.622553, 8.041199 ], [ 110.641648, 8.031125 ], [ 110.642879, 7.989049 ], [ 110.609003, 8.010976 ] ] ], [ [ [ 115.509416, 8.490712 ], [ 115.514344, 8.519122 ], [ 115.558691, 8.523265 ], [ 115.569162, 8.49012 ], [ 115.55438, 8.461115 ], [ 115.521735, 8.460523 ], [ 115.509416, 8.490712 ] ] ], [ [ [ 111.657947, 8.672974 ], [ 111.697368, 8.67889 ], [ 111.717694, 8.6499 ], [ 111.665955, 8.622683 ], [ 111.657947, 8.672974 ] ] ], [ [ [ 110.460561, 7.799948 ], [ 110.485199, 7.827815 ], [ 110.511684, 7.805878 ], [ 110.487663, 7.783346 ], [ 110.460561, 7.799948 ] ] ], [ [ [ 112.345952, 8.926101 ], [ 112.384756, 8.946793 ], [ 112.392763, 8.919598 ], [ 112.345952, 8.926101 ] ] ], [ [ [ 116.469665, 9.810041 ], [ 116.490607, 9.821246 ], [ 116.50847, 9.79117 ], [ 116.47952, 9.785272 ], [ 116.469665, 9.810041 ] ] ], [ [ [ 111.925265, 8.070827 ], [ 111.95483, 8.106377 ], [ 112.013344, 8.093342 ], [ 112.018888, 8.065494 ], [ 111.994866, 8.047125 ], [ 111.949287, 8.05068 ], [ 111.925265, 8.070827 ] ] ], [ [ [ 114.457392, 15.599305 ], [ 114.491884, 15.59354 ], [ 114.466631, 15.576823 ], [ 114.457392, 15.599305 ] ] ], [ [ [ 114.985252, 11.078332 ], [ 115.021592, 11.085967 ], [ 115.013585, 11.063062 ], [ 114.985252, 11.078332 ] ] ], [ [ [ 114.10569, 16.004124 ], [ 114.132176, 16.007575 ], [ 114.110618, 15.978235 ], [ 114.10569, 16.004124 ] ] ], [ [ [ 116.045283, 10.095338 ], [ 116.070537, 10.12892 ], [ 116.09579, 10.09357 ], [ 116.067457, 10.065876 ], [ 116.045283, 10.095338 ] ] ], [ [ [ 117.266691, 10.69163 ], [ 117.293176, 10.735144 ], [ 117.369553, 10.7422 ], [ 117.418212, 10.702803 ], [ 117.404661, 10.671047 ], [ 117.348611, 10.672811 ], [ 117.266691, 10.69163 ] ] ], [ [ [ 114.854057, 7.244611 ], [ 114.869455, 7.198895 ], [ 114.819564, 7.192957 ], [ 114.854057, 7.244611 ] ] ], [ [ [ 112.823305, 8.910729 ], [ 112.873196, 8.908364 ], [ 112.859645, 8.889444 ], [ 112.823305, 8.910729 ] ] ], [ [ [ 111.670266, 7.651098 ], [ 111.691208, 7.711593 ], [ 111.726317, 7.729977 ], [ 111.749722, 7.703884 ], [ 111.707223, 7.648725 ], [ 111.670266, 7.651098 ] ] ], [ [ [ 112.207981, 8.835634 ], [ 112.241242, 8.852783 ], [ 112.235699, 8.827355 ], [ 112.207981, 8.835634 ] ] ], [ [ [ 112.527654, 5.79444 ], [ 112.562146, 5.820637 ], [ 112.562762, 5.75931 ], [ 112.531965, 5.766455 ], [ 112.527654, 5.79444 ] ] ], [ [ [ 114.599058, 8.846278 ], [ 114.61692, 8.881166 ], [ 114.665579, 8.900087 ], [ 114.68221, 8.881166 ], [ 114.645869, 8.844504 ], [ 114.599058, 8.846278 ] ] ], [ [ [ 114.868223, 7.983715 ], [ 114.883006, 8.011569 ], [ 114.914419, 8.00742 ], [ 114.907643, 7.951117 ], [ 114.868223, 7.983715 ] ] ], [ [ [ 112.945261, 8.410204 ], [ 112.949572, 8.432701 ], [ 112.985297, 8.429149 ], [ 112.945261, 8.410204 ] ] ], [ [ [ 113.600004, 6.961929 ], [ 113.62341, 6.942325 ], [ 113.580294, 6.920344 ], [ 113.600004, 6.961929 ] ] ], [ [ [ 117.347995, 10.090624 ], [ 117.373864, 10.106532 ], [ 117.385567, 10.063519 ], [ 117.354154, 10.06293 ], [ 117.347995, 10.090624 ] ] ], [ [ [ 112.993304, 19.472003 ], [ 112.980369, 19.496263 ], [ 112.993304, 19.52616 ], [ 113.029028, 19.52898 ], [ 113.048123, 19.506417 ], [ 113.038883, 19.480466 ], [ 112.993304, 19.472003 ] ] ], [ [ [ 114.448153, 16.034035 ], [ 114.465399, 16.067393 ], [ 114.521449, 16.056466 ], [ 114.485109, 16.034611 ], [ 114.448153, 16.034035 ] ] ], [ [ [ 113.832213, 19.158552 ], [ 113.799568, 19.19925 ], [ 113.80696, 19.222986 ], [ 113.875945, 19.237113 ], [ 113.920293, 19.223551 ], [ 113.914749, 19.172119 ], [ 113.874097, 19.151203 ], [ 113.832213, 19.158552 ] ] ], [ [ [ 112.650842, 5.106941 ], [ 112.678559, 5.121247 ], [ 112.719211, 5.075944 ], [ 112.682871, 5.048522 ], [ 112.655769, 5.055676 ], [ 112.650842, 5.106941 ] ] ], [ [ [ 111.638853, 7.907254 ], [ 111.651788, 7.932743 ], [ 111.713382, 7.927408 ], [ 111.712766, 7.887099 ], [ 111.665339, 7.887099 ], [ 111.638853, 7.907254 ] ] ], [ [ [ 112.244322, 8.874662 ], [ 112.288669, 8.885896 ], [ 112.281278, 8.855148 ], [ 112.244322, 8.874662 ] ] ], [ [ [ 112.89229, 7.844416 ], [ 112.93171, 7.867537 ], [ 112.929862, 7.827815 ], [ 112.89229, 7.844416 ] ] ], [ [ [ 112.583088, 5.56159 ], [ 112.616349, 5.568737 ], [ 112.642834, 5.489512 ], [ 112.614501, 5.465683 ], [ 112.606494, 5.51751 ], [ 112.583088, 5.56159 ] ] ], [ [ [ 116.695099, 16.345538 ], [ 116.717889, 16.373676 ], [ 116.747454, 16.360469 ], [ 116.738831, 16.303612 ], [ 116.708034, 16.299591 ], [ 116.695099, 16.345538 ] ] ], [ [ [ 112.523342, 5.656289 ], [ 112.528886, 5.687257 ], [ 112.56153, 5.677133 ], [ 112.565842, 5.63068 ], [ 112.5449, 5.616386 ], [ 112.523342, 5.656289 ] ] ], [ [ [ 112.907072, 4.993079 ], [ 112.910768, 5.038388 ], [ 112.952652, 5.047926 ], [ 112.943413, 4.991887 ], [ 112.907072, 4.993079 ] ] ], [ [ [ 115.361591, 13.948985 ], [ 115.377605, 13.968732 ], [ 115.423185, 13.977443 ], [ 115.438583, 13.943757 ], [ 115.397315, 13.92517 ], [ 115.361591, 13.948985 ] ] ], [ [ [ 113.860546, 15.477068 ], [ 113.890112, 15.490909 ], [ 113.893807, 15.463802 ], [ 113.860546, 15.477068 ] ] ], [ [ [ 113.596924, 10.240836 ], [ 113.638192, 10.243192 ], [ 113.617866, 10.22199 ], [ 113.596924, 10.240836 ] ] ], [ [ [ 112.557219, 5.109326 ], [ 112.601567, 5.120055 ], [ 112.610806, 5.091443 ], [ 112.568922, 5.071771 ], [ 112.557219, 5.109326 ] ] ], [ [ [ 112.350263, 5.621747 ], [ 112.385372, 5.643187 ], [ 112.385988, 5.615791 ], [ 112.350263, 5.621747 ] ] ], [ [ [ 112.226459, 16.759147 ], [ 112.211061, 16.795819 ], [ 112.262184, 16.778057 ], [ 112.254177, 16.751698 ], [ 112.226459, 16.759147 ] ] ], [ [ [ 112.233851, 15.69612 ], [ 112.20367, 15.71398 ], [ 112.240626, 15.741055 ], [ 112.25972, 15.734718 ], [ 112.233851, 15.69612 ] ] ], [ [ [ 112.612037, 5.367973 ], [ 112.62374, 5.401935 ], [ 112.690878, 5.406702 ], [ 112.685334, 5.371548 ], [ 112.640371, 5.347715 ], [ 112.612037, 5.367973 ] ] ], [ [ [ 112.472219, 5.73966 ], [ 112.498089, 5.775387 ], [ 112.496857, 5.736683 ], [ 112.472219, 5.73966 ] ] ], [ [ [ 113.217506, 6.306249 ], [ 113.243991, 6.325878 ], [ 113.230441, 6.285429 ], [ 113.217506, 6.306249 ] ] ], [ [ [ 116.152457, 9.579384 ], [ 116.187565, 9.595317 ], [ 116.189413, 9.565221 ], [ 116.152457, 9.579384 ] ] ], [ [ [ 114.948911, 7.508722 ], [ 115.013585, 7.525928 ], [ 115.012353, 7.484988 ], [ 114.960614, 7.484988 ], [ 114.948911, 7.508722 ] ] ], [ [ [ 111.553854, 7.807656 ], [ 111.603745, 7.861608 ], [ 111.619759, 7.840265 ], [ 111.585267, 7.771487 ], [ 111.553854, 7.807656 ] ] ], [ [ [ 113.938771, 15.8355 ], [ 113.9708, 15.83953 ], [ 113.973263, 15.805558 ], [ 113.938771, 15.8355 ] ] ], [ [ [ 114.926122, 16.036911 ], [ 114.910723, 16.001823 ], [ 114.895325, 16.036336 ], [ 114.926122, 16.036911 ] ] ], [ [ [ 116.749302, 9.056736 ], [ 116.740679, 9.028367 ], [ 116.70865, 9.024229 ], [ 116.699411, 9.049053 ], [ 116.749302, 9.056736 ] ] ], [ [ [ 112.64653, 16.385733 ], [ 112.660081, 16.426494 ], [ 112.681639, 16.400661 ], [ 112.64653, 16.385733 ] ] ], [ [ [ 111.203384, 19.92557 ], [ 111.204, 19.926132 ], [ 111.204, 19.92557 ], [ 111.203384, 19.925007 ], [ 111.203384, 19.92557 ] ] ], [ [ [ 115.758256, 10.461018 ], [ 115.801987, 10.463372 ], [ 115.776118, 10.434534 ], [ 115.758256, 10.461018 ] ] ], [ [ [ 112.671784, 16.331755 ], [ 112.677943, 16.35932 ], [ 112.701349, 16.331755 ], [ 112.671784, 16.331755 ] ] ], [ [ [ 115.782277, 10.541046 ], [ 115.805067, 10.524571 ], [ 115.795212, 10.499858 ], [ 115.782277, 10.541046 ] ] ], [ [ [ 112.512255, 9.544566 ], [ 112.567074, 9.554008 ], [ 112.568922, 9.516826 ], [ 112.50856, 9.525679 ], [ 112.512255, 9.544566 ] ] ], [ [ [ 117.21372, 10.735144 ], [ 117.206945, 10.707507 ], [ 117.187235, 10.741612 ], [ 117.21372, 10.735144 ] ] ], [ [ [ 114.610145, 15.649447 ], [ 114.610761, 15.615444 ], [ 114.581195, 15.625242 ], [ 114.610145, 15.649447 ] ] ], [ [ [ 117.299336, 11.077745 ], [ 117.304263, 11.027232 ], [ 117.284553, 11.02547 ], [ 117.264227, 11.063062 ], [ 117.299336, 11.077745 ] ] ], [ [ [ 117.691073, 11.048965 ], [ 117.690457, 11.016658 ], [ 117.655965, 11.024882 ], [ 117.653501, 11.046029 ], [ 117.691073, 11.048965 ] ] ], [ [ [ 114.166668, 9.38459 ], [ 114.194386, 9.391676 ], [ 114.195617, 9.350933 ], [ 114.175291, 9.342075 ], [ 114.166668, 9.38459 ] ] ], [ [ [ 114.714854, 9.736909 ], [ 114.704999, 9.700337 ], [ 114.680978, 9.707416 ], [ 114.693296, 9.741038 ], [ 114.714854, 9.736909 ] ] ], [ [ [ 112.554139, 5.97839 ], [ 112.575697, 5.971247 ], [ 112.553523, 5.942676 ], [ 112.554139, 5.97839 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "500000", "name": "重庆市", "center": [ 106.504962, 29.533155 ], "centroid": [ 107.883899, 30.067297 ], "childrenNum": 38, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 21, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 106.37442, 28.525742 ], [ 106.33192, 28.55308 ], [ 106.346703, 28.583565 ], [ 106.304203, 28.64976 ], [ 106.305435, 28.704365 ], [ 106.27279, 28.741103 ], [ 106.267863, 28.779402 ], [ 106.245689, 28.817686 ], [ 106.264783, 28.845997 ], [ 106.206885, 28.904691 ], [ 106.173008, 28.920407 ], [ 106.14837, 28.901548 ], [ 106.101559, 28.898928 ], [ 106.070762, 28.919884 ], [ 106.049204, 28.906263 ], [ 106.040581, 28.955498 ], [ 106.001161, 28.973824 ], [ 105.969132, 28.965971 ], [ 105.910002, 28.920407 ], [ 105.852719, 28.927217 ], [ 105.830546, 28.944501 ], [ 105.797285, 28.936121 ], [ 105.801596, 28.958116 ], [ 105.762176, 28.9911 ], [ 105.766488, 29.013607 ], [ 105.74185, 29.039249 ], [ 105.757865, 29.069068 ], [ 105.728916, 29.1062 ], [ 105.752321, 29.129727 ], [ 105.728916, 29.134432 ], [ 105.703662, 29.176766 ], [ 105.712285, 29.219082 ], [ 105.695039, 29.287482 ], [ 105.647612, 29.253027 ], [ 105.631597, 29.280174 ], [ 105.557684, 29.278608 ], [ 105.521344, 29.264513 ], [ 105.513337, 29.283306 ], [ 105.459134, 29.288526 ], [ 105.465294, 29.322969 ], [ 105.42033, 29.31149 ], [ 105.418482, 29.352185 ], [ 105.441888, 29.400686 ], [ 105.426489, 29.419454 ], [ 105.372903, 29.421018 ], [ 105.387069, 29.455416 ], [ 105.387069, 29.455416 ], [ 105.334099, 29.441345 ], [ 105.337794, 29.459064 ], [ 105.305149, 29.53199 ], [ 105.296526, 29.571035 ], [ 105.332867, 29.592374 ], [ 105.347649, 29.621512 ], [ 105.38091, 29.628275 ], [ 105.419714, 29.688082 ], [ 105.476996, 29.674564 ], [ 105.481924, 29.718232 ], [ 105.529351, 29.707836 ], [ 105.574931, 29.744216 ], [ 105.582938, 29.819013 ], [ 105.610655, 29.837184 ], [ 105.707974, 29.840818 ], [ 105.738771, 29.891159 ], [ 105.717213, 29.893753 ], [ 105.70243, 29.924879 ], [ 105.730763, 29.95755 ], [ 105.723372, 29.975177 ], [ 105.753553, 30.018196 ], [ 105.719677, 30.042548 ], [ 105.687032, 30.038922 ], [ 105.676561, 30.06793 ], [ 105.638988, 30.076216 ], [ 105.642068, 30.101072 ], [ 105.582938, 30.12385 ], [ 105.582938, 30.127474 ], [ 105.580474, 30.129544 ], [ 105.574315, 30.130579 ], [ 105.596489, 30.159043 ], [ 105.536127, 30.152834 ], [ 105.550909, 30.179222 ], [ 105.56138, 30.183878 ], [ 105.642684, 30.186464 ], [ 105.662394, 30.210258 ], [ 105.619894, 30.234045 ], [ 105.624822, 30.275918 ], [ 105.670401, 30.254208 ], [ 105.720292, 30.252657 ], [ 105.720292, 30.252657 ], [ 105.714749, 30.322939 ], [ 105.754785, 30.342567 ], [ 105.760329, 30.384393 ], [ 105.792357, 30.427234 ], [ 105.825618, 30.436006 ], [ 105.84656, 30.410203 ], [ 105.900763, 30.405042 ], [ 105.943263, 30.372002 ], [ 106.031958, 30.373551 ], [ 106.07261, 30.333786 ], [ 106.132972, 30.30279 ], [ 106.132356, 30.323972 ], [ 106.168696, 30.303823 ], [ 106.180399, 30.233011 ], [ 106.232754, 30.185947 ], [ 106.260471, 30.19681 ], [ 106.264167, 30.20974 ], [ 106.296196, 30.205603 ], [ 106.306667, 30.238182 ], [ 106.334384, 30.225772 ], [ 106.349167, 30.24542 ], [ 106.401521, 30.242318 ], [ 106.428623, 30.254725 ], [ 106.43971, 30.308473 ], [ 106.49884, 30.295556 ], [ 106.545035, 30.296589 ], [ 106.560434, 30.31519 ], [ 106.611557, 30.292455 ], [ 106.642354, 30.246454 ], [ 106.612789, 30.235596 ], [ 106.612789, 30.235596 ], [ 106.612173, 30.235596 ], [ 106.612173, 30.235596 ], [ 106.611557, 30.235596 ], [ 106.612173, 30.235596 ], [ 106.611557, 30.235596 ], [ 106.631883, 30.186464 ], [ 106.677462, 30.156974 ], [ 106.672535, 30.122297 ], [ 106.700252, 30.111944 ], [ 106.699636, 30.074145 ], [ 106.724274, 30.058607 ], [ 106.732281, 30.027005 ], [ 106.785252, 30.01716 ], [ 106.825904, 30.03115 ], [ 106.825904, 30.03115 ], [ 106.83699, 30.049801 ], [ 106.862244, 30.033223 ], [ 106.913367, 30.025451 ], [ 106.94478, 30.037367 ], [ 106.976193, 30.083467 ], [ 106.981736, 30.08502 ], [ 107.02054, 30.036849 ], [ 107.053801, 30.043584 ], [ 107.054417, 30.040994 ], [ 107.055649, 30.040476 ], [ 107.058113, 30.043066 ], [ 107.084598, 30.063786 ], [ 107.080286, 30.094341 ], [ 107.103076, 30.090198 ], [ 107.221337, 30.213878 ], [ 107.257677, 30.267131 ], [ 107.288474, 30.337402 ], [ 107.338981, 30.386459 ], [ 107.368546, 30.468508 ], [ 107.408582, 30.521623 ], [ 107.443075, 30.53348 ], [ 107.427676, 30.547397 ], [ 107.485575, 30.598408 ], [ 107.516987, 30.644759 ], [ 107.477567, 30.664837 ], [ 107.458473, 30.704981 ], [ 107.424597, 30.74048 ], [ 107.454162, 30.771851 ], [ 107.454162, 30.771851 ], [ 107.498509, 30.809381 ], [ 107.483111, 30.838675 ], [ 107.515756, 30.854603 ], [ 107.57735, 30.847924 ], [ 107.645103, 30.821202 ], [ 107.693146, 30.875665 ], [ 107.739957, 30.884396 ], [ 107.760899, 30.862823 ], [ 107.763979, 30.817091 ], [ 107.788001, 30.81966 ], [ 107.851443, 30.792931 ], [ 107.956152, 30.882855 ], [ 107.994956, 30.908533 ], [ 107.948145, 30.918802 ], [ 107.942602, 30.989114 ], [ 107.983254, 30.983983 ], [ 108.00358, 31.025533 ], [ 108.060246, 31.052197 ], [ 108.026985, 31.061938 ], [ 108.009123, 31.109602 ], [ 108.025753, 31.116263 ], [ 108.089811, 31.204859 ], [ 108.07626, 31.231985 ], [ 108.031297, 31.217144 ], [ 108.038688, 31.252964 ], [ 108.095354, 31.268311 ], [ 108.185898, 31.336831 ], [ 108.153869, 31.371073 ], [ 108.216079, 31.41041 ], [ 108.224086, 31.464024 ], [ 108.193289, 31.467598 ], [ 108.191441, 31.492096 ], [ 108.233941, 31.506894 ], [ 108.254883, 31.49873 ], [ 108.344194, 31.512506 ], [ 108.34789, 31.545664 ], [ 108.386078, 31.544134 ], [ 108.390389, 31.591555 ], [ 108.442744, 31.633856 ], [ 108.468614, 31.636404 ], [ 108.519121, 31.665952 ], [ 108.546838, 31.665442 ], [ 108.514809, 31.693963 ], [ 108.50557, 31.734182 ], [ 108.535135, 31.757592 ], [ 108.462454, 31.780488 ], [ 108.455063, 31.814059 ], [ 108.429194, 31.809482 ], [ 108.391005, 31.829822 ], [ 108.386078, 31.854226 ], [ 108.343578, 31.860834 ], [ 108.259194, 31.967006 ], [ 108.307238, 31.997463 ], [ 108.351585, 31.971575 ], [ 108.370063, 31.988835 ], [ 108.329411, 32.020299 ], [ 108.362056, 32.035521 ], [ 108.344194, 32.067477 ], [ 108.372527, 32.077112 ], [ 108.42981, 32.061391 ], [ 108.452599, 32.090296 ], [ 108.399628, 32.147065 ], [ 108.379303, 32.153652 ], [ 108.379303, 32.153652 ], [ 108.379918, 32.154158 ], [ 108.379918, 32.154158 ], [ 108.370063, 32.172397 ], [ 108.399013, 32.194176 ], [ 108.480317, 32.182527 ], [ 108.509882, 32.201266 ], [ 108.543758, 32.177969 ], [ 108.585026, 32.17189 ], [ 108.676801, 32.10297 ], [ 108.734084, 32.106519 ], [ 108.75133, 32.076098 ], [ 108.78767, 32.04871 ], [ 108.837561, 32.039072 ], [ 108.902235, 31.984774 ], [ 108.986619, 31.980205 ], [ 109.085785, 31.929428 ], [ 109.123357, 31.892851 ], [ 109.191111, 31.85575 ], [ 109.195422, 31.817618 ], [ 109.27611, 31.79931 ], [ 109.279806, 31.776418 ], [ 109.253936, 31.759628 ], [ 109.282885, 31.743343 ], [ 109.281654, 31.716874 ], [ 109.381436, 31.705165 ], [ 109.446109, 31.722983 ], [ 109.502776, 31.716365 ], [ 109.549587, 31.73011 ], [ 109.585928, 31.726546 ], [ 109.622268, 31.711783 ], [ 109.683246, 31.719929 ], [ 109.731289, 31.700582 ], [ 109.737449, 31.628761 ], [ 109.76455, 31.602769 ], [ 109.745456, 31.598182 ], [ 109.727594, 31.548214 ], [ 109.837847, 31.555354 ], [ 109.894513, 31.519139 ], [ 109.969658, 31.508935 ], [ 109.94502, 31.47066 ], [ 109.98752, 31.474744 ], [ 110.036795, 31.436966 ], [ 110.054042, 31.410921 ], [ 110.118715, 31.409899 ], [ 110.161831, 31.314338 ], [ 110.155671, 31.279564 ], [ 110.180309, 31.179774 ], [ 110.200019, 31.158779 ], [ 110.180309, 31.121899 ], [ 110.147048, 31.116776 ], [ 110.119947, 31.088592 ], [ 110.120563, 31.0322 ], [ 110.140273, 31.030661 ], [ 110.140889, 30.987062 ], [ 110.172918, 30.978853 ], [ 110.153824, 30.953708 ], [ 110.151976, 30.911613 ], [ 110.082375, 30.799614 ], [ 110.048498, 30.800642 ], [ 110.019549, 30.829425 ], [ 110.008462, 30.883369 ], [ 109.943788, 30.878746 ], [ 109.894513, 30.899803 ], [ 109.828608, 30.864364 ], [ 109.780564, 30.848437 ], [ 109.701724, 30.783677 ], [ 109.656761, 30.760538 ], [ 109.661072, 30.738936 ], [ 109.625348, 30.702923 ], [ 109.590855, 30.69366 ], [ 109.574225, 30.646818 ], [ 109.543428, 30.63961 ], [ 109.535421, 30.664837 ], [ 109.435638, 30.595832 ], [ 109.418392, 30.559766 ], [ 109.35495, 30.487076 ], [ 109.337088, 30.521623 ], [ 109.36111, 30.551004 ], [ 109.314298, 30.599953 ], [ 109.299516, 30.630341 ], [ 109.245313, 30.580892 ], [ 109.191726, 30.545851 ], [ 109.191726, 30.545851 ], [ 109.143683, 30.521108 ], [ 109.103647, 30.565949 ], [ 109.106111, 30.570587 ], [ 109.101183, 30.579346 ], [ 109.102415, 30.580377 ], [ 109.105495, 30.585529 ], [ 109.106111, 30.61077 ], [ 109.111654, 30.646303 ], [ 109.071002, 30.640125 ], [ 109.042669, 30.655571 ], [ 109.006329, 30.626736 ], [ 108.971836, 30.627766 ], [ 108.893612, 30.565434 ], [ 108.838793, 30.503062 ], [ 108.808612, 30.491202 ], [ 108.789518, 30.513374 ], [ 108.743939, 30.494812 ], [ 108.698975, 30.54482 ], [ 108.688504, 30.58759 ], [ 108.642925, 30.578831 ], [ 108.6497, 30.53915 ], [ 108.56778, 30.468508 ], [ 108.556077, 30.487592 ], [ 108.512961, 30.501515 ], [ 108.472925, 30.487076 ], [ 108.42673, 30.492233 ], [ 108.411331, 30.438586 ], [ 108.430425, 30.416397 ], [ 108.402092, 30.376649 ], [ 108.431041, 30.354446 ], [ 108.460606, 30.35961 ], [ 108.501258, 30.314673 ], [ 108.524048, 30.309506 ], [ 108.54499, 30.269716 ], [ 108.581947, 30.255759 ], [ 108.551766, 30.1637 ], [ 108.56778, 30.157491 ], [ 108.546222, 30.104178 ], [ 108.513577, 30.057571 ], [ 108.532055, 30.051873 ], [ 108.536367, 29.983472 ], [ 108.517889, 29.9394 ], [ 108.516041, 29.885451 ], [ 108.467998, 29.864175 ], [ 108.433505, 29.880262 ], [ 108.371295, 29.841337 ], [ 108.424266, 29.815897 ], [ 108.422418, 29.772791 ], [ 108.442744, 29.778505 ], [ 108.437201, 29.741098 ], [ 108.460606, 29.741098 ], [ 108.504338, 29.707836 ], [ 108.504954, 29.728626 ], [ 108.548686, 29.749412 ], [ 108.52528, 29.770713 ], [ 108.556077, 29.818493 ], [ 108.601041, 29.863656 ], [ 108.658939, 29.854833 ], [ 108.680497, 29.800319 ], [ 108.676801, 29.749412 ], [ 108.690968, 29.689642 ], [ 108.752562, 29.649082 ], [ 108.786438, 29.691721 ], [ 108.797525, 29.660003 ], [ 108.781511, 29.635558 ], [ 108.844337, 29.658443 ], [ 108.888068, 29.628795 ], [ 108.870206, 29.596537 ], [ 108.901003, 29.604863 ], [ 108.913322, 29.574679 ], [ 108.878213, 29.539279 ], [ 108.888684, 29.502305 ], [ 108.866511, 29.470527 ], [ 108.884373, 29.440824 ], [ 108.927488, 29.435612 ], [ 108.934264, 29.399643 ], [ 108.919481, 29.3261 ], [ 108.983539, 29.332883 ], [ 108.999553, 29.36366 ], [ 109.034662, 29.360531 ], [ 109.060531, 29.403292 ], [ 109.11227, 29.361053 ], [ 109.106727, 29.288526 ], [ 109.141835, 29.270256 ], [ 109.110422, 29.21647 ], [ 109.139372, 29.168927 ], [ 109.162777, 29.180946 ], [ 109.215748, 29.145409 ], [ 109.232378, 29.119271 ], [ 109.240386, 29.086328 ], [ 109.312451, 29.066453 ], [ 109.319842, 29.042388 ], [ 109.294588, 29.015177 ], [ 109.292741, 28.987436 ], [ 109.261328, 28.952356 ], [ 109.235458, 28.882161 ], [ 109.246545, 28.80143 ], [ 109.241002, 28.776779 ], [ 109.2989, 28.7474 ], [ 109.294588, 28.722211 ], [ 109.252704, 28.691767 ], [ 109.271183, 28.671816 ], [ 109.192958, 28.636104 ], [ 109.201581, 28.597753 ], [ 109.235458, 28.61982 ], [ 109.252089, 28.606685 ], [ 109.306907, 28.62087 ], [ 109.319842, 28.579886 ], [ 109.273646, 28.53836 ], [ 109.274262, 28.494714 ], [ 109.23361, 28.474726 ], [ 109.191726, 28.471043 ], [ 109.153538, 28.417369 ], [ 109.152306, 28.349975 ], [ 109.117198, 28.277795 ], [ 109.081473, 28.247749 ], [ 109.101799, 28.202401 ], [ 109.086401, 28.184467 ], [ 109.026655, 28.220331 ], [ 109.005713, 28.162837 ], [ 108.929952, 28.19027 ], [ 108.923793, 28.217167 ], [ 108.89546, 28.219804 ], [ 108.855424, 28.199764 ], [ 108.821547, 28.245113 ], [ 108.772888, 28.212949 ], [ 108.738395, 28.228241 ], [ 108.726692, 28.282011 ], [ 108.761801, 28.304143 ], [ 108.783359, 28.380518 ], [ 108.759953, 28.389995 ], [ 108.780279, 28.42579 ], [ 108.746402, 28.45105 ], [ 108.709446, 28.501026 ], [ 108.700207, 28.48209 ], [ 108.657091, 28.47683 ], [ 108.640461, 28.456838 ], [ 108.688504, 28.422106 ], [ 108.697127, 28.401051 ], [ 108.656475, 28.359981 ], [ 108.667562, 28.334173 ], [ 108.611512, 28.324691 ], [ 108.580099, 28.343128 ], [ 108.576403, 28.38631 ], [ 108.609048, 28.407368 ], [ 108.609664, 28.43579 ], [ 108.586874, 28.463678 ], [ 108.573939, 28.531 ], [ 108.610896, 28.539412 ], [ 108.604736, 28.590922 ], [ 108.636149, 28.621396 ], [ 108.575787, 28.659738 ], [ 108.50249, 28.63768 ], [ 108.501258, 28.626649 ], [ 108.439049, 28.634003 ], [ 108.332491, 28.679166 ], [ 108.347274, 28.736381 ], [ 108.385462, 28.772058 ], [ 108.386078, 28.803003 ], [ 108.352817, 28.815589 ], [ 108.346658, 28.859625 ], [ 108.357745, 28.893165 ], [ 108.345426, 28.943453 ], [ 108.319556, 28.961258 ], [ 108.297999, 29.045527 ], [ 108.306622, 29.079006 ], [ 108.277673, 29.091558 ], [ 108.256115, 29.040295 ], [ 108.193289, 29.072207 ], [ 108.150173, 29.053375 ], [ 108.070717, 29.086328 ], [ 108.026369, 29.039772 ], [ 107.925971, 29.032446 ], [ 107.908725, 29.007327 ], [ 107.882855, 29.00628 ], [ 107.867457, 28.960211 ], [ 107.810175, 28.984295 ], [ 107.823725, 29.034016 ], [ 107.784921, 29.048143 ], [ 107.810791, 29.139137 ], [ 107.749197, 29.199754 ], [ 107.700537, 29.141228 ], [ 107.659885, 29.162656 ], [ 107.605683, 29.164747 ], [ 107.589052, 29.150113 ], [ 107.570574, 29.218037 ], [ 107.486806, 29.174153 ], [ 107.441227, 29.203934 ], [ 107.401807, 29.184603 ], [ 107.408582, 29.138091 ], [ 107.427676, 29.128682 ], [ 107.412278, 29.094696 ], [ 107.369778, 29.091558 ], [ 107.395647, 29.041341 ], [ 107.364235, 29.00942 ], [ 107.396879, 28.993718 ], [ 107.412894, 28.960211 ], [ 107.441227, 28.943977 ], [ 107.41351, 28.911502 ], [ 107.383945, 28.848618 ], [ 107.339597, 28.845997 ], [ 107.327894, 28.810869 ], [ 107.261373, 28.792514 ], [ 107.24659, 28.76209 ], [ 107.219489, 28.772582 ], [ 107.210866, 28.817686 ], [ 107.227496, 28.836037 ], [ 107.194851, 28.838134 ], [ 107.206554, 28.868535 ], [ 107.14188, 28.887925 ], [ 107.016229, 28.882685 ], [ 107.019308, 28.861722 ], [ 106.983584, 28.851239 ], [ 106.988512, 28.776254 ], [ 106.951555, 28.766812 ], [ 106.923222, 28.809821 ], [ 106.872099, 28.777304 ], [ 106.845614, 28.780975 ], [ 106.824056, 28.756319 ], [ 106.86594, 28.690192 ], [ 106.889345, 28.695966 ], [ 106.866556, 28.624548 ], [ 106.830831, 28.623497 ], [ 106.807425, 28.589346 ], [ 106.784636, 28.626649 ], [ 106.756918, 28.607211 ], [ 106.77786, 28.563068 ], [ 106.73844, 28.554657 ], [ 106.726121, 28.51838 ], [ 106.747063, 28.467361 ], [ 106.708259, 28.450524 ], [ 106.697788, 28.47683 ], [ 106.632499, 28.503655 ], [ 106.564745, 28.485247 ], [ 106.567825, 28.523638 ], [ 106.615252, 28.549401 ], [ 106.606629, 28.593024 ], [ 106.63681, 28.622972 ], [ 106.618332, 28.645033 ], [ 106.651593, 28.649235 ], [ 106.617716, 28.66709 ], [ 106.6171, 28.691242 ], [ 106.587535, 28.691767 ], [ 106.56105, 28.719062 ], [ 106.561666, 28.756319 ], [ 106.474202, 28.832891 ], [ 106.45326, 28.817162 ], [ 106.461883, 28.761041 ], [ 106.492064, 28.742153 ], [ 106.528405, 28.677591 ], [ 106.502535, 28.661313 ], [ 106.49268, 28.591448 ], [ 106.466811, 28.586193 ], [ 106.504999, 28.544669 ], [ 106.477282, 28.530474 ], [ 106.403369, 28.569901 ], [ 106.37442, 28.525742 ] ] ], [ [ [ 109.105495, 30.585529 ], [ 109.102415, 30.580377 ], [ 109.101183, 30.579346 ], [ 109.09872, 30.579346 ], [ 109.09256, 30.578831 ], [ 109.106111, 30.61077 ], [ 109.105495, 30.585529 ] ] ], [ [ [ 105.582938, 30.12385 ], [ 105.574315, 30.130579 ], [ 105.580474, 30.129544 ], [ 105.582938, 30.127474 ], [ 105.582938, 30.12385 ] ] ], [ [ [ 109.09872, 30.579346 ], [ 109.106111, 30.570587 ], [ 109.103647, 30.565949 ], [ 109.09256, 30.578831 ], [ 109.09872, 30.579346 ] ] ], [ [ [ 107.058113, 30.043066 ], [ 107.055649, 30.040476 ], [ 107.054417, 30.040994 ], [ 107.053801, 30.043584 ], [ 107.058113, 30.043066 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "510000", "name": "四川省", "center": [ 104.065735, 30.659462 ], "centroid": [ 102.693453, 30.674545 ], "childrenNum": 21, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 22, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 101.167885, 27.198311 ], [ 101.167885, 27.198311 ], [ 101.119226, 27.208957 ], [ 101.071798, 27.194585 ], [ 101.042233, 27.22173 ], [ 101.026219, 27.270679 ], [ 101.021907, 27.332899 ], [ 100.95169, 27.426961 ], [ 100.936908, 27.469448 ], [ 100.901183, 27.453517 ], [ 100.91227, 27.521473 ], [ 100.854988, 27.623858 ], [ 100.827886, 27.615904 ], [ 100.848212, 27.672099 ], [ 100.782307, 27.691708 ], [ 100.775532, 27.743098 ], [ 100.757053, 27.770107 ], [ 100.707162, 27.800816 ], [ 100.719481, 27.858503 ], [ 100.681293, 27.923035 ], [ 100.634482, 27.915631 ], [ 100.609228, 27.859033 ], [ 100.54517, 27.809286 ], [ 100.511294, 27.827811 ], [ 100.504518, 27.852154 ], [ 100.442924, 27.86644 ], [ 100.412127, 27.816167 ], [ 100.350534, 27.755809 ], [ 100.327744, 27.72032 ], [ 100.311729, 27.724028 ], [ 100.304954, 27.788639 ], [ 100.28586, 27.80611 ], [ 100.30865, 27.830457 ], [ 100.30865, 27.861149 ], [ 100.210715, 27.87702 ], [ 100.170063, 27.907699 ], [ 100.196549, 27.936254 ], [ 100.120788, 28.018703 ], [ 100.088759, 28.029269 ], [ 100.05673, 28.097922 ], [ 100.021006, 28.147008 ], [ 100.033325, 28.184467 ], [ 100.062274, 28.193962 ], [ 100.091223, 28.181302 ], [ 100.102926, 28.201873 ], [ 100.153433, 28.208202 ], [ 100.188541, 28.252493 ], [ 100.147274, 28.288862 ], [ 100.176223, 28.325218 ], [ 100.136803, 28.349975 ], [ 100.057346, 28.368934 ], [ 100.073977, 28.426317 ], [ 99.990209, 28.47683 ], [ 99.985281, 28.529422 ], [ 99.91876, 28.599329 ], [ 99.875644, 28.611939 ], [ 99.873181, 28.631902 ], [ 99.834376, 28.628225 ], [ 99.834992, 28.660788 ], [ 99.79434, 28.699116 ], [ 99.755536, 28.701216 ], [ 99.722275, 28.757369 ], [ 99.717964, 28.846521 ], [ 99.676696, 28.810345 ], [ 99.625573, 28.81454 ], [ 99.609559, 28.784122 ], [ 99.614486, 28.740054 ], [ 99.553508, 28.710664 ], [ 99.53195, 28.677591 ], [ 99.540573, 28.623497 ], [ 99.504233, 28.619294 ], [ 99.466045, 28.579886 ], [ 99.463581, 28.549401 ], [ 99.403219, 28.546246 ], [ 99.396444, 28.491032 ], [ 99.426625, 28.454207 ], [ 99.404451, 28.44421 ], [ 99.437095, 28.398419 ], [ 99.392748, 28.318369 ], [ 99.412458, 28.295186 ], [ 99.374886, 28.18183 ], [ 99.306516, 28.227714 ], [ 99.28927, 28.286227 ], [ 99.237531, 28.317842 ], [ 99.229524, 28.350502 ], [ 99.200575, 28.365774 ], [ 99.16485, 28.425264 ], [ 99.187024, 28.44 ], [ 99.191952, 28.494714 ], [ 99.170394, 28.566221 ], [ 99.183944, 28.58882 ], [ 99.147604, 28.640831 ], [ 99.126662, 28.698066 ], [ 99.134053, 28.734806 ], [ 99.114343, 28.765763 ], [ 99.103872, 28.841803 ], [ 99.123582, 28.890021 ], [ 99.132206, 28.94869 ], [ 99.113727, 29.07273 ], [ 99.118039, 29.100971 ], [ 99.105104, 29.162656 ], [ 99.113727, 29.221171 ], [ 99.114343, 29.243628 ], [ 99.075539, 29.316186 ], [ 99.058909, 29.417368 ], [ 99.066916, 29.421018 ], [ 99.044742, 29.520013 ], [ 99.052133, 29.563748 ], [ 99.014561, 29.607464 ], [ 98.992387, 29.677163 ], [ 99.018873, 29.792009 ], [ 99.0238, 29.846009 ], [ 99.068148, 29.931621 ], [ 99.055213, 29.958587 ], [ 99.036735, 30.053945 ], [ 99.044742, 30.079842 ], [ 98.989308, 30.151799 ], [ 98.9813, 30.182843 ], [ 98.993003, 30.215429 ], [ 98.970829, 30.260928 ], [ 98.986844, 30.280569 ], [ 98.967134, 30.33482 ], [ 98.965286, 30.449937 ], [ 98.932025, 30.521623 ], [ 98.926482, 30.569556 ], [ 98.939417, 30.598923 ], [ 98.92217, 30.609225 ], [ 98.907388, 30.698292 ], [ 98.963438, 30.728134 ], [ 98.957895, 30.765166 ], [ 98.904924, 30.782649 ], [ 98.850105, 30.849465 ], [ 98.797135, 30.87926 ], [ 98.774345, 30.908019 ], [ 98.797135, 30.948575 ], [ 98.806374, 30.995783 ], [ 98.774961, 31.031174 ], [ 98.736772, 31.049121 ], [ 98.712135, 31.082954 ], [ 98.710287, 31.1178 ], [ 98.675179, 31.15417 ], [ 98.602498, 31.192062 ], [ 98.62344, 31.221238 ], [ 98.60373, 31.257568 ], [ 98.616048, 31.3036 ], [ 98.643766, 31.338876 ], [ 98.691809, 31.333253 ], [ 98.773113, 31.249382 ], [ 98.805758, 31.279052 ], [ 98.810685, 31.306668 ], [ 98.887062, 31.37465 ], [ 98.84333, 31.416028 ], [ 98.844562, 31.429817 ], [ 98.714599, 31.508935 ], [ 98.696736, 31.538523 ], [ 98.651157, 31.57881 ], [ 98.619128, 31.591555 ], [ 98.553839, 31.660349 ], [ 98.545831, 31.717383 ], [ 98.516882, 31.717383 ], [ 98.508875, 31.751995 ], [ 98.461448, 31.800327 ], [ 98.414636, 31.832365 ], [ 98.426339, 31.856767 ], [ 98.399238, 31.895899 ], [ 98.432498, 31.922825 ], [ 98.434962, 32.007613 ], [ 98.402933, 32.026896 ], [ 98.404781, 32.045159 ], [ 98.357354, 32.087253 ], [ 98.303151, 32.121726 ], [ 98.260035, 32.208862 ], [ 98.218768, 32.234683 ], [ 98.23047, 32.262521 ], [ 98.208913, 32.318171 ], [ 98.218768, 32.342444 ], [ 98.125145, 32.401077 ], [ 98.107283, 32.391476 ], [ 98.079565, 32.415224 ], [ 97.940363, 32.482393 ], [ 97.880001, 32.486431 ], [ 97.863986, 32.499051 ], [ 97.80732, 32.50006 ], [ 97.795617, 32.521257 ], [ 97.730944, 32.527312 ], [ 97.700763, 32.53488 ], [ 97.616995, 32.586329 ], [ 97.607756, 32.614059 ], [ 97.543698, 32.62162 ], [ 97.535075, 32.638252 ], [ 97.48272, 32.654377 ], [ 97.42359, 32.70475 ], [ 97.429133, 32.714318 ], [ 97.386018, 32.77925 ], [ 97.392793, 32.828546 ], [ 97.376163, 32.886359 ], [ 97.347829, 32.895907 ], [ 97.375547, 32.956689 ], [ 97.438372, 32.976271 ], [ 97.523988, 32.988822 ], [ 97.499966, 33.011408 ], [ 97.542466, 33.035995 ], [ 97.517213, 33.097683 ], [ 97.487032, 33.107209 ], [ 97.498119, 33.137783 ], [ 97.487648, 33.168346 ], [ 97.548626, 33.203907 ], [ 97.607756, 33.263976 ], [ 97.622538, 33.337005 ], [ 97.676125, 33.341004 ], [ 97.754349, 33.409972 ], [ 97.674893, 33.432949 ], [ 97.625618, 33.461412 ], [ 97.552321, 33.465906 ], [ 97.511669, 33.520805 ], [ 97.523372, 33.577166 ], [ 97.450075, 33.582152 ], [ 97.415583, 33.605582 ], [ 97.435293, 33.682307 ], [ 97.418046, 33.728608 ], [ 97.422974, 33.754984 ], [ 97.406344, 33.795278 ], [ 97.373083, 33.817655 ], [ 97.371851, 33.842015 ], [ 97.398336, 33.848477 ], [ 97.395257, 33.889224 ], [ 97.460546, 33.887236 ], [ 97.503662, 33.912073 ], [ 97.52214, 33.903133 ], [ 97.601596, 33.929951 ], [ 97.629314, 33.919523 ], [ 97.660111, 33.956264 ], [ 97.652719, 33.998448 ], [ 97.70261, 34.036644 ], [ 97.665654, 34.126855 ], [ 97.766668, 34.158555 ], [ 97.789458, 34.182818 ], [ 97.789458, 34.182818 ], [ 97.796849, 34.199154 ], [ 97.796849, 34.199154 ], [ 97.898479, 34.209548 ], [ 97.95453, 34.190739 ], [ 98.051848, 34.11546 ], [ 98.098043, 34.122892 ], [ 98.157174, 34.107532 ], [ 98.206449, 34.08424 ], [ 98.258188, 34.083249 ], [ 98.344419, 34.094648 ], [ 98.392462, 34.089196 ], [ 98.396774, 34.053008 ], [ 98.428187, 34.029204 ], [ 98.440506, 33.981577 ], [ 98.415252, 33.956761 ], [ 98.425723, 33.913066 ], [ 98.407245, 33.867362 ], [ 98.434962, 33.843009 ], [ 98.463295, 33.848477 ], [ 98.492861, 33.796272 ], [ 98.494092, 33.768915 ], [ 98.51873, 33.77389 ], [ 98.537824, 33.74752 ], [ 98.582788, 33.731595 ], [ 98.610505, 33.682805 ], [ 98.6567, 33.64744 ], [ 98.61728, 33.637476 ], [ 98.622824, 33.610067 ], [ 98.652389, 33.595114 ], [ 98.648077, 33.548741 ], [ 98.678258, 33.522801 ], [ 98.725686, 33.503341 ], [ 98.742316, 33.477887 ], [ 98.736157, 33.406975 ], [ 98.779888, 33.370497 ], [ 98.759562, 33.276985 ], [ 98.802062, 33.270481 ], [ 98.804526, 33.219428 ], [ 98.858728, 33.150811 ], [ 98.92217, 33.118738 ], [ 98.967134, 33.115229 ], [ 98.971445, 33.098185 ], [ 99.014561, 33.081137 ], [ 99.024416, 33.094675 ], [ 99.090322, 33.079131 ], [ 99.124814, 33.046028 ], [ 99.196263, 33.035493 ], [ 99.214741, 32.991332 ], [ 99.235067, 32.982296 ], [ 99.24677, 32.924043 ], [ 99.268944, 32.878318 ], [ 99.353944, 32.885354 ], [ 99.376118, 32.899927 ], [ 99.45311, 32.862233 ], [ 99.558436, 32.839106 ], [ 99.589233, 32.789312 ], [ 99.640355, 32.790822 ], [ 99.646515, 32.774721 ], [ 99.705029, 32.76516 ], [ 99.717964, 32.732443 ], [ 99.760464, 32.769689 ], [ 99.766623, 32.826032 ], [ 99.791877, 32.883344 ], [ 99.764159, 32.924545 ], [ 99.788181, 32.956689 ], [ 99.805427, 32.940619 ], [ 99.851007, 32.941623 ], [ 99.877492, 32.993339 ], [ 99.877492, 33.045527 ], [ 99.947709, 32.986814 ], [ 99.956332, 32.948152 ], [ 100.038252, 32.929066 ], [ 100.029629, 32.895907 ], [ 100.064738, 32.895907 ], [ 100.123252, 32.837095 ], [ 100.117093, 32.802392 ], [ 100.139266, 32.724388 ], [ 100.088143, 32.668988 ], [ 100.109701, 32.640268 ], [ 100.189773, 32.630692 ], [ 100.208252, 32.606497 ], [ 100.229809, 32.650346 ], [ 100.231041, 32.696189 ], [ 100.258759, 32.742511 ], [ 100.339447, 32.719353 ], [ 100.399193, 32.756101 ], [ 100.378251, 32.698707 ], [ 100.420135, 32.73194 ], [ 100.450932, 32.694678 ], [ 100.470026, 32.694678 ], [ 100.516837, 32.632204 ], [ 100.54517, 32.569687 ], [ 100.603069, 32.553547 ], [ 100.645568, 32.526303 ], [ 100.657887, 32.546484 ], [ 100.661583, 32.616075 ], [ 100.673286, 32.628172 ], [ 100.710242, 32.610026 ], [ 100.71209, 32.645307 ], [ 100.690532, 32.678056 ], [ 100.77122, 32.643795 ], [ 100.834046, 32.648835 ], [ 100.887633, 32.632708 ], [ 100.93198, 32.600447 ], [ 100.956618, 32.621116 ], [ 100.99727, 32.627668 ], [ 101.030531, 32.660424 ], [ 101.077342, 32.68259 ], [ 101.124769, 32.658408 ], [ 101.157414, 32.661431 ], [ 101.22332, 32.725898 ], [ 101.237486, 32.825026 ], [ 101.223935, 32.855698 ], [ 101.178356, 32.892892 ], [ 101.124153, 32.909976 ], [ 101.134624, 32.95217 ], [ 101.129081, 32.989324 ], [ 101.183899, 32.984304 ], [ 101.171581, 33.009902 ], [ 101.184515, 33.041514 ], [ 101.146327, 33.056563 ], [ 101.143863, 33.086151 ], [ 101.169733, 33.10019 ], [ 101.11553, 33.194893 ], [ 101.124769, 33.221431 ], [ 101.156798, 33.236449 ], [ 101.182668, 33.26948 ], [ 101.217776, 33.256469 ], [ 101.297232, 33.262475 ], [ 101.381616, 33.153316 ], [ 101.393935, 33.157826 ], [ 101.386543, 33.207412 ], [ 101.403174, 33.225436 ], [ 101.487557, 33.226938 ], [ 101.515275, 33.192889 ], [ 101.557775, 33.167344 ], [ 101.633535, 33.101193 ], [ 101.661252, 33.135778 ], [ 101.653861, 33.162835 ], [ 101.709912, 33.21292 ], [ 101.735781, 33.279987 ], [ 101.677883, 33.297497 ], [ 101.64955, 33.323004 ], [ 101.663716, 33.383991 ], [ 101.695745, 33.433948 ], [ 101.769042, 33.45592 ], [ 101.777665, 33.533776 ], [ 101.769042, 33.538765 ], [ 101.783208, 33.556721 ], [ 101.831252, 33.554726 ], [ 101.844186, 33.602591 ], [ 101.884222, 33.578163 ], [ 101.907012, 33.539264 ], [ 101.906396, 33.48188 ], [ 101.946432, 33.442937 ], [ 101.915635, 33.425957 ], [ 101.887302, 33.383991 ], [ 101.877447, 33.314502 ], [ 101.769658, 33.26898 ], [ 101.770274, 33.248962 ], [ 101.83002, 33.213921 ], [ 101.841723, 33.184876 ], [ 101.825708, 33.119239 ], [ 101.865744, 33.103198 ], [ 101.887302, 33.135778 ], [ 101.921795, 33.153817 ], [ 101.935345, 33.186879 ], [ 101.99386, 33.1999 ], [ 102.054838, 33.189884 ], [ 102.08933, 33.204908 ], [ 102.08933, 33.227439 ], [ 102.117047, 33.288492 ], [ 102.144765, 33.273983 ], [ 102.160163, 33.242956 ], [ 102.200815, 33.223434 ], [ 102.217446, 33.247961 ], [ 102.192192, 33.337005 ], [ 102.218062, 33.349503 ], [ 102.258098, 33.409472 ], [ 102.296286, 33.413969 ], [ 102.310452, 33.397982 ], [ 102.368967, 33.41247 ], [ 102.392988, 33.404477 ], [ 102.447807, 33.454922 ], [ 102.462589, 33.449429 ], [ 102.461358, 33.501345 ], [ 102.446575, 33.53228 ], [ 102.477988, 33.543254 ], [ 102.440416, 33.574673 ], [ 102.346793, 33.605582 ], [ 102.31538, 33.665374 ], [ 102.342481, 33.725622 ], [ 102.284583, 33.719151 ], [ 102.324619, 33.754486 ], [ 102.296286, 33.783838 ], [ 102.243315, 33.786823 ], [ 102.261177, 33.821136 ], [ 102.25317, 33.861399 ], [ 102.136142, 33.965199 ], [ 102.16817, 33.983066 ], [ 102.226069, 33.963214 ], [ 102.248858, 33.98654 ], [ 102.287047, 33.977607 ], [ 102.315996, 33.993983 ], [ 102.345561, 33.969666 ], [ 102.392372, 33.971651 ], [ 102.406539, 34.033172 ], [ 102.437336, 34.087214 ], [ 102.471213, 34.072839 ], [ 102.511865, 34.086222 ], [ 102.615958, 34.099604 ], [ 102.649219, 34.080275 ], [ 102.655994, 34.113478 ], [ 102.598712, 34.14766 ], [ 102.651067, 34.165983 ], [ 102.664002, 34.192719 ], [ 102.694799, 34.198659 ], [ 102.728675, 34.235774 ], [ 102.779798, 34.236764 ], [ 102.798276, 34.272874 ], [ 102.856791, 34.270895 ], [ 102.85987, 34.301058 ], [ 102.911609, 34.312923 ], [ 102.949181, 34.292159 ], [ 102.977515, 34.252595 ], [ 102.973203, 34.205588 ], [ 103.005848, 34.184798 ], [ 103.052043, 34.195194 ], [ 103.100087, 34.181828 ], [ 103.124108, 34.162022 ], [ 103.121644, 34.112487 ], [ 103.178927, 34.079779 ], [ 103.129652, 34.065899 ], [ 103.119797, 34.03466 ], [ 103.147514, 34.036644 ], [ 103.157369, 33.998944 ], [ 103.120413, 33.953286 ], [ 103.1315, 33.931937 ], [ 103.16476, 33.929454 ], [ 103.181391, 33.900649 ], [ 103.153673, 33.819147 ], [ 103.165376, 33.805721 ], [ 103.228202, 33.79478 ], [ 103.24976, 33.814175 ], [ 103.284868, 33.80224 ], [ 103.278709, 33.774387 ], [ 103.35447, 33.743539 ], [ 103.434542, 33.752993 ], [ 103.464723, 33.80224 ], [ 103.518309, 33.807213 ], [ 103.545411, 33.719649 ], [ 103.520157, 33.678323 ], [ 103.552186, 33.671351 ], [ 103.563889, 33.699735 ], [ 103.593454, 33.716164 ], [ 103.645809, 33.708697 ], [ 103.667983, 33.685793 ], [ 103.690772, 33.69376 ], [ 103.778236, 33.658898 ], [ 103.861388, 33.682307 ], [ 103.980264, 33.670852 ], [ 104.046169, 33.686291 ], [ 104.103452, 33.663381 ], [ 104.176749, 33.5996 ], [ 104.155191, 33.542755 ], [ 104.180444, 33.472895 ], [ 104.213089, 33.446932 ], [ 104.22048, 33.404477 ], [ 104.272219, 33.391486 ], [ 104.292545, 33.336505 ], [ 104.373849, 33.345004 ], [ 104.420045, 33.327004 ], [ 104.386168, 33.298497 ], [ 104.333813, 33.315502 ], [ 104.303632, 33.304499 ], [ 104.323958, 33.26898 ], [ 104.32827, 33.223934 ], [ 104.351059, 33.158828 ], [ 104.378161, 33.109214 ], [ 104.337509, 33.038002 ], [ 104.391711, 33.035493 ], [ 104.426204, 33.010906 ], [ 104.383704, 32.994343 ], [ 104.378161, 32.953174 ], [ 104.345516, 32.940117 ], [ 104.288234, 32.942628 ], [ 104.277147, 32.90244 ], [ 104.294393, 32.835586 ], [ 104.363994, 32.822511 ], [ 104.458849, 32.748551 ], [ 104.51182, 32.753585 ], [ 104.526602, 32.728416 ], [ 104.582653, 32.722374 ], [ 104.592508, 32.695685 ], [ 104.643015, 32.661935 ], [ 104.696601, 32.673522 ], [ 104.739717, 32.635228 ], [ 104.795768, 32.643292 ], [ 104.820405, 32.662943 ], [ 104.845659, 32.653873 ], [ 104.881999, 32.600951 ], [ 104.925115, 32.607505 ], [ 105.026745, 32.650346 ], [ 105.0791, 32.637244 ], [ 105.111128, 32.593893 ], [ 105.185041, 32.617587 ], [ 105.215222, 32.63674 ], [ 105.219534, 32.666469 ], [ 105.263265, 32.652362 ], [ 105.297758, 32.656897 ], [ 105.347033, 32.68259 ], [ 105.368591, 32.712807 ], [ 105.448663, 32.732946 ], [ 105.454207, 32.767173 ], [ 105.427721, 32.784281 ], [ 105.396308, 32.85067 ], [ 105.396308, 32.85067 ], [ 105.38091, 32.876307 ], [ 105.408011, 32.885857 ], [ 105.414171, 32.922034 ], [ 105.467757, 32.930071 ], [ 105.49917, 32.911986 ], [ 105.495475, 32.873292 ], [ 105.524424, 32.847654 ], [ 105.534279, 32.790822 ], [ 105.555221, 32.794343 ], [ 105.563844, 32.724891 ], [ 105.585402, 32.728919 ], [ 105.596489, 32.69921 ], [ 105.677793, 32.726402 ], [ 105.719061, 32.759624 ], [ 105.768952, 32.767676 ], [ 105.779423, 32.750061 ], [ 105.822538, 32.770192 ], [ 105.825002, 32.824523 ], [ 105.849024, 32.817985 ], [ 105.893371, 32.838603 ], [ 105.93156, 32.826032 ], [ 105.969132, 32.849162 ], [ 106.011632, 32.829552 ], [ 106.044277, 32.864747 ], [ 106.071378, 32.828546 ], [ 106.093552, 32.82402 ], [ 106.07261, 32.76365 ], [ 106.071378, 32.758114 ], [ 106.120037, 32.719856 ], [ 106.17424, 32.6977 ], [ 106.254928, 32.693671 ], [ 106.267863, 32.673522 ], [ 106.301123, 32.680071 ], [ 106.347935, 32.671003 ], [ 106.389203, 32.62666 ], [ 106.421231, 32.616579 ], [ 106.451412, 32.65992 ], [ 106.498224, 32.649338 ], [ 106.517934, 32.668485 ], [ 106.585687, 32.68813 ], [ 106.626955, 32.682086 ], [ 106.670071, 32.694678 ], [ 106.733513, 32.739491 ], [ 106.783404, 32.735967 ], [ 106.793259, 32.712807 ], [ 106.82344, 32.705254 ], [ 106.854853, 32.724388 ], [ 106.903512, 32.721367 ], [ 106.912751, 32.704247 ], [ 107.012533, 32.721367 ], [ 107.066736, 32.708779 ], [ 107.05996, 32.686115 ], [ 107.098765, 32.649338 ], [ 107.108004, 32.600951 ], [ 107.080286, 32.542448 ], [ 107.127098, 32.482393 ], [ 107.189924, 32.468256 ], [ 107.212097, 32.428864 ], [ 107.263836, 32.403099 ], [ 107.287858, 32.457147 ], [ 107.313727, 32.489965 ], [ 107.356843, 32.506622 ], [ 107.382097, 32.54043 ], [ 107.436299, 32.529835 ], [ 107.438763, 32.465732 ], [ 107.460937, 32.453612 ], [ 107.456625, 32.41775 ], [ 107.489886, 32.425328 ], [ 107.527458, 32.38238 ], [ 107.598291, 32.411688 ], [ 107.648183, 32.413709 ], [ 107.680827, 32.397035 ], [ 107.707929, 32.331826 ], [ 107.753508, 32.338399 ], [ 107.812022, 32.247844 ], [ 107.864377, 32.201266 ], [ 107.890247, 32.214432 ], [ 107.924739, 32.197215 ], [ 107.979558, 32.146051 ], [ 108.024521, 32.177462 ], [ 108.018362, 32.2119 ], [ 108.086731, 32.233165 ], [ 108.143398, 32.219495 ], [ 108.156948, 32.239239 ], [ 108.179738, 32.221521 ], [ 108.240716, 32.274666 ], [ 108.310933, 32.232152 ], [ 108.389773, 32.263533 ], [ 108.414411, 32.252399 ], [ 108.469846, 32.270618 ], [ 108.507418, 32.245819 ], [ 108.509882, 32.201266 ], [ 108.480317, 32.182527 ], [ 108.399013, 32.194176 ], [ 108.370063, 32.172397 ], [ 108.379918, 32.154158 ], [ 108.379918, 32.154158 ], [ 108.379303, 32.153652 ], [ 108.379303, 32.153652 ], [ 108.399628, 32.147065 ], [ 108.452599, 32.090296 ], [ 108.42981, 32.061391 ], [ 108.372527, 32.077112 ], [ 108.344194, 32.067477 ], [ 108.362056, 32.035521 ], [ 108.329411, 32.020299 ], [ 108.370063, 31.988835 ], [ 108.351585, 31.971575 ], [ 108.307238, 31.997463 ], [ 108.259194, 31.967006 ], [ 108.343578, 31.860834 ], [ 108.386078, 31.854226 ], [ 108.391005, 31.829822 ], [ 108.429194, 31.809482 ], [ 108.455063, 31.814059 ], [ 108.462454, 31.780488 ], [ 108.535135, 31.757592 ], [ 108.50557, 31.734182 ], [ 108.514809, 31.693963 ], [ 108.546838, 31.665442 ], [ 108.519121, 31.665952 ], [ 108.468614, 31.636404 ], [ 108.442744, 31.633856 ], [ 108.390389, 31.591555 ], [ 108.386078, 31.544134 ], [ 108.34789, 31.545664 ], [ 108.344194, 31.512506 ], [ 108.254883, 31.49873 ], [ 108.233941, 31.506894 ], [ 108.191441, 31.492096 ], [ 108.193289, 31.467598 ], [ 108.224086, 31.464024 ], [ 108.216079, 31.41041 ], [ 108.153869, 31.371073 ], [ 108.185898, 31.336831 ], [ 108.095354, 31.268311 ], [ 108.038688, 31.252964 ], [ 108.031297, 31.217144 ], [ 108.07626, 31.231985 ], [ 108.089811, 31.204859 ], [ 108.025753, 31.116263 ], [ 108.009123, 31.109602 ], [ 108.026985, 31.061938 ], [ 108.060246, 31.052197 ], [ 108.00358, 31.025533 ], [ 107.983254, 30.983983 ], [ 107.942602, 30.989114 ], [ 107.948145, 30.918802 ], [ 107.994956, 30.908533 ], [ 107.956152, 30.882855 ], [ 107.851443, 30.792931 ], [ 107.788001, 30.81966 ], [ 107.763979, 30.817091 ], [ 107.760899, 30.862823 ], [ 107.739957, 30.884396 ], [ 107.693146, 30.875665 ], [ 107.645103, 30.821202 ], [ 107.57735, 30.847924 ], [ 107.515756, 30.854603 ], [ 107.483111, 30.838675 ], [ 107.498509, 30.809381 ], [ 107.454162, 30.771851 ], [ 107.454162, 30.771851 ], [ 107.424597, 30.74048 ], [ 107.458473, 30.704981 ], [ 107.477567, 30.664837 ], [ 107.516987, 30.644759 ], [ 107.485575, 30.598408 ], [ 107.427676, 30.547397 ], [ 107.443075, 30.53348 ], [ 107.408582, 30.521623 ], [ 107.368546, 30.468508 ], [ 107.338981, 30.386459 ], [ 107.288474, 30.337402 ], [ 107.257677, 30.267131 ], [ 107.221337, 30.213878 ], [ 107.103076, 30.090198 ], [ 107.080286, 30.094341 ], [ 107.084598, 30.063786 ], [ 107.058113, 30.043066 ], [ 107.053801, 30.043584 ], [ 107.02054, 30.036849 ], [ 106.981736, 30.08502 ], [ 106.980504, 30.087609 ], [ 106.979888, 30.088127 ], [ 106.978656, 30.087609 ], [ 106.977425, 30.087609 ], [ 106.976809, 30.088127 ], [ 106.975577, 30.088127 ], [ 106.976193, 30.083467 ], [ 106.94478, 30.037367 ], [ 106.913367, 30.025451 ], [ 106.862244, 30.033223 ], [ 106.83699, 30.049801 ], [ 106.825904, 30.03115 ], [ 106.825904, 30.03115 ], [ 106.785252, 30.01716 ], [ 106.732281, 30.027005 ], [ 106.724274, 30.058607 ], [ 106.699636, 30.074145 ], [ 106.700252, 30.111944 ], [ 106.672535, 30.122297 ], [ 106.677462, 30.156974 ], [ 106.631883, 30.186464 ], [ 106.611557, 30.235596 ], [ 106.612173, 30.235596 ], [ 106.611557, 30.235596 ], [ 106.612173, 30.235596 ], [ 106.612173, 30.235596 ], [ 106.612789, 30.235596 ], [ 106.612789, 30.235596 ], [ 106.642354, 30.246454 ], [ 106.611557, 30.292455 ], [ 106.560434, 30.31519 ], [ 106.545035, 30.296589 ], [ 106.49884, 30.295556 ], [ 106.43971, 30.308473 ], [ 106.428623, 30.254725 ], [ 106.401521, 30.242318 ], [ 106.349167, 30.24542 ], [ 106.334384, 30.225772 ], [ 106.306667, 30.238182 ], [ 106.296196, 30.205603 ], [ 106.264167, 30.20974 ], [ 106.260471, 30.207672 ], [ 106.260471, 30.204051 ], [ 106.260471, 30.19681 ], [ 106.232754, 30.185947 ], [ 106.180399, 30.233011 ], [ 106.168696, 30.303823 ], [ 106.132356, 30.323972 ], [ 106.132972, 30.30279 ], [ 106.07261, 30.333786 ], [ 106.031958, 30.373551 ], [ 105.943263, 30.372002 ], [ 105.900763, 30.405042 ], [ 105.84656, 30.410203 ], [ 105.825618, 30.436006 ], [ 105.792357, 30.427234 ], [ 105.760329, 30.384393 ], [ 105.754785, 30.342567 ], [ 105.714749, 30.322939 ], [ 105.720292, 30.252657 ], [ 105.720292, 30.252657 ], [ 105.670401, 30.254208 ], [ 105.624822, 30.275918 ], [ 105.619894, 30.234045 ], [ 105.662394, 30.210258 ], [ 105.642684, 30.186464 ], [ 105.56138, 30.183878 ], [ 105.558916, 30.18543 ], [ 105.556453, 30.187499 ], [ 105.550909, 30.179222 ], [ 105.536127, 30.152834 ], [ 105.596489, 30.159043 ], [ 105.574315, 30.130579 ], [ 105.582938, 30.12385 ], [ 105.642068, 30.101072 ], [ 105.638988, 30.076216 ], [ 105.676561, 30.06793 ], [ 105.687032, 30.038922 ], [ 105.719677, 30.042548 ], [ 105.753553, 30.018196 ], [ 105.723372, 29.975177 ], [ 105.730763, 29.95755 ], [ 105.70243, 29.924879 ], [ 105.717213, 29.893753 ], [ 105.738771, 29.891159 ], [ 105.707974, 29.840818 ], [ 105.610655, 29.837184 ], [ 105.582938, 29.819013 ], [ 105.574931, 29.744216 ], [ 105.529351, 29.707836 ], [ 105.481924, 29.718232 ], [ 105.476996, 29.674564 ], [ 105.419714, 29.688082 ], [ 105.38091, 29.628275 ], [ 105.347649, 29.621512 ], [ 105.332867, 29.592374 ], [ 105.296526, 29.571035 ], [ 105.305149, 29.53199 ], [ 105.337794, 29.459064 ], [ 105.334099, 29.441345 ], [ 105.387069, 29.455416 ], [ 105.387069, 29.455416 ], [ 105.372903, 29.421018 ], [ 105.426489, 29.419454 ], [ 105.441888, 29.400686 ], [ 105.418482, 29.352185 ], [ 105.42033, 29.31149 ], [ 105.465294, 29.322969 ], [ 105.459134, 29.288526 ], [ 105.513337, 29.283306 ], [ 105.521344, 29.264513 ], [ 105.557684, 29.278608 ], [ 105.631597, 29.280174 ], [ 105.647612, 29.253027 ], [ 105.695039, 29.287482 ], [ 105.712285, 29.219082 ], [ 105.703662, 29.176766 ], [ 105.728916, 29.134432 ], [ 105.752321, 29.129727 ], [ 105.728916, 29.1062 ], [ 105.757865, 29.069068 ], [ 105.74185, 29.039249 ], [ 105.766488, 29.013607 ], [ 105.762176, 28.9911 ], [ 105.801596, 28.958116 ], [ 105.797285, 28.936121 ], [ 105.830546, 28.944501 ], [ 105.852719, 28.927217 ], [ 105.910002, 28.920407 ], [ 105.969132, 28.965971 ], [ 106.001161, 28.973824 ], [ 106.040581, 28.955498 ], [ 106.049204, 28.906263 ], [ 106.070762, 28.919884 ], [ 106.101559, 28.898928 ], [ 106.14837, 28.901548 ], [ 106.173008, 28.920407 ], [ 106.206885, 28.904691 ], [ 106.264783, 28.845997 ], [ 106.245689, 28.817686 ], [ 106.267863, 28.779402 ], [ 106.27279, 28.741103 ], [ 106.305435, 28.704365 ], [ 106.304203, 28.64976 ], [ 106.346703, 28.583565 ], [ 106.33192, 28.55308 ], [ 106.37442, 28.525742 ], [ 106.379348, 28.479986 ], [ 106.349167, 28.473674 ], [ 106.304819, 28.505233 ], [ 106.2925, 28.537309 ], [ 106.254928, 28.539412 ], [ 106.184711, 28.58882 ], [ 106.17116, 28.629275 ], [ 106.14837, 28.642932 ], [ 106.103407, 28.636104 ], [ 106.085544, 28.681792 ], [ 106.030726, 28.694917 ], [ 106.001161, 28.743727 ], [ 105.966668, 28.761041 ], [ 105.937719, 28.686517 ], [ 105.889676, 28.670765 ], [ 105.884748, 28.595126 ], [ 105.808372, 28.599855 ], [ 105.78435, 28.610889 ], [ 105.757249, 28.590397 ], [ 105.74493, 28.616668 ], [ 105.712901, 28.586718 ], [ 105.693191, 28.58882 ], [ 105.68272, 28.534154 ], [ 105.62359, 28.517854 ], [ 105.612503, 28.438947 ], [ 105.643916, 28.431053 ], [ 105.655003, 28.362615 ], [ 105.639604, 28.324164 ], [ 105.68888, 28.284119 ], [ 105.730147, 28.271997 ], [ 105.737539, 28.30309 ], [ 105.76464, 28.308359 ], [ 105.76464, 28.308359 ], [ 105.78743, 28.335753 ], [ 105.824386, 28.306251 ], [ 105.848408, 28.255656 ], [ 105.889676, 28.237732 ], [ 105.860727, 28.159672 ], [ 105.895219, 28.119565 ], [ 105.943878, 28.143314 ], [ 105.975907, 28.107952 ], [ 106.093552, 28.162837 ], [ 106.145291, 28.162837 ], [ 106.206885, 28.134343 ], [ 106.266631, 28.066769 ], [ 106.246305, 28.011835 ], [ 106.286341, 28.007079 ], [ 106.328225, 27.952643 ], [ 106.307899, 27.936782 ], [ 106.304819, 27.899237 ], [ 106.325145, 27.898708 ], [ 106.337464, 27.859033 ], [ 106.306667, 27.808756 ], [ 106.242609, 27.767459 ], [ 106.193334, 27.75422 ], [ 106.120653, 27.779638 ], [ 106.063987, 27.776991 ], [ 106.023335, 27.746805 ], [ 105.985146, 27.749983 ], [ 105.92848, 27.729855 ], [ 105.922937, 27.746805 ], [ 105.868118, 27.732504 ], [ 105.848408, 27.707074 ], [ 105.76772, 27.7182 ], [ 105.722756, 27.706015 ], [ 105.720292, 27.683759 ], [ 105.664242, 27.683759 ], [ 105.62359, 27.666269 ], [ 105.605112, 27.715552 ], [ 105.560148, 27.71979 ], [ 105.508409, 27.769048 ], [ 105.44004, 27.775402 ], [ 105.353809, 27.748924 ], [ 105.308229, 27.704955 ], [ 105.290367, 27.712373 ], [ 105.293447, 27.770637 ], [ 105.273736, 27.794992 ], [ 105.313157, 27.810874 ], [ 105.25957, 27.827811 ], [ 105.233084, 27.895534 ], [ 105.284823, 27.935725 ], [ 105.270657, 27.99704 ], [ 105.247867, 28.009193 ], [ 105.218302, 27.990698 ], [ 105.186273, 27.995454 ], [ 105.167795, 28.021345 ], [ 105.186889, 28.054623 ], [ 105.168411, 28.071522 ], [ 105.119752, 28.07205 ], [ 105.061853, 28.096866 ], [ 105.002107, 28.064129 ], [ 104.980549, 28.063073 ], [ 104.975006, 28.020816 ], [ 104.903557, 27.962158 ], [ 104.918339, 27.938897 ], [ 104.888158, 27.914574 ], [ 104.842579, 27.900294 ], [ 104.796999, 27.901352 ], [ 104.761891, 27.884426 ], [ 104.743413, 27.901881 ], [ 104.676275, 27.880723 ], [ 104.63316, 27.850567 ], [ 104.607906, 27.857974 ], [ 104.573413, 27.840512 ], [ 104.52537, 27.889187 ], [ 104.508124, 27.878078 ], [ 104.44961, 27.927794 ], [ 104.40095, 27.952114 ], [ 104.362762, 28.012891 ], [ 104.30856, 28.036136 ], [ 104.304248, 28.050926 ], [ 104.373233, 28.051454 ], [ 104.40095, 28.091586 ], [ 104.448994, 28.113758 ], [ 104.444682, 28.16231 ], [ 104.406494, 28.173389 ], [ 104.402182, 28.202928 ], [ 104.442834, 28.211366 ], [ 104.462544, 28.241422 ], [ 104.44961, 28.269889 ], [ 104.420045, 28.269889 ], [ 104.392943, 28.291497 ], [ 104.384936, 28.329959 ], [ 104.343052, 28.334173 ], [ 104.314103, 28.306778 ], [ 104.282074, 28.343128 ], [ 104.254357, 28.403683 ], [ 104.267908, 28.499448 ], [ 104.260516, 28.536257 ], [ 104.323342, 28.540989 ], [ 104.355987, 28.555183 ], [ 104.375697, 28.5946 ], [ 104.417581, 28.598279 ], [ 104.425588, 28.626649 ], [ 104.372617, 28.649235 ], [ 104.314719, 28.615617 ], [ 104.277147, 28.631902 ], [ 104.252509, 28.660788 ], [ 104.230951, 28.635579 ], [ 104.170589, 28.642932 ], [ 104.117618, 28.634003 ], [ 104.09606, 28.603533 ], [ 104.05972, 28.6277 ], [ 103.953779, 28.600906 ], [ 103.910047, 28.631377 ], [ 103.887873, 28.61982 ], [ 103.850917, 28.66709 ], [ 103.833054, 28.605109 ], [ 103.838598, 28.587244 ], [ 103.802873, 28.563068 ], [ 103.781931, 28.525216 ], [ 103.829975, 28.459995 ], [ 103.828743, 28.44 ], [ 103.860156, 28.383677 ], [ 103.85338, 28.356822 ], [ 103.877402, 28.316262 ], [ 103.828743, 28.285173 ], [ 103.770845, 28.233514 ], [ 103.740048, 28.23615 ], [ 103.701859, 28.198709 ], [ 103.692004, 28.232459 ], [ 103.643961, 28.260401 ], [ 103.573128, 28.230877 ], [ 103.533092, 28.168641 ], [ 103.470266, 28.122204 ], [ 103.430846, 28.044587 ], [ 103.459179, 28.021345 ], [ 103.486281, 28.033495 ], [ 103.515846, 27.965329 ], [ 103.55465, 27.978543 ], [ 103.502295, 27.910343 ], [ 103.509686, 27.843687 ], [ 103.487512, 27.794992 ], [ 103.461027, 27.779638 ], [ 103.393274, 27.709194 ], [ 103.369868, 27.708664 ], [ 103.349542, 27.678459 ], [ 103.29226, 27.632872 ], [ 103.2861, 27.561802 ], [ 103.232514, 27.56976 ], [ 103.19063, 27.523596 ], [ 103.144434, 27.450331 ], [ 103.141355, 27.420586 ], [ 103.080992, 27.396679 ], [ 103.055739, 27.40943 ], [ 102.989833, 27.367983 ], [ 102.941174, 27.405711 ], [ 102.899906, 27.317481 ], [ 102.883892, 27.299401 ], [ 102.883276, 27.258444 ], [ 102.904218, 27.227584 ], [ 102.913457, 27.133886 ], [ 102.870957, 27.026782 ], [ 102.894979, 27.001724 ], [ 102.896211, 26.91264 ], [ 102.949181, 26.843244 ], [ 102.966428, 26.837904 ], [ 102.991681, 26.775409 ], [ 102.983674, 26.76686 ], [ 103.008312, 26.710741 ], [ 103.005232, 26.679195 ], [ 103.026174, 26.664221 ], [ 103.035413, 26.556673 ], [ 103.052659, 26.555602 ], [ 103.052659, 26.514374 ], [ 103.030485, 26.485989 ], [ 102.989833, 26.482775 ], [ 102.988602, 26.413117 ], [ 102.998457, 26.371839 ], [ 102.975667, 26.340736 ], [ 102.893131, 26.338591 ], [ 102.878964, 26.364332 ], [ 102.833385, 26.306406 ], [ 102.785342, 26.298895 ], [ 102.739762, 26.268846 ], [ 102.709581, 26.210336 ], [ 102.659074, 26.221611 ], [ 102.60056, 26.250598 ], [ 102.638748, 26.307479 ], [ 102.629509, 26.336982 ], [ 102.570995, 26.362723 ], [ 102.542046, 26.338591 ], [ 102.440416, 26.300505 ], [ 102.392372, 26.296749 ], [ 102.349257, 26.244694 ], [ 102.245163, 26.212483 ], [ 102.242699, 26.190468 ], [ 102.174946, 26.146961 ], [ 102.152156, 26.10935 ], [ 102.107808, 26.068501 ], [ 102.080091, 26.065275 ], [ 102.020961, 26.096451 ], [ 101.954439, 26.084627 ], [ 101.929186, 26.105588 ], [ 101.899621, 26.099139 ], [ 101.857737, 26.049146 ], [ 101.835563, 26.04592 ], [ 101.839875, 26.082477 ], [ 101.796759, 26.114723 ], [ 101.807846, 26.156093 ], [ 101.773353, 26.168448 ], [ 101.737013, 26.219463 ], [ 101.690202, 26.241473 ], [ 101.630455, 26.224832 ], [ 101.586108, 26.279579 ], [ 101.597195, 26.303187 ], [ 101.64031, 26.318745 ], [ 101.660636, 26.346635 ], [ 101.635383, 26.357361 ], [ 101.637847, 26.388995 ], [ 101.565782, 26.454381 ], [ 101.530057, 26.467239 ], [ 101.506652, 26.499915 ], [ 101.458608, 26.49563 ], [ 101.422884, 26.53151 ], [ 101.395783, 26.591998 ], [ 101.402558, 26.604841 ], [ 101.461688, 26.606447 ], [ 101.461072, 26.640687 ], [ 101.481398, 26.673313 ], [ 101.453065, 26.692563 ], [ 101.513427, 26.768463 ], [ 101.466, 26.786629 ], [ 101.445674, 26.77434 ], [ 101.458608, 26.731054 ], [ 101.435819, 26.740675 ], [ 101.389623, 26.723036 ], [ 101.387159, 26.753501 ], [ 101.358826, 26.771669 ], [ 101.399478, 26.841642 ], [ 101.365602, 26.883819 ], [ 101.311399, 26.903034 ], [ 101.267667, 26.903034 ], [ 101.264587, 26.955323 ], [ 101.227015, 26.959057 ], [ 101.228863, 26.981992 ], [ 101.136472, 27.023584 ], [ 101.157414, 27.094999 ], [ 101.145095, 27.103523 ], [ 101.170349, 27.175421 ], [ 101.167885, 27.198311 ] ] ], [ [ [ 106.264167, 30.20974 ], [ 106.260471, 30.19681 ], [ 106.260471, 30.204051 ], [ 106.260471, 30.207672 ], [ 106.264167, 30.20974 ] ] ], [ [ [ 106.976809, 30.088127 ], [ 106.977425, 30.087609 ], [ 106.978656, 30.087609 ], [ 106.979888, 30.088127 ], [ 106.980504, 30.087609 ], [ 106.981736, 30.08502 ], [ 106.976193, 30.083467 ], [ 106.975577, 30.088127 ], [ 106.976809, 30.088127 ] ] ], [ [ [ 105.558916, 30.18543 ], [ 105.56138, 30.183878 ], [ 105.550909, 30.179222 ], [ 105.556453, 30.187499 ], [ 105.558916, 30.18543 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "520000", "name": "贵州省", "center": [ 106.713478, 26.578343 ], "centroid": [ 106.880457, 26.826368 ], "childrenNum": 9, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 23, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 109.274262, 28.494714 ], [ 109.260712, 28.46473 ], [ 109.264407, 28.392628 ], [ 109.289045, 28.373673 ], [ 109.268719, 28.33786 ], [ 109.275494, 28.313101 ], [ 109.317994, 28.277795 ], [ 109.33524, 28.293605 ], [ 109.388211, 28.268307 ], [ 109.367885, 28.254602 ], [ 109.340168, 28.19027 ], [ 109.33832, 28.141731 ], [ 109.314298, 28.103729 ], [ 109.298284, 28.036136 ], [ 109.335856, 28.063073 ], [ 109.378972, 28.034551 ], [ 109.362342, 28.007608 ], [ 109.319842, 27.988585 ], [ 109.30198, 27.956343 ], [ 109.32169, 27.868027 ], [ 109.346943, 27.838396 ], [ 109.332777, 27.782815 ], [ 109.37774, 27.736741 ], [ 109.366653, 27.721909 ], [ 109.414081, 27.725087 ], [ 109.470747, 27.680049 ], [ 109.45658, 27.673689 ], [ 109.470131, 27.62863 ], [ 109.451037, 27.586204 ], [ 109.461508, 27.567637 ], [ 109.404841, 27.55066 ], [ 109.303211, 27.47582 ], [ 109.300132, 27.423774 ], [ 109.245313, 27.41793 ], [ 109.202197, 27.450331 ], [ 109.167089, 27.41793 ], [ 109.141835, 27.448207 ], [ 109.142451, 27.418461 ], [ 109.103647, 27.336621 ], [ 109.044517, 27.331304 ], [ 109.053756, 27.293551 ], [ 108.983539, 27.26802 ], [ 108.963213, 27.235565 ], [ 108.907778, 27.204699 ], [ 108.926873, 27.160512 ], [ 108.878829, 27.106187 ], [ 108.79075, 27.084343 ], [ 108.877597, 27.01612 ], [ 108.942887, 27.017186 ], [ 108.942887, 27.017186 ], [ 108.940423, 27.044907 ], [ 109.007561, 27.08008 ], [ 109.032814, 27.104056 ], [ 109.128901, 27.122701 ], [ 109.101183, 27.06889 ], [ 109.165857, 27.066758 ], [ 109.21698, 27.114711 ], [ 109.239154, 27.14933 ], [ 109.264407, 27.131755 ], [ 109.33524, 27.139212 ], [ 109.358646, 27.153058 ], [ 109.415312, 27.154123 ], [ 109.441182, 27.117907 ], [ 109.472595, 27.134951 ], [ 109.454733, 27.069423 ], [ 109.486761, 27.053968 ], [ 109.497848, 27.079548 ], [ 109.520022, 27.058764 ], [ 109.555131, 26.946788 ], [ 109.436254, 26.892359 ], [ 109.452885, 26.861932 ], [ 109.467051, 26.83203 ], [ 109.47629, 26.829894 ], [ 109.486761, 26.759913 ], [ 109.447957, 26.759913 ], [ 109.407305, 26.719829 ], [ 109.35495, 26.693098 ], [ 109.283501, 26.698445 ], [ 109.306291, 26.661012 ], [ 109.334008, 26.646036 ], [ 109.35495, 26.658873 ], [ 109.390675, 26.598955 ], [ 109.407305, 26.533116 ], [ 109.381436, 26.518659 ], [ 109.385747, 26.493487 ], [ 109.362342, 26.472061 ], [ 109.38082, 26.454381 ], [ 109.319842, 26.418477 ], [ 109.29582, 26.350389 ], [ 109.271183, 26.327863 ], [ 109.285965, 26.295676 ], [ 109.325385, 26.29031 ], [ 109.351255, 26.264016 ], [ 109.369733, 26.277432 ], [ 109.442414, 26.289774 ], [ 109.467051, 26.313917 ], [ 109.439334, 26.238789 ], [ 109.47629, 26.148035 ], [ 109.513863, 26.128157 ], [ 109.502776, 26.096451 ], [ 109.449805, 26.101826 ], [ 109.452885, 26.055598 ], [ 109.48245, 26.029788 ], [ 109.462124, 25.995367 ], [ 109.408537, 25.967392 ], [ 109.435022, 25.93349 ], [ 109.396834, 25.900117 ], [ 109.359262, 25.836036 ], [ 109.339552, 25.83442 ], [ 109.327849, 25.76168 ], [ 109.340168, 25.731493 ], [ 109.296436, 25.71424 ], [ 109.207125, 25.740119 ], [ 109.206509, 25.788087 ], [ 109.147995, 25.741736 ], [ 109.13198, 25.762758 ], [ 109.143683, 25.795092 ], [ 109.095024, 25.80533 ], [ 109.077778, 25.776771 ], [ 109.048213, 25.790781 ], [ 108.989698, 25.778926 ], [ 108.999553, 25.765453 ], [ 108.963829, 25.732572 ], [ 108.940423, 25.740119 ], [ 108.896076, 25.71424 ], [ 108.900387, 25.682423 ], [ 108.953974, 25.686738 ], [ 108.953974, 25.686738 ], [ 109.007561, 25.734728 ], [ 109.043285, 25.738502 ], [ 109.07901, 25.72071 ], [ 109.075314, 25.693749 ], [ 109.030966, 25.629556 ], [ 109.051908, 25.566949 ], [ 109.088249, 25.550752 ], [ 109.024807, 25.51241 ], [ 108.949046, 25.557231 ], [ 108.8893, 25.543193 ], [ 108.890532, 25.556151 ], [ 108.826474, 25.550212 ], [ 108.814772, 25.526992 ], [ 108.781511, 25.554531 ], [ 108.799989, 25.576666 ], [ 108.783975, 25.628477 ], [ 108.724844, 25.634952 ], [ 108.68912, 25.623081 ], [ 108.68604, 25.587462 ], [ 108.660787, 25.584763 ], [ 108.658323, 25.550212 ], [ 108.68912, 25.533473 ], [ 108.634917, 25.520512 ], [ 108.6072, 25.491885 ], [ 108.600425, 25.432448 ], [ 108.62999, 25.335666 ], [ 108.625062, 25.308076 ], [ 108.589338, 25.335125 ], [ 108.585642, 25.365952 ], [ 108.471693, 25.458928 ], [ 108.418723, 25.443257 ], [ 108.400244, 25.491344 ], [ 108.359592, 25.513491 ], [ 108.348506, 25.536173 ], [ 108.308469, 25.525912 ], [ 108.280752, 25.48 ], [ 108.241332, 25.46217 ], [ 108.251803, 25.430286 ], [ 108.192673, 25.458928 ], [ 108.162492, 25.444878 ], [ 108.193289, 25.405421 ], [ 108.142782, 25.390825 ], [ 108.152021, 25.324306 ], [ 108.143398, 25.269658 ], [ 108.115065, 25.210112 ], [ 108.080572, 25.193867 ], [ 108.001732, 25.196574 ], [ 107.928435, 25.155954 ], [ 107.872384, 25.141327 ], [ 107.839124, 25.115861 ], [ 107.762747, 25.125073 ], [ 107.789233, 25.15487 ], [ 107.760283, 25.188451 ], [ 107.762131, 25.229061 ], [ 107.741805, 25.24043 ], [ 107.700537, 25.194408 ], [ 107.696226, 25.219858 ], [ 107.661733, 25.258833 ], [ 107.659885, 25.316192 ], [ 107.632168, 25.310241 ], [ 107.599523, 25.250714 ], [ 107.576734, 25.256668 ], [ 107.512676, 25.209029 ], [ 107.472024, 25.213902 ], [ 107.489886, 25.276693 ], [ 107.481263, 25.299961 ], [ 107.432604, 25.289139 ], [ 107.409198, 25.347024 ], [ 107.420901, 25.392987 ], [ 107.375937, 25.411908 ], [ 107.358691, 25.393528 ], [ 107.318039, 25.401637 ], [ 107.308184, 25.432988 ], [ 107.336517, 25.461089 ], [ 107.263836, 25.543193 ], [ 107.232423, 25.556691 ], [ 107.228728, 25.604733 ], [ 107.205322, 25.607971 ], [ 107.185612, 25.578825 ], [ 107.064272, 25.559391 ], [ 107.066736, 25.50917 ], [ 107.015613, 25.495666 ], [ 106.996519, 25.442716 ], [ 106.963874, 25.437852 ], [ 106.987896, 25.358922 ], [ 107.012533, 25.352973 ], [ 107.013765, 25.275611 ], [ 106.975577, 25.232851 ], [ 106.933077, 25.250714 ], [ 106.904128, 25.231768 ], [ 106.888113, 25.181953 ], [ 106.853005, 25.186827 ], [ 106.787715, 25.17112 ], [ 106.764926, 25.183036 ], [ 106.732281, 25.162454 ], [ 106.691013, 25.179245 ], [ 106.644817, 25.164621 ], [ 106.63989, 25.132658 ], [ 106.590615, 25.08768 ], [ 106.551195, 25.082802 ], [ 106.519782, 25.054072 ], [ 106.450181, 25.033468 ], [ 106.442173, 25.019369 ], [ 106.332536, 24.988454 ], [ 106.304819, 24.973807 ], [ 106.253696, 24.971094 ], [ 106.215508, 24.981944 ], [ 106.191486, 24.95319 ], [ 106.145291, 24.954275 ], [ 106.197645, 24.885889 ], [ 106.206269, 24.851139 ], [ 106.173008, 24.760417 ], [ 106.150218, 24.762591 ], [ 106.113878, 24.714216 ], [ 106.047356, 24.684312 ], [ 106.024566, 24.633186 ], [ 105.961741, 24.677786 ], [ 105.942031, 24.725088 ], [ 105.863806, 24.729437 ], [ 105.827466, 24.702799 ], [ 105.767104, 24.719109 ], [ 105.70551, 24.768569 ], [ 105.617431, 24.78161 ], [ 105.607576, 24.803885 ], [ 105.573083, 24.797366 ], [ 105.497322, 24.809318 ], [ 105.493011, 24.833217 ], [ 105.457286, 24.87123 ], [ 105.428337, 24.930941 ], [ 105.365511, 24.943423 ], [ 105.334099, 24.9266 ], [ 105.267577, 24.929313 ], [ 105.251563, 24.967296 ], [ 105.212758, 24.995505 ], [ 105.178266, 24.985199 ], [ 105.157324, 24.958616 ], [ 105.131454, 24.959701 ], [ 105.09573, 24.92877 ], [ 105.077868, 24.918459 ], [ 105.039064, 24.872859 ], [ 105.026745, 24.815836 ], [ 105.03352, 24.787586 ], [ 104.899245, 24.752809 ], [ 104.865985, 24.730524 ], [ 104.841963, 24.676155 ], [ 104.771746, 24.659839 ], [ 104.729246, 24.617953 ], [ 104.703377, 24.645698 ], [ 104.628848, 24.660927 ], [ 104.595587, 24.709323 ], [ 104.529682, 24.731611 ], [ 104.542616, 24.75607 ], [ 104.539537, 24.813663 ], [ 104.586964, 24.872859 ], [ 104.635623, 24.903803 ], [ 104.663957, 24.964584 ], [ 104.713232, 24.996048 ], [ 104.684898, 25.054072 ], [ 104.619609, 25.060577 ], [ 104.685514, 25.078466 ], [ 104.695369, 25.122364 ], [ 104.732326, 25.167871 ], [ 104.724319, 25.195491 ], [ 104.753884, 25.214443 ], [ 104.801927, 25.163537 ], [ 104.822869, 25.170037 ], [ 104.806854, 25.224189 ], [ 104.826565, 25.235558 ], [ 104.816094, 25.262622 ], [ 104.736021, 25.268034 ], [ 104.689826, 25.296173 ], [ 104.639935, 25.295632 ], [ 104.646094, 25.356759 ], [ 104.615913, 25.364871 ], [ 104.566638, 25.402719 ], [ 104.543232, 25.400556 ], [ 104.556783, 25.524832 ], [ 104.524138, 25.526992 ], [ 104.483486, 25.494585 ], [ 104.44961, 25.495126 ], [ 104.434827, 25.472436 ], [ 104.418813, 25.499447 ], [ 104.436059, 25.520512 ], [ 104.428668, 25.576126 ], [ 104.389248, 25.595558 ], [ 104.332581, 25.598796 ], [ 104.310407, 25.647901 ], [ 104.328886, 25.760602 ], [ 104.370769, 25.730415 ], [ 104.397871, 25.76168 ], [ 104.42374, 25.841961 ], [ 104.441602, 25.868889 ], [ 104.414501, 25.909807 ], [ 104.438523, 25.92757 ], [ 104.470552, 26.009352 ], [ 104.460081, 26.085702 ], [ 104.499501, 26.070651 ], [ 104.52845, 26.114186 ], [ 104.518595, 26.165762 ], [ 104.548776, 26.226979 ], [ 104.542616, 26.253282 ], [ 104.592508, 26.317672 ], [ 104.659645, 26.335373 ], [ 104.684283, 26.3772 ], [ 104.664572, 26.397572 ], [ 104.665804, 26.434019 ], [ 104.631928, 26.451702 ], [ 104.638703, 26.477954 ], [ 104.598667, 26.520801 ], [ 104.57095, 26.524549 ], [ 104.579573, 26.568449 ], [ 104.556783, 26.590393 ], [ 104.488414, 26.579689 ], [ 104.459465, 26.602701 ], [ 104.468088, 26.644431 ], [ 104.424356, 26.709137 ], [ 104.398487, 26.686147 ], [ 104.353523, 26.620893 ], [ 104.313487, 26.612867 ], [ 104.274683, 26.633733 ], [ 104.268524, 26.617683 ], [ 104.222328, 26.620358 ], [ 104.160734, 26.646571 ], [ 104.121314, 26.638012 ], [ 104.068343, 26.573266 ], [ 104.067727, 26.51491 ], [ 104.008597, 26.511697 ], [ 103.953163, 26.521336 ], [ 103.865699, 26.512232 ], [ 103.819504, 26.529903 ], [ 103.815808, 26.55239 ], [ 103.763453, 26.585041 ], [ 103.748671, 26.623568 ], [ 103.759142, 26.689355 ], [ 103.773308, 26.716621 ], [ 103.725265, 26.742812 ], [ 103.705555, 26.794642 ], [ 103.722185, 26.851253 ], [ 103.779468, 26.87421 ], [ 103.763453, 26.905702 ], [ 103.775156, 26.951056 ], [ 103.753598, 26.963858 ], [ 103.73204, 27.018785 ], [ 103.704939, 27.049171 ], [ 103.675374, 27.051836 ], [ 103.623019, 27.007056 ], [ 103.623635, 27.035312 ], [ 103.601461, 27.061962 ], [ 103.614396, 27.079548 ], [ 103.659975, 27.065692 ], [ 103.652584, 27.092868 ], [ 103.620555, 27.096598 ], [ 103.63349, 27.12057 ], [ 103.696316, 27.126429 ], [ 103.748671, 27.210021 ], [ 103.801641, 27.250464 ], [ 103.80041, 27.26536 ], [ 103.865699, 27.28185 ], [ 103.874322, 27.331304 ], [ 103.903271, 27.347785 ], [ 103.905119, 27.38552 ], [ 103.932221, 27.443958 ], [ 103.956242, 27.425367 ], [ 104.015372, 27.429086 ], [ 104.01722, 27.383926 ], [ 104.084358, 27.330773 ], [ 104.113923, 27.338216 ], [ 104.173053, 27.263232 ], [ 104.210625, 27.297273 ], [ 104.248813, 27.291955 ], [ 104.247582, 27.336621 ], [ 104.295625, 27.37436 ], [ 104.30856, 27.407305 ], [ 104.363378, 27.467855 ], [ 104.467472, 27.414211 ], [ 104.497037, 27.414743 ], [ 104.539537, 27.327583 ], [ 104.570334, 27.331836 ], [ 104.611602, 27.306846 ], [ 104.7545, 27.345658 ], [ 104.77113, 27.317481 ], [ 104.824717, 27.3531 ], [ 104.856746, 27.332368 ], [ 104.851818, 27.299401 ], [ 104.871528, 27.290891 ], [ 104.913412, 27.327051 ], [ 105.01073, 27.379143 ], [ 105.068013, 27.418461 ], [ 105.120984, 27.418461 ], [ 105.184425, 27.392959 ], [ 105.182577, 27.367451 ], [ 105.233084, 27.436522 ], [ 105.234316, 27.489093 ], [ 105.260186, 27.514573 ], [ 105.232469, 27.546945 ], [ 105.25649, 27.582491 ], [ 105.304533, 27.611661 ], [ 105.29591, 27.631811 ], [ 105.308229, 27.704955 ], [ 105.353809, 27.748924 ], [ 105.44004, 27.775402 ], [ 105.508409, 27.769048 ], [ 105.560148, 27.71979 ], [ 105.605112, 27.715552 ], [ 105.62359, 27.666269 ], [ 105.664242, 27.683759 ], [ 105.720292, 27.683759 ], [ 105.722756, 27.706015 ], [ 105.76772, 27.7182 ], [ 105.848408, 27.707074 ], [ 105.868118, 27.732504 ], [ 105.922937, 27.746805 ], [ 105.92848, 27.729855 ], [ 105.985146, 27.749983 ], [ 106.023335, 27.746805 ], [ 106.063987, 27.776991 ], [ 106.120653, 27.779638 ], [ 106.193334, 27.75422 ], [ 106.242609, 27.767459 ], [ 106.306667, 27.808756 ], [ 106.337464, 27.859033 ], [ 106.325145, 27.898708 ], [ 106.304819, 27.899237 ], [ 106.307899, 27.936782 ], [ 106.328225, 27.952643 ], [ 106.286341, 28.007079 ], [ 106.246305, 28.011835 ], [ 106.266631, 28.066769 ], [ 106.206885, 28.134343 ], [ 106.145291, 28.162837 ], [ 106.093552, 28.162837 ], [ 105.975907, 28.107952 ], [ 105.943878, 28.143314 ], [ 105.895219, 28.119565 ], [ 105.860727, 28.159672 ], [ 105.889676, 28.237732 ], [ 105.848408, 28.255656 ], [ 105.824386, 28.306251 ], [ 105.78743, 28.335753 ], [ 105.76464, 28.308359 ], [ 105.76464, 28.308359 ], [ 105.737539, 28.30309 ], [ 105.730147, 28.271997 ], [ 105.68888, 28.284119 ], [ 105.639604, 28.324164 ], [ 105.655003, 28.362615 ], [ 105.643916, 28.431053 ], [ 105.612503, 28.438947 ], [ 105.62359, 28.517854 ], [ 105.68272, 28.534154 ], [ 105.693191, 28.58882 ], [ 105.712901, 28.586718 ], [ 105.74493, 28.616668 ], [ 105.757249, 28.590397 ], [ 105.78435, 28.610889 ], [ 105.808372, 28.599855 ], [ 105.884748, 28.595126 ], [ 105.889676, 28.670765 ], [ 105.937719, 28.686517 ], [ 105.966668, 28.761041 ], [ 106.001161, 28.743727 ], [ 106.030726, 28.694917 ], [ 106.085544, 28.681792 ], [ 106.103407, 28.636104 ], [ 106.14837, 28.642932 ], [ 106.17116, 28.629275 ], [ 106.184711, 28.58882 ], [ 106.254928, 28.539412 ], [ 106.2925, 28.537309 ], [ 106.304819, 28.505233 ], [ 106.349167, 28.473674 ], [ 106.379348, 28.479986 ], [ 106.37442, 28.525742 ], [ 106.403369, 28.569901 ], [ 106.477282, 28.530474 ], [ 106.504999, 28.544669 ], [ 106.466811, 28.586193 ], [ 106.49268, 28.591448 ], [ 106.502535, 28.661313 ], [ 106.528405, 28.677591 ], [ 106.492064, 28.742153 ], [ 106.461883, 28.761041 ], [ 106.45326, 28.817162 ], [ 106.474202, 28.832891 ], [ 106.561666, 28.756319 ], [ 106.56105, 28.719062 ], [ 106.587535, 28.691767 ], [ 106.6171, 28.691242 ], [ 106.617716, 28.66709 ], [ 106.651593, 28.649235 ], [ 106.618332, 28.645033 ], [ 106.63681, 28.622972 ], [ 106.606629, 28.593024 ], [ 106.615252, 28.549401 ], [ 106.567825, 28.523638 ], [ 106.564745, 28.485247 ], [ 106.632499, 28.503655 ], [ 106.697788, 28.47683 ], [ 106.708259, 28.450524 ], [ 106.747063, 28.467361 ], [ 106.726121, 28.51838 ], [ 106.73844, 28.554657 ], [ 106.77786, 28.563068 ], [ 106.756918, 28.607211 ], [ 106.784636, 28.626649 ], [ 106.807425, 28.589346 ], [ 106.830831, 28.623497 ], [ 106.866556, 28.624548 ], [ 106.889345, 28.695966 ], [ 106.86594, 28.690192 ], [ 106.824056, 28.756319 ], [ 106.845614, 28.780975 ], [ 106.872099, 28.777304 ], [ 106.923222, 28.809821 ], [ 106.951555, 28.766812 ], [ 106.988512, 28.776254 ], [ 106.983584, 28.851239 ], [ 107.019308, 28.861722 ], [ 107.016229, 28.882685 ], [ 107.14188, 28.887925 ], [ 107.206554, 28.868535 ], [ 107.194851, 28.838134 ], [ 107.227496, 28.836037 ], [ 107.210866, 28.817686 ], [ 107.219489, 28.772582 ], [ 107.24659, 28.76209 ], [ 107.261373, 28.792514 ], [ 107.327894, 28.810869 ], [ 107.339597, 28.845997 ], [ 107.383945, 28.848618 ], [ 107.41351, 28.911502 ], [ 107.441227, 28.943977 ], [ 107.412894, 28.960211 ], [ 107.396879, 28.993718 ], [ 107.364235, 29.00942 ], [ 107.395647, 29.041341 ], [ 107.369778, 29.091558 ], [ 107.412278, 29.094696 ], [ 107.427676, 29.128682 ], [ 107.408582, 29.138091 ], [ 107.401807, 29.184603 ], [ 107.441227, 29.203934 ], [ 107.486806, 29.174153 ], [ 107.570574, 29.218037 ], [ 107.589052, 29.150113 ], [ 107.605683, 29.164747 ], [ 107.659885, 29.162656 ], [ 107.700537, 29.141228 ], [ 107.749197, 29.199754 ], [ 107.810791, 29.139137 ], [ 107.784921, 29.048143 ], [ 107.823725, 29.034016 ], [ 107.810175, 28.984295 ], [ 107.867457, 28.960211 ], [ 107.882855, 29.00628 ], [ 107.908725, 29.007327 ], [ 107.925971, 29.032446 ], [ 108.026369, 29.039772 ], [ 108.070717, 29.086328 ], [ 108.150173, 29.053375 ], [ 108.193289, 29.072207 ], [ 108.256115, 29.040295 ], [ 108.277673, 29.091558 ], [ 108.306622, 29.079006 ], [ 108.297999, 29.045527 ], [ 108.319556, 28.961258 ], [ 108.345426, 28.943453 ], [ 108.357745, 28.893165 ], [ 108.346658, 28.859625 ], [ 108.352817, 28.815589 ], [ 108.386078, 28.803003 ], [ 108.385462, 28.772058 ], [ 108.347274, 28.736381 ], [ 108.332491, 28.679166 ], [ 108.439049, 28.634003 ], [ 108.501258, 28.626649 ], [ 108.50249, 28.63768 ], [ 108.575787, 28.659738 ], [ 108.636149, 28.621396 ], [ 108.604736, 28.590922 ], [ 108.610896, 28.539412 ], [ 108.573939, 28.531 ], [ 108.586874, 28.463678 ], [ 108.609664, 28.43579 ], [ 108.609048, 28.407368 ], [ 108.576403, 28.38631 ], [ 108.580099, 28.343128 ], [ 108.611512, 28.324691 ], [ 108.667562, 28.334173 ], [ 108.656475, 28.359981 ], [ 108.697127, 28.401051 ], [ 108.688504, 28.422106 ], [ 108.640461, 28.456838 ], [ 108.657091, 28.47683 ], [ 108.700207, 28.48209 ], [ 108.709446, 28.501026 ], [ 108.746402, 28.45105 ], [ 108.780279, 28.42579 ], [ 108.759953, 28.389995 ], [ 108.783359, 28.380518 ], [ 108.761801, 28.304143 ], [ 108.726692, 28.282011 ], [ 108.738395, 28.228241 ], [ 108.772888, 28.212949 ], [ 108.821547, 28.245113 ], [ 108.855424, 28.199764 ], [ 108.89546, 28.219804 ], [ 108.923793, 28.217167 ], [ 108.929952, 28.19027 ], [ 109.005713, 28.162837 ], [ 109.026655, 28.220331 ], [ 109.086401, 28.184467 ], [ 109.101799, 28.202401 ], [ 109.081473, 28.247749 ], [ 109.117198, 28.277795 ], [ 109.152306, 28.349975 ], [ 109.153538, 28.417369 ], [ 109.191726, 28.471043 ], [ 109.23361, 28.474726 ], [ 109.274262, 28.494714 ] ] ], [ [ [ 109.47629, 26.829894 ], [ 109.467051, 26.83203 ], [ 109.452885, 26.861932 ], [ 109.486761, 26.895562 ], [ 109.509551, 26.877947 ], [ 109.513247, 26.84004 ], [ 109.497232, 26.815474 ], [ 109.522486, 26.749226 ], [ 109.52187, 26.749226 ], [ 109.486761, 26.759913 ], [ 109.47629, 26.829894 ] ] ], [ [ [ 109.528645, 26.743881 ], [ 109.554515, 26.73533 ], [ 109.597015, 26.756173 ], [ 109.568065, 26.726243 ], [ 109.528645, 26.743881 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "530000", "name": "云南省", "center": [ 102.712251, 25.040609 ], "centroid": [ 101.485106, 25.008644 ], "childrenNum": 16, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 24, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 105.308229, 27.704955 ], [ 105.29591, 27.631811 ], [ 105.304533, 27.611661 ], [ 105.25649, 27.582491 ], [ 105.232469, 27.546945 ], [ 105.260186, 27.514573 ], [ 105.234316, 27.489093 ], [ 105.233084, 27.436522 ], [ 105.182577, 27.367451 ], [ 105.184425, 27.392959 ], [ 105.120984, 27.418461 ], [ 105.068013, 27.418461 ], [ 105.01073, 27.379143 ], [ 104.913412, 27.327051 ], [ 104.871528, 27.290891 ], [ 104.851818, 27.299401 ], [ 104.856746, 27.332368 ], [ 104.824717, 27.3531 ], [ 104.77113, 27.317481 ], [ 104.7545, 27.345658 ], [ 104.611602, 27.306846 ], [ 104.570334, 27.331836 ], [ 104.539537, 27.327583 ], [ 104.497037, 27.414743 ], [ 104.467472, 27.414211 ], [ 104.363378, 27.467855 ], [ 104.30856, 27.407305 ], [ 104.295625, 27.37436 ], [ 104.247582, 27.336621 ], [ 104.248813, 27.291955 ], [ 104.210625, 27.297273 ], [ 104.173053, 27.263232 ], [ 104.113923, 27.338216 ], [ 104.084358, 27.330773 ], [ 104.01722, 27.383926 ], [ 104.015372, 27.429086 ], [ 103.956242, 27.425367 ], [ 103.932221, 27.443958 ], [ 103.905119, 27.38552 ], [ 103.903271, 27.347785 ], [ 103.874322, 27.331304 ], [ 103.865699, 27.28185 ], [ 103.80041, 27.26536 ], [ 103.801641, 27.250464 ], [ 103.748671, 27.210021 ], [ 103.696316, 27.126429 ], [ 103.63349, 27.12057 ], [ 103.620555, 27.096598 ], [ 103.652584, 27.092868 ], [ 103.659975, 27.065692 ], [ 103.614396, 27.079548 ], [ 103.601461, 27.061962 ], [ 103.623635, 27.035312 ], [ 103.623019, 27.007056 ], [ 103.675374, 27.051836 ], [ 103.704939, 27.049171 ], [ 103.73204, 27.018785 ], [ 103.753598, 26.963858 ], [ 103.775156, 26.951056 ], [ 103.763453, 26.905702 ], [ 103.779468, 26.87421 ], [ 103.722185, 26.851253 ], [ 103.705555, 26.794642 ], [ 103.725265, 26.742812 ], [ 103.773308, 26.716621 ], [ 103.759142, 26.689355 ], [ 103.748671, 26.623568 ], [ 103.763453, 26.585041 ], [ 103.815808, 26.55239 ], [ 103.819504, 26.529903 ], [ 103.865699, 26.512232 ], [ 103.953163, 26.521336 ], [ 104.008597, 26.511697 ], [ 104.067727, 26.51491 ], [ 104.068343, 26.573266 ], [ 104.121314, 26.638012 ], [ 104.160734, 26.646571 ], [ 104.222328, 26.620358 ], [ 104.268524, 26.617683 ], [ 104.274683, 26.633733 ], [ 104.313487, 26.612867 ], [ 104.353523, 26.620893 ], [ 104.398487, 26.686147 ], [ 104.424356, 26.709137 ], [ 104.468088, 26.644431 ], [ 104.459465, 26.602701 ], [ 104.488414, 26.579689 ], [ 104.556783, 26.590393 ], [ 104.579573, 26.568449 ], [ 104.57095, 26.524549 ], [ 104.598667, 26.520801 ], [ 104.638703, 26.477954 ], [ 104.631928, 26.451702 ], [ 104.665804, 26.434019 ], [ 104.664572, 26.397572 ], [ 104.684283, 26.3772 ], [ 104.659645, 26.335373 ], [ 104.592508, 26.317672 ], [ 104.542616, 26.253282 ], [ 104.548776, 26.226979 ], [ 104.518595, 26.165762 ], [ 104.52845, 26.114186 ], [ 104.499501, 26.070651 ], [ 104.460081, 26.085702 ], [ 104.470552, 26.009352 ], [ 104.438523, 25.92757 ], [ 104.414501, 25.909807 ], [ 104.441602, 25.868889 ], [ 104.42374, 25.841961 ], [ 104.397871, 25.76168 ], [ 104.370769, 25.730415 ], [ 104.328886, 25.760602 ], [ 104.310407, 25.647901 ], [ 104.332581, 25.598796 ], [ 104.389248, 25.595558 ], [ 104.428668, 25.576126 ], [ 104.436059, 25.520512 ], [ 104.418813, 25.499447 ], [ 104.434827, 25.472436 ], [ 104.44961, 25.495126 ], [ 104.483486, 25.494585 ], [ 104.524138, 25.526992 ], [ 104.556783, 25.524832 ], [ 104.543232, 25.400556 ], [ 104.566638, 25.402719 ], [ 104.615913, 25.364871 ], [ 104.646094, 25.356759 ], [ 104.639935, 25.295632 ], [ 104.689826, 25.296173 ], [ 104.736021, 25.268034 ], [ 104.816094, 25.262622 ], [ 104.826565, 25.235558 ], [ 104.806854, 25.224189 ], [ 104.822869, 25.170037 ], [ 104.801927, 25.163537 ], [ 104.753884, 25.214443 ], [ 104.724319, 25.195491 ], [ 104.732326, 25.167871 ], [ 104.695369, 25.122364 ], [ 104.685514, 25.078466 ], [ 104.619609, 25.060577 ], [ 104.684898, 25.054072 ], [ 104.713232, 24.996048 ], [ 104.663957, 24.964584 ], [ 104.635623, 24.903803 ], [ 104.586964, 24.872859 ], [ 104.539537, 24.813663 ], [ 104.542616, 24.75607 ], [ 104.529682, 24.731611 ], [ 104.489646, 24.653313 ], [ 104.520443, 24.535228 ], [ 104.550008, 24.518894 ], [ 104.575877, 24.424661 ], [ 104.616529, 24.421937 ], [ 104.63008, 24.397958 ], [ 104.610986, 24.377246 ], [ 104.641783, 24.367979 ], [ 104.70892, 24.321087 ], [ 104.721239, 24.340173 ], [ 104.703377, 24.419757 ], [ 104.715695, 24.441552 ], [ 104.74834, 24.435559 ], [ 104.765587, 24.45953 ], [ 104.784681, 24.443732 ], [ 104.83642, 24.446456 ], [ 104.914028, 24.426296 ], [ 104.930042, 24.411038 ], [ 104.979933, 24.412673 ], [ 105.042759, 24.442097 ], [ 105.106817, 24.414853 ], [ 105.111744, 24.37234 ], [ 105.138846, 24.376701 ], [ 105.188121, 24.347261 ], [ 105.196744, 24.326541 ], [ 105.164715, 24.288362 ], [ 105.215222, 24.214699 ], [ 105.24294, 24.208695 ], [ 105.229389, 24.165567 ], [ 105.182577, 24.167205 ], [ 105.20044, 24.105491 ], [ 105.260186, 24.061236 ], [ 105.292831, 24.074896 ], [ 105.273121, 24.092927 ], [ 105.320548, 24.116416 ], [ 105.334099, 24.094566 ], [ 105.395692, 24.065607 ], [ 105.406163, 24.043748 ], [ 105.493011, 24.016965 ], [ 105.533663, 24.130071 ], [ 105.594641, 24.137718 ], [ 105.628518, 24.126794 ], [ 105.649459, 24.032816 ], [ 105.704278, 24.0667 ], [ 105.739387, 24.059596 ], [ 105.765256, 24.073804 ], [ 105.802212, 24.051945 ], [ 105.796669, 24.023524 ], [ 105.841633, 24.03063 ], [ 105.859495, 24.056864 ], [ 105.89214, 24.040468 ], [ 105.908154, 24.069432 ], [ 105.901995, 24.099482 ], [ 105.919241, 24.122425 ], [ 105.963589, 24.110954 ], [ 105.998081, 24.120786 ], [ 106.011632, 24.099482 ], [ 106.04982, 24.089649 ], [ 106.053516, 24.051399 ], [ 106.096631, 24.018058 ], [ 106.091088, 23.998924 ], [ 106.128044, 23.956819 ], [ 106.157609, 23.891174 ], [ 106.192718, 23.879135 ], [ 106.173008, 23.861622 ], [ 106.192102, 23.824947 ], [ 106.136667, 23.795381 ], [ 106.157609, 23.724175 ], [ 106.149602, 23.665538 ], [ 106.120653, 23.605229 ], [ 106.141595, 23.569579 ], [ 106.08616, 23.524043 ], [ 106.071994, 23.495506 ], [ 106.039965, 23.484529 ], [ 105.999929, 23.447748 ], [ 105.986378, 23.489469 ], [ 105.935871, 23.508678 ], [ 105.913081, 23.499348 ], [ 105.89214, 23.52514 ], [ 105.852103, 23.526786 ], [ 105.815763, 23.507031 ], [ 105.805908, 23.467512 ], [ 105.758481, 23.459826 ], [ 105.699966, 23.40162 ], [ 105.637757, 23.404366 ], [ 105.694423, 23.363168 ], [ 105.699966, 23.327453 ], [ 105.649459, 23.346136 ], [ 105.593409, 23.312614 ], [ 105.560148, 23.257093 ], [ 105.526272, 23.234548 ], [ 105.542902, 23.184495 ], [ 105.50225, 23.202648 ], [ 105.445584, 23.292827 ], [ 105.416018, 23.283482 ], [ 105.372903, 23.317561 ], [ 105.353809, 23.362069 ], [ 105.325475, 23.390086 ], [ 105.260186, 23.31811 ], [ 105.238012, 23.26424 ], [ 105.181962, 23.279084 ], [ 105.122215, 23.247745 ], [ 105.093266, 23.260942 ], [ 104.958991, 23.188896 ], [ 104.949136, 23.152033 ], [ 104.912796, 23.175693 ], [ 104.882615, 23.163589 ], [ 104.874608, 23.123417 ], [ 104.804391, 23.110207 ], [ 104.821021, 23.032022 ], [ 104.860441, 22.970874 ], [ 104.846275, 22.926235 ], [ 104.772362, 22.893711 ], [ 104.760659, 22.862282 ], [ 104.732942, 22.852356 ], [ 104.737869, 22.825882 ], [ 104.674428, 22.817056 ], [ 104.596203, 22.846289 ], [ 104.527834, 22.814298 ], [ 104.498885, 22.774574 ], [ 104.422508, 22.734838 ], [ 104.375697, 22.690122 ], [ 104.323342, 22.728767 ], [ 104.272835, 22.73815 ], [ 104.256821, 22.77347 ], [ 104.274067, 22.828088 ], [ 104.261748, 22.841877 ], [ 104.224176, 22.826434 ], [ 104.117618, 22.808781 ], [ 104.089901, 22.768504 ], [ 104.045553, 22.728215 ], [ 104.04309, 22.67687 ], [ 104.022148, 22.593463 ], [ 104.009213, 22.575228 ], [ 104.009213, 22.517745 ], [ 103.964865, 22.502265 ], [ 103.894032, 22.564728 ], [ 103.875554, 22.565833 ], [ 103.863851, 22.584069 ], [ 103.825047, 22.615562 ], [ 103.766533, 22.688465 ], [ 103.669215, 22.766297 ], [ 103.642113, 22.794989 ], [ 103.567585, 22.701164 ], [ 103.580519, 22.66693 ], [ 103.529396, 22.59291 ], [ 103.50907, 22.601198 ], [ 103.457947, 22.658646 ], [ 103.436389, 22.6973 ], [ 103.441317, 22.753052 ], [ 103.375411, 22.794989 ], [ 103.323057, 22.807678 ], [ 103.321209, 22.777885 ], [ 103.288564, 22.732078 ], [ 103.283021, 22.678526 ], [ 103.220195, 22.643734 ], [ 103.195557, 22.648153 ], [ 103.161065, 22.590147 ], [ 103.183238, 22.558649 ], [ 103.119181, 22.518298 ], [ 103.085304, 22.509452 ], [ 103.071753, 22.445304 ], [ 103.030485, 22.441432 ], [ 102.986754, 22.477935 ], [ 102.930703, 22.482359 ], [ 102.892515, 22.533223 ], [ 102.880196, 22.586832 ], [ 102.82353, 22.623296 ], [ 102.80074, 22.620534 ], [ 102.688639, 22.70006 ], [ 102.657226, 22.687913 ], [ 102.607335, 22.730975 ], [ 102.569763, 22.701164 ], [ 102.551285, 22.743669 ], [ 102.498314, 22.777885 ], [ 102.45951, 22.762986 ], [ 102.43672, 22.699508 ], [ 102.384365, 22.679631 ], [ 102.404691, 22.629925 ], [ 102.356648, 22.563623 ], [ 102.322771, 22.554227 ], [ 102.25625, 22.457473 ], [ 102.270416, 22.419858 ], [ 102.179257, 22.430369 ], [ 102.145381, 22.397727 ], [ 102.131214, 22.430922 ], [ 102.046214, 22.458026 ], [ 101.978461, 22.427603 ], [ 101.907628, 22.437007 ], [ 101.901469, 22.384447 ], [ 101.862665, 22.389427 ], [ 101.823244, 22.42705 ], [ 101.824476, 22.45692 ], [ 101.774585, 22.506135 ], [ 101.715455, 22.477935 ], [ 101.672339, 22.47517 ], [ 101.648318, 22.400494 ], [ 101.671723, 22.372826 ], [ 101.625528, 22.28259 ], [ 101.56455, 22.269299 ], [ 101.547304, 22.238282 ], [ 101.596579, 22.161262 ], [ 101.602738, 22.131883 ], [ 101.573789, 22.115251 ], [ 101.626144, 22.005986 ], [ 101.606434, 21.967695 ], [ 101.666796, 21.934391 ], [ 101.701288, 21.938832 ], [ 101.700057, 21.897191 ], [ 101.735165, 21.875534 ], [ 101.740093, 21.845541 ], [ 101.771506, 21.833319 ], [ 101.747484, 21.729953 ], [ 101.76781, 21.716054 ], [ 101.780129, 21.640975 ], [ 101.807846, 21.644313 ], [ 101.828788, 21.617054 ], [ 101.804766, 21.577546 ], [ 101.754875, 21.58478 ], [ 101.755491, 21.538027 ], [ 101.772737, 21.512975 ], [ 101.741324, 21.482906 ], [ 101.749948, 21.409379 ], [ 101.730238, 21.336929 ], [ 101.745636, 21.297345 ], [ 101.791832, 21.285636 ], [ 101.833715, 21.252731 ], [ 101.834331, 21.204756 ], [ 101.794911, 21.208104 ], [ 101.76473, 21.147835 ], [ 101.703136, 21.14616 ], [ 101.672339, 21.194713 ], [ 101.605818, 21.172392 ], [ 101.588572, 21.191365 ], [ 101.601506, 21.233208 ], [ 101.532521, 21.252174 ], [ 101.439514, 21.227072 ], [ 101.387775, 21.225956 ], [ 101.290457, 21.17853 ], [ 101.222088, 21.234324 ], [ 101.246725, 21.275598 ], [ 101.244877, 21.302364 ], [ 101.183899, 21.334699 ], [ 101.142631, 21.409379 ], [ 101.194986, 21.424979 ], [ 101.193138, 21.473996 ], [ 101.225167, 21.499055 ], [ 101.210385, 21.509077 ], [ 101.209153, 21.55751 ], [ 101.146943, 21.560293 ], [ 101.169117, 21.590345 ], [ 101.153102, 21.669343 ], [ 101.116762, 21.691032 ], [ 101.111835, 21.746074 ], [ 101.123537, 21.771642 ], [ 101.089661, 21.773865 ], [ 101.015132, 21.707157 ], [ 100.940603, 21.697149 ], [ 100.870386, 21.67268 ], [ 100.847597, 21.634856 ], [ 100.804481, 21.609821 ], [ 100.789082, 21.570867 ], [ 100.753358, 21.555283 ], [ 100.730568, 21.518542 ], [ 100.691764, 21.510748 ], [ 100.579047, 21.451717 ], [ 100.526692, 21.471211 ], [ 100.48296, 21.458958 ], [ 100.437381, 21.533017 ], [ 100.350534, 21.52912 ], [ 100.298795, 21.477894 ], [ 100.235353, 21.466756 ], [ 100.206404, 21.509634 ], [ 100.180534, 21.514088 ], [ 100.168831, 21.482906 ], [ 100.131259, 21.504066 ], [ 100.123252, 21.565302 ], [ 100.107853, 21.585337 ], [ 100.169447, 21.663225 ], [ 100.131875, 21.699929 ], [ 100.094303, 21.702709 ], [ 100.049339, 21.669899 ], [ 99.991441, 21.703821 ], [ 99.944014, 21.821097 ], [ 99.960028, 21.907186 ], [ 99.982202, 21.919401 ], [ 100.000064, 21.973245 ], [ 99.965571, 22.014309 ], [ 99.972347, 22.053141 ], [ 99.871333, 22.067007 ], [ 99.870101, 22.029288 ], [ 99.762927, 22.068117 ], [ 99.696406, 22.067562 ], [ 99.648979, 22.100835 ], [ 99.581841, 22.103053 ], [ 99.578762, 22.098617 ], [ 99.562747, 22.113034 ], [ 99.516552, 22.099726 ], [ 99.486987, 22.128557 ], [ 99.400139, 22.100281 ], [ 99.35456, 22.095845 ], [ 99.294814, 22.109152 ], [ 99.219669, 22.110816 ], [ 99.156227, 22.159599 ], [ 99.188256, 22.162924 ], [ 99.175321, 22.185647 ], [ 99.207966, 22.232188 ], [ 99.235683, 22.250468 ], [ 99.233836, 22.296434 ], [ 99.278183, 22.34626 ], [ 99.251698, 22.393301 ], [ 99.297277, 22.41156 ], [ 99.382277, 22.493418 ], [ 99.359487, 22.535435 ], [ 99.385973, 22.57136 ], [ 99.339777, 22.708894 ], [ 99.31514, 22.737598 ], [ 99.326842, 22.751396 ], [ 99.385357, 22.761882 ], [ 99.401371, 22.826434 ], [ 99.462965, 22.844635 ], [ 99.43648, 22.913557 ], [ 99.446951, 22.934503 ], [ 99.531334, 22.897019 ], [ 99.563363, 22.925684 ], [ 99.533798, 22.961507 ], [ 99.517168, 23.006685 ], [ 99.528255, 23.065614 ], [ 99.477747, 23.083233 ], [ 99.440791, 23.079379 ], [ 99.380429, 23.099748 ], [ 99.3484, 23.12892 ], [ 99.281879, 23.101399 ], [ 99.255393, 23.077727 ], [ 99.187024, 23.100299 ], [ 99.106336, 23.086536 ], [ 99.048438, 23.11461 ], [ 99.057677, 23.164689 ], [ 99.002242, 23.160287 ], [ 98.906772, 23.185595 ], [ 98.889525, 23.209249 ], [ 98.928946, 23.26589 ], [ 98.936953, 23.309866 ], [ 98.906772, 23.331849 ], [ 98.872895, 23.329651 ], [ 98.920938, 23.360971 ], [ 98.912315, 23.426333 ], [ 98.874743, 23.483431 ], [ 98.826084, 23.470257 ], [ 98.80391, 23.540504 ], [ 98.844562, 23.578904 ], [ 98.882134, 23.595358 ], [ 98.882134, 23.620035 ], [ 98.847026, 23.632097 ], [ 98.835939, 23.683625 ], [ 98.811917, 23.703354 ], [ 98.824236, 23.727462 ], [ 98.784816, 23.781691 ], [ 98.696121, 23.784429 ], [ 98.669019, 23.800857 ], [ 98.701664, 23.834254 ], [ 98.68565, 23.90157 ], [ 98.701048, 23.946427 ], [ 98.673331, 23.960647 ], [ 98.701048, 23.981427 ], [ 98.727533, 23.970491 ], [ 98.773729, 24.022431 ], [ 98.807606, 24.025164 ], [ 98.895069, 24.098936 ], [ 98.876591, 24.15137 ], [ 98.841482, 24.126794 ], [ 98.818692, 24.133348 ], [ 98.71891, 24.127887 ], [ 98.681954, 24.100029 ], [ 98.646229, 24.106038 ], [ 98.593875, 24.08036 ], [ 98.547063, 24.128433 ], [ 98.487933, 24.123517 ], [ 98.48239, 24.122425 ], [ 98.37768, 24.114232 ], [ 98.343187, 24.098936 ], [ 98.219999, 24.113685 ], [ 98.19721, 24.09839 ], [ 98.132536, 24.09238 ], [ 98.125761, 24.092927 ], [ 98.123297, 24.092927 ], [ 98.096196, 24.08637 ], [ 98.091268, 24.085824 ], [ 97.995182, 24.04648 ], [ 97.984095, 24.031177 ], [ 97.902175, 24.014231 ], [ 97.896015, 23.974319 ], [ 97.863371, 23.978693 ], [ 97.8104, 23.943146 ], [ 97.795617, 23.951897 ], [ 97.763588, 23.907041 ], [ 97.72848, 23.895551 ], [ 97.718009, 23.867643 ], [ 97.684132, 23.876946 ], [ 97.647176, 23.840823 ], [ 97.640401, 23.866001 ], [ 97.633009, 23.879682 ], [ 97.5283, 23.926736 ], [ 97.529531, 23.943146 ], [ 97.572647, 23.983068 ], [ 97.628698, 24.004938 ], [ 97.637321, 24.04812 ], [ 97.730944, 24.113685 ], [ 97.753733, 24.168843 ], [ 97.72848, 24.183585 ], [ 97.729712, 24.227252 ], [ 97.767284, 24.258357 ], [ 97.721089, 24.295999 ], [ 97.665038, 24.296544 ], [ 97.662574, 24.339083 ], [ 97.716161, 24.358711 ], [ 97.679821, 24.401228 ], [ 97.669966, 24.452993 ], [ 97.588662, 24.435559 ], [ 97.530147, 24.443187 ], [ 97.554785, 24.490577 ], [ 97.570799, 24.602719 ], [ 97.569567, 24.708236 ], [ 97.547394, 24.739221 ], [ 97.569567, 24.765852 ], [ 97.652103, 24.790846 ], [ 97.680437, 24.827243 ], [ 97.765436, 24.823984 ], [ 97.797465, 24.845709 ], [ 97.785762, 24.876117 ], [ 97.729712, 24.908689 ], [ 97.716777, 24.978147 ], [ 97.727864, 25.042686 ], [ 97.719857, 25.080634 ], [ 97.743262, 25.078466 ], [ 97.796233, 25.155954 ], [ 97.839349, 25.27074 ], [ 97.875689, 25.25721 ], [ 97.904023, 25.216609 ], [ 97.940363, 25.214985 ], [ 98.0075, 25.279399 ], [ 98.006884, 25.298338 ], [ 98.06971, 25.311864 ], [ 98.099891, 25.354055 ], [ 98.101123, 25.388662 ], [ 98.137464, 25.381633 ], [ 98.15779, 25.457307 ], [ 98.131304, 25.51025 ], [ 98.163949, 25.524292 ], [ 98.189818, 25.569108 ], [ 98.170724, 25.620383 ], [ 98.247717, 25.607971 ], [ 98.314854, 25.543193 ], [ 98.326557, 25.566409 ], [ 98.402317, 25.593939 ], [ 98.409709, 25.664084 ], [ 98.457752, 25.682963 ], [ 98.461448, 25.735267 ], [ 98.476846, 25.77731 ], [ 98.529201, 25.840884 ], [ 98.553839, 25.845731 ], [ 98.640686, 25.798864 ], [ 98.677642, 25.816105 ], [ 98.705976, 25.855426 ], [ 98.686881, 25.925955 ], [ 98.637606, 25.971696 ], [ 98.614201, 25.968468 ], [ 98.602498, 26.054523 ], [ 98.575396, 26.118485 ], [ 98.632679, 26.145887 ], [ 98.656084, 26.139977 ], [ 98.661012, 26.087852 ], [ 98.720142, 26.127082 ], [ 98.712751, 26.156093 ], [ 98.735541, 26.185097 ], [ 98.713367, 26.231274 ], [ 98.672715, 26.239863 ], [ 98.681338, 26.308016 ], [ 98.733693, 26.350926 ], [ 98.750323, 26.424372 ], [ 98.741084, 26.432947 ], [ 98.757098, 26.491881 ], [ 98.753403, 26.559349 ], [ 98.773113, 26.578083 ], [ 98.781736, 26.620893 ], [ 98.762642, 26.660478 ], [ 98.770033, 26.690424 ], [ 98.746012, 26.696841 ], [ 98.762026, 26.798916 ], [ 98.730613, 26.851253 ], [ 98.757098, 26.877947 ], [ 98.732461, 27.002257 ], [ 98.762642, 27.018252 ], [ 98.765722, 27.05077 ], [ 98.712751, 27.075817 ], [ 98.713983, 27.139744 ], [ 98.696121, 27.211086 ], [ 98.723222, 27.221198 ], [ 98.717062, 27.271211 ], [ 98.734925, 27.287168 ], [ 98.741084, 27.330241 ], [ 98.706591, 27.362136 ], [ 98.702896, 27.412618 ], [ 98.686881, 27.425367 ], [ 98.704128, 27.463607 ], [ 98.685034, 27.484315 ], [ 98.706591, 27.553313 ], [ 98.662244, 27.586734 ], [ 98.650541, 27.567637 ], [ 98.583404, 27.571351 ], [ 98.587099, 27.587265 ], [ 98.554454, 27.646126 ], [ 98.53536, 27.620676 ], [ 98.474998, 27.634462 ], [ 98.444201, 27.665209 ], [ 98.430035, 27.653547 ], [ 98.429419, 27.549068 ], [ 98.388767, 27.515104 ], [ 98.337644, 27.508734 ], [ 98.317318, 27.51935 ], [ 98.310542, 27.583552 ], [ 98.283441, 27.654608 ], [ 98.234166, 27.690648 ], [ 98.215688, 27.810874 ], [ 98.169492, 27.851096 ], [ 98.205217, 27.889716 ], [ 98.187355, 27.939426 ], [ 98.143007, 27.948942 ], [ 98.133152, 27.990698 ], [ 98.160253, 28.101089 ], [ 98.139311, 28.142259 ], [ 98.17442, 28.163365 ], [ 98.169492, 28.206093 ], [ 98.21692, 28.212949 ], [ 98.266811, 28.242477 ], [ 98.231702, 28.314681 ], [ 98.207681, 28.330486 ], [ 98.208913, 28.358401 ], [ 98.301303, 28.384204 ], [ 98.317934, 28.324691 ], [ 98.353042, 28.293078 ], [ 98.37768, 28.246167 ], [ 98.370289, 28.18394 ], [ 98.389999, 28.16442 ], [ 98.389383, 28.114814 ], [ 98.428803, 28.104785 ], [ 98.464527, 28.151229 ], [ 98.494092, 28.141203 ], [ 98.559382, 28.182885 ], [ 98.625903, 28.165475 ], [ 98.649925, 28.200291 ], [ 98.712135, 28.229296 ], [ 98.710287, 28.288862 ], [ 98.746628, 28.321003 ], [ 98.740468, 28.348395 ], [ 98.693041, 28.43158 ], [ 98.673947, 28.478934 ], [ 98.625903, 28.489455 ], [ 98.619128, 28.50944 ], [ 98.637606, 28.552029 ], [ 98.594491, 28.667615 ], [ 98.666555, 28.712239 ], [ 98.683802, 28.740054 ], [ 98.652389, 28.817162 ], [ 98.668403, 28.843376 ], [ 98.643766, 28.895261 ], [ 98.6567, 28.910454 ], [ 98.624056, 28.95864 ], [ 98.655469, 28.976966 ], [ 98.70228, 28.9644 ], [ 98.757714, 29.004186 ], [ 98.786048, 28.998952 ], [ 98.821772, 28.920931 ], [ 98.827932, 28.821356 ], [ 98.852569, 28.798283 ], [ 98.912931, 28.800906 ], [ 98.922786, 28.823978 ], [ 98.972677, 28.832367 ], [ 98.973909, 28.864867 ], [ 98.917859, 28.886877 ], [ 98.925866, 28.978536 ], [ 99.013329, 29.036632 ], [ 98.991771, 29.105677 ], [ 98.967134, 29.128159 ], [ 98.960974, 29.165792 ], [ 98.9813, 29.204978 ], [ 99.024416, 29.188783 ], [ 99.037351, 29.20759 ], [ 99.113727, 29.221171 ], [ 99.105104, 29.162656 ], [ 99.118039, 29.100971 ], [ 99.113727, 29.07273 ], [ 99.132206, 28.94869 ], [ 99.123582, 28.890021 ], [ 99.103872, 28.841803 ], [ 99.114343, 28.765763 ], [ 99.134053, 28.734806 ], [ 99.126662, 28.698066 ], [ 99.147604, 28.640831 ], [ 99.183944, 28.58882 ], [ 99.170394, 28.566221 ], [ 99.191952, 28.494714 ], [ 99.187024, 28.44 ], [ 99.16485, 28.425264 ], [ 99.200575, 28.365774 ], [ 99.229524, 28.350502 ], [ 99.237531, 28.317842 ], [ 99.28927, 28.286227 ], [ 99.306516, 28.227714 ], [ 99.374886, 28.18183 ], [ 99.412458, 28.295186 ], [ 99.392748, 28.318369 ], [ 99.437095, 28.398419 ], [ 99.404451, 28.44421 ], [ 99.426625, 28.454207 ], [ 99.396444, 28.491032 ], [ 99.403219, 28.546246 ], [ 99.463581, 28.549401 ], [ 99.466045, 28.579886 ], [ 99.504233, 28.619294 ], [ 99.540573, 28.623497 ], [ 99.53195, 28.677591 ], [ 99.553508, 28.710664 ], [ 99.614486, 28.740054 ], [ 99.609559, 28.784122 ], [ 99.625573, 28.81454 ], [ 99.676696, 28.810345 ], [ 99.717964, 28.846521 ], [ 99.722275, 28.757369 ], [ 99.755536, 28.701216 ], [ 99.79434, 28.699116 ], [ 99.834992, 28.660788 ], [ 99.834376, 28.628225 ], [ 99.873181, 28.631902 ], [ 99.875644, 28.611939 ], [ 99.91876, 28.599329 ], [ 99.985281, 28.529422 ], [ 99.990209, 28.47683 ], [ 100.073977, 28.426317 ], [ 100.057346, 28.368934 ], [ 100.136803, 28.349975 ], [ 100.176223, 28.325218 ], [ 100.147274, 28.288862 ], [ 100.188541, 28.252493 ], [ 100.153433, 28.208202 ], [ 100.102926, 28.201873 ], [ 100.091223, 28.181302 ], [ 100.062274, 28.193962 ], [ 100.033325, 28.184467 ], [ 100.021006, 28.147008 ], [ 100.05673, 28.097922 ], [ 100.088759, 28.029269 ], [ 100.120788, 28.018703 ], [ 100.196549, 27.936254 ], [ 100.170063, 27.907699 ], [ 100.210715, 27.87702 ], [ 100.30865, 27.861149 ], [ 100.30865, 27.830457 ], [ 100.28586, 27.80611 ], [ 100.304954, 27.788639 ], [ 100.311729, 27.724028 ], [ 100.327744, 27.72032 ], [ 100.350534, 27.755809 ], [ 100.412127, 27.816167 ], [ 100.442924, 27.86644 ], [ 100.504518, 27.852154 ], [ 100.511294, 27.827811 ], [ 100.54517, 27.809286 ], [ 100.609228, 27.859033 ], [ 100.634482, 27.915631 ], [ 100.681293, 27.923035 ], [ 100.719481, 27.858503 ], [ 100.707162, 27.800816 ], [ 100.757053, 27.770107 ], [ 100.775532, 27.743098 ], [ 100.782307, 27.691708 ], [ 100.848212, 27.672099 ], [ 100.827886, 27.615904 ], [ 100.854988, 27.623858 ], [ 100.91227, 27.521473 ], [ 100.901183, 27.453517 ], [ 100.936908, 27.469448 ], [ 100.95169, 27.426961 ], [ 101.021907, 27.332899 ], [ 101.026219, 27.270679 ], [ 101.042233, 27.22173 ], [ 101.071798, 27.194585 ], [ 101.119226, 27.208957 ], [ 101.167885, 27.198311 ], [ 101.167885, 27.198311 ], [ 101.170349, 27.175421 ], [ 101.145095, 27.103523 ], [ 101.157414, 27.094999 ], [ 101.136472, 27.023584 ], [ 101.228863, 26.981992 ], [ 101.227015, 26.959057 ], [ 101.264587, 26.955323 ], [ 101.267667, 26.903034 ], [ 101.311399, 26.903034 ], [ 101.365602, 26.883819 ], [ 101.399478, 26.841642 ], [ 101.358826, 26.771669 ], [ 101.387159, 26.753501 ], [ 101.389623, 26.723036 ], [ 101.435819, 26.740675 ], [ 101.458608, 26.731054 ], [ 101.445674, 26.77434 ], [ 101.466, 26.786629 ], [ 101.513427, 26.768463 ], [ 101.453065, 26.692563 ], [ 101.481398, 26.673313 ], [ 101.461072, 26.640687 ], [ 101.461688, 26.606447 ], [ 101.402558, 26.604841 ], [ 101.395783, 26.591998 ], [ 101.422884, 26.53151 ], [ 101.458608, 26.49563 ], [ 101.506652, 26.499915 ], [ 101.530057, 26.467239 ], [ 101.565782, 26.454381 ], [ 101.637847, 26.388995 ], [ 101.635383, 26.357361 ], [ 101.660636, 26.346635 ], [ 101.64031, 26.318745 ], [ 101.597195, 26.303187 ], [ 101.586108, 26.279579 ], [ 101.630455, 26.224832 ], [ 101.690202, 26.241473 ], [ 101.737013, 26.219463 ], [ 101.773353, 26.168448 ], [ 101.807846, 26.156093 ], [ 101.796759, 26.114723 ], [ 101.839875, 26.082477 ], [ 101.835563, 26.04592 ], [ 101.857737, 26.049146 ], [ 101.899621, 26.099139 ], [ 101.929186, 26.105588 ], [ 101.954439, 26.084627 ], [ 102.020961, 26.096451 ], [ 102.080091, 26.065275 ], [ 102.107808, 26.068501 ], [ 102.152156, 26.10935 ], [ 102.174946, 26.146961 ], [ 102.242699, 26.190468 ], [ 102.245163, 26.212483 ], [ 102.349257, 26.244694 ], [ 102.392372, 26.296749 ], [ 102.440416, 26.300505 ], [ 102.542046, 26.338591 ], [ 102.570995, 26.362723 ], [ 102.629509, 26.336982 ], [ 102.638748, 26.307479 ], [ 102.60056, 26.250598 ], [ 102.659074, 26.221611 ], [ 102.709581, 26.210336 ], [ 102.739762, 26.268846 ], [ 102.785342, 26.298895 ], [ 102.833385, 26.306406 ], [ 102.878964, 26.364332 ], [ 102.893131, 26.338591 ], [ 102.975667, 26.340736 ], [ 102.998457, 26.371839 ], [ 102.988602, 26.413117 ], [ 102.989833, 26.482775 ], [ 103.030485, 26.485989 ], [ 103.052659, 26.514374 ], [ 103.052659, 26.555602 ], [ 103.035413, 26.556673 ], [ 103.026174, 26.664221 ], [ 103.005232, 26.679195 ], [ 103.008312, 26.710741 ], [ 102.983674, 26.76686 ], [ 102.991681, 26.775409 ], [ 102.966428, 26.837904 ], [ 102.949181, 26.843244 ], [ 102.896211, 26.91264 ], [ 102.894979, 27.001724 ], [ 102.870957, 27.026782 ], [ 102.913457, 27.133886 ], [ 102.904218, 27.227584 ], [ 102.883276, 27.258444 ], [ 102.883892, 27.299401 ], [ 102.899906, 27.317481 ], [ 102.941174, 27.405711 ], [ 102.989833, 27.367983 ], [ 103.055739, 27.40943 ], [ 103.080992, 27.396679 ], [ 103.141355, 27.420586 ], [ 103.144434, 27.450331 ], [ 103.19063, 27.523596 ], [ 103.232514, 27.56976 ], [ 103.2861, 27.561802 ], [ 103.29226, 27.632872 ], [ 103.349542, 27.678459 ], [ 103.369868, 27.708664 ], [ 103.393274, 27.709194 ], [ 103.461027, 27.779638 ], [ 103.487512, 27.794992 ], [ 103.509686, 27.843687 ], [ 103.502295, 27.910343 ], [ 103.55465, 27.978543 ], [ 103.515846, 27.965329 ], [ 103.486281, 28.033495 ], [ 103.459179, 28.021345 ], [ 103.430846, 28.044587 ], [ 103.470266, 28.122204 ], [ 103.533092, 28.168641 ], [ 103.573128, 28.230877 ], [ 103.643961, 28.260401 ], [ 103.692004, 28.232459 ], [ 103.701859, 28.198709 ], [ 103.740048, 28.23615 ], [ 103.770845, 28.233514 ], [ 103.828743, 28.285173 ], [ 103.877402, 28.316262 ], [ 103.85338, 28.356822 ], [ 103.860156, 28.383677 ], [ 103.828743, 28.44 ], [ 103.829975, 28.459995 ], [ 103.781931, 28.525216 ], [ 103.802873, 28.563068 ], [ 103.838598, 28.587244 ], [ 103.833054, 28.605109 ], [ 103.850917, 28.66709 ], [ 103.887873, 28.61982 ], [ 103.910047, 28.631377 ], [ 103.953779, 28.600906 ], [ 104.05972, 28.6277 ], [ 104.09606, 28.603533 ], [ 104.117618, 28.634003 ], [ 104.170589, 28.642932 ], [ 104.230951, 28.635579 ], [ 104.252509, 28.660788 ], [ 104.277147, 28.631902 ], [ 104.314719, 28.615617 ], [ 104.372617, 28.649235 ], [ 104.425588, 28.626649 ], [ 104.417581, 28.598279 ], [ 104.375697, 28.5946 ], [ 104.355987, 28.555183 ], [ 104.323342, 28.540989 ], [ 104.260516, 28.536257 ], [ 104.267908, 28.499448 ], [ 104.254357, 28.403683 ], [ 104.282074, 28.343128 ], [ 104.314103, 28.306778 ], [ 104.343052, 28.334173 ], [ 104.384936, 28.329959 ], [ 104.392943, 28.291497 ], [ 104.420045, 28.269889 ], [ 104.44961, 28.269889 ], [ 104.462544, 28.241422 ], [ 104.442834, 28.211366 ], [ 104.402182, 28.202928 ], [ 104.406494, 28.173389 ], [ 104.444682, 28.16231 ], [ 104.448994, 28.113758 ], [ 104.40095, 28.091586 ], [ 104.373233, 28.051454 ], [ 104.304248, 28.050926 ], [ 104.30856, 28.036136 ], [ 104.362762, 28.012891 ], [ 104.40095, 27.952114 ], [ 104.44961, 27.927794 ], [ 104.508124, 27.878078 ], [ 104.52537, 27.889187 ], [ 104.573413, 27.840512 ], [ 104.607906, 27.857974 ], [ 104.63316, 27.850567 ], [ 104.676275, 27.880723 ], [ 104.743413, 27.901881 ], [ 104.761891, 27.884426 ], [ 104.796999, 27.901352 ], [ 104.842579, 27.900294 ], [ 104.888158, 27.914574 ], [ 104.918339, 27.938897 ], [ 104.903557, 27.962158 ], [ 104.975006, 28.020816 ], [ 104.980549, 28.063073 ], [ 105.002107, 28.064129 ], [ 105.061853, 28.096866 ], [ 105.119752, 28.07205 ], [ 105.168411, 28.071522 ], [ 105.186889, 28.054623 ], [ 105.167795, 28.021345 ], [ 105.186273, 27.995454 ], [ 105.218302, 27.990698 ], [ 105.247867, 28.009193 ], [ 105.270657, 27.99704 ], [ 105.284823, 27.935725 ], [ 105.233084, 27.895534 ], [ 105.25957, 27.827811 ], [ 105.313157, 27.810874 ], [ 105.273736, 27.794992 ], [ 105.293447, 27.770637 ], [ 105.290367, 27.712373 ], [ 105.308229, 27.704955 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "540000", "name": "西藏自治区", "center": [ 91.132212, 29.660361 ], "centroid": [ 88.388277, 31.56375 ], "childrenNum": 7, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 25, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 89.711414, 36.093272 ], [ 89.688624, 36.091337 ], [ 89.605472, 36.038123 ], [ 89.474893, 36.022151 ], [ 89.417611, 36.044897 ], [ 89.404676, 36.016827 ], [ 89.434857, 35.992136 ], [ 89.428082, 35.917531 ], [ 89.489676, 35.903475 ], [ 89.554965, 35.873414 ], [ 89.550654, 35.856924 ], [ 89.62395, 35.859349 ], [ 89.654747, 35.848193 ], [ 89.707718, 35.849163 ], [ 89.778551, 35.861775 ], [ 89.801957, 35.848193 ], [ 89.767464, 35.799183 ], [ 89.782863, 35.773453 ], [ 89.747138, 35.7516 ], [ 89.748986, 35.66267 ], [ 89.726196, 35.648082 ], [ 89.765616, 35.599922 ], [ 89.75145, 35.580942 ], [ 89.71203, 35.581915 ], [ 89.699711, 35.544916 ], [ 89.720037, 35.501566 ], [ 89.740979, 35.507412 ], [ 89.765, 35.482563 ], [ 89.739131, 35.468429 ], [ 89.685544, 35.416259 ], [ 89.658443, 35.425526 ], [ 89.619639, 35.412357 ], [ 89.58761, 35.383575 ], [ 89.497067, 35.361128 ], [ 89.516161, 35.330862 ], [ 89.494603, 35.298632 ], [ 89.531559, 35.276161 ], [ 89.48598, 35.256616 ], [ 89.450255, 35.223867 ], [ 89.46935, 35.214577 ], [ 89.519241, 35.133862 ], [ 89.579603, 35.118688 ], [ 89.593153, 35.104491 ], [ 89.59069, 35.057965 ], [ 89.560509, 34.938836 ], [ 89.578987, 34.895162 ], [ 89.670146, 34.887798 ], [ 89.707102, 34.919701 ], [ 89.747138, 34.903506 ], [ 89.78779, 34.921664 ], [ 89.821051, 34.902033 ], [ 89.814891, 34.86816 ], [ 89.838913, 34.865705 ], [ 89.867862, 34.81069 ], [ 89.825978, 34.796931 ], [ 89.799493, 34.743838 ], [ 89.732356, 34.732035 ], [ 89.72558, 34.660689 ], [ 89.74837, 34.641981 ], [ 89.798877, 34.628686 ], [ 89.777935, 34.574499 ], [ 89.814891, 34.548871 ], [ 89.823515, 34.455657 ], [ 89.819819, 34.420614 ], [ 89.799493, 34.39642 ], [ 89.820435, 34.369255 ], [ 89.858623, 34.359375 ], [ 89.86663, 34.324785 ], [ 89.825362, 34.293642 ], [ 89.838297, 34.263477 ], [ 89.816739, 34.16945 ], [ 89.789638, 34.150632 ], [ 89.760073, 34.152613 ], [ 89.756993, 34.124874 ], [ 89.71203, 34.131809 ], [ 89.655979, 34.097126 ], [ 89.656595, 34.057966 ], [ 89.635037, 34.049537 ], [ 89.684928, 33.990013 ], [ 89.688008, 33.959739 ], [ 89.718805, 33.946832 ], [ 89.73174, 33.921509 ], [ 89.795181, 33.865374 ], [ 89.837065, 33.868853 ], [ 89.899891, 33.80771 ], [ 89.942391, 33.801246 ], [ 89.902355, 33.758467 ], [ 89.907282, 33.741051 ], [ 89.983659, 33.725622 ], [ 89.981195, 33.70322 ], [ 90.008296, 33.687785 ], [ 89.984275, 33.612061 ], [ 90.01076, 33.553728 ], [ 90.083441, 33.525295 ], [ 90.088984, 33.478885 ], [ 90.107463, 33.460913 ], [ 90.22018, 33.437943 ], [ 90.246665, 33.423959 ], [ 90.332896, 33.310501 ], [ 90.363077, 33.279487 ], [ 90.405577, 33.260473 ], [ 90.490577, 33.264977 ], [ 90.562642, 33.229441 ], [ 90.627315, 33.180368 ], [ 90.704308, 33.135778 ], [ 90.740032, 33.142293 ], [ 90.803474, 33.114227 ], [ 90.88293, 33.120241 ], [ 90.902024, 33.083143 ], [ 90.927894, 33.120241 ], [ 91.001807, 33.11573 ], [ 91.037531, 33.098686 ], [ 91.072024, 33.113224 ], [ 91.147784, 33.07211 ], [ 91.161335, 33.108712 ], [ 91.18782, 33.106206 ], [ 91.226624, 33.141792 ], [ 91.261733, 33.141291 ], [ 91.311624, 33.108211 ], [ 91.370138, 33.100691 ], [ 91.436044, 33.066092 ], [ 91.49579, 33.109214 ], [ 91.535826, 33.10019 ], [ 91.55492, 33.060074 ], [ 91.583253, 33.0375 ], [ 91.664557, 33.012913 ], [ 91.685499, 32.989324 ], [ 91.752637, 32.969242 ], [ 91.799448, 32.942126 ], [ 91.839484, 32.948152 ], [ 91.857962, 32.90244 ], [ 91.896766, 32.907967 ], [ 91.955897, 32.8205 ], [ 92.018722, 32.829552 ], [ 92.038432, 32.860725 ], [ 92.101874, 32.860222 ], [ 92.145606, 32.885857 ], [ 92.205352, 32.866255 ], [ 92.227526, 32.821003 ], [ 92.193649, 32.801889 ], [ 92.211511, 32.788306 ], [ 92.198577, 32.754591 ], [ 92.255243, 32.720863 ], [ 92.310062, 32.751571 ], [ 92.343938, 32.738484 ], [ 92.355641, 32.764657 ], [ 92.411076, 32.748048 ], [ 92.459119, 32.76365 ], [ 92.484372, 32.745028 ], [ 92.56814, 32.73194 ], [ 92.574916, 32.741001 ], [ 92.634662, 32.720863 ], [ 92.667922, 32.73194 ], [ 92.686401, 32.76516 ], [ 92.756618, 32.743014 ], [ 92.789262, 32.719856 ], [ 92.822523, 32.729926 ], [ 92.866871, 32.698203 ], [ 92.933392, 32.719353 ], [ 92.964189, 32.714821 ], [ 93.00053, 32.741001 ], [ 93.019624, 32.737477 ], [ 93.023935, 32.703239 ], [ 93.069515, 32.626156 ], [ 93.087993, 32.63674 ], [ 93.159442, 32.644803 ], [ 93.176688, 32.6705 ], [ 93.210565, 32.655385 ], [ 93.239514, 32.662439 ], [ 93.260456, 32.62666 ], [ 93.300492, 32.619604 ], [ 93.308499, 32.580278 ], [ 93.33868, 32.5712 ], [ 93.385492, 32.525294 ], [ 93.411977, 32.558086 ], [ 93.4631, 32.556069 ], [ 93.476651, 32.504603 ], [ 93.501904, 32.503593 ], [ 93.516687, 32.47583 ], [ 93.618933, 32.522771 ], [ 93.651577, 32.571705 ], [ 93.721795, 32.578261 ], [ 93.75136, 32.56313 ], [ 93.820345, 32.549511 ], [ 93.851142, 32.50965 ], [ 93.861613, 32.466237 ], [ 93.90904, 32.463207 ], [ 93.960163, 32.484917 ], [ 93.978641, 32.459672 ], [ 94.03038, 32.448057 ], [ 94.049474, 32.469771 ], [ 94.091974, 32.463207 ], [ 94.137554, 32.433915 ], [ 94.176974, 32.454117 ], [ 94.196684, 32.51621 ], [ 94.250886, 32.51722 ], [ 94.292154, 32.502584 ], [ 94.294002, 32.519743 ], [ 94.350053, 32.533871 ], [ 94.371611, 32.524789 ], [ 94.395016, 32.594397 ], [ 94.435052, 32.562626 ], [ 94.463386, 32.572209 ], [ 94.459074, 32.599439 ], [ 94.522516, 32.595909 ], [ 94.591501, 32.640772 ], [ 94.614291, 32.673522 ], [ 94.638312, 32.645307 ], [ 94.737479, 32.587338 ], [ 94.762116, 32.526303 ], [ 94.78737, 32.522266 ], [ 94.80708, 32.486431 ], [ 94.852043, 32.463712 ], [ 94.889616, 32.472295 ], [ 94.912405, 32.41573 ], [ 94.944434, 32.404109 ], [ 94.988166, 32.422802 ], [ 95.057151, 32.395014 ], [ 95.075013, 32.376315 ], [ 95.075013, 32.376315 ], [ 95.081789, 32.384907 ], [ 95.153853, 32.386423 ], [ 95.218527, 32.397035 ], [ 95.228382, 32.363678 ], [ 95.261643, 32.348006 ], [ 95.193274, 32.332331 ], [ 95.096571, 32.322217 ], [ 95.079325, 32.279726 ], [ 95.10581, 32.258979 ], [ 95.20744, 32.297433 ], [ 95.214216, 32.321712 ], [ 95.241317, 32.3207 ], [ 95.239469, 32.287315 ], [ 95.270266, 32.194683 ], [ 95.270266, 32.194683 ], [ 95.31523, 32.148585 ], [ 95.366968, 32.151118 ], [ 95.367584, 32.178982 ], [ 95.406389, 32.182021 ], [ 95.440265, 32.157705 ], [ 95.454432, 32.061898 ], [ 95.421171, 32.033999 ], [ 95.454432, 32.007613 ], [ 95.395918, 32.001523 ], [ 95.360809, 31.95939 ], [ 95.3682, 31.92892 ], [ 95.408852, 31.918761 ], [ 95.406389, 31.896915 ], [ 95.456896, 31.801853 ], [ 95.480301, 31.795749 ], [ 95.511714, 31.750468 ], [ 95.546823, 31.73978 ], [ 95.580083, 31.76726 ], [ 95.634286, 31.782523 ], [ 95.779648, 31.748941 ], [ 95.823995, 31.68225 ], [ 95.853561, 31.714329 ], [ 95.846169, 31.736218 ], [ 95.89914, 31.81711 ], [ 95.983524, 31.816601 ], [ 95.989067, 31.78761 ], [ 96.064828, 31.720438 ], [ 96.135661, 31.70211 ], [ 96.148595, 31.686324 ], [ 96.156603, 31.602769 ], [ 96.207726, 31.598691 ], [ 96.221892, 31.647613 ], [ 96.245298, 31.657802 ], [ 96.252073, 31.697527 ], [ 96.222508, 31.733164 ], [ 96.231131, 31.749959 ], [ 96.178161, 31.775401 ], [ 96.183088, 31.835924 ], [ 96.202798, 31.841008 ], [ 96.214501, 31.876589 ], [ 96.188632, 31.904028 ], [ 96.220044, 31.905553 ], [ 96.253305, 31.929936 ], [ 96.288414, 31.919777 ], [ 96.389428, 31.919777 ], [ 96.407906, 31.845583 ], [ 96.435623, 31.796258 ], [ 96.468884, 31.769804 ], [ 96.519391, 31.74945 ], [ 96.56805, 31.711783 ], [ 96.615477, 31.737236 ], [ 96.661057, 31.705674 ], [ 96.691854, 31.722474 ], [ 96.722651, 31.686833 ], [ 96.778701, 31.675629 ], [ 96.790404, 31.698545 ], [ 96.840295, 31.720438 ], [ 96.799027, 31.792188 ], [ 96.765767, 31.819144 ], [ 96.760223, 31.860325 ], [ 96.794716, 31.869474 ], [ 96.81073, 31.894375 ], [ 96.776238, 31.935015 ], [ 96.753448, 31.944156 ], [ 96.742977, 32.001016 ], [ 96.722651, 32.013195 ], [ 96.824281, 32.007613 ], [ 96.868629, 31.964975 ], [ 96.863085, 31.996448 ], [ 96.894498, 32.013703 ], [ 96.941925, 31.986297 ], [ 96.965947, 32.008628 ], [ 96.935766, 32.048203 ], [ 97.006599, 32.067984 ], [ 97.028773, 32.04871 ], [ 97.127323, 32.044145 ], [ 97.169823, 32.032984 ], [ 97.188301, 32.055304 ], [ 97.214786, 32.042623 ], [ 97.233881, 32.063927 ], [ 97.201852, 32.090296 ], [ 97.219714, 32.109054 ], [ 97.258518, 32.072041 ], [ 97.308409, 32.076605 ], [ 97.293011, 32.096887 ], [ 97.313953, 32.130342 ], [ 97.271453, 32.139971 ], [ 97.264062, 32.182527 ], [ 97.299786, 32.294904 ], [ 97.32196, 32.303503 ], [ 97.371235, 32.273148 ], [ 97.415583, 32.296421 ], [ 97.424822, 32.322723 ], [ 97.387865, 32.427349 ], [ 97.341054, 32.440987 ], [ 97.388481, 32.501575 ], [ 97.334895, 32.514192 ], [ 97.332431, 32.542448 ], [ 97.3583, 32.563635 ], [ 97.374315, 32.546484 ], [ 97.411887, 32.575235 ], [ 97.448843, 32.586833 ], [ 97.463626, 32.55506 ], [ 97.50243, 32.530844 ], [ 97.540618, 32.536899 ], [ 97.670582, 32.51722 ], [ 97.684132, 32.530339 ], [ 97.730944, 32.527312 ], [ 97.795617, 32.521257 ], [ 97.80732, 32.50006 ], [ 97.863986, 32.499051 ], [ 97.880001, 32.486431 ], [ 97.940363, 32.482393 ], [ 98.079565, 32.415224 ], [ 98.107283, 32.391476 ], [ 98.125145, 32.401077 ], [ 98.218768, 32.342444 ], [ 98.208913, 32.318171 ], [ 98.23047, 32.262521 ], [ 98.218768, 32.234683 ], [ 98.260035, 32.208862 ], [ 98.303151, 32.121726 ], [ 98.357354, 32.087253 ], [ 98.404781, 32.045159 ], [ 98.402933, 32.026896 ], [ 98.434962, 32.007613 ], [ 98.432498, 31.922825 ], [ 98.399238, 31.895899 ], [ 98.426339, 31.856767 ], [ 98.414636, 31.832365 ], [ 98.461448, 31.800327 ], [ 98.508875, 31.751995 ], [ 98.516882, 31.717383 ], [ 98.545831, 31.717383 ], [ 98.553839, 31.660349 ], [ 98.619128, 31.591555 ], [ 98.651157, 31.57881 ], [ 98.696736, 31.538523 ], [ 98.714599, 31.508935 ], [ 98.844562, 31.429817 ], [ 98.84333, 31.416028 ], [ 98.887062, 31.37465 ], [ 98.810685, 31.306668 ], [ 98.805758, 31.279052 ], [ 98.773113, 31.249382 ], [ 98.691809, 31.333253 ], [ 98.643766, 31.338876 ], [ 98.616048, 31.3036 ], [ 98.60373, 31.257568 ], [ 98.62344, 31.221238 ], [ 98.602498, 31.192062 ], [ 98.675179, 31.15417 ], [ 98.710287, 31.1178 ], [ 98.712135, 31.082954 ], [ 98.736772, 31.049121 ], [ 98.774961, 31.031174 ], [ 98.806374, 30.995783 ], [ 98.797135, 30.948575 ], [ 98.774345, 30.908019 ], [ 98.797135, 30.87926 ], [ 98.850105, 30.849465 ], [ 98.904924, 30.782649 ], [ 98.957895, 30.765166 ], [ 98.963438, 30.728134 ], [ 98.907388, 30.698292 ], [ 98.92217, 30.609225 ], [ 98.939417, 30.598923 ], [ 98.926482, 30.569556 ], [ 98.932025, 30.521623 ], [ 98.965286, 30.449937 ], [ 98.967134, 30.33482 ], [ 98.986844, 30.280569 ], [ 98.970829, 30.260928 ], [ 98.993003, 30.215429 ], [ 98.9813, 30.182843 ], [ 98.989308, 30.151799 ], [ 99.044742, 30.079842 ], [ 99.036735, 30.053945 ], [ 99.055213, 29.958587 ], [ 99.068148, 29.931621 ], [ 99.0238, 29.846009 ], [ 99.018873, 29.792009 ], [ 98.992387, 29.677163 ], [ 99.014561, 29.607464 ], [ 99.052133, 29.563748 ], [ 99.044742, 29.520013 ], [ 99.066916, 29.421018 ], [ 99.058909, 29.417368 ], [ 99.075539, 29.316186 ], [ 99.114343, 29.243628 ], [ 99.113727, 29.221171 ], [ 99.037351, 29.20759 ], [ 99.024416, 29.188783 ], [ 98.9813, 29.204978 ], [ 98.960974, 29.165792 ], [ 98.967134, 29.128159 ], [ 98.991771, 29.105677 ], [ 99.013329, 29.036632 ], [ 98.925866, 28.978536 ], [ 98.917859, 28.886877 ], [ 98.973909, 28.864867 ], [ 98.972677, 28.832367 ], [ 98.922786, 28.823978 ], [ 98.912931, 28.800906 ], [ 98.852569, 28.798283 ], [ 98.827932, 28.821356 ], [ 98.821772, 28.920931 ], [ 98.786048, 28.998952 ], [ 98.757714, 29.004186 ], [ 98.70228, 28.9644 ], [ 98.655469, 28.976966 ], [ 98.624056, 28.95864 ], [ 98.6567, 28.910454 ], [ 98.643766, 28.895261 ], [ 98.668403, 28.843376 ], [ 98.652389, 28.817162 ], [ 98.683802, 28.740054 ], [ 98.666555, 28.712239 ], [ 98.594491, 28.667615 ], [ 98.637606, 28.552029 ], [ 98.619128, 28.50944 ], [ 98.625903, 28.489455 ], [ 98.673947, 28.478934 ], [ 98.693041, 28.43158 ], [ 98.740468, 28.348395 ], [ 98.746628, 28.321003 ], [ 98.710287, 28.288862 ], [ 98.712135, 28.229296 ], [ 98.649925, 28.200291 ], [ 98.625903, 28.165475 ], [ 98.559382, 28.182885 ], [ 98.494092, 28.141203 ], [ 98.464527, 28.151229 ], [ 98.428803, 28.104785 ], [ 98.389383, 28.114814 ], [ 98.389999, 28.16442 ], [ 98.370289, 28.18394 ], [ 98.37768, 28.246167 ], [ 98.353042, 28.293078 ], [ 98.317934, 28.324691 ], [ 98.301303, 28.384204 ], [ 98.208913, 28.358401 ], [ 98.207681, 28.330486 ], [ 98.231702, 28.314681 ], [ 98.266811, 28.242477 ], [ 98.21692, 28.212949 ], [ 98.169492, 28.206093 ], [ 98.17442, 28.163365 ], [ 98.139311, 28.142259 ], [ 98.097427, 28.166531 ], [ 98.090036, 28.195544 ], [ 98.056775, 28.202401 ], [ 98.03337, 28.187105 ], [ 98.008116, 28.214003 ], [ 98.020435, 28.253548 ], [ 97.907718, 28.363141 ], [ 97.871378, 28.361561 ], [ 97.842429, 28.326798 ], [ 97.801161, 28.326798 ], [ 97.769748, 28.3742 ], [ 97.738335, 28.396313 ], [ 97.737103, 28.465782 ], [ 97.68598, 28.519958 ], [ 97.634857, 28.532051 ], [ 97.60406, 28.515225 ], [ 97.569567, 28.541515 ], [ 97.521524, 28.495766 ], [ 97.507974, 28.46473 ], [ 97.521524, 28.444736 ], [ 97.499966, 28.428948 ], [ 97.485184, 28.38631 ], [ 97.488879, 28.347341 ], [ 97.518445, 28.327852 ], [ 97.469169, 28.30309 ], [ 97.461162, 28.26778 ], [ 97.422358, 28.297293 ], [ 97.402032, 28.279903 ], [ 97.398336, 28.238786 ], [ 97.349677, 28.235623 ], [ 97.362612, 28.199236 ], [ 97.352757, 28.149646 ], [ 97.326887, 28.132759 ], [ 97.340438, 28.104785 ], [ 97.305945, 28.071522 ], [ 97.320728, 28.054095 ], [ 97.375547, 28.062545 ], [ 97.378626, 28.031382 ], [ 97.413119, 28.01342 ], [ 97.379242, 27.970087 ], [ 97.372467, 27.907699 ], [ 97.386634, 27.882839 ], [ 97.324424, 27.880723 ], [ 97.303482, 27.913516 ], [ 97.253591, 27.891832 ], [ 97.167975, 27.811932 ], [ 97.103301, 27.780697 ], [ 97.097758, 27.740979 ], [ 97.062649, 27.742568 ], [ 97.049099, 27.81405 ], [ 97.008447, 27.807698 ], [ 96.972722, 27.861149 ], [ 96.908049, 27.884426 ], [ 96.849534, 27.874375 ], [ 96.810114, 27.890245 ], [ 96.784245, 27.931495 ], [ 96.711564, 27.9574 ], [ 96.690622, 27.948942 ], [ 96.635188, 27.994926 ], [ 96.623485, 28.024514 ], [ 96.538485, 28.075218 ], [ 96.499681, 28.067297 ], [ 96.46334, 28.143314 ], [ 96.426384, 28.161782 ], [ 96.395587, 28.143842 ], [ 96.398667, 28.118509 ], [ 96.367254, 28.118509 ], [ 96.298269, 28.140148 ], [ 96.275479, 28.228241 ], [ 96.194175, 28.212949 ], [ 96.098088, 28.212421 ], [ 96.074683, 28.193434 ], [ 95.989067, 28.198181 ], [ 95.936096, 28.240368 ], [ 95.907763, 28.241422 ], [ 95.899756, 28.278322 ], [ 95.874502, 28.29782 ], [ 95.832003, 28.295186 ], [ 95.787655, 28.270416 ], [ 95.740228, 28.275159 ], [ 95.674322, 28.254075 ], [ 95.528345, 28.182885 ], [ 95.437802, 28.161782 ], [ 95.39715, 28.142259 ], [ 95.371896, 28.110063 ], [ 95.352802, 28.04089 ], [ 95.32878, 28.017646 ], [ 95.28628, 27.939955 ], [ 95.067006, 27.840512 ], [ 95.015267, 27.82887 ], [ 94.947514, 27.792345 ], [ 94.88592, 27.743098 ], [ 94.836645, 27.728796 ], [ 94.78121, 27.699127 ], [ 94.722696, 27.683759 ], [ 94.660486, 27.650367 ], [ 94.524979, 27.596282 ], [ 94.478168, 27.602116 ], [ 94.443675, 27.585143 ], [ 94.399944, 27.589386 ], [ 94.353132, 27.578778 ], [ 94.277372, 27.58143 ], [ 94.220705, 27.536333 ], [ 94.147409, 27.458297 ], [ 94.056866, 27.375423 ], [ 93.970634, 27.30525 ], [ 93.849294, 27.168499 ], [ 93.841903, 27.045973 ], [ 93.817265, 27.025183 ], [ 93.747048, 27.015587 ], [ 93.625092, 26.955323 ], [ 93.56781, 26.938252 ], [ 93.232739, 26.906769 ], [ 93.111399, 26.880082 ], [ 93.050421, 26.883819 ], [ 92.909371, 26.914241 ], [ 92.802813, 26.895028 ], [ 92.682089, 26.947855 ], [ 92.64698, 26.952656 ], [ 92.549046, 26.941453 ], [ 92.496691, 26.921711 ], [ 92.404916, 26.9025 ], [ 92.28604, 26.892359 ], [ 92.197961, 26.86994 ], [ 92.109265, 26.854991 ], [ 92.124664, 26.960124 ], [ 92.076005, 27.041175 ], [ 92.043976, 27.052902 ], [ 92.02673, 27.108318 ], [ 92.032273, 27.167967 ], [ 92.061222, 27.190327 ], [ 92.071077, 27.237694 ], [ 92.091403, 27.264296 ], [ 92.125896, 27.273339 ], [ 92.064918, 27.391365 ], [ 92.021802, 27.444489 ], [ 92.010715, 27.474758 ], [ 91.946657, 27.464138 ], [ 91.839484, 27.489624 ], [ 91.753868, 27.462545 ], [ 91.71876, 27.467324 ], [ 91.663325, 27.507142 ], [ 91.626985, 27.509265 ], [ 91.585101, 27.540578 ], [ 91.564775, 27.58196 ], [ 91.582637, 27.598933 ], [ 91.562311, 27.627569 ], [ 91.570934, 27.650897 ], [ 91.622673, 27.692238 ], [ 91.642383, 27.7664 ], [ 91.610355, 27.819343 ], [ 91.544449, 27.820401 ], [ 91.561079, 27.855329 ], [ 91.618978, 27.856916 ], [ 91.611586, 27.891303 ], [ 91.552456, 27.90717 ], [ 91.486551, 27.937311 ], [ 91.490246, 27.971672 ], [ 91.464993, 28.002852 ], [ 91.309776, 28.057791 ], [ 91.251878, 27.970615 ], [ 91.216153, 27.989113 ], [ 91.162567, 27.968501 ], [ 91.147784, 27.927794 ], [ 91.155175, 27.894476 ], [ 91.113292, 27.846333 ], [ 91.025828, 27.857445 ], [ 90.96485, 27.900294 ], [ 90.976553, 27.935725 ], [ 90.96177, 27.9537 ], [ 90.896481, 27.946299 ], [ 90.853365, 27.969029 ], [ 90.806554, 28.015005 ], [ 90.802242, 28.040362 ], [ 90.741264, 28.053038 ], [ 90.701844, 28.076274 ], [ 90.591591, 28.021345 ], [ 90.569417, 28.044059 ], [ 90.513983, 28.062016 ], [ 90.47949, 28.044587 ], [ 90.43699, 28.063073 ], [ 90.384019, 28.06096 ], [ 90.367389, 28.088946 ], [ 90.297172, 28.153868 ], [ 90.231882, 28.144897 ], [ 90.189999, 28.161782 ], [ 90.166593, 28.187632 ], [ 90.124709, 28.190797 ], [ 90.103151, 28.141731 ], [ 90.07297, 28.155451 ], [ 90.03355, 28.136981 ], [ 90.017536, 28.162837 ], [ 89.976268, 28.189215 ], [ 89.901739, 28.18183 ], [ 89.869094, 28.221386 ], [ 89.789638, 28.240895 ], [ 89.779167, 28.197127 ], [ 89.720037, 28.170224 ], [ 89.605472, 28.161782 ], [ 89.541414, 28.088418 ], [ 89.511233, 28.086307 ], [ 89.461958, 28.03191 ], [ 89.44348, 27.968501 ], [ 89.375727, 27.875962 ], [ 89.295655, 27.84845 ], [ 89.238988, 27.796581 ], [ 89.184786, 27.673689 ], [ 89.131815, 27.633402 ], [ 89.128735, 27.611131 ], [ 89.163228, 27.574534 ], [ 89.109025, 27.537925 ], [ 89.095474, 27.471572 ], [ 89.132431, 27.441302 ], [ 89.182938, 27.373829 ], [ 89.152757, 27.319076 ], [ 89.077612, 27.287168 ], [ 89.067757, 27.240354 ], [ 88.984605, 27.208957 ], [ 88.942105, 27.261636 ], [ 88.911924, 27.272807 ], [ 88.920548, 27.325456 ], [ 88.901453, 27.327583 ], [ 88.867577, 27.3818 ], [ 88.838012, 27.37808 ], [ 88.809063, 27.405711 ], [ 88.783193, 27.467324 ], [ 88.797976, 27.521473 ], [ 88.770874, 27.563924 ], [ 88.813374, 27.606889 ], [ 88.816454, 27.641354 ], [ 88.852178, 27.671039 ], [ 88.850331, 27.710783 ], [ 88.870657, 27.743098 ], [ 88.863265, 27.811932 ], [ 88.888519, 27.846863 ], [ 88.864497, 27.921448 ], [ 88.846635, 27.921448 ], [ 88.842939, 28.006023 ], [ 88.812142, 28.018175 ], [ 88.764099, 28.068353 ], [ 88.67602, 28.068353 ], [ 88.645223, 28.111119 ], [ 88.620585, 28.091586 ], [ 88.565151, 28.083139 ], [ 88.554064, 28.027684 ], [ 88.498013, 28.04089 ], [ 88.469064, 28.009721 ], [ 88.43334, 28.002852 ], [ 88.401311, 27.976958 ], [ 88.357579, 27.986471 ], [ 88.254101, 27.939426 ], [ 88.242398, 27.967444 ], [ 88.203594, 27.943127 ], [ 88.156783, 27.957929 ], [ 88.120442, 27.915103 ], [ 88.137689, 27.878607 ], [ 88.111819, 27.864852 ], [ 88.090877, 27.885484 ], [ 88.037291, 27.901881 ], [ 87.982472, 27.884426 ], [ 87.930733, 27.909285 ], [ 87.826639, 27.927794 ], [ 87.782292, 27.890774 ], [ 87.77798, 27.860091 ], [ 87.727473, 27.802933 ], [ 87.668343, 27.809815 ], [ 87.670191, 27.832045 ], [ 87.598126, 27.814579 ], [ 87.58088, 27.859562 ], [ 87.45954, 27.820931 ], [ 87.418272, 27.825694 ], [ 87.421967, 27.856916 ], [ 87.364069, 27.824106 ], [ 87.317258, 27.826753 ], [ 87.280917, 27.845275 ], [ 87.249504, 27.839454 ], [ 87.227946, 27.812991 ], [ 87.173744, 27.818284 ], [ 87.118309, 27.840512 ], [ 87.080737, 27.910872 ], [ 87.035157, 27.946299 ], [ 86.935375, 27.955286 ], [ 86.926752, 27.985942 ], [ 86.885484, 27.995983 ], [ 86.864542, 28.022401 ], [ 86.827586, 28.012363 ], [ 86.756753, 28.032967 ], [ 86.768456, 28.06941 ], [ 86.74813, 28.089474 ], [ 86.700086, 28.101617 ], [ 86.662514, 28.092114 ], [ 86.647732, 28.06941 ], [ 86.611391, 28.069938 ], [ 86.60092, 28.097922 ], [ 86.568891, 28.103201 ], [ 86.55842, 28.047757 ], [ 86.537478, 28.044587 ], [ 86.513457, 27.996511 ], [ 86.514689, 27.954757 ], [ 86.475884, 27.944713 ], [ 86.450015, 27.908757 ], [ 86.414906, 27.904526 ], [ 86.393349, 27.926736 ], [ 86.308965, 27.950528 ], [ 86.27324, 27.976958 ], [ 86.231972, 27.974315 ], [ 86.206103, 28.084195 ], [ 86.223965, 28.092642 ], [ 86.19132, 28.167058 ], [ 86.140198, 28.114814 ], [ 86.128495, 28.086835 ], [ 86.086611, 28.090002 ], [ 86.082915, 28.018175 ], [ 86.125415, 27.923035 ], [ 86.053966, 27.900823 ], [ 86.002227, 27.90717 ], [ 85.949256, 27.937311 ], [ 85.980053, 27.984357 ], [ 85.901213, 28.053566 ], [ 85.898749, 28.101617 ], [ 85.871648, 28.124843 ], [ 85.854402, 28.172334 ], [ 85.791576, 28.195544 ], [ 85.753388, 28.227714 ], [ 85.720743, 28.372093 ], [ 85.682555, 28.375779 ], [ 85.650526, 28.283592 ], [ 85.601251, 28.254075 ], [ 85.602483, 28.295712 ], [ 85.520563, 28.326798 ], [ 85.458969, 28.332593 ], [ 85.415853, 28.321003 ], [ 85.379512, 28.274105 ], [ 85.349947, 28.298347 ], [ 85.272339, 28.282538 ], [ 85.209513, 28.338914 ], [ 85.179948, 28.324164 ], [ 85.113427, 28.344708 ], [ 85.129441, 28.377885 ], [ 85.108499, 28.461047 ], [ 85.160238, 28.49261 ], [ 85.189803, 28.544669 ], [ 85.18426, 28.587244 ], [ 85.195963, 28.624022 ], [ 85.155926, 28.643983 ], [ 85.126361, 28.676016 ], [ 85.05676, 28.674441 ], [ 84.995782, 28.611414 ], [ 84.981616, 28.586193 ], [ 84.896616, 28.587244 ], [ 84.857196, 28.567798 ], [ 84.773428, 28.610363 ], [ 84.698284, 28.633478 ], [ 84.699515, 28.671816 ], [ 84.669334, 28.680742 ], [ 84.650856, 28.714338 ], [ 84.620059, 28.732182 ], [ 84.557233, 28.74635 ], [ 84.483321, 28.735331 ], [ 84.445133, 28.764189 ], [ 84.434046, 28.823978 ], [ 84.404481, 28.828173 ], [ 84.408176, 28.85386 ], [ 84.340423, 28.866963 ], [ 84.330568, 28.859101 ], [ 84.268358, 28.895261 ], [ 84.234481, 28.889497 ], [ 84.228322, 28.949738 ], [ 84.248648, 29.030353 ], [ 84.224626, 29.049189 ], [ 84.194445, 29.045004 ], [ 84.192597, 29.084236 ], [ 84.20738, 29.118749 ], [ 84.176583, 29.133909 ], [ 84.17104, 29.19453 ], [ 84.197525, 29.210202 ], [ 84.203068, 29.239972 ], [ 84.130388, 29.239972 ], [ 84.116837, 29.286438 ], [ 84.052163, 29.296877 ], [ 84.002272, 29.291658 ], [ 83.986874, 29.325057 ], [ 83.949301, 29.312533 ], [ 83.911729, 29.323491 ], [ 83.851367, 29.294789 ], [ 83.82057, 29.294267 ], [ 83.800244, 29.249372 ], [ 83.727563, 29.244672 ], [ 83.667201, 29.200277 ], [ 83.656114, 29.16736 ], [ 83.596368, 29.174153 ], [ 83.57789, 29.203934 ], [ 83.548941, 29.201322 ], [ 83.492274, 29.280174 ], [ 83.463941, 29.285916 ], [ 83.450391, 29.332883 ], [ 83.423289, 29.361053 ], [ 83.415898, 29.420496 ], [ 83.383253, 29.42206 ], [ 83.325355, 29.502826 ], [ 83.27608, 29.505951 ], [ 83.266841, 29.571035 ], [ 83.217565, 29.60018 ], [ 83.164595, 29.595496 ], [ 83.159667, 29.61735 ], [ 83.12887, 29.623593 ], [ 83.088834, 29.604863 ], [ 83.011226, 29.667804 ], [ 82.966878, 29.658963 ], [ 82.9484, 29.704718 ], [ 82.885574, 29.689122 ], [ 82.830756, 29.687562 ], [ 82.816589, 29.717192 ], [ 82.774089, 29.726548 ], [ 82.757459, 29.761881 ], [ 82.691553, 29.766037 ], [ 82.737749, 29.80655 ], [ 82.703872, 29.847566 ], [ 82.6238, 29.834588 ], [ 82.64351, 29.868846 ], [ 82.609017, 29.886489 ], [ 82.560974, 29.955476 ], [ 82.498148, 29.947698 ], [ 82.474743, 29.973622 ], [ 82.431011, 29.989692 ], [ 82.412533, 30.011978 ], [ 82.368185, 30.014051 ], [ 82.333693, 30.045138 ], [ 82.311519, 30.035813 ], [ 82.246845, 30.071555 ], [ 82.17786, 30.06793 ], [ 82.183403, 30.12178 ], [ 82.207425, 30.143519 ], [ 82.188947, 30.18543 ], [ 82.142135, 30.200948 ], [ 82.114418, 30.226806 ], [ 82.11873, 30.279019 ], [ 82.132896, 30.30434 ], [ 82.104563, 30.346182 ], [ 82.060215, 30.332237 ], [ 82.022027, 30.339468 ], [ 81.99123, 30.322939 ], [ 81.954274, 30.355995 ], [ 81.939491, 30.344633 ], [ 81.872354, 30.373035 ], [ 81.759021, 30.385426 ], [ 81.723913, 30.407623 ], [ 81.63029, 30.446842 ], [ 81.613044, 30.412784 ], [ 81.566232, 30.428782 ], [ 81.555761, 30.369421 ], [ 81.494783, 30.381296 ], [ 81.454131, 30.412268 ], [ 81.418407, 30.420525 ], [ 81.406704, 30.40401 ], [ 81.432573, 30.379231 ], [ 81.406088, 30.369421 ], [ 81.399929, 30.319323 ], [ 81.427646, 30.305373 ], [ 81.406088, 30.291938 ], [ 81.419023, 30.270232 ], [ 81.397465, 30.240767 ], [ 81.393769, 30.199396 ], [ 81.335871, 30.149729 ], [ 81.269349, 30.153351 ], [ 81.293371, 30.094859 ], [ 81.2829, 30.061197 ], [ 81.247792, 30.032705 ], [ 81.256415, 30.011978 ], [ 81.225618, 30.005759 ], [ 81.131995, 30.016124 ], [ 81.09627, 30.052909 ], [ 81.110437, 30.085538 ], [ 81.085799, 30.100554 ], [ 81.082104, 30.151281 ], [ 81.038372, 30.205086 ], [ 81.034677, 30.246971 ], [ 80.996488, 30.267648 ], [ 80.933662, 30.266614 ], [ 80.910873, 30.30279 ], [ 80.81725, 30.321389 ], [ 80.719316, 30.414848 ], [ 80.692214, 30.416913 ], [ 80.633084, 30.458707 ], [ 80.585041, 30.463866 ], [ 80.549316, 30.448905 ], [ 80.504969, 30.483466 ], [ 80.446454, 30.495327 ], [ 80.43044, 30.515952 ], [ 80.357759, 30.520592 ], [ 80.322035, 30.564403 ], [ 80.261673, 30.566465 ], [ 80.214245, 30.586044 ], [ 80.143412, 30.55822 ], [ 80.04363, 30.603559 ], [ 80.014065, 30.661748 ], [ 79.970333, 30.685941 ], [ 79.955551, 30.738422 ], [ 79.961094, 30.771337 ], [ 79.900732, 30.7991 ], [ 79.913051, 30.833022 ], [ 79.890877, 30.855116 ], [ 79.835443, 30.851006 ], [ 79.75845, 30.936769 ], [ 79.729501, 30.941389 ], [ 79.668523, 30.980392 ], [ 79.660516, 30.956787 ], [ 79.59769, 30.925989 ], [ 79.550879, 30.957813 ], [ 79.505915, 31.027584 ], [ 79.427075, 31.018353 ], [ 79.424611, 31.061425 ], [ 79.404901, 31.071678 ], [ 79.35809, 31.031174 ], [ 79.316206, 31.01784 ], [ 79.33222, 30.969103 ], [ 79.227511, 30.949088 ], [ 79.205953, 31.0004 ], [ 79.181931, 31.015788 ], [ 79.096931, 30.992192 ], [ 79.059359, 31.028097 ], [ 79.010084, 31.043994 ], [ 78.97436, 31.115751 ], [ 78.997765, 31.158779 ], [ 78.930628, 31.220726 ], [ 78.923852, 31.246824 ], [ 78.884432, 31.277006 ], [ 78.865338, 31.312804 ], [ 78.859179, 31.289281 ], [ 78.795121, 31.301043 ], [ 78.755085, 31.355742 ], [ 78.760013, 31.392531 ], [ 78.792041, 31.435944 ], [ 78.755701, 31.478316 ], [ 78.729832, 31.478316 ], [ 78.740303, 31.532912 ], [ 78.779723, 31.545154 ], [ 78.833925, 31.584927 ], [ 78.845628, 31.609905 ], [ 78.806824, 31.64099 ], [ 78.798817, 31.675629 ], [ 78.763092, 31.668499 ], [ 78.706426, 31.778453 ], [ 78.654687, 31.819144 ], [ 78.665158, 31.851684 ], [ 78.739687, 31.885228 ], [ 78.768636, 31.92638 ], [ 78.762476, 31.947203 ], [ 78.705194, 31.988835 ], [ 78.60726, 32.023851 ], [ 78.609107, 32.052768 ], [ 78.527188, 32.11463 ], [ 78.509941, 32.147065 ], [ 78.469905, 32.127808 ], [ 78.429869, 32.194683 ], [ 78.430485, 32.212407 ], [ 78.475449, 32.236708 ], [ 78.508709, 32.297939 ], [ 78.480992, 32.329297 ], [ 78.483456, 32.357106 ], [ 78.458818, 32.379853 ], [ 78.472985, 32.435431 ], [ 78.426174, 32.502584 ], [ 78.395377, 32.530339 ], [ 78.424942, 32.565652 ], [ 78.500086, 32.580782 ], [ 78.518564, 32.605993 ], [ 78.577695, 32.615067 ], [ 78.588782, 32.637748 ], [ 78.628202, 32.630188 ], [ 78.675013, 32.658408 ], [ 78.6861, 32.680071 ], [ 78.741534, 32.703743 ], [ 78.74215, 32.654881 ], [ 78.781571, 32.608009 ], [ 78.760629, 32.563635 ], [ 78.782186, 32.480373 ], [ 78.81052, 32.436441 ], [ 78.87273, 32.40512 ], [ 78.904142, 32.374798 ], [ 78.970664, 32.331826 ], [ 79.005772, 32.375304 ], [ 79.067982, 32.380863 ], [ 79.103091, 32.369744 ], [ 79.124649, 32.416235 ], [ 79.135736, 32.472295 ], [ 79.180083, 32.492994 ], [ 79.190554, 32.511669 ], [ 79.252148, 32.516715 ], [ 79.272474, 32.561113 ], [ 79.308199, 32.596918 ], [ 79.299575, 32.637244 ], [ 79.27309, 32.678056 ], [ 79.301423, 32.728919 ], [ 79.275554, 32.778746 ], [ 79.225047, 32.784281 ], [ 79.237982, 32.846145 ], [ 79.227511, 32.89038 ], [ 79.255844, 32.942628 ], [ 79.204721, 32.964724 ], [ 79.162837, 33.01191 ], [ 79.139431, 33.117735 ], [ 79.162221, 33.165841 ], [ 79.152366, 33.184375 ], [ 79.10925, 33.200401 ], [ 79.072294, 33.22844 ], [ 79.083997, 33.245459 ], [ 79.041497, 33.268479 ], [ 79.022403, 33.323504 ], [ 78.9682, 33.334505 ], [ 78.949722, 33.376495 ], [ 78.896751, 33.41247 ], [ 78.84994, 33.419963 ], [ 78.816679, 33.480882 ], [ 78.74215, 33.55323 ], [ 78.755085, 33.623025 ], [ 78.713201, 33.623025 ], [ 78.684868, 33.654415 ], [ 78.692259, 33.676331 ], [ 78.779723, 33.73259 ], [ 78.758165, 33.790802 ], [ 78.766172, 33.823124 ], [ 78.756317, 33.8773 ], [ 78.762476, 33.90959 ], [ 78.734143, 33.918529 ], [ 78.744614, 33.980585 ], [ 78.736607, 33.999937 ], [ 78.656535, 34.030196 ], [ 78.661462, 34.086718 ], [ 78.737223, 34.089692 ], [ 78.801897, 34.137258 ], [ 78.828998, 34.125369 ], [ 78.878273, 34.163012 ], [ 78.910302, 34.143202 ], [ 78.9257, 34.155584 ], [ 78.941099, 34.212022 ], [ 78.958345, 34.230827 ], [ 78.981751, 34.31836 ], [ 79.019939, 34.313417 ], [ 79.039649, 34.33467 ], [ 79.048888, 34.348506 ], [ 79.0107, 34.399877 ], [ 79.039033, 34.421601 ], [ 79.072294, 34.412714 ], [ 79.161605, 34.441345 ], [ 79.179467, 34.422588 ], [ 79.241677, 34.415183 ], [ 79.274322, 34.435916 ], [ 79.326677, 34.44332 ], [ 79.363017, 34.428018 ], [ 79.435082, 34.447761 ], [ 79.504683, 34.45467 ], [ 79.545335, 34.476381 ], [ 79.58106, 34.456151 ], [ 79.675914, 34.451216 ], [ 79.699936, 34.477861 ], [ 79.735661, 34.471447 ], [ 79.801566, 34.478847 ], [ 79.861312, 34.528166 ], [ 79.84345, 34.55725 ], [ 79.88595, 34.642965 ], [ 79.866856, 34.671517 ], [ 79.906892, 34.683821 ], [ 79.898268, 34.732035 ], [ 79.947544, 34.821008 ], [ 79.926602, 34.849499 ], [ 79.961094, 34.862759 ], [ 79.996819, 34.856375 ], [ 80.003594, 34.895162 ], [ 80.034391, 34.902033 ], [ 80.041782, 34.943252 ], [ 80.02392, 34.971209 ], [ 80.04363, 35.022196 ], [ 80.031311, 35.034447 ], [ 80.078123, 35.076578 ], [ 80.118159, 35.066293 ], [ 80.23026, 35.147565 ], [ 80.223484, 35.177409 ], [ 80.257977, 35.203331 ], [ 80.362687, 35.20871 ], [ 80.267832, 35.295701 ], [ 80.286926, 35.35283 ], [ 80.321419, 35.38699 ], [ 80.375006, 35.387966 ], [ 80.432904, 35.449418 ], [ 80.444607, 35.417235 ], [ 80.514824, 35.391869 ], [ 80.532686, 35.404553 ], [ 80.56841, 35.391381 ], [ 80.599823, 35.409431 ], [ 80.65649, 35.393821 ], [ 80.690982, 35.364544 ], [ 80.689135, 35.339162 ], [ 80.759968, 35.334768 ], [ 80.844351, 35.345508 ], [ 80.894242, 35.324027 ], [ 80.924423, 35.330862 ], [ 80.963844, 35.310842 ], [ 81.026053, 35.31133 ], [ 81.002648, 35.334768 ], [ 81.030981, 35.337209 ], [ 81.031597, 35.380648 ], [ 81.054387, 35.402602 ], [ 81.09935, 35.40748 ], [ 81.103662, 35.386015 ], [ 81.142466, 35.365032 ], [ 81.191741, 35.36552 ], [ 81.219458, 35.319144 ], [ 81.26627, 35.322562 ], [ 81.285364, 35.345508 ], [ 81.314313, 35.337209 ], [ 81.363588, 35.354783 ], [ 81.385762, 35.335256 ], [ 81.441196, 35.333303 ], [ 81.447972, 35.318167 ], [ 81.504638, 35.279092 ], [ 81.513261, 35.23511 ], [ 81.68634, 35.235599 ], [ 81.736847, 35.26248 ], [ 81.804601, 35.270786 ], [ 81.853876, 35.25857 ], [ 81.927789, 35.271275 ], [ 81.955506, 35.307423 ], [ 81.99123, 35.30547 ], [ 82.030034, 35.321585 ], [ 82.05344, 35.35039 ], [ 82.029419, 35.426013 ], [ 82.034346, 35.451855 ], [ 82.071302, 35.450393 ], [ 82.086701, 35.467454 ], [ 82.164925, 35.495719 ], [ 82.189563, 35.513258 ], [ 82.234526, 35.520565 ], [ 82.263475, 35.547837 ], [ 82.2992, 35.544916 ], [ 82.328149, 35.559523 ], [ 82.350323, 35.611113 ], [ 82.336156, 35.651486 ], [ 82.392823, 35.656349 ], [ 82.424852, 35.712736 ], [ 82.468583, 35.717595 ], [ 82.501844, 35.701073 ], [ 82.546192, 35.708362 ], [ 82.628727, 35.692324 ], [ 82.652133, 35.67288 ], [ 82.731589, 35.637868 ], [ 82.780249, 35.666073 ], [ 82.795031, 35.688436 ], [ 82.873871, 35.688922 ], [ 82.894813, 35.673852 ], [ 82.967494, 35.667532 ], [ 82.956407, 35.636409 ], [ 82.981661, 35.599922 ], [ 82.971806, 35.548324 ], [ 82.998907, 35.484512 ], [ 83.067892, 35.46258 ], [ 83.088834, 35.425526 ], [ 83.127022, 35.398699 ], [ 83.178145, 35.38943 ], [ 83.251442, 35.417722 ], [ 83.280391, 35.401138 ], [ 83.333978, 35.397236 ], [ 83.405427, 35.380648 ], [ 83.449159, 35.382111 ], [ 83.502745, 35.360639 ], [ 83.540318, 35.364056 ], [ 83.54155, 35.341603 ], [ 83.599448, 35.351366 ], [ 83.622238, 35.335256 ], [ 83.677672, 35.361128 ], [ 83.785462, 35.36308 ], [ 83.79778, 35.354783 ], [ 83.885244, 35.367472 ], [ 83.906186, 35.40309 ], [ 84.005968, 35.422599 ], [ 84.077417, 35.400163 ], [ 84.095895, 35.362592 ], [ 84.140859, 35.379184 ], [ 84.160569, 35.359663 ], [ 84.200605, 35.381135 ], [ 84.274517, 35.404065 ], [ 84.333032, 35.413821 ], [ 84.424191, 35.466479 ], [ 84.45314, 35.473303 ], [ 84.475929, 35.516181 ], [ 84.448828, 35.550272 ], [ 84.513502, 35.564391 ], [ 84.570168, 35.588242 ], [ 84.628067, 35.595055 ], [ 84.704443, 35.616951 ], [ 84.729081, 35.613546 ], [ 84.798066, 35.647595 ], [ 84.920022, 35.696213 ], [ 84.973608, 35.709334 ], [ 84.99455, 35.737028 ], [ 85.053065, 35.752086 ], [ 85.146071, 35.742371 ], [ 85.271107, 35.788989 ], [ 85.341324, 35.753543 ], [ 85.373969, 35.700101 ], [ 85.518715, 35.680658 ], [ 85.566142, 35.6403 ], [ 85.612953, 35.651486 ], [ 85.65299, 35.731199 ], [ 85.691178, 35.751114 ], [ 85.811286, 35.778794 ], [ 85.835308, 35.771996 ], [ 85.903677, 35.78462 ], [ 85.949256, 35.778794 ], [ 86.035488, 35.846738 ], [ 86.05335, 35.842857 ], [ 86.090306, 35.876809 ], [ 86.093386, 35.906868 ], [ 86.129111, 35.941761 ], [ 86.150668, 36.00424 ], [ 86.173458, 36.008113 ], [ 86.199944, 36.047801 ], [ 86.182081, 36.064734 ], [ 86.187625, 36.130983 ], [ 86.248603, 36.141616 ], [ 86.2794, 36.170608 ], [ 86.35824, 36.168676 ], [ 86.392733, 36.206834 ], [ 86.454943, 36.221319 ], [ 86.515305, 36.205385 ], [ 86.531935, 36.227113 ], [ 86.599072, 36.222285 ], [ 86.69947, 36.24449 ], [ 86.746282, 36.291777 ], [ 86.836209, 36.291294 ], [ 86.86331, 36.299977 ], [ 86.887332, 36.262829 ], [ 86.931064, 36.265242 ], [ 86.943998, 36.284058 ], [ 86.996353, 36.308658 ], [ 87.051788, 36.2966 ], [ 87.08628, 36.310587 ], [ 87.149106, 36.297565 ], [ 87.161425, 36.325535 ], [ 87.193454, 36.349158 ], [ 87.292004, 36.358797 ], [ 87.348055, 36.393008 ], [ 87.363453, 36.420463 ], [ 87.386859, 36.412757 ], [ 87.426895, 36.42576 ], [ 87.460155, 36.409868 ], [ 87.470626, 36.354459 ], [ 87.570409, 36.342409 ], [ 87.6203, 36.360243 ], [ 87.731785, 36.384818 ], [ 87.767509, 36.3747 ], [ 87.826023, 36.391563 ], [ 87.838342, 36.383855 ], [ 87.919646, 36.39349 ], [ 87.95845, 36.408423 ], [ 87.983088, 36.437797 ], [ 88.006494, 36.430575 ], [ 88.092109, 36.43539 ], [ 88.134609, 36.427205 ], [ 88.182652, 36.452721 ], [ 88.222688, 36.447426 ], [ 88.241782, 36.468605 ], [ 88.282434, 36.470049 ], [ 88.366202, 36.458016 ], [ 88.356963, 36.477268 ], [ 88.41055, 36.473418 ], [ 88.470912, 36.48208 ], [ 88.498629, 36.446463 ], [ 88.573158, 36.461386 ], [ 88.618121, 36.428168 ], [ 88.623665, 36.389636 ], [ 88.690186, 36.367954 ], [ 88.766563, 36.292259 ], [ 88.783809, 36.291777 ], [ 88.802903, 36.33807 ], [ 88.838628, 36.353496 ], [ 88.870657, 36.348193 ], [ 88.926091, 36.36458 ], [ 88.964279, 36.318785 ], [ 89.013554, 36.315409 ], [ 89.054822, 36.291777 ], [ 89.10225, 36.281164 ], [ 89.126887, 36.254626 ], [ 89.198952, 36.260417 ], [ 89.232213, 36.295636 ], [ 89.292575, 36.231457 ], [ 89.335075, 36.23725 ], [ 89.375727, 36.228078 ], [ 89.490291, 36.151281 ], [ 89.594385, 36.126632 ], [ 89.614711, 36.109712 ], [ 89.711414, 36.093272 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "610000", "name": "陕西省", "center": [ 108.948024, 34.263161 ], "centroid": [ 108.887304, 35.263625 ], "childrenNum": 10, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 26, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 110.398352, 33.176862 ], [ 110.398352, 33.176862 ], [ 110.372482, 33.186379 ], [ 110.33799, 33.160331 ], [ 110.285635, 33.171352 ], [ 110.218497, 33.163336 ], [ 110.164911, 33.209415 ], [ 110.031252, 33.191888 ], [ 109.999223, 33.212419 ], [ 109.973353, 33.203907 ], [ 109.916687, 33.229942 ], [ 109.852013, 33.247961 ], [ 109.813209, 33.236449 ], [ 109.732521, 33.231443 ], [ 109.693101, 33.254468 ], [ 109.649985, 33.251465 ], [ 109.619804, 33.275484 ], [ 109.60687, 33.235949 ], [ 109.514479, 33.237951 ], [ 109.498464, 33.207412 ], [ 109.438718, 33.152314 ], [ 109.468283, 33.140288 ], [ 109.522486, 33.138785 ], [ 109.576073, 33.110216 ], [ 109.688174, 33.116733 ], [ 109.704188, 33.101694 ], [ 109.794731, 33.067095 ], [ 109.785492, 32.987316 ], [ 109.76455, 32.909474 ], [ 109.789804, 32.882339 ], [ 109.847702, 32.893395 ], [ 109.856941, 32.910479 ], [ 109.907448, 32.903947 ], [ 109.927158, 32.887364 ], [ 109.988752, 32.886359 ], [ 110.051578, 32.851676 ], [ 110.105164, 32.832569 ], [ 110.142121, 32.802895 ], [ 110.127338, 32.77774 ], [ 110.159367, 32.767173 ], [ 110.156903, 32.683093 ], [ 110.206179, 32.633212 ], [ 110.153824, 32.593388 ], [ 110.124259, 32.616579 ], [ 110.090382, 32.617083 ], [ 110.084223, 32.580782 ], [ 110.017701, 32.546989 ], [ 109.97089, 32.577756 ], [ 109.910528, 32.592884 ], [ 109.816905, 32.577252 ], [ 109.746072, 32.594901 ], [ 109.726978, 32.608513 ], [ 109.631507, 32.599943 ], [ 109.619804, 32.56767 ], [ 109.637051, 32.540935 ], [ 109.575457, 32.506622 ], [ 109.526797, 32.43341 ], [ 109.529877, 32.405625 ], [ 109.502776, 32.38895 ], [ 109.513247, 32.342444 ], [ 109.495385, 32.300468 ], [ 109.528645, 32.270112 ], [ 109.550203, 32.225065 ], [ 109.592703, 32.219495 ], [ 109.604406, 32.199241 ], [ 109.58716, 32.161251 ], [ 109.621652, 32.106519 ], [ 109.590855, 32.047696 ], [ 109.590855, 32.012688 ], [ 109.631507, 31.962436 ], [ 109.62042, 31.928412 ], [ 109.584696, 31.900472 ], [ 109.60379, 31.885737 ], [ 109.633971, 31.824738 ], [ 109.633971, 31.804396 ], [ 109.592087, 31.789136 ], [ 109.585928, 31.726546 ], [ 109.549587, 31.73011 ], [ 109.502776, 31.716365 ], [ 109.446109, 31.722983 ], [ 109.381436, 31.705165 ], [ 109.281654, 31.716874 ], [ 109.282885, 31.743343 ], [ 109.253936, 31.759628 ], [ 109.279806, 31.776418 ], [ 109.27611, 31.79931 ], [ 109.195422, 31.817618 ], [ 109.191111, 31.85575 ], [ 109.123357, 31.892851 ], [ 109.085785, 31.929428 ], [ 108.986619, 31.980205 ], [ 108.902235, 31.984774 ], [ 108.837561, 32.039072 ], [ 108.78767, 32.04871 ], [ 108.75133, 32.076098 ], [ 108.734084, 32.106519 ], [ 108.676801, 32.10297 ], [ 108.585026, 32.17189 ], [ 108.543758, 32.177969 ], [ 108.509882, 32.201266 ], [ 108.507418, 32.245819 ], [ 108.469846, 32.270618 ], [ 108.414411, 32.252399 ], [ 108.389773, 32.263533 ], [ 108.310933, 32.232152 ], [ 108.240716, 32.274666 ], [ 108.179738, 32.221521 ], [ 108.156948, 32.239239 ], [ 108.143398, 32.219495 ], [ 108.086731, 32.233165 ], [ 108.018362, 32.2119 ], [ 108.024521, 32.177462 ], [ 107.979558, 32.146051 ], [ 107.924739, 32.197215 ], [ 107.890247, 32.214432 ], [ 107.864377, 32.201266 ], [ 107.812022, 32.247844 ], [ 107.753508, 32.338399 ], [ 107.707929, 32.331826 ], [ 107.680827, 32.397035 ], [ 107.648183, 32.413709 ], [ 107.598291, 32.411688 ], [ 107.527458, 32.38238 ], [ 107.489886, 32.425328 ], [ 107.456625, 32.41775 ], [ 107.460937, 32.453612 ], [ 107.438763, 32.465732 ], [ 107.436299, 32.529835 ], [ 107.382097, 32.54043 ], [ 107.356843, 32.506622 ], [ 107.313727, 32.489965 ], [ 107.287858, 32.457147 ], [ 107.263836, 32.403099 ], [ 107.212097, 32.428864 ], [ 107.189924, 32.468256 ], [ 107.127098, 32.482393 ], [ 107.080286, 32.542448 ], [ 107.108004, 32.600951 ], [ 107.098765, 32.649338 ], [ 107.05996, 32.686115 ], [ 107.066736, 32.708779 ], [ 107.012533, 32.721367 ], [ 106.912751, 32.704247 ], [ 106.903512, 32.721367 ], [ 106.854853, 32.724388 ], [ 106.82344, 32.705254 ], [ 106.793259, 32.712807 ], [ 106.783404, 32.735967 ], [ 106.733513, 32.739491 ], [ 106.670071, 32.694678 ], [ 106.626955, 32.682086 ], [ 106.585687, 32.68813 ], [ 106.517934, 32.668485 ], [ 106.498224, 32.649338 ], [ 106.451412, 32.65992 ], [ 106.421231, 32.616579 ], [ 106.389203, 32.62666 ], [ 106.347935, 32.671003 ], [ 106.301123, 32.680071 ], [ 106.267863, 32.673522 ], [ 106.254928, 32.693671 ], [ 106.17424, 32.6977 ], [ 106.120037, 32.719856 ], [ 106.071378, 32.758114 ], [ 106.076305, 32.759121 ], [ 106.076921, 32.76365 ], [ 106.07261, 32.76365 ], [ 106.093552, 32.82402 ], [ 106.071378, 32.828546 ], [ 106.044277, 32.864747 ], [ 106.011632, 32.829552 ], [ 105.969132, 32.849162 ], [ 105.93156, 32.826032 ], [ 105.893371, 32.838603 ], [ 105.849024, 32.817985 ], [ 105.825002, 32.824523 ], [ 105.822538, 32.770192 ], [ 105.779423, 32.750061 ], [ 105.768952, 32.767676 ], [ 105.719061, 32.759624 ], [ 105.677793, 32.726402 ], [ 105.596489, 32.69921 ], [ 105.585402, 32.728919 ], [ 105.563844, 32.724891 ], [ 105.555221, 32.794343 ], [ 105.534279, 32.790822 ], [ 105.524424, 32.847654 ], [ 105.495475, 32.873292 ], [ 105.49917, 32.911986 ], [ 105.528119, 32.919019 ], [ 105.565692, 32.906962 ], [ 105.590329, 32.87681 ], [ 105.638373, 32.879323 ], [ 105.656851, 32.895405 ], [ 105.735691, 32.905454 ], [ 105.82685, 32.950663 ], [ 105.861959, 32.939112 ], [ 105.917393, 32.993841 ], [ 105.926632, 33.042517 ], [ 105.914929, 33.066092 ], [ 105.934639, 33.112221 ], [ 105.923552, 33.147805 ], [ 105.897067, 33.146803 ], [ 105.93156, 33.178365 ], [ 105.968516, 33.154318 ], [ 105.965436, 33.204407 ], [ 105.917393, 33.237951 ], [ 105.862574, 33.234447 ], [ 105.799133, 33.258471 ], [ 105.791741, 33.278486 ], [ 105.752937, 33.291994 ], [ 105.755401, 33.329004 ], [ 105.709822, 33.382991 ], [ 105.827466, 33.379993 ], [ 105.837937, 33.410971 ], [ 105.831162, 33.451926 ], [ 105.842248, 33.489866 ], [ 105.871198, 33.511325 ], [ 105.902611, 33.556222 ], [ 105.940183, 33.570684 ], [ 105.971596, 33.613058 ], [ 106.047356, 33.610067 ], [ 106.086776, 33.617045 ], [ 106.117573, 33.602591 ], [ 106.108334, 33.569686 ], [ 106.187174, 33.546746 ], [ 106.237681, 33.564201 ], [ 106.303587, 33.604585 ], [ 106.35163, 33.587137 ], [ 106.384891, 33.612061 ], [ 106.447101, 33.613058 ], [ 106.456956, 33.532779 ], [ 106.540108, 33.512822 ], [ 106.58076, 33.576169 ], [ 106.575832, 33.631497 ], [ 106.534564, 33.695254 ], [ 106.482825, 33.707203 ], [ 106.488369, 33.757969 ], [ 106.461883, 33.789807 ], [ 106.491448, 33.834559 ], [ 106.475434, 33.875809 ], [ 106.428007, 33.866368 ], [ 106.41076, 33.909093 ], [ 106.474202, 33.970659 ], [ 106.471738, 34.024244 ], [ 106.505615, 34.056479 ], [ 106.501919, 34.105055 ], [ 106.560434, 34.109514 ], [ 106.585071, 34.149641 ], [ 106.55797, 34.229837 ], [ 106.5321, 34.254079 ], [ 106.496376, 34.238248 ], [ 106.526557, 34.292159 ], [ 106.577064, 34.280786 ], [ 106.589383, 34.253584 ], [ 106.63373, 34.260014 ], [ 106.652825, 34.24369 ], [ 106.68239, 34.256057 ], [ 106.705179, 34.299575 ], [ 106.691013, 34.337635 ], [ 106.717498, 34.369255 ], [ 106.638042, 34.391481 ], [ 106.610941, 34.454177 ], [ 106.558586, 34.48822 ], [ 106.513622, 34.498085 ], [ 106.514238, 34.511894 ], [ 106.455108, 34.531617 ], [ 106.334384, 34.517811 ], [ 106.341159, 34.568093 ], [ 106.314058, 34.578934 ], [ 106.419384, 34.643458 ], [ 106.471122, 34.634102 ], [ 106.442173, 34.675455 ], [ 106.456956, 34.703996 ], [ 106.487137, 34.715311 ], [ 106.505615, 34.746789 ], [ 106.539492, 34.745805 ], [ 106.575216, 34.769897 ], [ 106.550579, 34.82936 ], [ 106.556122, 34.861285 ], [ 106.527789, 34.876507 ], [ 106.493296, 34.941289 ], [ 106.484673, 34.983959 ], [ 106.494528, 35.006021 ], [ 106.494528, 35.006021 ], [ 106.52163, 35.027587 ], [ 106.541956, 35.083925 ], [ 106.577064, 35.089312 ], [ 106.615252, 35.071191 ], [ 106.706411, 35.081966 ], [ 106.710723, 35.100574 ], [ 106.838222, 35.080007 ], [ 106.901664, 35.094698 ], [ 106.950323, 35.066782 ], [ 106.990975, 35.068252 ], [ 107.012533, 35.029547 ], [ 107.08275, 35.024156 ], [ 107.089526, 34.976604 ], [ 107.119707, 34.950119 ], [ 107.162206, 34.944233 ], [ 107.189308, 34.893198 ], [ 107.252749, 34.880925 ], [ 107.286626, 34.931968 ], [ 107.350068, 34.93393 ], [ 107.369162, 34.917738 ], [ 107.400575, 34.932949 ], [ 107.455394, 34.916757 ], [ 107.523763, 34.909886 ], [ 107.564415, 34.968757 ], [ 107.619849, 34.964834 ], [ 107.638943, 34.935402 ], [ 107.675284, 34.9511 ], [ 107.741805, 34.953553 ], [ 107.842203, 34.979056 ], [ 107.863145, 34.999158 ], [ 107.846515, 35.024646 ], [ 107.814486, 35.024646 ], [ 107.773218, 35.060904 ], [ 107.773218, 35.060904 ], [ 107.769523, 35.064333 ], [ 107.769523, 35.064333 ], [ 107.727639, 35.120157 ], [ 107.715936, 35.168114 ], [ 107.686371, 35.218 ], [ 107.652494, 35.244886 ], [ 107.667277, 35.257104 ], [ 107.737494, 35.267366 ], [ 107.745501, 35.311819 ], [ 107.841587, 35.276649 ], [ 107.867457, 35.256127 ], [ 107.960464, 35.263457 ], [ 107.949993, 35.245375 ], [ 108.049159, 35.253683 ], [ 108.094739, 35.280069 ], [ 108.174811, 35.304981 ], [ 108.221622, 35.296678 ], [ 108.239484, 35.256127 ], [ 108.296767, 35.267855 ], [ 108.345426, 35.300586 ], [ 108.36144, 35.279581 ], [ 108.48894, 35.275184 ], [ 108.547454, 35.304981 ], [ 108.583178, 35.294724 ], [ 108.614591, 35.328909 ], [ 108.61028, 35.355271 ], [ 108.631222, 35.418698 ], [ 108.605968, 35.503028 ], [ 108.625678, 35.537124 ], [ 108.618287, 35.557088 ], [ 108.539447, 35.605761 ], [ 108.517889, 35.699615 ], [ 108.533903, 35.746257 ], [ 108.527744, 35.82442 ], [ 108.499411, 35.872444 ], [ 108.518505, 35.905414 ], [ 108.562852, 35.921409 ], [ 108.593649, 35.950967 ], [ 108.652164, 35.94806 ], [ 108.659555, 35.990683 ], [ 108.688504, 36.021183 ], [ 108.682345, 36.062316 ], [ 108.712526, 36.138716 ], [ 108.646004, 36.254143 ], [ 108.641693, 36.359279 ], [ 108.651548, 36.384818 ], [ 108.618903, 36.433946 ], [ 108.562852, 36.43876 ], [ 108.510498, 36.47438 ], [ 108.514809, 36.445501 ], [ 108.495099, 36.422389 ], [ 108.460606, 36.422871 ], [ 108.408252, 36.45946 ], [ 108.391621, 36.505654 ], [ 108.365136, 36.519603 ], [ 108.340498, 36.559032 ], [ 108.262274, 36.549417 ], [ 108.245644, 36.571048 ], [ 108.210535, 36.577296 ], [ 108.204992, 36.606607 ], [ 108.204992, 36.606607 ], [ 108.222854, 36.631105 ], [ 108.1976, 36.630144 ], [ 108.163724, 36.563839 ], [ 108.092891, 36.587388 ], [ 108.079956, 36.614294 ], [ 108.060862, 36.592194 ], [ 108.001732, 36.639269 ], [ 108.02329, 36.647912 ], [ 108.006659, 36.683435 ], [ 107.938906, 36.655594 ], [ 107.940754, 36.694953 ], [ 107.914268, 36.720861 ], [ 107.907493, 36.750118 ], [ 107.866841, 36.766899 ], [ 107.768291, 36.792783 ], [ 107.742421, 36.811951 ], [ 107.722095, 36.802367 ], [ 107.670356, 36.83303 ], [ 107.642023, 36.819137 ], [ 107.5909, 36.836382 ], [ 107.540393, 36.828718 ], [ 107.533618, 36.867031 ], [ 107.478183, 36.908196 ], [ 107.365466, 36.905324 ], [ 107.336517, 36.925899 ], [ 107.310032, 36.912502 ], [ 107.291554, 36.979463 ], [ 107.291554, 36.979463 ], [ 107.288474, 37.008143 ], [ 107.288474, 37.008143 ], [ 107.28601, 37.054963 ], [ 107.268764, 37.099367 ], [ 107.281083, 37.127047 ], [ 107.306952, 37.100799 ], [ 107.334669, 37.138975 ], [ 107.336517, 37.165687 ], [ 107.317423, 37.200017 ], [ 107.270612, 37.229089 ], [ 107.309416, 37.239095 ], [ 107.273075, 37.29101 ], [ 107.257677, 37.337179 ], [ 107.282931, 37.437036 ], [ 107.284162, 37.481691 ], [ 107.345756, 37.518725 ], [ 107.369162, 37.58752 ], [ 107.330358, 37.584201 ], [ 107.311264, 37.609806 ], [ 107.361155, 37.613125 ], [ 107.422133, 37.665254 ], [ 107.389488, 37.671413 ], [ 107.387024, 37.691305 ], [ 107.425828, 37.684201 ], [ 107.484959, 37.706458 ], [ 107.499125, 37.765619 ], [ 107.57119, 37.776499 ], [ 107.599523, 37.791162 ], [ 107.620465, 37.776026 ], [ 107.646335, 37.805349 ], [ 107.659269, 37.844112 ], [ 107.65003, 37.86443 ], [ 107.684523, 37.888522 ], [ 107.732566, 37.84931 ], [ 107.842819, 37.828987 ], [ 107.884703, 37.808186 ], [ 107.982022, 37.787378 ], [ 107.993109, 37.735335 ], [ 108.025753, 37.696041 ], [ 108.012819, 37.66857 ], [ 108.025137, 37.649619 ], [ 108.055318, 37.652462 ], [ 108.134159, 37.622131 ], [ 108.193905, 37.638246 ], [ 108.205608, 37.655779 ], [ 108.24626, 37.665728 ], [ 108.293071, 37.656726 ], [ 108.301078, 37.640616 ], [ 108.422418, 37.648672 ], [ 108.485244, 37.678044 ], [ 108.532671, 37.690832 ], [ 108.628142, 37.651988 ], [ 108.699591, 37.669518 ], [ 108.720533, 37.683728 ], [ 108.777815, 37.683728 ], [ 108.791982, 37.700303 ], [ 108.784591, 37.764673 ], [ 108.799989, 37.784068 ], [ 108.791982, 37.872934 ], [ 108.798141, 37.93385 ], [ 108.82709, 37.989056 ], [ 108.797525, 38.04799 ], [ 108.830786, 38.049875 ], [ 108.883141, 38.01405 ], [ 108.893612, 37.978207 ], [ 108.93488, 37.922521 ], [ 108.9743, 37.931962 ], [ 108.982923, 37.964053 ], [ 109.018648, 37.971602 ], [ 109.037742, 38.021593 ], [ 109.06977, 38.023008 ], [ 109.050676, 38.055059 ], [ 109.069155, 38.091336 ], [ 108.964445, 38.154894 ], [ 108.938575, 38.207582 ], [ 108.976148, 38.245192 ], [ 108.961981, 38.26493 ], [ 109.007561, 38.359316 ], [ 109.051292, 38.385122 ], [ 109.054372, 38.433892 ], [ 109.128901, 38.480288 ], [ 109.175712, 38.518694 ], [ 109.196654, 38.552867 ], [ 109.276726, 38.623035 ], [ 109.331545, 38.597783 ], [ 109.367269, 38.627711 ], [ 109.329081, 38.66043 ], [ 109.338936, 38.701542 ], [ 109.404226, 38.720689 ], [ 109.444262, 38.782763 ], [ 109.511399, 38.833595 ], [ 109.549587, 38.805618 ], [ 109.624116, 38.85457 ], [ 109.672159, 38.928167 ], [ 109.685094, 38.968195 ], [ 109.665384, 38.981687 ], [ 109.72513, 39.018429 ], [ 109.762086, 39.057476 ], [ 109.793499, 39.074204 ], [ 109.851397, 39.122971 ], [ 109.890818, 39.103932 ], [ 109.92223, 39.107183 ], [ 109.893897, 39.141075 ], [ 109.961035, 39.191651 ], [ 109.871723, 39.243581 ], [ 109.90252, 39.271848 ], [ 109.962267, 39.212056 ], [ 110.041107, 39.21623 ], [ 110.109476, 39.249606 ], [ 110.217881, 39.281113 ], [ 110.184005, 39.355192 ], [ 110.161831, 39.387115 ], [ 110.136577, 39.39174 ], [ 110.12549, 39.432891 ], [ 110.152592, 39.45415 ], [ 110.243751, 39.423645 ], [ 110.257917, 39.407001 ], [ 110.385417, 39.310291 ], [ 110.429764, 39.341308 ], [ 110.434692, 39.381101 ], [ 110.482735, 39.360745 ], [ 110.524003, 39.382952 ], [ 110.559728, 39.351027 ], [ 110.566503, 39.320014 ], [ 110.596684, 39.282966 ], [ 110.626249, 39.266751 ], [ 110.702626, 39.273701 ], [ 110.731575, 39.30705 ], [ 110.73835, 39.348713 ], [ 110.782698, 39.38804 ], [ 110.869545, 39.494341 ], [ 110.891103, 39.509118 ], [ 110.958856, 39.519275 ], [ 111.017371, 39.552045 ], [ 111.101138, 39.559428 ], [ 111.136863, 39.587106 ], [ 111.154725, 39.569116 ], [ 111.148566, 39.531277 ], [ 111.10545, 39.497573 ], [ 111.10545, 39.472631 ], [ 111.058639, 39.447681 ], [ 111.064182, 39.400989 ], [ 111.098059, 39.401914 ], [ 111.087588, 39.376013 ], [ 111.125776, 39.366297 ], [ 111.159037, 39.362596 ], [ 111.155341, 39.338531 ], [ 111.186138, 39.35149 ], [ 111.179363, 39.326959 ], [ 111.202152, 39.305197 ], [ 111.247732, 39.302419 ], [ 111.213239, 39.257021 ], [ 111.219399, 39.244044 ], [ 111.163348, 39.152678 ], [ 111.173819, 39.135041 ], [ 111.147334, 39.100681 ], [ 111.138095, 39.064447 ], [ 111.094363, 39.030053 ], [ 111.038313, 39.020289 ], [ 110.998276, 38.998433 ], [ 110.980414, 38.970056 ], [ 111.009979, 38.932823 ], [ 111.016755, 38.889981 ], [ 110.995813, 38.868084 ], [ 111.009363, 38.847579 ], [ 110.965016, 38.755699 ], [ 110.915125, 38.704345 ], [ 110.916357, 38.673981 ], [ 110.880632, 38.626776 ], [ 110.898494, 38.587024 ], [ 110.920052, 38.581878 ], [ 110.907733, 38.521035 ], [ 110.870777, 38.510265 ], [ 110.874473, 38.453579 ], [ 110.840596, 38.439986 ], [ 110.796864, 38.453579 ], [ 110.77777, 38.440924 ], [ 110.746973, 38.366355 ], [ 110.701394, 38.353215 ], [ 110.661358, 38.308617 ], [ 110.601612, 38.308147 ], [ 110.57759, 38.297345 ], [ 110.565887, 38.215105 ], [ 110.528315, 38.211814 ], [ 110.509221, 38.192061 ], [ 110.519692, 38.130889 ], [ 110.501829, 38.097929 ], [ 110.507989, 38.013107 ], [ 110.528315, 37.990471 ], [ 110.522771, 37.955088 ], [ 110.59422, 37.922049 ], [ 110.680452, 37.790216 ], [ 110.735886, 37.77035 ], [ 110.750669, 37.736281 ], [ 110.716792, 37.728708 ], [ 110.706321, 37.705511 ], [ 110.775306, 37.680886 ], [ 110.793169, 37.650567 ], [ 110.763604, 37.639668 ], [ 110.771611, 37.594634 ], [ 110.795017, 37.558586 ], [ 110.770995, 37.538184 ], [ 110.759292, 37.474567 ], [ 110.740198, 37.44939 ], [ 110.644111, 37.435135 ], [ 110.630561, 37.372858 ], [ 110.641648, 37.360015 ], [ 110.695234, 37.34955 ], [ 110.678604, 37.317668 ], [ 110.690307, 37.287201 ], [ 110.660126, 37.281011 ], [ 110.651503, 37.256722 ], [ 110.590525, 37.187145 ], [ 110.53509, 37.138021 ], [ 110.535706, 37.115118 ], [ 110.49567, 37.086956 ], [ 110.460561, 37.044932 ], [ 110.417446, 37.027257 ], [ 110.426685, 37.008621 ], [ 110.382953, 37.022001 ], [ 110.381721, 37.002408 ], [ 110.424221, 36.963685 ], [ 110.408823, 36.892403 ], [ 110.376178, 36.882351 ], [ 110.424221, 36.855539 ], [ 110.406975, 36.824886 ], [ 110.423605, 36.818179 ], [ 110.407591, 36.776007 ], [ 110.447011, 36.737649 ], [ 110.438388, 36.685835 ], [ 110.402663, 36.697352 ], [ 110.394656, 36.676716 ], [ 110.426685, 36.657514 ], [ 110.447627, 36.621018 ], [ 110.496902, 36.582102 ], [ 110.488895, 36.556628 ], [ 110.503677, 36.488335 ], [ 110.47288, 36.453203 ], [ 110.489511, 36.430094 ], [ 110.487047, 36.393972 ], [ 110.459946, 36.327946 ], [ 110.474112, 36.306729 ], [ 110.474112, 36.248352 ], [ 110.45625, 36.22663 ], [ 110.447011, 36.164328 ], [ 110.467953, 36.074893 ], [ 110.491974, 36.034735 ], [ 110.49259, 35.994073 ], [ 110.516612, 35.971796 ], [ 110.502445, 35.947575 ], [ 110.516612, 35.918501 ], [ 110.511684, 35.879718 ], [ 110.549257, 35.877778 ], [ 110.550489, 35.838005 ], [ 110.571431, 35.800639 ], [ 110.57759, 35.701559 ], [ 110.609619, 35.632031 ], [ 110.567735, 35.539559 ], [ 110.531394, 35.511309 ], [ 110.477808, 35.413821 ], [ 110.45009, 35.327933 ], [ 110.374946, 35.251728 ], [ 110.369402, 35.158329 ], [ 110.325671, 35.014844 ], [ 110.272084, 34.942761 ], [ 110.257301, 34.934912 ], [ 110.259149, 34.884853 ], [ 110.233896, 34.83722 ], [ 110.232664, 34.80332 ], [ 110.259149, 34.737937 ], [ 110.231432, 34.701044 ], [ 110.23636, 34.670533 ], [ 110.29549, 34.610956 ], [ 110.379257, 34.600612 ], [ 110.366939, 34.566614 ], [ 110.404511, 34.557743 ], [ 110.372482, 34.544435 ], [ 110.360779, 34.516825 ], [ 110.403279, 34.433448 ], [ 110.403279, 34.433448 ], [ 110.473496, 34.393457 ], [ 110.503677, 34.33714 ], [ 110.451938, 34.292653 ], [ 110.428533, 34.288203 ], [ 110.43962, 34.243196 ], [ 110.507989, 34.217466 ], [ 110.55172, 34.213012 ], [ 110.55788, 34.193214 ], [ 110.621938, 34.177372 ], [ 110.642264, 34.161032 ], [ 110.61393, 34.113478 ], [ 110.591757, 34.101586 ], [ 110.587445, 34.023252 ], [ 110.620706, 34.035652 ], [ 110.671213, 33.966192 ], [ 110.665669, 33.937895 ], [ 110.627481, 33.925482 ], [ 110.628713, 33.910086 ], [ 110.587445, 33.887733 ], [ 110.612083, 33.852453 ], [ 110.66259, 33.85295 ], [ 110.712481, 33.833564 ], [ 110.74143, 33.798759 ], [ 110.782082, 33.796272 ], [ 110.81719, 33.751003 ], [ 110.831973, 33.713675 ], [ 110.823966, 33.685793 ], [ 110.878784, 33.634486 ], [ 110.966864, 33.609071 ], [ 111.00382, 33.578662 ], [ 111.002588, 33.535772 ], [ 111.02661, 33.478386 ], [ 111.021682, 33.476389 ], [ 111.021066, 33.471397 ], [ 111.02661, 33.467903 ], [ 110.996429, 33.435946 ], [ 111.025994, 33.375495 ], [ 111.025994, 33.330504 ], [ 110.984726, 33.255469 ], [ 110.960704, 33.253967 ], [ 110.9219, 33.203907 ], [ 110.865234, 33.213921 ], [ 110.828893, 33.201403 ], [ 110.824582, 33.158327 ], [ 110.753133, 33.15031 ], [ 110.702626, 33.097182 ], [ 110.650887, 33.157324 ], [ 110.623785, 33.143796 ], [ 110.59422, 33.168346 ], [ 110.57759, 33.250464 ], [ 110.54125, 33.255469 ], [ 110.471032, 33.171352 ], [ 110.398352, 33.176862 ] ] ], [ [ [ 111.02661, 33.478386 ], [ 111.02661, 33.467903 ], [ 111.021066, 33.471397 ], [ 111.021682, 33.476389 ], [ 111.02661, 33.478386 ] ] ], [ [ [ 106.076921, 32.76365 ], [ 106.076305, 32.759121 ], [ 106.071378, 32.758114 ], [ 106.07261, 32.76365 ], [ 106.076921, 32.76365 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "620000", "name": "甘肃省", "center": [ 103.823557, 36.058039 ], "childrenNum": 14, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 27, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 106.506231, 35.737514 ], [ 106.566593, 35.738971 ], [ 106.595542, 35.727312 ], [ 106.620796, 35.743829 ], [ 106.633115, 35.714679 ], [ 106.66268, 35.70739 ], [ 106.674998, 35.728284 ], [ 106.750759, 35.689408 ], [ 106.750759, 35.725369 ], [ 106.806193, 35.70982 ], [ 106.819128, 35.7448 ], [ 106.867171, 35.738485 ], [ 106.868403, 35.771996 ], [ 106.897353, 35.759856 ], [ 106.927534, 35.810346 ], [ 106.849925, 35.887476 ], [ 106.912751, 35.93207 ], [ 106.940468, 35.931101 ], [ 106.93862, 35.952905 ], [ 106.90228, 35.943699 ], [ 106.94786, 35.988262 ], [ 106.928149, 36.011502 ], [ 106.940468, 36.064734 ], [ 106.957715, 36.091337 ], [ 106.925686, 36.115997 ], [ 106.930613, 36.138716 ], [ 106.873947, 36.178338 ], [ 106.873947, 36.178338 ], [ 106.858548, 36.206834 ], [ 106.858548, 36.206834 ], [ 106.833295, 36.229044 ], [ 106.808657, 36.21118 ], [ 106.772933, 36.212628 ], [ 106.735976, 36.23725 ], [ 106.698404, 36.244008 ], [ 106.685469, 36.273445 ], [ 106.647897, 36.259451 ], [ 106.559202, 36.292259 ], [ 106.54134, 36.25366 ], [ 106.504383, 36.266207 ], [ 106.470507, 36.306246 ], [ 106.497608, 36.31348 ], [ 106.510543, 36.379037 ], [ 106.492064, 36.422389 ], [ 106.523477, 36.468605 ], [ 106.494528, 36.494589 ], [ 106.455724, 36.496995 ], [ 106.39721, 36.548455 ], [ 106.37134, 36.549417 ], [ 106.363949, 36.577296 ], [ 106.392282, 36.556628 ], [ 106.397826, 36.576816 ], [ 106.444637, 36.557109 ], [ 106.465579, 36.583063 ], [ 106.444637, 36.624861 ], [ 106.491448, 36.628703 ], [ 106.490833, 36.685835 ], [ 106.530869, 36.690154 ], [ 106.519782, 36.708868 ], [ 106.519782, 36.708868 ], [ 106.514238, 36.715584 ], [ 106.59431, 36.750118 ], [ 106.644817, 36.72278 ], [ 106.627571, 36.752995 ], [ 106.657752, 36.820575 ], [ 106.637426, 36.867031 ], [ 106.637426, 36.867031 ], [ 106.626955, 36.892403 ], [ 106.609709, 36.878521 ], [ 106.609709, 36.878521 ], [ 106.601702, 36.918244 ], [ 106.549347, 36.941685 ], [ 106.540108, 36.984244 ], [ 106.595542, 36.94025 ], [ 106.594926, 36.967988 ], [ 106.64297, 36.962729 ], [ 106.646665, 37.000496 ], [ 106.666991, 37.016745 ], [ 106.645433, 37.064992 ], [ 106.605397, 37.127524 ], [ 106.6171, 37.135158 ], [ 106.673151, 37.1113 ], [ 106.687933, 37.12991 ], [ 106.728585, 37.121321 ], [ 106.750143, 37.09889 ], [ 106.772933, 37.120367 ], [ 106.776012, 37.158056 ], [ 106.818512, 37.141838 ], [ 106.891193, 37.098413 ], [ 106.912135, 37.110345 ], [ 106.905976, 37.151378 ], [ 106.998367, 37.106527 ], [ 107.031011, 37.108436 ], [ 107.030395, 37.140883 ], [ 107.095685, 37.115595 ], [ 107.133873, 37.134681 ], [ 107.181916, 37.143269 ], [ 107.234887, 37.096503 ], [ 107.268764, 37.099367 ], [ 107.28601, 37.054963 ], [ 107.288474, 37.008143 ], [ 107.288474, 37.008143 ], [ 107.291554, 36.979463 ], [ 107.291554, 36.979463 ], [ 107.310032, 36.912502 ], [ 107.336517, 36.925899 ], [ 107.365466, 36.905324 ], [ 107.478183, 36.908196 ], [ 107.533618, 36.867031 ], [ 107.540393, 36.828718 ], [ 107.5909, 36.836382 ], [ 107.642023, 36.819137 ], [ 107.670356, 36.83303 ], [ 107.722095, 36.802367 ], [ 107.742421, 36.811951 ], [ 107.768291, 36.792783 ], [ 107.866841, 36.766899 ], [ 107.907493, 36.750118 ], [ 107.914268, 36.720861 ], [ 107.940754, 36.694953 ], [ 107.938906, 36.655594 ], [ 108.006659, 36.683435 ], [ 108.02329, 36.647912 ], [ 108.001732, 36.639269 ], [ 108.060862, 36.592194 ], [ 108.079956, 36.614294 ], [ 108.092891, 36.587388 ], [ 108.163724, 36.563839 ], [ 108.1976, 36.630144 ], [ 108.222854, 36.631105 ], [ 108.204992, 36.606607 ], [ 108.204992, 36.606607 ], [ 108.210535, 36.577296 ], [ 108.245644, 36.571048 ], [ 108.262274, 36.549417 ], [ 108.340498, 36.559032 ], [ 108.365136, 36.519603 ], [ 108.391621, 36.505654 ], [ 108.408252, 36.45946 ], [ 108.460606, 36.422871 ], [ 108.495099, 36.422389 ], [ 108.514809, 36.445501 ], [ 108.510498, 36.47438 ], [ 108.562852, 36.43876 ], [ 108.618903, 36.433946 ], [ 108.651548, 36.384818 ], [ 108.641693, 36.359279 ], [ 108.646004, 36.254143 ], [ 108.712526, 36.138716 ], [ 108.682345, 36.062316 ], [ 108.688504, 36.021183 ], [ 108.659555, 35.990683 ], [ 108.652164, 35.94806 ], [ 108.593649, 35.950967 ], [ 108.562852, 35.921409 ], [ 108.518505, 35.905414 ], [ 108.499411, 35.872444 ], [ 108.527744, 35.82442 ], [ 108.533903, 35.746257 ], [ 108.517889, 35.699615 ], [ 108.539447, 35.605761 ], [ 108.618287, 35.557088 ], [ 108.625678, 35.537124 ], [ 108.605968, 35.503028 ], [ 108.631222, 35.418698 ], [ 108.61028, 35.355271 ], [ 108.614591, 35.328909 ], [ 108.583178, 35.294724 ], [ 108.547454, 35.304981 ], [ 108.48894, 35.275184 ], [ 108.36144, 35.279581 ], [ 108.345426, 35.300586 ], [ 108.296767, 35.267855 ], [ 108.239484, 35.256127 ], [ 108.221622, 35.296678 ], [ 108.174811, 35.304981 ], [ 108.094739, 35.280069 ], [ 108.049159, 35.253683 ], [ 107.949993, 35.245375 ], [ 107.960464, 35.263457 ], [ 107.867457, 35.256127 ], [ 107.841587, 35.276649 ], [ 107.745501, 35.311819 ], [ 107.737494, 35.267366 ], [ 107.667277, 35.257104 ], [ 107.652494, 35.244886 ], [ 107.686371, 35.218 ], [ 107.715936, 35.168114 ], [ 107.727639, 35.120157 ], [ 107.769523, 35.064333 ], [ 107.769523, 35.064333 ], [ 107.773218, 35.060904 ], [ 107.773218, 35.060904 ], [ 107.814486, 35.024646 ], [ 107.846515, 35.024646 ], [ 107.863145, 34.999158 ], [ 107.842203, 34.979056 ], [ 107.741805, 34.953553 ], [ 107.675284, 34.9511 ], [ 107.638943, 34.935402 ], [ 107.619849, 34.964834 ], [ 107.564415, 34.968757 ], [ 107.523763, 34.909886 ], [ 107.455394, 34.916757 ], [ 107.400575, 34.932949 ], [ 107.369162, 34.917738 ], [ 107.350068, 34.93393 ], [ 107.286626, 34.931968 ], [ 107.252749, 34.880925 ], [ 107.189308, 34.893198 ], [ 107.162206, 34.944233 ], [ 107.119707, 34.950119 ], [ 107.089526, 34.976604 ], [ 107.08275, 35.024156 ], [ 107.012533, 35.029547 ], [ 106.990975, 35.068252 ], [ 106.950323, 35.066782 ], [ 106.901664, 35.094698 ], [ 106.838222, 35.080007 ], [ 106.710723, 35.100574 ], [ 106.706411, 35.081966 ], [ 106.615252, 35.071191 ], [ 106.577064, 35.089312 ], [ 106.541956, 35.083925 ], [ 106.52163, 35.027587 ], [ 106.494528, 35.006021 ], [ 106.494528, 35.006021 ], [ 106.484673, 34.983959 ], [ 106.493296, 34.941289 ], [ 106.527789, 34.876507 ], [ 106.556122, 34.861285 ], [ 106.550579, 34.82936 ], [ 106.575216, 34.769897 ], [ 106.539492, 34.745805 ], [ 106.505615, 34.746789 ], [ 106.487137, 34.715311 ], [ 106.456956, 34.703996 ], [ 106.442173, 34.675455 ], [ 106.471122, 34.634102 ], [ 106.419384, 34.643458 ], [ 106.314058, 34.578934 ], [ 106.341159, 34.568093 ], [ 106.334384, 34.517811 ], [ 106.455108, 34.531617 ], [ 106.514238, 34.511894 ], [ 106.513622, 34.498085 ], [ 106.558586, 34.48822 ], [ 106.610941, 34.454177 ], [ 106.638042, 34.391481 ], [ 106.717498, 34.369255 ], [ 106.691013, 34.337635 ], [ 106.705179, 34.299575 ], [ 106.68239, 34.256057 ], [ 106.652825, 34.24369 ], [ 106.63373, 34.260014 ], [ 106.589383, 34.253584 ], [ 106.577064, 34.280786 ], [ 106.526557, 34.292159 ], [ 106.496376, 34.238248 ], [ 106.5321, 34.254079 ], [ 106.55797, 34.229837 ], [ 106.585071, 34.149641 ], [ 106.560434, 34.109514 ], [ 106.501919, 34.105055 ], [ 106.505615, 34.056479 ], [ 106.471738, 34.024244 ], [ 106.474202, 33.970659 ], [ 106.41076, 33.909093 ], [ 106.428007, 33.866368 ], [ 106.475434, 33.875809 ], [ 106.491448, 33.834559 ], [ 106.461883, 33.789807 ], [ 106.488369, 33.757969 ], [ 106.482825, 33.707203 ], [ 106.534564, 33.695254 ], [ 106.575832, 33.631497 ], [ 106.58076, 33.576169 ], [ 106.540108, 33.512822 ], [ 106.456956, 33.532779 ], [ 106.447101, 33.613058 ], [ 106.384891, 33.612061 ], [ 106.35163, 33.587137 ], [ 106.303587, 33.604585 ], [ 106.237681, 33.564201 ], [ 106.187174, 33.546746 ], [ 106.108334, 33.569686 ], [ 106.117573, 33.602591 ], [ 106.086776, 33.617045 ], [ 106.047356, 33.610067 ], [ 105.971596, 33.613058 ], [ 105.940183, 33.570684 ], [ 105.902611, 33.556222 ], [ 105.871198, 33.511325 ], [ 105.842248, 33.489866 ], [ 105.831162, 33.451926 ], [ 105.837937, 33.410971 ], [ 105.827466, 33.379993 ], [ 105.709822, 33.382991 ], [ 105.755401, 33.329004 ], [ 105.752937, 33.291994 ], [ 105.791741, 33.278486 ], [ 105.799133, 33.258471 ], [ 105.862574, 33.234447 ], [ 105.917393, 33.237951 ], [ 105.965436, 33.204407 ], [ 105.968516, 33.154318 ], [ 105.93156, 33.178365 ], [ 105.897067, 33.146803 ], [ 105.923552, 33.147805 ], [ 105.934639, 33.112221 ], [ 105.914929, 33.066092 ], [ 105.926632, 33.042517 ], [ 105.917393, 32.993841 ], [ 105.861959, 32.939112 ], [ 105.82685, 32.950663 ], [ 105.735691, 32.905454 ], [ 105.656851, 32.895405 ], [ 105.638373, 32.879323 ], [ 105.590329, 32.87681 ], [ 105.565692, 32.906962 ], [ 105.528119, 32.919019 ], [ 105.49917, 32.911986 ], [ 105.467757, 32.930071 ], [ 105.414171, 32.922034 ], [ 105.408011, 32.885857 ], [ 105.38091, 32.876307 ], [ 105.396308, 32.85067 ], [ 105.396308, 32.85067 ], [ 105.427721, 32.784281 ], [ 105.454207, 32.767173 ], [ 105.448663, 32.732946 ], [ 105.368591, 32.712807 ], [ 105.347033, 32.68259 ], [ 105.297758, 32.656897 ], [ 105.263265, 32.652362 ], [ 105.219534, 32.666469 ], [ 105.215222, 32.63674 ], [ 105.185041, 32.617587 ], [ 105.111128, 32.593893 ], [ 105.0791, 32.637244 ], [ 105.026745, 32.650346 ], [ 104.925115, 32.607505 ], [ 104.881999, 32.600951 ], [ 104.845659, 32.653873 ], [ 104.820405, 32.662943 ], [ 104.795768, 32.643292 ], [ 104.739717, 32.635228 ], [ 104.696601, 32.673522 ], [ 104.643015, 32.661935 ], [ 104.592508, 32.695685 ], [ 104.582653, 32.722374 ], [ 104.526602, 32.728416 ], [ 104.51182, 32.753585 ], [ 104.458849, 32.748551 ], [ 104.363994, 32.822511 ], [ 104.294393, 32.835586 ], [ 104.277147, 32.90244 ], [ 104.288234, 32.942628 ], [ 104.345516, 32.940117 ], [ 104.378161, 32.953174 ], [ 104.383704, 32.994343 ], [ 104.426204, 33.010906 ], [ 104.391711, 33.035493 ], [ 104.337509, 33.038002 ], [ 104.378161, 33.109214 ], [ 104.351059, 33.158828 ], [ 104.32827, 33.223934 ], [ 104.323958, 33.26898 ], [ 104.303632, 33.304499 ], [ 104.333813, 33.315502 ], [ 104.386168, 33.298497 ], [ 104.420045, 33.327004 ], [ 104.373849, 33.345004 ], [ 104.292545, 33.336505 ], [ 104.272219, 33.391486 ], [ 104.22048, 33.404477 ], [ 104.213089, 33.446932 ], [ 104.180444, 33.472895 ], [ 104.155191, 33.542755 ], [ 104.176749, 33.5996 ], [ 104.103452, 33.663381 ], [ 104.046169, 33.686291 ], [ 103.980264, 33.670852 ], [ 103.861388, 33.682307 ], [ 103.778236, 33.658898 ], [ 103.690772, 33.69376 ], [ 103.667983, 33.685793 ], [ 103.645809, 33.708697 ], [ 103.593454, 33.716164 ], [ 103.563889, 33.699735 ], [ 103.552186, 33.671351 ], [ 103.520157, 33.678323 ], [ 103.545411, 33.719649 ], [ 103.518309, 33.807213 ], [ 103.464723, 33.80224 ], [ 103.434542, 33.752993 ], [ 103.35447, 33.743539 ], [ 103.278709, 33.774387 ], [ 103.284868, 33.80224 ], [ 103.24976, 33.814175 ], [ 103.228202, 33.79478 ], [ 103.165376, 33.805721 ], [ 103.153673, 33.819147 ], [ 103.181391, 33.900649 ], [ 103.16476, 33.929454 ], [ 103.1315, 33.931937 ], [ 103.120413, 33.953286 ], [ 103.157369, 33.998944 ], [ 103.147514, 34.036644 ], [ 103.119797, 34.03466 ], [ 103.129652, 34.065899 ], [ 103.178927, 34.079779 ], [ 103.121644, 34.112487 ], [ 103.124108, 34.162022 ], [ 103.100087, 34.181828 ], [ 103.052043, 34.195194 ], [ 103.005848, 34.184798 ], [ 102.973203, 34.205588 ], [ 102.977515, 34.252595 ], [ 102.949181, 34.292159 ], [ 102.911609, 34.312923 ], [ 102.85987, 34.301058 ], [ 102.856791, 34.270895 ], [ 102.798276, 34.272874 ], [ 102.779798, 34.236764 ], [ 102.728675, 34.235774 ], [ 102.694799, 34.198659 ], [ 102.664002, 34.192719 ], [ 102.651067, 34.165983 ], [ 102.598712, 34.14766 ], [ 102.655994, 34.113478 ], [ 102.649219, 34.080275 ], [ 102.615958, 34.099604 ], [ 102.511865, 34.086222 ], [ 102.471213, 34.072839 ], [ 102.437336, 34.087214 ], [ 102.406539, 34.033172 ], [ 102.392372, 33.971651 ], [ 102.345561, 33.969666 ], [ 102.315996, 33.993983 ], [ 102.287047, 33.977607 ], [ 102.248858, 33.98654 ], [ 102.226069, 33.963214 ], [ 102.16817, 33.983066 ], [ 102.136142, 33.965199 ], [ 102.25317, 33.861399 ], [ 102.261177, 33.821136 ], [ 102.243315, 33.786823 ], [ 102.296286, 33.783838 ], [ 102.324619, 33.754486 ], [ 102.284583, 33.719151 ], [ 102.342481, 33.725622 ], [ 102.31538, 33.665374 ], [ 102.346793, 33.605582 ], [ 102.440416, 33.574673 ], [ 102.477988, 33.543254 ], [ 102.446575, 33.53228 ], [ 102.461358, 33.501345 ], [ 102.462589, 33.449429 ], [ 102.447807, 33.454922 ], [ 102.392988, 33.404477 ], [ 102.368967, 33.41247 ], [ 102.310452, 33.397982 ], [ 102.296286, 33.413969 ], [ 102.258098, 33.409472 ], [ 102.218062, 33.349503 ], [ 102.192192, 33.337005 ], [ 102.217446, 33.247961 ], [ 102.200815, 33.223434 ], [ 102.160163, 33.242956 ], [ 102.144765, 33.273983 ], [ 102.117047, 33.288492 ], [ 102.08933, 33.227439 ], [ 102.08933, 33.204908 ], [ 102.054838, 33.189884 ], [ 101.99386, 33.1999 ], [ 101.935345, 33.186879 ], [ 101.921795, 33.153817 ], [ 101.887302, 33.135778 ], [ 101.865744, 33.103198 ], [ 101.825708, 33.119239 ], [ 101.841723, 33.184876 ], [ 101.83002, 33.213921 ], [ 101.770274, 33.248962 ], [ 101.769658, 33.26898 ], [ 101.877447, 33.314502 ], [ 101.887302, 33.383991 ], [ 101.915635, 33.425957 ], [ 101.946432, 33.442937 ], [ 101.906396, 33.48188 ], [ 101.907012, 33.539264 ], [ 101.884222, 33.578163 ], [ 101.844186, 33.602591 ], [ 101.831252, 33.554726 ], [ 101.783208, 33.556721 ], [ 101.769042, 33.538765 ], [ 101.748716, 33.505337 ], [ 101.718535, 33.494857 ], [ 101.622448, 33.502343 ], [ 101.611977, 33.565199 ], [ 101.616905, 33.598603 ], [ 101.585492, 33.645448 ], [ 101.58426, 33.674339 ], [ 101.501724, 33.702723 ], [ 101.428427, 33.680315 ], [ 101.424732, 33.655411 ], [ 101.385312, 33.644949 ], [ 101.302776, 33.657902 ], [ 101.23687, 33.685793 ], [ 101.217776, 33.669856 ], [ 101.166653, 33.659894 ], [ 101.177124, 33.685295 ], [ 101.162957, 33.719649 ], [ 101.186363, 33.741051 ], [ 101.190675, 33.791796 ], [ 101.153102, 33.823124 ], [ 101.153718, 33.8445 ], [ 101.054552, 33.863386 ], [ 101.023139, 33.896178 ], [ 100.994806, 33.891707 ], [ 100.965857, 33.946832 ], [ 100.927669, 33.975126 ], [ 100.93506, 33.990013 ], [ 100.880857, 34.036644 ], [ 100.870386, 34.083744 ], [ 100.848828, 34.089692 ], [ 100.806329, 34.155584 ], [ 100.764445, 34.178857 ], [ 100.809408, 34.247153 ], [ 100.798321, 34.260014 ], [ 100.821727, 34.317371 ], [ 100.868538, 34.332693 ], [ 100.895024, 34.375183 ], [ 100.951074, 34.38358 ], [ 100.986799, 34.374689 ], [ 101.054552, 34.322808 ], [ 101.098284, 34.329233 ], [ 101.178356, 34.320831 ], [ 101.193754, 34.336646 ], [ 101.235022, 34.325279 ], [ 101.228863, 34.298586 ], [ 101.268899, 34.278808 ], [ 101.325565, 34.268423 ], [ 101.327413, 34.24468 ], [ 101.369913, 34.248143 ], [ 101.417956, 34.227858 ], [ 101.482014, 34.218951 ], [ 101.492485, 34.195689 ], [ 101.53868, 34.212022 ], [ 101.6206, 34.178857 ], [ 101.674187, 34.110506 ], [ 101.703136, 34.119424 ], [ 101.718535, 34.083249 ], [ 101.736397, 34.080275 ], [ 101.764114, 34.122892 ], [ 101.788136, 34.131809 ], [ 101.836795, 34.124378 ], [ 101.851578, 34.153108 ], [ 101.874367, 34.130323 ], [ 101.897773, 34.133791 ], [ 101.955055, 34.109514 ], [ 101.965526, 34.167469 ], [ 102.003099, 34.162022 ], [ 102.030816, 34.190739 ], [ 102.01357, 34.218456 ], [ 102.062229, 34.227858 ], [ 102.067772, 34.293642 ], [ 102.149692, 34.271885 ], [ 102.186649, 34.352952 ], [ 102.237156, 34.34307 ], [ 102.237156, 34.34307 ], [ 102.259329, 34.355917 ], [ 102.205743, 34.407777 ], [ 102.169402, 34.457631 ], [ 102.155852, 34.507456 ], [ 102.139837, 34.50351 ], [ 102.093026, 34.536547 ], [ 102.001867, 34.538519 ], [ 101.97415, 34.548871 ], [ 101.956287, 34.582876 ], [ 101.934729, 34.58731 ], [ 101.919947, 34.621791 ], [ 101.917483, 34.705964 ], [ 101.923027, 34.835746 ], [ 101.916867, 34.873561 ], [ 101.985852, 34.90007 ], [ 102.068388, 34.887798 ], [ 102.048062, 34.910868 ], [ 102.094874, 34.986901 ], [ 102.133678, 35.014844 ], [ 102.157699, 35.010923 ], [ 102.176178, 35.032977 ], [ 102.211286, 35.034937 ], [ 102.218062, 35.057475 ], [ 102.252554, 35.048657 ], [ 102.29567, 35.071681 ], [ 102.310452, 35.128967 ], [ 102.346793, 35.164201 ], [ 102.404075, 35.179366 ], [ 102.365887, 35.235599 ], [ 102.370199, 35.263946 ], [ 102.3123, 35.282512 ], [ 102.280887, 35.303028 ], [ 102.311684, 35.31426 ], [ 102.317844, 35.343067 ], [ 102.287663, 35.36552 ], [ 102.293822, 35.424063 ], [ 102.314764, 35.434303 ], [ 102.408387, 35.409431 ], [ 102.447807, 35.437229 ], [ 102.437952, 35.455268 ], [ 102.49893, 35.545403 ], [ 102.503241, 35.585322 ], [ 102.531575, 35.580455 ], [ 102.570995, 35.548324 ], [ 102.695414, 35.528358 ], [ 102.743458, 35.494745 ], [ 102.782878, 35.527871 ], [ 102.729291, 35.523487 ], [ 102.746537, 35.545403 ], [ 102.808747, 35.560496 ], [ 102.763168, 35.612086 ], [ 102.7644, 35.653431 ], [ 102.744074, 35.657807 ], [ 102.707733, 35.70496 ], [ 102.686175, 35.771996 ], [ 102.715125, 35.815685 ], [ 102.739146, 35.821023 ], [ 102.787189, 35.862745 ], [ 102.81737, 35.850133 ], [ 102.914073, 35.845282 ], [ 102.94487, 35.829757 ], [ 102.954725, 35.858864 ], [ 102.942406, 35.92674 ], [ 102.971971, 35.995525 ], [ 102.951645, 36.021667 ], [ 102.968276, 36.044414 ], [ 102.932551, 36.048285 ], [ 102.882044, 36.082632 ], [ 102.941174, 36.104877 ], [ 102.948566, 36.150798 ], [ 102.965812, 36.151765 ], [ 102.986754, 36.193312 ], [ 103.048964, 36.199107 ], [ 103.066826, 36.216974 ], [ 103.021246, 36.232906 ], [ 103.024942, 36.256556 ], [ 102.922696, 36.298047 ], [ 102.896827, 36.331803 ], [ 102.845704, 36.331803 ], [ 102.836465, 36.344819 ], [ 102.838928, 36.345783 ], [ 102.831537, 36.365544 ], [ 102.829689, 36.365544 ], [ 102.771791, 36.47438 ], [ 102.793349, 36.497957 ], [ 102.753313, 36.525855 ], [ 102.734219, 36.562396 ], [ 102.761936, 36.568645 ], [ 102.714509, 36.599401 ], [ 102.724364, 36.613813 ], [ 102.684328, 36.619097 ], [ 102.630741, 36.650793 ], [ 102.601176, 36.710307 ], [ 102.612879, 36.738129 ], [ 102.639364, 36.732853 ], [ 102.692335, 36.775528 ], [ 102.720052, 36.767858 ], [ 102.639364, 36.852666 ], [ 102.587009, 36.869904 ], [ 102.56114, 36.91968 ], [ 102.526031, 36.928291 ], [ 102.499546, 36.954599 ], [ 102.450271, 36.968467 ], [ 102.506321, 37.019134 ], [ 102.488459, 37.078362 ], [ 102.583314, 37.104618 ], [ 102.642444, 37.099845 ], [ 102.599944, 37.174748 ], [ 102.578386, 37.17284 ], [ 102.533422, 37.217176 ], [ 102.490307, 37.223371 ], [ 102.457662, 37.248147 ], [ 102.45335, 37.271487 ], [ 102.419474, 37.294343 ], [ 102.428097, 37.308624 ], [ 102.368351, 37.327662 ], [ 102.29875, 37.370004 ], [ 102.299981, 37.391404 ], [ 102.19712, 37.420403 ], [ 102.176794, 37.458892 ], [ 102.125055, 37.48549 ], [ 102.103497, 37.482641 ], [ 102.131214, 37.54625 ], [ 102.102265, 37.582304 ], [ 102.035128, 37.627819 ], [ 102.048678, 37.651515 ], [ 102.036359, 37.685149 ], [ 101.998787, 37.724921 ], [ 101.946432, 37.728235 ], [ 101.873135, 37.686569 ], [ 101.854657, 37.664781 ], [ 101.815853, 37.654357 ], [ 101.791832, 37.696041 ], [ 101.659405, 37.733441 ], [ 101.670491, 37.754264 ], [ 101.598427, 37.827569 ], [ 101.551615, 37.835604 ], [ 101.459224, 37.86632 ], [ 101.382848, 37.822369 ], [ 101.362522, 37.791162 ], [ 101.276906, 37.83655 ], [ 101.202994, 37.84742 ], [ 101.159262, 37.86821 ], [ 101.152486, 37.891356 ], [ 101.114298, 37.92016 ], [ 101.103211, 37.946593 ], [ 101.077342, 37.941874 ], [ 100.964009, 38.011221 ], [ 100.91843, 37.999432 ], [ 100.895024, 38.013107 ], [ 100.888864, 38.056001 ], [ 100.922125, 38.084741 ], [ 100.91843, 38.129006 ], [ 100.93814, 38.16007 ], [ 100.913502, 38.17889 ], [ 100.860531, 38.148305 ], [ 100.825423, 38.158658 ], [ 100.752126, 38.238612 ], [ 100.71517, 38.253652 ], [ 100.619083, 38.26587 ], [ 100.595061, 38.242372 ], [ 100.545786, 38.247072 ], [ 100.516837, 38.272448 ], [ 100.474953, 38.288891 ], [ 100.459555, 38.2654 ], [ 100.432453, 38.275267 ], [ 100.424446, 38.307208 ], [ 100.396729, 38.293118 ], [ 100.318505, 38.329276 ], [ 100.331439, 38.337257 ], [ 100.301874, 38.388405 ], [ 100.259374, 38.366355 ], [ 100.24028, 38.441861 ], [ 100.163288, 38.461546 ], [ 100.113397, 38.497151 ], [ 100.086911, 38.492936 ], [ 100.064122, 38.518694 ], [ 100.025933, 38.507923 ], [ 100.001296, 38.467169 ], [ 100.022238, 38.432017 ], [ 100.093071, 38.407166 ], [ 100.136803, 38.33444 ], [ 100.163904, 38.328337 ], [ 100.159592, 38.291239 ], [ 100.182998, 38.222158 ], [ 100.126332, 38.231561 ], [ 100.117093, 38.253652 ], [ 100.071513, 38.284663 ], [ 100.049955, 38.283254 ], [ 100.001912, 38.315191 ], [ 99.960028, 38.320825 ], [ 99.826985, 38.370109 ], [ 99.758, 38.410449 ], [ 99.727203, 38.415607 ], [ 99.65945, 38.449361 ], [ 99.63974, 38.474666 ], [ 99.585537, 38.498556 ], [ 99.52887, 38.546314 ], [ 99.501769, 38.612281 ], [ 99.450646, 38.60433 ], [ 99.412458, 38.665571 ], [ 99.375502, 38.684727 ], [ 99.361951, 38.718354 ], [ 99.291118, 38.765966 ], [ 99.222133, 38.788827 ], [ 99.141445, 38.852706 ], [ 99.068764, 38.896968 ], [ 99.071843, 38.921184 ], [ 99.107568, 38.951907 ], [ 99.054597, 38.97657 ], [ 98.951735, 38.987735 ], [ 98.903076, 39.012384 ], [ 98.886446, 39.040744 ], [ 98.818076, 39.064911 ], [ 98.816845, 39.085818 ], [ 98.743548, 39.086747 ], [ 98.730613, 39.057011 ], [ 98.70536, 39.043533 ], [ 98.661628, 38.993782 ], [ 98.612353, 38.977035 ], [ 98.624056, 38.959353 ], [ 98.584635, 38.93003 ], [ 98.526737, 38.95563 ], [ 98.457752, 38.952838 ], [ 98.428187, 38.976104 ], [ 98.432498, 38.996107 ], [ 98.401086, 39.001688 ], [ 98.383839, 39.029588 ], [ 98.316702, 39.040744 ], [ 98.280977, 39.027263 ], [ 98.287753, 38.992386 ], [ 98.276666, 38.963541 ], [ 98.235398, 38.918855 ], [ 98.242173, 38.880664 ], [ 98.167645, 38.840121 ], [ 98.091884, 38.786495 ], [ 98.068478, 38.816344 ], [ 98.029058, 38.834061 ], [ 98.009348, 38.85923 ], [ 97.875689, 38.898365 ], [ 97.828878, 38.93003 ], [ 97.701379, 38.963076 ], [ 97.679205, 39.010524 ], [ 97.58127, 39.052364 ], [ 97.504894, 39.076527 ], [ 97.458698, 39.117863 ], [ 97.401416, 39.146645 ], [ 97.371235, 39.140611 ], [ 97.347213, 39.167528 ], [ 97.315185, 39.164744 ], [ 97.220946, 39.193042 ], [ 97.14149, 39.199999 ], [ 97.060186, 39.19768 ], [ 97.017686, 39.208347 ], [ 96.962251, 39.198144 ], [ 97.012142, 39.142004 ], [ 96.969643, 39.097895 ], [ 96.95794, 39.041674 ], [ 96.965331, 39.017034 ], [ 96.938846, 38.95563 ], [ 96.940693, 38.90768 ], [ 96.983809, 38.869016 ], [ 96.993664, 38.834993 ], [ 96.987505, 38.793025 ], [ 97.00044, 38.7613 ], [ 97.023229, 38.755699 ], [ 97.009063, 38.702477 ], [ 97.057722, 38.67258 ], [ 97.047251, 38.653888 ], [ 97.055874, 38.594508 ], [ 96.961019, 38.558015 ], [ 96.876636, 38.580475 ], [ 96.847071, 38.599186 ], [ 96.7941, 38.608072 ], [ 96.808882, 38.582346 ], [ 96.767614, 38.552399 ], [ 96.800259, 38.52759 ], [ 96.780549, 38.504177 ], [ 96.706637, 38.505582 ], [ 96.6666, 38.483567 ], [ 96.707868, 38.459203 ], [ 96.698013, 38.422172 ], [ 96.626564, 38.356031 ], [ 96.638883, 38.307208 ], [ 96.655514, 38.295936 ], [ 96.665369, 38.23015 ], [ 96.46334, 38.277616 ], [ 96.378341, 38.277146 ], [ 96.335841, 38.246132 ], [ 96.301964, 38.183124 ], [ 96.313051, 38.161952 ], [ 96.264392, 38.145952 ], [ 96.252689, 38.167599 ], [ 96.221892, 38.149246 ], [ 96.109175, 38.187358 ], [ 96.06606, 38.173245 ], [ 96.006929, 38.207582 ], [ 95.93856, 38.237202 ], [ 95.932401, 38.259291 ], [ 95.89606, 38.2903 ], [ 95.852945, 38.287481 ], [ 95.83693, 38.344298 ], [ 95.775952, 38.356031 ], [ 95.723597, 38.378554 ], [ 95.703887, 38.400131 ], [ 95.671858, 38.388405 ], [ 95.608417, 38.339134 ], [ 95.585011, 38.343359 ], [ 95.51849, 38.294997 ], [ 95.487693, 38.314721 ], [ 95.455664, 38.291709 ], [ 95.440881, 38.310965 ], [ 95.408236, 38.300163 ], [ 95.315846, 38.318947 ], [ 95.259179, 38.302981 ], [ 95.229614, 38.330685 ], [ 95.209904, 38.327868 ], [ 95.185266, 38.379492 ], [ 95.140919, 38.392158 ], [ 95.122441, 38.417014 ], [ 95.072549, 38.402476 ], [ 95.045448, 38.418889 ], [ 94.973999, 38.430142 ], [ 94.884072, 38.414669 ], [ 94.861282, 38.393565 ], [ 94.812623, 38.385591 ], [ 94.672805, 38.386998 ], [ 94.582878, 38.36917 ], [ 94.56132, 38.351807 ], [ 94.527443, 38.365416 ], [ 94.527443, 38.425922 ], [ 94.511429, 38.445142 ], [ 94.370379, 38.7627 ], [ 94.281067, 38.7599 ], [ 93.973098, 38.724891 ], [ 93.95154, 38.715086 ], [ 93.885018, 38.720689 ], [ 93.800019, 38.750566 ], [ 93.773533, 38.771099 ], [ 93.756287, 38.807484 ], [ 93.769838, 38.821007 ], [ 93.884403, 38.826136 ], [ 93.884403, 38.867618 ], [ 93.834511, 38.867618 ], [ 93.729186, 38.924443 ], [ 93.453245, 38.915596 ], [ 93.274007, 38.896036 ], [ 93.237666, 38.916062 ], [ 93.179152, 38.923977 ], [ 93.198246, 39.045857 ], [ 93.165601, 39.090928 ], [ 93.131725, 39.108112 ], [ 93.142196, 39.160567 ], [ 93.115094, 39.17959 ], [ 93.043029, 39.146645 ], [ 92.978356, 39.143396 ], [ 92.938936, 39.169848 ], [ 92.889045, 39.160103 ], [ 92.866871, 39.138754 ], [ 92.765857, 39.136898 ], [ 92.659299, 39.109969 ], [ 92.545966, 39.111362 ], [ 92.489916, 39.099753 ], [ 92.459119, 39.063982 ], [ 92.459119, 39.042604 ], [ 92.41046, 39.03842 ], [ 92.366728, 39.059335 ], [ 92.366112, 39.096037 ], [ 92.343938, 39.146181 ], [ 92.339011, 39.236628 ], [ 92.378431, 39.258411 ], [ 92.52564, 39.368611 ], [ 92.639589, 39.514196 ], [ 92.687632, 39.657174 ], [ 92.745531, 39.868331 ], [ 92.796654, 40.153897 ], [ 92.906907, 40.310609 ], [ 92.920458, 40.391792 ], [ 92.928465, 40.572504 ], [ 93.506216, 40.648376 ], [ 93.760599, 40.664721 ], [ 93.820961, 40.793519 ], [ 93.809874, 40.879548 ], [ 93.908424, 40.983539 ], [ 94.01067, 41.114875 ], [ 94.184365, 41.268444 ], [ 94.534219, 41.505966 ], [ 94.750413, 41.538227 ], [ 94.809543, 41.619256 ], [ 94.861898, 41.668451 ], [ 94.969072, 41.718948 ], [ 95.011572, 41.726541 ], [ 95.110738, 41.768513 ], [ 95.135991, 41.772976 ], [ 95.16494, 41.735474 ], [ 95.199433, 41.719395 ], [ 95.194505, 41.694821 ], [ 95.247476, 41.61344 ], [ 95.299831, 41.565994 ], [ 95.335556, 41.644305 ], [ 95.39407, 41.693481 ], [ 95.445193, 41.719841 ], [ 95.57146, 41.796181 ], [ 95.65646, 41.826067 ], [ 95.759322, 41.835878 ], [ 95.801206, 41.848361 ], [ 95.855408, 41.849699 ], [ 95.998306, 41.906289 ], [ 96.054973, 41.936124 ], [ 96.117183, 41.985966 ], [ 96.137509, 42.019765 ], [ 96.13874, 42.05399 ], [ 96.077147, 42.149457 ], [ 96.178161, 42.21775 ], [ 96.040806, 42.326688 ], [ 96.042038, 42.352787 ], [ 96.06606, 42.414674 ], [ 95.978596, 42.436762 ], [ 96.0174, 42.482239 ], [ 96.02356, 42.542675 ], [ 96.072219, 42.569566 ], [ 96.103632, 42.604375 ], [ 96.166458, 42.623314 ], [ 96.386348, 42.727592 ], [ 96.742361, 42.75704 ], [ 96.968411, 42.756161 ], [ 97.172903, 42.795257 ], [ 97.371235, 42.457076 ], [ 97.500582, 42.243894 ], [ 97.653335, 41.986856 ], [ 97.84674, 41.656379 ], [ 97.613915, 41.477276 ], [ 97.629314, 41.440498 ], [ 97.903407, 41.168057 ], [ 97.971776, 41.09774 ], [ 98.142391, 41.001607 ], [ 98.184891, 40.988056 ], [ 98.25018, 40.93925 ], [ 98.333332, 40.918903 ], [ 98.344419, 40.568413 ], [ 98.627751, 40.677884 ], [ 98.569853, 40.746836 ], [ 98.668403, 40.773128 ], [ 98.689345, 40.691952 ], [ 98.72199, 40.657911 ], [ 98.762642, 40.639748 ], [ 98.802678, 40.607043 ], [ 98.80699, 40.660181 ], [ 98.790975, 40.705564 ], [ 98.984996, 40.782644 ], [ 99.041662, 40.693767 ], [ 99.102025, 40.676522 ], [ 99.12543, 40.715091 ], [ 99.172858, 40.747289 ], [ 99.174705, 40.858278 ], [ 99.565827, 40.846961 ], [ 99.673, 40.93292 ], [ 99.985897, 40.909858 ], [ 100.057346, 40.908049 ], [ 100.107853, 40.875475 ], [ 100.224882, 40.727337 ], [ 100.237201, 40.716905 ], [ 100.242744, 40.618855 ], [ 100.169447, 40.541131 ], [ 100.169447, 40.277743 ], [ 100.007455, 40.20008 ], [ 99.955716, 40.150695 ], [ 99.927383, 40.063727 ], [ 99.841152, 40.013326 ], [ 99.751225, 40.006909 ], [ 99.714268, 39.972061 ], [ 99.533182, 39.891753 ], [ 99.491298, 39.884406 ], [ 99.459885, 39.898181 ], [ 99.440791, 39.885783 ], [ 99.469124, 39.875221 ], [ 99.672384, 39.888079 ], [ 99.822058, 39.860063 ], [ 99.904593, 39.785601 ], [ 99.958796, 39.769504 ], [ 100.040716, 39.757083 ], [ 100.128179, 39.702312 ], [ 100.250135, 39.685274 ], [ 100.314193, 39.606935 ], [ 100.301258, 39.572345 ], [ 100.326512, 39.509118 ], [ 100.44354, 39.485565 ], [ 100.500823, 39.481408 ], [ 100.498975, 39.400527 ], [ 100.606764, 39.387577 ], [ 100.707778, 39.404689 ], [ 100.842053, 39.405614 ], [ 100.842669, 39.199999 ], [ 100.864227, 39.106719 ], [ 100.829118, 39.075133 ], [ 100.835278, 39.025869 ], [ 100.875314, 39.002619 ], [ 100.901799, 39.030053 ], [ 100.961545, 39.005874 ], [ 100.969553, 38.946788 ], [ 101.117378, 38.975174 ], [ 101.228863, 39.020754 ], [ 101.198682, 38.943064 ], [ 101.237486, 38.907214 ], [ 101.24303, 38.860628 ], [ 101.33542, 38.847113 ], [ 101.34158, 38.822406 ], [ 101.307087, 38.80282 ], [ 101.331109, 38.777164 ], [ 101.412413, 38.764099 ], [ 101.562702, 38.713218 ], [ 101.601506, 38.65529 ], [ 101.672955, 38.6908 ], [ 101.777049, 38.66043 ], [ 101.873751, 38.733761 ], [ 101.941505, 38.808883 ], [ 102.075164, 38.891378 ], [ 102.045599, 38.904885 ], [ 101.955055, 38.985874 ], [ 101.926106, 39.000758 ], [ 101.833715, 39.08907 ], [ 101.902701, 39.111827 ], [ 102.012338, 39.127149 ], [ 102.050526, 39.141075 ], [ 102.276576, 39.188868 ], [ 102.3548, 39.231993 ], [ 102.45335, 39.255167 ], [ 102.579002, 39.183301 ], [ 102.616574, 39.171703 ], [ 102.883892, 39.120649 ], [ 103.007696, 39.099753 ], [ 103.133347, 39.192579 ], [ 103.188166, 39.215302 ], [ 103.259615, 39.263971 ], [ 103.344615, 39.331588 ], [ 103.428998, 39.353341 ], [ 103.595302, 39.386652 ], [ 103.728961, 39.430117 ], [ 103.85338, 39.461543 ], [ 103.955626, 39.456923 ], [ 104.089901, 39.419947 ], [ 104.073271, 39.351953 ], [ 104.047401, 39.297788 ], [ 104.171205, 39.160567 ], [ 104.207546, 39.083495 ], [ 104.190915, 39.042139 ], [ 104.196459, 38.9882 ], [ 104.173053, 38.94446 ], [ 104.044322, 38.895105 ], [ 104.011677, 38.85923 ], [ 103.85954, 38.64454 ], [ 103.416063, 38.404821 ], [ 103.465339, 38.353215 ], [ 103.507838, 38.280905 ], [ 103.53494, 38.156776 ], [ 103.368636, 38.08898 ], [ 103.362477, 38.037621 ], [ 103.40744, 37.860651 ], [ 103.627947, 37.797783 ], [ 103.683381, 37.777919 ], [ 103.841062, 37.64725 ], [ 103.874938, 37.604117 ], [ 103.935916, 37.572818 ], [ 104.089285, 37.465067 ], [ 104.183524, 37.406618 ], [ 104.237727, 37.411847 ], [ 104.287002, 37.428007 ], [ 104.298705, 37.414223 ], [ 104.365226, 37.418026 ], [ 104.437907, 37.445589 ], [ 104.448994, 37.42468 ], [ 104.499501, 37.421353 ], [ 104.521059, 37.43466 ], [ 104.679971, 37.408044 ], [ 104.662109, 37.367626 ], [ 104.713848, 37.329566 ], [ 104.673812, 37.317668 ], [ 104.651022, 37.290534 ], [ 104.624536, 37.298627 ], [ 104.600515, 37.242907 ], [ 104.638087, 37.201923 ], [ 104.717543, 37.208597 ], [ 104.776673, 37.246718 ], [ 104.85613, 37.211933 ], [ 104.864753, 37.17284 ], [ 104.888158, 37.15901 ], [ 104.914644, 37.097935 ], [ 104.954064, 37.077407 ], [ 104.95468, 37.040156 ], [ 105.004571, 37.035378 ], [ 105.03968, 37.007187 ], [ 105.05939, 37.022956 ], [ 105.128991, 36.996194 ], [ 105.165331, 36.99476 ], [ 105.185657, 36.942164 ], [ 105.178882, 36.892403 ], [ 105.244787, 36.894796 ], [ 105.279896, 36.86751 ], [ 105.303302, 36.820575 ], [ 105.334714, 36.80093 ], [ 105.340874, 36.764502 ], [ 105.319932, 36.742924 ], [ 105.275584, 36.752515 ], [ 105.272505, 36.739567 ], [ 105.218302, 36.730455 ], [ 105.201056, 36.700711 ], [ 105.225693, 36.664716 ], [ 105.22015, 36.631105 ], [ 105.261418, 36.602764 ], [ 105.2762, 36.563358 ], [ 105.252179, 36.553263 ], [ 105.281744, 36.522489 ], [ 105.322396, 36.535954 ], [ 105.362432, 36.496514 ], [ 105.363048, 36.443093 ], [ 105.398156, 36.430575 ], [ 105.401236, 36.369881 ], [ 105.425873, 36.330357 ], [ 105.455439, 36.321678 ], [ 105.476381, 36.293224 ], [ 105.45975, 36.268137 ], [ 105.460366, 36.223733 ], [ 105.478844, 36.213111 ], [ 105.515185, 36.147415 ], [ 105.491163, 36.101009 ], [ 105.430801, 36.10391 ], [ 105.406163, 36.074409 ], [ 105.343954, 36.033767 ], [ 105.324859, 35.941761 ], [ 105.350113, 35.875839 ], [ 105.39754, 35.857409 ], [ 105.371055, 35.844312 ], [ 105.38091, 35.792873 ], [ 105.408627, 35.822479 ], [ 105.428953, 35.819082 ], [ 105.432033, 35.787533 ], [ 105.457286, 35.771511 ], [ 105.481924, 35.727312 ], [ 105.595873, 35.715651 ], [ 105.667322, 35.749657 ], [ 105.70243, 35.733142 ], [ 105.759097, 35.724883 ], [ 105.740618, 35.698643 ], [ 105.723988, 35.725854 ], [ 105.690727, 35.698643 ], [ 105.722756, 35.673366 ], [ 105.713517, 35.650513 ], [ 105.759097, 35.634464 ], [ 105.762176, 35.602841 ], [ 105.800365, 35.564878 ], [ 105.816379, 35.575101 ], [ 105.847176, 35.490359 ], [ 105.868734, 35.540046 ], [ 105.900147, 35.54735 ], [ 106.017175, 35.519103 ], [ 106.023335, 35.49377 ], [ 106.047356, 35.498155 ], [ 106.048588, 35.488898 ], [ 105.897683, 35.451368 ], [ 105.894603, 35.413821 ], [ 106.002393, 35.438692 ], [ 106.034422, 35.469404 ], [ 106.054132, 35.45478 ], [ 106.071994, 35.463555 ], [ 106.06953, 35.458193 ], [ 106.071378, 35.449418 ], [ 106.073226, 35.447468 ], [ 106.067682, 35.436254 ], [ 106.073226, 35.420649 ], [ 106.083081, 35.421624 ], [ 106.113262, 35.361616 ], [ 106.129892, 35.393333 ], [ 106.173008, 35.437716 ], [ 106.196414, 35.409919 ], [ 106.237681, 35.409431 ], [ 106.241377, 35.358687 ], [ 106.319601, 35.265411 ], [ 106.363333, 35.238532 ], [ 106.368261, 35.273718 ], [ 106.415688, 35.276161 ], [ 106.472354, 35.310842 ], [ 106.501304, 35.364056 ], [ 106.503767, 35.415284 ], [ 106.483441, 35.450393 ], [ 106.490217, 35.480613 ], [ 106.465579, 35.481101 ], [ 106.440941, 35.52641 ], [ 106.460036, 35.578995 ], [ 106.47913, 35.575101 ], [ 106.460036, 35.643705 ], [ 106.434782, 35.688436 ], [ 106.49268, 35.732656 ], [ 106.498224, 35.732656 ], [ 106.504383, 35.736057 ], [ 106.506231, 35.737514 ] ] ], [ [ [ 106.047356, 35.498155 ], [ 106.078769, 35.509848 ], [ 106.071994, 35.463555 ], [ 106.054132, 35.45478 ], [ 106.048588, 35.488898 ], [ 106.047356, 35.498155 ] ] ], [ [ [ 102.831537, 36.365544 ], [ 102.838928, 36.345783 ], [ 102.836465, 36.344819 ], [ 102.829689, 36.365544 ], [ 102.831537, 36.365544 ] ] ], [ [ [ 106.073226, 35.447468 ], [ 106.083081, 35.421624 ], [ 106.073226, 35.420649 ], [ 106.067682, 35.436254 ], [ 106.073226, 35.447468 ] ] ], [ [ [ 106.504383, 35.736057 ], [ 106.498224, 35.732656 ], [ 106.49268, 35.732656 ], [ 106.506231, 35.737514 ], [ 106.504383, 35.736057 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "630000", "name": "青海省", "center": [ 101.778916, 36.623178 ], "centroid": [ 96.043533, 35.726403 ], "childrenNum": 8, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 28, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 102.829689, 36.365544 ], [ 102.836465, 36.344819 ], [ 102.845704, 36.331803 ], [ 102.896827, 36.331803 ], [ 102.922696, 36.298047 ], [ 103.024942, 36.256556 ], [ 103.021246, 36.232906 ], [ 103.066826, 36.216974 ], [ 103.048964, 36.199107 ], [ 102.986754, 36.193312 ], [ 102.965812, 36.151765 ], [ 102.948566, 36.150798 ], [ 102.941174, 36.104877 ], [ 102.882044, 36.082632 ], [ 102.932551, 36.048285 ], [ 102.968276, 36.044414 ], [ 102.951645, 36.021667 ], [ 102.971971, 35.995525 ], [ 102.942406, 35.92674 ], [ 102.954725, 35.858864 ], [ 102.94487, 35.829757 ], [ 102.914073, 35.845282 ], [ 102.81737, 35.850133 ], [ 102.787189, 35.862745 ], [ 102.739146, 35.821023 ], [ 102.715125, 35.815685 ], [ 102.686175, 35.771996 ], [ 102.707733, 35.70496 ], [ 102.744074, 35.657807 ], [ 102.7644, 35.653431 ], [ 102.763168, 35.612086 ], [ 102.808747, 35.560496 ], [ 102.746537, 35.545403 ], [ 102.729291, 35.523487 ], [ 102.782878, 35.527871 ], [ 102.743458, 35.494745 ], [ 102.695414, 35.528358 ], [ 102.570995, 35.548324 ], [ 102.531575, 35.580455 ], [ 102.503241, 35.585322 ], [ 102.49893, 35.545403 ], [ 102.437952, 35.455268 ], [ 102.447807, 35.437229 ], [ 102.408387, 35.409431 ], [ 102.314764, 35.434303 ], [ 102.293822, 35.424063 ], [ 102.287663, 35.36552 ], [ 102.317844, 35.343067 ], [ 102.311684, 35.31426 ], [ 102.280887, 35.303028 ], [ 102.3123, 35.282512 ], [ 102.370199, 35.263946 ], [ 102.365887, 35.235599 ], [ 102.404075, 35.179366 ], [ 102.346793, 35.164201 ], [ 102.310452, 35.128967 ], [ 102.29567, 35.071681 ], [ 102.252554, 35.048657 ], [ 102.218062, 35.057475 ], [ 102.211286, 35.034937 ], [ 102.176178, 35.032977 ], [ 102.157699, 35.010923 ], [ 102.133678, 35.014844 ], [ 102.094874, 34.986901 ], [ 102.048062, 34.910868 ], [ 102.068388, 34.887798 ], [ 101.985852, 34.90007 ], [ 101.916867, 34.873561 ], [ 101.923027, 34.835746 ], [ 101.917483, 34.705964 ], [ 101.919947, 34.621791 ], [ 101.934729, 34.58731 ], [ 101.956287, 34.582876 ], [ 101.97415, 34.548871 ], [ 102.001867, 34.538519 ], [ 102.093026, 34.536547 ], [ 102.139837, 34.50351 ], [ 102.155852, 34.507456 ], [ 102.169402, 34.457631 ], [ 102.205743, 34.407777 ], [ 102.259329, 34.355917 ], [ 102.237156, 34.34307 ], [ 102.237156, 34.34307 ], [ 102.186649, 34.352952 ], [ 102.149692, 34.271885 ], [ 102.067772, 34.293642 ], [ 102.062229, 34.227858 ], [ 102.01357, 34.218456 ], [ 102.030816, 34.190739 ], [ 102.003099, 34.162022 ], [ 101.965526, 34.167469 ], [ 101.955055, 34.109514 ], [ 101.897773, 34.133791 ], [ 101.874367, 34.130323 ], [ 101.851578, 34.153108 ], [ 101.836795, 34.124378 ], [ 101.788136, 34.131809 ], [ 101.764114, 34.122892 ], [ 101.736397, 34.080275 ], [ 101.718535, 34.083249 ], [ 101.703136, 34.119424 ], [ 101.674187, 34.110506 ], [ 101.6206, 34.178857 ], [ 101.53868, 34.212022 ], [ 101.492485, 34.195689 ], [ 101.482014, 34.218951 ], [ 101.417956, 34.227858 ], [ 101.369913, 34.248143 ], [ 101.327413, 34.24468 ], [ 101.325565, 34.268423 ], [ 101.268899, 34.278808 ], [ 101.228863, 34.298586 ], [ 101.235022, 34.325279 ], [ 101.193754, 34.336646 ], [ 101.178356, 34.320831 ], [ 101.098284, 34.329233 ], [ 101.054552, 34.322808 ], [ 100.986799, 34.374689 ], [ 100.951074, 34.38358 ], [ 100.895024, 34.375183 ], [ 100.868538, 34.332693 ], [ 100.821727, 34.317371 ], [ 100.798321, 34.260014 ], [ 100.809408, 34.247153 ], [ 100.764445, 34.178857 ], [ 100.806329, 34.155584 ], [ 100.848828, 34.089692 ], [ 100.870386, 34.083744 ], [ 100.880857, 34.036644 ], [ 100.93506, 33.990013 ], [ 100.927669, 33.975126 ], [ 100.965857, 33.946832 ], [ 100.994806, 33.891707 ], [ 101.023139, 33.896178 ], [ 101.054552, 33.863386 ], [ 101.153718, 33.8445 ], [ 101.153102, 33.823124 ], [ 101.190675, 33.791796 ], [ 101.186363, 33.741051 ], [ 101.162957, 33.719649 ], [ 101.177124, 33.685295 ], [ 101.166653, 33.659894 ], [ 101.217776, 33.669856 ], [ 101.23687, 33.685793 ], [ 101.302776, 33.657902 ], [ 101.385312, 33.644949 ], [ 101.424732, 33.655411 ], [ 101.428427, 33.680315 ], [ 101.501724, 33.702723 ], [ 101.58426, 33.674339 ], [ 101.585492, 33.645448 ], [ 101.616905, 33.598603 ], [ 101.611977, 33.565199 ], [ 101.622448, 33.502343 ], [ 101.718535, 33.494857 ], [ 101.748716, 33.505337 ], [ 101.769042, 33.538765 ], [ 101.777665, 33.533776 ], [ 101.769042, 33.45592 ], [ 101.695745, 33.433948 ], [ 101.663716, 33.383991 ], [ 101.64955, 33.323004 ], [ 101.677883, 33.297497 ], [ 101.735781, 33.279987 ], [ 101.709912, 33.21292 ], [ 101.653861, 33.162835 ], [ 101.661252, 33.135778 ], [ 101.633535, 33.101193 ], [ 101.557775, 33.167344 ], [ 101.515275, 33.192889 ], [ 101.487557, 33.226938 ], [ 101.403174, 33.225436 ], [ 101.386543, 33.207412 ], [ 101.393935, 33.157826 ], [ 101.381616, 33.153316 ], [ 101.297232, 33.262475 ], [ 101.217776, 33.256469 ], [ 101.182668, 33.26948 ], [ 101.156798, 33.236449 ], [ 101.124769, 33.221431 ], [ 101.11553, 33.194893 ], [ 101.169733, 33.10019 ], [ 101.143863, 33.086151 ], [ 101.146327, 33.056563 ], [ 101.184515, 33.041514 ], [ 101.171581, 33.009902 ], [ 101.183899, 32.984304 ], [ 101.129081, 32.989324 ], [ 101.134624, 32.95217 ], [ 101.124153, 32.909976 ], [ 101.178356, 32.892892 ], [ 101.223935, 32.855698 ], [ 101.237486, 32.825026 ], [ 101.22332, 32.725898 ], [ 101.157414, 32.661431 ], [ 101.124769, 32.658408 ], [ 101.077342, 32.68259 ], [ 101.030531, 32.660424 ], [ 100.99727, 32.627668 ], [ 100.956618, 32.621116 ], [ 100.93198, 32.600447 ], [ 100.887633, 32.632708 ], [ 100.834046, 32.648835 ], [ 100.77122, 32.643795 ], [ 100.690532, 32.678056 ], [ 100.71209, 32.645307 ], [ 100.710242, 32.610026 ], [ 100.673286, 32.628172 ], [ 100.661583, 32.616075 ], [ 100.657887, 32.546484 ], [ 100.645568, 32.526303 ], [ 100.603069, 32.553547 ], [ 100.54517, 32.569687 ], [ 100.516837, 32.632204 ], [ 100.470026, 32.694678 ], [ 100.450932, 32.694678 ], [ 100.420135, 32.73194 ], [ 100.378251, 32.698707 ], [ 100.399193, 32.756101 ], [ 100.339447, 32.719353 ], [ 100.258759, 32.742511 ], [ 100.231041, 32.696189 ], [ 100.229809, 32.650346 ], [ 100.208252, 32.606497 ], [ 100.189773, 32.630692 ], [ 100.109701, 32.640268 ], [ 100.088143, 32.668988 ], [ 100.139266, 32.724388 ], [ 100.117093, 32.802392 ], [ 100.123252, 32.837095 ], [ 100.064738, 32.895907 ], [ 100.029629, 32.895907 ], [ 100.038252, 32.929066 ], [ 99.956332, 32.948152 ], [ 99.947709, 32.986814 ], [ 99.877492, 33.045527 ], [ 99.877492, 32.993339 ], [ 99.851007, 32.941623 ], [ 99.805427, 32.940619 ], [ 99.788181, 32.956689 ], [ 99.764159, 32.924545 ], [ 99.791877, 32.883344 ], [ 99.766623, 32.826032 ], [ 99.760464, 32.769689 ], [ 99.717964, 32.732443 ], [ 99.705029, 32.76516 ], [ 99.646515, 32.774721 ], [ 99.640355, 32.790822 ], [ 99.589233, 32.789312 ], [ 99.558436, 32.839106 ], [ 99.45311, 32.862233 ], [ 99.376118, 32.899927 ], [ 99.353944, 32.885354 ], [ 99.268944, 32.878318 ], [ 99.24677, 32.924043 ], [ 99.235067, 32.982296 ], [ 99.214741, 32.991332 ], [ 99.196263, 33.035493 ], [ 99.124814, 33.046028 ], [ 99.090322, 33.079131 ], [ 99.024416, 33.094675 ], [ 99.014561, 33.081137 ], [ 98.971445, 33.098185 ], [ 98.967134, 33.115229 ], [ 98.92217, 33.118738 ], [ 98.858728, 33.150811 ], [ 98.804526, 33.219428 ], [ 98.802062, 33.270481 ], [ 98.759562, 33.276985 ], [ 98.779888, 33.370497 ], [ 98.736157, 33.406975 ], [ 98.742316, 33.477887 ], [ 98.725686, 33.503341 ], [ 98.678258, 33.522801 ], [ 98.648077, 33.548741 ], [ 98.652389, 33.595114 ], [ 98.622824, 33.610067 ], [ 98.61728, 33.637476 ], [ 98.6567, 33.64744 ], [ 98.610505, 33.682805 ], [ 98.582788, 33.731595 ], [ 98.537824, 33.74752 ], [ 98.51873, 33.77389 ], [ 98.494092, 33.768915 ], [ 98.492861, 33.796272 ], [ 98.463295, 33.848477 ], [ 98.434962, 33.843009 ], [ 98.407245, 33.867362 ], [ 98.425723, 33.913066 ], [ 98.415252, 33.956761 ], [ 98.440506, 33.981577 ], [ 98.428187, 34.029204 ], [ 98.396774, 34.053008 ], [ 98.392462, 34.089196 ], [ 98.344419, 34.094648 ], [ 98.258188, 34.083249 ], [ 98.206449, 34.08424 ], [ 98.157174, 34.107532 ], [ 98.098043, 34.122892 ], [ 98.051848, 34.11546 ], [ 97.95453, 34.190739 ], [ 97.898479, 34.209548 ], [ 97.796849, 34.199154 ], [ 97.796849, 34.199154 ], [ 97.789458, 34.182818 ], [ 97.789458, 34.182818 ], [ 97.766668, 34.158555 ], [ 97.665654, 34.126855 ], [ 97.70261, 34.036644 ], [ 97.652719, 33.998448 ], [ 97.660111, 33.956264 ], [ 97.629314, 33.919523 ], [ 97.601596, 33.929951 ], [ 97.52214, 33.903133 ], [ 97.503662, 33.912073 ], [ 97.460546, 33.887236 ], [ 97.395257, 33.889224 ], [ 97.398336, 33.848477 ], [ 97.371851, 33.842015 ], [ 97.373083, 33.817655 ], [ 97.406344, 33.795278 ], [ 97.422974, 33.754984 ], [ 97.418046, 33.728608 ], [ 97.435293, 33.682307 ], [ 97.415583, 33.605582 ], [ 97.450075, 33.582152 ], [ 97.523372, 33.577166 ], [ 97.511669, 33.520805 ], [ 97.552321, 33.465906 ], [ 97.625618, 33.461412 ], [ 97.674893, 33.432949 ], [ 97.754349, 33.409972 ], [ 97.676125, 33.341004 ], [ 97.622538, 33.337005 ], [ 97.607756, 33.263976 ], [ 97.548626, 33.203907 ], [ 97.487648, 33.168346 ], [ 97.498119, 33.137783 ], [ 97.487032, 33.107209 ], [ 97.517213, 33.097683 ], [ 97.542466, 33.035995 ], [ 97.499966, 33.011408 ], [ 97.523988, 32.988822 ], [ 97.438372, 32.976271 ], [ 97.375547, 32.956689 ], [ 97.347829, 32.895907 ], [ 97.376163, 32.886359 ], [ 97.392793, 32.828546 ], [ 97.386018, 32.77925 ], [ 97.429133, 32.714318 ], [ 97.42359, 32.70475 ], [ 97.48272, 32.654377 ], [ 97.535075, 32.638252 ], [ 97.543698, 32.62162 ], [ 97.607756, 32.614059 ], [ 97.616995, 32.586329 ], [ 97.700763, 32.53488 ], [ 97.730944, 32.527312 ], [ 97.684132, 32.530339 ], [ 97.670582, 32.51722 ], [ 97.540618, 32.536899 ], [ 97.50243, 32.530844 ], [ 97.463626, 32.55506 ], [ 97.448843, 32.586833 ], [ 97.411887, 32.575235 ], [ 97.374315, 32.546484 ], [ 97.3583, 32.563635 ], [ 97.332431, 32.542448 ], [ 97.334895, 32.514192 ], [ 97.388481, 32.501575 ], [ 97.341054, 32.440987 ], [ 97.387865, 32.427349 ], [ 97.424822, 32.322723 ], [ 97.415583, 32.296421 ], [ 97.371235, 32.273148 ], [ 97.32196, 32.303503 ], [ 97.299786, 32.294904 ], [ 97.264062, 32.182527 ], [ 97.271453, 32.139971 ], [ 97.313953, 32.130342 ], [ 97.293011, 32.096887 ], [ 97.308409, 32.076605 ], [ 97.258518, 32.072041 ], [ 97.219714, 32.109054 ], [ 97.201852, 32.090296 ], [ 97.233881, 32.063927 ], [ 97.214786, 32.042623 ], [ 97.188301, 32.055304 ], [ 97.169823, 32.032984 ], [ 97.127323, 32.044145 ], [ 97.028773, 32.04871 ], [ 97.006599, 32.067984 ], [ 96.935766, 32.048203 ], [ 96.965947, 32.008628 ], [ 96.941925, 31.986297 ], [ 96.894498, 32.013703 ], [ 96.863085, 31.996448 ], [ 96.868629, 31.964975 ], [ 96.824281, 32.007613 ], [ 96.722651, 32.013195 ], [ 96.742977, 32.001016 ], [ 96.753448, 31.944156 ], [ 96.776238, 31.935015 ], [ 96.81073, 31.894375 ], [ 96.794716, 31.869474 ], [ 96.760223, 31.860325 ], [ 96.765767, 31.819144 ], [ 96.799027, 31.792188 ], [ 96.840295, 31.720438 ], [ 96.790404, 31.698545 ], [ 96.778701, 31.675629 ], [ 96.722651, 31.686833 ], [ 96.691854, 31.722474 ], [ 96.661057, 31.705674 ], [ 96.615477, 31.737236 ], [ 96.56805, 31.711783 ], [ 96.519391, 31.74945 ], [ 96.468884, 31.769804 ], [ 96.435623, 31.796258 ], [ 96.407906, 31.845583 ], [ 96.389428, 31.919777 ], [ 96.288414, 31.919777 ], [ 96.253305, 31.929936 ], [ 96.220044, 31.905553 ], [ 96.188632, 31.904028 ], [ 96.214501, 31.876589 ], [ 96.202798, 31.841008 ], [ 96.183088, 31.835924 ], [ 96.178161, 31.775401 ], [ 96.231131, 31.749959 ], [ 96.222508, 31.733164 ], [ 96.252073, 31.697527 ], [ 96.245298, 31.657802 ], [ 96.221892, 31.647613 ], [ 96.207726, 31.598691 ], [ 96.156603, 31.602769 ], [ 96.148595, 31.686324 ], [ 96.135661, 31.70211 ], [ 96.064828, 31.720438 ], [ 95.989067, 31.78761 ], [ 95.983524, 31.816601 ], [ 95.89914, 31.81711 ], [ 95.846169, 31.736218 ], [ 95.853561, 31.714329 ], [ 95.823995, 31.68225 ], [ 95.779648, 31.748941 ], [ 95.634286, 31.782523 ], [ 95.580083, 31.76726 ], [ 95.546823, 31.73978 ], [ 95.511714, 31.750468 ], [ 95.480301, 31.795749 ], [ 95.456896, 31.801853 ], [ 95.406389, 31.896915 ], [ 95.408852, 31.918761 ], [ 95.3682, 31.92892 ], [ 95.360809, 31.95939 ], [ 95.395918, 32.001523 ], [ 95.454432, 32.007613 ], [ 95.421171, 32.033999 ], [ 95.454432, 32.061898 ], [ 95.440265, 32.157705 ], [ 95.406389, 32.182021 ], [ 95.367584, 32.178982 ], [ 95.366968, 32.151118 ], [ 95.31523, 32.148585 ], [ 95.270266, 32.194683 ], [ 95.270266, 32.194683 ], [ 95.239469, 32.287315 ], [ 95.241317, 32.3207 ], [ 95.214216, 32.321712 ], [ 95.20744, 32.297433 ], [ 95.10581, 32.258979 ], [ 95.079325, 32.279726 ], [ 95.096571, 32.322217 ], [ 95.193274, 32.332331 ], [ 95.261643, 32.348006 ], [ 95.228382, 32.363678 ], [ 95.218527, 32.397035 ], [ 95.153853, 32.386423 ], [ 95.081789, 32.384907 ], [ 95.075013, 32.376315 ], [ 95.075013, 32.376315 ], [ 95.057151, 32.395014 ], [ 94.988166, 32.422802 ], [ 94.944434, 32.404109 ], [ 94.912405, 32.41573 ], [ 94.889616, 32.472295 ], [ 94.852043, 32.463712 ], [ 94.80708, 32.486431 ], [ 94.78737, 32.522266 ], [ 94.762116, 32.526303 ], [ 94.737479, 32.587338 ], [ 94.638312, 32.645307 ], [ 94.614291, 32.673522 ], [ 94.591501, 32.640772 ], [ 94.522516, 32.595909 ], [ 94.459074, 32.599439 ], [ 94.463386, 32.572209 ], [ 94.435052, 32.562626 ], [ 94.395016, 32.594397 ], [ 94.371611, 32.524789 ], [ 94.350053, 32.533871 ], [ 94.294002, 32.519743 ], [ 94.292154, 32.502584 ], [ 94.250886, 32.51722 ], [ 94.196684, 32.51621 ], [ 94.176974, 32.454117 ], [ 94.137554, 32.433915 ], [ 94.091974, 32.463207 ], [ 94.049474, 32.469771 ], [ 94.03038, 32.448057 ], [ 93.978641, 32.459672 ], [ 93.960163, 32.484917 ], [ 93.90904, 32.463207 ], [ 93.861613, 32.466237 ], [ 93.851142, 32.50965 ], [ 93.820345, 32.549511 ], [ 93.75136, 32.56313 ], [ 93.721795, 32.578261 ], [ 93.651577, 32.571705 ], [ 93.618933, 32.522771 ], [ 93.516687, 32.47583 ], [ 93.501904, 32.503593 ], [ 93.476651, 32.504603 ], [ 93.4631, 32.556069 ], [ 93.411977, 32.558086 ], [ 93.385492, 32.525294 ], [ 93.33868, 32.5712 ], [ 93.308499, 32.580278 ], [ 93.300492, 32.619604 ], [ 93.260456, 32.62666 ], [ 93.239514, 32.662439 ], [ 93.210565, 32.655385 ], [ 93.176688, 32.6705 ], [ 93.159442, 32.644803 ], [ 93.087993, 32.63674 ], [ 93.069515, 32.626156 ], [ 93.023935, 32.703239 ], [ 93.019624, 32.737477 ], [ 93.00053, 32.741001 ], [ 92.964189, 32.714821 ], [ 92.933392, 32.719353 ], [ 92.866871, 32.698203 ], [ 92.822523, 32.729926 ], [ 92.789262, 32.719856 ], [ 92.756618, 32.743014 ], [ 92.686401, 32.76516 ], [ 92.667922, 32.73194 ], [ 92.634662, 32.720863 ], [ 92.574916, 32.741001 ], [ 92.56814, 32.73194 ], [ 92.484372, 32.745028 ], [ 92.459119, 32.76365 ], [ 92.411076, 32.748048 ], [ 92.355641, 32.764657 ], [ 92.343938, 32.738484 ], [ 92.310062, 32.751571 ], [ 92.255243, 32.720863 ], [ 92.198577, 32.754591 ], [ 92.211511, 32.788306 ], [ 92.193649, 32.801889 ], [ 92.227526, 32.821003 ], [ 92.205352, 32.866255 ], [ 92.145606, 32.885857 ], [ 92.101874, 32.860222 ], [ 92.038432, 32.860725 ], [ 92.018722, 32.829552 ], [ 91.955897, 32.8205 ], [ 91.896766, 32.907967 ], [ 91.857962, 32.90244 ], [ 91.839484, 32.948152 ], [ 91.799448, 32.942126 ], [ 91.752637, 32.969242 ], [ 91.685499, 32.989324 ], [ 91.664557, 33.012913 ], [ 91.583253, 33.0375 ], [ 91.55492, 33.060074 ], [ 91.535826, 33.10019 ], [ 91.49579, 33.109214 ], [ 91.436044, 33.066092 ], [ 91.370138, 33.100691 ], [ 91.311624, 33.108211 ], [ 91.261733, 33.141291 ], [ 91.226624, 33.141792 ], [ 91.18782, 33.106206 ], [ 91.161335, 33.108712 ], [ 91.147784, 33.07211 ], [ 91.072024, 33.113224 ], [ 91.037531, 33.098686 ], [ 91.001807, 33.11573 ], [ 90.927894, 33.120241 ], [ 90.902024, 33.083143 ], [ 90.88293, 33.120241 ], [ 90.803474, 33.114227 ], [ 90.740032, 33.142293 ], [ 90.704308, 33.135778 ], [ 90.627315, 33.180368 ], [ 90.562642, 33.229441 ], [ 90.490577, 33.264977 ], [ 90.405577, 33.260473 ], [ 90.363077, 33.279487 ], [ 90.332896, 33.310501 ], [ 90.246665, 33.423959 ], [ 90.22018, 33.437943 ], [ 90.107463, 33.460913 ], [ 90.088984, 33.478885 ], [ 90.083441, 33.525295 ], [ 90.01076, 33.553728 ], [ 89.984275, 33.612061 ], [ 90.008296, 33.687785 ], [ 89.981195, 33.70322 ], [ 89.983659, 33.725622 ], [ 89.907282, 33.741051 ], [ 89.902355, 33.758467 ], [ 89.942391, 33.801246 ], [ 89.899891, 33.80771 ], [ 89.837065, 33.868853 ], [ 89.795181, 33.865374 ], [ 89.73174, 33.921509 ], [ 89.718805, 33.946832 ], [ 89.688008, 33.959739 ], [ 89.684928, 33.990013 ], [ 89.635037, 34.049537 ], [ 89.656595, 34.057966 ], [ 89.655979, 34.097126 ], [ 89.71203, 34.131809 ], [ 89.756993, 34.124874 ], [ 89.760073, 34.152613 ], [ 89.789638, 34.150632 ], [ 89.816739, 34.16945 ], [ 89.838297, 34.263477 ], [ 89.825362, 34.293642 ], [ 89.86663, 34.324785 ], [ 89.858623, 34.359375 ], [ 89.820435, 34.369255 ], [ 89.799493, 34.39642 ], [ 89.819819, 34.420614 ], [ 89.823515, 34.455657 ], [ 89.814891, 34.548871 ], [ 89.777935, 34.574499 ], [ 89.798877, 34.628686 ], [ 89.74837, 34.641981 ], [ 89.72558, 34.660689 ], [ 89.732356, 34.732035 ], [ 89.799493, 34.743838 ], [ 89.825978, 34.796931 ], [ 89.867862, 34.81069 ], [ 89.838913, 34.865705 ], [ 89.814891, 34.86816 ], [ 89.821051, 34.902033 ], [ 89.78779, 34.921664 ], [ 89.747138, 34.903506 ], [ 89.707102, 34.919701 ], [ 89.670146, 34.887798 ], [ 89.578987, 34.895162 ], [ 89.560509, 34.938836 ], [ 89.59069, 35.057965 ], [ 89.593153, 35.104491 ], [ 89.579603, 35.118688 ], [ 89.519241, 35.133862 ], [ 89.46935, 35.214577 ], [ 89.450255, 35.223867 ], [ 89.48598, 35.256616 ], [ 89.531559, 35.276161 ], [ 89.494603, 35.298632 ], [ 89.516161, 35.330862 ], [ 89.497067, 35.361128 ], [ 89.58761, 35.383575 ], [ 89.619639, 35.412357 ], [ 89.658443, 35.425526 ], [ 89.685544, 35.416259 ], [ 89.739131, 35.468429 ], [ 89.765, 35.482563 ], [ 89.740979, 35.507412 ], [ 89.720037, 35.501566 ], [ 89.699711, 35.544916 ], [ 89.71203, 35.581915 ], [ 89.75145, 35.580942 ], [ 89.765616, 35.599922 ], [ 89.726196, 35.648082 ], [ 89.748986, 35.66267 ], [ 89.747138, 35.7516 ], [ 89.782863, 35.773453 ], [ 89.767464, 35.799183 ], [ 89.801957, 35.848193 ], [ 89.778551, 35.861775 ], [ 89.707718, 35.849163 ], [ 89.654747, 35.848193 ], [ 89.62395, 35.859349 ], [ 89.550654, 35.856924 ], [ 89.554965, 35.873414 ], [ 89.489676, 35.903475 ], [ 89.428082, 35.917531 ], [ 89.434857, 35.992136 ], [ 89.404676, 36.016827 ], [ 89.417611, 36.044897 ], [ 89.474893, 36.022151 ], [ 89.605472, 36.038123 ], [ 89.688624, 36.091337 ], [ 89.711414, 36.093272 ], [ 89.766848, 36.073925 ], [ 89.819819, 36.080697 ], [ 89.914058, 36.079246 ], [ 89.941159, 36.067637 ], [ 89.944855, 36.140649 ], [ 89.997825, 36.168193 ], [ 90.019999, 36.213594 ], [ 90.028006, 36.258486 ], [ 90.003369, 36.278752 ], [ 90.043405, 36.276822 ], [ 90.058188, 36.255591 ], [ 90.145651, 36.239181 ], [ 90.130252, 36.2078 ], [ 90.198006, 36.187516 ], [ 90.23681, 36.160462 ], [ 90.325505, 36.159496 ], [ 90.424055, 36.133883 ], [ 90.478258, 36.13195 ], [ 90.534925, 36.147899 ], [ 90.613149, 36.126632 ], [ 90.659344, 36.13485 ], [ 90.776373, 36.086501 ], [ 90.815793, 36.035703 ], [ 90.850285, 36.016827 ], [ 90.922966, 36.028927 ], [ 90.979017, 36.106811 ], [ 91.081263, 36.088436 ], [ 91.124994, 36.115514 ], [ 91.09235, 36.163844 ], [ 91.096045, 36.219871 ], [ 91.051698, 36.238215 ], [ 91.07264, 36.299012 ], [ 91.026444, 36.323607 ], [ 91.051698, 36.433946 ], [ 91.028292, 36.443093 ], [ 91.039995, 36.474861 ], [ 91.035683, 36.529703 ], [ 91.011662, 36.539801 ], [ 90.905104, 36.560474 ], [ 90.831191, 36.55807 ], [ 90.810865, 36.585466 ], [ 90.741264, 36.585947 ], [ 90.72217, 36.620058 ], [ 90.730793, 36.655594 ], [ 90.706156, 36.658955 ], [ 90.720938, 36.708868 ], [ 90.754815, 36.721341 ], [ 90.727098, 36.755872 ], [ 90.732025, 36.825844 ], [ 90.758511, 36.825844 ], [ 90.853981, 36.915373 ], [ 90.924198, 36.921115 ], [ 90.983944, 36.913459 ], [ 91.036915, 36.929727 ], [ 91.051698, 36.96751 ], [ 91.126842, 36.978507 ], [ 91.133618, 37.007665 ], [ 91.181045, 37.025345 ], [ 91.216153, 37.010054 ], [ 91.303617, 37.012444 ], [ 91.291298, 37.042544 ], [ 91.303617, 37.083136 ], [ 91.286371, 37.105095 ], [ 91.280211, 37.163779 ], [ 91.1909, 37.205737 ], [ 91.194596, 37.273868 ], [ 91.134849, 37.324331 ], [ 91.136081, 37.355734 ], [ 91.113292, 37.387124 ], [ 91.099741, 37.447965 ], [ 91.073256, 37.475992 ], [ 91.019669, 37.493088 ], [ 90.958075, 37.477891 ], [ 90.911879, 37.519674 ], [ 90.865684, 37.53059 ], [ 90.882314, 37.575664 ], [ 90.854597, 37.604117 ], [ 90.820104, 37.613599 ], [ 90.777605, 37.648672 ], [ 90.643946, 37.696988 ], [ 90.586663, 37.703144 ], [ 90.579272, 37.720661 ], [ 90.519526, 37.730601 ], [ 90.516446, 38.207111 ], [ 90.531229, 38.319886 ], [ 90.401882, 38.311434 ], [ 90.361846, 38.300163 ], [ 90.352607, 38.233441 ], [ 90.280542, 38.238142 ], [ 90.137644, 38.340543 ], [ 90.179528, 38.396848 ], [ 90.129636, 38.400131 ], [ 90.111774, 38.418889 ], [ 90.111774, 38.477945 ], [ 90.130868, 38.494341 ], [ 90.248513, 38.491531 ], [ 90.315034, 38.501835 ], [ 90.353222, 38.482162 ], [ 90.427135, 38.493873 ], [ 90.465323, 38.521971 ], [ 90.463476, 38.556611 ], [ 90.525685, 38.561291 ], [ 90.560794, 38.593573 ], [ 90.608837, 38.594508 ], [ 90.606374, 38.610878 ], [ 90.645794, 38.635191 ], [ 90.619308, 38.664636 ], [ 90.65996, 38.674449 ], [ 90.724634, 38.658094 ], [ 90.899561, 38.679588 ], [ 90.970394, 38.697806 ], [ 90.992567, 38.695003 ], [ 91.188436, 38.73096 ], [ 91.242639, 38.752433 ], [ 91.298689, 38.746365 ], [ 91.446515, 38.813546 ], [ 91.501333, 38.815411 ], [ 91.681188, 38.852706 ], [ 91.694738, 38.86622 ], [ 91.806223, 38.872744 ], [ 91.87952, 38.884391 ], [ 91.880752, 38.899297 ], [ 91.966368, 38.930961 ], [ 92.10865, 38.963541 ], [ 92.173323, 38.960749 ], [ 92.197961, 38.983548 ], [ 92.263866, 39.002153 ], [ 92.380279, 38.999828 ], [ 92.416003, 39.010524 ], [ 92.41046, 39.03842 ], [ 92.459119, 39.042604 ], [ 92.459119, 39.063982 ], [ 92.489916, 39.099753 ], [ 92.545966, 39.111362 ], [ 92.659299, 39.109969 ], [ 92.765857, 39.136898 ], [ 92.866871, 39.138754 ], [ 92.889045, 39.160103 ], [ 92.938936, 39.169848 ], [ 92.978356, 39.143396 ], [ 93.043029, 39.146645 ], [ 93.115094, 39.17959 ], [ 93.142196, 39.160567 ], [ 93.131725, 39.108112 ], [ 93.165601, 39.090928 ], [ 93.198246, 39.045857 ], [ 93.179152, 38.923977 ], [ 93.237666, 38.916062 ], [ 93.274007, 38.896036 ], [ 93.453245, 38.915596 ], [ 93.729186, 38.924443 ], [ 93.834511, 38.867618 ], [ 93.884403, 38.867618 ], [ 93.884403, 38.826136 ], [ 93.769838, 38.821007 ], [ 93.756287, 38.807484 ], [ 93.773533, 38.771099 ], [ 93.800019, 38.750566 ], [ 93.885018, 38.720689 ], [ 93.95154, 38.715086 ], [ 93.973098, 38.724891 ], [ 94.281067, 38.7599 ], [ 94.370379, 38.7627 ], [ 94.511429, 38.445142 ], [ 94.527443, 38.425922 ], [ 94.527443, 38.365416 ], [ 94.56132, 38.351807 ], [ 94.582878, 38.36917 ], [ 94.672805, 38.386998 ], [ 94.812623, 38.385591 ], [ 94.861282, 38.393565 ], [ 94.884072, 38.414669 ], [ 94.973999, 38.430142 ], [ 95.045448, 38.418889 ], [ 95.072549, 38.402476 ], [ 95.122441, 38.417014 ], [ 95.140919, 38.392158 ], [ 95.185266, 38.379492 ], [ 95.209904, 38.327868 ], [ 95.229614, 38.330685 ], [ 95.259179, 38.302981 ], [ 95.315846, 38.318947 ], [ 95.408236, 38.300163 ], [ 95.440881, 38.310965 ], [ 95.455664, 38.291709 ], [ 95.487693, 38.314721 ], [ 95.51849, 38.294997 ], [ 95.585011, 38.343359 ], [ 95.608417, 38.339134 ], [ 95.671858, 38.388405 ], [ 95.703887, 38.400131 ], [ 95.723597, 38.378554 ], [ 95.775952, 38.356031 ], [ 95.83693, 38.344298 ], [ 95.852945, 38.287481 ], [ 95.89606, 38.2903 ], [ 95.932401, 38.259291 ], [ 95.93856, 38.237202 ], [ 96.006929, 38.207582 ], [ 96.06606, 38.173245 ], [ 96.109175, 38.187358 ], [ 96.221892, 38.149246 ], [ 96.252689, 38.167599 ], [ 96.264392, 38.145952 ], [ 96.313051, 38.161952 ], [ 96.301964, 38.183124 ], [ 96.335841, 38.246132 ], [ 96.378341, 38.277146 ], [ 96.46334, 38.277616 ], [ 96.665369, 38.23015 ], [ 96.655514, 38.295936 ], [ 96.638883, 38.307208 ], [ 96.626564, 38.356031 ], [ 96.698013, 38.422172 ], [ 96.707868, 38.459203 ], [ 96.6666, 38.483567 ], [ 96.706637, 38.505582 ], [ 96.780549, 38.504177 ], [ 96.800259, 38.52759 ], [ 96.767614, 38.552399 ], [ 96.808882, 38.582346 ], [ 96.7941, 38.608072 ], [ 96.847071, 38.599186 ], [ 96.876636, 38.580475 ], [ 96.961019, 38.558015 ], [ 97.055874, 38.594508 ], [ 97.047251, 38.653888 ], [ 97.057722, 38.67258 ], [ 97.009063, 38.702477 ], [ 97.023229, 38.755699 ], [ 97.00044, 38.7613 ], [ 96.987505, 38.793025 ], [ 96.993664, 38.834993 ], [ 96.983809, 38.869016 ], [ 96.940693, 38.90768 ], [ 96.938846, 38.95563 ], [ 96.965331, 39.017034 ], [ 96.95794, 39.041674 ], [ 96.969643, 39.097895 ], [ 97.012142, 39.142004 ], [ 96.962251, 39.198144 ], [ 97.017686, 39.208347 ], [ 97.060186, 39.19768 ], [ 97.14149, 39.199999 ], [ 97.220946, 39.193042 ], [ 97.315185, 39.164744 ], [ 97.347213, 39.167528 ], [ 97.371235, 39.140611 ], [ 97.401416, 39.146645 ], [ 97.458698, 39.117863 ], [ 97.504894, 39.076527 ], [ 97.58127, 39.052364 ], [ 97.679205, 39.010524 ], [ 97.701379, 38.963076 ], [ 97.828878, 38.93003 ], [ 97.875689, 38.898365 ], [ 98.009348, 38.85923 ], [ 98.029058, 38.834061 ], [ 98.068478, 38.816344 ], [ 98.091884, 38.786495 ], [ 98.167645, 38.840121 ], [ 98.242173, 38.880664 ], [ 98.235398, 38.918855 ], [ 98.276666, 38.963541 ], [ 98.287753, 38.992386 ], [ 98.280977, 39.027263 ], [ 98.316702, 39.040744 ], [ 98.383839, 39.029588 ], [ 98.401086, 39.001688 ], [ 98.432498, 38.996107 ], [ 98.428187, 38.976104 ], [ 98.457752, 38.952838 ], [ 98.526737, 38.95563 ], [ 98.584635, 38.93003 ], [ 98.624056, 38.959353 ], [ 98.612353, 38.977035 ], [ 98.661628, 38.993782 ], [ 98.70536, 39.043533 ], [ 98.730613, 39.057011 ], [ 98.743548, 39.086747 ], [ 98.816845, 39.085818 ], [ 98.818076, 39.064911 ], [ 98.886446, 39.040744 ], [ 98.903076, 39.012384 ], [ 98.951735, 38.987735 ], [ 99.054597, 38.97657 ], [ 99.107568, 38.951907 ], [ 99.071843, 38.921184 ], [ 99.068764, 38.896968 ], [ 99.141445, 38.852706 ], [ 99.222133, 38.788827 ], [ 99.291118, 38.765966 ], [ 99.361951, 38.718354 ], [ 99.375502, 38.684727 ], [ 99.412458, 38.665571 ], [ 99.450646, 38.60433 ], [ 99.501769, 38.612281 ], [ 99.52887, 38.546314 ], [ 99.585537, 38.498556 ], [ 99.63974, 38.474666 ], [ 99.65945, 38.449361 ], [ 99.727203, 38.415607 ], [ 99.758, 38.410449 ], [ 99.826985, 38.370109 ], [ 99.960028, 38.320825 ], [ 100.001912, 38.315191 ], [ 100.049955, 38.283254 ], [ 100.071513, 38.284663 ], [ 100.117093, 38.253652 ], [ 100.126332, 38.231561 ], [ 100.182998, 38.222158 ], [ 100.159592, 38.291239 ], [ 100.163904, 38.328337 ], [ 100.136803, 38.33444 ], [ 100.093071, 38.407166 ], [ 100.022238, 38.432017 ], [ 100.001296, 38.467169 ], [ 100.025933, 38.507923 ], [ 100.064122, 38.518694 ], [ 100.086911, 38.492936 ], [ 100.113397, 38.497151 ], [ 100.163288, 38.461546 ], [ 100.24028, 38.441861 ], [ 100.259374, 38.366355 ], [ 100.301874, 38.388405 ], [ 100.331439, 38.337257 ], [ 100.318505, 38.329276 ], [ 100.396729, 38.293118 ], [ 100.424446, 38.307208 ], [ 100.432453, 38.275267 ], [ 100.459555, 38.2654 ], [ 100.474953, 38.288891 ], [ 100.516837, 38.272448 ], [ 100.545786, 38.247072 ], [ 100.595061, 38.242372 ], [ 100.619083, 38.26587 ], [ 100.71517, 38.253652 ], [ 100.752126, 38.238612 ], [ 100.825423, 38.158658 ], [ 100.860531, 38.148305 ], [ 100.913502, 38.17889 ], [ 100.93814, 38.16007 ], [ 100.91843, 38.129006 ], [ 100.922125, 38.084741 ], [ 100.888864, 38.056001 ], [ 100.895024, 38.013107 ], [ 100.91843, 37.999432 ], [ 100.964009, 38.011221 ], [ 101.077342, 37.941874 ], [ 101.103211, 37.946593 ], [ 101.114298, 37.92016 ], [ 101.152486, 37.891356 ], [ 101.159262, 37.86821 ], [ 101.202994, 37.84742 ], [ 101.276906, 37.83655 ], [ 101.362522, 37.791162 ], [ 101.382848, 37.822369 ], [ 101.459224, 37.86632 ], [ 101.551615, 37.835604 ], [ 101.598427, 37.827569 ], [ 101.670491, 37.754264 ], [ 101.659405, 37.733441 ], [ 101.791832, 37.696041 ], [ 101.815853, 37.654357 ], [ 101.854657, 37.664781 ], [ 101.873135, 37.686569 ], [ 101.946432, 37.728235 ], [ 101.998787, 37.724921 ], [ 102.036359, 37.685149 ], [ 102.048678, 37.651515 ], [ 102.035128, 37.627819 ], [ 102.102265, 37.582304 ], [ 102.131214, 37.54625 ], [ 102.103497, 37.482641 ], [ 102.125055, 37.48549 ], [ 102.176794, 37.458892 ], [ 102.19712, 37.420403 ], [ 102.299981, 37.391404 ], [ 102.29875, 37.370004 ], [ 102.368351, 37.327662 ], [ 102.428097, 37.308624 ], [ 102.419474, 37.294343 ], [ 102.45335, 37.271487 ], [ 102.457662, 37.248147 ], [ 102.490307, 37.223371 ], [ 102.533422, 37.217176 ], [ 102.578386, 37.17284 ], [ 102.599944, 37.174748 ], [ 102.642444, 37.099845 ], [ 102.583314, 37.104618 ], [ 102.488459, 37.078362 ], [ 102.506321, 37.019134 ], [ 102.450271, 36.968467 ], [ 102.499546, 36.954599 ], [ 102.526031, 36.928291 ], [ 102.56114, 36.91968 ], [ 102.587009, 36.869904 ], [ 102.639364, 36.852666 ], [ 102.720052, 36.767858 ], [ 102.692335, 36.775528 ], [ 102.639364, 36.732853 ], [ 102.612879, 36.738129 ], [ 102.601176, 36.710307 ], [ 102.630741, 36.650793 ], [ 102.684328, 36.619097 ], [ 102.724364, 36.613813 ], [ 102.714509, 36.599401 ], [ 102.761936, 36.568645 ], [ 102.734219, 36.562396 ], [ 102.753313, 36.525855 ], [ 102.793349, 36.497957 ], [ 102.771791, 36.47438 ], [ 102.829689, 36.365544 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "640000", "name": "宁夏回族自治区", "center": [ 106.278179, 38.46637 ], "centroid": [ 106.169867, 37.291331 ], "childrenNum": 5, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 29, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 107.268764, 37.099367 ], [ 107.234887, 37.096503 ], [ 107.181916, 37.143269 ], [ 107.133873, 37.134681 ], [ 107.095685, 37.115595 ], [ 107.030395, 37.140883 ], [ 107.031011, 37.108436 ], [ 106.998367, 37.106527 ], [ 106.905976, 37.151378 ], [ 106.912135, 37.110345 ], [ 106.891193, 37.098413 ], [ 106.818512, 37.141838 ], [ 106.776012, 37.158056 ], [ 106.772933, 37.120367 ], [ 106.750143, 37.09889 ], [ 106.728585, 37.121321 ], [ 106.687933, 37.12991 ], [ 106.673151, 37.1113 ], [ 106.6171, 37.135158 ], [ 106.605397, 37.127524 ], [ 106.645433, 37.064992 ], [ 106.666991, 37.016745 ], [ 106.646665, 37.000496 ], [ 106.64297, 36.962729 ], [ 106.594926, 36.967988 ], [ 106.595542, 36.94025 ], [ 106.540108, 36.984244 ], [ 106.549347, 36.941685 ], [ 106.601702, 36.918244 ], [ 106.609709, 36.878521 ], [ 106.609709, 36.878521 ], [ 106.626955, 36.892403 ], [ 106.637426, 36.867031 ], [ 106.637426, 36.867031 ], [ 106.657752, 36.820575 ], [ 106.627571, 36.752995 ], [ 106.644817, 36.72278 ], [ 106.59431, 36.750118 ], [ 106.514238, 36.715584 ], [ 106.519782, 36.708868 ], [ 106.519782, 36.708868 ], [ 106.530869, 36.690154 ], [ 106.490833, 36.685835 ], [ 106.491448, 36.628703 ], [ 106.444637, 36.624861 ], [ 106.465579, 36.583063 ], [ 106.444637, 36.557109 ], [ 106.397826, 36.576816 ], [ 106.392282, 36.556628 ], [ 106.363949, 36.577296 ], [ 106.37134, 36.549417 ], [ 106.39721, 36.548455 ], [ 106.455724, 36.496995 ], [ 106.494528, 36.494589 ], [ 106.523477, 36.468605 ], [ 106.492064, 36.422389 ], [ 106.510543, 36.379037 ], [ 106.497608, 36.31348 ], [ 106.470507, 36.306246 ], [ 106.504383, 36.266207 ], [ 106.54134, 36.25366 ], [ 106.559202, 36.292259 ], [ 106.647897, 36.259451 ], [ 106.685469, 36.273445 ], [ 106.698404, 36.244008 ], [ 106.735976, 36.23725 ], [ 106.772933, 36.212628 ], [ 106.808657, 36.21118 ], [ 106.833295, 36.229044 ], [ 106.858548, 36.206834 ], [ 106.858548, 36.206834 ], [ 106.873947, 36.178338 ], [ 106.873947, 36.178338 ], [ 106.930613, 36.138716 ], [ 106.925686, 36.115997 ], [ 106.957715, 36.091337 ], [ 106.940468, 36.064734 ], [ 106.928149, 36.011502 ], [ 106.94786, 35.988262 ], [ 106.90228, 35.943699 ], [ 106.93862, 35.952905 ], [ 106.940468, 35.931101 ], [ 106.912751, 35.93207 ], [ 106.849925, 35.887476 ], [ 106.927534, 35.810346 ], [ 106.897353, 35.759856 ], [ 106.868403, 35.771996 ], [ 106.867171, 35.738485 ], [ 106.819128, 35.7448 ], [ 106.806193, 35.70982 ], [ 106.750759, 35.725369 ], [ 106.750759, 35.689408 ], [ 106.674998, 35.728284 ], [ 106.66268, 35.70739 ], [ 106.633115, 35.714679 ], [ 106.620796, 35.743829 ], [ 106.595542, 35.727312 ], [ 106.566593, 35.738971 ], [ 106.506231, 35.737514 ], [ 106.49268, 35.732656 ], [ 106.434782, 35.688436 ], [ 106.460036, 35.643705 ], [ 106.47913, 35.575101 ], [ 106.460036, 35.578995 ], [ 106.440941, 35.52641 ], [ 106.465579, 35.481101 ], [ 106.490217, 35.480613 ], [ 106.483441, 35.450393 ], [ 106.503767, 35.415284 ], [ 106.501304, 35.364056 ], [ 106.472354, 35.310842 ], [ 106.415688, 35.276161 ], [ 106.368261, 35.273718 ], [ 106.363333, 35.238532 ], [ 106.319601, 35.265411 ], [ 106.241377, 35.358687 ], [ 106.237681, 35.409431 ], [ 106.196414, 35.409919 ], [ 106.173008, 35.437716 ], [ 106.129892, 35.393333 ], [ 106.113262, 35.361616 ], [ 106.083081, 35.421624 ], [ 106.073226, 35.447468 ], [ 106.071378, 35.449418 ], [ 106.073226, 35.450393 ], [ 106.073842, 35.45478 ], [ 106.06953, 35.458193 ], [ 106.071994, 35.463555 ], [ 106.078769, 35.509848 ], [ 106.047356, 35.498155 ], [ 106.023335, 35.49377 ], [ 106.017175, 35.519103 ], [ 105.900147, 35.54735 ], [ 105.868734, 35.540046 ], [ 105.847176, 35.490359 ], [ 105.816379, 35.575101 ], [ 105.800365, 35.564878 ], [ 105.762176, 35.602841 ], [ 105.759097, 35.634464 ], [ 105.713517, 35.650513 ], [ 105.722756, 35.673366 ], [ 105.690727, 35.698643 ], [ 105.723988, 35.725854 ], [ 105.740618, 35.698643 ], [ 105.759097, 35.724883 ], [ 105.70243, 35.733142 ], [ 105.667322, 35.749657 ], [ 105.595873, 35.715651 ], [ 105.481924, 35.727312 ], [ 105.457286, 35.771511 ], [ 105.432033, 35.787533 ], [ 105.428953, 35.819082 ], [ 105.408627, 35.822479 ], [ 105.38091, 35.792873 ], [ 105.371055, 35.844312 ], [ 105.39754, 35.857409 ], [ 105.350113, 35.875839 ], [ 105.324859, 35.941761 ], [ 105.343954, 36.033767 ], [ 105.406163, 36.074409 ], [ 105.430801, 36.10391 ], [ 105.491163, 36.101009 ], [ 105.515185, 36.147415 ], [ 105.478844, 36.213111 ], [ 105.460366, 36.223733 ], [ 105.45975, 36.268137 ], [ 105.476381, 36.293224 ], [ 105.455439, 36.321678 ], [ 105.425873, 36.330357 ], [ 105.401236, 36.369881 ], [ 105.398156, 36.430575 ], [ 105.363048, 36.443093 ], [ 105.362432, 36.496514 ], [ 105.322396, 36.535954 ], [ 105.281744, 36.522489 ], [ 105.252179, 36.553263 ], [ 105.2762, 36.563358 ], [ 105.261418, 36.602764 ], [ 105.22015, 36.631105 ], [ 105.225693, 36.664716 ], [ 105.201056, 36.700711 ], [ 105.218302, 36.730455 ], [ 105.272505, 36.739567 ], [ 105.275584, 36.752515 ], [ 105.319932, 36.742924 ], [ 105.340874, 36.764502 ], [ 105.334714, 36.80093 ], [ 105.303302, 36.820575 ], [ 105.279896, 36.86751 ], [ 105.244787, 36.894796 ], [ 105.178882, 36.892403 ], [ 105.185657, 36.942164 ], [ 105.165331, 36.99476 ], [ 105.128991, 36.996194 ], [ 105.05939, 37.022956 ], [ 105.03968, 37.007187 ], [ 105.004571, 37.035378 ], [ 104.95468, 37.040156 ], [ 104.954064, 37.077407 ], [ 104.914644, 37.097935 ], [ 104.888158, 37.15901 ], [ 104.864753, 37.17284 ], [ 104.85613, 37.211933 ], [ 104.776673, 37.246718 ], [ 104.717543, 37.208597 ], [ 104.638087, 37.201923 ], [ 104.600515, 37.242907 ], [ 104.624536, 37.298627 ], [ 104.651022, 37.290534 ], [ 104.673812, 37.317668 ], [ 104.713848, 37.329566 ], [ 104.662109, 37.367626 ], [ 104.679971, 37.408044 ], [ 104.521059, 37.43466 ], [ 104.499501, 37.421353 ], [ 104.448994, 37.42468 ], [ 104.437907, 37.445589 ], [ 104.365226, 37.418026 ], [ 104.298705, 37.414223 ], [ 104.287002, 37.428007 ], [ 104.322726, 37.44844 ], [ 104.407726, 37.464592 ], [ 104.419429, 37.511604 ], [ 104.433595, 37.515402 ], [ 104.623305, 37.522522 ], [ 104.805007, 37.539133 ], [ 104.866601, 37.566651 ], [ 105.027977, 37.580881 ], [ 105.111128, 37.633981 ], [ 105.187505, 37.657674 ], [ 105.221998, 37.677097 ], [ 105.315004, 37.702197 ], [ 105.4037, 37.710246 ], [ 105.467141, 37.695094 ], [ 105.598952, 37.699356 ], [ 105.616199, 37.722555 ], [ 105.622358, 37.777919 ], [ 105.677177, 37.771769 ], [ 105.760944, 37.799674 ], [ 105.80406, 37.862068 ], [ 105.799749, 37.939986 ], [ 105.840401, 38.004147 ], [ 105.780655, 38.084741 ], [ 105.76772, 38.121474 ], [ 105.775111, 38.186887 ], [ 105.802828, 38.220277 ], [ 105.842248, 38.240962 ], [ 105.86627, 38.296406 ], [ 105.821307, 38.366824 ], [ 105.835473, 38.387467 ], [ 105.827466, 38.432486 ], [ 105.850872, 38.443736 ], [ 105.836705, 38.476071 ], [ 105.863806, 38.53508 ], [ 105.856415, 38.569714 ], [ 105.874277, 38.593105 ], [ 105.852719, 38.641735 ], [ 105.894603, 38.696405 ], [ 105.88598, 38.716953 ], [ 105.908154, 38.737496 ], [ 105.909386, 38.791159 ], [ 105.992538, 38.857366 ], [ 105.97098, 38.909077 ], [ 106.021487, 38.953769 ], [ 106.060907, 38.96866 ], [ 106.087392, 39.006339 ], [ 106.078153, 39.026333 ], [ 106.096631, 39.084889 ], [ 106.145907, 39.153142 ], [ 106.170544, 39.163352 ], [ 106.192718, 39.142932 ], [ 106.251232, 39.131327 ], [ 106.285109, 39.146181 ], [ 106.29558, 39.167992 ], [ 106.280181, 39.262118 ], [ 106.402753, 39.291767 ], [ 106.511774, 39.272311 ], [ 106.525325, 39.308439 ], [ 106.556122, 39.322329 ], [ 106.602318, 39.37555 ], [ 106.643586, 39.357969 ], [ 106.683622, 39.357506 ], [ 106.751375, 39.381564 ], [ 106.781556, 39.371849 ], [ 106.806809, 39.318625 ], [ 106.806193, 39.277407 ], [ 106.790795, 39.241263 ], [ 106.795723, 39.214375 ], [ 106.825288, 39.19397 ], [ 106.859164, 39.107648 ], [ 106.878874, 39.091392 ], [ 106.933693, 39.076527 ], [ 106.96757, 39.054688 ], [ 106.971881, 39.026333 ], [ 106.954019, 38.941202 ], [ 106.837606, 38.847579 ], [ 106.756302, 38.748699 ], [ 106.709491, 38.718821 ], [ 106.66268, 38.601524 ], [ 106.647897, 38.470917 ], [ 106.599854, 38.389812 ], [ 106.482209, 38.319417 ], [ 106.555506, 38.263521 ], [ 106.627571, 38.232501 ], [ 106.654672, 38.22921 ], [ 106.737824, 38.197706 ], [ 106.779092, 38.171833 ], [ 106.858548, 38.156306 ], [ 106.942316, 38.132302 ], [ 107.010069, 38.120532 ], [ 107.051337, 38.122886 ], [ 107.071047, 38.138892 ], [ 107.119091, 38.134185 ], [ 107.138801, 38.161011 ], [ 107.19054, 38.153953 ], [ 107.240431, 38.111586 ], [ 107.33159, 38.086625 ], [ 107.3938, 38.014993 ], [ 107.440611, 37.995659 ], [ 107.411662, 37.948009 ], [ 107.448618, 37.933378 ], [ 107.49235, 37.944706 ], [ 107.560719, 37.893717 ], [ 107.65003, 37.86443 ], [ 107.659269, 37.844112 ], [ 107.646335, 37.805349 ], [ 107.620465, 37.776026 ], [ 107.599523, 37.791162 ], [ 107.57119, 37.776499 ], [ 107.499125, 37.765619 ], [ 107.484959, 37.706458 ], [ 107.425828, 37.684201 ], [ 107.387024, 37.691305 ], [ 107.389488, 37.671413 ], [ 107.422133, 37.665254 ], [ 107.361155, 37.613125 ], [ 107.311264, 37.609806 ], [ 107.330358, 37.584201 ], [ 107.369162, 37.58752 ], [ 107.345756, 37.518725 ], [ 107.284162, 37.481691 ], [ 107.282931, 37.437036 ], [ 107.257677, 37.337179 ], [ 107.273075, 37.29101 ], [ 107.309416, 37.239095 ], [ 107.270612, 37.229089 ], [ 107.317423, 37.200017 ], [ 107.336517, 37.165687 ], [ 107.334669, 37.138975 ], [ 107.306952, 37.100799 ], [ 107.281083, 37.127047 ], [ 107.268764, 37.099367 ] ] ], [ [ [ 106.048588, 35.488898 ], [ 106.054132, 35.45478 ], [ 106.034422, 35.469404 ], [ 106.002393, 35.438692 ], [ 105.894603, 35.413821 ], [ 105.897683, 35.451368 ], [ 106.048588, 35.488898 ] ] ], [ [ [ 106.073842, 35.45478 ], [ 106.073226, 35.450393 ], [ 106.071378, 35.449418 ], [ 106.06953, 35.458193 ], [ 106.073842, 35.45478 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "650000", "name": "新疆维吾尔自治区", "center": [ 87.617733, 43.792818 ], "centroid": [ 85.294711, 41.371801 ], "childrenNum": 24, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 30, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 96.386348, 42.727592 ], [ 96.166458, 42.623314 ], [ 96.103632, 42.604375 ], [ 96.072219, 42.569566 ], [ 96.02356, 42.542675 ], [ 96.0174, 42.482239 ], [ 95.978596, 42.436762 ], [ 96.06606, 42.414674 ], [ 96.042038, 42.352787 ], [ 96.040806, 42.326688 ], [ 96.178161, 42.21775 ], [ 96.077147, 42.149457 ], [ 96.13874, 42.05399 ], [ 96.137509, 42.019765 ], [ 96.117183, 41.985966 ], [ 96.054973, 41.936124 ], [ 95.998306, 41.906289 ], [ 95.855408, 41.849699 ], [ 95.801206, 41.848361 ], [ 95.759322, 41.835878 ], [ 95.65646, 41.826067 ], [ 95.57146, 41.796181 ], [ 95.445193, 41.719841 ], [ 95.39407, 41.693481 ], [ 95.335556, 41.644305 ], [ 95.299831, 41.565994 ], [ 95.247476, 41.61344 ], [ 95.194505, 41.694821 ], [ 95.199433, 41.719395 ], [ 95.16494, 41.735474 ], [ 95.135991, 41.772976 ], [ 95.110738, 41.768513 ], [ 95.011572, 41.726541 ], [ 94.969072, 41.718948 ], [ 94.861898, 41.668451 ], [ 94.809543, 41.619256 ], [ 94.750413, 41.538227 ], [ 94.534219, 41.505966 ], [ 94.184365, 41.268444 ], [ 94.01067, 41.114875 ], [ 93.908424, 40.983539 ], [ 93.809874, 40.879548 ], [ 93.820961, 40.793519 ], [ 93.760599, 40.664721 ], [ 93.506216, 40.648376 ], [ 92.928465, 40.572504 ], [ 92.920458, 40.391792 ], [ 92.906907, 40.310609 ], [ 92.796654, 40.153897 ], [ 92.745531, 39.868331 ], [ 92.687632, 39.657174 ], [ 92.639589, 39.514196 ], [ 92.52564, 39.368611 ], [ 92.378431, 39.258411 ], [ 92.339011, 39.236628 ], [ 92.343938, 39.146181 ], [ 92.366112, 39.096037 ], [ 92.366728, 39.059335 ], [ 92.41046, 39.03842 ], [ 92.416003, 39.010524 ], [ 92.380279, 38.999828 ], [ 92.263866, 39.002153 ], [ 92.197961, 38.983548 ], [ 92.173323, 38.960749 ], [ 92.10865, 38.963541 ], [ 91.966368, 38.930961 ], [ 91.880752, 38.899297 ], [ 91.87952, 38.884391 ], [ 91.806223, 38.872744 ], [ 91.694738, 38.86622 ], [ 91.681188, 38.852706 ], [ 91.501333, 38.815411 ], [ 91.446515, 38.813546 ], [ 91.298689, 38.746365 ], [ 91.242639, 38.752433 ], [ 91.188436, 38.73096 ], [ 90.992567, 38.695003 ], [ 90.970394, 38.697806 ], [ 90.899561, 38.679588 ], [ 90.724634, 38.658094 ], [ 90.65996, 38.674449 ], [ 90.619308, 38.664636 ], [ 90.645794, 38.635191 ], [ 90.606374, 38.610878 ], [ 90.608837, 38.594508 ], [ 90.560794, 38.593573 ], [ 90.525685, 38.561291 ], [ 90.463476, 38.556611 ], [ 90.465323, 38.521971 ], [ 90.427135, 38.493873 ], [ 90.353222, 38.482162 ], [ 90.315034, 38.501835 ], [ 90.248513, 38.491531 ], [ 90.130868, 38.494341 ], [ 90.111774, 38.477945 ], [ 90.111774, 38.418889 ], [ 90.129636, 38.400131 ], [ 90.179528, 38.396848 ], [ 90.137644, 38.340543 ], [ 90.280542, 38.238142 ], [ 90.352607, 38.233441 ], [ 90.361846, 38.300163 ], [ 90.401882, 38.311434 ], [ 90.531229, 38.319886 ], [ 90.516446, 38.207111 ], [ 90.519526, 37.730601 ], [ 90.579272, 37.720661 ], [ 90.586663, 37.703144 ], [ 90.643946, 37.696988 ], [ 90.777605, 37.648672 ], [ 90.820104, 37.613599 ], [ 90.854597, 37.604117 ], [ 90.882314, 37.575664 ], [ 90.865684, 37.53059 ], [ 90.911879, 37.519674 ], [ 90.958075, 37.477891 ], [ 91.019669, 37.493088 ], [ 91.073256, 37.475992 ], [ 91.099741, 37.447965 ], [ 91.113292, 37.387124 ], [ 91.136081, 37.355734 ], [ 91.134849, 37.324331 ], [ 91.194596, 37.273868 ], [ 91.1909, 37.205737 ], [ 91.280211, 37.163779 ], [ 91.286371, 37.105095 ], [ 91.303617, 37.083136 ], [ 91.291298, 37.042544 ], [ 91.303617, 37.012444 ], [ 91.216153, 37.010054 ], [ 91.181045, 37.025345 ], [ 91.133618, 37.007665 ], [ 91.126842, 36.978507 ], [ 91.051698, 36.96751 ], [ 91.036915, 36.929727 ], [ 90.983944, 36.913459 ], [ 90.924198, 36.921115 ], [ 90.853981, 36.915373 ], [ 90.758511, 36.825844 ], [ 90.732025, 36.825844 ], [ 90.727098, 36.755872 ], [ 90.754815, 36.721341 ], [ 90.720938, 36.708868 ], [ 90.706156, 36.658955 ], [ 90.730793, 36.655594 ], [ 90.72217, 36.620058 ], [ 90.741264, 36.585947 ], [ 90.810865, 36.585466 ], [ 90.831191, 36.55807 ], [ 90.905104, 36.560474 ], [ 91.011662, 36.539801 ], [ 91.035683, 36.529703 ], [ 91.039995, 36.474861 ], [ 91.028292, 36.443093 ], [ 91.051698, 36.433946 ], [ 91.026444, 36.323607 ], [ 91.07264, 36.299012 ], [ 91.051698, 36.238215 ], [ 91.096045, 36.219871 ], [ 91.09235, 36.163844 ], [ 91.124994, 36.115514 ], [ 91.081263, 36.088436 ], [ 90.979017, 36.106811 ], [ 90.922966, 36.028927 ], [ 90.850285, 36.016827 ], [ 90.815793, 36.035703 ], [ 90.776373, 36.086501 ], [ 90.659344, 36.13485 ], [ 90.613149, 36.126632 ], [ 90.534925, 36.147899 ], [ 90.478258, 36.13195 ], [ 90.424055, 36.133883 ], [ 90.325505, 36.159496 ], [ 90.23681, 36.160462 ], [ 90.198006, 36.187516 ], [ 90.130252, 36.2078 ], [ 90.145651, 36.239181 ], [ 90.058188, 36.255591 ], [ 90.043405, 36.276822 ], [ 90.003369, 36.278752 ], [ 90.028006, 36.258486 ], [ 90.019999, 36.213594 ], [ 89.997825, 36.168193 ], [ 89.944855, 36.140649 ], [ 89.941159, 36.067637 ], [ 89.914058, 36.079246 ], [ 89.819819, 36.080697 ], [ 89.766848, 36.073925 ], [ 89.711414, 36.093272 ], [ 89.614711, 36.109712 ], [ 89.594385, 36.126632 ], [ 89.490291, 36.151281 ], [ 89.375727, 36.228078 ], [ 89.335075, 36.23725 ], [ 89.292575, 36.231457 ], [ 89.232213, 36.295636 ], [ 89.198952, 36.260417 ], [ 89.126887, 36.254626 ], [ 89.10225, 36.281164 ], [ 89.054822, 36.291777 ], [ 89.013554, 36.315409 ], [ 88.964279, 36.318785 ], [ 88.926091, 36.36458 ], [ 88.870657, 36.348193 ], [ 88.838628, 36.353496 ], [ 88.802903, 36.33807 ], [ 88.783809, 36.291777 ], [ 88.766563, 36.292259 ], [ 88.690186, 36.367954 ], [ 88.623665, 36.389636 ], [ 88.618121, 36.428168 ], [ 88.573158, 36.461386 ], [ 88.498629, 36.446463 ], [ 88.470912, 36.48208 ], [ 88.41055, 36.473418 ], [ 88.356963, 36.477268 ], [ 88.366202, 36.458016 ], [ 88.282434, 36.470049 ], [ 88.241782, 36.468605 ], [ 88.222688, 36.447426 ], [ 88.182652, 36.452721 ], [ 88.134609, 36.427205 ], [ 88.092109, 36.43539 ], [ 88.006494, 36.430575 ], [ 87.983088, 36.437797 ], [ 87.95845, 36.408423 ], [ 87.919646, 36.39349 ], [ 87.838342, 36.383855 ], [ 87.826023, 36.391563 ], [ 87.767509, 36.3747 ], [ 87.731785, 36.384818 ], [ 87.6203, 36.360243 ], [ 87.570409, 36.342409 ], [ 87.470626, 36.354459 ], [ 87.460155, 36.409868 ], [ 87.426895, 36.42576 ], [ 87.386859, 36.412757 ], [ 87.363453, 36.420463 ], [ 87.348055, 36.393008 ], [ 87.292004, 36.358797 ], [ 87.193454, 36.349158 ], [ 87.161425, 36.325535 ], [ 87.149106, 36.297565 ], [ 87.08628, 36.310587 ], [ 87.051788, 36.2966 ], [ 86.996353, 36.308658 ], [ 86.943998, 36.284058 ], [ 86.931064, 36.265242 ], [ 86.887332, 36.262829 ], [ 86.86331, 36.299977 ], [ 86.836209, 36.291294 ], [ 86.746282, 36.291777 ], [ 86.69947, 36.24449 ], [ 86.599072, 36.222285 ], [ 86.531935, 36.227113 ], [ 86.515305, 36.205385 ], [ 86.454943, 36.221319 ], [ 86.392733, 36.206834 ], [ 86.35824, 36.168676 ], [ 86.2794, 36.170608 ], [ 86.248603, 36.141616 ], [ 86.187625, 36.130983 ], [ 86.182081, 36.064734 ], [ 86.199944, 36.047801 ], [ 86.173458, 36.008113 ], [ 86.150668, 36.00424 ], [ 86.129111, 35.941761 ], [ 86.093386, 35.906868 ], [ 86.090306, 35.876809 ], [ 86.05335, 35.842857 ], [ 86.035488, 35.846738 ], [ 85.949256, 35.778794 ], [ 85.903677, 35.78462 ], [ 85.835308, 35.771996 ], [ 85.811286, 35.778794 ], [ 85.691178, 35.751114 ], [ 85.65299, 35.731199 ], [ 85.612953, 35.651486 ], [ 85.566142, 35.6403 ], [ 85.518715, 35.680658 ], [ 85.373969, 35.700101 ], [ 85.341324, 35.753543 ], [ 85.271107, 35.788989 ], [ 85.146071, 35.742371 ], [ 85.053065, 35.752086 ], [ 84.99455, 35.737028 ], [ 84.973608, 35.709334 ], [ 84.920022, 35.696213 ], [ 84.798066, 35.647595 ], [ 84.729081, 35.613546 ], [ 84.704443, 35.616951 ], [ 84.628067, 35.595055 ], [ 84.570168, 35.588242 ], [ 84.513502, 35.564391 ], [ 84.448828, 35.550272 ], [ 84.475929, 35.516181 ], [ 84.45314, 35.473303 ], [ 84.424191, 35.466479 ], [ 84.333032, 35.413821 ], [ 84.274517, 35.404065 ], [ 84.200605, 35.381135 ], [ 84.160569, 35.359663 ], [ 84.140859, 35.379184 ], [ 84.095895, 35.362592 ], [ 84.077417, 35.400163 ], [ 84.005968, 35.422599 ], [ 83.906186, 35.40309 ], [ 83.885244, 35.367472 ], [ 83.79778, 35.354783 ], [ 83.785462, 35.36308 ], [ 83.677672, 35.361128 ], [ 83.622238, 35.335256 ], [ 83.599448, 35.351366 ], [ 83.54155, 35.341603 ], [ 83.540318, 35.364056 ], [ 83.502745, 35.360639 ], [ 83.449159, 35.382111 ], [ 83.405427, 35.380648 ], [ 83.333978, 35.397236 ], [ 83.280391, 35.401138 ], [ 83.251442, 35.417722 ], [ 83.178145, 35.38943 ], [ 83.127022, 35.398699 ], [ 83.088834, 35.425526 ], [ 83.067892, 35.46258 ], [ 82.998907, 35.484512 ], [ 82.971806, 35.548324 ], [ 82.981661, 35.599922 ], [ 82.956407, 35.636409 ], [ 82.967494, 35.667532 ], [ 82.894813, 35.673852 ], [ 82.873871, 35.688922 ], [ 82.795031, 35.688436 ], [ 82.780249, 35.666073 ], [ 82.731589, 35.637868 ], [ 82.652133, 35.67288 ], [ 82.628727, 35.692324 ], [ 82.546192, 35.708362 ], [ 82.501844, 35.701073 ], [ 82.468583, 35.717595 ], [ 82.424852, 35.712736 ], [ 82.392823, 35.656349 ], [ 82.336156, 35.651486 ], [ 82.350323, 35.611113 ], [ 82.328149, 35.559523 ], [ 82.2992, 35.544916 ], [ 82.263475, 35.547837 ], [ 82.234526, 35.520565 ], [ 82.189563, 35.513258 ], [ 82.164925, 35.495719 ], [ 82.086701, 35.467454 ], [ 82.071302, 35.450393 ], [ 82.034346, 35.451855 ], [ 82.029419, 35.426013 ], [ 82.05344, 35.35039 ], [ 82.030034, 35.321585 ], [ 81.99123, 35.30547 ], [ 81.955506, 35.307423 ], [ 81.927789, 35.271275 ], [ 81.853876, 35.25857 ], [ 81.804601, 35.270786 ], [ 81.736847, 35.26248 ], [ 81.68634, 35.235599 ], [ 81.513261, 35.23511 ], [ 81.504638, 35.279092 ], [ 81.447972, 35.318167 ], [ 81.441196, 35.333303 ], [ 81.385762, 35.335256 ], [ 81.363588, 35.354783 ], [ 81.314313, 35.337209 ], [ 81.285364, 35.345508 ], [ 81.26627, 35.322562 ], [ 81.219458, 35.319144 ], [ 81.191741, 35.36552 ], [ 81.142466, 35.365032 ], [ 81.103662, 35.386015 ], [ 81.09935, 35.40748 ], [ 81.054387, 35.402602 ], [ 81.031597, 35.380648 ], [ 81.030981, 35.337209 ], [ 81.002648, 35.334768 ], [ 81.026053, 35.31133 ], [ 80.963844, 35.310842 ], [ 80.924423, 35.330862 ], [ 80.894242, 35.324027 ], [ 80.844351, 35.345508 ], [ 80.759968, 35.334768 ], [ 80.689135, 35.339162 ], [ 80.690982, 35.364544 ], [ 80.65649, 35.393821 ], [ 80.599823, 35.409431 ], [ 80.56841, 35.391381 ], [ 80.532686, 35.404553 ], [ 80.514824, 35.391869 ], [ 80.444607, 35.417235 ], [ 80.432904, 35.449418 ], [ 80.375006, 35.387966 ], [ 80.321419, 35.38699 ], [ 80.286926, 35.35283 ], [ 80.267832, 35.295701 ], [ 80.362687, 35.20871 ], [ 80.257977, 35.203331 ], [ 80.223484, 35.177409 ], [ 80.23026, 35.147565 ], [ 80.118159, 35.066293 ], [ 80.078123, 35.076578 ], [ 80.031311, 35.034447 ], [ 80.04363, 35.022196 ], [ 80.02392, 34.971209 ], [ 80.041782, 34.943252 ], [ 80.034391, 34.902033 ], [ 80.003594, 34.895162 ], [ 79.996819, 34.856375 ], [ 79.961094, 34.862759 ], [ 79.926602, 34.849499 ], [ 79.947544, 34.821008 ], [ 79.898268, 34.732035 ], [ 79.906892, 34.683821 ], [ 79.866856, 34.671517 ], [ 79.88595, 34.642965 ], [ 79.84345, 34.55725 ], [ 79.861312, 34.528166 ], [ 79.801566, 34.478847 ], [ 79.735661, 34.471447 ], [ 79.699936, 34.477861 ], [ 79.675914, 34.451216 ], [ 79.58106, 34.456151 ], [ 79.545335, 34.476381 ], [ 79.504683, 34.45467 ], [ 79.435082, 34.447761 ], [ 79.363017, 34.428018 ], [ 79.326677, 34.44332 ], [ 79.274322, 34.435916 ], [ 79.241677, 34.415183 ], [ 79.179467, 34.422588 ], [ 79.161605, 34.441345 ], [ 79.072294, 34.412714 ], [ 79.039033, 34.421601 ], [ 79.0107, 34.399877 ], [ 79.048888, 34.348506 ], [ 79.039649, 34.33467 ], [ 78.973128, 34.362833 ], [ 78.958961, 34.386049 ], [ 78.899831, 34.354929 ], [ 78.878273, 34.391481 ], [ 78.809288, 34.432955 ], [ 78.742766, 34.45467 ], [ 78.758781, 34.481807 ], [ 78.715049, 34.502031 ], [ 78.708274, 34.522249 ], [ 78.634977, 34.538026 ], [ 78.58139, 34.505483 ], [ 78.562912, 34.51288 ], [ 78.559832, 34.55725 ], [ 78.542586, 34.574499 ], [ 78.492695, 34.578441 ], [ 78.436029, 34.543942 ], [ 78.427405, 34.594207 ], [ 78.397224, 34.605538 ], [ 78.346101, 34.60406 ], [ 78.280812, 34.623269 ], [ 78.265413, 34.651335 ], [ 78.267261, 34.705472 ], [ 78.213059, 34.717771 ], [ 78.21429, 34.760556 ], [ 78.230921, 34.776288 ], [ 78.237696, 34.882398 ], [ 78.206283, 34.891726 ], [ 78.182262, 34.936874 ], [ 78.201972, 34.974642 ], [ 78.160704, 34.990823 ], [ 78.123131, 35.036897 ], [ 78.150849, 35.069721 ], [ 78.124979, 35.108407 ], [ 78.078784, 35.100084 ], [ 78.062769, 35.114772 ], [ 78.060306, 35.180344 ], [ 78.01719, 35.228267 ], [ 78.020885, 35.315237 ], [ 78.013494, 35.366008 ], [ 78.046755, 35.384063 ], [ 78.107117, 35.437229 ], [ 78.113892, 35.466967 ], [ 78.140378, 35.494745 ], [ 78.048603, 35.491334 ], [ 78.029509, 35.469404 ], [ 78.009799, 35.491821 ], [ 77.951284, 35.478664 ], [ 77.917408, 35.490847 ], [ 77.914944, 35.465017 ], [ 77.870596, 35.495232 ], [ 77.85643, 35.487436 ], [ 77.816394, 35.518616 ], [ 77.797299, 35.491334 ], [ 77.757879, 35.497181 ], [ 77.735706, 35.461605 ], [ 77.690742, 35.448443 ], [ 77.657481, 35.477689 ], [ 77.639619, 35.45478 ], [ 77.590344, 35.460143 ], [ 77.578025, 35.47574 ], [ 77.518895, 35.482075 ], [ 77.451758, 35.46063 ], [ 77.396939, 35.467942 ], [ 77.355055, 35.494257 ], [ 77.331649, 35.530793 ], [ 77.307628, 35.540533 ], [ 77.195527, 35.519103 ], [ 77.093281, 35.569746 ], [ 77.072339, 35.591162 ], [ 76.99781, 35.611113 ], [ 76.967013, 35.591649 ], [ 76.906651, 35.615005 ], [ 76.848753, 35.668018 ], [ 76.769297, 35.653917 ], [ 76.69292, 35.747714 ], [ 76.593754, 35.771996 ], [ 76.566037, 35.819082 ], [ 76.587595, 35.840431 ], [ 76.579587, 35.866625 ], [ 76.59745, 35.895718 ], [ 76.55803, 35.923347 ], [ 76.51553, 35.881173 ], [ 76.471798, 35.886021 ], [ 76.431762, 35.851589 ], [ 76.369552, 35.86323 ], [ 76.365857, 35.82442 ], [ 76.298719, 35.841401 ], [ 76.228502, 35.837035 ], [ 76.221727, 35.823449 ], [ 76.160133, 35.82442 ], [ 76.146582, 35.839946 ], [ 76.16506, 35.908807 ], [ 76.117017, 35.975186 ], [ 76.097307, 36.022635 ], [ 76.044336, 36.026991 ], [ 76.028322, 36.016827 ], [ 75.982742, 36.031347 ], [ 75.949482, 36.070056 ], [ 75.936547, 36.13485 ], [ 75.96796, 36.159013 ], [ 76.016619, 36.165294 ], [ 76.011691, 36.229044 ], [ 76.060967, 36.225182 ], [ 76.055423, 36.252695 ], [ 75.998757, 36.312034 ], [ 75.991365, 36.35205 ], [ 76.035097, 36.409386 ], [ 75.991981, 36.505654 ], [ 75.924228, 36.566242 ], [ 75.947018, 36.590752 ], [ 75.871257, 36.666636 ], [ 75.8072, 36.707908 ], [ 75.724048, 36.750597 ], [ 75.634121, 36.771693 ], [ 75.588541, 36.762584 ], [ 75.537418, 36.773131 ], [ 75.536802, 36.729975 ], [ 75.504773, 36.743404 ], [ 75.458578, 36.720861 ], [ 75.425933, 36.778883 ], [ 75.434556, 36.83303 ], [ 75.430245, 36.873255 ], [ 75.396368, 36.904367 ], [ 75.413614, 36.954599 ], [ 75.345861, 36.960816 ], [ 75.288579, 36.974682 ], [ 75.244847, 36.963207 ], [ 75.16847, 36.991892 ], [ 75.172166, 37.013877 ], [ 75.063145, 37.006231 ], [ 75.032348, 37.016745 ], [ 75.005862, 36.99476 ], [ 74.927638, 36.978029 ], [ 74.938725, 36.94312 ], [ 74.893762, 36.939772 ], [ 74.86974, 36.990458 ], [ 74.84387, 37.0134 ], [ 74.84695, 37.056873 ], [ 74.806914, 37.054485 ], [ 74.792747, 37.027257 ], [ 74.739161, 37.028212 ], [ 74.70898, 37.084569 ], [ 74.632603, 37.066425 ], [ 74.617205, 37.043499 ], [ 74.56793, 37.032512 ], [ 74.530357, 37.082182 ], [ 74.498944, 37.072155 ], [ 74.496481, 37.116072 ], [ 74.465068, 37.147085 ], [ 74.487858, 37.161871 ], [ 74.477387, 37.19954 ], [ 74.511263, 37.240048 ], [ 74.54514, 37.2491 ], [ 74.578401, 37.231472 ], [ 74.598727, 37.258151 ], [ 74.642458, 37.261485 ], [ 74.665864, 37.23576 ], [ 74.727458, 37.282916 ], [ 74.753943, 37.281011 ], [ 74.800139, 37.248147 ], [ 74.816153, 37.216699 ], [ 74.911008, 37.233378 ], [ 74.927022, 37.277678 ], [ 75.018181, 37.293867 ], [ 75.078543, 37.318144 ], [ 75.125971, 37.322427 ], [ 75.140137, 37.355258 ], [ 75.125971, 37.388075 ], [ 75.153072, 37.414223 ], [ 75.129666, 37.459367 ], [ 75.090862, 37.486915 ], [ 75.078543, 37.511129 ], [ 75.035428, 37.500685 ], [ 75.002167, 37.511604 ], [ 75.000935, 37.53059 ], [ 74.940573, 37.559061 ], [ 74.891914, 37.668097 ], [ 74.920863, 37.684675 ], [ 74.923327, 37.717347 ], [ 74.949196, 37.725395 ], [ 75.006478, 37.770823 ], [ 74.989848, 37.797783 ], [ 74.917167, 37.845057 ], [ 74.936877, 37.876241 ], [ 74.919015, 37.908357 ], [ 74.911008, 37.966884 ], [ 74.92579, 38.01735 ], [ 74.879595, 38.021122 ], [ 74.821697, 38.10311 ], [ 74.80445, 38.167128 ], [ 74.816769, 38.215576 ], [ 74.793363, 38.271039 ], [ 74.806914, 38.285602 ], [ 74.789668, 38.324581 ], [ 74.834015, 38.361193 ], [ 74.868508, 38.403883 ], [ 74.862965, 38.484035 ], [ 74.821697, 38.491062 ], [ 74.78474, 38.538357 ], [ 74.717603, 38.542102 ], [ 74.639995, 38.599653 ], [ 74.613509, 38.593105 ], [ 74.546988, 38.607604 ], [ 74.506336, 38.637528 ], [ 74.455829, 38.632853 ], [ 74.421952, 38.647812 ], [ 74.353583, 38.655757 ], [ 74.229779, 38.656224 ], [ 74.147859, 38.676785 ], [ 74.11275, 38.611345 ], [ 74.088113, 38.610878 ], [ 74.068403, 38.585621 ], [ 74.090577, 38.542102 ], [ 74.034526, 38.541634 ], [ 74.011736, 38.52478 ], [ 73.926121, 38.536016 ], [ 73.89902, 38.579071 ], [ 73.852208, 38.584217 ], [ 73.799237, 38.610878 ], [ 73.809092, 38.634256 ], [ 73.757353, 38.719755 ], [ 73.769056, 38.775765 ], [ 73.729636, 38.837324 ], [ 73.699455, 38.857832 ], [ 73.70931, 38.893241 ], [ 73.742571, 38.933754 ], [ 73.767824, 38.941202 ], [ 73.826339, 38.916993 ], [ 73.846665, 38.962145 ], [ 73.839889, 39.008199 ], [ 73.820179, 39.041674 ], [ 73.780143, 39.026798 ], [ 73.743187, 39.029588 ], [ 73.720397, 39.071881 ], [ 73.719781, 39.108112 ], [ 73.688368, 39.154999 ], [ 73.657571, 39.166136 ], [ 73.639709, 39.220402 ], [ 73.623079, 39.235237 ], [ 73.580579, 39.237555 ], [ 73.564564, 39.266288 ], [ 73.542391, 39.269531 ], [ 73.554709, 39.295935 ], [ 73.554094, 39.350102 ], [ 73.502355, 39.383877 ], [ 73.592898, 39.412087 ], [ 73.61076, 39.465702 ], [ 73.6471, 39.474479 ], [ 73.745651, 39.462005 ], [ 73.836194, 39.472169 ], [ 73.868223, 39.482794 ], [ 73.893476, 39.528046 ], [ 73.883621, 39.540969 ], [ 73.914418, 39.564041 ], [ 73.916266, 39.586644 ], [ 73.953838, 39.600018 ], [ 73.924273, 39.722108 ], [ 73.905795, 39.741899 ], [ 73.841737, 39.756163 ], [ 73.845433, 39.831115 ], [ 73.907027, 39.873843 ], [ 73.910722, 39.934443 ], [ 73.980324, 40.004617 ], [ 73.943367, 40.016076 ], [ 74.008041, 40.050901 ], [ 74.023439, 40.085251 ], [ 74.113366, 40.086624 ], [ 74.126301, 40.104479 ], [ 74.26304, 40.125074 ], [ 74.280902, 40.09807 ], [ 74.316626, 40.106767 ], [ 74.356662, 40.089371 ], [ 74.433039, 40.13148 ], [ 74.485394, 40.182251 ], [ 74.534669, 40.207851 ], [ 74.577169, 40.260391 ], [ 74.618437, 40.27957 ], [ 74.673255, 40.278656 ], [ 74.697893, 40.310153 ], [ 74.700357, 40.346195 ], [ 74.824776, 40.344371 ], [ 74.862965, 40.32658 ], [ 74.908544, 40.338897 ], [ 74.795211, 40.443278 ], [ 74.814921, 40.461039 ], [ 74.819233, 40.505647 ], [ 74.844486, 40.521117 ], [ 74.891914, 40.507467 ], [ 74.963363, 40.464681 ], [ 74.995392, 40.455119 ], [ 75.021877, 40.466958 ], [ 75.051442, 40.449654 ], [ 75.102565, 40.44009 ], [ 75.13521, 40.463315 ], [ 75.206659, 40.447833 ], [ 75.242383, 40.448743 ], [ 75.268869, 40.483802 ], [ 75.292274, 40.483802 ], [ 75.355716, 40.537947 ], [ 75.432093, 40.563412 ], [ 75.467817, 40.599773 ], [ 75.550353, 40.64883 ], [ 75.599628, 40.659727 ], [ 75.636584, 40.624306 ], [ 75.627345, 40.605226 ], [ 75.631041, 40.548862 ], [ 75.646439, 40.516567 ], [ 75.733287, 40.474242 ], [ 75.717272, 40.443278 ], [ 75.686475, 40.418223 ], [ 75.669845, 40.363982 ], [ 75.688323, 40.343915 ], [ 75.709265, 40.280939 ], [ 75.739446, 40.299199 ], [ 75.785642, 40.301025 ], [ 75.831221, 40.327492 ], [ 75.84046, 40.312434 ], [ 75.890351, 40.30924 ], [ 75.921764, 40.291439 ], [ 75.932235, 40.339353 ], [ 75.986438, 40.381763 ], [ 76.026474, 40.355317 ], [ 76.048648, 40.357141 ], [ 76.048648, 40.388601 ], [ 76.081293, 40.39635 ], [ 76.144118, 40.393615 ], [ 76.176147, 40.381307 ], [ 76.22419, 40.401819 ], [ 76.279625, 40.439179 ], [ 76.283321, 40.415034 ], [ 76.327668, 40.391336 ], [ 76.333212, 40.343459 ], [ 76.381871, 40.39088 ], [ 76.390494, 40.37766 ], [ 76.442233, 40.391336 ], [ 76.470566, 40.422779 ], [ 76.508754, 40.429613 ], [ 76.539551, 40.464226 ], [ 76.543247, 40.513837 ], [ 76.556798, 40.542495 ], [ 76.601145, 40.578868 ], [ 76.611, 40.601591 ], [ 76.657196, 40.620218 ], [ 76.654732, 40.652917 ], [ 76.676906, 40.696036 ], [ 76.646725, 40.73686 ], [ 76.646725, 40.759983 ], [ 76.693536, 40.779472 ], [ 76.731724, 40.818887 ], [ 76.741579, 40.912119 ], [ 76.761905, 40.954167 ], [ 76.817956, 40.975406 ], [ 76.85368, 40.97631 ], [ 76.885709, 41.027347 ], [ 76.940528, 41.028701 ], [ 77.002122, 41.073381 ], [ 77.023064, 41.059394 ], [ 77.091433, 41.062553 ], [ 77.108063, 41.038181 ], [ 77.169041, 41.009285 ], [ 77.236795, 41.027798 ], [ 77.296541, 41.004769 ], [ 77.363062, 41.04089 ], [ 77.415417, 41.038633 ], [ 77.473931, 41.022832 ], [ 77.476395, 40.999349 ], [ 77.540453, 41.006575 ], [ 77.591576, 40.992122 ], [ 77.597119, 41.005221 ], [ 77.654402, 41.016059 ], [ 77.684583, 41.00793 ], [ 77.737553, 41.032313 ], [ 77.780669, 41.022832 ], [ 77.796068, 41.049014 ], [ 77.829328, 41.059394 ], [ 77.807155, 41.091876 ], [ 77.814546, 41.13426 ], [ 77.836104, 41.153189 ], [ 77.905089, 41.185174 ], [ 77.972842, 41.173013 ], [ 78.094798, 41.224347 ], [ 78.129291, 41.228398 ], [ 78.136682, 41.279239 ], [ 78.165015, 41.340825 ], [ 78.149617, 41.368228 ], [ 78.163783, 41.383497 ], [ 78.235232, 41.399211 ], [ 78.324544, 41.384395 ], [ 78.338094, 41.397415 ], [ 78.385522, 41.394721 ], [ 78.391681, 41.408189 ], [ 78.454507, 41.412228 ], [ 78.527188, 41.440947 ], [ 78.580774, 41.481759 ], [ 78.650375, 41.467411 ], [ 78.675629, 41.50238 ], [ 78.707042, 41.522098 ], [ 78.696571, 41.54181 ], [ 78.739071, 41.555695 ], [ 78.825302, 41.560173 ], [ 78.86657, 41.593749 ], [ 78.891824, 41.597777 ], [ 78.957729, 41.65146 ], [ 78.99407, 41.664427 ], [ 79.021787, 41.657273 ], [ 79.043345, 41.681414 ], [ 79.10925, 41.697503 ], [ 79.138199, 41.722968 ], [ 79.21704, 41.725648 ], [ 79.271858, 41.767174 ], [ 79.276786, 41.78101 ], [ 79.326061, 41.809565 ], [ 79.356242, 41.795735 ], [ 79.415372, 41.836769 ], [ 79.457256, 41.847915 ], [ 79.500988, 41.835432 ], [ 79.550879, 41.834094 ], [ 79.616784, 41.856385 ], [ 79.640806, 41.884907 ], [ 79.724574, 41.896935 ], [ 79.776313, 41.89248 ], [ 79.822508, 41.963275 ], [ 79.854537, 41.984186 ], [ 79.852689, 42.015319 ], [ 79.923522, 42.042436 ], [ 80.089826, 42.047325 ], [ 80.14218, 42.03488 ], [ 80.193303, 42.081535 ], [ 80.16805, 42.096635 ], [ 80.139717, 42.151232 ], [ 80.163738, 42.152563 ], [ 80.168666, 42.200462 ], [ 80.233339, 42.210215 ], [ 80.28631, 42.233261 ], [ 80.29247, 42.259842 ], [ 80.272144, 42.281984 ], [ 80.283847, 42.320493 ], [ 80.229028, 42.358536 ], [ 80.239499, 42.389927 ], [ 80.206238, 42.431462 ], [ 80.225948, 42.485769 ], [ 80.265368, 42.502097 ], [ 80.221637, 42.533415 ], [ 80.180985, 42.590718 ], [ 80.163738, 42.629919 ], [ 80.179753, 42.670415 ], [ 80.228412, 42.692852 ], [ 80.225948, 42.713083 ], [ 80.259209, 42.790865 ], [ 80.262289, 42.828623 ], [ 80.280151, 42.838278 ], [ 80.338049, 42.831695 ], [ 80.407034, 42.834767 ], [ 80.450766, 42.861971 ], [ 80.503737, 42.882146 ], [ 80.602903, 42.894424 ], [ 80.5912, 42.923354 ], [ 80.487106, 42.948766 ], [ 80.397795, 42.996933 ], [ 80.378701, 43.031502 ], [ 80.416889, 43.05687 ], [ 80.482795, 43.06955 ], [ 80.556092, 43.104515 ], [ 80.593048, 43.133347 ], [ 80.650946, 43.147321 ], [ 80.706997, 43.143828 ], [ 80.73225, 43.131163 ], [ 80.752576, 43.148194 ], [ 80.79446, 43.137277 ], [ 80.804315, 43.178314 ], [ 80.789533, 43.201876 ], [ 80.788917, 43.242433 ], [ 80.769207, 43.265535 ], [ 80.777214, 43.308227 ], [ 80.69283, 43.32042 ], [ 80.686055, 43.333916 ], [ 80.735946, 43.389609 ], [ 80.746417, 43.439167 ], [ 80.761199, 43.446554 ], [ 80.75504, 43.494329 ], [ 80.522215, 43.816473 ], [ 80.511128, 43.906657 ], [ 80.475404, 43.938124 ], [ 80.485259, 43.95579 ], [ 80.457541, 43.981203 ], [ 80.458773, 44.047054 ], [ 80.449534, 44.078017 ], [ 80.3941, 44.127009 ], [ 80.407034, 44.149772 ], [ 80.400875, 44.198704 ], [ 80.413194, 44.264741 ], [ 80.399027, 44.30587 ], [ 80.383013, 44.401297 ], [ 80.350368, 44.484615 ], [ 80.411962, 44.605321 ], [ 80.400259, 44.628751 ], [ 80.313412, 44.704938 ], [ 80.238883, 44.7228 ], [ 80.200695, 44.756808 ], [ 80.178521, 44.796741 ], [ 80.18776, 44.825612 ], [ 80.169898, 44.84471 ], [ 80.115695, 44.815424 ], [ 80.087978, 44.817122 ], [ 79.999283, 44.793768 ], [ 79.991891, 44.830281 ], [ 79.953703, 44.849377 ], [ 79.969102, 44.877797 ], [ 79.887798, 44.90917 ], [ 79.944464, 44.937985 ], [ 79.951855, 44.957892 ], [ 79.98142, 44.964244 ], [ 80.056565, 45.011227 ], [ 80.060876, 45.026033 ], [ 80.111999, 45.052675 ], [ 80.136021, 45.041259 ], [ 80.144644, 45.059017 ], [ 80.195767, 45.030686 ], [ 80.24381, 45.031532 ], [ 80.291854, 45.06578 ], [ 80.328194, 45.070007 ], [ 80.358375, 45.040836 ], [ 80.404571, 45.049293 ], [ 80.443991, 45.077614 ], [ 80.445839, 45.097895 ], [ 80.493882, 45.127037 ], [ 80.519135, 45.108878 ], [ 80.599207, 45.105921 ], [ 80.686055, 45.129148 ], [ 80.731634, 45.156164 ], [ 80.816634, 45.152788 ], [ 80.862214, 45.127037 ], [ 80.897938, 45.127459 ], [ 80.93551, 45.160384 ], [ 80.966307, 45.168402 ], [ 81.024821, 45.162916 ], [ 81.080872, 45.182745 ], [ 81.111669, 45.218168 ], [ 81.170183, 45.211001 ], [ 81.175111, 45.227863 ], [ 81.236705, 45.247248 ], [ 81.284748, 45.23882 ], [ 81.327864, 45.260729 ], [ 81.382066, 45.257781 ], [ 81.398697, 45.275471 ], [ 81.437501, 45.28263 ], [ 81.462754, 45.264099 ], [ 81.52866, 45.285999 ], [ 81.536667, 45.304101 ], [ 81.575471, 45.30789 ], [ 81.582863, 45.336503 ], [ 81.645072, 45.359216 ], [ 81.677101, 45.35459 ], [ 81.78797, 45.3836 ], [ 81.832318, 45.319673 ], [ 81.879745, 45.284314 ], [ 81.921013, 45.233342 ], [ 81.993078, 45.237978 ], [ 82.052824, 45.255674 ], [ 82.09594, 45.249776 ], [ 82.091012, 45.222383 ], [ 82.109491, 45.211422 ], [ 82.206809, 45.236713 ], [ 82.294272, 45.247669 ], [ 82.344779, 45.219011 ], [ 82.487061, 45.181058 ], [ 82.562822, 45.204676 ], [ 82.58746, 45.224069 ], [ 82.60101, 45.346178 ], [ 82.546808, 45.426038 ], [ 82.448257, 45.461309 ], [ 82.281954, 45.53891 ], [ 82.266555, 45.620172 ], [ 82.288729, 45.655321 ], [ 82.289961, 45.71636 ], [ 82.340468, 45.772742 ], [ 82.349707, 45.822811 ], [ 82.336156, 45.882418 ], [ 82.342932, 45.935303 ], [ 82.401446, 45.972333 ], [ 82.461808, 45.97982 ], [ 82.518474, 46.153798 ], [ 82.609017, 46.294985 ], [ 82.726662, 46.494756 ], [ 82.774089, 46.600124 ], [ 82.788872, 46.677784 ], [ 82.829524, 46.772551 ], [ 82.878183, 46.797138 ], [ 82.876335, 46.823762 ], [ 82.923762, 46.932169 ], [ 82.937929, 47.014248 ], [ 82.993364, 47.065229 ], [ 83.031552, 47.168265 ], [ 83.02724, 47.21544 ], [ 83.108544, 47.221944 ], [ 83.15474, 47.236168 ], [ 83.17445, 47.218286 ], [ 83.207094, 47.213814 ], [ 83.221877, 47.186977 ], [ 83.257602, 47.173147 ], [ 83.306261, 47.179656 ], [ 83.324739, 47.167858 ], [ 83.370318, 47.178436 ], [ 83.418978, 47.119012 ], [ 83.463325, 47.132042 ], [ 83.53847, 47.083977 ], [ 83.566803, 47.080717 ], [ 83.576042, 47.059114 ], [ 83.700462, 47.032199 ], [ 83.69923, 47.015472 ], [ 83.766367, 47.026896 ], [ 83.88586, 46.982003 ], [ 83.932671, 46.970161 ], [ 83.951765, 46.98731 ], [ 84.002888, 46.990576 ], [ 84.038613, 46.973428 ], [ 84.086656, 46.965261 ], [ 84.150098, 46.977512 ], [ 84.195061, 47.003638 ], [ 84.2893, 46.994658 ], [ 84.336727, 47.00527 ], [ 84.37122, 46.993434 ], [ 84.425422, 47.008943 ], [ 84.506726, 46.97302 ], [ 84.563393, 46.991801 ], [ 84.668718, 46.995067 ], [ 84.699515, 47.008535 ], [ 84.748175, 47.009759 ], [ 84.781435, 46.979962 ], [ 84.849189, 46.957092 ], [ 84.867051, 46.927673 ], [ 84.934188, 46.863878 ], [ 84.95513, 46.861013 ], [ 84.979768, 46.883106 ], [ 84.987159, 46.918272 ], [ 85.082014, 46.939933 ], [ 85.102956, 46.968936 ], [ 85.175637, 46.997924 ], [ 85.213825, 47.041172 ], [ 85.276651, 47.068898 ], [ 85.325926, 47.044842 ], [ 85.355491, 47.054629 ], [ 85.441106, 47.063191 ], [ 85.545816, 47.057891 ], [ 85.547048, 47.096609 ], [ 85.582772, 47.142626 ], [ 85.641903, 47.18413 ], [ 85.682555, 47.222757 ], [ 85.682555, 47.249982 ], [ 85.701033, 47.28856 ], [ 85.675779, 47.321837 ], [ 85.701649, 47.384275 ], [ 85.685018, 47.428829 ], [ 85.614801, 47.498015 ], [ 85.617881, 47.550552 ], [ 85.547048, 48.008205 ], [ 85.531649, 48.046227 ], [ 85.551975, 48.081423 ], [ 85.55136, 48.127781 ], [ 85.576613, 48.15853 ], [ 85.587084, 48.191654 ], [ 85.622193, 48.202824 ], [ 85.633895, 48.232731 ], [ 85.678243, 48.266205 ], [ 85.695489, 48.302445 ], [ 85.695489, 48.335078 ], [ 85.758315, 48.403064 ], [ 85.791576, 48.418954 ], [ 85.916612, 48.438015 ], [ 86.053966, 48.441192 ], [ 86.225813, 48.432456 ], [ 86.270161, 48.452307 ], [ 86.305269, 48.491984 ], [ 86.38103, 48.49357 ], [ 86.416138, 48.481671 ], [ 86.579978, 48.538763 ], [ 86.594761, 48.576789 ], [ 86.635413, 48.612016 ], [ 86.640956, 48.629027 ], [ 86.693311, 48.64366 ], [ 86.70255, 48.666195 ], [ 86.771535, 48.717156 ], [ 86.780774, 48.731369 ], [ 86.754289, 48.78463 ], [ 86.770303, 48.810255 ], [ 86.818963, 48.831139 ], [ 86.821426, 48.850439 ], [ 86.782006, 48.887049 ], [ 86.757985, 48.894919 ], [ 86.730267, 48.959797 ], [ 86.732115, 48.994757 ], [ 86.772151, 49.02773 ], [ 86.836209, 49.051269 ], [ 86.84976, 49.066563 ], [ 86.854071, 49.109284 ], [ 86.887948, 49.132001 ], [ 86.953853, 49.131218 ], [ 87.000049, 49.142572 ], [ 87.088128, 49.133567 ], [ 87.112766, 49.15549 ], [ 87.211932, 49.140615 ], [ 87.239033, 49.114376 ], [ 87.304939, 49.112418 ], [ 87.388707, 49.097921 ], [ 87.43675, 49.075188 ], [ 87.511894, 49.10184 ], [ 87.49588, 49.132001 ], [ 87.517438, 49.145704 ], [ 87.563017, 49.142572 ], [ 87.602437, 49.152359 ], [ 87.67635, 49.15549 ], [ 87.700372, 49.175839 ], [ 87.762582, 49.172709 ], [ 87.793379, 49.18249 ], [ 87.821096, 49.173883 ], [ 87.82048, 49.148445 ], [ 87.845733, 49.146096 ], [ 87.867291, 49.108892 ], [ 87.844502, 49.090084 ], [ 87.858052, 49.07362 ], [ 87.835263, 49.054406 ], [ 87.883306, 49.023806 ], [ 87.883922, 48.993971 ], [ 87.911639, 48.979833 ], [ 87.871603, 48.963726 ], [ 87.87653, 48.949186 ], [ 87.814321, 48.945256 ], [ 87.793995, 48.927565 ], [ 87.760118, 48.925992 ], [ 87.742256, 48.881146 ], [ 87.78106, 48.872094 ], [ 87.792147, 48.849258 ], [ 87.829103, 48.825623 ], [ 87.803234, 48.824835 ], [ 87.826639, 48.800795 ], [ 87.872219, 48.799612 ], [ 87.93874, 48.757809 ], [ 87.96153, 48.773588 ], [ 88.029283, 48.750313 ], [ 88.064392, 48.712813 ], [ 88.090877, 48.71992 ], [ 88.089645, 48.69504 ], [ 88.02682, 48.65315 ], [ 88.010805, 48.618742 ], [ 87.96153, 48.599353 ], [ 87.973233, 48.575997 ], [ 88.041602, 48.548272 ], [ 88.10874, 48.545895 ], [ 88.130297, 48.521721 ], [ 88.151855, 48.526478 ], [ 88.196819, 48.493967 ], [ 88.229464, 48.498329 ], [ 88.318159, 48.478497 ], [ 88.363123, 48.460641 ], [ 88.360659, 48.433251 ], [ 88.438267, 48.393528 ], [ 88.462289, 48.392335 ], [ 88.503557, 48.412996 ], [ 88.523267, 48.403461 ], [ 88.535586, 48.368884 ], [ 88.573158, 48.369679 ], [ 88.573774, 48.351785 ], [ 88.605803, 48.337863 ], [ 88.575006, 48.277757 ], [ 88.594716, 48.259831 ], [ 88.601491, 48.221567 ], [ 88.638447, 48.183674 ], [ 88.668628, 48.171303 ], [ 88.700657, 48.180881 ], [ 88.721599, 48.160526 ], [ 88.79736, 48.133772 ], [ 88.824461, 48.107005 ], [ 88.939026, 48.115396 ], [ 88.953808, 48.090618 ], [ 89.027105, 48.051028 ], [ 89.044967, 48.009806 ], [ 89.078228, 47.98698 ], [ 89.156452, 47.996992 ], [ 89.231597, 47.98017 ], [ 89.282104, 47.994189 ], [ 89.308589, 48.021816 ], [ 89.359712, 48.026219 ], [ 89.38127, 48.046227 ], [ 89.498299, 48.02822 ], [ 89.569132, 48.037825 ], [ 89.599313, 48.015811 ], [ 89.595617, 47.973359 ], [ 89.645508, 47.947711 ], [ 89.651052, 47.913627 ], [ 89.735435, 47.89758 ], [ 89.761921, 47.835751 ], [ 89.86971, 47.834144 ], [ 89.957789, 47.842982 ], [ 89.960253, 47.885942 ], [ 90.040941, 47.874704 ], [ 90.066195, 47.883534 ], [ 90.086521, 47.86547 ], [ 90.070506, 47.820483 ], [ 90.07605, 47.777469 ], [ 90.13518, 47.723147 ], [ 90.180144, 47.72516 ], [ 90.216484, 47.70543 ], [ 90.331665, 47.681663 ], [ 90.384635, 47.644179 ], [ 90.346447, 47.637324 ], [ 90.376012, 47.603036 ], [ 90.398186, 47.547724 ], [ 90.468403, 47.497611 ], [ 90.474562, 47.462422 ], [ 90.459164, 47.43895 ], [ 90.468403, 47.404937 ], [ 90.507823, 47.400076 ], [ 90.526301, 47.379007 ], [ 90.488113, 47.317374 ], [ 90.521374, 47.2845 ], [ 90.56141, 47.206903 ], [ 90.579888, 47.198364 ], [ 90.653801, 47.111681 ], [ 90.691989, 47.080717 ], [ 90.767134, 46.992617 ], [ 90.830575, 46.995883 ], [ 90.901408, 46.960768 ], [ 90.92235, 46.938707 ], [ 90.929742, 46.893331 ], [ 90.958075, 46.879425 ], [ 90.942676, 46.82581 ], [ 90.992567, 46.790583 ], [ 90.992567, 46.769682 ], [ 91.019053, 46.766402 ], [ 91.054161, 46.717598 ], [ 91.036299, 46.670393 ], [ 91.017821, 46.58244 ], [ 91.068328, 46.579149 ], [ 91.079415, 46.558989 ], [ 91.060937, 46.516999 ], [ 91.038147, 46.500936 ], [ 91.025828, 46.444057 ], [ 90.996263, 46.419309 ], [ 90.983328, 46.374734 ], [ 90.900177, 46.31235 ], [ 90.955611, 46.233752 ], [ 90.94822, 46.219262 ], [ 90.98456, 46.160431 ], [ 91.021517, 46.121038 ], [ 91.014741, 46.06667 ], [ 91.028292, 46.023054 ], [ 90.890937, 45.921566 ], [ 90.799778, 45.834905 ], [ 90.714779, 45.728895 ], [ 90.676591, 45.582488 ], [ 90.671047, 45.487747 ], [ 90.723402, 45.464667 ], [ 90.772677, 45.432338 ], [ 90.773909, 45.405874 ], [ 90.813329, 45.32851 ], [ 90.804706, 45.29484 ], [ 90.831807, 45.300313 ], [ 90.877387, 45.280946 ], [ 90.897713, 45.249776 ], [ 90.866916, 45.209314 ], [ 90.881698, 45.192025 ], [ 90.96177, 45.201303 ], [ 91.007966, 45.218589 ], [ 91.050466, 45.208892 ], [ 91.129922, 45.21606 ], [ 91.17119, 45.199616 ], [ 91.195827, 45.159118 ], [ 91.230936, 45.153632 ], [ 91.242023, 45.13717 ], [ 91.33503, 45.129571 ], [ 91.37753, 45.11099 ], [ 91.429268, 45.156586 ], [ 91.448978, 45.156586 ], [ 91.500101, 45.103809 ], [ 91.561695, 45.075501 ], [ 91.694738, 45.065357 ], [ 91.803144, 45.082685 ], [ 91.885679, 45.078882 ], [ 92.056911, 45.086911 ], [ 92.100026, 45.081417 ], [ 92.240461, 45.015881 ], [ 92.315605, 45.028994 ], [ 92.348866, 45.014188 ], [ 92.414155, 45.018419 ], [ 92.501003, 45.001072 ], [ 92.547814, 45.018419 ], [ 92.683937, 45.02561 ], [ 92.779407, 45.050561 ], [ 92.847777, 45.038721 ], [ 92.884117, 45.046756 ], [ 92.922921, 45.03703 ], [ 92.932776, 45.017573 ], [ 93.002377, 45.009958 ], [ 93.062124, 45.018419 ], [ 93.100312, 45.007419 ], [ 93.174225, 45.015458 ], [ 93.252449, 44.991761 ], [ 93.314043, 44.980333 ], [ 93.314659, 44.995147 ], [ 93.376869, 44.985412 ], [ 93.434767, 44.955351 ], [ 93.509296, 44.968055 ], [ 93.613389, 44.926546 ], [ 93.716251, 44.894334 ], [ 93.723642, 44.865498 ], [ 94.066105, 44.732154 ], [ 94.152336, 44.684944 ], [ 94.215162, 44.667921 ], [ 94.227481, 44.645785 ], [ 94.279836, 44.603617 ], [ 94.329727, 44.582734 ], [ 94.359292, 44.515775 ], [ 94.390705, 44.521749 ], [ 94.470777, 44.509373 ], [ 94.557008, 44.462408 ], [ 94.606283, 44.448311 ], [ 94.673421, 44.397021 ], [ 94.722696, 44.34055 ], [ 94.768275, 44.34055 ], [ 94.826174, 44.320001 ], [ 94.945666, 44.292592 ], [ 94.998637, 44.253169 ], [ 95.1286, 44.269884 ], [ 95.238853, 44.277169 ], [ 95.41378, 44.298589 ], [ 95.43041, 44.281882 ], [ 95.4107, 44.245024 ], [ 95.376208, 44.227444 ], [ 95.355882, 44.166087 ], [ 95.35157, 44.090054 ], [ 95.326932, 44.028554 ], [ 95.377439, 44.025972 ], [ 95.426099, 44.009618 ], [ 95.527113, 44.007466 ], [ 95.623199, 43.855756 ], [ 95.645373, 43.787966 ], [ 95.705735, 43.67077 ], [ 95.735916, 43.597569 ], [ 95.857872, 43.417436 ], [ 95.880046, 43.28035 ], [ 95.921314, 43.229789 ], [ 96.363558, 42.900562 ], [ 96.386348, 42.727592 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "710000", "name": "台湾省", "center": [ 121.509062, 25.044332 ], "centroid": [ 120.971485, 23.749452 ], "childrenNum": 0, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 31, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 120.443706, 22.441432 ], [ 120.297112, 22.531565 ], [ 120.274323, 22.560307 ], [ 120.20041, 22.721039 ], [ 120.149287, 22.896468 ], [ 120.133272, 23.000625 ], [ 120.029795, 23.048544 ], [ 120.018708, 23.073322 ], [ 120.081534, 23.291728 ], [ 120.108019, 23.341191 ], [ 120.12157, 23.504836 ], [ 120.095084, 23.58768 ], [ 120.102476, 23.701162 ], [ 120.175156, 23.807427 ], [ 120.245989, 23.840276 ], [ 120.278018, 23.92783 ], [ 120.316206, 23.984708 ], [ 120.391967, 24.118055 ], [ 120.451713, 24.182493 ], [ 120.470807, 24.242533 ], [ 120.520698, 24.311816 ], [ 120.546568, 24.370159 ], [ 120.589068, 24.43229 ], [ 120.642654, 24.490033 ], [ 120.68885, 24.600542 ], [ 120.762147, 24.658208 ], [ 120.82374, 24.688118 ], [ 120.89211, 24.767482 ], [ 120.914899, 24.864715 ], [ 120.961095, 24.940167 ], [ 121.009754, 24.993878 ], [ 121.024537, 25.040517 ], [ 121.102145, 25.075214 ], [ 121.132942, 25.078466 ], [ 121.209318, 25.12724 ], [ 121.319572, 25.140785 ], [ 121.371926, 25.159746 ], [ 121.413194, 25.238806 ], [ 121.444607, 25.27074 ], [ 121.53515, 25.307535 ], [ 121.585041, 25.309159 ], [ 121.62323, 25.29455 ], [ 121.655259, 25.242054 ], [ 121.700222, 25.226896 ], [ 121.707613, 25.191701 ], [ 121.745186, 25.161912 ], [ 121.782142, 25.160287 ], [ 121.841888, 25.135367 ], [ 121.917033, 25.138076 ], [ 121.947214, 25.031841 ], [ 121.98109, 25.030757 ], [ 122.012503, 25.001471 ], [ 121.933047, 24.938539 ], [ 121.844968, 24.836476 ], [ 121.841272, 24.734329 ], [ 121.86283, 24.671261 ], [ 121.892395, 24.617953 ], [ 121.88562, 24.529784 ], [ 121.867758, 24.47914 ], [ 121.82649, 24.423572 ], [ 121.809243, 24.339083 ], [ 121.689135, 24.174303 ], [ 121.678048, 24.133895 ], [ 121.643556, 24.097843 ], [ 121.63986, 24.064514 ], [ 121.65957, 24.007125 ], [ 121.621382, 23.920718 ], [ 121.587505, 23.760878 ], [ 121.522832, 23.538858 ], [ 121.5216, 23.483431 ], [ 121.497578, 23.419744 ], [ 121.479716, 23.322507 ], [ 121.440296, 23.271937 ], [ 121.415042, 23.196047 ], [ 121.430441, 23.137175 ], [ 121.409499, 23.1025 ], [ 121.370695, 23.084334 ], [ 121.35468, 23.00999 ], [ 121.324499, 22.945526 ], [ 121.276456, 22.877171 ], [ 121.237652, 22.836362 ], [ 121.21055, 22.770711 ], [ 121.170514, 22.723247 ], [ 121.078739, 22.669691 ], [ 121.03316, 22.650914 ], [ 121.014682, 22.584069 ], [ 120.981421, 22.528248 ], [ 120.914899, 22.302525 ], [ 120.903197, 22.12634 ], [ 120.912436, 22.086418 ], [ 120.907508, 22.033171 ], [ 120.86624, 21.984345 ], [ 120.873016, 21.897191 ], [ 120.854537, 21.883309 ], [ 120.781857, 21.923843 ], [ 120.743052, 21.915515 ], [ 120.701784, 21.927174 ], [ 120.667908, 21.983235 ], [ 120.651277, 22.033171 ], [ 120.661748, 22.067007 ], [ 120.659285, 22.154056 ], [ 120.640806, 22.241605 ], [ 120.569973, 22.361757 ], [ 120.517619, 22.408793 ], [ 120.443706, 22.441432 ] ] ], [ [ [ 124.541855565478286, 25.891845867343921 ], [ 124.530097884119826, 25.910742140955961 ], [ 124.518340202761223, 25.930898166142125 ], [ 124.541015731095655, 25.946015185031744 ], [ 124.566804, 25.941563 ], [ 124.584666, 25.908731 ], [ 124.568730265726629, 25.884707275090506 ], [ 124.541855565478286, 25.891845867343921 ] ] ], [ [ [ 123.445178, 25.726102 ], [ 123.438733103727387, 25.753273194189074 ], [ 123.468967141506624, 25.783087314776932 ], [ 123.513478363792743, 25.768810130270065 ], [ 123.510958860644465, 25.71464081258226 ], [ 123.468547224315259, 25.703722965606424 ], [ 123.445178, 25.726102 ] ] ], [ [ [ 119.646064, 23.550928 ], [ 119.609108, 23.503738 ], [ 119.578927, 23.502641 ], [ 119.562297, 23.530627 ], [ 119.566608, 23.584937 ], [ 119.601717, 23.575613 ], [ 119.61034, 23.604132 ], [ 119.678093, 23.600294 ], [ 119.691028, 23.547087 ], [ 119.646064, 23.550928 ] ] ], [ [ [ 123.652470954139019, 25.910742140955957 ], [ 123.675986316856211, 25.947274936605876 ], [ 123.705800437444026, 25.935517255247277 ], [ 123.71503861565435, 25.912421809721465 ], [ 123.696562259233758, 25.878828434411201 ], [ 123.66968755898553, 25.88680686104739 ], [ 123.652470954139019, 25.910742140955957 ] ] ], [ [ [ 119.506246, 23.625518 ], [ 119.52534, 23.62497 ], [ 119.519181, 23.559705 ], [ 119.47237, 23.556962 ], [ 119.506246, 23.577259 ], [ 119.506246, 23.625518 ] ] ], [ [ [ 119.497623, 23.38679 ], [ 119.516717, 23.349982 ], [ 119.495159, 23.349982 ], [ 119.497623, 23.38679 ] ] ], [ [ [ 119.557369, 23.666634 ], [ 119.586318, 23.675952 ], [ 119.615268, 23.661153 ], [ 119.608492, 23.620035 ], [ 119.557369, 23.666634 ] ] ], [ [ [ 122.066706, 25.6247 ], [ 122.092575, 25.639268 ], [ 122.087032, 25.61067 ], [ 122.066706, 25.6247 ] ] ], [ [ [ 121.468013, 22.67687 ], [ 121.514824, 22.676318 ], [ 121.513592, 22.631582 ], [ 121.474788, 22.643734 ], [ 121.468013, 22.67687 ] ] ], [ [ [ 121.510513, 22.086972 ], [ 121.575802, 22.0842 ], [ 121.575186, 22.037055 ], [ 121.604752, 22.022631 ], [ 121.594281, 21.995443 ], [ 121.533918, 22.022076 ], [ 121.507433, 22.048704 ], [ 121.510513, 22.086972 ] ] ], [ [ [ 122.097503, 25.499987 ], [ 122.122141, 25.495666 ], [ 122.110438, 25.465952 ], [ 122.097503, 25.499987 ] ] ], [ [ [ 119.421247, 23.216949 ], [ 119.453275, 23.216399 ], [ 119.436029, 23.186146 ], [ 119.421247, 23.216949 ] ] ], [ [ [ 120.355011, 22.327439 ], [ 120.383344, 22.355669 ], [ 120.395663, 22.342385 ], [ 120.355011, 22.327439 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "810000", "name": "香港特别行政区", "center": [ 114.173355, 22.320048 ], "centroid": [ 114.134391, 22.37737 ], "childrenNum": 18, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 32, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 114.031778, 22.503923 ], [ 114.082285, 22.512216 ], [ 114.095219, 22.534329 ], [ 114.156813, 22.543726 ], [ 114.166052, 22.559201 ], [ 114.222719, 22.553122 ], [ 114.232574, 22.539857 ], [ 114.232574, 22.528801 ], [ 114.260291, 22.547595 ], [ 114.263371, 22.541515 ], [ 114.263987, 22.541515 ], [ 114.28924, 22.52272 ], [ 114.309566, 22.497288 ], [ 114.340979, 22.50337 ], [ 114.2529, 22.445304 ], [ 114.23319, 22.466875 ], [ 114.205473, 22.449729 ], [ 114.220255, 22.427603 ], [ 114.278769, 22.435901 ], [ 114.325581, 22.479041 ], [ 114.376088, 22.436454 ], [ 114.406269, 22.433688 ], [ 114.406269, 22.432582 ], [ 114.385327, 22.41156 ], [ 114.394566, 22.361757 ], [ 114.356994, 22.340171 ], [ 114.323733, 22.384447 ], [ 114.323733, 22.385001 ], [ 114.323117, 22.385554 ], [ 114.322501, 22.385554 ], [ 114.283081, 22.386661 ], [ 114.278153, 22.328546 ], [ 114.315726, 22.299756 ], [ 114.315726, 22.299203 ], [ 114.313262, 22.264315 ], [ 114.284929, 22.263761 ], [ 114.262139, 22.294773 ], [ 114.248588, 22.274837 ], [ 114.265835, 22.200608 ], [ 114.203009, 22.206703 ], [ 114.200545, 22.232188 ], [ 114.164821, 22.226648 ], [ 114.120473, 22.272068 ], [ 114.145726, 22.300864 ], [ 114.121089, 22.320795 ], [ 114.069966, 22.326885 ], [ 114.034857, 22.300864 ], [ 114.029314, 22.262653 ], [ 114.004676, 22.239389 ], [ 114.026234, 22.229418 ], [ 113.996669, 22.206149 ], [ 113.981271, 22.229972 ], [ 113.935691, 22.205041 ], [ 113.899351, 22.215568 ], [ 113.852539, 22.191188 ], [ 113.8433, 22.229418 ], [ 113.889496, 22.271514 ], [ 113.898119, 22.308615 ], [ 113.969568, 22.321349 ], [ 113.955401, 22.298649 ], [ 114.026234, 22.34792 ], [ 113.980039, 22.366185 ], [ 113.941235, 22.355116 ], [ 113.920293, 22.367845 ], [ 113.918445, 22.418199 ], [ 113.977575, 22.45692 ], [ 114.000981, 22.491206 ], [ 114.031778, 22.503923 ] ] ], [ [ [ 114.142647, 22.213906 ], [ 114.166668, 22.205041 ], [ 114.154965, 22.177888 ], [ 114.120473, 22.177888 ], [ 114.123553, 22.238836 ], [ 114.142647, 22.213906 ] ] ], [ [ [ 114.305871, 22.372273 ], [ 114.305255, 22.372826 ], [ 114.332972, 22.353455 ], [ 114.313878, 22.340724 ], [ 114.305871, 22.372273 ] ] ], [ [ [ 114.320037, 22.381127 ], [ 114.320037, 22.38168 ], [ 114.319421, 22.382234 ], [ 114.322501, 22.385554 ], [ 114.323117, 22.385554 ], [ 114.323733, 22.385001 ], [ 114.323733, 22.384447 ], [ 114.320037, 22.381127 ] ] ], [ [ [ 114.305871, 22.369506 ], [ 114.305255, 22.372826 ], [ 114.305871, 22.372273 ], [ 114.305871, 22.369506 ] ] ], [ [ [ 114.315726, 22.299203 ], [ 114.315726, 22.299756 ], [ 114.316342, 22.30031 ], [ 114.316958, 22.298649 ], [ 114.315726, 22.299203 ] ] ], [ [ [ 114.319421, 22.382234 ], [ 114.320037, 22.38168 ], [ 114.320037, 22.381127 ], [ 114.319421, 22.382234 ] ] ], [ [ [ 114.372392, 22.32301 ], [ 114.372392, 22.323564 ], [ 114.373008, 22.323564 ], [ 114.372392, 22.32301 ] ] ], [ [ [ 114.323733, 22.297541 ], [ 114.323733, 22.298095 ], [ 114.324349, 22.297541 ], [ 114.323733, 22.297541 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "820000", "name": "澳门特别行政区", "center": [ 113.54909, 22.198951 ], "centroid": [ 113.566988, 22.159307 ], "childrenNum": 8, "level": "province", "parent": { "adcode": 100000 }, "subFeatureIndex": 33, "acroutes": [ 100000 ] }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 113.554425, 22.107489 ], [ 113.554425, 22.142416 ], [ 113.534715, 22.174009 ], [ 113.53841, 22.209473 ], [ 113.558736, 22.212244 ], [ 113.575983, 22.194513 ], [ 113.6037, 22.132438 ], [ 113.554425, 22.107489 ] ] ], [ [ [ 113.586453, 22.201162 ], [ 113.575983, 22.194513 ], [ 113.575983, 22.201162 ], [ 113.586453, 22.201162 ] ] ] ] } },
+{ "type": "Feature", "properties": { "adcode": "100000", "name": "", "adchar": "JD" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 122.51865306, 23.46078502 ], [ 122.51742454, 23.45790762 ], [ 122.51536697, 23.45555069 ], [ 122.51268178, 23.45394494 ], [ 122.50963181, 23.45324755 ], [ 122.5065156, 23.45352678 ], [ 122.5036382, 23.45475531 ], [ 122.50128127, 23.45681287 ], [ 122.49967552, 23.45949807 ], [ 122.49897813, 23.46254804 ], [ 122.49925737, 23.46566424 ], [ 122.77921829, 24.57855302 ], [ 122.78044682, 24.58143041 ], [ 122.78250438, 24.58378734 ], [ 122.78518957, 24.5853931 ], [ 122.78823955, 24.58609049 ], [ 122.79135575, 24.58581125 ], [ 122.79423315, 24.58458272 ], [ 122.79659008, 24.58252516 ], [ 122.79819583, 24.57983997 ], [ 122.79889322, 24.57678999 ], [ 122.79861399, 24.57367379 ], [ 122.51865306, 23.46078502 ] ] ], [ [ [ 121.17202617, 20.8054593 ], [ 121.16966862, 20.80340244 ], [ 121.16679085, 20.80217478 ], [ 121.16367457, 20.80189649 ], [ 121.1606248, 20.8025948 ], [ 121.1579401, 20.80420136 ], [ 121.15588324, 20.80655891 ], [ 121.15465558, 20.80943668 ], [ 121.15437729, 20.81255297 ], [ 121.1550756, 20.81560273 ], [ 121.15668216, 20.81828744 ], [ 121.89404403, 21.70026162 ], [ 121.89640158, 21.70231847 ], [ 121.89927934, 21.70354613 ], [ 121.90239563, 21.70382443 ], [ 121.9054454, 21.70312611 ], [ 121.9081301, 21.70151955 ], [ 121.91018696, 21.699162 ], [ 121.91141462, 21.69628423 ], [ 121.91169291, 21.69316794 ], [ 121.9109946, 21.69011818 ], [ 121.90938804, 21.68743347 ], [ 121.17202617, 20.8054593 ] ] ], [ [ [ 119.47366172, 18.00707291 ], [ 119.47175735, 18.00459056 ], [ 119.46917909, 18.0028182 ], [ 119.46617933, 18.0019293 ], [ 119.4630517, 18.00201089 ], [ 119.46010237, 18.00305497 ], [ 119.45762002, 18.00495935 ], [ 119.45584765, 18.00753761 ], [ 119.45495876, 18.01053737 ], [ 119.45504035, 18.01366499 ], [ 119.45608443, 18.01661433 ], [ 120.00812005, 19.0335793 ], [ 120.01002443, 19.03606165 ], [ 120.01260269, 19.03783401 ], [ 120.01560245, 19.03872291 ], [ 120.01873007, 19.03864132 ], [ 120.02167941, 19.03759723 ], [ 120.02416175, 19.03569286 ], [ 120.02593412, 19.0331146 ], [ 120.02682302, 19.03011484 ], [ 120.02674143, 19.02698721 ], [ 120.02569734, 19.02403788 ], [ 119.47366172, 18.00707291 ] ] ], [ [ [ 119.0726757, 15.04098494 ], [ 119.0726746, 15.04083704 ], [ 119.07218171, 15.00751424 ], [ 119.07164663, 15.00443165 ], [ 119.07018516, 15.00166528 ], [ 119.06794036, 14.99948592 ], [ 119.06513198, 14.99810691 ], [ 119.06203491, 14.99766324 ], [ 119.05895232, 14.99819832 ], [ 119.05618595, 14.99965979 ], [ 119.05400659, 15.00190458 ], [ 119.05262758, 15.00471297 ], [ 119.0521839, 15.00781004 ], [ 119.0526757, 15.04105889 ], [ 119.0526757, 16.04388528 ], [ 119.05316513, 16.04697545 ], [ 119.05458553, 16.04976313 ], [ 119.05679784, 16.05197545 ], [ 119.05958553, 16.05339584 ], [ 119.0626757, 16.05388528 ], [ 119.06576587, 16.05339584 ], [ 119.06855355, 16.05197545 ], [ 119.07076587, 16.04976313 ], [ 119.07218626, 16.04697545 ], [ 119.0726757, 16.04388528 ], [ 119.0726757, 15.04098494 ] ] ], [ [ [ 118.68646749, 11.18959191 ], [ 118.85557939, 11.6136711 ], [ 118.9698053, 11.99151854 ], [ 118.97116801, 11.99433487 ], [ 118.97333431, 11.99659227 ], [ 118.97609216, 11.99806975 ], [ 118.9791716, 11.99862269 ], [ 118.98227119, 11.99819697 ], [ 118.98508753, 11.99683427 ], [ 118.98734492, 11.99466796 ], [ 118.9888224, 11.99191011 ], [ 118.98937534, 11.98883067 ], [ 118.98894963, 11.98573108 ], [ 118.87459939, 11.60747236 ], [ 118.87431591, 11.606662 ], [ 118.70476212, 11.18147468 ], [ 118.70409227, 11.18010771 ], [ 118.54242469, 10.9053354 ], [ 118.54043581, 10.90292022 ], [ 118.53779795, 10.90123786 ], [ 118.53476931, 10.90045298 ], [ 118.53164636, 10.90064241 ], [ 118.5287348, 10.90178762 ], [ 118.52631962, 10.9037765 ], [ 118.52463726, 10.90641436 ], [ 118.52385237, 10.909443 ], [ 118.52404181, 10.91256595 ], [ 118.52518702, 10.91547751 ], [ 118.68646749, 11.18959191 ] ] ], [ [ [ 115.54466883, 7.14672265 ], [ 115.54229721, 7.14468204 ], [ 115.53941108, 7.14347417 ], [ 115.53629295, 7.14321728 ], [ 115.53324806, 7.14393652 ], [ 115.53057445, 7.14556148 ], [ 115.52853383, 7.1479331 ], [ 115.52732596, 7.15081924 ], [ 115.52706908, 7.15393736 ], [ 115.52778832, 7.15698226 ], [ 115.52941328, 7.15965587 ], [ 116.23523025, 7.99221221 ], [ 116.23760187, 7.99425282 ], [ 116.240488, 7.99546069 ], [ 116.24360613, 7.99571758 ], [ 116.24665102, 7.99499834 ], [ 116.24932463, 7.99337338 ], [ 116.25136525, 7.99100176 ], [ 116.25257312, 7.98811563 ], [ 116.25283001, 7.9849975 ], [ 116.25211077, 7.98195261 ], [ 116.2504858, 7.979279 ], [ 115.54466883, 7.14672265 ] ] ], [ [ [ 112.30705249, 3.53487257 ], [ 112.51501594, 3.59753306 ], [ 112.84361424, 3.7506962 ], [ 112.84662187, 3.75155809 ], [ 112.84974864, 3.7514484 ], [ 112.85268847, 3.75037785 ], [ 112.8551536, 3.74845124 ], [ 112.85690272, 3.74585715 ], [ 112.85776462, 3.74284952 ], [ 112.85765492, 3.73972276 ], [ 112.85658437, 3.73678292 ], [ 112.85465776, 3.7343178 ], [ 112.85206367, 3.73256867 ], [ 112.52281386, 3.57910186 ], [ 112.52147408, 3.5785908 ], [ 112.31248917, 3.51562254 ], [ 112.31181658, 3.51544515 ], [ 111.79132585, 3.39736822 ], [ 111.78820398, 3.39716187 ], [ 111.78517113, 3.39793033 ], [ 111.78252419, 3.39959839 ], [ 111.78052226, 3.40200275 ], [ 111.77936129, 3.40490807 ], [ 111.77915495, 3.40802995 ], [ 111.77992341, 3.41106279 ], [ 111.78159146, 3.41370973 ], [ 111.78399583, 3.41571167 ], [ 111.78690114, 3.41687263 ], [ 112.30705249, 3.53487257 ] ] ], [ [ [ 108.26055972, 6.08912451 ], [ 108.26004031, 6.09098419 ], [ 108.23638164, 6.22427602 ], [ 108.23630689, 6.22476797 ], [ 108.19687578, 6.53630242 ], [ 108.19679674, 6.53760583 ], [ 108.1987683, 6.95072469 ], [ 108.19897125, 6.95268198 ], [ 108.22460147, 7.07791743 ], [ 108.22570055, 7.08084671 ], [ 108.22765103, 7.083293 ], [ 108.230262, 7.08501682 ], [ 108.23327786, 7.08584944 ], [ 108.23640341, 7.08570936 ], [ 108.2393327, 7.08461028 ], [ 108.24177899, 7.0826598 ], [ 108.24350281, 7.08004883 ], [ 108.24433543, 7.07703297 ], [ 108.24419535, 7.07390742 ], [ 108.21876335, 6.94964057 ], [ 108.21679964, 6.53816468 ], [ 108.25611734, 6.22752625 ], [ 108.279563, 6.09543449 ], [ 108.30878645, 6.01987736 ], [ 108.30944469, 6.0168187 ], [ 108.30912553, 6.01370633 ], [ 108.30786022, 6.01084492 ], [ 108.30577262, 6.00851455 ], [ 108.30306706, 6.00694335 ], [ 108.3000084, 6.00628511 ], [ 108.29689603, 6.00660426 ], [ 108.29403462, 6.00786957 ], [ 108.29170425, 6.00995718 ], [ 108.29013305, 6.01266273 ], [ 108.26055972, 6.08912451 ] ] ], [ [ [ 110.12822847, 11.36894451 ], [ 110.18898148, 11.48996382 ], [ 110.23982347, 11.61066468 ], [ 110.28485499, 11.78705054 ], [ 110.3083549, 11.94803461 ], [ 110.3142445, 12.14195265 ], [ 110.312278, 12.23998238 ], [ 110.31270536, 12.24308175 ], [ 110.31406956, 12.24589736 ], [ 110.31623706, 12.2481536 ], [ 110.3189957, 12.24962962 ], [ 110.32207543, 12.25018094 ], [ 110.32517479, 12.24975358 ], [ 110.3279904, 12.24838938 ], [ 110.33024665, 12.24622187 ], [ 110.33172267, 12.24346324 ], [ 110.33227398, 12.24038351 ], [ 110.33424553, 12.14210167 ], [ 110.33424294, 12.14159753 ], [ 110.32832827, 11.94685414 ], [ 110.32822801, 11.94571326 ], [ 110.30456934, 11.78364161 ], [ 110.30436343, 11.7826124 ], [ 110.25901765, 11.60499559 ], [ 110.25854422, 11.60358735 ], [ 110.20728377, 11.48189306 ], [ 110.20700505, 11.48128846 ], [ 110.14588682, 11.35954163 ], [ 110.14541497, 11.35870461 ], [ 110.07246741, 11.24270688 ], [ 110.07040803, 11.24035153 ], [ 110.0677216, 11.23874785 ], [ 110.06467109, 11.23805281 ], [ 110.0615551, 11.23833444 ], [ 110.05867865, 11.23956519 ], [ 110.05632331, 11.24162456 ], [ 110.05471962, 11.24431099 ], [ 110.05402458, 11.2473615 ], [ 110.05430621, 11.25047749 ], [ 110.05553696, 11.25335394 ], [ 110.12822847, 11.36894451 ] ] ], [ [ [ 109.82951587, 15.22896754 ], [ 109.77065019, 15.44468789 ], [ 109.67264555, 15.66561455 ], [ 109.57455994, 15.82609887 ], [ 109.51574449, 15.91095759 ], [ 109.29314007, 16.19491896 ], [ 109.29161878, 16.19765288 ], [ 109.29101677, 16.20072311 ], [ 109.29139298, 16.2038291 ], [ 109.29271057, 16.20666681 ], [ 109.29484059, 16.20895848 ], [ 109.29757451, 16.21047978 ], [ 109.30064474, 16.21108179 ], [ 109.30375073, 16.21070558 ], [ 109.30658844, 16.20938798 ], [ 109.30888011, 16.20725797 ], [ 109.53166592, 15.92306523 ], [ 109.53201478, 15.92259221 ], [ 109.59116145, 15.8372556 ], [ 109.59147511, 15.83677407 ], [ 109.6900529, 15.67548445 ], [ 109.69066131, 15.67432448 ], [ 109.7892391, 15.45210582 ], [ 109.78974541, 15.45068337 ], [ 109.84889209, 15.23393326 ], [ 109.84903675, 15.23333003 ], [ 109.8648092, 15.15722425 ], [ 109.86495704, 15.15409906 ], [ 109.86413191, 15.15108113 ], [ 109.86241457, 15.1484659 ], [ 109.85997314, 15.14650935 ], [ 109.85704658, 15.145403 ], [ 109.85392139, 15.14525516 ], [ 109.85090347, 15.14608029 ], [ 109.84828823, 15.14779763 ], [ 109.84633168, 15.15023907 ], [ 109.84522534, 15.15316562 ], [ 109.82951587, 15.22896754 ] ] ] ] } }
+]
+}
\ No newline at end of file
diff --git a/js_sdk/u-charts/package.json b/js_sdk/u-charts/package.json
new file mode 100644
index 0000000..84193a3
--- /dev/null
+++ b/js_sdk/u-charts/package.json
@@ -0,0 +1,13 @@
+{
+    "id": "u-charts",
+    "name": "uCharts高性能跨全端图表",
+    "version": "1.9.6.20210214",
+    "description": "支持H5、PC、APP、小程序(微信/支付宝/百度/头条/QQ/360)Vue、Taro",
+    "keywords": [
+        "echarts",
+        "canvas2d",
+        "F2",
+        "图表",
+        "跨全端"
+    ]
+}
\ No newline at end of file
diff --git a/js_sdk/u-charts/readme.md b/js_sdk/u-charts/readme.md
new file mode 100644
index 0000000..fb4e036
--- /dev/null
+++ b/js_sdk/u-charts/readme.md
@@ -0,0 +1,6 @@
+# uCharts JSSDK说明
+1、如不使用uCharts组件,可直接引用u-charts.js,打包编译后会`自动压缩`,压缩后体积约为`90kb`。
+2、如果90kb的体积仍需压缩,请手动删除u-charts.js内您不需要的图表类型,如k线图candle。
+3、config.js为uCharts组件的用户配置文件,升级前请`自行备份config.js`文件,以免被强制覆盖。
+4、demodata.json为标准数据格式,仅供演示使用。
+5、mapdata.json为地图数据格式,遵循geoJson地图数据交换格式参考:http://datav.aliyun.com/tools/atlas/
\ No newline at end of file
diff --git a/js_sdk/u-charts/u-charts.js b/js_sdk/u-charts/u-charts.js
new file mode 100644
index 0000000..5bc52e9
--- /dev/null
+++ b/js_sdk/u-charts/u-charts.js
@@ -0,0 +1,5687 @@
+/*
+ * uCharts v1.9.6.20210214
+ * uni-app平台高性能跨全端图表,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)
+ * Copyright (c) 2021 QIUN秋云 https://www.ucharts.cn All rights reserved.
+ * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
+ * 
+ * uCharts官方网站
+ * https://www.uCharts.cn
+ * 
+ * 开源地址:
+ * https://gitee.com/uCharts/uCharts
+ * 
+ * uni-app插件市场地址:
+ * http://ext.dcloud.net.cn/plugin?id=271
+ * 
+ */
+
+'use strict';
+
+var config = {
+  yAxisWidth: 15,
+  yAxisSplit: 5,
+  xAxisHeight: 22,
+  xAxisLineHeight: 22,
+  legendHeight: 15,
+  yAxisTitleWidth: 15,
+  padding: [10, 10, 10, 10],
+  pixelRatio: 1,
+  rotate: false,
+  columePadding: 3,
+  fontSize: 13,
+  //dataPointShape: ['diamond', 'circle', 'triangle', 'rect'],
+  dataPointShape: ['circle', 'circle', 'circle', 'circle'],
+  colors: ['#1890ff', '#2fc25b', '#facc14', '#f04864', '#8543e0', '#90ed7d'],
+  pieChartLinePadding: 15,
+  pieChartTextPadding: 5,
+  xAxisTextPadding: 3,
+  titleColor: '#333333',
+  titleFontSize: 20,
+  subtitleColor: '#999999',
+  subtitleFontSize: 15,
+  toolTipPadding: 3,
+  toolTipBackground: '#000000',
+  toolTipOpacity: 0.7,
+  toolTipLineHeight: 20,
+  radarLabelTextMargin: 15,
+  gaugeLabelTextMargin: 15
+};
+
+let assign = function (target, ...varArgs) {
+    if (target == null) {
+        throw new TypeError('Cannot convert undefined or null to object');
+    }
+    if (!varArgs || varArgs.length <= 0) {
+        return target;
+    }
+    // 深度合并对象
+    function deepAssign(obj1, obj2) {
+        for (let key in obj2) {
+            obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ?
+                deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];
+        }
+        return obj1;
+    }
+
+    varArgs.forEach(val => {
+        target = deepAssign(target, val);
+    });
+    return target;
+};
+
+var util = {
+  toFixed: function toFixed(num, limit) {
+    limit = limit || 2;
+    if (this.isFloat(num)) {
+      num = num.toFixed(limit);
+    }
+    return num;
+  },
+  isFloat: function isFloat(num) {
+    return num % 1 !== 0;
+  },
+  approximatelyEqual: function approximatelyEqual(num1, num2) {
+    return Math.abs(num1 - num2) < 1e-10;
+  },
+  isSameSign: function isSameSign(num1, num2) {
+    return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;
+  },
+  isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {
+    return this.isSameSign(p1.x, p2.x);
+  },
+  isCollision: function isCollision(obj1, obj2) {
+    obj1.end = {};
+    obj1.end.x = obj1.start.x + obj1.width;
+    obj1.end.y = obj1.start.y - obj1.height;
+    obj2.end = {};
+    obj2.end.x = obj2.start.x + obj2.width;
+    obj2.end.y = obj2.start.y - obj2.height;
+    var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;
+    return !flag;
+  }
+};
+
+//兼容H5点击事件
+function getH5Offset(e) {
+  e.mp = {
+    changedTouches: []
+  };
+  e.mp.changedTouches.push({
+    x: e.offsetX,
+    y: e.offsetY
+  });
+  return e;
+}
+
+// hex 转 rgba
+function hexToRgb(hexValue, opc) {
+  var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
+  var hex = hexValue.replace(rgx, function(m, r, g, b) {
+    return r + r + g + g + b + b;
+  });
+  var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
+  var r = parseInt(rgb[1], 16);
+  var g = parseInt(rgb[2], 16);
+  var b = parseInt(rgb[3], 16);
+  return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';
+}
+
+function findRange(num, type, limit) {
+  if (isNaN(num)) {
+    throw new Error('[uCharts] unvalid series data!');
+  }
+  limit = limit || 10;
+  type = type ? type : 'upper';
+  var multiple = 1;
+  while (limit < 1) {
+    limit *= 10;
+    multiple *= 10;
+  }
+  if (type === 'upper') {
+    num = Math.ceil(num * multiple);
+  } else {
+    num = Math.floor(num * multiple);
+  }
+  while (num % limit !== 0) {
+    if (type === 'upper') {
+      num++;
+    } else {
+      num--;
+    }
+  }
+  return num / multiple;
+}
+
+function calCandleMA(dayArr, nameArr, colorArr, kdata) {
+  let seriesTemp = [];
+  for (let k = 0; k < dayArr.length; k++) {
+    let seriesItem = {
+      data: [],
+      name: nameArr[k],
+      color: colorArr[k]
+    };
+    for (let i = 0, len = kdata.length; i < len; i++) {
+      if (i < dayArr[k]) {
+        seriesItem.data.push(null);
+        continue;
+      }
+      let sum = 0;
+      for (let j = 0; j < dayArr[k]; j++) {
+        sum += kdata[i - j][1];
+      }
+      seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));
+    }
+    seriesTemp.push(seriesItem);
+  }
+  return seriesTemp;
+}
+
+function calValidDistance(self,distance, chartData, config, opts) {
+  var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];
+  var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length-1);
+  var validDistance = distance;
+  if (distance >= 0) {
+    validDistance = 0;
+		self.event.trigger('scrollLeft');
+  } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {
+    validDistance = dataChartAreaWidth - dataChartWidth;
+		self.event.trigger('scrollRight');
+  }
+  return validDistance;
+}
+
+function isInAngleRange(angle, startAngle, endAngle) {
+  function adjust(angle) {
+    while (angle < 0) {
+      angle += 2 * Math.PI;
+    }
+    while (angle > 2 * Math.PI) {
+      angle -= 2 * Math.PI;
+    }
+    return angle;
+  }
+  angle = adjust(angle);
+  startAngle = adjust(startAngle);
+  endAngle = adjust(endAngle);
+  if (startAngle > endAngle) {
+    endAngle += 2 * Math.PI;
+    if (angle < startAngle) {
+      angle += 2 * Math.PI;
+    }
+  }
+  return angle >= startAngle && angle <= endAngle;
+}
+
+function calRotateTranslate(x, y, h) {
+  var xv = x;
+  var yv = h - y;
+  var transX = xv + (h - yv - xv) / Math.sqrt(2);
+  transX *= -1;
+  var transY = (h - yv) * (Math.sqrt(2) - 1) - (h - yv - xv) / Math.sqrt(2);
+  return {
+    transX: transX,
+    transY: transY
+  };
+}
+
+function createCurveControlPoints(points, i) {
+
+  function isNotMiddlePoint(points, i) {
+    if (points[i - 1] && points[i + 1]) {
+      return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y,points[i + 1].y);
+    } else {
+      return false;
+    }
+  }
+	function isNotMiddlePointX(points, i) {
+	  if (points[i - 1] && points[i + 1]) {
+	    return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x,points[i + 1].x);
+	  } else {
+	    return false;
+	  }
+	}
+  var a = 0.2;
+  var b = 0.2;
+  var pAx = null;
+  var pAy = null;
+  var pBx = null;
+  var pBy = null;
+  if (i < 1) {
+    pAx = points[0].x + (points[1].x - points[0].x) * a;
+    pAy = points[0].y + (points[1].y - points[0].y) * a;
+  } else {
+    pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;
+    pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;
+  }
+
+  if (i > points.length - 3) {
+    var last = points.length - 1;
+    pBx = points[last].x - (points[last].x - points[last - 1].x) * b;
+    pBy = points[last].y - (points[last].y - points[last - 1].y) * b;
+  } else {
+    pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;
+    pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;
+  }
+  if (isNotMiddlePoint(points, i + 1)) {
+    pBy = points[i + 1].y;
+  }
+  if (isNotMiddlePoint(points, i)) {
+    pAy = points[i].y;
+  }
+	if (isNotMiddlePointX(points, i + 1)) {
+	  pBx = points[i + 1].x;
+	}
+	if (isNotMiddlePointX(points, i)) {
+	  pAx = points[i].x;
+	}
+	if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {
+	pAy = points[i].y;
+	}
+	if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {
+	pBy = points[i + 1].y;
+	}
+	if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {
+	pAx = points[i].x;
+	}
+	if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {
+	pBx = points[i + 1].x;
+	}
+  return {
+    ctrA: {
+      x: pAx,
+      y: pAy
+    },
+    ctrB: {
+      x: pBx,
+      y: pBy
+    }
+  };
+}
+
+function convertCoordinateOrigin(x, y, center) {
+  return {
+    x: center.x + x,
+    y: center.y - y
+  };
+}
+
+function avoidCollision(obj, target) {
+  if (target) {
+    // is collision test
+    while (util.isCollision(obj, target)) {
+      if (obj.start.x > 0) {
+        obj.start.y--;
+      } else if (obj.start.x < 0) {
+        obj.start.y++;
+      } else {
+        if (obj.start.y > 0) {
+          obj.start.y++;
+        } else {
+          obj.start.y--;
+        }
+      }
+    }
+  }
+  return obj;
+}
+
+function fillSeries(series, opts, config) {
+  var index = 0;
+  return series.map(function(item) {
+    if (!item.color) {
+      item.color = config.colors[index];
+      index = (index + 1) % config.colors.length;
+    }
+    if (!item.index) {
+      item.index = 0;
+    }
+    if (!item.type) {
+      item.type = opts.type;
+    }
+    if (typeof item.show == "undefined") {
+      item.show = true;
+    }
+    if (!item.type) {
+      item.type = opts.type;
+    }
+    if (!item.pointShape) {
+      item.pointShape = "circle";
+    }
+    if (!item.legendShape) {
+      switch (item.type) {
+        case 'line':
+          item.legendShape = "line";
+          break;
+        case 'column':
+          item.legendShape = "rect";
+          break;
+        case 'area':
+          item.legendShape = "triangle";
+          break;
+        default:
+          item.legendShape = "circle";
+      }
+    }
+    return item;
+  });
+}
+
+function getDataRange(minData, maxData) {
+  var limit = 0;
+  var range = maxData - minData;
+  if (range >= 10000) {
+    limit = 1000;
+  } else if (range >= 1000) {
+    limit = 100;
+  } else if (range >= 100) {
+    limit = 10;
+  } else if (range >= 10) {
+    limit = 5;
+  } else if (range >= 1) {
+    limit = 1;
+  } else if (range >= 0.1) {
+    limit = 0.1;
+  } else if (range >= 0.01) {
+    limit = 0.01;
+  } else if (range >= 0.001) {
+    limit = 0.001;
+  } else if (range >= 0.0001) {
+    limit = 0.0001;
+  } else if (range >= 0.00001) {
+    limit = 0.00001;
+  } else {
+    limit = 0.000001;
+  }
+  return {
+    minRange: findRange(minData, 'lower', limit),
+    maxRange: findRange(maxData, 'upper', limit)
+  };
+}
+
+function measureText(text) {
+  var fontSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : config.fontSize;
+  text = String(text);
+  var text = text.split('');
+  var width = 0;
+  for (let i = 0; i < text.length; i++) {
+    let item = text[i];
+    if (/[a-zA-Z]/.test(item)) {
+      width += 7;
+    } else if (/[0-9]/.test(item)) {
+      width += 5.5;
+    } else if (/\./.test(item)) {
+      width += 2.7;
+    } else if (/-/.test(item)) {
+      width += 3.25;
+    } else if (/[\u4e00-\u9fa5]/.test(item)) {
+      width += 10;
+    } else if (/\(|\)/.test(item)) {
+      width += 3.73;
+    } else if (/\s/.test(item)) {
+      width += 2.5;
+    } else if (/%/.test(item)) {
+      width += 8;
+    } else {
+      width += 10;
+    }
+  }
+  return width * fontSize / 10;
+}
+
+function dataCombine(series) {
+  return series.reduce(function(a, b) {
+    return (a.data ? a.data : a).concat(b.data);
+  }, []);
+}
+
+function dataCombineStack(series, len) {
+  var sum = new Array(len);
+  for (var j = 0; j < sum.length; j++) {
+    sum[j] = 0;
+  }
+  for (var i = 0; i < series.length; i++) {
+    for (var j = 0; j < sum.length; j++) {
+      sum[j] += series[i].data[j];
+    }
+  }
+  return series.reduce(function(a, b) {
+    return (a.data ? a.data : a).concat(b.data).concat(sum);
+  }, []);
+}
+
+function getTouches(touches, opts, e) {
+  let x, y;
+  if (touches.clientX) {
+    if (opts.rotate) {
+      y = opts.height - touches.clientX * opts.pixelRatio;
+      x = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) * opts.pixelRatio;
+    } else {
+      x = touches.clientX * opts.pixelRatio;
+      y = (touches.pageY - e.currentTarget.offsetTop - (opts.height / opts.pixelRatio / 2) * (opts.pixelRatio - 1)) * opts.pixelRatio;
+    }
+  } else {
+    if (opts.rotate) {
+      y = opts.height - touches.x * opts.pixelRatio;
+      x = touches.y * opts.pixelRatio;
+    } else {
+      x = touches.x * opts.pixelRatio;
+      y = touches.y * opts.pixelRatio;
+    }
+  }
+  return {
+    x: x,
+    y: y
+  }
+}
+
+function getSeriesDataItem(series, index) {
+  var data = [];
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    if (item.data[index] !== null && typeof item.data[index] !== 'undefined' && item.show) {
+      let seriesItem = {};
+      seriesItem.color = item.color;
+      seriesItem.type = item.type;
+      seriesItem.style = item.style;
+      seriesItem.pointShape = item.pointShape;
+      seriesItem.disableLegend = item.disableLegend;
+      seriesItem.name = item.name;
+      seriesItem.show = item.show;
+      seriesItem.data = item.format ? item.format(item.data[index]) : item.data[index];
+      data.push(seriesItem);
+    }
+  }
+  return data;
+}
+
+function getMaxTextListLength(list) {
+  var lengthList = list.map(function(item) {
+    return measureText(item);
+  });
+  return Math.max.apply(null, lengthList);
+}
+
+function getRadarCoordinateSeries(length) {
+  var eachAngle = 2 * Math.PI / length;
+  var CoordinateSeries = [];
+  for (var i = 0; i < length; i++) {
+    CoordinateSeries.push(eachAngle * i);
+  }
+
+  return CoordinateSeries.map(function(item) {
+    return -1 * item + Math.PI / 2;
+  });
+}
+
+function getToolTipData(seriesData, calPoints, index, categories) {
+  var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
+
+  var textList = seriesData.map(function(item) {
+		let titleText=[];
+		if(categories){
+			titleText=categories;
+		}else{
+			titleText=item.data;
+		}
+    return {
+      text: option.format ? option.format(item, titleText[index]) : item.name + ': ' + item.data,
+      color: item.color
+    };
+  });
+  var validCalPoints = [];
+  var offset = {
+    x: 0,
+    y: 0
+  };
+  for (let i = 0; i < calPoints.length; i++) {
+    let points = calPoints[i];
+    if (typeof points[index] !== 'undefined' && points[index] !== null) {
+      validCalPoints.push(points[index]);
+    }
+  }
+  for (let i = 0; i < validCalPoints.length; i++) {
+    let item = validCalPoints[i];
+    offset.x = Math.round(item.x);
+    offset.y += item.y;
+  }
+  offset.y /= validCalPoints.length;
+  return {
+    textList: textList,
+    offset: offset
+  };
+}
+
+function getMixToolTipData(seriesData, calPoints, index, categories) {
+  var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
+  var textList = seriesData.map(function(item) {
+    return {
+      text: option.format ? option.format(item, categories[index]) : item.name + ': ' + item.data,
+      color: item.color,
+      disableLegend: item.disableLegend ? true : false
+    };
+  });
+  textList = textList.filter(function(item) {
+    if (item.disableLegend !== true) {
+      return item;
+    }
+  });
+  var validCalPoints = [];
+  var offset = {
+    x: 0,
+    y: 0
+  };
+  for (let i = 0; i < calPoints.length; i++) {
+    let points = calPoints[i];
+    if (typeof points[index] !== 'undefined' && points[index] !== null) {
+      validCalPoints.push(points[index]);
+    }
+  }
+  for (let i = 0; i < validCalPoints.length; i++) {
+    let item = validCalPoints[i];
+    offset.x = Math.round(item.x);
+    offset.y += item.y;
+  }
+  offset.y /= validCalPoints.length;
+  return {
+    textList: textList,
+    offset: offset
+  };
+}
+
+function getCandleToolTipData(series, seriesData, calPoints, index, categories, extra) {
+  var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
+  let upColor = extra.color.upFill;
+  let downColor = extra.color.downFill;
+  //颜色顺序为开盘,收盘,最低,最高
+  let color = [upColor, upColor, downColor, upColor];
+  var textList = [];
+  let text0 = {
+    text: categories[index],
+    color: null
+  };
+  textList.push(text0);
+  seriesData.map(function(item) {
+    if (index == 0) {
+      if(item.data[1] - item.data[0] < 0){
+      	color[1] = downColor;
+      }else{
+      	color[1] = upColor;
+      }
+    } else {
+      if (item.data[0] < series[index - 1][1]) {
+        color[0] = downColor;
+      }
+      if (item.data[1] < item.data[0]) {
+        color[1] = downColor;
+      }
+      if (item.data[2] > series[index - 1][1]) {
+        color[2] = upColor;
+      }
+      if (item.data[3] < series[index - 1][1]) {
+        color[3] = downColor;
+      }
+    }
+    let text1 = {
+      text: '开盘:' + item.data[0],
+      color: color[0]
+    };
+    let text2 = {
+      text: '收盘:' + item.data[1],
+      color: color[1]
+    };
+    let text3 = {
+      text: '最低:' + item.data[2],
+      color: color[2]
+    };
+    let text4 = {
+      text: '最高:' + item.data[3],
+      color: color[3]
+    };
+    textList.push(text1, text2, text3, text4);
+  });
+  var validCalPoints = [];
+  var offset = {
+    x: 0,
+    y: 0
+  };
+  for (let i = 0; i < calPoints.length; i++) {
+    let points = calPoints[i];
+    if (typeof points[index] !== 'undefined' && points[index] !== null) {
+      validCalPoints.push(points[index]);
+    }
+  }
+  offset.x = Math.round(validCalPoints[0][0].x);
+  return {
+    textList: textList,
+    offset: offset
+  };
+}
+
+function filterSeries(series) {
+  let tempSeries = [];
+  for (let i = 0; i < series.length; i++) {
+    if (series[i].show == true) {
+      tempSeries.push(series[i])
+    }
+  }
+  return tempSeries;
+}
+
+function findCurrentIndex(currentPoints, calPoints, opts, config) {
+  var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+  var currentIndex = -1;
+  var spacing = opts.chartData.eachSpacing/2;
+	let xAxisPoints=[];
+	if(calPoints && calPoints.length>0){
+		for(let i=1;i<opts.chartData.xAxisPoints.length;i++){
+				xAxisPoints.push(opts.chartData.xAxisPoints[i]-spacing)
+		}
+		if((opts.type=='line' || opts.type=='area') && opts.xAxis.boundaryGap=='justify'){
+		  spacing = opts.chartData.eachSpacing/2;
+		}
+		if(!opts.categories){
+			spacing=0
+		}
+		if (isInExactChartArea(currentPoints, opts, config)) {
+		  xAxisPoints.forEach(function(item, index) {
+		    if (currentPoints.x + offset + spacing > item) {
+		      currentIndex = index;
+		    }
+		  });
+		}
+	}
+  return currentIndex;
+}
+
+function findLegendIndex(currentPoints, legendData, opts) {
+  let currentIndex = -1;
+  if (isInExactLegendArea(currentPoints, legendData.area)) {
+    let points = legendData.points;
+    let index = -1;
+    for (let i = 0, len = points.length; i < len; i++) {
+      let item = points[i];
+      for (let j = 0; j < item.length; j++) {
+        index += 1;
+        let area = item[j]['area'];
+        if (currentPoints.x > area[0] && currentPoints.x < area[2] && currentPoints.y > area[1] && currentPoints.y < area[3]) {
+          currentIndex = index;
+          break;
+        }
+      }
+    }
+    return currentIndex;
+  }
+  return currentIndex;
+}
+
+function isInExactLegendArea(currentPoints, area) {
+  return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y &&
+    currentPoints.y < area.end.y;
+}
+
+function isInExactChartArea(currentPoints, opts, config) {
+  return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] -10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];
+}
+
+function findRadarChartCurrentIndex(currentPoints, radarData, count) {
+  var eachAngleArea = 2 * Math.PI / count;
+  var currentIndex = -1;
+  if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {
+    var fixAngle = function fixAngle(angle) {
+      if (angle < 0) {
+        angle += 2 * Math.PI;
+      }
+      if (angle > 2 * Math.PI) {
+        angle -= 2 * Math.PI;
+      }
+      return angle;
+    };
+
+    var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);
+    angle = -1 * angle;
+    if (angle < 0) {
+      angle += 2 * Math.PI;
+    }
+
+    var angleList = radarData.angleList.map(function(item) {
+      item = fixAngle(-1 * item);
+
+      return item;
+    });
+
+    angleList.forEach(function(item, index) {
+      var rangeStart = fixAngle(item - eachAngleArea / 2);
+      var rangeEnd = fixAngle(item + eachAngleArea / 2);
+      if (rangeEnd < rangeStart) {
+        rangeEnd += 2 * Math.PI;
+      }
+      if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <=
+        rangeEnd) {
+        currentIndex = index;
+      }
+    });
+  }
+
+  return currentIndex;
+}
+
+function findFunnelChartCurrentIndex(currentPoints, funnelData) {
+  var currentIndex = -1;
+  for (var i = 0, len = funnelData.series.length; i < len; i++) {
+    var item = funnelData.series[i];
+    if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {
+      currentIndex = i;
+      break;
+    }
+  }
+  return currentIndex;
+}
+
+function findWordChartCurrentIndex(currentPoints, wordData) {
+  var currentIndex = -1;
+  for (var i = 0, len = wordData.length; i < len; i++) {
+    var item = wordData[i];
+    if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {
+      currentIndex = i;
+      break;
+    }
+  }
+  return currentIndex;
+}
+
+function findMapChartCurrentIndex(currentPoints, opts) {
+  var currentIndex = -1;
+  var cData=opts.chartData.mapData;
+  var data=opts.series;
+  var tmp=pointToCoordinate(currentPoints.y, currentPoints.x,cData.bounds,cData.scale,cData.xoffset,cData.yoffset);
+  var poi=[tmp.x, tmp.y];
+  for (var i = 0, len = data.length; i < len; i++) {
+    var item = data[i].geometry.coordinates;
+    if(isPoiWithinPoly(poi,item)){
+      currentIndex = i;
+      break;
+    }
+  }
+  return currentIndex;
+}
+
+function findPieChartCurrentIndex(currentPoints, pieData) {
+  var currentIndex = -1;
+  if (isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
+    var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
+    angle = -angle;
+    for (var i = 0, len = pieData.series.length; i < len; i++) {
+      var item = pieData.series[i];
+      if (isInAngleRange(angle, item._start_, item._start_ + item._proportion_ * 2 * Math.PI)) {
+        currentIndex = i;
+        break;
+      }
+    }
+  }
+
+  return currentIndex;
+}
+
+function isInExactPieChartArea(currentPoints, center, radius) {
+  return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);
+}
+
+function splitPoints(points) {
+  var newPoints = [];
+  var items = [];
+  points.forEach(function(item, index) {
+    if (item !== null) {
+      items.push(item);
+    } else {
+      if (items.length) {
+        newPoints.push(items);
+      }
+      items = [];
+    }
+  });
+  if (items.length) {
+    newPoints.push(items);
+  }
+
+  return newPoints;
+}
+
+function calLegendData(series, opts, config, chartData) {
+  let legendData = {
+    area: {
+      start: {
+        x: 0,
+        y: 0
+      },
+      end: {
+        x: 0,
+        y: 0
+      },
+      width: 0,
+      height: 0,
+      wholeWidth: 0,
+      wholeHeight: 0
+    },
+    points: [],
+    widthArr: [],
+    heightArr: []
+  };
+  if (opts.legend.show === false) {
+    chartData.legendData = legendData;
+    return legendData;
+  }
+
+  let padding = opts.legend.padding;
+  let margin = opts.legend.margin;
+  let fontSize = opts.legend.fontSize;
+  let shapeWidth = 15 * opts.pixelRatio;
+  let shapeRight = 5 * opts.pixelRatio;
+  let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize);
+  if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
+    let legendList = [];
+    let widthCount = 0;
+    let widthCountArr = [];
+    let currentRow = [];
+    for (let i = 0; i < series.length; i++) {
+      let item = series[i];
+      let itemWidth = shapeWidth + shapeRight + measureText(item.name || 'undefined', fontSize) + opts.legend.itemGap;
+      if (widthCount + itemWidth > opts.width - opts.padding[1] - opts.padding[3]) {
+        legendList.push(currentRow);
+        widthCountArr.push(widthCount - opts.legend.itemGap);
+        widthCount = itemWidth;
+        currentRow = [item];
+      } else {
+        widthCount += itemWidth;
+        currentRow.push(item);
+      }
+    }
+    if (currentRow.length) {
+      legendList.push(currentRow);
+      widthCountArr.push(widthCount - opts.legend.itemGap);
+      legendData.widthArr = widthCountArr;
+      let legendWidth = Math.max.apply(null, widthCountArr);
+      switch (opts.legend.float) {
+        case 'left':
+          legendData.area.start.x = opts.padding[3];
+          legendData.area.end.x = opts.padding[3] + 2 * padding;
+          break;
+        case 'right':
+          legendData.area.start.x = opts.width - opts.padding[1] - legendWidth - 2 * padding;
+          legendData.area.end.x = opts.width - opts.padding[1];
+          break;
+        default:
+          legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;
+          legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;
+      }
+      legendData.area.width = legendWidth + 2 * padding;
+      legendData.area.wholeWidth = legendWidth + 2 * padding;
+      legendData.area.height = legendList.length * lineHeight + 2 * padding;
+      legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;
+      legendData.points = legendList;
+    }
+  } else {
+    let len = series.length;
+    let maxHeight = opts.height - opts.padding[0] - opts.padding[2] - 2 * margin - 2 * padding;
+    let maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);
+    legendData.area.height = maxLength * lineHeight + padding * 2;
+    legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;
+    switch (opts.legend.float) {
+      case 'top':
+        legendData.area.start.y = opts.padding[0] + margin;
+        legendData.area.end.y = opts.padding[0] + margin + legendData.area.height;
+        break;
+      case 'bottom':
+        legendData.area.start.y = opts.height - opts.padding[2] - margin - legendData.area.height;
+        legendData.area.end.y = opts.height - opts.padding[2] - margin;
+        break;
+      default:
+        legendData.area.start.y = (opts.height - legendData.area.height) / 2;
+        legendData.area.end.y = (opts.height + legendData.area.height) / 2;
+    }
+    let lineNum = len % maxLength === 0 ? len / maxLength : Math.floor((len / maxLength) + 1);
+    let currentRow = [];
+    for (let i = 0; i < lineNum; i++) {
+      let temp = series.slice(i * maxLength, i * maxLength + maxLength);
+      currentRow.push(temp);
+    }
+
+    legendData.points = currentRow;
+
+    if (currentRow.length) {
+      for (let i = 0; i < currentRow.length; i++) {
+        let item = currentRow[i];
+        let maxWidth = 0;
+        for (let j = 0; j < item.length; j++) {
+          let itemWidth = shapeWidth + shapeRight + measureText(item[j].name || 'undefined', fontSize) + opts.legend.itemGap;
+          if (itemWidth > maxWidth) {
+            maxWidth = itemWidth;
+          }
+        }
+        legendData.widthArr.push(maxWidth);
+        legendData.heightArr.push(item.length * lineHeight + padding * 2);
+      }
+      let legendWidth = 0
+      for (let i = 0; i < legendData.widthArr.length; i++) {
+        legendWidth += legendData.widthArr[i];
+      }
+      legendData.area.width = legendWidth - opts.legend.itemGap + 2 * padding;
+      legendData.area.wholeWidth = legendData.area.width + padding;
+    }
+  }
+
+  switch (opts.legend.position) {
+    case 'top':
+      legendData.area.start.y = opts.padding[0] + margin;
+      legendData.area.end.y = opts.padding[0] + margin + legendData.area.height;
+      break;
+    case 'bottom':
+      legendData.area.start.y = opts.height - opts.padding[2] - legendData.area.height - margin;
+      legendData.area.end.y = opts.height - opts.padding[2] - margin;
+      break;
+    case 'left':
+      legendData.area.start.x = opts.padding[3];
+      legendData.area.end.x = opts.padding[3] + legendData.area.width;
+      break;
+    case 'right':
+      legendData.area.start.x = opts.width - opts.padding[1] - legendData.area.width;
+      legendData.area.end.x = opts.width - opts.padding[1];
+      break;
+  }
+  chartData.legendData = legendData;
+  return legendData;
+}
+
+function calCategoriesData(categories, opts, config, eachSpacing) {
+  var result = {
+    angle: 0,
+    xAxisHeight: config.xAxisHeight
+  };
+  var categoriesTextLenth = categories.map(function(item) {
+    return measureText(item,opts.xAxis.fontSize||config.fontSize);
+  });
+  var maxTextLength = Math.max.apply(this, categoriesTextLenth);
+
+  if (opts.xAxis.rotateLabel == true && maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {
+    result.angle = 45 * Math.PI / 180;
+    result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);
+  }
+  return result;
+}
+
+function getXAxisTextList(series, opts, config) {
+  var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
+  var data = dataCombine(series);
+  var sorted = [];
+  // remove null from data
+  data = data.filter(function(item) {
+    //return item !== null;
+    if (typeof item === 'object' && item !== null) {
+      if (item.constructor.toString().indexOf('Array')>-1) {
+        return item !== null;
+      } else {
+        return item.value !== null;
+      }
+    } else {
+      return item !== null;
+    }
+  });
+  data.map(function(item) {
+    if (typeof item === 'object') {
+      if (item.constructor.toString().indexOf('Array')>-1) {
+				if(opts.type=='candle'){
+					item.map(function(subitem) {
+					  sorted.push(subitem);
+					})
+				}else{
+					sorted.push(item[0]);
+				}
+      } else {
+        sorted.push(item.value);
+      }
+    } else {
+      sorted.push(item);
+    }
+  })
+	
+  var minData = 0;
+  var maxData = 0;
+  if (sorted.length > 0) {
+    minData = Math.min.apply(this, sorted);
+    maxData = Math.max.apply(this, sorted);
+  }
+  //为了兼容v1.9.0之前的项目
+  if(index>-1){
+    if (typeof opts.xAxis.data[index].min === 'number') {
+      minData = Math.min(opts.xAxis.data[index].min, minData);
+    }
+    if (typeof opts.xAxis.data[index].max === 'number') {
+      maxData = Math.max(opts.xAxis.data[index].max, maxData);
+    }
+  }else{
+    if (typeof opts.xAxis.min === 'number') {
+      minData = Math.min(opts.xAxis.min, minData);
+    }
+    if (typeof opts.xAxis.max === 'number') {
+      maxData = Math.max(opts.xAxis.max, maxData);
+    }
+  }
+  
+
+  if (minData === maxData) {
+    var rangeSpan = maxData || 10;
+    maxData += rangeSpan;
+  }
+
+  //var dataRange = getDataRange(minData, maxData);
+  var minRange = minData;
+  var maxRange = maxData;
+
+  var range = [];
+  var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;
+
+  for (var i = 0; i <= opts.xAxis.splitNumber; i++) {
+    range.push(minRange + eachRange * i);
+  }
+  return range;
+}
+
+function calXAxisData(series, opts, config){
+    var result = {
+        angle: 0,
+        xAxisHeight: config.xAxisHeight
+    };
+
+    result.ranges = getXAxisTextList(series, opts, config);
+    result.rangesFormat = result.ranges.map(function(item){
+        item = opts.xAxis.format? opts.xAxis.format(item):util.toFixed(item, 2);
+        return item;
+    });
+		
+    var xAxisScaleValues = result.ranges.map(function (item) {
+        // 如果刻度值是浮点数,则保留两位小数
+        item = util.toFixed(item, 2);
+        // 若有自定义格式则调用自定义的格式化函数
+        item = opts.xAxis.format ? opts.xAxis.format(Number(item)) : item;
+        return item;
+    });
+
+    result = Object.assign(result,getXAxisPoints(xAxisScaleValues, opts, config));
+    // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\结束点以及总长
+    var eachSpacing = result.eachSpacing;
+
+    var textLength = xAxisScaleValues.map(function (item) {
+        return measureText(item);
+    });
+    
+    // get max length of categories text
+    var maxTextLength = Math.max.apply(this, textLength);
+
+    // 如果刻度值文本内容过长,则将其逆时针旋转45°
+    if (maxTextLength + 2 * config.xAxisTextPadding > eachSpacing) {
+        result.angle = 45 * Math.PI / 180;
+        result.xAxisHeight = 2 * config.xAxisTextPadding + maxTextLength * Math.sin(result.angle);
+    }
+
+    if (opts.xAxis.disabled === true) {
+        result.xAxisHeight = 0;
+    }
+
+    return result;
+}
+
+function getRadarDataPoints(angleList, center, radius, series, opts) {
+  var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+
+  var radarOption = opts.extra.radar || {};
+  radarOption.max = radarOption.max || 0;
+  var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
+
+  var data = [];
+  for (let i = 0; i < series.length; i++) {
+    let each = series[i];
+    let listItem = {};
+    listItem.color = each.color;
+		listItem.legendShape = each.legendShape;
+		listItem.pointShape = each.pointShape;
+    listItem.data = [];
+    each.data.forEach(function(item, index) {
+      let tmp = {};
+      tmp.angle = angleList[index];
+
+      tmp.proportion = item / maxData;
+      tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion *
+        process * Math.sin(tmp.angle), center);
+      listItem.data.push(tmp);
+    });
+
+    data.push(listItem);
+  }
+
+  return data;
+}
+
+function getPieDataPoints(series, radius) {
+  var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+
+  var count = 0;
+  var _start_ = 0;
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    item.data = item.data === null ? 0 : item.data;
+    count += item.data;
+  }
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    item.data = item.data === null ? 0 : item.data;
+    if (count === 0) {
+      item._proportion_ = 1 / series.length * process;
+    } else {
+      item._proportion_ = item.data / count * process;
+    }
+    item._radius_ = radius;
+  }
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    item._start_ = _start_;
+    _start_ += 2 * item._proportion_ * Math.PI;
+  }
+
+  return series;
+}
+
+function getFunnelDataPoints(series, radius) {
+  var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+  series = series.sort(function(a,b){return parseInt(b.data)-parseInt(a.data);});
+  for (let i = 0; i < series.length; i++) {
+    series[i].radius = series[i].data/series[0].data*radius*process;
+    series[i]._proportion_ = series[i].data/series[0].data;
+  }
+  return series.reverse();
+}
+
+function getRoseDataPoints(series, type, minRadius, radius) {
+  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  var count = 0;
+  var _start_ = 0;
+
+  var dataArr = [];
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    item.data = item.data === null ? 0 : item.data;
+    count += item.data;
+    dataArr.push(item.data);
+  }
+  
+  var minData = Math.min.apply(null, dataArr);
+  var maxData = Math.max.apply(null, dataArr);
+  var radiusLength = radius - minRadius;
+  
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    item.data = item.data === null ? 0 : item.data;
+    if (count === 0 || type == 'area') {
+      item._proportion_ = item.data / count * process;
+      item._rose_proportion_ = 1 / series.length * process;
+    } else {
+      item._proportion_ = item.data / count * process;
+      item._rose_proportion_ = item.data / count * process;
+    }
+    item._radius_ = minRadius + radiusLength * ((item.data - minData) / (maxData - minData));
+  }
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    item._start_ = _start_;
+    _start_ += 2 * item._rose_proportion_ * Math.PI;
+  }
+
+  return series;
+}
+
+function getArcbarDataPoints(series, arcbarOption) {
+  var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+  if (process == 1) {
+    process = 0.999999;
+  }
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    item.data = item.data === null ? 0 : item.data;
+    let totalAngle;
+    if (arcbarOption.type == 'circle') {
+      totalAngle = 2;
+    } else {
+			if (arcbarOption.endAngle < arcbarOption.startAngle) {
+			  totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;
+			} else{
+			  totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
+			}
+    }
+    item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;
+    if (item._proportion_ >= 2) {
+      item._proportion_ = item._proportion_ % 2;
+    }
+  }
+  return series;
+}
+
+function getGaugeAxisPoints(categories, startAngle, endAngle) {
+  let totalAngle = startAngle - endAngle + 1;
+  let tempStartAngle = startAngle;
+  for (let i = 0; i < categories.length; i++) {
+    categories[i].value = categories[i].value === null ? 0 : categories[i].value;
+    categories[i]._startAngle_ = tempStartAngle;
+    categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;
+    if (categories[i]._endAngle_ >= 2) {
+      categories[i]._endAngle_ = categories[i]._endAngle_ % 2;
+    }
+    tempStartAngle = categories[i]._endAngle_;
+  }
+  return categories;
+}
+
+function getGaugeDataPoints(series, categories, gaugeOption) {
+  let process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    item.data = item.data === null ? 0 : item.data;
+    if (gaugeOption.pointer.color == 'auto') {
+      for (let i = 0; i < categories.length; i++) {
+        if (item.data <= categories[i].value) {
+          item.color = categories[i].color;
+          break;
+        }
+      }
+    } else {
+      item.color = gaugeOption.pointer.color;
+    }
+    let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+    item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;
+    item._oldAngle_ = gaugeOption.oldAngle;
+    if (gaugeOption.oldAngle < gaugeOption.endAngle) {
+      item._oldAngle_ += 2;
+    }
+    if (item.data >= gaugeOption.oldData) {
+      item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;
+    } else {
+      item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;
+    }
+    if (item._proportion_ >= 2) {
+      item._proportion_ = item._proportion_ % 2;
+    }
+  }
+  return series;
+}
+
+function getPieTextMaxLength(series) {
+  series = getPieDataPoints(series);
+  let maxLength = 0;
+  for (let i = 0; i < series.length; i++) {
+    let item = series[i];
+    let text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';
+    maxLength = Math.max(maxLength, measureText(text));
+  }
+
+  return maxLength;
+}
+
+function fixColumeData(points, eachSpacing, columnLen, index, config, opts) {
+  return points.map(function(item) {
+    if (item === null) {
+      return null;
+    }
+    item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / columnLen);
+
+    if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+      item.width = Math.min(item.width, +opts.extra.column.width);
+    }
+    if (item.width <= 0) {
+      item.width = 1;
+    }
+    item.x += (index + 0.5 - columnLen / 2) * item.width;
+    return item;
+  });
+}
+
+function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {
+  return points.map(function(item) {
+    if (item === null) {
+      return null;
+    }
+    item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2);
+
+    if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+      item.width = Math.min(item.width, +opts.extra.column.width);
+    }
+
+    if (index > 0) {
+      item.width -= 2 * border;
+    }
+    return item;
+  });
+}
+
+function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {
+
+  return points.map(function(item, indexn) {
+
+    if (item === null) {
+      return null;
+    }
+    item.width = Math.ceil((eachSpacing - 2 * config.columePadding) / 2);
+
+    if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
+      item.width = Math.min(item.width, +opts.extra.column.width);
+    }
+    return item;
+  });
+}
+
+function getXAxisPoints(categories, opts, config) {
+  var spacingValid = opts.width - opts.area[1] - opts.area[3];
+  var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;
+  if((opts.type=='line' || opts.type=='area') && dataCount>1 && opts.xAxis.boundaryGap=='justify'){
+    dataCount -=1;
+  }
+  var eachSpacing = spacingValid / dataCount;
+
+  var xAxisPoints = [];
+  var startX = opts.area[3];
+  var endX = opts.width - opts.area[1];
+  categories.forEach(function(item, index) {
+    xAxisPoints.push(startX + index * eachSpacing);
+  });
+  if(opts.xAxis.boundaryGap !=='justify'){
+    if (opts.enableScroll === true) {
+      xAxisPoints.push(startX + categories.length * eachSpacing);
+    } else {
+      xAxisPoints.push(endX);
+    }
+  }
+  return {
+    xAxisPoints: xAxisPoints,
+    startX: startX,
+    endX: endX,
+    eachSpacing: eachSpacing
+  };
+}
+
+function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
+  var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
+  var points = [];
+  var validHeight = opts.height - opts.area[0] - opts.area[2];
+  data.forEach(function(item, index) {
+    if (item === null) {
+      points.push(null);
+    } else {
+      var cPoints = [];
+      item.forEach(function(items, indexs) {
+        var point = {};
+        point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
+        var value = items.value || items;
+        var height = validHeight * (value - minRange) / (maxRange - minRange);
+        height *= process;
+        point.y = opts.height - Math.round(height) - opts.area[2];
+        cPoints.push(point);
+      });
+      points.push(cPoints);
+    }
+  });
+
+  return points;
+}
+
+function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
+  var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
+  var boundaryGap='center';
+  if (opts.type == 'line'||opts.type == 'area'){
+    boundaryGap=opts.xAxis.boundaryGap;
+  }
+  var points = [];
+  var validHeight = opts.height - opts.area[0] - opts.area[2];
+	var validWidth = opts.width - opts.area[1] - opts.area[3];
+  data.forEach(function(item, index) {
+    if (item === null) {
+      points.push(null);
+    } else {
+      var point = {};
+      point.color = item.color;
+      point.x = xAxisPoints[index];
+      var value = item;
+      if (typeof item === 'object' && item !== null) {
+				if (item.constructor.toString().indexOf('Array')>-1) {
+					let xranges,xminRange,xmaxRange;
+					xranges = [].concat(opts.chartData.xAxisData.ranges);
+					xminRange = xranges.shift();
+					xmaxRange = xranges.pop();
+				  value = item[1];
+					point.x = opts.area[3]+ validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);
+				} else {
+				  value = item.value;
+				}
+      }
+			if(boundaryGap=='center'){
+			  point.x += Math.round(eachSpacing / 2);
+			}
+      var height = validHeight * (value - minRange) / (maxRange - minRange);
+      height *= process;
+      point.y = opts.height - Math.round(height) - opts.area[2];
+      points.push(point);
+    }
+  });
+
+  return points;
+}
+
+function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {
+  var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
+  var points = [];
+  var validHeight = opts.height - opts.area[0] - opts.area[2];
+
+  data.forEach(function(item, index) {
+    if (item === null) {
+      points.push(null);
+    } else {
+      var point = {};
+      point.color = item.color;
+      point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
+
+      if (seriesIndex > 0) {
+        var value = 0;
+        for (let i = 0; i <= seriesIndex; i++) {
+          value += stackSeries[i].data[index];
+        }
+        var value0 = value - item;
+        var height = validHeight * (value - minRange) / (maxRange - minRange);
+        var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);
+      } else {
+        var value = item;
+        var height = validHeight * (value - minRange) / (maxRange - minRange);
+        var height0 = 0;
+      }
+      var heightc = height0;
+      height *= process;
+      heightc *= process;
+      point.y = opts.height - Math.round(height) - opts.area[2];
+      point.y0 = opts.height - Math.round(heightc) - opts.area[2];
+      points.push(point);
+    }
+  });
+
+  return points;
+}
+
+function getYAxisTextList(series, opts, config, stack) {
+  var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
+  var data;
+  if (stack == 'stack') {
+    data = dataCombineStack(series, opts.categories.length);
+  } else {
+    data = dataCombine(series);
+  }
+  var sorted = [];
+  // remove null from data
+  data = data.filter(function(item) {
+    //return item !== null;
+    if (typeof item === 'object' && item !== null) {
+      if (item.constructor.toString().indexOf('Array')>-1) {
+        return item !== null;
+      } else {
+        return item.value !== null;
+      }
+    } else {
+      return item !== null;
+    }
+  });
+  data.map(function(item) {
+    if (typeof item === 'object') {
+      if (item.constructor.toString().indexOf('Array')>-1) {
+				if(opts.type=='candle'){
+					item.map(function(subitem) {
+					  sorted.push(subitem);
+					})
+				}else{
+					sorted.push(item[1]);
+				}
+      } else {
+        sorted.push(item.value);
+      }
+    } else {
+      sorted.push(item);
+    }
+  })
+	
+  var minData = 0;
+  var maxData = 0;
+  if (sorted.length > 0) {
+    minData = Math.min.apply(this, sorted);
+    maxData = Math.max.apply(this, sorted);
+  }
+  //为了兼容v1.9.0之前的项目
+  if(index>-1){
+    if (typeof opts.yAxis.data[index].min === 'number') {
+      minData = Math.min(opts.yAxis.data[index].min, minData);
+    }
+    if (typeof opts.yAxis.data[index].max === 'number') {
+      maxData = Math.max(opts.yAxis.data[index].max, maxData);
+    }
+  }else{
+    if (typeof opts.yAxis.min === 'number') {
+      minData = Math.min(opts.yAxis.min, minData);
+    }
+    if (typeof opts.yAxis.max === 'number') {
+      maxData = Math.max(opts.yAxis.max, maxData);
+    }
+  }
+  
+
+  if (minData === maxData) {
+    var rangeSpan = maxData || 10;
+    maxData += rangeSpan;
+  }
+
+  var dataRange = getDataRange(minData, maxData);
+  var minRange = dataRange.minRange;
+  var maxRange = dataRange.maxRange;
+
+  var range = [];
+  var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;
+
+  for (var i = 0; i <= opts.yAxis.splitNumber; i++) {
+    range.push(minRange + eachRange * i);
+  }
+  return range.reverse();
+}
+
+function calYAxisData(series, opts, config) {
+  //堆叠图重算Y轴
+  var columnstyle = assign({}, {
+    type: ""
+  }, opts.extra.column);
+  //如果是多Y轴,重新计算
+  var YLength = opts.yAxis.data.length;
+  var newSeries=new Array(YLength);
+  if(YLength>0){
+    for(let i=0;i<YLength;i++){
+      newSeries[i]=[];
+      for(let j=0;j<series.length;j++){
+        if(series[j].index == i){
+          newSeries[i].push(series[j]);
+        }
+      }
+    }
+    var rangesArr =new Array(YLength);
+    var rangesFormatArr = new Array(YLength);
+    var yAxisWidthArr =new Array(YLength);
+		
+    for(let i=0;i<YLength;i++){
+      let yData = opts.yAxis.data[i];
+			//如果总开关不显示,强制每个Y轴为不显示
+			if(opts.yAxis.disabled == true){
+				yData.disabled = true;
+			}
+			rangesArr[i]=getYAxisTextList(newSeries[i], opts, config, columnstyle.type,i);
+			let yAxisFontSizes = yData.fontSize || config.fontSize;
+			yAxisWidthArr[i] = {position:yData.position?yData.position:'left',width:0};
+			rangesFormatArr[i]= rangesArr[i].map(function(items) {
+				items = util.toFixed(items, 6);
+				items = yData.format ? yData.format(Number(items)) : items;
+				yAxisWidthArr[i].width = Math.max(yAxisWidthArr[i].width, measureText(items, yAxisFontSizes) + 5);
+				return items;
+			});
+			let calibration= yData.calibration? 4*opts.pixelRatio : 0 ;
+			yAxisWidthArr[i].width += calibration +3*opts.pixelRatio;
+      if (yData.disabled === true) {
+        yAxisWidthArr[i].width=0;
+      }
+    }
+    
+  }else{
+    var rangesArr =new Array(1);
+    var rangesFormatArr = new Array(1);
+    var yAxisWidthArr =new Array(1);
+		rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type);
+		yAxisWidthArr[0] = {position:'left',width:0};
+		var yAxisFontSize = opts.yAxis.fontSize || config.fontSize;
+		rangesFormatArr[0] = rangesArr[0].map(function(item) {
+			item = util.toFixed(item, 6);
+			item = opts.yAxis.format ? opts.yAxis.format(Number(item)) : item;
+			yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize) + 5);
+			return item;
+		});
+		yAxisWidthArr[0].width += 3*opts.pixelRatio;
+		if (opts.yAxis.disabled === true) {
+		  yAxisWidthArr[0] = {position:'left',width:0};
+		  opts.yAxis.data[0]={disabled:true};
+		}else{
+			opts.yAxis.data[0]={disabled:false,position:'left',max:opts.yAxis.max,min:opts.yAxis.min,format:opts.yAxis.format};
+		}
+    
+  }
+
+  return {
+    rangesFormat: rangesFormatArr,
+    ranges: rangesArr,
+    yAxisWidth: yAxisWidthArr
+  };
+  
+}
+
+function calTooltipYAxisData(point, series, opts, config, eachSpacing) {
+  let ranges = [].concat(opts.chartData.yAxisData.ranges);
+  let spacingValid = opts.height - opts.area[0] - opts.area[2];
+  let minAxis = opts.area[0];
+  let items=[];
+  for(let i=0;i<ranges.length;i++){
+    let maxVal = ranges[i].shift();
+    let minVal = ranges[i].pop();
+    let item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;
+    item = opts.yAxis.data[i].format ? opts.yAxis.data[i].format(Number(item)) : item.toFixed(0);
+    items.push(String(item))
+  }
+  return items;
+}
+
+function calMarkLineData(points, opts) {
+  let minRange, maxRange;
+  let spacingValid = opts.height - opts.area[0] - opts.area[2];
+  for (let i = 0; i < points.length; i++) {
+    points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex:0;
+    let range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);
+    minRange = range.pop();
+    maxRange = range.shift();
+    let height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);
+    points[i].y = opts.height - Math.round(height) - opts.area[2];
+  }
+  return points;
+}
+
+function contextRotate(context, opts) {
+  if (opts.rotateLock !== true) {
+    context.translate(opts.height, 0);
+    context.rotate(90 * Math.PI / 180);
+  } else if (opts._rotate_ !== true) {
+    context.translate(opts.height, 0);
+    context.rotate(90 * Math.PI / 180);
+    opts._rotate_ = true;
+  }
+}
+
+function drawPointShape(points, color, shape, context, opts) {
+  context.beginPath();
+	if(opts.dataPointShapeType == 'hollow'){
+		context.setStrokeStyle(color);
+		context.setFillStyle(opts.background);
+		context.setLineWidth(2 * opts.pixelRatio);
+	}else{
+		context.setStrokeStyle("#ffffff");
+		context.setFillStyle(color);
+		context.setLineWidth(1 * opts.pixelRatio);
+	}
+  if (shape === 'diamond') {
+    points.forEach(function(item, index) {
+      if (item !== null) {
+        context.moveTo(item.x, item.y - 4.5);
+        context.lineTo(item.x - 4.5, item.y);
+        context.lineTo(item.x, item.y + 4.5);
+        context.lineTo(item.x + 4.5, item.y);
+        context.lineTo(item.x, item.y - 4.5);
+      }
+    });
+  } else if (shape === 'circle') {
+    points.forEach(function(item, index) {
+      if (item !== null) {
+        context.moveTo(item.x + 2.5 * opts.pixelRatio, item.y);
+        context.arc(item.x, item.y, 3 * opts.pixelRatio, 0, 2 * Math.PI, false);
+      }
+    });
+  } else if (shape === 'rect') {
+    points.forEach(function(item, index) {
+      if (item !== null) {
+        context.moveTo(item.x - 3.5, item.y - 3.5);
+        context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
+      }
+    });
+  } else if (shape === 'triangle') {
+    points.forEach(function(item, index) {
+      if (item !== null) {
+        context.moveTo(item.x, item.y - 4.5);
+        context.lineTo(item.x - 4.5, item.y + 4.5);
+        context.lineTo(item.x + 4.5, item.y + 4.5);
+        context.lineTo(item.x, item.y - 4.5);
+      }
+    });
+  }
+  context.closePath();
+  context.fill();
+  context.stroke();
+}
+
+function drawRingTitle(opts, config, context, center) {
+  var titlefontSize = opts.title.fontSize || config.titleFontSize;
+  var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;
+  var title = opts.title.name || '';
+  var subtitle = opts.subtitle.name || '';
+  var titleFontColor = opts.title.color || config.titleColor;
+  var subtitleFontColor = opts.subtitle.color || config.subtitleColor;
+  var titleHeight = title ? titlefontSize : 0;
+  var subtitleHeight = subtitle ? subtitlefontSize : 0;
+  var margin = 5;
+
+  if (subtitle) {
+    var textWidth = measureText(subtitle, subtitlefontSize);
+    var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0);
+    var startY = center.y + subtitlefontSize / 2 + (opts.subtitle.offsetY || 0);
+    if (title) {
+      startY += (titleHeight + margin) / 2;
+    }
+    context.beginPath();
+    context.setFontSize(subtitlefontSize);
+    context.setFillStyle(subtitleFontColor);
+    context.fillText(subtitle, startX, startY);
+    context.closePath();
+    context.stroke();
+  }
+  if (title) {
+    var _textWidth = measureText(title, titlefontSize);
+    var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);
+    var _startY = center.y + titlefontSize / 2 + (opts.title.offsetY || 0);
+    if (subtitle) {
+      _startY -= (subtitleHeight + margin) / 2;
+    }
+    context.beginPath();
+    context.setFontSize(titlefontSize);
+    context.setFillStyle(titleFontColor);
+    context.fillText(title, _startX, _startY);
+    context.closePath();
+    context.stroke();
+  }
+}
+
+function drawPointText(points, series, config, context) {
+  // 绘制数据文案
+  var data = series.data;
+  points.forEach(function(item, index) {
+    if (item !== null) {
+      //var formatVal = series.format ? series.format(data[index]) : data[index];
+      context.beginPath();
+      context.setFontSize(series.textSize || config.fontSize);
+      context.setFillStyle(series.textColor || '#666666');
+      var value = data[index]
+      if (typeof data[index] === 'object' && data[index] !== null) {
+				if (data[index].constructor == Array) {
+					value = data[index][1];
+				}else{
+					value = data[index].value
+				}
+      }
+      var formatVal = series.format ? series.format(value) : value;
+      context.fillText(String(formatVal), item.x - measureText(formatVal, series.textSize || config.fontSize) / 2, item.y -4);
+      context.closePath();
+      context.stroke();
+    }
+  });
+
+}
+
+function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {
+  radius -= gaugeOption.width / 2 + config.gaugeLabelTextMargin;
+
+  let totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+  let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
+  let totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;
+  let splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;
+  let nowAngle = gaugeOption.startAngle;
+  let nowNumber = gaugeOption.startNumber;
+  for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {
+    var pos = {
+      x: radius * Math.cos(nowAngle * Math.PI),
+      y: radius * Math.sin(nowAngle * Math.PI)
+    };
+    var labelText = gaugeOption.labelFormat ? gaugeOption.labelFormat(nowNumber) : nowNumber;
+    pos.x += centerPosition.x - measureText(labelText) / 2;
+    pos.y += centerPosition.y;
+    var startX = pos.x;
+    var startY = pos.y;
+    context.beginPath();
+    context.setFontSize(config.fontSize);
+    context.setFillStyle(gaugeOption.labelColor || '#666666');
+    context.fillText(labelText, startX, startY + config.fontSize / 2);
+    context.closePath();
+    context.stroke();
+
+    nowAngle += splitAngle;
+    if (nowAngle >= 2) {
+      nowAngle = nowAngle % 2;
+    }
+    nowNumber += splitNumber;
+  }
+
+}
+
+function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {
+  var radarOption = opts.extra.radar || {};
+  radius += config.radarLabelTextMargin;
+
+  angleList.forEach(function(angle, index) {
+    var pos = {
+      x: radius * Math.cos(angle),
+      y: radius * Math.sin(angle)
+    };
+    var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);
+    var startX = posRelativeCanvas.x;
+    var startY = posRelativeCanvas.y;
+    if (util.approximatelyEqual(pos.x, 0)) {
+      startX -= measureText(opts.categories[index] || '') / 2;
+    } else if (pos.x < 0) {
+      startX -= measureText(opts.categories[index] || '');
+    }
+    context.beginPath();
+    context.setFontSize(config.fontSize);
+    context.setFillStyle(radarOption.labelColor || '#666666');
+    context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);
+    context.closePath();
+    context.stroke();
+  });
+
+}
+
+function drawPieText(series, opts, config, context, radius, center) {
+  var lineRadius = config.pieChartLinePadding;
+  var textObjectCollection = [];
+  var lastTextObject = null;
+
+  var seriesConvert = series.map(function(item) {
+    var text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_.toFixed(4) * 100) +'%';
+    if(item._rose_proportion_) item._proportion_=item._rose_proportion_;
+    var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);
+    var color = item.color;
+    var radius = item._radius_;
+    return {
+      arc: arc,
+      text: text,
+      color: color,
+      radius: radius,
+      textColor: item.textColor,
+      textSize: item.textSize,
+    };
+  });
+  for (let i = 0; i < seriesConvert.length; i++) {
+    let item = seriesConvert[i];
+    // line end
+    let orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);
+    let orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);
+
+    // line start
+    let orginX2 = Math.cos(item.arc) * item.radius;
+    let orginY2 = Math.sin(item.arc) * item.radius;
+
+    // text start
+    let orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;
+    let orginY3 = orginY1;
+    let textWidth = measureText(item.text,item.textSize||config.fontSize);
+    let startY = orginY3;
+
+    if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {
+        x: orginX3
+      })) {
+      if (orginX3 > 0) {
+        startY = Math.min(orginY3, lastTextObject.start.y);
+      } else if (orginX1 < 0) {
+        startY = Math.max(orginY3, lastTextObject.start.y);
+      } else {
+        if (orginY3 > 0) {
+          startY = Math.max(orginY3, lastTextObject.start.y);
+        } else {
+          startY = Math.min(orginY3, lastTextObject.start.y);
+        }
+      }
+    }
+    if (orginX3 < 0) {
+      orginX3 -= textWidth;
+    }
+
+    let textObject = {
+      lineStart: {
+        x: orginX2,
+        y: orginY2
+      },
+      lineEnd: {
+        x: orginX1,
+        y: orginY1
+      },
+      start: {
+        x: orginX3,
+        y: startY
+      },
+      width: textWidth,
+      height: config.fontSize,
+      text: item.text,
+      color: item.color,
+      textColor: item.textColor,
+      textSize: item.textSize
+    };
+    lastTextObject = avoidCollision(textObject, lastTextObject);
+    textObjectCollection.push(lastTextObject);
+  }
+
+  for (let i = 0; i < textObjectCollection.length; i++) {
+    let item = textObjectCollection[i];
+    let lineStartPoistion = convertCoordinateOrigin(item.lineStart.x, item.lineStart.y, center);
+    let lineEndPoistion = convertCoordinateOrigin(item.lineEnd.x, item.lineEnd.y, center);
+    let textPosition = convertCoordinateOrigin(item.start.x, item.start.y, center);
+    context.setLineWidth(1 * opts.pixelRatio);
+    context.setFontSize(config.fontSize);
+    context.beginPath();
+    context.setStrokeStyle(item.color);
+    context.setFillStyle(item.color);
+    context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
+    let curveStartX = item.start.x < 0 ? textPosition.x + item.width : textPosition.x;
+    let textStartX = item.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;
+    context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);
+    context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
+    context.stroke();
+    context.closePath();
+    context.beginPath();
+    context.moveTo(textPosition.x + item.width, textPosition.y);
+    context.arc(curveStartX, textPosition.y, 2, 0, 2 * Math.PI);
+    context.closePath();
+    context.fill();
+    context.beginPath();
+    context.setFontSize(item.textSize || config.fontSize);
+    context.setFillStyle(item.textColor || '#666666');
+    context.fillText(item.text, textStartX, textPosition.y + 3);
+    context.closePath();
+    context.stroke();
+    context.closePath();
+  }
+}
+
+function drawToolTipSplitLine(offsetX, opts, config, context) {
+  var toolTipOption = opts.extra.tooltip || {};
+  toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;
+  toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;
+  var startY = opts.area[0];
+  var endY = opts.height - opts.area[2];
+
+  if (toolTipOption.gridType == 'dash') {
+    context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
+  }
+  context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
+  context.setLineWidth(1 * opts.pixelRatio);
+  context.beginPath();
+  context.moveTo(offsetX, startY);
+  context.lineTo(offsetX, endY);
+  context.stroke();
+  context.setLineDash([]);
+
+  if (toolTipOption.xAxisLabel) {
+    let labelText = opts.categories[opts.tooltip.index];
+    context.setFontSize(config.fontSize);
+    let textWidth = measureText(labelText, config.fontSize);
+
+    let textX = offsetX - 0.5 * textWidth;
+    let textY = endY;
+    context.beginPath();
+    context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
+    context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
+    context.setLineWidth(1 * opts.pixelRatio);
+    context.rect(textX - config.toolTipPadding, textY, textWidth + 2 * config.toolTipPadding, config.fontSize + 2 * config.toolTipPadding);
+    context.closePath();
+    context.stroke();
+    context.fill();
+
+    context.beginPath();
+    context.setFontSize(config.fontSize);
+    context.setFillStyle(toolTipOption.labelFontColor || config.fontColor);
+    context.fillText(String(labelText), textX, textY + config.toolTipPadding + config.fontSize);
+    context.closePath();
+    context.stroke();
+  }
+}
+
+function drawMarkLine(opts, config, context) {
+  let markLineOption = assign({}, {
+    type: 'solid',
+    dashLength: 4,
+    data: []
+  }, opts.extra.markLine);
+  let startX = opts.area[3];
+  let endX = opts.width - opts.area[1];
+  let points = calMarkLineData(markLineOption.data, opts);
+
+  for (let i = 0; i < points.length; i++) {
+    let item = assign({}, {
+      lineColor: '#DE4A42',
+      showLabel: false,
+      labelFontColor: '#666666',
+      labelBgColor: '#DFE8FF',
+      labelBgOpacity: 0.8,
+      yAxisIndex: 0
+    }, points[i]);
+
+    if (markLineOption.type == 'dash') {
+      context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);
+    }
+    context.setStrokeStyle(item.lineColor);
+    context.setLineWidth(1 * opts.pixelRatio);
+    context.beginPath();
+    context.moveTo(startX, item.y);
+    context.lineTo(endX, item.y);
+    context.stroke();
+    context.setLineDash([]);
+    if (item.showLabel) {
+      let labelText = opts.yAxis.format ? opts.yAxis.format(Number(item.value)) : item.value;
+      context.setFontSize(config.fontSize);
+      let textWidth = measureText(labelText, config.fontSize);
+      let bgStartX = opts.padding[3] + config.yAxisTitleWidth - config.toolTipPadding;
+      let bgEndX = Math.max(opts.area[3], textWidth + config.toolTipPadding * 2);
+      let bgWidth = bgEndX - bgStartX;
+
+      let textX = bgStartX + (bgWidth - textWidth) / 2;
+      let textY = item.y;
+      context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));
+      context.setStrokeStyle(item.labelBgColor);
+      context.setLineWidth(1 * opts.pixelRatio);
+      context.beginPath();
+      context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);
+      context.closePath();
+      context.stroke();
+      context.fill();
+
+      context.beginPath();
+      context.setFontSize(config.fontSize);
+      context.setFillStyle(item.labelFontColor);
+      context.fillText(String(labelText), textX, textY + 0.5 * config.fontSize);
+      context.stroke();
+    }
+  }
+}
+
+function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {
+  var toolTipOption = assign({}, {
+    gridType: 'solid',
+    dashLength: 4
+  }, opts.extra.tooltip);
+
+  var startX = opts.area[3];
+  var endX = opts.width - opts.area[1];
+
+  if (toolTipOption.gridType == 'dash') {
+    context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
+  }
+  context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
+  context.setLineWidth(1 * opts.pixelRatio);
+  context.beginPath();
+  context.moveTo(startX, opts.tooltip.offset.y);
+  context.lineTo(endX, opts.tooltip.offset.y);
+  context.stroke();
+  context.setLineDash([]);
+
+  if (toolTipOption.yAxisLabel) {
+    let labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);
+    let widthArr = opts.chartData.yAxisData.yAxisWidth;
+    let tStartLeft=opts.area[3];
+    let tStartRight=opts.width-opts.area[1];
+    for(let i=0;i<labelText.length;i++){
+      context.setFontSize(config.fontSize);
+      let textWidth = measureText(labelText[i], config.fontSize);
+      let bgStartX,bgEndX,bgWidth;
+      if(widthArr[i].position == 'left'){
+        bgStartX = tStartLeft - widthArr[i].width;
+        bgEndX = Math.max(bgStartX, bgStartX + textWidth + config.toolTipPadding * 2);
+      }else{
+        bgStartX = tStartRight;
+        bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + config.toolTipPadding * 2);
+      }
+      bgWidth = bgEndX - bgStartX;
+      
+      let textX = bgStartX + (bgWidth - textWidth) / 2;
+      let textY = opts.tooltip.offset.y;
+      context.beginPath();
+      context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
+      context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
+      context.setLineWidth(1 * opts.pixelRatio);
+      context.rect(bgStartX, textY - 0.5 * config.fontSize - config.toolTipPadding, bgWidth, config.fontSize + 2 * config.toolTipPadding);
+      context.closePath();
+      context.stroke();
+      context.fill();
+      
+      context.beginPath();
+      context.setFontSize(config.fontSize);
+      context.setFillStyle(toolTipOption.labelFontColor || config.fontColor);
+      context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);
+      context.closePath();
+      context.stroke();
+      if(widthArr[i].position == 'left'){
+        tStartLeft -=(widthArr[i].width + opts.yAxis.padding);
+      }else{
+        tStartRight +=widthArr[i].width+ opts.yAxis.padding;
+      }
+    }
+  }
+}
+
+function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {
+  var toolTipOption = assign({}, {
+    activeBgColor: '#000000',
+    activeBgOpacity: 0.08
+  }, opts.extra.tooltip);
+  var startY = opts.area[0];
+  var endY = opts.height - opts.area[2];
+  context.beginPath();
+  context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));
+  context.rect(offsetX - eachSpacing / 2, startY, eachSpacing, endY - startY);
+  context.closePath();
+  context.fill();
+}
+
+function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {
+  var toolTipOption = assign({}, {
+		showBox:true,
+    bgColor: '#000000',
+    bgOpacity: 0.7,
+    fontColor: '#FFFFFF'
+  }, opts.extra.tooltip);
+  var legendWidth = 4 * opts.pixelRatio;
+  var legendMarginRight = 5 * opts.pixelRatio;
+  var arrowWidth = 8 * opts.pixelRatio;
+  var isOverRightBorder = false;
+  if (opts.type == 'line' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {
+    drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);
+  }
+
+  offset = assign({
+    x: 0,
+    y: 0
+  }, offset);
+  offset.y -= 8 * opts.pixelRatio;
+  var textWidth = textList.map(function(item) {
+    return measureText(item.text, config.fontSize);
+  });
+  var toolTipWidth = legendWidth + legendMarginRight + 4 * config.toolTipPadding + Math.max.apply(null, textWidth);
+  var toolTipHeight = 2 * config.toolTipPadding + textList.length * config.toolTipLineHeight;
+
+	if(toolTipOption.showBox == false){ return }
+  // if beyond the right border
+  if (offset.x - Math.abs(opts._scrollDistance_) + arrowWidth + toolTipWidth > opts.width) {
+    isOverRightBorder = true;
+  }
+  if (toolTipHeight + offset.y > opts.height) {
+    offset.y = opts.height - toolTipHeight;
+  }
+  // draw background rect
+  context.beginPath();
+  context.setFillStyle(hexToRgb(toolTipOption.bgColor || config.toolTipBackground, toolTipOption.bgOpacity || config.toolTipOpacity));
+  if (isOverRightBorder) {
+    context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio);
+    context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio);
+    context.lineTo(offset.x - arrowWidth, offset.y);
+    context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y);
+    context.lineTo(offset.x - arrowWidth - Math.round(toolTipWidth), offset.y + toolTipHeight);
+    context.lineTo(offset.x - arrowWidth, offset.y + toolTipHeight);
+    context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio);
+    context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio);
+  } else {
+    context.moveTo(offset.x, offset.y + 10 * opts.pixelRatio);
+    context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio - 5 * opts.pixelRatio);
+    context.lineTo(offset.x + arrowWidth, offset.y);
+    context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y);
+    context.lineTo(offset.x + arrowWidth + Math.round(toolTipWidth), offset.y + toolTipHeight);
+    context.lineTo(offset.x + arrowWidth, offset.y + toolTipHeight);
+    context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pixelRatio + 5 * opts.pixelRatio);
+    context.lineTo(offset.x, offset.y + 10 * opts.pixelRatio);
+  }
+
+  context.closePath();
+  context.fill();
+
+  // draw legend
+  textList.forEach(function(item, index) {
+    if (item.color !== null) {
+      context.beginPath();
+      context.setFillStyle(item.color);
+      var startX = offset.x + arrowWidth + 2 * config.toolTipPadding;
+      var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index +
+        config.toolTipPadding + 1;
+      if (isOverRightBorder) {
+        startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding;
+      }
+      context.fillRect(startX, startY, legendWidth, config.fontSize);
+      context.closePath();
+    }
+  });
+
+  // draw text list
+
+  textList.forEach(function(item, index) {
+    var startX = offset.x + arrowWidth + 2 * config.toolTipPadding + legendWidth + legendMarginRight;
+    if (isOverRightBorder) {
+      startX = offset.x - toolTipWidth - arrowWidth + 2 * config.toolTipPadding + +legendWidth + legendMarginRight;
+    }
+    var startY = offset.y + (config.toolTipLineHeight - config.fontSize) / 2 + config.toolTipLineHeight * index +
+      config.toolTipPadding;
+    context.beginPath();
+    context.setFontSize(config.fontSize);
+    context.setFillStyle(toolTipOption.fontColor);
+    context.fillText(item.text, startX, startY + config.fontSize);
+    context.closePath();
+    context.stroke();
+  });
+}
+
+function drawYAxisTitle(title, opts, config, context) {
+  var startX = config.xAxisHeight + (opts.height - config.xAxisHeight - measureText(title)) / 2;
+  context.save();
+  context.beginPath();
+  context.setFontSize(config.fontSize);
+  context.setFillStyle(opts.yAxis.titleFontColor || '#333333');
+  context.translate(0, opts.height);
+  context.rotate(-90 * Math.PI / 180);
+  context.fillText(title, startX, opts.padding[3] + 0.5 * config.fontSize);
+  context.closePath();
+  context.stroke();
+  context.restore();
+}
+
+function drawColumnDataPoints(series, opts, config, context) {
+  let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  let xAxisData = opts.chartData.xAxisData,
+    xAxisPoints = xAxisData.xAxisPoints,
+    eachSpacing = xAxisData.eachSpacing;
+  let columnOption = assign({}, {
+    type: 'group',
+    width: eachSpacing / 2,
+    meter: {
+      border: 4,
+      fillColor: '#FFFFFF'
+    }
+  }, opts.extra.column);
+  
+  let calPoints = [];
+  context.save();
+	
+	let leftNum=-2;
+	let rightNum=xAxisPoints.length+2;
+	
+  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+    context.translate(opts._scrollDistance_, 0);
+		leftNum=Math.floor(-opts._scrollDistance_/eachSpacing)-2;
+		rightNum=leftNum+opts.xAxis.itemCount+4;
+  }
+  if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+    drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);
+  }
+	
+  series.forEach(function(eachSeries, seriesIndex) {
+    let ranges,minRange,maxRange;
+    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+    minRange = ranges.pop();
+    maxRange = ranges.shift();
+    
+    var data = eachSeries.data;
+    switch (columnOption.type) {
+      case 'group':
+        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+        var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+        calPoints.push(tooltipPoints);
+        points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
+				for(let i=0;i<points.length;i++){
+					let item=points[i];
+          if (item !== null && i>leftNum && i<rightNum) {
+            context.beginPath();
+            context.setStrokeStyle(item.color || eachSeries.color);
+            context.setLineWidth(1)
+            context.setFillStyle(item.color || eachSeries.color);
+            var startX = item.x - item.width / 2;
+            var height = opts.height - item.y - opts.area[2];
+            context.moveTo(startX, item.y);
+            context.lineTo(startX+item.width-2,item.y);
+            context.lineTo(startX+item.width-2,opts.height - opts.area[2]);
+            context.lineTo(startX,opts.height - opts.area[2]);
+            context.lineTo(startX,item.y);
+            context.closePath();
+            context.stroke();
+            context.fill();
+          }
+        };
+        break;
+      case 'stack':
+        // 绘制堆叠数据图
+        var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+        calPoints.push(points);
+        points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);
+
+        for(let i=0;i<points.length;i++){
+        	let item=points[i];
+          if (item !== null && i>leftNum && i<rightNum) {
+            context.beginPath();
+            context.setFillStyle(item.color || eachSeries.color);
+            var startX = item.x - item.width / 2 + 1;
+            var height = opts.height - item.y - opts.area[2];
+            var height0 = opts.height - item.y0 - opts.area[2];
+            if (seriesIndex > 0) {
+              height -= height0;
+            }
+            context.moveTo(startX, item.y);
+            context.fillRect(startX, item.y, item.width - 2, height);
+            context.closePath();
+            context.fill();
+          }
+        };
+        break;
+      case 'meter':
+        // 绘制温度计数据图
+        var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+        calPoints.push(points);
+        points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meter.border);
+        if (seriesIndex == 0) {
+          for(let i=0;i<points.length;i++){
+          	let item=points[i];
+            if (item !== null && i>leftNum && i<rightNum) {
+              //画背景颜色
+              context.beginPath();
+              context.setFillStyle(columnOption.meter.fillColor);
+              var startX = item.x - item.width / 2;
+              var height = opts.height - item.y - opts.area[2];
+              context.moveTo(startX, item.y);
+              context.fillRect(startX, item.y, item.width, height);
+              context.closePath();
+              context.fill();
+              //画边框线
+              if (columnOption.meter.border > 0) {
+                context.beginPath();
+                context.setStrokeStyle(eachSeries.color);
+                context.setLineWidth(columnOption.meter.border * opts.pixelRatio);
+                context.moveTo(startX + columnOption.meter.border * 0.5, item.y + height);
+                context.lineTo(startX + columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5);
+                context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + columnOption.meter.border * 0.5);
+                context.lineTo(startX + item.width - columnOption.meter.border * 0.5, item.y + height);
+                context.stroke();
+              }
+            }
+          };
+        } else {
+          for(let i=0;i<points.length;i++){
+          	let item=points[i];
+            if (item !== null && i>leftNum && i<rightNum) {
+              context.beginPath();
+              context.setFillStyle(item.color || eachSeries.color);
+              var startX = item.x - item.width / 2;
+              var height = opts.height - item.y - opts.area[2];
+              context.moveTo(startX, item.y);
+              context.fillRect(startX, item.y, item.width, height);
+              context.closePath();
+              context.fill();
+            }
+          };
+        }
+        break;
+    }
+  });
+
+  if (opts.dataLabel !== false && process === 1) {
+    series.forEach(function(eachSeries, seriesIndex) {
+      let ranges,minRange,maxRange;
+        ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+        minRange = ranges.pop();
+        maxRange = ranges.shift();
+      var data = eachSeries.data;
+      switch (columnOption.type) {
+        case 'group':
+          var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+          points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
+          drawPointText(points, eachSeries, config, context);
+          break;
+        case 'stack':
+          var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
+          drawPointText(points, eachSeries, config, context);
+          break;
+        case 'meter':
+          var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+          drawPointText(points, eachSeries, config, context);
+          break;
+      }
+    });
+  }
+
+  context.restore();
+
+  return {
+    xAxisPoints: xAxisPoints,
+    calPoints: calPoints,
+    eachSpacing: eachSpacing
+  };
+}
+
+function drawCandleDataPoints(series, seriesMA, opts, config, context) {
+  var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+  var candleOption = assign({}, {
+    color: {},
+    average: {}
+  }, opts.extra.candle);
+  candleOption.color = assign({}, {
+    upLine: '#f04864',
+    upFill: '#f04864',
+    downLine: '#2fc25b',
+    downFill: '#2fc25b'
+  }, candleOption.color);
+  candleOption.average = assign({}, {
+    show: false,
+    name: [],
+    day: [],
+    color: config.colors
+  }, candleOption.average);
+  opts.extra.candle = candleOption;
+
+  let xAxisData = opts.chartData.xAxisData,
+    xAxisPoints = xAxisData.xAxisPoints,
+    eachSpacing = xAxisData.eachSpacing;
+
+  let calPoints = [];
+
+  context.save();
+	
+	let leftNum=-2;
+	let rightNum=xAxisPoints.length+2;
+	let leftSpace=0;
+	let rightSpace=opts.width+eachSpacing;
+	
+  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+    context.translate(opts._scrollDistance_, 0);
+		leftNum=Math.floor(-opts._scrollDistance_/eachSpacing)-2;
+		rightNum=leftNum+opts.xAxis.itemCount+4;
+		leftSpace=-opts._scrollDistance_-eachSpacing+opts.area[3];
+		rightSpace=leftSpace+(opts.xAxis.itemCount+4)*eachSpacing;
+  }
+
+  //画均线
+  if (candleOption.average.show || seriesMA) { //Merge pull request !12 from 邱贵翔
+    seriesMA.forEach(function(eachSeries, seriesIndex) {
+      let ranges,minRange,maxRange;
+      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+      minRange = ranges.pop();
+      maxRange = ranges.shift();
+
+      var data = eachSeries.data;
+      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+      var splitPointList = splitPoints(points);
+			
+			for(let i=0;i<splitPointList.length;i++){
+				let points=splitPointList[i];
+				context.beginPath();
+				context.setStrokeStyle(eachSeries.color);
+				context.setLineWidth(1);
+				if (points.length === 1) {
+					context.moveTo(points[0].x, points[0].y);
+					context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+				} else {
+					context.moveTo(points[0].x, points[0].y);
+					let startPoint=0;
+					for(let j=0;j<points.length;j++){
+						let item=points[j];
+						if(startPoint==0 && item.x > leftSpace){
+							context.moveTo(item.x, item.y);
+							startPoint=1;
+						}
+						if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+							var ctrlPoint = createCurveControlPoints(points, j - 1);
+							context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x, item.y);
+						}
+					}
+					context.moveTo(points[0].x, points[0].y);
+				}
+				context.closePath();
+				context.stroke();
+      }
+    });
+  }
+  //画K线
+  series.forEach(function(eachSeries, seriesIndex) {
+    let ranges,minRange,maxRange;
+    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+    minRange = ranges.pop();
+    maxRange = ranges.shift();
+    var data = eachSeries.data;
+    var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+    calPoints.push(points);
+    var splitPointList = splitPoints(points);
+
+		for(let i=0;i<splitPointList[0].length;i++){
+			if(i>leftNum && i<rightNum){
+				let item=splitPointList[0][i];
+				context.beginPath();
+				//如果上涨
+				if (data[i][1] - data[i][0] > 0) {
+					context.setStrokeStyle(candleOption.color.upLine);
+					context.setFillStyle(candleOption.color.upFill);
+					context.setLineWidth(1 * opts.pixelRatio);
+					context.moveTo(item[3].x, item[3].y); //顶点
+					context.lineTo(item[1].x, item[1].y); //收盘中间点
+					context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
+					context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
+					context.lineTo(item[0].x, item[0].y); //开盘中间点
+					context.lineTo(item[2].x, item[2].y); //底点
+					context.lineTo(item[0].x, item[0].y); //开盘中间点
+					context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
+					context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
+					context.lineTo(item[1].x, item[1].y); //收盘中间点
+					context.moveTo(item[3].x, item[3].y); //顶点
+				} else {
+					context.setStrokeStyle(candleOption.color.downLine);
+					context.setFillStyle(candleOption.color.downFill);
+					context.setLineWidth(1 * opts.pixelRatio);
+					context.moveTo(item[3].x, item[3].y); //顶点
+					context.lineTo(item[0].x, item[0].y); //开盘中间点
+					context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
+					context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
+					context.lineTo(item[1].x, item[1].y); //收盘中间点
+					context.lineTo(item[2].x, item[2].y); //底点
+					context.lineTo(item[1].x, item[1].y); //收盘中间点
+					context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
+					context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
+					context.lineTo(item[0].x, item[0].y); //开盘中间点
+					context.moveTo(item[3].x, item[3].y); //顶点
+				}
+				context.closePath();
+				context.fill();
+				context.stroke();
+			}
+    }
+  });
+
+  context.restore();
+
+  return {
+    xAxisPoints: xAxisPoints,
+    calPoints: calPoints,
+    eachSpacing: eachSpacing
+  };
+}
+
+function drawAreaDataPoints(series, opts, config, context) {
+  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  var areaOption = assign({},{
+    type: 'straight',
+    opacity: 0.2,
+    addLine: false,
+    width: 2,
+		gradient:false
+  },opts.extra.area);
+
+  let xAxisData = opts.chartData.xAxisData,
+    xAxisPoints = xAxisData.xAxisPoints,
+    eachSpacing = xAxisData.eachSpacing;
+
+  let endY = opts.height - opts.area[2];
+  let calPoints = [];
+
+  context.save();
+	let leftSpace=0;
+	let rightSpace=opts.width+eachSpacing;
+  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+    context.translate(opts._scrollDistance_, 0);
+		leftSpace=-opts._scrollDistance_-eachSpacing+opts.area[3];
+		rightSpace=leftSpace+(opts.xAxis.itemCount+4)*eachSpacing;
+  }
+
+  series.forEach(function(eachSeries, seriesIndex) {
+    let ranges,minRange,maxRange;
+    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+    minRange = ranges.pop();
+    maxRange = ranges.shift();
+    let data = eachSeries.data;
+    let points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+    calPoints.push(points);
+
+    let splitPointList = splitPoints(points);
+    for (let i = 0; i < splitPointList.length; i++) {
+      let points = splitPointList[i];
+      // 绘制区域数
+      context.beginPath();
+      context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));
+			if(areaOption.gradient){
+				let gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height-opts.area[2]);
+				gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));
+				gradient.addColorStop('1.0',hexToRgb("#FFFFFF", 0.1));
+				context.setFillStyle(gradient);
+			}else{
+				context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));
+			}
+      context.setLineWidth(areaOption.width * opts.pixelRatio);
+      if (points.length > 1) {
+        let firstPoint = points[0];
+        let lastPoint = points[points.length - 1];
+        context.moveTo(firstPoint.x, firstPoint.y);
+				let startPoint=0;
+        if (areaOption.type === 'curve') {
+					for(let j=0;j<points.length;j++){
+						let item=points[j];
+						if(startPoint==0 && item.x > leftSpace){
+							context.moveTo(item.x, item.y);
+							startPoint=1;
+						}
+            if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+              let ctrlPoint = createCurveControlPoints(points, j - 1);
+              context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x, item.y);
+            }
+          };
+        } else {
+					for(let j=0;j<points.length;j++){
+						let item=points[j];
+						if(startPoint==0 && item.x > leftSpace){
+							context.moveTo(item.x, item.y);
+							startPoint=1;
+						}
+					  if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+              context.lineTo(item.x, item.y);
+            }
+          };
+        }
+
+        context.lineTo(lastPoint.x, endY);
+        context.lineTo(firstPoint.x, endY);
+        context.lineTo(firstPoint.x, firstPoint.y);
+      } else {
+        let item = points[0];
+        context.moveTo(item.x - eachSpacing / 2, item.y);
+        context.lineTo(item.x + eachSpacing / 2, item.y);
+        context.lineTo(item.x + eachSpacing / 2, endY);
+        context.lineTo(item.x - eachSpacing / 2, endY);
+        context.moveTo(item.x - eachSpacing / 2, item.y);
+      }
+      context.closePath();
+      context.fill();
+
+      //画连线
+      if (areaOption.addLine) {
+				if (eachSeries.lineType == 'dash') {
+					let dashLength = eachSeries.dashLength?eachSeries.dashLength:8;
+					dashLength *= opts.pixelRatio;
+				  context.setLineDash([dashLength, dashLength]);
+				}
+        context.beginPath();
+        context.setStrokeStyle(eachSeries.color);
+        context.setLineWidth(areaOption.width * opts.pixelRatio);
+        if (points.length === 1) {
+          context.moveTo(points[0].x, points[0].y);
+          context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+        } else {
+          context.moveTo(points[0].x, points[0].y);
+					let startPoint=0;
+          if (areaOption.type === 'curve') {
+            for(let j=0;j<points.length;j++){
+            	let item=points[j];
+            	if(startPoint==0 && item.x > leftSpace){
+            		context.moveTo(item.x, item.y);
+            		startPoint=1;
+            	}
+              if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+                let ctrlPoint = createCurveControlPoints(points, j - 1);
+                context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x,item.y);
+              }
+            };
+          } else {
+            for(let j=0;j<points.length;j++){
+            	let item=points[j];
+            	if(startPoint==0 && item.x > leftSpace){
+            		context.moveTo(item.x, item.y);
+            		startPoint=1;
+            	}
+              if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+                context.lineTo(item.x, item.y);
+              }
+            };
+          }
+          context.moveTo(points[0].x, points[0].y);
+        }
+        context.stroke();
+				context.setLineDash([]);
+      }
+    }
+
+    //画点
+    if (opts.dataPointShape !== false) {
+      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
+    }
+
+  });
+
+  if (opts.dataLabel !== false && process === 1) {
+    series.forEach(function(eachSeries, seriesIndex) {
+      let ranges,minRange,maxRange;
+      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+      minRange = ranges.pop();
+      maxRange = ranges.shift();
+      var data = eachSeries.data;
+      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+      drawPointText(points, eachSeries, config, context);
+    });
+  }
+
+  context.restore();
+
+  return {
+    xAxisPoints: xAxisPoints,
+    calPoints: calPoints,
+    eachSpacing: eachSpacing
+  };
+}
+
+function drawLineDataPoints(series, opts, config, context) {
+  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  var lineOption = assign({},{
+		type: 'straight',
+		width: 2
+	},opts.extra.line);
+	lineOption.width *=opts.pixelRatio;
+	
+  let xAxisData = opts.chartData.xAxisData,
+    xAxisPoints = xAxisData.xAxisPoints,
+    eachSpacing = xAxisData.eachSpacing;
+  var calPoints = [];
+
+  context.save();
+	let leftSpace=0;
+	let rightSpace=opts.width+eachSpacing;
+  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+    context.translate(opts._scrollDistance_, 0);
+		leftSpace=-opts._scrollDistance_-eachSpacing+opts.area[3];
+		rightSpace=leftSpace+(opts.xAxis.itemCount+4)*eachSpacing;
+  }
+
+  series.forEach(function(eachSeries, seriesIndex) {
+    let ranges,minRange,maxRange;
+    ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+    minRange = ranges.pop();
+    maxRange = ranges.shift();
+    var data = eachSeries.data;
+    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+    calPoints.push(points);
+    var splitPointList = splitPoints(points);
+		
+		if (eachSeries.lineType == 'dash') {
+			let dashLength = eachSeries.dashLength?eachSeries.dashLength:8;
+			dashLength *= opts.pixelRatio;
+		  context.setLineDash([dashLength, dashLength]);
+		}
+		context.beginPath();
+		context.setStrokeStyle(eachSeries.color);
+		context.setLineWidth(lineOption.width);
+		
+    splitPointList.forEach(function(points, index) {
+			
+      if (points.length === 1) {
+        context.moveTo(points[0].x, points[0].y);
+        context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+      } else {
+        context.moveTo(points[0].x, points[0].y);
+				let startPoint=0;
+        if (lineOption.type === 'curve') {
+          for(let j=0;j<points.length;j++){
+          	let item=points[j];
+          	if(startPoint==0 && item.x > leftSpace){
+          		context.moveTo(item.x, item.y);
+          		startPoint=1;
+          	}
+            if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+              var ctrlPoint = createCurveControlPoints(points, j - 1);
+              context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x, item.y);
+            }
+          };
+        } 
+				if (lineOption.type === 'straight') {
+          for(let j=0;j<points.length;j++){
+          	let item=points[j];
+          	if(startPoint==0 && item.x > leftSpace){
+          		context.moveTo(item.x, item.y);
+          		startPoint=1;
+          	}
+            if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+              context.lineTo(item.x, item.y);
+            }
+          };
+        }
+				if (lineOption.type === 'step') {
+				  for(let j=0;j<points.length;j++){
+				  	let item=points[j];
+				  	if(startPoint==0 && item.x > leftSpace){
+				  		context.moveTo(item.x, item.y);
+				  		startPoint=1;
+				  	}
+				    if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+							context.lineTo(item.x, points[j-1].y);
+				      context.lineTo(item.x, item.y);
+				    }
+				  };
+				}
+        context.moveTo(points[0].x, points[0].y);
+      }
+      
+    });
+		
+		context.stroke();
+		context.setLineDash([]);
+		
+    if (opts.dataPointShape !== false) {
+      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
+    }
+  });
+
+  if (opts.dataLabel !== false && process === 1) {
+    series.forEach(function(eachSeries, seriesIndex) {
+      let ranges,minRange,maxRange;
+      ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+      minRange = ranges.pop();
+      maxRange = ranges.shift();
+      var data = eachSeries.data;
+      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+      drawPointText(points, eachSeries, config, context);
+    });
+  }
+
+  context.restore();
+
+  return {
+    xAxisPoints: xAxisPoints,
+    calPoints: calPoints,
+    eachSpacing: eachSpacing
+  };
+}
+
+function drawMixDataPoints(series, opts, config, context) {
+  let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  
+  let xAxisData = opts.chartData.xAxisData,
+    xAxisPoints = xAxisData.xAxisPoints,
+    eachSpacing = xAxisData.eachSpacing;
+
+  let endY = opts.height - opts.area[2];
+  let calPoints = [];
+
+  var columnIndex = 0;
+  var columnLength = 0;
+  series.forEach(function(eachSeries, seriesIndex) {
+    if (eachSeries.type == 'column') {
+      columnLength += 1;
+    }
+  });
+  context.save();
+	let leftNum=-2;
+	let rightNum=xAxisPoints.length+2;
+	let leftSpace=0;
+	let rightSpace=opts.width+eachSpacing;
+  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+    context.translate(opts._scrollDistance_, 0);
+		leftNum=Math.floor(-opts._scrollDistance_/eachSpacing)-2;
+		rightNum=leftNum+opts.xAxis.itemCount+4;
+		leftSpace=-opts._scrollDistance_-eachSpacing+opts.area[3];
+		rightSpace=leftSpace+(opts.xAxis.itemCount+4)*eachSpacing;
+  }
+
+  series.forEach(function(eachSeries, seriesIndex) {
+    let ranges,minRange,maxRange;
+    
+		ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+		minRange = ranges.pop();
+		maxRange = ranges.shift();
+
+    var data = eachSeries.data;
+    var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+    calPoints.push(points);
+
+    // 绘制柱状数据图
+    if (eachSeries.type == 'column') {
+      points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
+      for(let i=0;i<points.length;i++){
+      	let item=points[i];
+        if (item !== null && i>leftNum && i<rightNum) {
+          context.beginPath();
+          context.setStrokeStyle(item.color || eachSeries.color);
+          context.setLineWidth(1)
+          context.setFillStyle(item.color || eachSeries.color);
+          var startX = item.x - item.width / 2;
+          var height = opts.height - item.y - opts.area[2];
+          context.moveTo(startX, item.y);
+          context.moveTo(startX, item.y);
+          context.lineTo(startX+item.width-2,item.y);
+          context.lineTo(startX+item.width-2,opts.height - opts.area[2]);
+          context.lineTo(startX,opts.height - opts.area[2]);
+          context.lineTo(startX,item.y);
+          context.closePath();
+          context.stroke();
+          context.fill();
+          context.closePath();
+          context.fill();
+        }
+      }
+      columnIndex += 1;
+    }
+
+    //绘制区域图数据
+
+    if (eachSeries.type == 'area') {
+      let splitPointList = splitPoints(points);
+      for (let i = 0; i < splitPointList.length; i++) {
+        let points = splitPointList[i];
+        // 绘制区域数据
+        context.beginPath();
+        context.setStrokeStyle(eachSeries.color);
+        context.setFillStyle(hexToRgb(eachSeries.color, 0.2));
+        context.setLineWidth(2 * opts.pixelRatio);
+        if (points.length > 1) {
+          var firstPoint = points[0];
+          let lastPoint = points[points.length - 1];
+          context.moveTo(firstPoint.x, firstPoint.y);
+					let startPoint=0;
+          if (eachSeries.style === 'curve') {
+            for(let j=0;j<points.length;j++){
+            	let item=points[j];
+            	if(startPoint==0 && item.x > leftSpace){
+            		context.moveTo(item.x, item.y);
+            		startPoint=1;
+            	}
+              if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+                var ctrlPoint = createCurveControlPoints(points, j - 1);
+                context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
+              }
+            };
+          } else {
+            for(let j=0;j<points.length;j++){
+            	let item=points[j];
+            	if(startPoint==0 && item.x > leftSpace){
+            		context.moveTo(item.x, item.y);
+            		startPoint=1;
+            	}
+              if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+                context.lineTo(item.x, item.y);
+              }
+            };
+          }
+          context.lineTo(lastPoint.x, endY);
+          context.lineTo(firstPoint.x, endY);
+          context.lineTo(firstPoint.x, firstPoint.y);
+        } else {
+          let item = points[0];
+          context.moveTo(item.x - eachSpacing / 2, item.y);
+          context.lineTo(item.x + eachSpacing / 2, item.y);
+          context.lineTo(item.x + eachSpacing / 2, endY);
+          context.lineTo(item.x - eachSpacing / 2, endY);
+          context.moveTo(item.x - eachSpacing / 2, item.y);
+        }
+        context.closePath();
+        context.fill();
+      }
+    }
+
+    // 绘制折线数据图
+    if (eachSeries.type == 'line') {
+      var splitPointList = splitPoints(points);
+      splitPointList.forEach(function(points, index) {
+				if (eachSeries.lineType == 'dash') {
+					let dashLength = eachSeries.dashLength?eachSeries.dashLength:8;
+					dashLength *= opts.pixelRatio;
+				  context.setLineDash([dashLength, dashLength]);
+				}
+        context.beginPath();
+        context.setStrokeStyle(eachSeries.color);
+        context.setLineWidth(2 * opts.pixelRatio);
+        if (points.length === 1) {
+          context.moveTo(points[0].x, points[0].y);
+          context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
+        } else {
+          context.moveTo(points[0].x, points[0].y);
+					let startPoint=0;
+          if (eachSeries.style == 'curve') {
+            for(let j=0;j<points.length;j++){
+            	let item=points[j];
+            	if(startPoint==0 && item.x > leftSpace){
+            		context.moveTo(item.x, item.y);
+            		startPoint=1;
+            	}
+              if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+                var ctrlPoint = createCurveControlPoints(points, j - 1);
+                context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y,item.x,item.y);
+              }
+            }
+          } else {
+            for(let j=0;j<points.length;j++){
+            	let item=points[j];
+            	if(startPoint==0 && item.x > leftSpace){
+            		context.moveTo(item.x, item.y);
+            		startPoint=1;
+            	}
+              if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
+                context.lineTo(item.x, item.y);
+              }
+            }
+          }
+          context.moveTo(points[0].x, points[0].y);
+        }
+        context.stroke();
+				context.setLineDash([]);
+      });
+    }
+
+    // 绘制点数据图
+    if (eachSeries.type == 'point') {
+			eachSeries.addPoint = true;
+    }
+
+    if (eachSeries.addPoint == true && eachSeries.type !== 'column' ) {
+      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
+    }
+  });
+  if (opts.dataLabel !== false && process === 1) {
+    var columnIndex = 0;
+    series.forEach(function(eachSeries, seriesIndex) {
+      let ranges,minRange,maxRange;
+      
+			ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
+			minRange = ranges.pop();
+			maxRange = ranges.shift();
+				
+      var data = eachSeries.data;
+      var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
+      if (eachSeries.type !== 'column') {
+        drawPointText(points, eachSeries, config, context);
+      } else {
+        points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
+        drawPointText(points, eachSeries, config, context);
+        columnIndex += 1;
+      }
+
+    });
+  }
+
+  context.restore();
+
+  return {
+    xAxisPoints: xAxisPoints,
+    calPoints: calPoints,
+    eachSpacing: eachSpacing,
+  }
+}
+
+function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {
+  var toolTipOption = opts.extra.tooltip || {};
+  if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'candle' || opts.type == 'mix')) {
+    drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints)
+  }
+  context.save();
+  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
+    context.translate(opts._scrollDistance_, 0);
+  }
+  if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
+    drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);
+  }
+  context.restore();
+
+}
+
+function drawXAxis(categories, opts, config, context) {
+
+  let xAxisData = opts.chartData.xAxisData,
+    xAxisPoints = xAxisData.xAxisPoints,
+    startX = xAxisData.startX,
+    endX = xAxisData.endX,
+    eachSpacing = xAxisData.eachSpacing;
+  var boundaryGap='center';
+  if (opts.type == 'line'||opts.type == 'area'){
+    boundaryGap=opts.xAxis.boundaryGap;
+  }
+  var startY = opts.height - opts.area[2];
+  var endY = opts.area[0];
+
+  //绘制滚动条
+  if (opts.enableScroll && opts.xAxis.scrollShow) {
+    var scrollY = opts.height - opts.area[2] + config.xAxisHeight;
+    var scrollScreenWidth = endX - startX;
+    var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);
+    var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;
+    var scrollLeft = 0;
+    if (opts._scrollDistance_) {
+      scrollLeft = -opts._scrollDistance_ * (scrollScreenWidth) / scrollTotalWidth;
+    }
+    context.beginPath();
+    context.setLineCap('round');
+    context.setLineWidth(6 * opts.pixelRatio);
+    context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF");
+    context.moveTo(startX, scrollY);
+    context.lineTo(endX, scrollY);
+    context.stroke();
+    context.closePath();
+    context.beginPath();
+    context.setLineCap('round');
+    context.setLineWidth(6 * opts.pixelRatio);
+    context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6");
+    context.moveTo(startX + scrollLeft, scrollY);
+    context.lineTo(startX + scrollLeft + scrollWidth, scrollY);
+    context.stroke();
+    context.closePath();
+    context.setLineCap('butt');
+  }
+
+  context.save();
+
+  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
+    context.translate(opts._scrollDistance_, 0);
+  }
+	
+	//绘制X轴刻度线
+	if (opts.xAxis.calibration === true) {
+		context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
+		context.setLineCap('butt');
+		context.setLineWidth(1 * opts.pixelRatio);
+	  xAxisPoints.forEach(function(item, index) {
+	    if (index > 0) {
+	      context.beginPath();
+	      context.moveTo(item - eachSpacing / 2, startY);
+	      context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pixelRatio);
+	      context.closePath();
+	      context.stroke();
+	    }
+	  });
+	}
+	//绘制X轴网格
+  if (opts.xAxis.disableGrid !== true) {
+    context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
+    context.setLineCap('butt');
+    context.setLineWidth(1 * opts.pixelRatio);
+    if (opts.xAxis.gridType == 'dash') {
+      context.setLineDash([opts.xAxis.dashLength, opts.xAxis.dashLength]);
+    }
+		opts.xAxis.gridEval = opts.xAxis.gridEval || 1;
+		xAxisPoints.forEach(function(item, index) {
+			if (index % opts.xAxis.gridEval == 0) {
+				context.beginPath();
+				context.moveTo(item, startY);
+				context.lineTo(item, endY);
+				context.stroke();
+			}
+		});
+    context.setLineDash([]);
+  }
+  
+
+  //绘制X轴文案
+  if (opts.xAxis.disabled !== true) {
+    // 对X轴列表做抽稀处理
+    //默认全部显示X轴标签
+    let maxXAxisListLength = categories.length;
+    //如果设置了X轴单屏数量
+    if (opts.xAxis.labelCount) {
+      //如果设置X轴密度
+      if (opts.xAxis.itemCount) {
+        maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);
+      } else {
+        maxXAxisListLength = opts.xAxis.labelCount;
+      }
+      maxXAxisListLength -= 1;
+    }
+
+    let ratio = Math.ceil(categories.length / maxXAxisListLength);
+
+    let newCategories = [];
+    let cgLength = categories.length;
+    for (let i = 0; i < cgLength; i++) {
+      if (i % ratio !== 0) {
+        newCategories.push("");
+      } else {
+        newCategories.push(categories[i]);
+      }
+    }
+    newCategories[cgLength - 1] = categories[cgLength - 1];
+
+    var xAxisFontSize = opts.xAxis.fontSize || config.fontSize;
+    if (config._xAxisTextAngle_ === 0) {
+      newCategories.forEach(function(item, index) {
+        var offset = - measureText(String(item), xAxisFontSize) / 2;
+        if(boundaryGap == 'center'){
+          offset+=eachSpacing / 2;
+        }
+        var scrollHeight=0;
+        if(opts.xAxis.scrollShow){
+          scrollHeight=6*opts.pixelRatio;
+        }
+        context.beginPath();
+        context.setFontSize(xAxisFontSize);
+        context.setFillStyle(opts.xAxis.fontColor || '#666666');
+        context.fillText(String(item), xAxisPoints[index] + offset, startY + xAxisFontSize + (config.xAxisHeight - scrollHeight - xAxisFontSize) / 2);
+        context.closePath();
+        context.stroke();
+      });
+
+    } else {
+      newCategories.forEach(function(item, index) {
+        context.save();
+        context.beginPath();
+        context.setFontSize(xAxisFontSize);
+        context.setFillStyle(opts.xAxis.fontColor || '#666666');
+        var textWidth = measureText(String(item),xAxisFontSize);
+        var offset = - textWidth;
+        if(boundaryGap == 'center'){
+          offset+=eachSpacing / 2;
+        }
+        var _calRotateTranslate = calRotateTranslate(xAxisPoints[index] + eachSpacing / 2, startY + xAxisFontSize / 2 + 5, opts.height),
+          transX = _calRotateTranslate.transX,
+          transY = _calRotateTranslate.transY;
+
+        context.rotate(-1 * config._xAxisTextAngle_);
+        context.translate(transX, transY);
+        context.fillText(String(item), xAxisPoints[index] + offset, startY + xAxisFontSize + 5);
+        context.closePath();
+        context.stroke();
+        context.restore();
+      });
+    }
+  }
+  context.restore();
+	
+	//绘制X轴轴线
+  if(opts.xAxis.axisLine){
+    context.beginPath();
+    context.setStrokeStyle(opts.xAxis.axisLineColor);
+    context.setLineWidth(1 * opts.pixelRatio);
+    context.moveTo(startX,opts.height-opts.area[2]);
+    context.lineTo(endX,opts.height-opts.area[2]);
+    context.stroke();
+  }
+}
+
+function drawYAxisGrid(categories, opts, config, context) {
+  if (opts.yAxis.disableGrid === true) {
+    return;
+  }
+  let spacingValid = opts.height - opts.area[0] - opts.area[2];
+  let eachSpacing = spacingValid / opts.yAxis.splitNumber;
+  let startX = opts.area[3];
+  let xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
+    xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;
+  let TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);
+  let endX = startX + TotalWidth;
+
+  let points = [];
+  for (let i = 0; i < opts.yAxis.splitNumber + 1; i++) {
+    points.push(opts.height - opts.area[2] - eachSpacing * i);
+  }
+
+  context.save();
+  if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
+    context.translate(opts._scrollDistance_, 0);
+  }
+
+  if (opts.yAxis.gridType == 'dash') {
+    context.setLineDash([opts.yAxis.dashLength, opts.yAxis.dashLength]);
+  }
+  context.setStrokeStyle(opts.yAxis.gridColor);
+  context.setLineWidth(1 * opts.pixelRatio);
+  points.forEach(function(item, index) {
+    context.beginPath();
+    context.moveTo(startX, item);
+    context.lineTo(endX, item);
+    context.stroke();
+  });
+  context.setLineDash([]);
+
+  context.restore();
+}
+
+function drawYAxis(series, opts, config, context) {
+  if (opts.yAxis.disabled === true) {
+    return;
+  }
+  var spacingValid = opts.height - opts.area[0] - opts.area[2];
+  var eachSpacing = spacingValid / opts.yAxis.splitNumber;
+  var startX = opts.area[3];
+  var endX = opts.width - opts.area[1];
+  var endY = opts.height - opts.area[2];
+  var fillEndY = endY + config.xAxisHeight;
+  if (opts.xAxis.scrollShow) {
+    fillEndY -= 3 * opts.pixelRatio;
+  }
+	if (opts.xAxis.rotateLabel){
+		fillEndY = opts.height - opts.area[2]+3;
+	}
+  // set YAxis background
+  context.beginPath();
+  context.setFillStyle(opts.background || '#ffffff');
+  if (opts._scrollDistance_ < 0) {
+    context.fillRect(0, 0, startX, fillEndY);
+  }
+  if(opts.enableScroll == true){
+    context.fillRect(endX, 0, opts.width, fillEndY);
+  }
+  context.closePath();
+  context.stroke();
+
+  var points = [];
+  for (let i = 0; i <= opts.yAxis.splitNumber; i++) {
+    points.push(opts.area[0] + eachSpacing * i);
+  }
+
+  let tStartLeft=opts.area[3];
+  let tStartRight=opts.width-opts.area[1];
+
+  for (let i = 0; i < opts.yAxis.data.length; i++) {
+    let yData = opts.yAxis.data[i];
+    if(yData.disabled !== true){
+      let rangesFormat = opts.chartData.yAxisData.rangesFormat[i];
+      let yAxisFontSize = yData.fontSize || config.fontSize;
+      let yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];
+      //画Y轴刻度及文案
+      rangesFormat.forEach(function(item, index) {
+        var pos = points[index] ? points[index] : endY;
+        context.beginPath();
+        context.setFontSize(yAxisFontSize);
+        context.setLineWidth(1*opts.pixelRatio);
+        context.setStrokeStyle(yData.axisLineColor||'#cccccc');
+        context.setFillStyle(yData.fontColor|| '#666666');
+        if(yAxisWidth.position=='left'){
+          context.fillText(String(item), tStartLeft - yAxisWidth.width , pos + yAxisFontSize / 2);
+          //画刻度线
+          if(yData.calibration==true){
+            context.moveTo(tStartLeft,pos);
+            context.lineTo(tStartLeft - 3*opts.pixelRatio,pos);
+          }
+        }else{
+          context.fillText(String(item), tStartRight + 4*opts.pixelRatio, pos + yAxisFontSize / 2);
+          //画刻度线
+          if(yData.calibration==true){
+            context.moveTo(tStartRight,pos);
+            context.lineTo(tStartRight + 3*opts.pixelRatio,pos);
+          }
+        }
+        context.closePath();
+        context.stroke();
+      });
+      //画Y轴轴线
+      if (yData.axisLine!==false) {
+        context.beginPath();
+        context.setStrokeStyle(yData.axisLineColor||'#cccccc');
+        context.setLineWidth(1 * opts.pixelRatio);
+        if(yAxisWidth.position=='left'){
+          context.moveTo(tStartLeft,opts.height-opts.area[2]);
+          context.lineTo(tStartLeft,opts.area[0]);
+        }else{
+          context.moveTo(tStartRight,opts.height-opts.area[2]);
+          context.lineTo(tStartRight,opts.area[0]);
+        }
+        context.stroke();
+      }
+			
+      //画Y轴标题
+      if (opts.yAxis.showTitle) {
+				
+        let titleFontSize = yData.titleFontSize || config.fontSize;
+        let title = yData.title;
+        context.beginPath();
+        context.setFontSize(titleFontSize);
+        context.setFillStyle(yData.titleFontColor || '#666666');
+        if(yAxisWidth.position=='left'){
+          context.fillText(title, tStartLeft - measureText(title,titleFontSize)/2, opts.area[0]-10*opts.pixelRatio);
+        }else{
+          context.fillText(title,tStartRight - measureText(title,titleFontSize)/2, opts.area[0]-10*opts.pixelRatio);
+        }
+        context.closePath();
+        context.stroke();
+      }
+      if(yAxisWidth.position=='left'){
+        tStartLeft -=(yAxisWidth.width + opts.yAxis.padding);
+      }else{
+        tStartRight +=yAxisWidth.width+ opts.yAxis.padding;
+      }
+    }
+  }
+}
+
+function drawLegend(series, opts, config, context, chartData) {
+  if (opts.legend.show === false) {
+    return;
+  }
+  let legendData = chartData.legendData;
+  let legendList = legendData.points;
+  let legendArea = legendData.area;
+  let padding = opts.legend.padding;
+  let fontSize = opts.legend.fontSize;
+  let shapeWidth = 15 * opts.pixelRatio;
+  let shapeRight = 5 * opts.pixelRatio;
+  let itemGap = opts.legend.itemGap;
+  let lineHeight = Math.max(opts.legend.lineHeight * opts.pixelRatio, fontSize);
+
+  //画背景及边框
+  context.beginPath();
+  context.setLineWidth(opts.legend.borderWidth);
+  context.setStrokeStyle(opts.legend.borderColor);
+  context.setFillStyle(opts.legend.backgroundColor);
+  context.moveTo(legendArea.start.x, legendArea.start.y);
+  context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);
+  context.closePath();
+  context.fill();
+  context.stroke();
+
+  legendList.forEach(function(itemList, listIndex) {
+    let width = 0;
+    let height = 0;
+    width = legendData.widthArr[listIndex];
+    height = legendData.heightArr[listIndex];
+    let startX = 0;
+    let startY = 0;
+    if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
+      startX = legendArea.start.x + (legendArea.width - width) / 2;
+      startY = legendArea.start.y + padding + listIndex * lineHeight;
+    } else {
+      if (listIndex == 0) {
+        width = 0;
+      } else {
+        width = legendData.widthArr[listIndex - 1];
+      }
+      startX = legendArea.start.x + padding + width;
+      startY = legendArea.start.y + padding + (legendArea.height - height) / 2;
+    }
+
+    context.setFontSize(config.fontSize);
+    for (let i = 0; i < itemList.length; i++) {
+      let item = itemList[i];
+      item.area = [0, 0, 0, 0];
+      item.area[0] = startX;
+      item.area[1] = startY;
+      item.area[3] = startY + lineHeight;
+      context.beginPath();
+      context.setLineWidth(1 * opts.pixelRatio);
+      context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);
+      context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);
+      switch (item.legendShape) {
+        case 'line':
+          context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio);
+          context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pixelRatio, 15 * opts.pixelRatio, 4 * opts.pixelRatio);
+          break;
+        case 'triangle':
+          context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+          context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);
+          context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);
+          context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+          break;
+        case 'diamond':
+          context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+          context.lineTo(startX + 2.5 * opts.pixelRatio, startY + 0.5 * lineHeight);
+          context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight + 5 * opts.pixelRatio);
+          context.lineTo(startX + 12.5 * opts.pixelRatio, startY + 0.5 * lineHeight);
+          context.lineTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+          break;
+        case 'circle':
+          context.moveTo(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight);
+          context.arc(startX + 7.5 * opts.pixelRatio, startY + 0.5 * lineHeight, 5 * opts.pixelRatio, 0, 2 * Math.PI);
+          break;
+        case 'rect':
+          context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+          context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio);
+          break;
+        default:
+          context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio);
+          context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pixelRatio, 15 * opts.pixelRatio, 10 * opts.pixelRatio);
+      }
+      context.closePath();
+      context.fill();
+      context.stroke();
+
+      startX += shapeWidth + shapeRight;
+      let fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;
+      context.beginPath();
+      context.setFontSize(fontSize);
+      context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);
+      context.fillText(item.name, startX, startY + fontTrans);
+      context.closePath();
+      context.stroke();
+      if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
+        startX += measureText(item.name, fontSize) + itemGap;
+        item.area[2] = startX;
+      } else {
+        item.area[2] = startX + measureText(item.name, fontSize) + itemGap;;
+        startX -= shapeWidth + shapeRight;
+        startY += lineHeight;
+      }
+    }
+  });
+}
+
+function drawPieDataPoints(series, opts, config, context) {
+  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  var pieOption = assign({}, {
+    activeOpacity: 0.5,
+    activeRadius: 10 * opts.pixelRatio,
+    offsetAngle: 0,
+    labelWidth: 15 * opts.pixelRatio,
+    ringWidth: 0,
+    border:false,
+    borderWidth:2,
+    borderColor:'#FFFFFF'
+  }, opts.extra.pie);
+  var centerPosition = {
+    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+    y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
+  };
+  if (config.pieChartLinePadding == 0) {
+    config.pieChartLinePadding = pieOption.activeRadius;
+  }
+
+  var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
+
+  series = getPieDataPoints(series, radius, process);
+
+  var activeRadius = pieOption.activeRadius;
+
+  series = series.map(function(eachSeries) {
+    eachSeries._start_ += (pieOption.offsetAngle) * Math.PI / 180;
+    return eachSeries;
+  });
+  series.forEach(function(eachSeries, seriesIndex) {
+    if (opts.tooltip) {
+      if (opts.tooltip.index == seriesIndex) {
+        context.beginPath();
+        context.setFillStyle(hexToRgb(eachSeries.color, opts.extra.pie.activeOpacity || 0.5));
+        context.moveTo(centerPosition.x, centerPosition.y);
+        context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_,
+          eachSeries._start_ + 2 *
+          eachSeries._proportion_ * Math.PI);
+        context.closePath();
+        context.fill();
+      }
+    }
+    context.beginPath();
+    context.setLineWidth(pieOption.borderWidth * opts.pixelRatio);
+    context.lineJoin = "round";
+    context.setStrokeStyle(pieOption.borderColor);
+    context.setFillStyle(eachSeries.color);
+    context.moveTo(centerPosition.x, centerPosition.y);
+    context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
+    context.closePath();
+    context.fill();
+    if (pieOption.border == true) {
+      context.stroke();
+    }
+  });
+
+  if (opts.type === 'ring') {
+    var innerPieWidth = radius * 0.6;
+    if (typeof opts.extra.pie.ringWidth === 'number' && opts.extra.pie.ringWidth > 0) {
+      innerPieWidth = Math.max(0, radius - opts.extra.pie.ringWidth);
+    }
+    context.beginPath();
+    context.setFillStyle(opts.background || '#ffffff');
+    context.moveTo(centerPosition.x, centerPosition.y);
+    context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);
+    context.closePath();
+    context.fill();
+  }
+
+  if (opts.dataLabel !== false && process === 1) {
+    var valid = false;
+    for (var i = 0, len = series.length; i < len; i++) {
+      if (series[i].data > 0) {
+        valid = true;
+        break;
+      }
+    }
+
+    if (valid) {
+      drawPieText(series, opts, config, context, radius, centerPosition);
+    }
+  }
+
+  if (process === 1 && opts.type === 'ring') {
+    drawRingTitle(opts, config, context, centerPosition);
+  }
+
+  return {
+    center: centerPosition,
+    radius: radius,
+    series: series
+  };
+}
+
+function drawRoseDataPoints(series, opts, config, context) {
+  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  var roseOption = assign({}, {
+    type: 'area',
+    activeOpacity: 0.5,
+    activeRadius: 10 * opts.pixelRatio,
+    offsetAngle: 0,
+    labelWidth: 15 * opts.pixelRatio,
+    border:false,
+    borderWidth:2,
+    borderColor:'#FFFFFF'
+  }, opts.extra.rose);
+  if (config.pieChartLinePadding == 0) {
+    config.pieChartLinePadding = roseOption.activeRadius;
+  }
+  var centerPosition = {
+    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+    y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
+  };
+   var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
+  var minRadius = roseOption.minRadius || radius * 0.5;
+
+  series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);
+
+  var activeRadius = roseOption.activeRadius;
+
+  series = series.map(function(eachSeries) {
+    eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;
+    return eachSeries;
+  });
+
+  series.forEach(function(eachSeries, seriesIndex) {
+    if (opts.tooltip) {
+      if (opts.tooltip.index == seriesIndex) {
+        context.beginPath();
+        context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));
+        context.moveTo(centerPosition.x, centerPosition.y);
+        context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_,
+          eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);
+        context.closePath();
+        context.fill();
+      }
+    }
+    context.beginPath();
+    context.setLineWidth(roseOption.borderWidth * opts.pixelRatio);
+    context.lineJoin = "round";
+    context.setStrokeStyle(roseOption.borderColor);
+    context.setFillStyle(eachSeries.color);
+    context.moveTo(centerPosition.x, centerPosition.y);
+    context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 *
+      eachSeries._rose_proportion_ * Math.PI);
+    context.closePath();
+    context.fill();
+    if (roseOption.border == true) {
+      context.stroke();
+    }
+  });
+
+  if (opts.dataLabel !== false && process === 1) {
+    var valid = false;
+    for (var i = 0, len = series.length; i < len; i++) {
+      if (series[i].data > 0) {
+        valid = true;
+        break;
+      }
+    }
+
+    if (valid) {
+      drawPieText(series, opts, config, context, radius, centerPosition);
+    }
+  }
+
+  return {
+    center: centerPosition,
+    radius: radius,
+    series: series
+  };
+}
+
+function drawArcbarDataPoints(series, opts, config, context) {
+  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  var arcbarOption = assign({}, {
+    startAngle: 0.75,
+    endAngle: 0.25,
+    type: 'default',
+    width: 12 * opts.pixelRatio,
+		gap:2 * opts.pixelRatio
+  }, opts.extra.arcbar);
+
+  series = getArcbarDataPoints(series, arcbarOption, process);
+	
+  var centerPosition;
+	if(arcbarOption.center){
+		centerPosition=arcbarOption.center;
+	}else{
+		centerPosition= {
+		  x: opts.width / 2,
+		  y: opts.height / 2
+		};
+	}
+	
+  var radius;
+	if(arcbarOption.radius){
+		radius=arcbarOption.radius;
+	}else{
+		radius = Math.min(centerPosition.x, centerPosition.y);
+		radius -= 5 * opts.pixelRatio;
+		radius -= arcbarOption.width / 2;
+	}
+	
+  for (let i = 0; i < series.length; i++) {
+    let eachSeries = series[i];
+		//背景颜色
+		context.setLineWidth(arcbarOption.width);
+		context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');
+		context.setLineCap('round');
+		context.beginPath();
+		if (arcbarOption.type == 'default') {
+		  context.arc(centerPosition.x, centerPosition.y, radius-(arcbarOption.width+arcbarOption.gap)*i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, false);
+		} else {
+		  context.arc(centerPosition.x, centerPosition.y, radius-(arcbarOption.width+arcbarOption.gap)*i, 0, 2 * Math.PI, false);
+		}
+		context.stroke();
+		//进度条
+    context.setLineWidth(arcbarOption.width);
+    context.setStrokeStyle(eachSeries.color);
+    context.setLineCap('round');
+    context.beginPath();
+    context.arc(centerPosition.x, centerPosition.y, radius-(arcbarOption.width+arcbarOption.gap)*i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, false);
+    context.stroke();
+  }
+
+  drawRingTitle(opts, config, context, centerPosition);
+
+  return {
+    center: centerPosition,
+    radius: radius,
+    series: series
+  };
+}
+
+function drawGaugeDataPoints(categories, series, opts, config, context) {
+  var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
+  var gaugeOption = assign({}, {
+		type:'default',
+    startAngle: 0.75,
+    endAngle: 0.25,
+    width: 15,
+    splitLine: {
+      fixRadius: 0,
+      splitNumber: 10,
+      width: 15,
+      color: '#FFFFFF',
+      childNumber: 5,
+      childWidth: 5
+    },
+    pointer: {
+      width: 15,
+      color: 'auto'
+    }
+  }, opts.extra.gauge);
+
+  if (gaugeOption.oldAngle == undefined) {
+    gaugeOption.oldAngle = gaugeOption.startAngle;
+  }
+  if (gaugeOption.oldData == undefined) {
+    gaugeOption.oldData = 0;
+  }
+  categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);
+
+  var centerPosition = {
+    x: opts.width / 2,
+    y: opts.height / 2
+  };
+  var radius = Math.min(centerPosition.x, centerPosition.y);
+  radius -= 5 * opts.pixelRatio;
+  radius -= gaugeOption.width / 2;
+  var innerRadius = radius - gaugeOption.width;
+	var totalAngle=0;
+	
+	//判断仪表盘的样式:default百度样式,progress新样式
+	if(gaugeOption.type == 'progress'){
+		
+		//## 第一步画中心圆形背景和进度条背景
+		//中心圆形背景
+		var pieRadius = radius - gaugeOption.width*3;
+		context.beginPath();
+		let gradient = context.createLinearGradient(centerPosition.x, centerPosition.y-pieRadius, centerPosition.x , centerPosition.y+pieRadius);
+		//配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)
+		gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));
+		gradient.addColorStop('1.0',hexToRgb("#FFFFFF", 0.1));
+		context.setFillStyle(gradient);
+		context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2*Math.PI, false);
+		context.fill();
+		//画进度条背景
+		context.setLineWidth(gaugeOption.width);
+		context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
+		context.setLineCap('round');
+		context.beginPath();
+		context.arc(centerPosition.x, centerPosition.y, innerRadius , gaugeOption.startAngle * Math.PI, gaugeOption.endAngle *Math.PI, false);
+		context.stroke();
+		
+		//## 第二步画刻度线
+		totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+		let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
+		let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
+		let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
+		let endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
+		context.save();
+		context.translate(centerPosition.x, centerPosition.y);
+		context.rotate((gaugeOption.startAngle - 1) * Math.PI);
+		let len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;
+		let proc = series[0].data * process;
+		for (let i = 0; i < len; i++) {
+		  context.beginPath();
+			//刻度线随进度变色
+			if(proc>(i/len)){
+				context.setStrokeStyle(hexToRgb(series[0].color, 1));
+			}else{
+				context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
+			}
+		  context.setLineWidth(3 * opts.pixelRatio);
+		  context.moveTo(startX, 0);
+		  context.lineTo(endX, 0);
+		  context.stroke();
+		  context.rotate(childAngle * Math.PI);
+		}
+		context.restore();
+		
+		//## 第三步画进度条
+		series = getArcbarDataPoints(series, gaugeOption, process);
+		context.setLineWidth(gaugeOption.width);
+		context.setStrokeStyle(series[0].color);
+		context.setLineCap('round');
+		context.beginPath();
+		context.arc(centerPosition.x, centerPosition.y, innerRadius , gaugeOption.startAngle * Math.PI, series[0]._proportion_ *Math.PI, false);
+		context.stroke();
+		
+		//## 第四步画指针
+		let pointerRadius = radius - gaugeOption.width*2.5;
+		context.save();
+		context.translate(centerPosition.x, centerPosition.y);
+		context.rotate((series[0]._proportion_ - 1) * Math.PI);
+		context.beginPath();
+		context.setLineWidth(gaugeOption.width/3);
+		let gradient3 = context.createLinearGradient(0, -pointerRadius*0.6, 0 , pointerRadius*0.6);
+		gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));
+		gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));
+		gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));
+		context.setStrokeStyle(gradient3);
+		context.arc(0, 0, pointerRadius , 0.85* Math.PI, 1.15 * Math.PI, false);
+		context.stroke();
+		context.beginPath();
+		context.setLineWidth(1);
+		context.setStrokeStyle(series[0].color);
+		context.setFillStyle(series[0].color);
+		context.moveTo(-pointerRadius-gaugeOption.width/3/2,-4);
+		context.lineTo(-pointerRadius-gaugeOption.width/3/2-4,0);
+		context.lineTo(-pointerRadius-gaugeOption.width/3/2,4);
+		context.lineTo(-pointerRadius-gaugeOption.width/3/2,-4);
+		context.stroke();
+		context.fill();
+		context.restore();
+		
+	//default百度样式
+	}else{
+		//画背景
+		context.setLineWidth(gaugeOption.width);
+		context.setLineCap('butt');
+		for (let i = 0; i < categories.length; i++) {
+		  let eachCategories = categories[i];
+		  context.beginPath();
+		  context.setStrokeStyle(eachCategories.color);
+		  context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ *Math.PI, false);
+		  context.stroke();
+		}
+		context.save();
+		
+		//画刻度线
+		totalAngle = gaugeOption.startAngle - gaugeOption.endAngle + 1;
+		let splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
+		let childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
+		let startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
+		let endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
+		let childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;
+		
+		context.translate(centerPosition.x, centerPosition.y);
+		context.rotate((gaugeOption.startAngle - 1) * Math.PI);
+		
+		for (let i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {
+		  context.beginPath();
+		  context.setStrokeStyle(gaugeOption.splitLine.color);
+		  context.setLineWidth(2 * opts.pixelRatio);
+		  context.moveTo(startX, 0);
+		  context.lineTo(endX, 0);
+		  context.stroke();
+		  context.rotate(splitAngle * Math.PI);
+		}
+		context.restore();
+		
+		context.save();
+		context.translate(centerPosition.x, centerPosition.y);
+		context.rotate((gaugeOption.startAngle - 1) * Math.PI);
+		
+		for (let i = 0; i < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; i++) {
+		  context.beginPath();
+		  context.setStrokeStyle(gaugeOption.splitLine.color);
+		  context.setLineWidth(1 * opts.pixelRatio);
+		  context.moveTo(startX, 0);
+		  context.lineTo(childendX, 0);
+		  context.stroke();
+		  context.rotate(childAngle * Math.PI);
+		}
+		context.restore();
+		
+		//画指针
+		series = getGaugeDataPoints(series, categories, gaugeOption, process);
+		
+		for (let i = 0; i < series.length; i++) {
+		  let eachSeries = series[i];
+		  context.save();
+		  context.translate(centerPosition.x, centerPosition.y);
+		  context.rotate((eachSeries._proportion_ - 1) * Math.PI);
+		  context.beginPath();
+		  context.setFillStyle(eachSeries.color);
+		  context.moveTo(gaugeOption.pointer.width, 0);
+		  context.lineTo(0, -gaugeOption.pointer.width / 2);
+		  context.lineTo(-innerRadius, 0);
+		  context.lineTo(0, gaugeOption.pointer.width / 2);
+		  context.lineTo(gaugeOption.pointer.width, 0);
+		  context.closePath();
+		  context.fill();
+		  context.beginPath();
+		  context.setFillStyle('#FFFFFF');
+		  context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);
+		  context.fill();
+		  context.restore();
+		}
+		
+		if (opts.dataLabel !== false) {
+		  drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);
+		}
+	}
+	
+	//画仪表盘标题,副标题
+  drawRingTitle(opts, config, context, centerPosition);
+
+  if (process === 1 && opts.type === 'gauge') {
+    opts.extra.gauge.oldAngle = series[0]._proportion_;
+    opts.extra.gauge.oldData = series[0].data;
+  }
+  return {
+    center: centerPosition,
+    radius: radius,
+    innerRadius: innerRadius,
+    categories: categories,
+    totalAngle: totalAngle
+  };
+}
+
+function drawRadarDataPoints(series, opts, config, context) {
+  var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  var radarOption = assign({},{
+    gridColor: '#cccccc',
+		gridType: 'radar',
+    labelColor: '#666666',
+    opacity: 0.2,
+		gridCount:3
+  },opts.extra.radar);
+  
+  var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);
+  
+  var centerPosition = {
+    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+    y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
+  };
+
+  var radius = Math.min(centerPosition.x - (getMaxTextListLength(opts.categories) + config.radarLabelTextMargin),centerPosition.y - config.radarLabelTextMargin);
+  //TODO逻辑不对
+  radius -= opts.padding[1];
+
+  // 画分割线
+  context.beginPath();
+  context.setLineWidth(1 * opts.pixelRatio);
+  context.setStrokeStyle(radarOption.gridColor);
+  coordinateAngle.forEach(function(angle) {
+    var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);
+    context.moveTo(centerPosition.x, centerPosition.y);
+    context.lineTo(pos.x, pos.y);
+  });
+  context.stroke();
+  context.closePath();
+	
+  // 画背景网格
+  var _loop = function _loop(i) {
+    var startPos = {};
+    context.beginPath();
+    context.setLineWidth(1 * opts.pixelRatio);
+    context.setStrokeStyle(radarOption.gridColor);
+		if(radarOption.gridType=='radar'){
+			coordinateAngle.forEach(function(angle, index) {
+			  var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / radarOption.gridCount * i * Math.sin(angle), centerPosition);
+			  if (index === 0) {
+			    startPos = pos;
+			    context.moveTo(pos.x, pos.y);
+			  } else {
+			    context.lineTo(pos.x, pos.y);
+			  }
+			});
+			context.lineTo(startPos.x, startPos.y);
+		}else{
+			var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);
+			context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);
+		}
+    context.stroke();
+    context.closePath();
+  };
+
+  for (var i = 1; i <= radarOption.gridCount; i++) {
+    _loop(i);
+  }
+
+  var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);
+
+  radarDataPoints.forEach(function(eachSeries, seriesIndex) {
+    // 绘制区域数据
+    context.beginPath();
+    context.setFillStyle(hexToRgb(eachSeries.color, radarOption.opacity));
+    eachSeries.data.forEach(function(item, index) {
+      if (index === 0) {
+        context.moveTo(item.position.x, item.position.y);
+      } else {
+        context.lineTo(item.position.x, item.position.y);
+      }
+    });
+    context.closePath();
+    context.fill();
+
+    if (opts.dataPointShape !== false) {
+      var points = eachSeries.data.map(function(item) {
+        return item.position;
+      });
+      drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
+    }
+  });
+  // draw label text
+  drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);
+
+  return {
+    center: centerPosition,
+    radius: radius,
+    angleList: coordinateAngle
+  };
+}
+
+function normalInt(min, max, iter) {
+    iter = iter==0?1:iter;
+    var arr = [];
+    for (var i = 0; i < iter; i++) {
+        arr[i] = Math.random();
+    };
+    return  Math.floor(arr.reduce(function(i,j){return i+j})/iter*(max-min))+min;  
+};
+
+function collisionNew(area,points,width,height){
+    var isIn=false;
+    for(let i=0;i<points.length;i++){
+      if(points[i].area){
+        if(area[3]<points[i].area[1]||area[0]>points[i].area[2]||area[1]>points[i].area[3]||area[2]<points[i].area[0]){
+          if(area[0]<0 || area[1]<0 || area[2]>width || area[3]>height){
+            isIn=true;
+            break;
+          }else{
+            isIn=false;
+          }
+        }else{
+          isIn=true;
+          break;
+        }
+      }
+    }
+    return isIn;
+};
+
+function getBoundingBox(data) {
+  var bounds = {}, coords;
+  bounds.xMin = 180;
+  bounds.xMax = 0;
+  bounds.yMin = 90;
+  bounds.yMax = 0
+  for (var i = 0; i < data.length; i++) {
+      var coorda = data[i].geometry.coordinates
+      for (var k = 0; k < coorda.length; k++) {
+          coords = coorda[k];
+          if (coords.length == 1) {
+              coords = coords[0]
+          }
+          for (var j = 0; j < coords.length; j++) {
+              var longitude = coords[j][0];
+              var latitude = coords[j][1];
+              var point = {
+                  x: longitude, 
+                  y: latitude 
+              }
+              bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;
+              bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;
+              bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;
+              bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;
+          }
+      }
+  }
+  return bounds;
+}
+
+function coordinateToPoint(latitude, longitude,bounds,scale,xoffset,yoffset) {
+  return {
+      x: (longitude - bounds.xMin) * scale+xoffset,
+      y: (bounds.yMax - latitude) * scale+yoffset
+  };
+}
+
+function pointToCoordinate(pointY, pointX,bounds,scale,xoffset,yoffset) {
+  return {
+      x: (pointX-xoffset)/scale+bounds.xMin,
+      y: bounds.yMax - (pointY-yoffset)/scale
+  };
+}
+
+function isRayIntersectsSegment(poi,s_poi,e_poi){
+      if (s_poi[1]==e_poi[1]){return false;} 
+      if (s_poi[1]>poi[1] && e_poi[1]>poi[1]){return false;}
+      if (s_poi[1]<poi[1] && e_poi[1]<poi[1]){return false;}
+      if (s_poi[1]==poi[1] && e_poi[1]>poi[1]){return false;}
+      if (e_poi[1]==poi[1] && s_poi[1]>poi[1]){return false;}
+      if (s_poi[0]<poi[0] && e_poi[1]<poi[1]){return false;}
+      let xseg=e_poi[0]-(e_poi[0]-s_poi[0])*(e_poi[1]-poi[1])/(e_poi[1]-s_poi[1]); 
+      if (xseg<poi[0]){
+        return false;
+      }else{
+        return true;
+      }
+} 
+
+function isPoiWithinPoly(poi,poly){
+  let sinsc=0;
+  for (let i=0;i<poly.length;i++){
+    let epoly=poly[i][0];
+    if (poly.length == 1) {
+      epoly = poly[i][0]
+    }
+    for(let j=0;j<epoly.length-1;j++){
+      let s_poi=epoly[j];
+      let e_poi=epoly[j+1];
+      if (isRayIntersectsSegment(poi,s_poi,e_poi)){
+        sinsc+=1;
+      }
+    }
+  }
+  
+  if(sinsc%2==1){
+    return true;
+  }else{
+    return false;
+  }
+}
+
+
+function drawMapDataPoints(series, opts, config, context) {
+  var mapOption=assign({},{
+    border:true,
+    borderWidth:1,
+    borderColor:'#666666',
+    fillOpacity:0.6,
+    activeBorderColor:'#f04864',
+    activeFillColor:'#facc14',
+    activeFillOpacity:1
+  },opts.extra.map);
+  var coords, point;
+  var data = series;
+  var bounds= getBoundingBox(data);
+  var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);
+  var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);
+  var scale = xScale < yScale ? xScale : yScale;
+  var xoffset=opts.width/2-Math.abs(bounds.xMax - bounds.xMin)/2*scale;
+  var yoffset=opts.height/2-Math.abs(bounds.yMax - bounds.yMin)/2*scale;
+  context.beginPath();
+  context.clearRect(0, 0, opts.width, opts.height);
+  context.setFillStyle(opts.background||'#FFFFFF');
+  context.rect(0,0,opts.width,opts.height);
+  context.fill();
+  for (var i = 0; i < data.length; i++) {
+    context.beginPath();
+    context.setLineWidth(mapOption.borderWidth * opts.pixelRatio);
+    context.setStrokeStyle(mapOption.borderColor);
+    context.setFillStyle(hexToRgb(series[i].color, mapOption.fillOpacity));
+    if (opts.tooltip) {
+      if (opts.tooltip.index == i ) {
+        context.setStrokeStyle(mapOption.activeBorderColor);
+        context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));
+      }
+    }
+    var coorda = data[i].geometry.coordinates
+    for (var k = 0; k < coorda.length; k++) {
+      coords = coorda[k];
+      if (coords.length == 1) {
+        coords = coords[0]
+      }
+      for (var j = 0; j < coords.length; j++) {
+        point = coordinateToPoint(coords[j][1], coords[j][0],bounds,scale,xoffset,yoffset)
+        if (j === 0) {
+          context.beginPath();
+          context.moveTo(point.x, point.y);
+        } else {
+          context.lineTo(point.x, point.y);
+        }
+      }
+      context.fill();
+      if(mapOption.border == true){
+        context.stroke();
+      }
+    }
+    if(opts.dataLabel == true){
+      var centerPoint = data[i].properties.centroid;
+      if(centerPoint){
+        point = coordinateToPoint(centerPoint[1], centerPoint[0],bounds,scale,xoffset,yoffset);
+        let fontSize=data[i].textSize||config.fontSize;
+        let text=data[i].properties.name;
+        context.beginPath();
+        context.setFontSize(fontSize)
+        context.setFillStyle(data[i].textColor||'#666666')
+        context.fillText(text, point.x-measureText(text,fontSize)/2, point.y+fontSize/2);
+        context.closePath();
+        context.stroke();
+      }
+    }
+  }
+  opts.chartData.mapData={
+    bounds:bounds,
+    scale:scale,
+    xoffset:xoffset,
+    yoffset:yoffset
+  }
+  drawToolTipBridge(opts, config, context,1);
+  context.draw();
+}
+
+function getWordCloudPoint(opts,type){
+  let points = opts.series.sort(function(a,b){return parseInt(b.textSize)-parseInt(a.textSize);});
+  switch (type) {
+    case 'normal':
+      for (let i = 0; i < points.length; i++) {
+        let text = points[i].name;
+        let tHeight = points[i].textSize;
+        let tWidth = measureText(text,tHeight);
+        let x,y;
+        let area;
+        let breaknum=0;
+        while(true) {
+            breaknum++;
+            x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2;
+            y = normalInt(-opts.height/2, opts.height/2,5) + tHeight/2;
+            area=[x-5+opts.width/2,y-5-tHeight+opts.height/2,x+tWidth+5+opts.width/2,y+5+opts.height/2];
+            let isCollision = collisionNew(area,points,opts.width,opts.height);
+            if (!isCollision) break;
+            if (breaknum==1000){
+              area=[-100,-100,-100,-100];
+              break;
+            }
+        };
+        points[i].area=area;
+      }
+    break;
+    case 'vertical':
+      function Spin(){
+        //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)
+        if (Math.random()>0.7) {
+            return true;
+        }else {return false};
+      };
+      for (let i = 0; i < points.length; i++) { 
+        let text = points[i].name;
+        let tHeight = points[i].textSize;
+        let tWidth = measureText(text,tHeight);
+        let isSpin = Spin(); 
+        let x,y,area,areav;
+        let breaknum=0;
+        while(true) {
+          breaknum++;
+          let isCollision;
+          if (isSpin) {
+              x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2;
+              y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2;
+              area=[y-5-tWidth+opts.width/2,(-x-5+opts.height/2),y+5+opts.width/2,(-x+tHeight+5+opts.height/2)];
+              areav=[opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)-5,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)-5,opts.width-(opts.width/2-opts.height/2)-(-x+tHeight+5+opts.height/2)+tHeight,(opts.height/2-opts.width/2)+(y-5-tWidth+opts.width/2)+tWidth+5];
+              isCollision = collisionNew(areav,points,opts.height,opts.width);
+          }else{
+            x = normalInt(-opts.width/2, opts.width/2,5) - tWidth/2;
+            y = normalInt(-opts.height/2, opts.height/2,5)+tHeight/2;
+            area=[x-5+opts.width/2,y-5-tHeight+opts.height/2,x+tWidth+5+opts.width/2,y+5+opts.height/2];
+            isCollision = collisionNew(area,points,opts.width,opts.height);
+          } 
+          if (!isCollision) break;
+          if (breaknum==1000){
+            area=[-1000,-1000,-1000,-1000];
+            break;
+          }
+        };
+        if (isSpin) {
+          points[i].area=areav;
+          points[i].areav=area;
+        }else{
+          points[i].area=area;
+        }
+        points[i].rotate=isSpin;
+      };
+    break;
+  }
+  return points;
+}
+
+
+function drawWordCloudDataPoints(series, opts, config, context) {
+  let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  let wordOption = assign({},{
+    type: 'normal',
+    autoColors: true
+  },opts.extra.word);
+  
+  context.beginPath();
+  context.setFillStyle(opts.background||'#FFFFFF');
+  context.rect(0,0,opts.width,opts.height);
+  context.fill();
+  context.save();
+  let points = opts.chartData.wordCloudData;
+  context.translate(opts.width/2,opts.height/2);
+  
+  for(let i=0;i<points.length;i++){
+      context.save();
+      if(points[i].rotate){
+        context.rotate(90 * Math.PI / 180);
+      }
+      let text = points[i].name;
+      let tHeight = points[i].textSize;
+      let tWidth = measureText(text,tHeight);
+      context.beginPath();
+      context.setStrokeStyle(points[i].color);
+      context.setFillStyle(points[i].color);
+      context.setFontSize(tHeight);
+      if(points[i].rotate){
+        if(points[i].areav[0]>0){
+          if (opts.tooltip) {
+            if (opts.tooltip.index == i) {
+              context.strokeText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process);
+              }else{
+                context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process);
+              }
+          }else{
+            context.fillText(text,(points[i].areav[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].areav[1]+5+tHeight-opts.height/2)*process);
+          } 
+        }
+      }else{
+        if(points[i].area[0]>0){
+          if (opts.tooltip) {
+            if (opts.tooltip.index == i) {
+              context.strokeText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process);
+            }else{
+              context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process);
+            }
+          }else{
+            context.fillText(text,(points[i].area[0]+5-opts.width/2)*process-tWidth*(1-process)/2,(points[i].area[1]+5+tHeight-opts.height/2)*process);
+          }
+            
+        }
+      }
+      
+      context.stroke();
+      context.restore();
+  }
+  context.restore();
+}
+
+function drawFunnelDataPoints(series, opts, config, context) {
+  let process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
+  let funnelOption = assign({},{
+    activeWidth:10,
+    activeOpacity:0.3,
+    border:false,
+    borderWidth:2,
+    borderColor:'#FFFFFF',
+    fillOpacity:1,
+    labelAlign:'right'
+  },opts.extra.funnel);
+  let eachSpacing = (opts.height - opts.area[0] - opts.area[2])/series.length;
+  let centerPosition = {
+    x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
+    y: opts.height-opts.area[2]
+  };
+  let activeWidth = funnelOption.activeWidth;
+  let radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);
+  series = getFunnelDataPoints(series, radius, process);
+  context.save();
+  context.translate(centerPosition.x,centerPosition.y);
+  for(let i=0;i<series.length;i++){
+    if(i==0){
+      if (opts.tooltip) {
+        if (opts.tooltip.index == i) {
+          context.beginPath();
+          context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));
+          context.moveTo(-activeWidth, 0);
+          context.lineTo(-series[i].radius-activeWidth, -eachSpacing);
+          context.lineTo(series[i].radius+activeWidth, -eachSpacing);
+          context.lineTo(activeWidth, 0);
+          context.lineTo(-activeWidth, 0);
+          context.closePath();
+          context.fill();
+        }
+      }
+      series[i].funnelArea=[centerPosition.x-series[i].radius,centerPosition.y-eachSpacing,centerPosition.x+series[i].radius,centerPosition.y];
+      context.beginPath();
+      context.setLineWidth(funnelOption.borderWidth * opts.pixelRatio);
+      context.setStrokeStyle(funnelOption.borderColor);
+      context.setFillStyle(hexToRgb(series[i].color, funnelOption.fillOpacity));
+      context.moveTo(0, 0);
+      context.lineTo(-series[i].radius, -eachSpacing);
+      context.lineTo(series[i].radius, -eachSpacing);
+      context.lineTo(0, 0);
+      context.closePath();
+      context.fill();
+      if(funnelOption.border == true){
+        context.stroke();
+      }
+    }else{
+      if (opts.tooltip) {
+        if (opts.tooltip.index == i) {
+          context.beginPath();
+          context.setFillStyle(hexToRgb(series[i].color, funnelOption.activeOpacity));
+          context.moveTo(0, 0);
+          context.lineTo(-series[i-1].radius-activeWidth, 0);
+          context.lineTo(-series[i].radius-activeWidth, -eachSpacing);
+          context.lineTo(series[i].radius+activeWidth, -eachSpacing);
+          context.lineTo(series[i-1].radius+activeWidth, 0);
+          context.lineTo(0, 0);
+          context.closePath();
+          context.fill();
+        }
+      }
+      series[i].funnelArea=[centerPosition.x-series[i].radius,centerPosition.y-eachSpacing*(i+1),centerPosition.x+series[i].radius,centerPosition.y-eachSpacing*i];
+      context.beginPath();
+      context.setLineWidth(funnelOption.borderWidth * opts.pixelRatio);
+      context.setStrokeStyle(funnelOption.borderColor);
+      context.setFillStyle(hexToRgb(series[i].color, funnelOption.fillOpacity));
+      context.moveTo(0, 0);
+      context.lineTo(-series[i-1].radius, 0);
+      context.lineTo(-series[i].radius, -eachSpacing);
+      context.lineTo(series[i].radius, -eachSpacing);
+      context.lineTo(series[i-1].radius, 0);
+      context.lineTo(0, 0);
+      context.closePath();
+      context.fill();
+      if(funnelOption.border == true){
+        context.stroke();
+      }
+    }
+    context.translate(0,-eachSpacing)
+  }
+  context.restore();
+  
+  if (opts.dataLabel !== false && process === 1) {
+    drawFunnelText(series, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);
+  }
+  
+  return {
+    center: centerPosition,
+    radius: radius,
+    series: series
+  };
+}
+
+function drawFunnelText(series, opts, context, eachSpacing, labelAlign,activeWidth, centerPosition){
+  for(let i=0;i<series.length;i++){
+    let item = series[i];
+    let startX,endX,startY,fontSize;
+    let text = item.format ? item.format(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) +'%';
+    if(labelAlign == 'right'){
+      if(i==0){
+        startX=(item.funnelArea[2]+centerPosition.x)/2;
+      }else{
+        startX=(item.funnelArea[2]+series[i-1].funnelArea[2])/2;
+      }
+      endX=startX+activeWidth*2;
+      startY=item.funnelArea[1]+eachSpacing/2;
+      fontSize = item.textSize || opts.fontSize;
+      context.setLineWidth(1 * opts.pixelRatio);
+      context.setStrokeStyle(item.color);
+      context.setFillStyle(item.color);
+      context.beginPath();
+      context.moveTo(startX,startY );
+      context.lineTo(endX,startY);
+      context.stroke();
+      context.closePath();
+      context.beginPath();
+      context.moveTo(endX, startY);
+      context.arc(endX, startY, 2, 0, 2 * Math.PI);
+      context.closePath();
+      context.fill();
+      context.beginPath();
+      context.setFontSize(fontSize);
+      context.setFillStyle(item.textColor || '#666666');
+      context.fillText(text, endX+5, startY + fontSize/2 -2);
+      context.closePath();
+      context.stroke();
+      context.closePath();
+    }else{
+      if(i==0){
+        startX=(item.funnelArea[0]+centerPosition.x)/2;
+      }else{
+        startX=(item.funnelArea[0]+series[i-1].funnelArea[0])/2;
+      }
+      endX=startX-activeWidth*2;
+      startY=item.funnelArea[1]+eachSpacing/2;
+      fontSize = item.textSize || opts.fontSize;
+      context.setLineWidth(1 * opts.pixelRatio);
+      context.setStrokeStyle(item.color);
+      context.setFillStyle(item.color);
+      context.beginPath();
+      context.moveTo(startX,startY );
+      context.lineTo(endX,startY);
+      context.stroke();
+      context.closePath();
+      context.beginPath();
+      context.moveTo(endX, startY);
+      context.arc(endX, startY, 2, 0, 2 * Math.PI);
+      context.closePath();
+      context.fill();
+      context.beginPath();
+      context.setFontSize(fontSize);
+      context.setFillStyle(item.textColor || '#666666');
+      context.fillText(text, endX-5-measureText(text), startY + fontSize/2 -2);
+      context.closePath();
+      context.stroke();
+      context.closePath();
+    }
+    
+  }
+}
+
+
+function drawCanvas(opts, context) {
+  context.draw();
+}
+
+var Timing = {
+  easeIn: function easeIn(pos) {
+    return Math.pow(pos, 3);
+  },
+  easeOut: function easeOut(pos) {
+    return Math.pow(pos - 1, 3) + 1;
+  },
+  easeInOut: function easeInOut(pos) {
+    if ((pos /= 0.5) < 1) {
+      return 0.5 * Math.pow(pos, 3);
+    } else {
+      return 0.5 * (Math.pow(pos - 2, 3) + 2);
+    }
+  },
+  linear: function linear(pos) {
+    return pos;
+  }
+};
+
+function Animation(opts) {
+  this.isStop = false;
+  opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;
+  opts.timing = opts.timing || 'linear';
+  var delay = 17;
+
+  function createAnimationFrame() {
+    if (typeof setTimeout !== 'undefined') {
+      return function(step, delay) {
+        setTimeout(function() {
+          var timeStamp = +new Date();
+          step(timeStamp);
+        }, delay);
+      };
+    } else if (typeof requestAnimationFrame !== 'undefined') {
+      return requestAnimationFrame;
+    } else {
+      return function(step) {
+        step(null);
+      };
+    }
+  };
+  var animationFrame = createAnimationFrame();
+  var startTimeStamp = null;
+  var _step = function step(timestamp) {
+    if (timestamp === null || this.isStop === true) {
+      opts.onProcess && opts.onProcess(1);
+      opts.onAnimationFinish && opts.onAnimationFinish();
+      return;
+    }
+    if (startTimeStamp === null) {
+      startTimeStamp = timestamp;
+    }
+    if (timestamp - startTimeStamp < opts.duration) {
+      var process = (timestamp - startTimeStamp) / opts.duration;
+      var timingFunction = Timing[opts.timing];
+      process = timingFunction(process);
+
+      opts.onProcess && opts.onProcess(process);
+      animationFrame(_step, delay);
+    } else {
+      opts.onProcess && opts.onProcess(1);
+      opts.onAnimationFinish && opts.onAnimationFinish();
+    }
+  };
+  _step = _step.bind(this);
+  animationFrame(_step, delay);
+}
+
+// stop animation immediately
+// and tigger onAnimationFinish
+Animation.prototype.stop = function() {
+  this.isStop = true;
+};
+
+function drawCharts(type, opts, config, context) {
+  var _this = this;
+  var series = opts.series;
+  var categories = opts.categories;
+  series = fillSeries(series, opts, config);
+  var duration = opts.animation ? opts.duration : 0;
+  _this.animationInstance && _this.animationInstance.stop();
+  var seriesMA = null;
+  if (type == 'candle') {
+    let average = assign({}, opts.extra.candle.average);
+    if (average.show) {
+      seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);
+      seriesMA = fillSeries(seriesMA, opts, config);
+      opts.seriesMA = seriesMA;
+    } else if (opts.seriesMA) {
+      seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);
+    } else {
+      seriesMA = series;
+    }
+  } else {
+    seriesMA = series;
+  }
+
+  /* 过滤掉show=false的series */
+  opts._series_ = series = filterSeries(series);
+
+  //重新计算图表区域
+
+  opts.area = new Array(4);
+  //复位绘图区域
+  for (let j = 0; j < 4; j++) {
+    opts.area[j] = opts.padding[j];
+  }
+
+  //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域
+  var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData),
+    legendHeight = _calLegendData.area.wholeHeight,
+    legendWidth = _calLegendData.area.wholeWidth;
+    
+  switch (opts.legend.position) {
+    case 'top':
+      opts.area[0] += legendHeight;
+      break;
+    case 'bottom':
+      opts.area[2] += legendHeight;
+      break;
+    case 'left':
+      opts.area[3] += legendWidth;
+      break;
+    case 'right':
+      opts.area[1] += legendWidth;
+      break;
+  }
+
+  let _calYAxisData = {},yAxisWidth = 0;
+  if (opts.type === 'line' || opts.type === 'column' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle') {
+    _calYAxisData = calYAxisData(series, opts, config);
+    yAxisWidth = _calYAxisData.yAxisWidth;
+    //如果显示Y轴标题
+    if(opts.yAxis.showTitle){
+      let maxTitleHeight=0;
+      for(let i=0;i<opts.yAxis.data.length;i++){
+        maxTitleHeight = Math.max(maxTitleHeight,opts.yAxis.data[i].titleFontSize?opts.yAxis.data[i].titleFontSize:config.fontSize)
+      }
+      opts.area[0] += (maxTitleHeight+6)*opts.pixelRatio;
+    }
+    let rightIndex=0,leftIndex=0;
+    //计算主绘图区域左右位置
+    for(let i=0;i<yAxisWidth.length;i++){
+      if(yAxisWidth[i].position=='left'){
+        if(leftIndex>0){
+          opts.area[3] += yAxisWidth[i].width + opts.yAxis.padding;
+        }else{
+          opts.area[3] += yAxisWidth[i].width;
+        }
+        leftIndex +=1;
+      }else{
+        if(rightIndex>0){
+          opts.area[1] += yAxisWidth[i].width + opts.yAxis.padding;
+        }else{
+          opts.area[1] += yAxisWidth[i].width;
+        }
+        rightIndex +=1;
+      }
+    }
+  }else{
+    config.yAxisWidth = yAxisWidth;
+  }
+  opts.chartData.yAxisData = _calYAxisData;
+
+  if (opts.categories && opts.categories.length) {
+    opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);
+    let _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing),
+      xAxisHeight = _calCategoriesData.xAxisHeight,
+      angle = _calCategoriesData.angle;
+    config.xAxisHeight = xAxisHeight;
+    config._xAxisTextAngle_ = angle;
+    opts.area[2] += xAxisHeight;
+    opts.chartData.categoriesData = _calCategoriesData;
+  }else{
+		if (opts.type === 'line' || opts.type === 'area' || opts.type === 'points') {
+			opts.chartData.xAxisData = calXAxisData(series, opts, config);
+			categories=opts.chartData.xAxisData.rangesFormat;
+			let _calCategoriesData = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing),
+			  xAxisHeight = _calCategoriesData.xAxisHeight,
+			  angle = _calCategoriesData.angle;
+			config.xAxisHeight = xAxisHeight;
+			config._xAxisTextAngle_ = angle;
+			opts.area[2] += xAxisHeight;
+			opts.chartData.categoriesData = _calCategoriesData;
+		}else{
+			opts.chartData.xAxisData={
+				xAxisPoints: []
+			};
+		}
+	}
+  //计算右对齐偏移距离
+  if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {
+    let offsetLeft = 0,
+      xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
+      startX = opts.chartData.xAxisData.startX,
+      endX = opts.chartData.xAxisData.endX,
+      eachSpacing = opts.chartData.xAxisData.eachSpacing;
+    let totalWidth = eachSpacing * (xAxisPoints.length - 1);
+    let screenWidth = endX - startX;
+    offsetLeft = screenWidth - totalWidth;
+    _this.scrollOption = {
+      currentOffset: offsetLeft,
+      startTouchX: offsetLeft,
+      distance: 0,
+      lastMoveTime: 0
+    };
+    opts._scrollDistance_ = offsetLeft;
+  }
+
+  if (type === 'pie' || type === 'ring' || type === 'rose') {
+    config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA);
+  }
+
+  switch (type) {
+    case 'word':
+      let wordOption = assign({},{
+        type: 'normal',
+        autoColors: true
+      },opts.extra.word);
+      if(opts.updateData==true || opts.updateData==undefined){
+        opts.chartData.wordCloudData=getWordCloudPoint(opts,wordOption.type);
+      }
+      this.animationInstance = new Animation({
+        timing: 'easeInOut',
+        duration: duration,
+        onProcess: function(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          drawWordCloudDataPoints(series, opts, config, context,process);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+    break;
+    case 'map':
+      context.clearRect(0, 0, opts.width, opts.height);
+      drawMapDataPoints(series, opts, config, context);
+    break;
+    case 'funnel':
+      this.animationInstance = new Animation({
+        timing: 'easeInOut',
+        duration: duration,
+        onProcess: function(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);
+          drawLegend(opts.series, opts, config, context, opts.chartData);
+          drawToolTipBridge(opts, config, context, process);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+    break;
+    case 'line':
+      this.animationInstance = new Animation({
+        timing: 'easeIn',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          drawYAxisGrid(categories, opts, config, context);
+          drawXAxis(categories, opts, config, context);
+          var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),
+            xAxisPoints = _drawLineDataPoints.xAxisPoints,
+            calPoints = _drawLineDataPoints.calPoints,
+            eachSpacing = _drawLineDataPoints.eachSpacing;
+          opts.chartData.xAxisPoints = xAxisPoints;
+          opts.chartData.calPoints = calPoints;
+          opts.chartData.eachSpacing = eachSpacing;
+          drawYAxis(series, opts, config, context);
+          if (opts.enableMarkLine !== false && process === 1) {
+            drawMarkLine(opts, config, context);
+          }
+          drawLegend(opts.series, opts, config, context, opts.chartData);
+          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+          drawCanvas(opts, context);
+
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+    case 'mix':
+      this.animationInstance = new Animation({
+        timing: 'easeIn',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          drawYAxisGrid(categories, opts, config, context);
+          drawXAxis(categories, opts, config, context);
+          var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),
+            xAxisPoints = _drawMixDataPoints.xAxisPoints,
+            calPoints = _drawMixDataPoints.calPoints,
+            eachSpacing = _drawMixDataPoints.eachSpacing;
+          opts.chartData.xAxisPoints = xAxisPoints;
+          opts.chartData.calPoints = calPoints;
+          opts.chartData.eachSpacing = eachSpacing;
+          drawYAxis(series, opts, config, context);
+          if (opts.enableMarkLine !== false && process === 1) {
+            drawMarkLine(opts, config, context);
+          }
+          drawLegend(opts.series, opts, config, context, opts.chartData);
+          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+    case 'column':
+      this.animationInstance = new Animation({
+        timing: 'easeIn',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          drawYAxisGrid(categories, opts, config, context);
+          drawXAxis(categories, opts, config, context);
+          var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),
+            xAxisPoints = _drawColumnDataPoints.xAxisPoints,
+            calPoints = _drawColumnDataPoints.calPoints,
+            eachSpacing = _drawColumnDataPoints.eachSpacing;
+          opts.chartData.xAxisPoints = xAxisPoints;
+          opts.chartData.calPoints = calPoints;
+          opts.chartData.eachSpacing = eachSpacing;
+          drawYAxis(series, opts, config, context);
+          if (opts.enableMarkLine !== false && process === 1) {
+            drawMarkLine(opts, config, context);
+          }
+          drawLegend(opts.series, opts, config, context, opts.chartData);
+          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+    case 'area':
+      this.animationInstance = new Animation({
+        timing: 'easeIn',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          drawYAxisGrid(categories, opts, config, context);
+          drawXAxis(categories, opts, config, context);
+          var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),
+            xAxisPoints = _drawAreaDataPoints.xAxisPoints,
+            calPoints = _drawAreaDataPoints.calPoints,
+            eachSpacing = _drawAreaDataPoints.eachSpacing;
+          opts.chartData.xAxisPoints = xAxisPoints;
+          opts.chartData.calPoints = calPoints;
+          opts.chartData.eachSpacing = eachSpacing;
+          drawYAxis(series, opts, config, context);
+          if (opts.enableMarkLine !== false && process === 1) {
+            drawMarkLine(opts, config, context);
+          }
+          drawLegend(opts.series, opts, config, context, opts.chartData);
+          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+    case 'ring':
+    case 'pie':
+      this.animationInstance = new Animation({
+        timing: 'easeInOut',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);
+          drawLegend(opts.series, opts, config, context, opts.chartData);
+          drawToolTipBridge(opts, config, context, process);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+    case 'rose':
+      this.animationInstance = new Animation({
+        timing: 'easeInOut',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);
+          drawLegend(opts.series, opts, config, context, opts.chartData);
+          drawToolTipBridge(opts, config, context, process);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+    case 'radar':
+      this.animationInstance = new Animation({
+        timing: 'easeInOut',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);
+          drawLegend(opts.series, opts, config, context, opts.chartData);
+          drawToolTipBridge(opts, config, context, process);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+    case 'arcbar':
+      this.animationInstance = new Animation({
+        timing: 'easeInOut',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+    case 'gauge':
+      this.animationInstance = new Animation({
+        timing: 'easeInOut',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+    case 'candle':
+      this.animationInstance = new Animation({
+        timing: 'easeIn',
+        duration: duration,
+        onProcess: function onProcess(process) {
+          context.clearRect(0, 0, opts.width, opts.height);
+          if (opts.rotate) {
+            contextRotate(context, opts);
+          }
+          drawYAxisGrid(categories, opts, config, context);
+          drawXAxis(categories, opts, config, context);
+          var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),
+            xAxisPoints = _drawCandleDataPoints.xAxisPoints,
+            calPoints = _drawCandleDataPoints.calPoints,
+            eachSpacing = _drawCandleDataPoints.eachSpacing;
+          opts.chartData.xAxisPoints = xAxisPoints;
+          opts.chartData.calPoints = calPoints;
+          opts.chartData.eachSpacing = eachSpacing;
+          drawYAxis(series, opts, config, context);
+          if (opts.enableMarkLine !== false && process === 1) {
+            drawMarkLine(opts, config, context);
+          }
+          if (seriesMA) {
+            drawLegend(seriesMA, opts, config, context, opts.chartData);
+          } else {
+            drawLegend(opts.series, opts, config, context, opts.chartData);
+          }
+          drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
+          drawCanvas(opts, context);
+        },
+        onAnimationFinish: function onAnimationFinish() {
+          _this.event.trigger('renderComplete');
+        }
+      });
+      break;
+  }
+}
+
+// simple event implement
+
+function Event() {
+  this.events = {};
+}
+
+Event.prototype.addEventListener = function(type, listener) {
+  this.events[type] = this.events[type] || [];
+  this.events[type].push(listener);
+};
+
+Event.prototype.delEventListener = function(type) {
+	this.events[type] = [];
+};
+
+Event.prototype.trigger = function() {
+  for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+    args[_key] = arguments[_key];
+  }
+
+  var type = args[0];
+  var params = args.slice(1);
+  if (!!this.events[type]) {
+    this.events[type].forEach(function(listener) {
+      try {
+        listener.apply(null, params);
+      } catch (e) {
+        console.error(e);
+      }
+    });
+  }
+};
+
+var Charts = function Charts(opts) {
+  opts.pixelRatio = opts.pixelRatio ? opts.pixelRatio : 1;
+  opts.fontSize = opts.fontSize ? opts.fontSize * opts.pixelRatio : 13 * opts.pixelRatio;
+  opts.title = assign({}, opts.title);
+  opts.subtitle = assign({}, opts.subtitle);
+  opts.duration = opts.duration ? opts.duration : 1000;
+  opts.yAxis = assign({}, {
+    data:[],
+    showTitle:false,
+    disabled:false,
+    disableGrid:false,
+    splitNumber:5,
+    gridType: 'solid',
+    dashLength: 4 * opts.pixelRatio,
+    gridColor:'#cccccc',
+    padding:10,
+    fontColor:'#666666'
+  }, opts.yAxis);
+  opts.yAxis.dashLength *= opts.pixelRatio;
+  opts.yAxis.padding *= opts.pixelRatio;
+  opts.xAxis = assign({}, {
+    rotateLabel: false,
+    type: 'calibration',
+    gridType: 'solid',
+    dashLength: 4,
+    scrollAlign: 'left',
+    boundaryGap:'center',
+    axisLine:true,
+    axisLineColor:'#cccccc'
+  }, opts.xAxis);
+  opts.xAxis.dashLength *= opts.pixelRatio;
+  opts.legend = assign({}, {
+    show: true,
+    position: 'bottom',
+    float: 'center',
+    backgroundColor: 'rgba(0,0,0,0)',
+    borderColor: 'rgba(0,0,0,0)',
+    borderWidth: 0,
+    padding: 5,
+    margin: 5,
+    itemGap: 10,
+    fontSize: opts.fontSize,
+    lineHeight: opts.fontSize,
+    fontColor: '#333333',
+    format: {},
+    hiddenColor: '#CECECE'
+  }, opts.legend);
+  opts.legend.borderWidth = opts.legend.borderWidth * opts.pixelRatio;
+  opts.legend.itemGap = opts.legend.itemGap * opts.pixelRatio;
+  opts.legend.padding = opts.legend.padding * opts.pixelRatio;
+  opts.legend.margin = opts.legend.margin * opts.pixelRatio;
+  opts.extra = assign({}, opts.extra);
+  opts.rotate = opts.rotate ? true : false;
+  opts.animation = opts.animation ? true : false;
+	opts.rotate = opts.rotate ? true : false;
+	opts.canvas2d = opts.canvas2d ? true : false;
+
+  let config$$1 = JSON.parse(JSON.stringify(config));
+  config$$1.colors = opts.colors ? opts.colors : config$$1.colors;
+  config$$1.yAxisTitleWidth = opts.yAxis.disabled !== true && opts.yAxis.title ? config$$1.yAxisTitleWidth : 0;
+  if (opts.type == 'pie' || opts.type == 'ring') {
+    config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pixelRatio || config$$1.pieChartLinePadding * opts.pixelRatio;
+  }
+  if (opts.type == 'rose') {
+    config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pixelRatio || config$$1.pieChartLinePadding * opts.pixelRatio;
+  }
+  config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pixelRatio;
+  config$$1.yAxisSplit = opts.yAxis.splitNumber ? opts.yAxis.splitNumber : config.yAxisSplit;
+
+  //屏幕旋转
+  config$$1.rotate = opts.rotate;
+  if (opts.rotate) {
+    let tempWidth = opts.width;
+    let tempHeight = opts.height;
+    opts.width = tempHeight;
+    opts.height = tempWidth;
+  }
+
+  //适配高分屏
+  opts.padding = opts.padding ? opts.padding : config$$1.padding;
+  for (let i = 0; i < 4; i++) {
+    opts.padding[i] *= opts.pixelRatio;
+  }
+  config$$1.yAxisWidth = config.yAxisWidth * opts.pixelRatio;
+  config$$1.xAxisHeight = config.xAxisHeight * opts.pixelRatio;
+  if (opts.enableScroll && opts.xAxis.scrollShow) {
+    config$$1.xAxisHeight += 6 * opts.pixelRatio;
+  }
+  config$$1.xAxisLineHeight = config.xAxisLineHeight * opts.pixelRatio;
+  config$$1.fontSize = opts.fontSize;
+  config$$1.titleFontSize = config.titleFontSize * opts.pixelRatio;
+  config$$1.subtitleFontSize = config.subtitleFontSize * opts.pixelRatio;
+  config$$1.toolTipPadding = config.toolTipPadding * opts.pixelRatio;
+  config$$1.toolTipLineHeight = config.toolTipLineHeight * opts.pixelRatio;
+  config$$1.columePadding = config.columePadding * opts.pixelRatio;
+  this.context = opts.context ? opts.context : uni.createCanvasContext(opts.canvasId, opts.$this);
+	
+	if(opts.canvas2d){
+		this.context.setStrokeStyle = function(e){ return this.strokeStyle=e; }
+		this.context.setLineWidth = function(e){ return this.lineWidth=e; }
+		this.context.setLineCap = function(e){ return this.lineCap=e; }
+		this.context.setFontSize = function(e){ return this.font=e+"px sans-serif"; }
+		this.context.setFillStyle = function(e){ return this.fillStyle=e; }
+		this.context.draw = function(){ }
+	}
+  /* 兼容原生H5
+  this.context = document.getElementById(opts.canvasId).getContext("2d");
+  this.context.setStrokeStyle = function(e){ return this.strokeStyle=e; }
+  this.context.setLineWidth = function(e){ return this.lineWidth=e; }
+  this.context.setLineCap = function(e){ return this.lineCap=e; }
+  this.context.setFontSize = function(e){ return this.font=e+"px sans-serif"; }
+  this.context.setFillStyle = function(e){ return this.fillStyle=e; }
+  this.context.draw = function(){ }
+  */
+
+  opts.chartData = {};
+  this.event = new Event();
+  this.scrollOption = {
+    currentOffset: 0,
+    startTouchX: 0,
+    distance: 0,
+    lastMoveTime: 0
+  };
+
+  this.opts = opts;
+  this.config = config$$1;
+
+  drawCharts.call(this, opts.type, opts, config$$1, this.context);
+};
+
+Charts.prototype.updateData = function() {
+  let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+  this.opts = assign({}, this.opts, data);
+  this.opts.updateData = true;
+  let scrollPosition = data.scrollPosition || 'current';
+  switch (scrollPosition) {
+    case 'current':
+      this.opts._scrollDistance_ = this.scrollOption.currentOffset;
+      break;
+    case 'left':
+      this.opts._scrollDistance_ = 0;
+      this.scrollOption = {
+        currentOffset: 0,
+        startTouchX: 0,
+        distance: 0,
+        lastMoveTime: 0
+      };
+      break;
+    case 'right':
+      let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config),
+        yAxisWidth = _calYAxisData.yAxisWidth;
+      this.config.yAxisWidth = yAxisWidth;
+      let offsetLeft = 0;
+      let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
+        xAxisPoints = _getXAxisPoints0.xAxisPoints,
+        startX = _getXAxisPoints0.startX,
+        endX = _getXAxisPoints0.endX,
+        eachSpacing = _getXAxisPoints0.eachSpacing;
+      let totalWidth = eachSpacing * (xAxisPoints.length - 1);
+      let screenWidth = endX - startX;
+      offsetLeft = screenWidth - totalWidth;
+      this.scrollOption = {
+        currentOffset: offsetLeft,
+        startTouchX: offsetLeft,
+        distance: 0,
+        lastMoveTime: 0
+      };
+      this.opts._scrollDistance_ = offsetLeft;
+      break;
+  }
+  drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+};
+
+Charts.prototype.zoom = function() {
+  var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;
+  if (this.opts.enableScroll !== true) {
+    console.log('请启用滚动条后使用!')
+    return;
+  }
+  //当前屏幕中间点
+  let centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(
+    this.opts.xAxis.itemCount / 2);
+  this.opts.animation = false;
+  this.opts.xAxis.itemCount = val.itemCount;
+  //重新计算x轴偏移距离
+  let _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config),
+    yAxisWidth = _calYAxisData.yAxisWidth;
+  this.config.yAxisWidth = yAxisWidth;
+  let offsetLeft = 0;
+  let _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
+    xAxisPoints = _getXAxisPoints0.xAxisPoints,
+    startX = _getXAxisPoints0.startX,
+    endX = _getXAxisPoints0.endX,
+    eachSpacing = _getXAxisPoints0.eachSpacing;
+  let centerLeft = eachSpacing * centerPoint;
+  let screenWidth = endX - startX;
+  let MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);
+  offsetLeft = screenWidth / 2 - centerLeft;
+  if (offsetLeft > 0) {
+    offsetLeft = 0;
+  }
+  if (offsetLeft < MaxLeft) {
+    offsetLeft = MaxLeft;
+  }
+  this.scrollOption = {
+    currentOffset: offsetLeft,
+    startTouchX: offsetLeft,
+    distance: 0,
+    lastMoveTime: 0
+  };
+  this.opts._scrollDistance_ = offsetLeft;
+  drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+};
+
+Charts.prototype.stopAnimation = function() {
+  this.animationInstance && this.animationInstance.stop();
+};
+
+Charts.prototype.addEventListener = function(type, listener) {
+  this.event.addEventListener(type, listener);
+};
+
+Charts.prototype.delEventListener = function(type) {
+  this.event.delEventListener(type);
+};
+
+Charts.prototype.getCurrentDataIndex = function(e) {
+  var touches = null;
+  if (e.changedTouches) {
+    touches = e.changedTouches[0];
+  } else {
+    touches = e.mp.changedTouches[0];
+  }
+  if (touches) {
+    let _touches$ = getTouches(touches, this.opts, e);
+    if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose') {
+      return findPieChartCurrentIndex({
+        x: _touches$.x,
+        y: _touches$.y
+      }, this.opts.chartData.pieData);
+    } else if (this.opts.type === 'radar') {
+      return findRadarChartCurrentIndex({
+        x: _touches$.x,
+        y: _touches$.y
+      }, this.opts.chartData.radarData, this.opts.categories.length);
+    } else if (this.opts.type === 'funnel') {
+      return findFunnelChartCurrentIndex({
+        x: _touches$.x,
+        y: _touches$.y
+      }, this.opts.chartData.funnelData);
+    } else if (this.opts.type === 'map') {
+      return findMapChartCurrentIndex({
+        x: _touches$.x,
+        y: _touches$.y
+      }, this.opts);
+    }else if (this.opts.type === 'word') {
+      return findWordChartCurrentIndex({
+        x: _touches$.x,
+        y: _touches$.y
+      }, this.opts.chartData.wordCloudData);
+    } else {
+      return findCurrentIndex({
+        x: _touches$.x,
+        y: _touches$.y
+      }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
+    }
+  }
+  return -1;
+};
+
+Charts.prototype.getLegendDataIndex = function(e) {
+  var touches = null;
+  if (e.changedTouches) {
+    touches = e.changedTouches[0];
+  } else {
+    touches = e.mp.changedTouches[0];
+  }
+  if (touches) {
+    let _touches$ = getTouches(touches, this.opts, e);
+    return findLegendIndex({
+      x: _touches$.x,
+      y: _touches$.y
+    }, this.opts.chartData.legendData);
+  }
+  return -1;
+};
+
+Charts.prototype.touchLegend = function(e) {
+  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var touches = null;
+  if (e.changedTouches) {
+    touches = e.changedTouches[0];
+  } else {
+    touches = e.mp.changedTouches[0];
+  }
+  if (touches) {
+    var _touches$ = getTouches(touches, this.opts, e);
+    var index = this.getLegendDataIndex(e);
+    if (index >= 0) {
+      this.opts.series[index].show = !this.opts.series[index].show;
+      this.opts.animation = option.animation ? true : false;
+			this.opts._scrollDistance_= this.scrollOption.currentOffset;
+      drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
+    }
+  }
+
+};
+
+Charts.prototype.showToolTip = function(e) {
+  var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+  var touches = null;
+  if (e.changedTouches) {
+    touches = e.changedTouches[0];
+  } else {
+    touches = e.mp.changedTouches[0];
+  }
+  if (!touches) {
+    console.log("touchError");
+  }
+  var _touches$ = getTouches(touches, this.opts, e);
+  var currentOffset = this.scrollOption.currentOffset;
+  var opts = assign({}, this.opts, {
+    _scrollDistance_: currentOffset,
+    animation: false
+  });
+  if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column') {
+    var index = option.index==undefined? this.getCurrentDataIndex(e):option.index ;
+    if (index > -1) {
+      var seriesData = getSeriesDataItem(this.opts.series, index);
+      if (seriesData.length !== 0) {
+        var _getToolTipData = getToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option),
+          textList = _getToolTipData.textList,
+          offset = _getToolTipData.offset;
+        offset.y = _touches$.y;
+        opts.tooltip = {
+          textList: option.textList?option.textList:textList,
+          offset: offset,
+          option: option,
+          index: index
+        };
+      }
+    }
+    drawCharts.call(this, opts.type, opts, this.config, this.context);
+  }
+  if (this.opts.type === 'mix') {
+    var index = option.index==undefined? this.getCurrentDataIndex(e):option.index ;
+    if (index > -1) {
+      var currentOffset = this.scrollOption.currentOffset;
+      var opts = assign({}, this.opts, {
+        _scrollDistance_: currentOffset,
+        animation: false
+      });
+      var seriesData = getSeriesDataItem(this.opts.series, index);
+      if (seriesData.length !== 0) {
+        var _getMixToolTipData = getMixToolTipData(seriesData, this.opts.chartData.calPoints, index, this.opts.categories,option),
+          textList = _getMixToolTipData.textList,
+          offset = _getMixToolTipData.offset;
+        offset.y = _touches$.y;
+        opts.tooltip = {
+          textList: option.textList?option.textList:textList,
+          offset: offset,
+          option: option,
+          index: index
+        };
+      }
+    }
+    drawCharts.call(this, opts.type, opts, this.config, this.context);
+  }
+  if (this.opts.type === 'candle') {
+    var index = option.index==undefined? this.getCurrentDataIndex(e):option.index ;
+    if (index > -1) {
+      var currentOffset = this.scrollOption.currentOffset;
+      var opts = assign({}, this.opts, {
+        _scrollDistance_: currentOffset,
+        animation: false
+      });
+      var seriesData = getSeriesDataItem(this.opts.series, index);
+      if (seriesData.length !== 0) {
+        var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts.chartData.calPoints,
+            index, this.opts.categories, this.opts.extra.candle, option),
+          textList = _getToolTipData.textList,
+          offset = _getToolTipData.offset;
+        offset.y = _touches$.y;
+        opts.tooltip = {
+          textList: option.textList?option.textList:textList,
+          offset: offset,
+          option: option,
+          index: index
+        };
+      }
+    }
+    drawCharts.call(this, opts.type, opts, this.config, this.context);
+  }
+  if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose'||this.opts.type === 'funnel' ) {
+    var index = option.index==undefined? this.getCurrentDataIndex(e):option.index ;
+    if (index > -1) {
+      var currentOffset = this.scrollOption.currentOffset;
+      var opts = assign({}, this.opts, {
+        _scrollDistance_: currentOffset,
+        animation: false
+      });
+      var seriesData = this.opts._series_[index];
+      var textList = [{
+        text: option.format ? option.format(seriesData) : seriesData.name + ': ' + seriesData.data,
+        color: seriesData.color
+      }];
+      var offset = {
+        x: _touches$.x,
+        y: _touches$.y
+      };
+      opts.tooltip = {
+        textList: option.textList?option.textList:textList,
+        offset: offset,
+        option: option,
+        index: index
+      };
+    }
+    drawCharts.call(this, opts.type, opts, this.config, this.context);
+  }
+  if (this.opts.type === 'map'||this.opts.type === 'word') {
+    var index = option.index==undefined? this.getCurrentDataIndex(e):option.index ;
+    if (index > -1) {
+      var currentOffset = this.scrollOption.currentOffset;
+      var opts = assign({}, this.opts, {
+        _scrollDistance_: currentOffset,
+        animation: false
+      });
+      var seriesData = this.opts._series_[index];
+      var textList = [{
+        text: option.format ? option.format(seriesData) : seriesData.properties.name ,color: seriesData.color
+      }];
+      var offset = {
+        x: _touches$.x,
+        y: _touches$.y
+      };
+      opts.tooltip = {
+        textList: option.textList?option.textList:textList,
+        offset: offset,
+        option: option,
+        index: index
+      };
+    }
+    opts.updateData = false;
+    drawCharts.call(this, opts.type, opts, this.config, this.context);
+  }
+  if (this.opts.type === 'radar') {
+    var index = option.index==undefined? this.getCurrentDataIndex(e):option.index ;
+    if (index > -1) {
+      var currentOffset = this.scrollOption.currentOffset;
+      var opts = assign({}, this.opts, {
+        _scrollDistance_: currentOffset,
+        animation: false
+      });
+      var seriesData = getSeriesDataItem(this.opts.series, index);
+      if (seriesData.length !== 0) {
+        var textList = seriesData.map(function(item) {
+          return {
+            text: option.format ? option.format(item) : item.name + ': ' + item.data,color: item.color
+          };
+        });
+        var offset = {
+          x: _touches$.x,
+          y: _touches$.y
+        };
+        opts.tooltip = {
+          textList: option.textList?option.textList:textList,
+          offset: offset,
+          option: option,
+          index: index
+        };
+      }
+    }
+    drawCharts.call(this, opts.type, opts, this.config, this.context);
+  }
+};
+
+Charts.prototype.translate = function(distance) {
+  this.scrollOption = {
+    currentOffset: distance,
+    startTouchX: distance,
+    distance: 0,
+    lastMoveTime: 0
+  };
+  let opts = assign({}, this.opts, {
+    _scrollDistance_: distance,
+    animation: false
+  });
+  drawCharts.call(this, this.opts.type, opts, this.config, this.context);
+};
+
+Charts.prototype.scrollStart = function(e) {
+  var touches = null;
+  if (e.changedTouches) {
+    touches = e.changedTouches[0];
+  } else {
+    touches = e.mp.changedTouches[0];
+  }
+  var _touches$ = getTouches(touches, this.opts, e);
+  if (touches && this.opts.enableScroll === true) {
+    this.scrollOption.startTouchX = _touches$.x;
+  }
+};
+
+Charts.prototype.scroll = function(e) {
+  if (this.scrollOption.lastMoveTime === 0) {
+    this.scrollOption.lastMoveTime = Date.now();
+  }
+  let Limit = this.opts.extra.touchMoveLimit || 20;
+  let currMoveTime = Date.now();
+  let duration = currMoveTime - this.scrollOption.lastMoveTime;
+  if (duration < Math.floor(1000 / Limit)) return;
+  this.scrollOption.lastMoveTime = currMoveTime;
+  var touches = null;
+  if (e.changedTouches) {
+    touches = e.changedTouches[0];
+  } else {
+    touches = e.mp.changedTouches[0];
+  }
+  if (touches && this.opts.enableScroll === true) {
+    var _touches$ = getTouches(touches, this.opts, e);
+    var _distance;
+    _distance = _touches$.x - this.scrollOption.startTouchX;
+    var currentOffset = this.scrollOption.currentOffset;
+    var validDistance = calValidDistance(this,currentOffset + _distance, this.opts.chartData, this.config, this.opts);
+    this.scrollOption.distance = _distance = validDistance - currentOffset;
+    var opts = assign({}, this.opts, {
+      _scrollDistance_: currentOffset + _distance,
+      animation: false
+    });
+    drawCharts.call(this, opts.type, opts, this.config, this.context);
+    return currentOffset + _distance;
+  }
+};
+
+Charts.prototype.scrollEnd = function(e) {
+  if (this.opts.enableScroll === true) {
+    var _scrollOption = this.scrollOption,
+      currentOffset = _scrollOption.currentOffset,
+      distance = _scrollOption.distance;
+    this.scrollOption.currentOffset = currentOffset + distance;
+    this.scrollOption.distance = 0;
+  }
+};
+if (typeof module === "object" && typeof module.exports === "object") {
+  module.exports = Charts;
+  //export default Charts;//建议使用nodejs的module导出方式,如报错请使用export方式导出
+}
diff --git a/js_sdk/u-charts/u-charts.vue b/js_sdk/u-charts/u-charts.vue
new file mode 100644
index 0000000..daa8422
--- /dev/null
+++ b/js_sdk/u-charts/u-charts.vue
@@ -0,0 +1,443 @@
+<template>
+	<view class="chartsview" :style="{ background: background }">
+		<view v-show="mixinDatacomLoading"><view class="uni-icons-spinner-cycle">Loading...</view></view>
+		<view v-show="mixinDatacomErrorMessage">
+			<view class="uni-icons-info-filled">{{ mixinDatacomErrorMessage }}</view>
+		</view>
+		<canvas
+			:id="canvasId"
+			:canvas-id="canvasId"
+			:style="{ width: cWidth + 'px', height: cHeight + 'px' }"
+			:type="canvas2d?'2d':''"
+			@tap="tap"
+			@cilck="tap"
+			@touch="tap"
+			@touchstart="touchStart"
+			@touchmove="touchMove"
+			@touchend="touchEnd"
+			@mousemove="mouseMove"
+			@mousedown="mousedown"
+			@mouseup="mouseup"
+			@error="error"
+			v-show="showchart"
+		/>
+	</view>
+</template>
+
+<script>
+import qiunCharts from '../../js_sdk/u-charts/u-charts.js';
+import config from '../../js_sdk/u-charts/config.js';
+var canvases = {};
+var options = {};
+var chartdom = null;
+export default {
+	mixins: [uniCloud.mixinDatacom],
+	props: {
+		type: {
+			type: String,
+			default: null
+		},
+		canvasId: {
+			type: String,
+			default: "uchartsid"
+		},
+		canvas2d: {
+			type: Boolean,
+			default: false
+		},
+		pixelRatio: {
+			type: Number,
+			default: 1
+		},
+		background: {
+			type: String,
+			default: 'none'
+		},
+		animation:{
+			type: Boolean,
+			default: true
+		},
+		chartData: {
+			type: Object,
+			default() {
+				return {
+					categories: [],
+					series: []
+				};
+			}
+		},
+		opts: {
+			type: Object,
+			default: () => ({})
+		},
+		inScrollView:{
+			type: Boolean,
+			default: false
+		},
+		show:{
+			type: Boolean,
+			default: false
+		}
+	},
+	data() {
+		return {
+			cWidth: 375,
+			cHeight: 250,
+			showchart: false,
+			defaultOpts: {}
+		};
+	},
+	mounted() {
+		if(this.canvasId=='uchartsid'){
+			console.warn("注意:请在uCharts组件传入canvasId,以免单页多图产生图表错乱!")
+		}
+		if (this.type && config.type.includes(this.type)) {
+			this.defaultOpts = Object.assign({},config[this.type])
+			this.load()
+		} else {
+			this.mixinDatacomLoading = false
+			this.showchart = false
+			this.mixinDatacomErrorMessage = '参数错误:props参数中type类型不正确'
+		}
+		uni.onWindowResize(res => {
+			this.init()
+		})
+	},
+	watch: {
+		chartData(val, oldval) {
+			if (!this.type || !config.type.includes(this.type)) {
+				this.mixinDatacomLoading = false
+				this.showchart = false
+				this.mixinDatacomErrorMessage = '参数错误:props参数中type不正确'
+				return
+			}
+			if (typeof val === 'object') {
+				if (this.collection != '') {
+					if (config.categories.includes(this.type) && val.categories.length == 0 ) {
+						this.mixinDatacomLoading = false
+						this.showchart = false
+						this.mixinDatacomErrorMessage = '数据错误:chartData中缺少categories'
+					} else {
+						this.mixinDatacomLoading = false
+						this.mixinDatacomErrorMessage = null
+						this.$nextTick(function() {
+							this.init()
+						})
+					}
+				} else {
+					this.mixinDatacomLoading = false
+					this.mixinDatacomErrorMessage = null
+					this.$nextTick(function() {
+						this.init()
+					});
+				}
+			} else {
+				this.mixinDatacomLoading = false
+				this.showchart = false
+				this.mixinDatacomErrorMessage = '参数错误:chartData数据类型错误'
+			}
+		},
+		show(val, oldval) {
+			if (val) {
+				if (this.collection != '') {
+					if (config.categories.includes(this.type) && this.chartData.categories.length == 0 ) {
+						this.mixinDatacomLoading = false
+						this.showchart = false
+						this.mixinDatacomErrorMessage = '数据错误:chartData中缺少categories'
+					} else {
+						this.mixinDatacomLoading = false
+						this.mixinDatacomErrorMessage = null
+						this.$nextTick(function() {
+							this.init()
+						})
+					}
+				} else {
+					this.mixinDatacomLoading = false
+					this.mixinDatacomErrorMessage = null
+					this.$nextTick(function() {
+						this.init()
+					});
+				}
+			}
+		}
+	},
+	methods: {
+		load() {
+			if (this.mixinDatacomLoading == true) {
+				return
+			}
+			this.mixinDatacomLoading = true
+			if (this.collection != '') {
+				this.mixinDatacomGet()
+					.then(res => {
+						this.mixinDatacomLoading = false
+						const { data, count } = res.result
+						this.mixinDatacomResData = data
+						if (config.categories.includes(this.type) && this.chartData.categories.length == 0) {
+							this.mixinDatacomLoading = false
+							this.showchart = false
+							this.mixinDatacomErrorMessage = '数据错误:chartData中缺少categories'
+						} else {
+							this.init()
+						}
+					})
+					.catch(err => {
+						if (this.collection == '') {
+							if (this.chartData.series.length > 0) {
+								this.mixinDatacomLoading = false
+								this.init()
+							}
+						} else {
+							this.mixinDatacomLoading = false
+							this.showchart = false
+							this.mixinDatacomErrorMessage = '请求错误:' + err
+						}
+					});
+			}else{
+				if (this.chartData.series.length > 0) {
+					this.mixinDatacomLoading = false
+					this.init()
+				}
+			}
+		},
+		onMixinDatacomPropsChange(needReset, changed) {
+			if (needReset) {
+				if(options[this.canvasId] !== undefined){
+					options[this.canvasId].context.clearRect(0, 0, options[this.canvasId].width, options[this.canvasId].height)
+					options[this.canvasId].context.draw()
+				}
+				this.showchart = false;
+				this.load()
+			}
+		},
+		cloudDataInit() {
+			let temp = {}
+			let series=[]
+			let resdata = this.mixinDatacomResData
+			let categories = options[this.canvasId].categories
+			resdata.map(function (item, index) {
+				if(item.type!=undefined && !temp[item.type]){
+					series.push({name:item.type,data:[]})
+					temp[item.type] = true;
+				}
+			})
+			if(series.length==0){
+				let seriesname="默认分组"
+				if(this.chartData.series.length>0){
+					seriesname=this.chartData.series[0].name
+				}
+				series=[{name:seriesname,data:[]}]
+				for (let j = 0; j < categories.length; j++) {
+					let seriesdata = 0;
+					for (let i = 0; i < resdata.length; i++) {
+						if(resdata[i].label == categories[j]){
+							seriesdata = resdata[i].value
+						}
+					}
+					series[0].data.push(seriesdata)
+				}
+			}else{
+				for (let k = 0; k < series.length; k++) {
+					if(categories.length>0){
+						for (let j = 0; j < categories.length; j++) {
+							let seriesdata = 0;
+							for (let i = 0; i < resdata.length; i++) {
+								if(series[k].name == resdata[i].type && resdata[i].label == categories[j]){
+									seriesdata = resdata[i].value
+								}
+							}
+							series[k].data.push(seriesdata)
+						}
+					}else{
+						for (let i = 0; i < resdata.length; i++) {
+							if(series[k].name == resdata[i].type){
+								series[k].data.push(resdata[i].type)
+							}
+						}
+					}
+				}
+			}
+			return series;
+		},
+		init() {
+			chartdom = uni.createSelectorQuery().in(this).select('.chartsview');
+			chartdom.boundingClientRect(data => {
+				if(data.width>0 && data.height>0){
+					this.cWidth = data.width
+					this.cHeight = data.height
+					options[this.canvasId] = Object.assign(this.defaultOpts, this.opts)
+					options[this.canvasId].canvasId = this.canvasId
+					options[this.canvasId].categories = this.chartData.categories
+					if (this.collection == '') {
+						options[this.canvasId].series = this.chartData.series
+					}else{
+						options[this.canvasId].series = this.cloudDataInit()
+					}
+					options[this.canvasId].background = this.background == 'none' ? '#FFFFFF' : this.background
+					options[this.canvasId].pixelRatio = this.pixelRatio
+					options[this.canvasId].animation = this.animation
+					options[this.canvasId].width = data.width * this.pixelRatio
+					options[this.canvasId].height = data.height * this.pixelRatio
+					if(this.canvas2d){
+						options[this.canvasId].canvas2d = this.canvas2d
+						const query = uni.createSelectorQuery().in(this)
+						query.select('#'+this.canvasId)
+							.fields({ node: true, size: true })
+							.exec((res) => {
+								const canvas = res[0].node
+								const ctx = canvas.getContext('2d')
+								options[this.canvasId].context = ctx
+								canvas.width = data.width * this.pixelRatio
+								canvas.height = data.height * this.pixelRatio
+								canvas._width = data.width * this.pixelRatio
+								canvas._height = data.height * this.pixelRatio
+								if(!this.mixinDatacomLoading){
+									this.showchart = true
+								}
+								this.newChart()
+							})
+					}else{
+						options[this.canvasId].context = uni.createCanvasContext(this.canvasId,this)
+						if(!this.mixinDatacomLoading){
+							this.showchart = true
+						}
+						this.newChart()
+					}
+				}else{
+					this.mixinDatacomLoading = false
+					this.showchart = false
+					this.mixinDatacomErrorMessage = '布局错误:请尝试props绑定show状态'
+				}
+			}).exec();
+		},
+		newChart() {
+			canvases[this.canvasId] = new qiunCharts(options[this.canvasId])
+			canvases[this.canvasId].addEventListener('renderComplete', () => {
+				this.$emit("complete",{complete:true,charts:canvases[this.canvasId]})
+			});
+			canvases[this.canvasId].addEventListener('scrollLeft', () => {
+				this.$emit("scrollLeft",{scrollLeft:true,charts:canvases[this.canvasId]})
+			});
+			canvases[this.canvasId].addEventListener('scrollRight', () => {
+				this.$emit("scrollRight",{scrollRight:true,charts:canvases[this.canvasId]})
+			});
+		},
+		tap(e) {
+			let currentIndex=null
+			let legendIndex=null
+			if(this.inScrollView){
+				e.type = 'click'
+			}
+			if (e.type == 'click') {
+				chartdom = uni.createSelectorQuery().in(this).select('.chartsview')
+				chartdom.boundingClientRect(data => {
+					e.changedTouches.unshift({ x: e.detail.x - data.left, y: e.detail.y - data.top })
+					e.mp.changedTouches.unshift({ x: e.detail.x - data.left, y: e.detail.y - data.top })
+					canvases[this.canvasId].touchLegend(e)
+					canvases[this.canvasId].showToolTip(e, {
+						format: function(item, category) {
+							if(category){
+								return category + ' ' + item.name + ':' + item.data
+							}else{
+								return item.name + ':' + item.data
+							}
+						}
+					})
+					currentIndex=canvases[this.canvasId].getCurrentDataIndex(e)
+					legendIndex=canvases[this.canvasId].getLegendDataIndex(e) 
+					this.$emit("getIndex",{event:e,currentIndex:currentIndex,legendIndex:legendIndex,charts:canvases[this.canvasId]})
+				}).exec();
+			} else {
+				e.changedTouches.unshift({ x: e.detail.x - e.currentTarget.offsetLeft, y: e.detail.y - e.currentTarget.offsetTop })
+				e.mp.changedTouches.unshift({ x: e.detail.x - e.currentTarget.offsetLeft, y: e.detail.y - e.currentTarget.offsetTop })
+				canvases[this.canvasId].touchLegend(e)
+				canvases[this.canvasId].showToolTip(e, {
+					format: function(item, category) {
+						if(category){
+							return category + ' ' + item.name + ':' + item.data
+						}else{
+							return item.name + ':' + item.data
+						}
+					}
+				});
+				currentIndex=canvases[this.canvasId].getCurrentDataIndex(e)
+				legendIndex=canvases[this.canvasId].getLegendDataIndex(e) 
+				this.$emit("getIndex",{event:e,currentIndex:currentIndex,legendIndex:legendIndex,charts:canvases[this.canvasId]})
+			}
+		},
+		touchStart(e) {
+			canvases[this.canvasId].scrollStart(e)
+			this.$emit("touchStart",{event:e,charts:canvases[this.canvasId]})
+		},
+		touchMove(e) {
+			canvases[this.canvasId].scroll(e)
+			this.$emit("touchMove",{event:e,charts:canvases[this.canvasId]})
+		},
+		touchEnd(e) {
+			canvases[this.canvasId].scrollEnd(e)
+			this.$emit("touchEnd",{event:e,charts:canvases[this.canvasId]})
+		},
+		mousedown(e){
+			if(options[this.canvasId].enableScroll){
+				chartdom = uni.createSelectorQuery().in(this).select('.chartsview')
+				chartdom.boundingClientRect(data => {
+					e.changedTouches.unshift({ x: e.pageX - data.left, y: e.clientY-data.top })
+					e.mp.changedTouches.unshift({ x: e.pageX - data.left, y: e.clientY-data.top })
+					canvases[this.canvasId].scrollStart(e)
+					options[this.canvasId].mousedown=true;
+					this.$emit("touchStart",{event:e,charts:canvases[this.canvasId]})
+				}).exec();
+			}
+		},
+		mouseMove(e) {
+			if (options[this.canvasId].series.length > 0) {
+				chartdom = uni.createSelectorQuery().in(this).select('.chartsview')
+				chartdom.boundingClientRect(data => {
+					e.changedTouches.unshift({ x: e.pageX - data.left, y: e.clientY-data.top })
+					e.mp.changedTouches.unshift({ x: e.pageX - data.left, y: e.clientY-data.top })
+					if(options[this.canvasId].enableScroll && options[this.canvasId].mousedown){
+						canvases[this.canvasId].scroll(e)
+						this.$emit("touchMove",{event:e,charts:canvases[this.canvasId]})
+					}else{
+						canvases[this.canvasId].showToolTip(e, {
+							format: function(item, category) {
+								if(category){
+									return category + ' ' + item.name + ':' + item.data
+								}else{
+									return item.name + ':' + item.data
+								}
+							}
+						});
+					}
+				}).exec()
+			}
+		},
+		mouseup(e){
+			if(options[this.canvasId].enableScroll){
+				chartdom = uni.createSelectorQuery().in(this).select('.chartsview')
+				chartdom.boundingClientRect(data => {
+					e.changedTouches.unshift({ x: e.pageX - data.left, y: e.clientY-data.top })
+					e.mp.changedTouches.unshift({ x: e.pageX - data.left, y: e.clientY-data.top })
+					canvases[this.canvasId].scrollEnd(e)
+					options[this.canvasId].mousedown=false;
+					this.$emit("touchEnd",{event:e,charts:canvases[this.canvasId]})
+				}).exec();
+			}
+		},
+		error(e) {
+			console.log(e)
+		}
+	}
+};
+</script>
+
+<style scoped>
+.chartsview {
+	width: 100%;
+	height: 100%;
+	display: flex;
+	flex: 1;
+	justify-content: center;
+	align-items: center;
+}
+</style>
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..a372cec
--- /dev/null
+++ b/main.js
@@ -0,0 +1,27 @@
+import Vue from 'vue'
+import App from './App'
+import store from './store'
+import './static/font-awesome/font-awesome.css'
+import nothing from './util/nothing'
+import AppContext from './util/AppContext'
+import Env from './util/Env'
+import base from './util/base.js'
+import './css/uni.css'
+import './static/iconfont/iconfont.css'
+Vue.config.productionTip = false
+Vue.prototype.$store = store
+Vue.prototype.$nothing = nothing
+Vue.prototype.$AppContext = AppContext
+Vue.prototype.$Env = Env
+Vue.prototype.$base = base
+App.mpType = 'app'
+const app = new Vue({
+	store,
+	nothing,
+	AppContext,
+	...App,
+	mounted() {
+		AppContext.initialize(this)
+	}
+})
+app.$mount()
\ No newline at end of file
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..e38462d
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,118 @@
+{
+    "name" : "app_proxy",
+    "appid" : "__UNI__AB0E0FC",
+    "description" : "色彩公园代理中心",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    // 网络超时时间
+    "networkTimeout" : {
+        "request" : 60000,
+        "connectSocket" : 60000,
+        "uploadFile" : 60000,
+        "downloadFile" : 60000
+    },
+    "app-plus" : {
+        /* 5+App特有相关 */
+        "usingComponents" : true,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        "modules" : {
+            "OAuth" : {},
+            "Share" : {},
+            "Payment" : {}
+        },
+        /* 模块配置 */
+        "distribute" : {
+            /* 应用发布信息 */
+            "android" : {
+                /* android打包配置 */
+                "permissions" : [
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.INTERNET\"/>",
+                    "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            "ios" : {},
+            /* ios打包配置 */
+            "sdkConfigs" : {
+                "oauth" : {
+                    "weixin" : {
+                        "appid" : "wxd42f41a5f4efd7cb"
+                    }
+                },
+                "maps" : {},
+                "share" : {
+                    "weixin" : {
+                        "appid" : "wxd42f41a5f4efd7cb"
+                    }
+                },
+                "push" : {},
+                "payment" : {
+                    "weixin" : {
+                        "appid" : "wxd42f41a5f4efd7cb"
+                    }
+                }
+            }
+        }
+    },
+    /* SDK配置 */
+    "quickapp" : {},
+    /* 快应用特有相关 */
+    "mp-weixin" : {
+        /* 小程序特有相关 */
+        "appid" : "wx9cd3934f286f3d71",
+        "setting" : {
+            "urlCheck" : false,
+            "postcss" : false,
+            "checkSiteMap" : false
+        },
+        "usingComponents" : true,
+        "permission" : {
+            "scope.userLocation" : {
+                "desc" : "获取当前位置"
+            }
+        }
+    },
+	"splashscreen" : {
+	    "alwaysShowBeforeRender" : false,
+	    "waiting" : true,
+	    "autoclose" : false,
+	    "delay" : 0
+	},
+    "h5" : {
+        "devServer" : {
+            "port" : 8088
+        },
+        "title" : "giteebox商城",
+        "router" : {
+            "base" : ""
+        },
+        "domain" : "https://mall.onezxkj.com"
+    }
+}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..757ae1e
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,12470 @@
+{
+  "name": "shoppingMall",
+  "version": "1.0.0",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "shoppingMall",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "browserslist": "^4.12.0",
+        "build": "^0.1.4",
+        "caniuse-lite": "^1.0.30001051",
+        "echarts": "^4.9.0",
+        "flyio": "^0.6.14",
+        "font-awesome": "^4.7.0",
+        "js-base64": "^2.6.4",
+        "jssha": "^2.3.1",
+        "jweixin-module": "^1.4.1",
+        "moment": "^2.24.0",
+        "mpvue-echarts": "^0.3.2",
+        "qs": "^6.9.0",
+        "string-random": "^0.1.3",
+        "unifly": "^1.0.2",
+        "vuex": "^3.1.0"
+      },
+      "devDependencies": {
+        "@types/js-base64": "^3.3.1",
+        "webpack": "^3.12.0",
+        "webpack-dev-server": "^2.11.5"
+      }
+    },
+    "node_modules/@types/js-base64": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/@types/js-base64/-/js-base64-3.3.1.tgz",
+      "integrity": "sha512-Zw33oQNAvDdAN9b0IE5stH0y2MylYvtU7VVTKEJPxhyM2q57CVaNJhtJW258ah24NRtaiA23tptUmVn3dmTKpw==",
+      "deprecated": "This is a stub types definition. js-base64 provides its own type definitions, so you do not need this installed.",
+      "dev": true,
+      "dependencies": {
+        "js-base64": "*"
+      }
+    },
+    "node_modules/accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "dev": true,
+      "dependencies": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/acorn": {
+      "version": "5.7.4",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+      "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/acorn-dynamic-import": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/acorn-dynamic-import/download/acorn-dynamic-import-2.0.2.tgz",
+      "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^4.0.3"
+      }
+    },
+    "node_modules/acorn-dynamic-import/node_modules/acorn": {
+      "version": "4.0.13",
+      "resolved": "http://r.cnpmjs.org/acorn/download/acorn-4.0.13.tgz",
+      "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
+      "dev": true,
+      "bin": {
+        "acorn": "bin/acorn"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/ajv": {
+      "version": "6.10.0",
+      "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-6.10.0.tgz",
+      "integrity": "sha1-kNDVRDnaWHzX6EO/twRfUL0ivfE=",
+      "dependencies": {
+        "fast-deep-equal": "^2.0.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "node_modules/ajv-keywords": {
+      "version": "3.4.1",
+      "resolved": "http://r.cnpmjs.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz",
+      "integrity": "sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo=",
+      "dev": true,
+      "peerDependencies": {
+        "ajv": "^6.9.1"
+      }
+    },
+    "node_modules/align-text": {
+      "version": "0.1.4",
+      "resolved": "http://r.cnpmjs.org/align-text/download/align-text-0.1.4.tgz",
+      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2",
+        "longest": "^1.0.1",
+        "repeat-string": "^1.5.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/align-text/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ansi-html": {
+      "version": "0.0.7",
+      "resolved": "http://r.cnpmjs.org/ansi-html/download/ansi-html-0.0.7.tgz",
+      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "dev": true,
+      "engines": [
+        "node >= 0.8.0"
+      ],
+      "bin": {
+        "ansi-html": "bin/ansi-html"
+      }
+    },
+    "node_modules/ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/anymatch": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/anymatch/download/anymatch-2.0.0.tgz",
+      "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+      "dev": true,
+      "dependencies": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      }
+    },
+    "node_modules/anymatch/node_modules/normalize-path": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/normalize-path/download/normalize-path-2.1.1.tgz",
+      "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+      "dev": true,
+      "dependencies": {
+        "remove-trailing-separator": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-diff": {
+      "version": "4.0.0",
+      "resolved": "http://r.cnpmjs.org/arr-diff/download/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/arr-flatten/download/arr-flatten-1.1.0.tgz",
+      "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/arr-union": {
+      "version": "3.1.0",
+      "resolved": "http://r.cnpmjs.org/arr-union/download/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-find-index": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/array-find-index/download/array-find-index-1.0.2.tgz",
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+      "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
+      "dev": true
+    },
+    "node_modules/array-includes": {
+      "version": "3.0.3",
+      "resolved": "http://r.cnpmjs.org/array-includes/download/array-includes-3.0.3.tgz",
+      "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+      "dev": true,
+      "dependencies": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.7.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/array-union": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/array-union/download/array-union-1.0.2.tgz",
+      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+      "dev": true,
+      "dependencies": {
+        "array-uniq": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-uniq": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/array-uniq/download/array-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/array-unique": {
+      "version": "0.3.2",
+      "resolved": "http://r.cnpmjs.org/array-unique/download/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/asn1": {
+      "version": "0.2.4",
+      "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
+      "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
+      "dependencies": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "node_modules/asn1.js": {
+      "version": "4.10.1",
+      "resolved": "http://r.cnpmjs.org/asn1.js/download/asn1.js-4.10.1.tgz",
+      "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "node_modules/assert": {
+      "version": "1.5.0",
+      "resolved": "http://r.cnpmjs.org/assert/download/assert-1.5.0.tgz",
+      "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=",
+      "dev": true,
+      "dependencies": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      }
+    },
+    "node_modules/assert-plus": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/assert/node_modules/inherits": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.1.tgz",
+      "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+      "dev": true
+    },
+    "node_modules/assert/node_modules/util": {
+      "version": "0.10.3",
+      "resolved": "http://r.cnpmjs.org/util/download/util-0.10.3.tgz",
+      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "2.0.1"
+      }
+    },
+    "node_modules/assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/assign-symbols/download/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/async": {
+      "version": "2.6.3",
+      "resolved": "http://r.cnpmjs.org/async/download/async-2.6.3.tgz",
+      "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=",
+      "dependencies": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "node_modules/async-each": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/async-each/download/async-each-1.0.3.tgz",
+      "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=",
+      "dev": true
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+    },
+    "node_modules/atob": {
+      "version": "2.1.2",
+      "resolved": "http://r.cnpmjs.org/atob/download/atob-2.1.2.tgz",
+      "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=",
+      "dev": true,
+      "bin": {
+        "atob": "bin/atob.js"
+      },
+      "engines": {
+        "node": ">= 4.5.0"
+      }
+    },
+    "node_modules/aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/aws4": {
+      "version": "1.8.0",
+      "resolved": "http://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz",
+      "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8="
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/balanced-match/download/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "node_modules/base": {
+      "version": "0.11.2",
+      "resolved": "http://r.cnpmjs.org/base/download/base-0.11.2.tgz",
+      "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
+      "dev": true,
+      "dependencies": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/define-property": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-1.0.0.tgz",
+      "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+      "dev": true,
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+      "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+      "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base/node_modules/is-descriptor": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+      "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+      "dev": true,
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/base64-js": {
+      "version": "1.3.1",
+      "resolved": "http://r.cnpmjs.org/base64-js/download/base64-js-1.3.1.tgz",
+      "integrity": "sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=",
+      "dev": true
+    },
+    "node_modules/batch": {
+      "version": "0.6.1",
+      "resolved": "http://r.cnpmjs.org/batch/download/batch-0.6.1.tgz",
+      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "dev": true
+    },
+    "node_modules/bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "dependencies": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "node_modules/big.js": {
+      "version": "5.2.2",
+      "resolved": "http://r.cnpmjs.org/big.js/download/big.js-5.2.2.tgz",
+      "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/binary-extensions": {
+      "version": "1.13.1",
+      "resolved": "http://r.cnpmjs.org/binary-extensions/download/binary-extensions-1.13.1.tgz",
+      "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz",
+      "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
+    "node_modules/bn.js": {
+      "version": "4.11.8",
+      "resolved": "http://r.cnpmjs.org/bn.js/download/bn.js-4.11.8.tgz",
+      "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=",
+      "dev": true
+    },
+    "node_modules/body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "dev": true,
+      "dependencies": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/body-parser/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/body-parser/node_modules/qs": {
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/bonjour": {
+      "version": "3.5.0",
+      "resolved": "http://r.cnpmjs.org/bonjour/download/bonjour-3.5.0.tgz",
+      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "dev": true,
+      "dependencies": {
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/braces": {
+      "version": "2.3.2",
+      "resolved": "http://r.cnpmjs.org/braces/download/braces-2.3.2.tgz",
+      "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+      "dev": true,
+      "dependencies": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/braces/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/brorand": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/brorand/download/brorand-1.1.0.tgz",
+      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+      "dev": true
+    },
+    "node_modules/browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/browserify-aes/download/browserify-aes-1.2.0.tgz",
+      "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=",
+      "dev": true,
+      "dependencies": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/browserify-cipher": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=",
+      "dev": true,
+      "dependencies": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "node_modules/browserify-des": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/browserify-des/download/browserify-des-1.0.2.tgz",
+      "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=",
+      "dev": true,
+      "dependencies": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/browserify-rsa": {
+      "version": "4.0.1",
+      "resolved": "http://r.cnpmjs.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz",
+      "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "node_modules/browserify-sign": {
+      "version": "4.0.4",
+      "resolved": "http://r.cnpmjs.org/browserify-sign/download/browserify-sign-4.0.4.tgz",
+      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.1.1",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.2",
+        "elliptic": "^6.0.0",
+        "inherits": "^2.0.1",
+        "parse-asn1": "^5.0.0"
+      }
+    },
+    "node_modules/browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "http://r.cnpmjs.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
+      "dev": true,
+      "dependencies": {
+        "pako": "~1.0.5"
+      }
+    },
+    "node_modules/browserslist": {
+      "version": "4.12.0",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz",
+      "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==",
+      "dependencies": {
+        "caniuse-lite": "^1.0.30001043",
+        "electron-to-chromium": "^1.3.413",
+        "node-releases": "^1.1.53",
+        "pkg-up": "^2.0.0"
+      },
+      "bin": {
+        "browserslist": "cli.js"
+      },
+      "funding": {
+        "type": "tidelift",
+        "url": "https://tidelift.com/funding/github/npm/browserslist"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "4.9.1",
+      "resolved": "http://r.cnpmjs.org/buffer/download/buffer-4.9.1.tgz",
+      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+      "deprecated": "This version of 'buffer' is out-of-date. You must update to v4.9.2 or newer",
+      "dev": true,
+      "dependencies": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "node_modules/buffer-indexof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+      "dev": true
+    },
+    "node_modules/buffer-xor": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/buffer-xor/download/buffer-xor-1.0.3.tgz",
+      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+      "dev": true
+    },
+    "node_modules/build": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz",
+      "integrity": "sha1-cH/gJv/O3crL/c3zVur9pk8VEEY=",
+      "dependencies": {
+        "cssmin": "0.3.x",
+        "jsmin": "1.x",
+        "jxLoader": "*",
+        "moo-server": "*",
+        "promised-io": "*",
+        "timespan": "2.x",
+        "uglify-js": "1.x",
+        "walker": "1.x",
+        "winston": "*",
+        "wrench": "1.3.x"
+      },
+      "engines": {
+        "node": ">v0.4.12"
+      }
+    },
+    "node_modules/build/node_modules/uglify-js": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz",
+      "integrity": "sha1-S1v/+Rhu/7qoiOTJ6UvZ/EyUkp0=",
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      }
+    },
+    "node_modules/builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+      "dev": true
+    },
+    "node_modules/bytes": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/bytes/download/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/cache-base": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/cache-base/download/cache-base-1.0.1.tgz",
+      "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
+      "dev": true,
+      "dependencies": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/camelcase": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-2.1.1.tgz",
+      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/camelcase-keys": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz",
+      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^2.0.0",
+        "map-obj": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/caniuse-lite": {
+      "version": "1.0.30001051",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001051.tgz",
+      "integrity": "sha512-sw8UUnTlRevawTMZKN7vpfwSjCBVoiMPlYd8oT2VwNylyPCBdMAUmLGUApnYYTtIm5JXsQegUAY7GPHqgfDzjw=="
+    },
+    "node_modules/caseless": {
+      "version": "0.12.0",
+      "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+    },
+    "node_modules/center-align": {
+      "version": "0.1.3",
+      "resolved": "http://r.cnpmjs.org/center-align/download/center-align-0.1.3.tgz",
+      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+      "dev": true,
+      "dependencies": {
+        "align-text": "^0.1.3",
+        "lazy-cache": "^1.0.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/chokidar": {
+      "version": "2.1.8",
+      "resolved": "http://r.cnpmjs.org/chokidar/download/chokidar-2.1.8.tgz",
+      "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+      "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies",
+      "dev": true,
+      "dependencies": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.3",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "normalize-path": "^3.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.2.1",
+        "upath": "^1.1.1"
+      },
+      "optionalDependencies": {
+        "fsevents": "^1.2.7"
+      }
+    },
+    "node_modules/cipher-base": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/cipher-base/download/cipher-base-1.0.4.tgz",
+      "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/class-utils": {
+      "version": "0.3.6",
+      "resolved": "http://r.cnpmjs.org/class-utils/download/class-utils-0.3.6.tgz",
+      "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
+      "dev": true,
+      "dependencies": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/class-utils/node_modules/define-property": {
+      "version": "0.2.5",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+      "dev": true,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/cliui": {
+      "version": "3.2.0",
+      "resolved": "http://r.cnpmjs.org/cliui/download/cliui-3.2.0.tgz",
+      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wrap-ansi": "^2.0.0"
+      }
+    },
+    "node_modules/code-point-at": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/code-point-at/download/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/collection-visit": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/collection-visit/download/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "dev": true,
+      "dependencies": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/color": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
+      "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
+      "dependencies": {
+        "color-convert": "^1.9.1",
+        "color-string": "^1.5.2"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "1.9.3",
+      "resolved": "http://r.cnpmjs.org/color-convert/download/color-convert-1.9.3.tgz",
+      "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
+      "dependencies": {
+        "color-name": "1.1.3"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.3",
+      "resolved": "http://r.cnpmjs.org/color-name/download/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+    },
+    "node_modules/color-string": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+      "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/colornames": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz",
+      "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y="
+    },
+    "node_modules/colors": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+      "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+      "engines": {
+        "node": ">=0.1.90"
+      }
+    },
+    "node_modules/colorspace": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
+      "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
+      "dependencies": {
+        "color": "3.0.x",
+        "text-hex": "1.0.x"
+      }
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz",
+      "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/component-emitter": {
+      "version": "1.3.0",
+      "resolved": "http://r.cnpmjs.org/component-emitter/download/component-emitter-1.3.0.tgz",
+      "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=",
+      "dev": true
+    },
+    "node_modules/compressible": {
+      "version": "2.0.17",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
+      "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
+      "dev": true,
+      "dependencies": {
+        "mime-db": ">= 1.40.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/compression": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+      "dev": true,
+      "dependencies": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/compression/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "http://r.cnpmjs.org/concat-map/download/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "node_modules/connect-history-api-fallback": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+      "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/console-browserify": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/console-browserify/download/console-browserify-1.2.0.tgz",
+      "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=",
+      "dev": true
+    },
+    "node_modules/constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/constants-browserify/download/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "dev": true
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "5.1.2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "http://r.cnpmjs.org/cookie-signature/download/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true
+    },
+    "node_modules/copy-descriptor": {
+      "version": "0.1.1",
+      "resolved": "http://r.cnpmjs.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/core-util-is": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+    },
+    "node_modules/create-ecdh": {
+      "version": "4.0.3",
+      "resolved": "http://r.cnpmjs.org/create-ecdh/download/create-ecdh-4.0.3.tgz",
+      "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.0.0"
+      }
+    },
+    "node_modules/create-hash": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/create-hash/download/create-hash-1.2.0.tgz",
+      "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=",
+      "dev": true,
+      "dependencies": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "node_modules/create-hmac": {
+      "version": "1.1.7",
+      "resolved": "http://r.cnpmjs.org/create-hmac/download/create-hmac-1.1.7.tgz",
+      "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=",
+      "dev": true,
+      "dependencies": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "node_modules/crypto-browserify": {
+      "version": "3.12.0",
+      "resolved": "http://r.cnpmjs.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz",
+      "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=",
+      "dev": true,
+      "dependencies": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/cssmin": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.3.2.tgz",
+      "integrity": "sha1-3c5MVHtRCuDVlKjx+/iq+OLFwA0=",
+      "bin": {
+        "cssmin": "bin/cssmin"
+      }
+    },
+    "node_modules/currently-unhandled": {
+      "version": "0.4.1",
+      "resolved": "http://r.cnpmjs.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
+      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+      "dev": true,
+      "dependencies": {
+        "array-find-index": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/d": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/d/download/d-1.0.1.tgz",
+      "integrity": "sha1-hpgJU3LVjb7jRv/Qxwk/mfj561o=",
+      "dev": true,
+      "dependencies": {
+        "es5-ext": "^0.10.50",
+        "type": "^1.0.1"
+      }
+    },
+    "node_modules/dashdash": {
+      "version": "1.14.1",
+      "resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/debug": {
+      "version": "3.2.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+      "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+      "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/debug/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/decamelize": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/decamelize/download/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "http://r.cnpmjs.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/deep-equal": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz",
+      "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==",
+      "dev": true,
+      "dependencies": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      }
+    },
+    "node_modules/define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "dev": true,
+      "dependencies": {
+        "object-keys": "^1.0.12"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/define-property": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-2.0.2.tgz",
+      "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
+      "dev": true,
+      "dependencies": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/define-property/node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+      "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/define-property/node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+      "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/define-property/node_modules/is-descriptor": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+      "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+      "dev": true,
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/del": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/del/download/del-3.0.0.tgz",
+      "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+      "dev": true,
+      "dependencies": {
+        "globby": "^6.1.0",
+        "is-path-cwd": "^1.0.0",
+        "is-path-in-cwd": "^1.0.0",
+        "p-map": "^1.1.1",
+        "pify": "^3.0.0",
+        "rimraf": "^2.2.8"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/del/node_modules/pify": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/pify/download/pify-3.0.0.tgz",
+      "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/depd": {
+      "version": "1.1.2",
+      "resolved": "http://r.cnpmjs.org/depd/download/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/des.js": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/des.js/download/des.js-1.0.0.tgz",
+      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true
+    },
+    "node_modules/detect-node": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
+      "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
+      "dev": true
+    },
+    "node_modules/diagnostics": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
+      "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==",
+      "dependencies": {
+        "colorspace": "1.1.x",
+        "enabled": "1.0.x",
+        "kuler": "1.0.x"
+      }
+    },
+    "node_modules/diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "http://r.cnpmjs.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      }
+    },
+    "node_modules/dns-equal": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/dns-equal/download/dns-equal-1.0.0.tgz",
+      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "dev": true
+    },
+    "node_modules/dns-packet": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+      "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+      "dev": true,
+      "dependencies": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "node_modules/dns-txt": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/dns-txt/download/dns-txt-2.0.2.tgz",
+      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+      "dev": true,
+      "dependencies": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "node_modules/domain-browser": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/domain-browser/download/domain-browser-1.2.0.tgz",
+      "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4",
+        "npm": ">=1.2"
+      }
+    },
+    "node_modules/ecc-jsbn": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "dependencies": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "node_modules/echarts": {
+      "version": "4.9.0",
+      "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.9.0.tgz?cache=0&sync_timestamp=1612592564808&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts%2Fdownload%2Fecharts-4.9.0.tgz",
+      "integrity": "sha1-qbm6oD8Doqcx5jQMVb77V6nhNH0=",
+      "dependencies": {
+        "zrender": "4.3.2"
+      }
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "http://r.cnpmjs.org/ee-first/download/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "node_modules/electron-to-chromium": {
+      "version": "1.3.427",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz",
+      "integrity": "sha512-/rG5G7Opcw68/Yrb4qYkz07h3bESVRJjUl4X/FrKLXzoUJleKm6D7K7rTTz8V5LUWnd+BbTOyxJX2XprRqHD8A=="
+    },
+    "node_modules/elliptic": {
+      "version": "6.5.3",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
+      "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.4.0",
+        "brorand": "^1.0.1",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.0"
+      }
+    },
+    "node_modules/emojis-list": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/emojis-list/download/emojis-list-2.1.0.tgz",
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/enabled": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz",
+      "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=",
+      "dependencies": {
+        "env-variable": "0.0.x"
+      }
+    },
+    "node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/encodeurl/download/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/enhanced-resolve": {
+      "version": "3.4.1",
+      "resolved": "http://r.cnpmjs.org/enhanced-resolve/download/enhanced-resolve-3.4.1.tgz",
+      "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.4.0",
+        "object-assign": "^4.0.1",
+        "tapable": "^0.2.7"
+      },
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      }
+    },
+    "node_modules/enhanced-resolve/node_modules/tapable": {
+      "version": "0.2.9",
+      "resolved": "http://r.cnpmjs.org/tapable/download/tapable-0.2.9.tgz",
+      "integrity": "sha1-ry2LvJsE907hevK02QSPgHrNGKg=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/env-variable": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz",
+      "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA=="
+    },
+    "node_modules/errno": {
+      "version": "0.1.7",
+      "resolved": "http://r.cnpmjs.org/errno/download/errno-0.1.7.tgz",
+      "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
+      "dev": true,
+      "dependencies": {
+        "prr": "~1.0.1"
+      },
+      "bin": {
+        "errno": "cli.js"
+      }
+    },
+    "node_modules/error-ex": {
+      "version": "1.3.2",
+      "resolved": "http://r.cnpmjs.org/error-ex/download/error-ex-1.3.2.tgz",
+      "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=",
+      "dev": true,
+      "dependencies": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "node_modules/es-abstract": {
+      "version": "1.16.0",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
+      "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
+      "dev": true,
+      "dependencies": {
+        "es-to-primitive": "^1.2.0",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.0",
+        "is-callable": "^1.1.4",
+        "is-regex": "^1.0.4",
+        "object-inspect": "^1.6.0",
+        "object-keys": "^1.1.1",
+        "string.prototype.trimleft": "^2.1.0",
+        "string.prototype.trimright": "^2.1.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-to-primitive": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+      "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+      "dev": true,
+      "dependencies": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es5-ext": {
+      "version": "0.10.52",
+      "resolved": "http://r.cnpmjs.org/es5-ext/download/es5-ext-0.10.52.tgz",
+      "integrity": "sha1-uyF3fpGaBCY3Nt7RIKnWZfEOpj8=",
+      "dev": true,
+      "dependencies": {
+        "es6-iterator": "~2.0.3",
+        "es6-symbol": "~3.1.2",
+        "next-tick": "~1.0.0"
+      }
+    },
+    "node_modules/es6-iterator": {
+      "version": "2.0.3",
+      "resolved": "http://r.cnpmjs.org/es6-iterator/download/es6-iterator-2.0.3.tgz",
+      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+      "dev": true,
+      "dependencies": {
+        "d": "1",
+        "es5-ext": "^0.10.35",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "node_modules/es6-map": {
+      "version": "0.1.5",
+      "resolved": "http://r.cnpmjs.org/es6-map/download/es6-map-0.1.5.tgz",
+      "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
+      "dev": true,
+      "dependencies": {
+        "d": "1",
+        "es5-ext": "~0.10.14",
+        "es6-iterator": "~2.0.1",
+        "es6-set": "~0.1.5",
+        "es6-symbol": "~3.1.1",
+        "event-emitter": "~0.3.5"
+      }
+    },
+    "node_modules/es6-set": {
+      "version": "0.1.5",
+      "resolved": "http://r.cnpmjs.org/es6-set/download/es6-set-0.1.5.tgz",
+      "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+      "dev": true,
+      "dependencies": {
+        "d": "1",
+        "es5-ext": "~0.10.14",
+        "es6-iterator": "~2.0.1",
+        "es6-symbol": "3.1.1",
+        "event-emitter": "~0.3.5"
+      }
+    },
+    "node_modules/es6-set/node_modules/es6-symbol": {
+      "version": "3.1.1",
+      "resolved": "http://r.cnpmjs.org/es6-symbol/download/es6-symbol-3.1.1.tgz",
+      "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+      "dev": true,
+      "dependencies": {
+        "d": "1",
+        "es5-ext": "~0.10.14"
+      }
+    },
+    "node_modules/es6-symbol": {
+      "version": "3.1.3",
+      "resolved": "http://r.cnpmjs.org/es6-symbol/download/es6-symbol-3.1.3.tgz",
+      "integrity": "sha1-utXTwbzawoJp9MszHkMceKxwXRg=",
+      "dev": true,
+      "dependencies": {
+        "d": "^1.0.1",
+        "ext": "^1.1.2"
+      }
+    },
+    "node_modules/es6-weak-map": {
+      "version": "2.0.3",
+      "resolved": "http://r.cnpmjs.org/es6-weak-map/download/es6-weak-map-2.0.3.tgz",
+      "integrity": "sha1-ttofFswswNm+Q+a9v8Xn383zHVM=",
+      "dev": true,
+      "dependencies": {
+        "d": "1",
+        "es5-ext": "^0.10.46",
+        "es6-iterator": "^2.0.3",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/escape-html/download/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "node_modules/escope": {
+      "version": "3.6.0",
+      "resolved": "http://r.cnpmjs.org/escope/download/escope-3.6.0.tgz",
+      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
+      "dev": true,
+      "dependencies": {
+        "es6-map": "^0.1.3",
+        "es6-weak-map": "^2.0.1",
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/esrecurse": {
+      "version": "4.2.1",
+      "resolved": "http://r.cnpmjs.org/esrecurse/download/esrecurse-4.2.1.tgz",
+      "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=",
+      "dev": true,
+      "dependencies": {
+        "estraverse": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/estraverse": {
+      "version": "4.3.0",
+      "resolved": "http://r.cnpmjs.org/estraverse/download/estraverse-4.3.0.tgz",
+      "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "http://r.cnpmjs.org/etag/download/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/event-emitter": {
+      "version": "0.3.5",
+      "resolved": "http://r.cnpmjs.org/event-emitter/download/event-emitter-0.3.5.tgz",
+      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+      "dev": true,
+      "dependencies": {
+        "d": "1",
+        "es5-ext": "~0.10.14"
+      }
+    },
+    "node_modules/eventemitter3": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz",
+      "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==",
+      "dev": true
+    },
+    "node_modules/events": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/events/download/events-3.0.0.tgz",
+      "integrity": "sha1-mgoN+vYok9krh1uPJpjKQRSXPog=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.x"
+      }
+    },
+    "node_modules/eventsource": {
+      "version": "0.1.6",
+      "resolved": "http://r.cnpmjs.org/eventsource/download/eventsource-0.1.6.tgz",
+      "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+      "dev": true,
+      "dependencies": {
+        "original": ">=0.0.5"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+      "dev": true,
+      "dependencies": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/expand-brackets": {
+      "version": "2.1.4",
+      "resolved": "http://r.cnpmjs.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "dev": true,
+      "dependencies": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "http://r.cnpmjs.org/debug/download/debug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/define-property": {
+      "version": "0.2.5",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+      "dev": true,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/expand-brackets/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "dev": true,
+      "dependencies": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/express/node_modules/array-flatten": {
+      "version": "1.1.1",
+      "resolved": "http://r.cnpmjs.org/array-flatten/download/array-flatten-1.1.1.tgz",
+      "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+      "dev": true
+    },
+    "node_modules/express/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/express/node_modules/qs": {
+      "version": "6.7.0",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+      "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/ext": {
+      "version": "1.1.2",
+      "resolved": "http://r.cnpmjs.org/ext/download/ext-1.1.2.tgz",
+      "integrity": "sha1-0dIWyDZBu0y3aEYisGPP9EoZzjU=",
+      "dev": true,
+      "dependencies": {
+        "type": "^2.0.0"
+      }
+    },
+    "node_modules/ext/node_modules/type": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/type/download/type-2.0.0.tgz",
+      "integrity": "sha1-Xxb/bvLrRPJgSU2uJxAzspwJqcM=",
+      "dev": true
+    },
+    "node_modules/extend": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo="
+    },
+    "node_modules/extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "dev": true,
+      "dependencies": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extend-shallow/node_modules/is-extendable": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/is-extendable/download/is-extendable-1.0.1.tgz",
+      "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+      "dev": true,
+      "dependencies": {
+        "is-plain-object": "^2.0.4"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob": {
+      "version": "2.0.4",
+      "resolved": "http://r.cnpmjs.org/extglob/download/extglob-2.0.4.tgz",
+      "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+      "dev": true,
+      "dependencies": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/define-property": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-1.0.0.tgz",
+      "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+      "dev": true,
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+      "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+      "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extglob/node_modules/is-descriptor": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+      "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+      "dev": true,
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/extsprintf": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "engines": [
+        "node >=0.6.0"
+      ]
+    },
+    "node_modules/fast-deep-equal": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz",
+      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+    },
+    "node_modules/fast-json-stable-stringify": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz",
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+    },
+    "node_modules/fast-safe-stringify": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
+      "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
+    },
+    "node_modules/faye-websocket": {
+      "version": "0.10.0",
+      "resolved": "http://r.cnpmjs.org/faye-websocket/download/faye-websocket-0.10.0.tgz",
+      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+      "dev": true,
+      "dependencies": {
+        "websocket-driver": ">=0.5.1"
+      },
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/fecha": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
+      "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
+    },
+    "node_modules/file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/fill-range": {
+      "version": "4.0.0",
+      "resolved": "http://r.cnpmjs.org/fill-range/download/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "dev": true,
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fill-range/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "dev": true,
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/finalhandler/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/flyio": {
+      "version": "0.6.14",
+      "resolved": "http://registry.npm.taobao.org/flyio/download/flyio-0.6.14.tgz",
+      "integrity": "sha1-xdg+t6m0/ByRWkY9LqbfznVcLW8=",
+      "dependencies": {
+        "request": "^2.85.0"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
+      "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "engines": {
+        "node": ">=4.0"
+      }
+    },
+    "node_modules/font-awesome": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npm.taobao.org/font-awesome/download/font-awesome-4.7.0.tgz",
+      "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=",
+      "engines": {
+        "node": ">=0.10.3"
+      }
+    },
+    "node_modules/for-in": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/for-in/download/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/forever-agent": {
+      "version": "0.6.1",
+      "resolved": "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/form-data": {
+      "version": "2.3.3",
+      "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz",
+      "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 0.12"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.1.2",
+      "resolved": "http://r.cnpmjs.org/forwarded/download/forwarded-0.1.2.tgz",
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "dev": true,
+      "dependencies": {
+        "map-cache": "^0.2.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "http://r.cnpmjs.org/fresh/download/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "node_modules/fsevents": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+      "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+      "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "dependencies": {
+        "bindings": "^1.5.0",
+        "nan": "^2.12.1"
+      },
+      "engines": {
+        "node": ">= 4.0"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "node_modules/get-caller-file": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/get-caller-file/download/get-caller-file-1.0.3.tgz",
+      "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=",
+      "dev": true
+    },
+    "node_modules/get-stdin": {
+      "version": "4.0.1",
+      "resolved": "http://r.cnpmjs.org/get-stdin/download/get-stdin-4.0.1.tgz",
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/get-value": {
+      "version": "2.0.6",
+      "resolved": "http://r.cnpmjs.org/get-value/download/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/getpass": {
+      "version": "0.1.7",
+      "resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dependencies": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "node_modules/glob": {
+      "version": "7.1.5",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
+      "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/glob-parent": {
+      "version": "3.1.0",
+      "resolved": "http://r.cnpmjs.org/glob-parent/download/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "dependencies": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      }
+    },
+    "node_modules/glob-parent/node_modules/is-glob": {
+      "version": "3.1.0",
+      "resolved": "http://r.cnpmjs.org/is-glob/download/is-glob-3.1.0.tgz",
+      "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/globby": {
+      "version": "6.1.0",
+      "resolved": "http://r.cnpmjs.org/globby/download/globby-6.1.0.tgz",
+      "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+      "dev": true,
+      "dependencies": {
+        "array-union": "^1.0.1",
+        "glob": "^7.0.3",
+        "object-assign": "^4.0.1",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/graceful-fs": {
+      "version": "4.2.3",
+      "resolved": "http://r.cnpmjs.org/graceful-fs/download/graceful-fs-4.2.3.tgz",
+      "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=",
+      "dev": true
+    },
+    "node_modules/handle-thing": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
+      "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==",
+      "dev": true
+    },
+    "node_modules/har-schema": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/har-validator": {
+      "version": "5.1.3",
+      "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz",
+      "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=",
+      "deprecated": "this library is no longer supported",
+      "dependencies": {
+        "ajv": "^6.5.5",
+        "har-schema": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "dependencies": {
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/has-flag": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/has-flag/download/has-flag-2.0.0.tgz",
+      "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/has-symbols/download/has-symbols-1.0.0.tgz",
+      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/has-value": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/has-value/download/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "dev": true,
+      "dependencies": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-values": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/has-values/download/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/has-values/node_modules/kind-of": {
+      "version": "4.0.0",
+      "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-4.0.0.tgz",
+      "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/hash-base": {
+      "version": "3.0.4",
+      "resolved": "http://r.cnpmjs.org/hash-base/download/hash-base-3.0.4.tgz",
+      "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/hash.js": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "node_modules/hmac-drbg": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "dev": true,
+      "dependencies": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "node_modules/hosted-git-info": {
+      "version": "2.8.5",
+      "resolved": "http://r.cnpmjs.org/hosted-git-info/download/hosted-git-info-2.8.5.tgz",
+      "integrity": "sha1-dZz88sTRVq3lmwst+r3cQqa5xww=",
+      "dev": true
+    },
+    "node_modules/hpack.js": {
+      "version": "2.1.6",
+      "resolved": "http://r.cnpmjs.org/hpack.js/download/hpack.js-2.1.6.tgz",
+      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "node_modules/html-entities": {
+      "version": "1.2.1",
+      "resolved": "http://r.cnpmjs.org/html-entities/download/html-entities-1.2.1.tgz",
+      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+      "dev": true,
+      "engines": [
+        "node >= 0.4.0"
+      ]
+    },
+    "node_modules/http-deceiver": {
+      "version": "1.2.7",
+      "resolved": "http://r.cnpmjs.org/http-deceiver/download/http-deceiver-1.2.7.tgz",
+      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "dev": true
+    },
+    "node_modules/http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+      "dev": true,
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/http-errors/node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "node_modules/http-parser-js": {
+      "version": "0.4.10",
+      "resolved": "http://r.cnpmjs.org/http-parser-js/download/http-parser-js-0.4.10.tgz",
+      "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
+      "dev": true
+    },
+    "node_modules/http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+      "dev": true,
+      "dependencies": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/http-proxy-middleware": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+      "dev": true,
+      "dependencies": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/http-signature": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dependencies": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      },
+      "engines": {
+        "node": ">=0.8",
+        "npm": ">=1.3.7"
+      }
+    },
+    "node_modules/https-browserify": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/https-browserify/download/https-browserify-1.0.0.tgz",
+      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+      "dev": true
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.1.13",
+      "resolved": "http://r.cnpmjs.org/ieee754/download/ieee754-1.1.13.tgz",
+      "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=",
+      "dev": true
+    },
+    "node_modules/import-local": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz",
+      "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==",
+      "dev": true,
+      "dependencies": {
+        "pkg-dir": "^2.0.0",
+        "resolve-cwd": "^2.0.0"
+      },
+      "bin": {
+        "import-local-fixture": "fixtures/cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local/node_modules/find-up": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/find-up/download/find-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local/node_modules/locate-path": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/locate-path/download/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local/node_modules/p-limit": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+      "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local/node_modules/p-locate": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/p-locate/download/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local/node_modules/p-try": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/p-try/download/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/import-local/node_modules/pkg-dir": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/pkg-dir/download/pkg-dir-2.0.0.tgz",
+      "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/indent-string": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/indent-string/download/indent-string-2.1.0.tgz",
+      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+      "dev": true,
+      "dependencies": {
+        "repeating": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "http://r.cnpmjs.org/inflight/download/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.4.tgz",
+      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
+    },
+    "node_modules/internal-ip": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/internal-ip/download/internal-ip-1.2.0.tgz",
+      "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=",
+      "dev": true,
+      "dependencies": {
+        "meow": "^3.3.0"
+      },
+      "bin": {
+        "internal-ip": "cli.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/interpret": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/interpret/download/interpret-1.2.0.tgz",
+      "integrity": "sha1-1QYaYiS+WOgIOYX1AU2EQ1lXYpY=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/invert-kv": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/invert-kv/download/invert-kv-1.0.0.tgz",
+      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/ip": {
+      "version": "1.1.5",
+      "resolved": "http://r.cnpmjs.org/ip/download/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "dev": true
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
+      "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-accessor-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-arguments": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
+      "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/is-arrayish/download/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "node_modules/is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "dependencies": {
+        "binary-extensions": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-buffer": {
+      "version": "1.1.6",
+      "resolved": "http://r.cnpmjs.org/is-buffer/download/is-buffer-1.1.6.tgz",
+      "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
+      "dev": true
+    },
+    "node_modules/is-callable": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+      "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-data-descriptor/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-date-object": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/is-date-object/download/is-date-object-1.0.1.tgz",
+      "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+      "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+      "dev": true,
+      "dependencies": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-descriptor/node_modules/kind-of": {
+      "version": "5.1.0",
+      "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-5.1.0.tgz",
+      "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-extendable": {
+      "version": "0.1.1",
+      "resolved": "http://r.cnpmjs.org/is-extendable/download/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-extglob": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/is-extglob/download/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-finite": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/is-finite/download/is-finite-1.0.2.tgz",
+      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+      "dev": true,
+      "dependencies": {
+        "number-is-nan": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz",
+      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+      "dev": true,
+      "dependencies": {
+        "number-is-nan": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-glob": {
+      "version": "4.0.1",
+      "resolved": "http://r.cnpmjs.org/is-glob/download/is-glob-4.0.1.tgz",
+      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
+      "dev": true,
+      "dependencies": {
+        "is-extglob": "^2.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/is-number/download/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-number/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-path-cwd": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-path-cwd/download/is-path-cwd-1.0.0.tgz",
+      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-path-in-cwd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+      "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+      "dev": true,
+      "dependencies": {
+        "is-path-inside": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-path-inside": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/is-path-inside/download/is-path-inside-1.0.1.tgz",
+      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+      "dev": true,
+      "dependencies": {
+        "path-is-inside": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "http://r.cnpmjs.org/is-plain-object/download/is-plain-object-2.0.4.tgz",
+      "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
+      "dev": true,
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-regex": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/is-regex/download/is-regex-1.0.4.tgz",
+      "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+      "dev": true,
+      "dependencies": {
+        "has": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-stream": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/is-stream/download/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-symbol": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+      "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+      "dev": true,
+      "dependencies": {
+        "has-symbols": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+    },
+    "node_modules/is-utf8": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/is-utf8/download/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "node_modules/is-windows": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/is-windows/download/is-windows-1.0.2.tgz",
+      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/is-wsl": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/is-wsl/download/is-wsl-1.1.0.tgz",
+      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/isarray": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/isarray/download/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    },
+    "node_modules/isexe": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/isexe/download/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "node_modules/isobject": {
+      "version": "3.0.1",
+      "resolved": "http://r.cnpmjs.org/isobject/download/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/isstream": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+    },
+    "node_modules/js-base64": {
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+    },
+    "node_modules/js-yaml": {
+      "version": "0.3.7",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz",
+      "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I=",
+      "engines": {
+        "node": "> 0.4.11"
+      }
+    },
+    "node_modules/jsbn": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+    },
+    "node_modules/jsmin": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz",
+      "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=",
+      "bin": {
+        "jsmin": "bin/jsmin"
+      },
+      "engines": {
+        "node": ">=0.1.93"
+      }
+    },
+    "node_modules/json-loader": {
+      "version": "0.5.7",
+      "resolved": "http://r.cnpmjs.org/json-loader/download/json-loader-0.5.7.tgz",
+      "integrity": "sha1-3KFKcCNf+C8KyaOr62DTN6NlGF0=",
+      "dev": true
+    },
+    "node_modules/json-schema": {
+      "version": "0.2.3",
+      "resolved": "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+    },
+    "node_modules/json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA="
+    },
+    "node_modules/json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+    },
+    "node_modules/json3": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
+      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
+      "dev": true
+    },
+    "node_modules/json5": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/json5/download/json5-1.0.1.tgz",
+      "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/json5/node_modules/minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
+    },
+    "node_modules/jsprim": {
+      "version": "1.4.1",
+      "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "dependencies": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "node_modules/jssha": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/jssha/-/jssha-2.3.1.tgz",
+      "integrity": "sha1-FHshJTaQNcpLL30hDcU58Amz3po=",
+      "deprecated": "jsSHA versions < 3.0.0 will no longer receive feature updates",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/jweixin-module": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.4.1.tgz",
+      "integrity": "sha512-2R2oa1lYhAsclfjKSf3DP4ZiP1dcrQUbM7aklbeJA+UAg/LS7MqoA6UbTy1cs4sbB34z62K4bKW0Z9iazD8ejg=="
+    },
+    "node_modules/jxLoader": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/jxLoader/-/jxLoader-0.1.1.tgz",
+      "integrity": "sha1-ATTqUUTlM7WU/B/yX/GU4jXFPs0=",
+      "dependencies": {
+        "js-yaml": "0.3.x",
+        "moo-server": "1.3.x",
+        "promised-io": "*",
+        "walker": "1.x"
+      },
+      "engines": {
+        "node": ">v0.4.10"
+      }
+    },
+    "node_modules/killable": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
+      "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+      "dev": true
+    },
+    "node_modules/kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/kuler": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz",
+      "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==",
+      "dependencies": {
+        "colornames": "^1.1.1"
+      }
+    },
+    "node_modules/lazy-cache": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/lazy-cache/download/lazy-cache-1.0.4.tgz",
+      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/lcid": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/lcid/download/lcid-1.0.0.tgz",
+      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+      "dev": true,
+      "dependencies": {
+        "invert-kv": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/load-json-file": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/load-json-file/download/load-json-file-1.1.0.tgz",
+      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0",
+        "strip-bom": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/loader-runner": {
+      "version": "2.4.0",
+      "resolved": "http://r.cnpmjs.org/loader-runner/download/loader-runner-2.4.0.tgz",
+      "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=",
+      "dev": true,
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      }
+    },
+    "node_modules/loader-utils": {
+      "version": "1.2.3",
+      "resolved": "http://r.cnpmjs.org/loader-utils/download/loader-utils-1.2.3.tgz",
+      "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=",
+      "dev": true,
+      "dependencies": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^2.0.0",
+        "json5": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/lodash": {
+      "version": "4.17.20",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+    },
+    "node_modules/logform": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz",
+      "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==",
+      "dependencies": {
+        "colors": "^1.2.1",
+        "fast-safe-stringify": "^2.0.4",
+        "fecha": "^2.3.3",
+        "ms": "^2.1.1",
+        "triple-beam": "^1.3.0"
+      }
+    },
+    "node_modules/logform/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+    },
+    "node_modules/loglevel": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz",
+      "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/longest": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/longest/download/longest-1.0.1.tgz",
+      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/loud-rejection": {
+      "version": "1.6.0",
+      "resolved": "http://r.cnpmjs.org/loud-rejection/download/loud-rejection-1.6.0.tgz",
+      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+      "dev": true,
+      "dependencies": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/lru-cache": {
+      "version": "4.1.5",
+      "resolved": "http://r.cnpmjs.org/lru-cache/download/lru-cache-4.1.5.tgz",
+      "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+      "dev": true,
+      "dependencies": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "node_modules/makeerror": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
+      "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
+      "dependencies": {
+        "tmpl": "1.0.x"
+      }
+    },
+    "node_modules/map-cache": {
+      "version": "0.2.2",
+      "resolved": "http://r.cnpmjs.org/map-cache/download/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/map-obj": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/map-obj/download/map-obj-1.0.1.tgz",
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/map-visit": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/map-visit/download/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "dev": true,
+      "dependencies": {
+        "object-visit": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/md5.js": {
+      "version": "1.3.5",
+      "resolved": "http://r.cnpmjs.org/md5.js/download/md5.js-1.3.5.tgz",
+      "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=",
+      "dev": true,
+      "dependencies": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "http://r.cnpmjs.org/media-typer/download/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/memory-fs": {
+      "version": "0.4.1",
+      "resolved": "http://r.cnpmjs.org/memory-fs/download/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "dev": true,
+      "dependencies": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "node_modules/meow": {
+      "version": "3.7.0",
+      "resolved": "http://r.cnpmjs.org/meow/download/meow-3.7.0.tgz",
+      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+      "dev": true,
+      "dependencies": {
+        "camelcase-keys": "^2.0.0",
+        "decamelize": "^1.1.2",
+        "loud-rejection": "^1.0.0",
+        "map-obj": "^1.0.1",
+        "minimist": "^1.1.3",
+        "normalize-package-data": "^2.3.4",
+        "object-assign": "^4.0.1",
+        "read-pkg-up": "^1.0.1",
+        "redent": "^1.0.0",
+        "trim-newlines": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/meow/node_modules/minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "resolved": "http://r.cnpmjs.org/methods/download/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/micromatch": {
+      "version": "3.1.10",
+      "resolved": "http://r.cnpmjs.org/micromatch/download/micromatch-3.1.10.tgz",
+      "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+      "dev": true,
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/miller-rabin": {
+      "version": "4.0.1",
+      "resolved": "http://r.cnpmjs.org/miller-rabin/download/miller-rabin-4.0.1.tgz",
+      "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "bin": {
+        "miller-rabin": "bin/miller-rabin"
+      }
+    },
+    "node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true,
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.40.0",
+      "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz",
+      "integrity": "sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI=",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.24",
+      "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.24.tgz",
+      "integrity": "sha1-tvjQs+lR77d97eyhlM/20W9nb4E=",
+      "dependencies": {
+        "mime-db": "1.40.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/minimalistic-assert": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=",
+      "dev": true
+    },
+    "node_modules/minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+      "dev": true
+    },
+    "node_modules/minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
+    },
+    "node_modules/mixin-deep": {
+      "version": "1.3.2",
+      "resolved": "http://r.cnpmjs.org/mixin-deep/download/mixin-deep-1.3.2.tgz",
+      "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=",
+      "dev": true,
+      "dependencies": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/mixin-deep/node_modules/is-extendable": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/is-extendable/download/is-extendable-1.0.1.tgz",
+      "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+      "dev": true,
+      "dependencies": {
+        "is-plain-object": "^2.0.4"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+      "dev": true,
+      "dependencies": {
+        "minimist": "^1.2.5"
+      },
+      "bin": {
+        "mkdirp": "bin/cmd.js"
+      }
+    },
+    "node_modules/moment": {
+      "version": "2.24.0",
+      "resolved": "http://registry.npm.taobao.org/moment/download/moment-2.24.0.tgz",
+      "integrity": "sha1-DQVdU/UFKqZTyfbraLtdEr9cK1s=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/moo-server": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz",
+      "integrity": "sha1-XceVaVZaENbv7VQ5SR5p0jkuWPE=",
+      "engines": {
+        "node": ">v0.4.10"
+      }
+    },
+    "node_modules/mpvue-echarts": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/mpvue-echarts/-/mpvue-echarts-0.3.2.tgz",
+      "integrity": "sha512-KULGS1DOMNhXu3nBkBv6BtmnqjyHLc+2Dur7eW+2s2aic1NCOygglCMmAmMEU6/TGSR67ttFA2NYxXPUYbNhWQ=="
+    },
+    "node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/ms/download/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/multicast-dns": {
+      "version": "6.2.3",
+      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+      "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+      "dev": true,
+      "dependencies": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      },
+      "bin": {
+        "multicast-dns": "cli.js"
+      }
+    },
+    "node_modules/multicast-dns-service-types": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz",
+      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "dev": true
+    },
+    "node_modules/nan": {
+      "version": "2.14.2",
+      "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591684976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz",
+      "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/nanomatch": {
+      "version": "1.2.13",
+      "resolved": "http://r.cnpmjs.org/nanomatch/download/nanomatch-1.2.13.tgz",
+      "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
+      "dev": true,
+      "dependencies": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+      "dev": true
+    },
+    "node_modules/next-tick": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/next-tick/download/next-tick-1.0.0.tgz",
+      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+      "dev": true
+    },
+    "node_modules/node-forge": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz",
+      "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 4.5.0"
+      }
+    },
+    "node_modules/node-libs-browser": {
+      "version": "2.2.1",
+      "resolved": "http://r.cnpmjs.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz",
+      "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=",
+      "dev": true,
+      "dependencies": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^3.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.1",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.11.0",
+        "vm-browserify": "^1.0.1"
+      }
+    },
+    "node_modules/node-libs-browser/node_modules/punycode": {
+      "version": "1.4.1",
+      "resolved": "http://r.cnpmjs.org/punycode/download/punycode-1.4.1.tgz",
+      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+      "dev": true
+    },
+    "node_modules/node-releases": {
+      "version": "1.1.53",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz",
+      "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ=="
+    },
+    "node_modules/normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "http://r.cnpmjs.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=",
+      "dev": true,
+      "dependencies": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "node_modules/normalize-path": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/normalize-path/download/normalize-path-3.0.0.tgz",
+      "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "dev": true,
+      "dependencies": {
+        "path-key": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/number-is-nan/download/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz",
+      "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "http://r.cnpmjs.org/object-assign/download/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy": {
+      "version": "0.1.0",
+      "resolved": "http://r.cnpmjs.org/object-copy/download/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "dev": true,
+      "dependencies": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/define-property": {
+      "version": "0.2.5",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+      "dev": true,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-copy/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
+      "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
+      "dev": true
+    },
+    "node_modules/object-is": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/object-is/download/object-is-1.0.1.tgz",
+      "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/object-visit": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/object-visit/download/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "dev": true,
+      "dependencies": {
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object.pick": {
+      "version": "1.3.0",
+      "resolved": "http://r.cnpmjs.org/object.pick/download/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "dev": true,
+      "dependencies": {
+        "isobject": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/obuf": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+      "dev": true
+    },
+    "node_modules/on-finished": {
+      "version": "2.3.0",
+      "resolved": "http://r.cnpmjs.org/on-finished/download/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/on-headers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "http://r.cnpmjs.org/once/download/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/one-time": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz",
+      "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4="
+    },
+    "node_modules/opn": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
+      "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+      "dev": true,
+      "dependencies": {
+        "is-wsl": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/original": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+      "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+      "dev": true,
+      "dependencies": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "node_modules/os-browserify": {
+      "version": "0.3.0",
+      "resolved": "http://r.cnpmjs.org/os-browserify/download/os-browserify-0.3.0.tgz",
+      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+      "dev": true
+    },
+    "node_modules/os-locale": {
+      "version": "1.4.0",
+      "resolved": "http://r.cnpmjs.org/os-locale/download/os-locale-1.4.0.tgz",
+      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+      "dev": true,
+      "dependencies": {
+        "lcid": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/p-finally": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/p-finally/download/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/p-map": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+      "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pako": {
+      "version": "1.0.10",
+      "resolved": "http://r.cnpmjs.org/pako/download/pako-1.0.10.tgz",
+      "integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=",
+      "dev": true
+    },
+    "node_modules/parse-asn1": {
+      "version": "5.1.5",
+      "resolved": "http://r.cnpmjs.org/parse-asn1/download/parse-asn1-5.1.5.tgz",
+      "integrity": "sha1-ADJxND2ljclMrOSU+u89IUfs6g4=",
+      "dev": true,
+      "dependencies": {
+        "asn1.js": "^4.0.0",
+        "browserify-aes": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "node_modules/parse-json": {
+      "version": "2.2.0",
+      "resolved": "http://r.cnpmjs.org/parse-json/download/parse-json-2.2.0.tgz",
+      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+      "dev": true,
+      "dependencies": {
+        "error-ex": "^1.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/pascalcase": {
+      "version": "0.1.1",
+      "resolved": "http://r.cnpmjs.org/pascalcase/download/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-browserify": {
+      "version": "0.0.1",
+      "resolved": "http://r.cnpmjs.org/path-browserify/download/path-browserify-0.0.1.tgz",
+      "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=",
+      "dev": true
+    },
+    "node_modules/path-dirname": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/path-dirname/download/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "dev": true
+    },
+    "node_modules/path-exists": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/path-is-inside/download/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
+    "node_modules/path-key": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/path-key/download/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/path-parse": {
+      "version": "1.0.6",
+      "resolved": "http://r.cnpmjs.org/path-parse/download/path-parse-1.0.6.tgz",
+      "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=",
+      "dev": true
+    },
+    "node_modules/path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "http://r.cnpmjs.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true
+    },
+    "node_modules/path-type": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/path-type/download/path-type-1.1.0.tgz",
+      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pbkdf2": {
+      "version": "3.0.17",
+      "resolved": "http://r.cnpmjs.org/pbkdf2/download/pbkdf2-3.0.17.tgz",
+      "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=",
+      "dev": true,
+      "dependencies": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      },
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/performance-now": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+    },
+    "node_modules/picomatch": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
+      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=8.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/jonschlinkert"
+      }
+    },
+    "node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "http://r.cnpmjs.org/pify/download/pify-2.3.0.tgz",
+      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie": {
+      "version": "2.0.4",
+      "resolved": "http://r.cnpmjs.org/pinkie/download/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "dependencies": {
+        "pinkie": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pkg-up": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
+      "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
+      "dependencies": {
+        "find-up": "^2.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/find-up": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/locate-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-limit": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+      "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-locate": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/pkg-up/node_modules/p-try": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/portfinder": {
+      "version": "1.0.28",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
+      "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
+      "dev": true,
+      "dependencies": {
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.5"
+      },
+      "engines": {
+        "node": ">= 0.12.0"
+      }
+    },
+    "node_modules/posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "http://r.cnpmjs.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/process": {
+      "version": "0.11.10",
+      "resolved": "http://r.cnpmjs.org/process/download/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
+    "node_modules/process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
+    },
+    "node_modules/promised-io": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz",
+      "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y="
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
+      "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
+      "dev": true,
+      "dependencies": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.9.0"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/prr": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/prr/download/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true
+    },
+    "node_modules/pseudomap": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/pseudomap/download/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "node_modules/psl": {
+      "version": "1.1.31",
+      "resolved": "http://registry.npm.taobao.org/psl/download/psl-1.1.31.tgz",
+      "integrity": "sha1-6aqG0BAbWxBcvpOsa3hM1UcnYYQ="
+    },
+    "node_modules/public-encrypt": {
+      "version": "4.0.3",
+      "resolved": "http://r.cnpmjs.org/public-encrypt/download/public-encrypt-4.0.3.tgz",
+      "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=",
+      "dev": true,
+      "dependencies": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "node_modules/punycode": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
+      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=",
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/qs": {
+      "version": "6.9.0",
+      "resolved": "http://r.cnpmjs.org/qs/download/qs-6.9.0.tgz",
+      "integrity": "sha1-0Sl+KgScUxGctJzKNmrbusyAtAk=",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/querystring": {
+      "version": "0.2.0",
+      "resolved": "http://r.cnpmjs.org/querystring/download/querystring-0.2.0.tgz",
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/querystring-es3/download/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.x"
+      }
+    },
+    "node_modules/querystringify": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
+      "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
+      "dev": true
+    },
+    "node_modules/randombytes": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/randombytes/download/randombytes-2.1.0.tgz",
+      "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/randomfill": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/randomfill/download/randomfill-1.0.4.tgz",
+      "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=",
+      "dev": true,
+      "dependencies": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+      "dev": true,
+      "dependencies": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/raw-body/node_modules/bytes": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+      "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/read-pkg": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/read-pkg/download/read-pkg-1.1.0.tgz",
+      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+      "dev": true,
+      "dependencies": {
+        "load-json-file": "^1.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/read-pkg-up": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz",
+      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/find-up": {
+      "version": "1.1.2",
+      "resolved": "http://r.cnpmjs.org/find-up/download/find-up-1.1.2.tgz",
+      "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+      "dev": true,
+      "dependencies": {
+        "path-exists": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/read-pkg-up/node_modules/path-exists": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/path-exists/download/path-exists-2.1.0.tgz",
+      "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+      "dev": true,
+      "dependencies": {
+        "pinkie-promise": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "2.3.6",
+      "resolved": "http://r.cnpmjs.org/readable-stream/download/readable-stream-2.3.6.tgz",
+      "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
+      "dependencies": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "node_modules/readdirp": {
+      "version": "2.2.1",
+      "resolved": "http://r.cnpmjs.org/readdirp/download/readdirp-2.2.1.tgz",
+      "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      },
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/redent": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/redent/download/redent-1.0.0.tgz",
+      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+      "dev": true,
+      "dependencies": {
+        "indent-string": "^2.1.0",
+        "strip-indent": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/regex-not": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/regex-not/download/regex-not-1.0.2.tgz",
+      "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
+      "dev": true,
+      "dependencies": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/regexp.prototype.flags": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz",
+      "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==",
+      "dev": true,
+      "dependencies": {
+        "define-properties": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "node_modules/repeat-element": {
+      "version": "1.1.3",
+      "resolved": "http://r.cnpmjs.org/repeat-element/download/repeat-element-1.1.3.tgz",
+      "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/repeat-string": {
+      "version": "1.6.1",
+      "resolved": "http://r.cnpmjs.org/repeat-string/download/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/repeating": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/repeating/download/repeating-2.0.1.tgz",
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+      "dev": true,
+      "dependencies": {
+        "is-finite": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/request": {
+      "version": "2.88.0",
+      "resolved": "http://registry.npm.taobao.org/request/download/request-2.88.0.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Frequest%2Fdownload%2Frequest-2.88.0.tgz",
+      "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=",
+      "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
+      "dependencies": {
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.8.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.0",
+        "http-signature": "~1.2.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.19",
+        "oauth-sign": "~0.9.0",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.4.3",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      },
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/request/node_modules/qs": {
+      "version": "6.5.2",
+      "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
+      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/require-directory": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/require-directory/download/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/require-main-filename": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/require-main-filename/download/require-main-filename-1.0.1.tgz",
+      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+      "dev": true
+    },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/requires-port/download/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
+    },
+    "node_modules/resolve": {
+      "version": "1.12.0",
+      "resolved": "http://r.cnpmjs.org/resolve/download/resolve-1.12.0.tgz",
+      "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=",
+      "dev": true,
+      "dependencies": {
+        "path-parse": "^1.0.6"
+      }
+    },
+    "node_modules/resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "dependencies": {
+        "resolve-from": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/resolve-from": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/resolve-from/download/resolve-from-3.0.0.tgz",
+      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/resolve-url": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/resolve-url/download/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "deprecated": "https://github.com/lydell/resolve-url#deprecated",
+      "dev": true
+    },
+    "node_modules/ret": {
+      "version": "0.1.15",
+      "resolved": "http://r.cnpmjs.org/ret/download/ret-0.1.15.tgz",
+      "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.12"
+      }
+    },
+    "node_modules/right-align": {
+      "version": "0.1.3",
+      "resolved": "http://r.cnpmjs.org/right-align/download/right-align-0.1.3.tgz",
+      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+      "dev": true,
+      "dependencies": {
+        "align-text": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      }
+    },
+    "node_modules/ripemd160": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/ripemd160/download/ripemd160-2.0.2.tgz",
+      "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=",
+      "dev": true,
+      "dependencies": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
+      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
+    },
+    "node_modules/safe-regex": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/safe-regex/download/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "dev": true,
+      "dependencies": {
+        "ret": "~0.1.10"
+      }
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
+    },
+    "node_modules/select-hose": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/select-hose/download/select-hose-2.0.0.tgz",
+      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "dev": true
+    },
+    "node_modules/selfsigned": {
+      "version": "1.10.7",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
+      "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
+      "dev": true,
+      "dependencies": {
+        "node-forge": "0.9.0"
+      }
+    },
+    "node_modules/semver": {
+      "version": "5.7.1",
+      "resolved": "http://r.cnpmjs.org/semver/download/semver-5.7.1.tgz",
+      "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+      "dev": true,
+      "bin": {
+        "semver": "bin/semver"
+      }
+    },
+    "node_modules/send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "dev": true,
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/send/node_modules/debug/node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/ms/download/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "node_modules/send/node_modules/ms": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+      "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+      "dev": true
+    },
+    "node_modules/serve-index": {
+      "version": "1.9.1",
+      "resolved": "http://r.cnpmjs.org/serve-index/download/serve-index-1.9.1.tgz",
+      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "dev": true,
+      "dependencies": {
+        "accepts": "~1.3.4",
+        "batch": "0.6.1",
+        "debug": "2.6.9",
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/serve-index/node_modules/http-errors": {
+      "version": "1.6.3",
+      "resolved": "http://r.cnpmjs.org/http-errors/download/http-errors-1.6.3.tgz",
+      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+      "dev": true,
+      "dependencies": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.0",
+        "statuses": ">= 1.4.0 < 2"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/serve-index/node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "node_modules/serve-index/node_modules/setprototypeof": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+      "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+      "dev": true
+    },
+    "node_modules/serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+      "dev": true,
+      "dependencies": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-blocking": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/set-blocking/download/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true
+    },
+    "node_modules/set-value": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/set-value/download/set-value-2.0.1.tgz",
+      "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=",
+      "dev": true,
+      "dependencies": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/set-value/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/setimmediate": {
+      "version": "1.0.5",
+      "resolved": "http://r.cnpmjs.org/setimmediate/download/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+      "dev": true
+    },
+    "node_modules/sha.js": {
+      "version": "2.4.11",
+      "resolved": "http://r.cnpmjs.org/sha.js/download/sha.js-2.4.11.tgz",
+      "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      },
+      "bin": {
+        "sha.js": "bin.js"
+      }
+    },
+    "node_modules/shebang-command": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/shebang-command/download/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "dev": true,
+      "dependencies": {
+        "shebang-regex": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/shebang-regex/download/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/signal-exit": {
+      "version": "3.0.2",
+      "resolved": "http://r.cnpmjs.org/signal-exit/download/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+      "dev": true
+    },
+    "node_modules/simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+      "dependencies": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "node_modules/simple-swizzle/node_modules/is-arrayish": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+    },
+    "node_modules/snapdragon": {
+      "version": "0.8.2",
+      "resolved": "http://r.cnpmjs.org/snapdragon/download/snapdragon-0.8.2.tgz",
+      "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
+      "dev": true,
+      "dependencies": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
+      "dev": true,
+      "dependencies": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/define-property": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-1.0.0.tgz",
+      "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+      "dev": true,
+      "dependencies": {
+        "is-descriptor": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+      "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/is-data-descriptor": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+      "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-node/node_modules/is-descriptor": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+      "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+      "dev": true,
+      "dependencies": {
+        "is-accessor-descriptor": "^1.0.0",
+        "is-data-descriptor": "^1.0.0",
+        "kind-of": "^6.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "http://r.cnpmjs.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon-util/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "http://r.cnpmjs.org/debug/download/debug-2.6.9.tgz",
+      "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/define-property": {
+      "version": "0.2.5",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+      "dev": true,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/snapdragon/node_modules/extend-shallow": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+      "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+      "dev": true,
+      "dependencies": {
+        "is-extendable": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sockjs": {
+      "version": "0.3.19",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
+      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+      "dev": true,
+      "dependencies": {
+        "faye-websocket": "^0.10.0",
+        "uuid": "^3.0.1"
+      }
+    },
+    "node_modules/sockjs-client": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz",
+      "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=",
+      "dev": true,
+      "dependencies": {
+        "debug": "^2.6.6",
+        "eventsource": "0.1.6",
+        "faye-websocket": "~0.11.0",
+        "inherits": "^2.0.1",
+        "json3": "^3.3.2",
+        "url-parse": "^1.1.8"
+      }
+    },
+    "node_modules/sockjs-client/node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/sockjs-client/node_modules/faye-websocket": {
+      "version": "0.11.3",
+      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
+      "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
+      "dev": true,
+      "dependencies": {
+        "websocket-driver": ">=0.5.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/source-list-map": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/source-list-map/download/source-list-map-2.0.1.tgz",
+      "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=",
+      "dev": true
+    },
+    "node_modules/source-map": {
+      "version": "0.5.7",
+      "resolved": "http://r.cnpmjs.org/source-map/download/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/source-map-resolve": {
+      "version": "0.5.2",
+      "resolved": "http://r.cnpmjs.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz",
+      "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=",
+      "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
+      "dev": true,
+      "dependencies": {
+        "atob": "^2.1.1",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "node_modules/source-map-url": {
+      "version": "0.4.0",
+      "resolved": "http://r.cnpmjs.org/source-map-url/download/source-map-url-0.4.0.tgz",
+      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+      "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
+      "dev": true
+    },
+    "node_modules/spdx-correct": {
+      "version": "3.1.0",
+      "resolved": "http://r.cnpmjs.org/spdx-correct/download/spdx-correct-3.1.0.tgz",
+      "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=",
+      "dev": true,
+      "dependencies": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-exceptions": {
+      "version": "2.2.0",
+      "resolved": "http://r.cnpmjs.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz",
+      "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=",
+      "dev": true
+    },
+    "node_modules/spdx-expression-parse": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz",
+      "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=",
+      "dev": true,
+      "dependencies": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "node_modules/spdx-license-ids": {
+      "version": "3.0.5",
+      "resolved": "http://r.cnpmjs.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz",
+      "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=",
+      "dev": true
+    },
+    "node_modules/spdy": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz",
+      "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/spdy-transport": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
+      }
+    },
+    "node_modules/spdy-transport/node_modules/debug": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+      "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+      "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/spdy-transport/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/spdy-transport/node_modules/readable-stream": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
+      "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/spdy/node_modules/debug": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+      "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+      "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
+      "dev": true,
+      "dependencies": {
+        "ms": "^2.1.1"
+      }
+    },
+    "node_modules/spdy/node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/split-string": {
+      "version": "3.1.0",
+      "resolved": "http://r.cnpmjs.org/split-string/download/split-string-3.1.0.tgz",
+      "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
+      "dev": true,
+      "dependencies": {
+        "extend-shallow": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sshpk": {
+      "version": "1.16.1",
+      "resolved": "http://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
+      "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=",
+      "dependencies": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      },
+      "bin": {
+        "sshpk-conv": "bin/sshpk-conv",
+        "sshpk-sign": "bin/sshpk-sign",
+        "sshpk-verify": "bin/sshpk-verify"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/stack-trace": {
+      "version": "0.0.10",
+      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/static-extend": {
+      "version": "0.1.2",
+      "resolved": "http://r.cnpmjs.org/static-extend/download/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "dev": true,
+      "dependencies": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/static-extend/node_modules/define-property": {
+      "version": "0.2.5",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+      "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+      "dev": true,
+      "dependencies": {
+        "is-descriptor": "^0.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "1.5.0",
+      "resolved": "http://r.cnpmjs.org/statuses/download/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/stream-browserify": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/stream-browserify/download/stream-browserify-2.0.2.tgz",
+      "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "node_modules/stream-http": {
+      "version": "2.8.3",
+      "resolved": "http://r.cnpmjs.org/stream-http/download/stream-http-2.8.3.tgz",
+      "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=",
+      "dev": true,
+      "dependencies": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "node_modules/string_decoder": {
+      "version": "1.1.1",
+      "resolved": "http://r.cnpmjs.org/string_decoder/download/string_decoder-1.1.1.tgz",
+      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+      "dependencies": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "node_modules/string-random": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/string-random/-/string-random-0.1.3.tgz",
+      "integrity": "sha512-g+UsIwzKhNi+9/+Q3Q7hP8R4HkQxiIkQlttnxw6GRdk9pnnkGIv53C6H8dvh8wxAVDhkqpnWeauaPXS1b2sBJg=="
+    },
+    "node_modules/string-width": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/string-width/download/string-width-1.0.2.tgz",
+      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "dev": true,
+      "dependencies": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/string.prototype.trimleft": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
+      "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+      "dev": true,
+      "dependencies": {
+        "define-properties": "^1.1.3",
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/string.prototype.trimright": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
+      "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+      "dev": true,
+      "dependencies": {
+        "define-properties": "^1.1.3",
+        "function-bind": "^1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "http://r.cnpmjs.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-bom": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/strip-bom/download/strip-bom-2.0.0.tgz",
+      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+      "dev": true,
+      "dependencies": {
+        "is-utf8": "^0.2.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-eof": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/strip-eof/download/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/strip-indent": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/strip-indent/download/strip-indent-1.0.1.tgz",
+      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+      "dev": true,
+      "dependencies": {
+        "get-stdin": "^4.0.1"
+      },
+      "bin": {
+        "strip-indent": "cli.js"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/supports-color": {
+      "version": "4.5.0",
+      "resolved": "http://r.cnpmjs.org/supports-color/download/supports-color-4.5.0.tgz",
+      "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/text-hex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+      "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
+    },
+    "node_modules/thunky": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+      "dev": true
+    },
+    "node_modules/time-stamp": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz",
+      "integrity": "sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/timers-browserify": {
+      "version": "2.0.11",
+      "resolved": "http://r.cnpmjs.org/timers-browserify/download/timers-browserify-2.0.11.tgz",
+      "integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=",
+      "dev": true,
+      "dependencies": {
+        "setimmediate": "^1.0.4"
+      },
+      "engines": {
+        "node": ">=0.6.0"
+      }
+    },
+    "node_modules/timespan": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz",
+      "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=",
+      "engines": {
+        "node": ">= 0.2.0"
+      }
+    },
+    "node_modules/tmpl": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
+      "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
+    },
+    "node_modules/to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+      "dev": true
+    },
+    "node_modules/to-object-path": {
+      "version": "0.3.0",
+      "resolved": "http://r.cnpmjs.org/to-object-path/download/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^3.0.2"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-object-path/node_modules/kind-of": {
+      "version": "3.2.2",
+      "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+      "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+      "dev": true,
+      "dependencies": {
+        "is-buffer": "^1.1.5"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-regex": {
+      "version": "3.0.2",
+      "resolved": "http://r.cnpmjs.org/to-regex/download/to-regex-3.0.2.tgz",
+      "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
+      "dev": true,
+      "dependencies": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/to-regex-range": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/to-regex-range/download/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "dev": true,
+      "dependencies": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/tough-cookie": {
+      "version": "2.4.3",
+      "resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz",
+      "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=",
+      "dependencies": {
+        "psl": "^1.1.24",
+        "punycode": "^1.4.1"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/tough-cookie/node_modules/punycode": {
+      "version": "1.4.1",
+      "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
+      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+    },
+    "node_modules/trim-newlines": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/trim-newlines/download/trim-newlines-1.0.0.tgz",
+      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/triple-beam": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
+      "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
+    },
+    "node_modules/tty-browserify": {
+      "version": "0.0.0",
+      "resolved": "http://r.cnpmjs.org/tty-browserify/download/tty-browserify-0.0.0.tgz",
+      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+      "dev": true
+    },
+    "node_modules/tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dependencies": {
+        "safe-buffer": "^5.0.1"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+    },
+    "node_modules/type": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/type/download/type-1.2.0.tgz",
+      "integrity": "sha1-hI3XaY2vo+VKbEeedZxLw/GIR6A=",
+      "dev": true
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dev": true,
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/uglify-js": {
+      "version": "2.8.29",
+      "resolved": "http://r.cnpmjs.org/uglify-js/download/uglify-js-2.8.29.tgz",
+      "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+      "dev": true,
+      "dependencies": {
+        "source-map": "~0.5.1",
+        "yargs": "~3.10.0"
+      },
+      "bin": {
+        "uglifyjs": "bin/uglifyjs"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      },
+      "optionalDependencies": {
+        "uglify-to-browserify": "~1.0.0"
+      }
+    },
+    "node_modules/uglify-js/node_modules/camelcase": {
+      "version": "1.2.1",
+      "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-1.2.1.tgz",
+      "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/uglify-js/node_modules/cliui": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/cliui/download/cliui-2.1.0.tgz",
+      "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+      "dev": true,
+      "dependencies": {
+        "center-align": "^0.1.1",
+        "right-align": "^0.1.1",
+        "wordwrap": "0.0.2"
+      }
+    },
+    "node_modules/uglify-js/node_modules/yargs": {
+      "version": "3.10.0",
+      "resolved": "http://r.cnpmjs.org/yargs/download/yargs-3.10.0.tgz",
+      "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^1.0.2",
+        "cliui": "^2.1.0",
+        "decamelize": "^1.0.0",
+        "window-size": "0.1.0"
+      }
+    },
+    "node_modules/uglify-to-browserify": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz",
+      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/uglifyjs-webpack-plugin": {
+      "version": "0.4.6",
+      "resolved": "http://r.cnpmjs.org/uglifyjs-webpack-plugin/download/uglifyjs-webpack-plugin-0.4.6.tgz",
+      "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
+      "dev": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "source-map": "^0.5.6",
+        "uglify-js": "^2.8.29",
+        "webpack-sources": "^1.0.1"
+      },
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      },
+      "peerDependencies": {
+        "webpack": "^1.9 || ^2 || ^2.1.0-beta || ^2.2.0-rc || ^3.0.0"
+      }
+    },
+    "node_modules/unifly": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/unifly/-/unifly-1.0.2.tgz",
+      "integrity": "sha512-Lk2CQ/HNspIzA3qqeOhEVnfs6G5yNi/3zY3bjEFm4roPi3FhWhAQ6FZDedWo3OrDfMEmGM3IKdbgekeDfvZ3WQ=="
+    },
+    "node_modules/union-value": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/union-value/download/union-value-1.0.1.tgz",
+      "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=",
+      "dev": true,
+      "dependencies": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/unpipe/download/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/unset-value": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/unset-value/download/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "dev": true,
+      "dependencies": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-value": {
+      "version": "0.3.1",
+      "resolved": "http://r.cnpmjs.org/has-value/download/has-value-0.3.1.tgz",
+      "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+      "dev": true,
+      "dependencies": {
+        "get-value": "^2.0.3",
+        "has-values": "^0.1.4",
+        "isobject": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/isobject/download/isobject-2.1.0.tgz",
+      "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+      "dev": true,
+      "dependencies": {
+        "isarray": "1.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/unset-value/node_modules/has-values": {
+      "version": "0.1.4",
+      "resolved": "http://r.cnpmjs.org/has-values/download/has-values-0.1.4.tgz",
+      "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/upath": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/upath/download/upath-1.2.0.tgz",
+      "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=4",
+        "yarn": "*"
+      }
+    },
+    "node_modules/uri-js": {
+      "version": "4.2.2",
+      "resolved": "http://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz",
+      "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=",
+      "dependencies": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "node_modules/urix": {
+      "version": "0.1.0",
+      "resolved": "http://r.cnpmjs.org/urix/download/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "deprecated": "Please see https://github.com/lydell/urix#deprecated",
+      "dev": true
+    },
+    "node_modules/url": {
+      "version": "0.11.0",
+      "resolved": "http://r.cnpmjs.org/url/download/url-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "dev": true,
+      "dependencies": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      }
+    },
+    "node_modules/url-parse": {
+      "version": "1.4.7",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
+      "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
+      "dev": true,
+      "dependencies": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "node_modules/url/node_modules/punycode": {
+      "version": "1.3.2",
+      "resolved": "http://r.cnpmjs.org/punycode/download/punycode-1.3.2.tgz",
+      "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+      "dev": true
+    },
+    "node_modules/use": {
+      "version": "3.1.1",
+      "resolved": "http://r.cnpmjs.org/use/download/use-3.1.1.tgz",
+      "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/util": {
+      "version": "0.11.1",
+      "resolved": "http://r.cnpmjs.org/util/download/util-0.11.1.tgz",
+      "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=",
+      "dev": true,
+      "dependencies": {
+        "inherits": "2.0.3"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
+    "node_modules/util/node_modules/inherits": {
+      "version": "2.0.3",
+      "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+      "dev": true
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/utils-merge/download/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/uuid": {
+      "version": "3.3.2",
+      "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz",
+      "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=",
+      "deprecated": "Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.",
+      "bin": {
+        "uuid": "bin/uuid"
+      }
+    },
+    "node_modules/validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "http://r.cnpmjs.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=",
+      "dev": true,
+      "dependencies": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "resolved": "http://r.cnpmjs.org/vary/download/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/verror": {
+      "version": "1.10.0",
+      "resolved": "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "engines": [
+        "node >=0.6.0"
+      ],
+      "dependencies": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "node_modules/vm-browserify": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/vm-browserify/download/vm-browserify-1.1.0.tgz",
+      "integrity": "sha1-vXbWojMj4sqP+hICjcBFWcdfkBk=",
+      "dev": true
+    },
+    "node_modules/vuex": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-3.1.1.tgz",
+      "integrity": "sha1-DCZL/jDNvM+Wq52zF30hGCilkQ4="
+    },
+    "node_modules/walker": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
+      "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+      "dependencies": {
+        "makeerror": "1.0.x"
+      }
+    },
+    "node_modules/watchpack": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
+      "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0"
+      },
+      "optionalDependencies": {
+        "chokidar": "^3.4.1",
+        "watchpack-chokidar2": "^2.0.0"
+      }
+    },
+    "node_modules/watchpack-chokidar2": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz",
+      "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "chokidar": "^2.1.8"
+      },
+      "engines": {
+        "node": "<8.10.0"
+      }
+    },
+    "node_modules/watchpack/node_modules/anymatch": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+      "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      },
+      "engines": {
+        "node": ">= 8"
+      }
+    },
+    "node_modules/watchpack/node_modules/binary-extensions": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
+      "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/watchpack/node_modules/braces": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "fill-range": "^7.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/watchpack/node_modules/chokidar": {
+      "version": "3.4.2",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
+      "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "anymatch": "~3.1.1",
+        "braces": "~3.0.2",
+        "glob-parent": "~5.1.0",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.4.0"
+      },
+      "engines": {
+        "node": ">= 8.10.0"
+      },
+      "optionalDependencies": {
+        "fsevents": "~2.1.2"
+      }
+    },
+    "node_modules/watchpack/node_modules/fill-range": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "to-regex-range": "^5.0.1"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/watchpack/node_modules/fsevents": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+      "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+      "deprecated": "\"Please update to latest v2.3 or v2.2\"",
+      "dev": true,
+      "hasInstallScript": true,
+      "optional": true,
+      "os": [
+        "darwin"
+      ],
+      "engines": {
+        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+      }
+    },
+    "node_modules/watchpack/node_modules/glob-parent": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+      "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "is-glob": "^4.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/watchpack/node_modules/is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "binary-extensions": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/watchpack/node_modules/is-number": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+      "dev": true,
+      "optional": true,
+      "engines": {
+        "node": ">=0.12.0"
+      }
+    },
+    "node_modules/watchpack/node_modules/readdirp": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+      "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "picomatch": "^2.2.1"
+      },
+      "engines": {
+        "node": ">=8.10.0"
+      }
+    },
+    "node_modules/watchpack/node_modules/to-regex-range": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+      "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "is-number": "^7.0.0"
+      },
+      "engines": {
+        "node": ">=8.0"
+      }
+    },
+    "node_modules/wbuf": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+      "dev": true,
+      "dependencies": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "node_modules/webpack": {
+      "version": "3.12.0",
+      "resolved": "http://r.cnpmjs.org/webpack/download/webpack-3.12.0.tgz",
+      "integrity": "sha1-P540NgNwYC/PY56Xk520hvTsDXQ=",
+      "dev": true,
+      "dependencies": {
+        "acorn": "^5.0.0",
+        "acorn-dynamic-import": "^2.0.0",
+        "ajv": "^6.1.0",
+        "ajv-keywords": "^3.1.0",
+        "async": "^2.1.2",
+        "enhanced-resolve": "^3.4.0",
+        "escope": "^3.6.0",
+        "interpret": "^1.0.0",
+        "json-loader": "^0.5.4",
+        "json5": "^0.5.1",
+        "loader-runner": "^2.3.0",
+        "loader-utils": "^1.1.0",
+        "memory-fs": "~0.4.1",
+        "mkdirp": "~0.5.0",
+        "node-libs-browser": "^2.0.0",
+        "source-map": "^0.5.3",
+        "supports-color": "^4.2.1",
+        "tapable": "^0.2.7",
+        "uglifyjs-webpack-plugin": "^0.4.6",
+        "watchpack": "^1.4.0",
+        "webpack-sources": "^1.0.1",
+        "yargs": "^8.0.2"
+      },
+      "bin": {
+        "webpack": "bin/webpack.js"
+      },
+      "engines": {
+        "node": ">=4.3.0 <5.0.0 || >=5.10"
+      }
+    },
+    "node_modules/webpack-dev-middleware": {
+      "version": "1.12.2",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz",
+      "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==",
+      "dev": true,
+      "dependencies": {
+        "memory-fs": "~0.4.1",
+        "mime": "^1.5.0",
+        "path-is-absolute": "^1.0.0",
+        "range-parser": "^1.0.3",
+        "time-stamp": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "peerDependencies": {
+        "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server": {
+      "version": "2.11.5",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.5.tgz",
+      "integrity": "sha512-7TdOKKt7G3sWEhPKV0zP+nD0c4V9YKUJ3wDdBwQsZNo58oZIRoVIu66pg7PYkBW8A74msP9C2kLwmxGHndz/pw==",
+      "dev": true,
+      "dependencies": {
+        "ansi-html": "0.0.7",
+        "array-includes": "^3.0.3",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.2",
+        "compression": "^1.7.3",
+        "connect-history-api-fallback": "^1.3.0",
+        "debug": "^3.1.0",
+        "del": "^3.0.0",
+        "express": "^4.16.2",
+        "html-entities": "^1.2.0",
+        "http-proxy-middleware": "^0.19.1",
+        "import-local": "^1.0.0",
+        "internal-ip": "1.2.0",
+        "ip": "^1.1.5",
+        "killable": "^1.0.0",
+        "loglevel": "^1.4.1",
+        "opn": "^5.1.0",
+        "portfinder": "^1.0.9",
+        "selfsigned": "^1.9.1",
+        "serve-index": "^1.9.1",
+        "sockjs": "0.3.19",
+        "sockjs-client": "1.1.5",
+        "spdy": "^4.0.0",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^5.1.0",
+        "webpack-dev-middleware": "1.12.2",
+        "yargs": "6.6.0"
+      },
+      "bin": {
+        "webpack-dev-server": "bin/webpack-dev-server.js"
+      },
+      "engines": {
+        "node": ">=4.7"
+      },
+      "peerDependencies": {
+        "webpack": "^2.2.0 || ^3.0.0"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-dev-server/node_modules/supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "dependencies": {
+        "has-flag": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack-sources": {
+      "version": "1.4.3",
+      "resolved": "http://r.cnpmjs.org/webpack-sources/download/webpack-sources-1.4.3.tgz",
+      "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=",
+      "dev": true,
+      "dependencies": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      }
+    },
+    "node_modules/webpack-sources/node_modules/source-map": {
+      "version": "0.6.1",
+      "resolved": "http://r.cnpmjs.org/source-map/download/source-map-0.6.1.tgz",
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/webpack/node_modules/ansi-regex": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+      "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/camelcase": {
+      "version": "4.1.0",
+      "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-4.1.0.tgz",
+      "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/cross-spawn": {
+      "version": "5.1.0",
+      "resolved": "http://r.cnpmjs.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
+      "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^4.0.1",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "node_modules/webpack/node_modules/execa": {
+      "version": "0.7.0",
+      "resolved": "http://r.cnpmjs.org/execa/download/execa-0.7.0.tgz",
+      "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^5.0.1",
+        "get-stream": "^3.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/find-up": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/find-up/download/find-up-2.1.0.tgz",
+      "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/get-stream": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/get-stream/download/get-stream-3.0.0.tgz",
+      "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/json5": {
+      "version": "0.5.1",
+      "resolved": "http://r.cnpmjs.org/json5/download/json5-0.5.1.tgz",
+      "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+      "dev": true,
+      "bin": {
+        "json5": "lib/cli.js"
+      }
+    },
+    "node_modules/webpack/node_modules/load-json-file": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/load-json-file/download/load-json-file-2.0.0.tgz",
+      "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+      "dev": true,
+      "dependencies": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "strip-bom": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/locate-path": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/locate-path/download/locate-path-2.0.0.tgz",
+      "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^2.0.0",
+        "path-exists": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/mem": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/mem/download/mem-1.1.0.tgz",
+      "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+      "dev": true,
+      "dependencies": {
+        "mimic-fn": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/mimic-fn": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/mimic-fn/download/mimic-fn-1.2.0.tgz",
+      "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/os-locale": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/os-locale/download/os-locale-2.1.0.tgz",
+      "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=",
+      "dev": true,
+      "dependencies": {
+        "execa": "^0.7.0",
+        "lcid": "^1.0.0",
+        "mem": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/p-limit": {
+      "version": "1.3.0",
+      "resolved": "http://r.cnpmjs.org/p-limit/download/p-limit-1.3.0.tgz",
+      "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/p-locate": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/p-locate/download/p-locate-2.0.0.tgz",
+      "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^1.1.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/p-try": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/p-try/download/p-try-1.0.0.tgz",
+      "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/path-type": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/path-type/download/path-type-2.0.0.tgz",
+      "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+      "dev": true,
+      "dependencies": {
+        "pify": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/read-pkg": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/read-pkg/download/read-pkg-2.0.0.tgz",
+      "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+      "dev": true,
+      "dependencies": {
+        "load-json-file": "^2.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/read-pkg-up": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz",
+      "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^2.0.0",
+        "read-pkg": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/string-width": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/string-width/download/string-width-2.1.1.tgz",
+      "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+      "dev": true,
+      "dependencies": {
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/strip-ansi": {
+      "version": "4.0.0",
+      "resolved": "http://r.cnpmjs.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+      "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+      "dev": true,
+      "dependencies": {
+        "ansi-regex": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/strip-bom": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/strip-bom/download/strip-bom-3.0.0.tgz",
+      "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+      "dev": true,
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/webpack/node_modules/tapable": {
+      "version": "0.2.9",
+      "resolved": "http://r.cnpmjs.org/tapable/download/tapable-0.2.9.tgz",
+      "integrity": "sha1-ry2LvJsE907hevK02QSPgHrNGKg=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/webpack/node_modules/which-module": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/which-module/download/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+      "dev": true
+    },
+    "node_modules/webpack/node_modules/y18n": {
+      "version": "3.2.1",
+      "resolved": "http://r.cnpmjs.org/y18n/download/y18n-3.2.1.tgz",
+      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+      "dev": true
+    },
+    "node_modules/webpack/node_modules/yargs": {
+      "version": "8.0.2",
+      "resolved": "http://r.cnpmjs.org/yargs/download/yargs-8.0.2.tgz",
+      "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^4.1.0",
+        "cliui": "^3.2.0",
+        "decamelize": "^1.1.1",
+        "get-caller-file": "^1.0.1",
+        "os-locale": "^2.0.0",
+        "read-pkg-up": "^2.0.0",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^1.0.1",
+        "set-blocking": "^2.0.0",
+        "string-width": "^2.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^3.2.1",
+        "yargs-parser": "^7.0.0"
+      }
+    },
+    "node_modules/webpack/node_modules/yargs-parser": {
+      "version": "7.0.0",
+      "resolved": "http://r.cnpmjs.org/yargs-parser/download/yargs-parser-7.0.0.tgz",
+      "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^4.1.0"
+      }
+    },
+    "node_modules/websocket-driver": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
+      "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==",
+      "dev": true,
+      "dependencies": {
+        "http-parser-js": ">=0.4.0 <0.4.11",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      },
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/websocket-extensions": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+      "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0"
+      }
+    },
+    "node_modules/which": {
+      "version": "1.3.1",
+      "resolved": "http://r.cnpmjs.org/which/download/which-1.3.1.tgz",
+      "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
+      "dev": true,
+      "dependencies": {
+        "isexe": "^2.0.0"
+      },
+      "bin": {
+        "which": "bin/which"
+      }
+    },
+    "node_modules/which-module": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/which-module/download/which-module-1.0.0.tgz",
+      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+      "dev": true
+    },
+    "node_modules/window-size": {
+      "version": "0.1.0",
+      "resolved": "http://r.cnpmjs.org/window-size/download/window-size-0.1.0.tgz",
+      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/winston": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz",
+      "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==",
+      "dependencies": {
+        "async": "^2.6.1",
+        "diagnostics": "^1.1.1",
+        "is-stream": "^1.1.0",
+        "logform": "^2.1.1",
+        "one-time": "0.0.4",
+        "readable-stream": "^3.1.1",
+        "stack-trace": "0.0.x",
+        "triple-beam": "^1.3.0",
+        "winston-transport": "^4.3.0"
+      },
+      "engines": {
+        "node": ">= 6.4.0"
+      }
+    },
+    "node_modules/winston-transport": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz",
+      "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==",
+      "dependencies": {
+        "readable-stream": "^2.3.6",
+        "triple-beam": "^1.2.0"
+      },
+      "engines": {
+        "node": ">= 6.4.0"
+      }
+    },
+    "node_modules/winston/node_modules/readable-stream": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
+      "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/wordwrap": {
+      "version": "0.0.2",
+      "resolved": "http://r.cnpmjs.org/wordwrap/download/wordwrap-0.0.2.tgz",
+      "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/wrap-ansi": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz",
+      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "dev": true,
+      "dependencies": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/wrappy/download/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "node_modules/wrench": {
+      "version": "1.3.9",
+      "resolved": "https://registry.npmjs.org/wrench/-/wrench-1.3.9.tgz",
+      "integrity": "sha1-bxPsNRRTF+spLKX2UxORskQRFBE=",
+      "deprecated": "wrench.js is deprecated! You should check out fs-extra (https://github.com/jprichardson/node-fs-extra) for any operations you were using wrench for. Thanks for all the usage over the years.",
+      "engines": {
+        "node": ">=0.1.97"
+      }
+    },
+    "node_modules/xtend": {
+      "version": "4.0.2",
+      "resolved": "http://r.cnpmjs.org/xtend/download/xtend-4.0.2.tgz",
+      "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "2.1.2",
+      "resolved": "http://r.cnpmjs.org/yallist/download/yallist-2.1.2.tgz",
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+      "dev": true
+    },
+    "node_modules/yargs": {
+      "version": "6.6.0",
+      "resolved": "http://r.cnpmjs.org/yargs/download/yargs-6.6.0.tgz",
+      "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^3.0.0",
+        "cliui": "^3.2.0",
+        "decamelize": "^1.1.1",
+        "get-caller-file": "^1.0.1",
+        "os-locale": "^1.4.0",
+        "read-pkg-up": "^1.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^1.0.1",
+        "set-blocking": "^2.0.0",
+        "string-width": "^1.0.2",
+        "which-module": "^1.0.0",
+        "y18n": "^3.2.1",
+        "yargs-parser": "^4.2.0"
+      }
+    },
+    "node_modules/yargs-parser": {
+      "version": "4.2.1",
+      "resolved": "http://r.cnpmjs.org/yargs-parser/download/yargs-parser-4.2.1.tgz",
+      "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
+      "dev": true,
+      "dependencies": {
+        "camelcase": "^3.0.0"
+      }
+    },
+    "node_modules/yargs-parser/node_modules/camelcase": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-3.0.0.tgz",
+      "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yargs/node_modules/camelcase": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-3.0.0.tgz",
+      "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/yargs/node_modules/y18n": {
+      "version": "3.2.1",
+      "resolved": "http://r.cnpmjs.org/y18n/download/y18n-3.2.1.tgz",
+      "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+      "dev": true
+    },
+    "node_modules/zrender": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npm.taobao.org/zrender/download/zrender-4.3.2.tgz?cache=0&sync_timestamp=1612184093375&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fzrender%2Fdownload%2Fzrender-4.3.2.tgz",
+      "integrity": "sha1-7HQy+UFcgsc1hLa3uMR+GwFiCcY="
+    }
+  },
+  "dependencies": {
+    "@types/js-base64": {
+      "version": "3.3.1",
+      "resolved": "https://registry.npmjs.org/@types/js-base64/-/js-base64-3.3.1.tgz",
+      "integrity": "sha512-Zw33oQNAvDdAN9b0IE5stH0y2MylYvtU7VVTKEJPxhyM2q57CVaNJhtJW258ah24NRtaiA23tptUmVn3dmTKpw==",
+      "dev": true,
+      "requires": {
+        "js-base64": "*"
+      }
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "dev": true,
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
+    },
+    "acorn": {
+      "version": "5.7.4",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz",
+      "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==",
+      "dev": true
+    },
+    "acorn-dynamic-import": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/acorn-dynamic-import/download/acorn-dynamic-import-2.0.2.tgz",
+      "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=",
+      "dev": true,
+      "requires": {
+        "acorn": "^4.0.3"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "4.0.13",
+          "resolved": "http://r.cnpmjs.org/acorn/download/acorn-4.0.13.tgz",
+          "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=",
+          "dev": true
+        }
+      }
+    },
+    "ajv": {
+      "version": "6.10.0",
+      "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-6.10.0.tgz",
+      "integrity": "sha1-kNDVRDnaWHzX6EO/twRfUL0ivfE=",
+      "requires": {
+        "fast-deep-equal": "^2.0.1",
+        "fast-json-stable-stringify": "^2.0.0",
+        "json-schema-traverse": "^0.4.1",
+        "uri-js": "^4.2.2"
+      }
+    },
+    "ajv-keywords": {
+      "version": "3.4.1",
+      "resolved": "http://r.cnpmjs.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz",
+      "integrity": "sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo=",
+      "dev": true,
+      "requires": {}
+    },
+    "align-text": {
+      "version": "0.1.4",
+      "resolved": "http://r.cnpmjs.org/align-text/download/align-text-0.1.4.tgz",
+      "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2",
+        "longest": "^1.0.1",
+        "repeat-string": "^1.5.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "ansi-html": {
+      "version": "0.0.7",
+      "resolved": "http://r.cnpmjs.org/ansi-html/download/ansi-html-0.0.7.tgz",
+      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "dev": true
+    },
+    "ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/ansi-regex/download/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+      "dev": true
+    },
+    "anymatch": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/anymatch/download/anymatch-2.0.0.tgz",
+      "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=",
+      "dev": true,
+      "requires": {
+        "micromatch": "^3.1.4",
+        "normalize-path": "^2.1.1"
+      },
+      "dependencies": {
+        "normalize-path": {
+          "version": "2.1.1",
+          "resolved": "http://r.cnpmjs.org/normalize-path/download/normalize-path-2.1.1.tgz",
+          "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+          "dev": true,
+          "requires": {
+            "remove-trailing-separator": "^1.0.1"
+          }
+        }
+      }
+    },
+    "arr-diff": {
+      "version": "4.0.0",
+      "resolved": "http://r.cnpmjs.org/arr-diff/download/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/arr-flatten/download/arr-flatten-1.1.0.tgz",
+      "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=",
+      "dev": true
+    },
+    "arr-union": {
+      "version": "3.1.0",
+      "resolved": "http://r.cnpmjs.org/arr-union/download/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "dev": true
+    },
+    "array-find-index": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/array-find-index/download/array-find-index-1.0.2.tgz",
+      "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
+      "dev": true
+    },
+    "array-flatten": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+      "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
+      "dev": true
+    },
+    "array-includes": {
+      "version": "3.0.3",
+      "resolved": "http://r.cnpmjs.org/array-includes/download/array-includes-3.0.3.tgz",
+      "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.7.0"
+      }
+    },
+    "array-union": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/array-union/download/array-union-1.0.2.tgz",
+      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+      "dev": true,
+      "requires": {
+        "array-uniq": "^1.0.1"
+      }
+    },
+    "array-uniq": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/array-uniq/download/array-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true
+    },
+    "array-unique": {
+      "version": "0.3.2",
+      "resolved": "http://r.cnpmjs.org/array-unique/download/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "dev": true
+    },
+    "asn1": {
+      "version": "0.2.4",
+      "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz",
+      "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "asn1.js": {
+      "version": "4.10.1",
+      "resolved": "http://r.cnpmjs.org/asn1.js/download/asn1.js-4.10.1.tgz",
+      "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "assert": {
+      "version": "1.5.0",
+      "resolved": "http://r.cnpmjs.org/assert/download/assert-1.5.0.tgz",
+      "integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.1.tgz",
+          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+          "dev": true
+        },
+        "util": {
+          "version": "0.10.3",
+          "resolved": "http://r.cnpmjs.org/util/download/util-0.10.3.tgz",
+          "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+          "dev": true,
+          "requires": {
+            "inherits": "2.0.1"
+          }
+        }
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/assign-symbols/download/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "dev": true
+    },
+    "async": {
+      "version": "2.6.3",
+      "resolved": "http://r.cnpmjs.org/async/download/async-2.6.3.tgz",
+      "integrity": "sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=",
+      "requires": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "async-each": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/async-each/download/async-each-1.0.3.tgz",
+      "integrity": "sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8=",
+      "dev": true
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+    },
+    "atob": {
+      "version": "2.1.2",
+      "resolved": "http://r.cnpmjs.org/atob/download/atob-2.1.2.tgz",
+      "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=",
+      "dev": true
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+    },
+    "aws4": {
+      "version": "1.8.0",
+      "resolved": "http://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz",
+      "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8="
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/balanced-match/download/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "http://r.cnpmjs.org/base/download/base-0.11.2.tgz",
+      "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
+      "dev": true,
+      "requires": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "base64-js": {
+      "version": "1.3.1",
+      "resolved": "http://r.cnpmjs.org/base64-js/download/base64-js-1.3.1.tgz",
+      "integrity": "sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE=",
+      "dev": true
+    },
+    "batch": {
+      "version": "0.6.1",
+      "resolved": "http://r.cnpmjs.org/batch/download/batch-0.6.1.tgz",
+      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "dev": true
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz",
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "big.js": {
+      "version": "5.2.2",
+      "resolved": "http://r.cnpmjs.org/big.js/download/big.js-5.2.2.tgz",
+      "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "1.13.1",
+      "resolved": "http://r.cnpmjs.org/binary-extensions/download/binary-extensions-1.13.1.tgz",
+      "integrity": "sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U=",
+      "dev": true
+    },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz",
+      "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
+    "bn.js": {
+      "version": "4.11.8",
+      "resolved": "http://r.cnpmjs.org/bn.js/download/bn.js-4.11.8.tgz",
+      "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=",
+      "dev": true
+    },
+    "body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+          "dev": true
+        }
+      }
+    },
+    "bonjour": {
+      "version": "3.5.0",
+      "resolved": "http://r.cnpmjs.org/bonjour/download/bonjour-3.5.0.tgz",
+      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "dev": true,
+      "requires": {
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
+      }
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "2.3.2",
+      "resolved": "http://r.cnpmjs.org/braces/download/braces-2.3.2.tgz",
+      "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
+      "dev": true,
+      "requires": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "brorand": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/brorand/download/brorand-1.1.0.tgz",
+      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+      "dev": true
+    },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/browserify-aes/download/browserify-aes-1.2.0.tgz",
+      "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=",
+      "dev": true,
+      "requires": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "browserify-cipher": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=",
+      "dev": true,
+      "requires": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "browserify-des": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/browserify-des/download/browserify-des-1.0.2.tgz",
+      "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "browserify-rsa": {
+      "version": "4.0.1",
+      "resolved": "http://r.cnpmjs.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz",
+      "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.0.4",
+      "resolved": "http://r.cnpmjs.org/browserify-sign/download/browserify-sign-4.0.4.tgz",
+      "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.1",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.2",
+        "elliptic": "^6.0.0",
+        "inherits": "^2.0.1",
+        "parse-asn1": "^5.0.0"
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "http://r.cnpmjs.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
+      "dev": true,
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
+    "browserslist": {
+      "version": "4.12.0",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz",
+      "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==",
+      "requires": {
+        "caniuse-lite": "^1.0.30001043",
+        "electron-to-chromium": "^1.3.413",
+        "node-releases": "^1.1.53",
+        "pkg-up": "^2.0.0"
+      }
+    },
+    "buffer": {
+      "version": "4.9.1",
+      "resolved": "http://r.cnpmjs.org/buffer/download/buffer-4.9.1.tgz",
+      "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "buffer-indexof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+      "dev": true
+    },
+    "buffer-xor": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/buffer-xor/download/buffer-xor-1.0.3.tgz",
+      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+      "dev": true
+    },
+    "build": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz",
+      "integrity": "sha1-cH/gJv/O3crL/c3zVur9pk8VEEY=",
+      "requires": {
+        "cssmin": "0.3.x",
+        "jsmin": "1.x",
+        "jxLoader": "*",
+        "moo-server": "*",
+        "promised-io": "*",
+        "timespan": "2.x",
+        "uglify-js": "1.x",
+        "walker": "1.x",
+        "winston": "*",
+        "wrench": "1.3.x"
+      },
+      "dependencies": {
+        "uglify-js": {
+          "version": "1.3.5",
+          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz",
+          "integrity": "sha1-S1v/+Rhu/7qoiOTJ6UvZ/EyUkp0="
+        }
+      }
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+      "dev": true
+    },
+    "bytes": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/bytes/download/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/cache-base/download/cache-base-1.0.1.tgz",
+      "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
+      "dev": true,
+      "requires": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      }
+    },
+    "camelcase": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-2.1.1.tgz",
+      "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
+      "dev": true
+    },
+    "camelcase-keys": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz",
+      "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^2.0.0",
+        "map-obj": "^1.0.0"
+      }
+    },
+    "caniuse-lite": {
+      "version": "1.0.30001051",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001051.tgz",
+      "integrity": "sha512-sw8UUnTlRevawTMZKN7vpfwSjCBVoiMPlYd8oT2VwNylyPCBdMAUmLGUApnYYTtIm5JXsQegUAY7GPHqgfDzjw=="
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+    },
+    "center-align": {
+      "version": "0.1.3",
+      "resolved": "http://r.cnpmjs.org/center-align/download/center-align-0.1.3.tgz",
+      "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
+      "dev": true,
+      "requires": {
+        "align-text": "^0.1.3",
+        "lazy-cache": "^1.0.3"
+      }
+    },
+    "chokidar": {
+      "version": "2.1.8",
+      "resolved": "http://r.cnpmjs.org/chokidar/download/chokidar-2.1.8.tgz",
+      "integrity": "sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc=",
+      "dev": true,
+      "requires": {
+        "anymatch": "^2.0.0",
+        "async-each": "^1.0.1",
+        "braces": "^2.3.2",
+        "fsevents": "^1.2.7",
+        "glob-parent": "^3.1.0",
+        "inherits": "^2.0.3",
+        "is-binary-path": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "normalize-path": "^3.0.0",
+        "path-is-absolute": "^1.0.0",
+        "readdirp": "^2.2.1",
+        "upath": "^1.1.1"
+      }
+    },
+    "cipher-base": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/cipher-base/download/cipher-base-1.0.4.tgz",
+      "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "resolved": "http://r.cnpmjs.org/class-utils/download/class-utils-0.3.6.tgz",
+      "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "cliui": {
+      "version": "3.2.0",
+      "resolved": "http://r.cnpmjs.org/cliui/download/cliui-3.2.0.tgz",
+      "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1",
+        "wrap-ansi": "^2.0.0"
+      }
+    },
+    "code-point-at": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/code-point-at/download/code-point-at-1.1.0.tgz",
+      "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
+      "dev": true
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/collection-visit/download/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "dev": true,
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
+      "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
+      "requires": {
+        "color-convert": "^1.9.1",
+        "color-string": "^1.5.2"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "http://r.cnpmjs.org/color-convert/download/color-convert-1.9.3.tgz",
+      "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=",
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "http://r.cnpmjs.org/color-name/download/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+    },
+    "color-string": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+      "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+      "requires": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "colornames": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz",
+      "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y="
+    },
+    "colors": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+      "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
+    },
+    "colorspace": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz",
+      "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==",
+      "requires": {
+        "color": "3.0.x",
+        "text-hex": "1.0.x"
+      }
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz",
+      "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "component-emitter": {
+      "version": "1.3.0",
+      "resolved": "http://r.cnpmjs.org/component-emitter/download/component-emitter-1.3.0.tgz",
+      "integrity": "sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=",
+      "dev": true
+    },
+    "compressible": {
+      "version": "2.0.17",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
+      "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
+      "dev": true,
+      "requires": {
+        "mime-db": ">= 1.40.0 < 2"
+      }
+    },
+    "compression": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "http://r.cnpmjs.org/concat-map/download/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "connect-history-api-fallback": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+      "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+      "dev": true
+    },
+    "console-browserify": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/console-browserify/download/console-browserify-1.2.0.tgz",
+      "integrity": "sha1-ZwY871fOts9Jk6KrOlWECujEkzY=",
+      "dev": true
+    },
+    "constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/constants-browserify/download/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "dev": true
+    },
+    "content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+      "dev": true
+    },
+    "cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+      "dev": true
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "http://r.cnpmjs.org/cookie-signature/download/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true
+    },
+    "copy-descriptor": {
+      "version": "0.1.1",
+      "resolved": "http://r.cnpmjs.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "dev": true
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
+    },
+    "create-ecdh": {
+      "version": "4.0.3",
+      "resolved": "http://r.cnpmjs.org/create-ecdh/download/create-ecdh-4.0.3.tgz",
+      "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.0.0"
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/create-hash/download/create-hash-1.2.0.tgz",
+      "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "create-hmac": {
+      "version": "1.1.7",
+      "resolved": "http://r.cnpmjs.org/create-hmac/download/create-hmac-1.1.7.tgz",
+      "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "resolved": "http://r.cnpmjs.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz",
+      "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=",
+      "dev": true,
+      "requires": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      }
+    },
+    "cssmin": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.3.2.tgz",
+      "integrity": "sha1-3c5MVHtRCuDVlKjx+/iq+OLFwA0="
+    },
+    "currently-unhandled": {
+      "version": "0.4.1",
+      "resolved": "http://r.cnpmjs.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
+      "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
+      "dev": true,
+      "requires": {
+        "array-find-index": "^1.0.1"
+      }
+    },
+    "d": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/d/download/d-1.0.1.tgz",
+      "integrity": "sha1-hpgJU3LVjb7jRv/Qxwk/mfj561o=",
+      "dev": true,
+      "requires": {
+        "es5-ext": "^0.10.50",
+        "type": "^1.0.1"
+      }
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "debug": {
+      "version": "3.2.6",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
+      "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+      "dev": true,
+      "requires": {
+        "ms": "^2.1.1"
+      },
+      "dependencies": {
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/decamelize/download/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+      "dev": true
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "http://r.cnpmjs.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true
+    },
+    "deep-equal": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz",
+      "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==",
+      "dev": true,
+      "requires": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      }
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "dev": true,
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/define-property/download/define-property-2.0.2.tgz",
+      "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
+      "dev": true,
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "dependencies": {
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "del": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/del/download/del-3.0.0.tgz",
+      "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=",
+      "dev": true,
+      "requires": {
+        "globby": "^6.1.0",
+        "is-path-cwd": "^1.0.0",
+        "is-path-in-cwd": "^1.0.0",
+        "p-map": "^1.1.1",
+        "pify": "^3.0.0",
+        "rimraf": "^2.2.8"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "http://r.cnpmjs.org/pify/download/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "http://r.cnpmjs.org/depd/download/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true
+    },
+    "des.js": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/des.js/download/des.js-1.0.0.tgz",
+      "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true
+    },
+    "detect-node": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
+      "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
+      "dev": true
+    },
+    "diagnostics": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
+      "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==",
+      "requires": {
+        "colorspace": "1.1.x",
+        "enabled": "1.0.x",
+        "kuler": "1.0.x"
+      }
+    },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "http://r.cnpmjs.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      }
+    },
+    "dns-equal": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/dns-equal/download/dns-equal-1.0.0.tgz",
+      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "dev": true
+    },
+    "dns-packet": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+      "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+      "dev": true,
+      "requires": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "dns-txt": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/dns-txt/download/dns-txt-2.0.2.tgz",
+      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+      "dev": true,
+      "requires": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "domain-browser": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/domain-browser/download/domain-browser-1.2.0.tgz",
+      "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=",
+      "dev": true
+    },
+    "ecc-jsbn": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "requires": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "echarts": {
+      "version": "4.9.0",
+      "resolved": "https://registry.npm.taobao.org/echarts/download/echarts-4.9.0.tgz?cache=0&sync_timestamp=1612592564808&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fecharts%2Fdownload%2Fecharts-4.9.0.tgz",
+      "integrity": "sha1-qbm6oD8Doqcx5jQMVb77V6nhNH0=",
+      "requires": {
+        "zrender": "4.3.2"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "http://r.cnpmjs.org/ee-first/download/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "electron-to-chromium": {
+      "version": "1.3.427",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.427.tgz",
+      "integrity": "sha512-/rG5G7Opcw68/Yrb4qYkz07h3bESVRJjUl4X/FrKLXzoUJleKm6D7K7rTTz8V5LUWnd+BbTOyxJX2XprRqHD8A=="
+    },
+    "elliptic": {
+      "version": "6.5.3",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
+      "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.4.0",
+        "brorand": "^1.0.1",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.0"
+      }
+    },
+    "emojis-list": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/emojis-list/download/emojis-list-2.1.0.tgz",
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+      "dev": true
+    },
+    "enabled": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz",
+      "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=",
+      "requires": {
+        "env-variable": "0.0.x"
+      }
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/encodeurl/download/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true
+    },
+    "enhanced-resolve": {
+      "version": "3.4.1",
+      "resolved": "http://r.cnpmjs.org/enhanced-resolve/download/enhanced-resolve-3.4.1.tgz",
+      "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.4.0",
+        "object-assign": "^4.0.1",
+        "tapable": "^0.2.7"
+      },
+      "dependencies": {
+        "tapable": {
+          "version": "0.2.9",
+          "resolved": "http://r.cnpmjs.org/tapable/download/tapable-0.2.9.tgz",
+          "integrity": "sha1-ry2LvJsE907hevK02QSPgHrNGKg=",
+          "dev": true
+        }
+      }
+    },
+    "env-variable": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz",
+      "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA=="
+    },
+    "errno": {
+      "version": "0.1.7",
+      "resolved": "http://r.cnpmjs.org/errno/download/errno-0.1.7.tgz",
+      "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
+      "dev": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "http://r.cnpmjs.org/error-ex/download/error-ex-1.3.2.tgz",
+      "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "es-abstract": {
+      "version": "1.16.0",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
+      "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
+      "dev": true,
+      "requires": {
+        "es-to-primitive": "^1.2.0",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.0",
+        "is-callable": "^1.1.4",
+        "is-regex": "^1.0.4",
+        "object-inspect": "^1.6.0",
+        "object-keys": "^1.1.1",
+        "string.prototype.trimleft": "^2.1.0",
+        "string.prototype.trimright": "^2.1.0"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+      "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+      "dev": true,
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "es5-ext": {
+      "version": "0.10.52",
+      "resolved": "http://r.cnpmjs.org/es5-ext/download/es5-ext-0.10.52.tgz",
+      "integrity": "sha1-uyF3fpGaBCY3Nt7RIKnWZfEOpj8=",
+      "dev": true,
+      "requires": {
+        "es6-iterator": "~2.0.3",
+        "es6-symbol": "~3.1.2",
+        "next-tick": "~1.0.0"
+      }
+    },
+    "es6-iterator": {
+      "version": "2.0.3",
+      "resolved": "http://r.cnpmjs.org/es6-iterator/download/es6-iterator-2.0.3.tgz",
+      "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "^0.10.35",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "es6-map": {
+      "version": "0.1.5",
+      "resolved": "http://r.cnpmjs.org/es6-map/download/es6-map-0.1.5.tgz",
+      "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14",
+        "es6-iterator": "~2.0.1",
+        "es6-set": "~0.1.5",
+        "es6-symbol": "~3.1.1",
+        "event-emitter": "~0.3.5"
+      }
+    },
+    "es6-set": {
+      "version": "0.1.5",
+      "resolved": "http://r.cnpmjs.org/es6-set/download/es6-set-0.1.5.tgz",
+      "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14",
+        "es6-iterator": "~2.0.1",
+        "es6-symbol": "3.1.1",
+        "event-emitter": "~0.3.5"
+      },
+      "dependencies": {
+        "es6-symbol": {
+          "version": "3.1.1",
+          "resolved": "http://r.cnpmjs.org/es6-symbol/download/es6-symbol-3.1.1.tgz",
+          "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
+          "dev": true,
+          "requires": {
+            "d": "1",
+            "es5-ext": "~0.10.14"
+          }
+        }
+      }
+    },
+    "es6-symbol": {
+      "version": "3.1.3",
+      "resolved": "http://r.cnpmjs.org/es6-symbol/download/es6-symbol-3.1.3.tgz",
+      "integrity": "sha1-utXTwbzawoJp9MszHkMceKxwXRg=",
+      "dev": true,
+      "requires": {
+        "d": "^1.0.1",
+        "ext": "^1.1.2"
+      }
+    },
+    "es6-weak-map": {
+      "version": "2.0.3",
+      "resolved": "http://r.cnpmjs.org/es6-weak-map/download/es6-weak-map-2.0.3.tgz",
+      "integrity": "sha1-ttofFswswNm+Q+a9v8Xn383zHVM=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "^0.10.46",
+        "es6-iterator": "^2.0.3",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/escape-html/download/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "escope": {
+      "version": "3.6.0",
+      "resolved": "http://r.cnpmjs.org/escope/download/escope-3.6.0.tgz",
+      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
+      "dev": true,
+      "requires": {
+        "es6-map": "^0.1.3",
+        "es6-weak-map": "^2.0.1",
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "esrecurse": {
+      "version": "4.2.1",
+      "resolved": "http://r.cnpmjs.org/esrecurse/download/esrecurse-4.2.1.tgz",
+      "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=",
+      "dev": true,
+      "requires": {
+        "estraverse": "^4.1.0"
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "http://r.cnpmjs.org/estraverse/download/estraverse-4.3.0.tgz",
+      "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=",
+      "dev": true
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "http://r.cnpmjs.org/etag/download/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true
+    },
+    "event-emitter": {
+      "version": "0.3.5",
+      "resolved": "http://r.cnpmjs.org/event-emitter/download/event-emitter-0.3.5.tgz",
+      "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
+      "dev": true,
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14"
+      }
+    },
+    "eventemitter3": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz",
+      "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==",
+      "dev": true
+    },
+    "events": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/events/download/events-3.0.0.tgz",
+      "integrity": "sha1-mgoN+vYok9krh1uPJpjKQRSXPog=",
+      "dev": true
+    },
+    "eventsource": {
+      "version": "0.1.6",
+      "resolved": "http://r.cnpmjs.org/eventsource/download/eventsource-0.1.6.tgz",
+      "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
+      "dev": true,
+      "requires": {
+        "original": ">=0.0.5"
+      }
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
+      "dev": true,
+      "requires": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "resolved": "http://r.cnpmjs.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://r.cnpmjs.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "array-flatten": {
+          "version": "1.1.1",
+          "resolved": "http://r.cnpmjs.org/array-flatten/download/array-flatten-1.1.1.tgz",
+          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+          "dev": true
+        }
+      }
+    },
+    "ext": {
+      "version": "1.1.2",
+      "resolved": "http://r.cnpmjs.org/ext/download/ext-1.1.2.tgz",
+      "integrity": "sha1-0dIWyDZBu0y3aEYisGPP9EoZzjU=",
+      "dev": true,
+      "requires": {
+        "type": "^2.0.0"
+      },
+      "dependencies": {
+        "type": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/type/download/type-2.0.0.tgz",
+          "integrity": "sha1-Xxb/bvLrRPJgSU2uJxAzspwJqcM=",
+          "dev": true
+        }
+      }
+    },
+    "extend": {
+      "version": "3.0.2",
+      "resolved": "http://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz",
+      "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo="
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "dev": true,
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "http://r.cnpmjs.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "resolved": "http://r.cnpmjs.org/extglob/download/extglob-2.0.4.tgz",
+      "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
+      "dev": true,
+      "requires": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+    },
+    "fast-deep-equal": {
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz",
+      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz",
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+    },
+    "fast-safe-stringify": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
+      "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA=="
+    },
+    "faye-websocket": {
+      "version": "0.10.0",
+      "resolved": "http://r.cnpmjs.org/faye-websocket/download/faye-websocket-0.10.0.tgz",
+      "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
+      "dev": true,
+      "requires": {
+        "websocket-driver": ">=0.5.1"
+      }
+    },
+    "fecha": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
+      "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
+    },
+    "file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=",
+      "dev": true,
+      "optional": true
+    },
+    "fill-range": {
+      "version": "4.0.0",
+      "resolved": "http://r.cnpmjs.org/fill-range/download/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "flyio": {
+      "version": "0.6.14",
+      "resolved": "http://registry.npm.taobao.org/flyio/download/flyio-0.6.14.tgz",
+      "integrity": "sha1-xdg+t6m0/ByRWkY9LqbfznVcLW8=",
+      "requires": {
+        "request": "^2.85.0"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
+      "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==",
+      "dev": true
+    },
+    "font-awesome": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npm.taobao.org/font-awesome/download/font-awesome-4.7.0.tgz",
+      "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM="
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/for-in/download/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+    },
+    "form-data": {
+      "version": "2.3.3",
+      "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz",
+      "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=",
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "forwarded": {
+      "version": "0.1.2",
+      "resolved": "http://r.cnpmjs.org/forwarded/download/forwarded-0.1.2.tgz",
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+      "dev": true
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "dev": true,
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "http://r.cnpmjs.org/fresh/download/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/fs.realpath/download/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz",
+      "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "bindings": "^1.5.0",
+        "nan": "^2.12.1"
+      }
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "dev": true
+    },
+    "get-caller-file": {
+      "version": "1.0.3",
+      "resolved": "http://r.cnpmjs.org/get-caller-file/download/get-caller-file-1.0.3.tgz",
+      "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=",
+      "dev": true
+    },
+    "get-stdin": {
+      "version": "4.0.1",
+      "resolved": "http://r.cnpmjs.org/get-stdin/download/get-stdin-4.0.1.tgz",
+      "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
+      "dev": true
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "resolved": "http://r.cnpmjs.org/get-value/download/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "dev": true
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.1.5",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
+      "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "3.1.0",
+      "resolved": "http://r.cnpmjs.org/glob-parent/download/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "requires": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "http://r.cnpmjs.org/is-glob/download/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "globby": {
+      "version": "6.1.0",
+      "resolved": "http://r.cnpmjs.org/globby/download/globby-6.1.0.tgz",
+      "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+      "dev": true,
+      "requires": {
+        "array-union": "^1.0.1",
+        "glob": "^7.0.3",
+        "object-assign": "^4.0.1",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.3",
+      "resolved": "http://r.cnpmjs.org/graceful-fs/download/graceful-fs-4.2.3.tgz",
+      "integrity": "sha1-ShL/G2A3bvCYYsIJPt2Qgyi+hCM=",
+      "dev": true
+    },
+    "handle-thing": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
+      "integrity": "sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==",
+      "dev": true
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+    },
+    "har-validator": {
+      "version": "5.1.3",
+      "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz",
+      "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=",
+      "requires": {
+        "ajv": "^6.5.5",
+        "har-schema": "^2.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-flag": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/has-flag/download/has-flag-2.0.0.tgz",
+      "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=",
+      "dev": true
+    },
+    "has-symbols": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/has-symbols/download/has-symbols-1.0.0.tgz",
+      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+      "dev": true
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/has-value/download/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "dev": true,
+      "requires": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/has-values/download/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "hash-base": {
+      "version": "3.0.4",
+      "resolved": "http://r.cnpmjs.org/hash-base/download/hash-base-3.0.4.tgz",
+      "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "hash.js": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "hmac-drbg": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "dev": true,
+      "requires": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "hosted-git-info": {
+      "version": "2.8.5",
+      "resolved": "http://r.cnpmjs.org/hosted-git-info/download/hosted-git-info-2.8.5.tgz",
+      "integrity": "sha1-dZz88sTRVq3lmwst+r3cQqa5xww=",
+      "dev": true
+    },
+    "hpack.js": {
+      "version": "2.1.6",
+      "resolved": "http://r.cnpmjs.org/hpack.js/download/hpack.js-2.1.6.tgz",
+      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "html-entities": {
+      "version": "1.2.1",
+      "resolved": "http://r.cnpmjs.org/html-entities/download/html-entities-1.2.1.tgz",
+      "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=",
+      "dev": true
+    },
+    "http-deceiver": {
+      "version": "1.2.7",
+      "resolved": "http://r.cnpmjs.org/http-deceiver/download/http-deceiver-1.2.7.tgz",
+      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "dev": true
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+      "dev": true,
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
+      }
+    },
+    "http-parser-js": {
+      "version": "0.4.10",
+      "resolved": "http://r.cnpmjs.org/http-parser-js/download/http-parser-js-0.4.10.tgz",
+      "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=",
+      "dev": true
+    },
+    "http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+      "dev": true,
+      "requires": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-proxy-middleware": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+      "dev": true,
+      "requires": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
+    },
+    "https-browserify": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/https-browserify/download/https-browserify-1.0.0.tgz",
+      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+      "dev": true
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "ieee754": {
+      "version": "1.1.13",
+      "resolved": "http://r.cnpmjs.org/ieee754/download/ieee754-1.1.13.tgz",
+      "integrity": "sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q=",
+      "dev": true
+    },
+    "import-local": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz",
+      "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==",
+      "dev": true,
+      "requires": {
+        "pkg-dir": "^2.0.0",
+        "resolve-cwd": "^2.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "http://r.cnpmjs.org/find-up/download/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/locate-path/download/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/p-locate/download/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/p-try/download/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "pkg-dir": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/pkg-dir/download/pkg-dir-2.0.0.tgz",
+          "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+          "dev": true,
+          "requires": {
+            "find-up": "^2.1.0"
+          }
+        }
+      }
+    },
+    "indent-string": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/indent-string/download/indent-string-2.1.0.tgz",
+      "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
+      "dev": true,
+      "requires": {
+        "repeating": "^2.0.0"
+      }
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "http://r.cnpmjs.org/inflight/download/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.4.tgz",
+      "integrity": "sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w="
+    },
+    "internal-ip": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/internal-ip/download/internal-ip-1.2.0.tgz",
+      "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=",
+      "dev": true,
+      "requires": {
+        "meow": "^3.3.0"
+      }
+    },
+    "interpret": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/interpret/download/interpret-1.2.0.tgz",
+      "integrity": "sha1-1QYaYiS+WOgIOYX1AU2EQ1lXYpY=",
+      "dev": true
+    },
+    "invert-kv": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/invert-kv/download/invert-kv-1.0.0.tgz",
+      "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
+      "dev": true
+    },
+    "ip": {
+      "version": "1.1.5",
+      "resolved": "http://r.cnpmjs.org/ip/download/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "dev": true
+    },
+    "ipaddr.js": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
+      "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==",
+      "dev": true
+    },
+    "is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-arguments": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
+      "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
+      "dev": true
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/is-arrayish/download/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+      "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+      "dev": true,
+      "requires": {
+        "binary-extensions": "^1.0.0"
+      }
+    },
+    "is-buffer": {
+      "version": "1.1.6",
+      "resolved": "http://r.cnpmjs.org/is-buffer/download/is-buffer-1.1.6.tgz",
+      "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
+      "dev": true
+    },
+    "is-callable": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+      "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+      "dev": true
+    },
+    "is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/is-date-object/download/is-date-object-1.0.1.tgz",
+      "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+      "dev": true
+    },
+    "is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-0.1.6.tgz",
+      "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
+      "dev": true,
+      "requires": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-5.1.0.tgz",
+          "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=",
+          "dev": true
+        }
+      }
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "http://r.cnpmjs.org/is-extendable/download/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/is-extglob/download/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
+    },
+    "is-finite": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/is-finite/download/is-finite-1.0.2.tgz",
+      "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-fullwidth-code-point": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz",
+      "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+      "dev": true,
+      "requires": {
+        "number-is-nan": "^1.0.0"
+      }
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "resolved": "http://r.cnpmjs.org/is-glob/download/is-glob-4.0.1.tgz",
+      "integrity": "sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/is-number/download/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-path-cwd": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/is-path-cwd/download/is-path-cwd-1.0.0.tgz",
+      "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=",
+      "dev": true
+    },
+    "is-path-in-cwd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz",
+      "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==",
+      "dev": true,
+      "requires": {
+        "is-path-inside": "^1.0.0"
+      }
+    },
+    "is-path-inside": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/is-path-inside/download/is-path-inside-1.0.1.tgz",
+      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+      "dev": true,
+      "requires": {
+        "path-is-inside": "^1.0.1"
+      }
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "http://r.cnpmjs.org/is-plain-object/download/is-plain-object-2.0.4.tgz",
+      "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-regex": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/is-regex/download/is-regex-1.0.4.tgz",
+      "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.1"
+      }
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/is-stream/download/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+    },
+    "is-symbol": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+      "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+      "dev": true,
+      "requires": {
+        "has-symbols": "^1.0.0"
+      }
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+    },
+    "is-utf8": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/is-utf8/download/is-utf8-0.2.1.tgz",
+      "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
+      "dev": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/is-windows/download/is-windows-1.0.2.tgz",
+      "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=",
+      "dev": true
+    },
+    "is-wsl": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/is-wsl/download/is-wsl-1.1.0.tgz",
+      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/isarray/download/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/isexe/download/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+      "dev": true
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "resolved": "http://r.cnpmjs.org/isobject/download/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "dev": true
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+    },
+    "js-base64": {
+      "version": "2.6.4",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
+      "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+    },
+    "js-yaml": {
+      "version": "0.3.7",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz",
+      "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I="
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
+    },
+    "jsmin": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz",
+      "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw="
+    },
+    "json-loader": {
+      "version": "0.5.7",
+      "resolved": "http://r.cnpmjs.org/json-loader/download/json-loader-0.5.7.tgz",
+      "integrity": "sha1-3KFKcCNf+C8KyaOr62DTN6NlGF0=",
+      "dev": true
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA="
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+    },
+    "json3": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
+      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
+      "dev": true
+    },
+    "json5": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/json5/download/json5-1.0.1.tgz",
+      "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.0"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+          "dev": true
+        }
+      }
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "jssha": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/jssha/-/jssha-2.3.1.tgz",
+      "integrity": "sha1-FHshJTaQNcpLL30hDcU58Amz3po="
+    },
+    "jweixin-module": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.4.1.tgz",
+      "integrity": "sha512-2R2oa1lYhAsclfjKSf3DP4ZiP1dcrQUbM7aklbeJA+UAg/LS7MqoA6UbTy1cs4sbB34z62K4bKW0Z9iazD8ejg=="
+    },
+    "jxLoader": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/jxLoader/-/jxLoader-0.1.1.tgz",
+      "integrity": "sha1-ATTqUUTlM7WU/B/yX/GU4jXFPs0=",
+      "requires": {
+        "js-yaml": "0.3.x",
+        "moo-server": "1.3.x",
+        "promised-io": "*",
+        "walker": "1.x"
+      }
+    },
+    "killable": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
+      "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+      "dev": true
+    },
+    "kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true
+    },
+    "kuler": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz",
+      "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==",
+      "requires": {
+        "colornames": "^1.1.1"
+      }
+    },
+    "lazy-cache": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/lazy-cache/download/lazy-cache-1.0.4.tgz",
+      "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=",
+      "dev": true
+    },
+    "lcid": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/lcid/download/lcid-1.0.0.tgz",
+      "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
+      "dev": true,
+      "requires": {
+        "invert-kv": "^1.0.0"
+      }
+    },
+    "load-json-file": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/load-json-file/download/load-json-file-1.1.0.tgz",
+      "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "parse-json": "^2.2.0",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0",
+        "strip-bom": "^2.0.0"
+      }
+    },
+    "loader-runner": {
+      "version": "2.4.0",
+      "resolved": "http://r.cnpmjs.org/loader-runner/download/loader-runner-2.4.0.tgz",
+      "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=",
+      "dev": true
+    },
+    "loader-utils": {
+      "version": "1.2.3",
+      "resolved": "http://r.cnpmjs.org/loader-utils/download/loader-utils-1.2.3.tgz",
+      "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=",
+      "dev": true,
+      "requires": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^2.0.0",
+        "json5": "^1.0.1"
+      }
+    },
+    "lodash": {
+      "version": "4.17.20",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
+      "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+    },
+    "logform": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz",
+      "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==",
+      "requires": {
+        "colors": "^1.2.1",
+        "fast-safe-stringify": "^2.0.4",
+        "fecha": "^2.3.3",
+        "ms": "^2.1.1",
+        "triple-beam": "^1.3.0"
+      },
+      "dependencies": {
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+        }
+      }
+    },
+    "loglevel": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.4.tgz",
+      "integrity": "sha512-p0b6mOGKcGa+7nnmKbpzR6qloPbrgLcnio++E+14Vo/XffOGwZtRpUhr8dTH/x2oCMmEoIU0Zwm3ZauhvYD17g==",
+      "dev": true
+    },
+    "longest": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/longest/download/longest-1.0.1.tgz",
+      "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=",
+      "dev": true
+    },
+    "loud-rejection": {
+      "version": "1.6.0",
+      "resolved": "http://r.cnpmjs.org/loud-rejection/download/loud-rejection-1.6.0.tgz",
+      "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
+      "dev": true,
+      "requires": {
+        "currently-unhandled": "^0.4.1",
+        "signal-exit": "^3.0.0"
+      }
+    },
+    "lru-cache": {
+      "version": "4.1.5",
+      "resolved": "http://r.cnpmjs.org/lru-cache/download/lru-cache-4.1.5.tgz",
+      "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=",
+      "dev": true,
+      "requires": {
+        "pseudomap": "^1.0.2",
+        "yallist": "^2.1.2"
+      }
+    },
+    "makeerror": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz",
+      "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=",
+      "requires": {
+        "tmpl": "1.0.x"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "http://r.cnpmjs.org/map-cache/download/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "dev": true
+    },
+    "map-obj": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/map-obj/download/map-obj-1.0.1.tgz",
+      "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
+      "dev": true
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/map-visit/download/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "dev": true,
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "md5.js": {
+      "version": "1.3.5",
+      "resolved": "http://r.cnpmjs.org/md5.js/download/md5.js-1.3.5.tgz",
+      "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "http://r.cnpmjs.org/media-typer/download/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true
+    },
+    "memory-fs": {
+      "version": "0.4.1",
+      "resolved": "http://r.cnpmjs.org/memory-fs/download/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "meow": {
+      "version": "3.7.0",
+      "resolved": "http://r.cnpmjs.org/meow/download/meow-3.7.0.tgz",
+      "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
+      "dev": true,
+      "requires": {
+        "camelcase-keys": "^2.0.0",
+        "decamelize": "^1.1.2",
+        "loud-rejection": "^1.0.0",
+        "map-obj": "^1.0.1",
+        "minimist": "^1.1.3",
+        "normalize-package-data": "^2.3.4",
+        "object-assign": "^4.0.1",
+        "read-pkg-up": "^1.0.1",
+        "redent": "^1.0.0",
+        "trim-newlines": "^1.0.0"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+          "dev": true
+        }
+      }
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "http://r.cnpmjs.org/methods/download/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "3.1.10",
+      "resolved": "http://r.cnpmjs.org/micromatch/download/micromatch-3.1.10.tgz",
+      "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      }
+    },
+    "miller-rabin": {
+      "version": "4.0.1",
+      "resolved": "http://r.cnpmjs.org/miller-rabin/download/miller-rabin-4.0.1.tgz",
+      "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      }
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true
+    },
+    "mime-db": {
+      "version": "1.40.0",
+      "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz",
+      "integrity": "sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI="
+    },
+    "mime-types": {
+      "version": "2.1.24",
+      "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.24.tgz",
+      "integrity": "sha1-tvjQs+lR77d97eyhlM/20W9nb4E=",
+      "requires": {
+        "mime-db": "1.40.0"
+      }
+    },
+    "minimalistic-assert": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=",
+      "dev": true
+    },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+      "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+      "dev": true
+    },
+    "mixin-deep": {
+      "version": "1.3.2",
+      "resolved": "http://r.cnpmjs.org/mixin-deep/download/mixin-deep-1.3.2.tgz",
+      "integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "http://r.cnpmjs.org/is-extendable/download/is-extendable-1.0.1.tgz",
+          "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+      "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.5"
+      }
+    },
+    "moment": {
+      "version": "2.24.0",
+      "resolved": "http://registry.npm.taobao.org/moment/download/moment-2.24.0.tgz",
+      "integrity": "sha1-DQVdU/UFKqZTyfbraLtdEr9cK1s="
+    },
+    "moo-server": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz",
+      "integrity": "sha1-XceVaVZaENbv7VQ5SR5p0jkuWPE="
+    },
+    "mpvue-echarts": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/mpvue-echarts/-/mpvue-echarts-0.3.2.tgz",
+      "integrity": "sha512-KULGS1DOMNhXu3nBkBv6BtmnqjyHLc+2Dur7eW+2s2aic1NCOygglCMmAmMEU6/TGSR67ttFA2NYxXPUYbNhWQ=="
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/ms/download/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+      "dev": true
+    },
+    "multicast-dns": {
+      "version": "6.2.3",
+      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+      "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+      "dev": true,
+      "requires": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      }
+    },
+    "multicast-dns-service-types": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz",
+      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "dev": true
+    },
+    "nan": {
+      "version": "2.14.2",
+      "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz?cache=0&sync_timestamp=1602591684976&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnan%2Fdownload%2Fnan-2.14.2.tgz",
+      "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=",
+      "dev": true,
+      "optional": true
+    },
+    "nanomatch": {
+      "version": "1.2.13",
+      "resolved": "http://r.cnpmjs.org/nanomatch/download/nanomatch-1.2.13.tgz",
+      "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      }
+    },
+    "negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+      "dev": true
+    },
+    "neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+      "dev": true
+    },
+    "next-tick": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/next-tick/download/next-tick-1.0.0.tgz",
+      "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=",
+      "dev": true
+    },
+    "node-forge": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz",
+      "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==",
+      "dev": true
+    },
+    "node-libs-browser": {
+      "version": "2.2.1",
+      "resolved": "http://r.cnpmjs.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz",
+      "integrity": "sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU=",
+      "dev": true,
+      "requires": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^3.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.1",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.11.0",
+        "vm-browserify": "^1.0.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "http://r.cnpmjs.org/punycode/download/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        }
+      }
+    },
+    "node-releases": {
+      "version": "1.1.53",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.53.tgz",
+      "integrity": "sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ=="
+    },
+    "normalize-package-data": {
+      "version": "2.5.0",
+      "resolved": "http://r.cnpmjs.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz",
+      "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=",
+      "dev": true,
+      "requires": {
+        "hosted-git-info": "^2.1.4",
+        "resolve": "^1.10.0",
+        "semver": "2 || 3 || 4 || 5",
+        "validate-npm-package-license": "^3.0.1"
+      }
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/normalize-path/download/normalize-path-3.0.0.tgz",
+      "integrity": "sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=",
+      "dev": true
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "dev": true,
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "number-is-nan": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/number-is-nan/download/number-is-nan-1.0.1.tgz",
+      "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz",
+      "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU="
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "http://r.cnpmjs.org/object-assign/download/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
+      "dev": true
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "resolved": "http://r.cnpmjs.org/object-copy/download/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "dev": true,
+      "requires": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-inspect": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
+      "integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
+      "dev": true
+    },
+    "object-is": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/object-is/download/object-is-1.0.1.tgz",
+      "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=",
+      "dev": true
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "dev": true
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/object-visit/download/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "http://r.cnpmjs.org/object.pick/download/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "obuf": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+      "dev": true
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "http://r.cnpmjs.org/on-finished/download/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "on-headers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "http://r.cnpmjs.org/once/download/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "one-time": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz",
+      "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4="
+    },
+    "opn": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
+      "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      }
+    },
+    "original": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+      "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+      "dev": true,
+      "requires": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "os-browserify": {
+      "version": "0.3.0",
+      "resolved": "http://r.cnpmjs.org/os-browserify/download/os-browserify-0.3.0.tgz",
+      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+      "dev": true
+    },
+    "os-locale": {
+      "version": "1.4.0",
+      "resolved": "http://r.cnpmjs.org/os-locale/download/os-locale-1.4.0.tgz",
+      "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+      "dev": true,
+      "requires": {
+        "lcid": "^1.0.0"
+      }
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/p-finally/download/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
+      "dev": true
+    },
+    "p-map": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
+      "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
+      "dev": true
+    },
+    "pako": {
+      "version": "1.0.10",
+      "resolved": "http://r.cnpmjs.org/pako/download/pako-1.0.10.tgz",
+      "integrity": "sha1-Qyi621CGpCaqkPVBl31JVdpclzI=",
+      "dev": true
+    },
+    "parse-asn1": {
+      "version": "5.1.5",
+      "resolved": "http://r.cnpmjs.org/parse-asn1/download/parse-asn1-5.1.5.tgz",
+      "integrity": "sha1-ADJxND2ljclMrOSU+u89IUfs6g4=",
+      "dev": true,
+      "requires": {
+        "asn1.js": "^4.0.0",
+        "browserify-aes": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "parse-json": {
+      "version": "2.2.0",
+      "resolved": "http://r.cnpmjs.org/parse-json/download/parse-json-2.2.0.tgz",
+      "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.2.0"
+      }
+    },
+    "parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "dev": true
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "resolved": "http://r.cnpmjs.org/pascalcase/download/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "dev": true
+    },
+    "path-browserify": {
+      "version": "0.0.1",
+      "resolved": "http://r.cnpmjs.org/path-browserify/download/path-browserify-0.0.1.tgz",
+      "integrity": "sha1-5sTd1+06onxoogzE5Q4aTug7vEo=",
+      "dev": true
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/path-dirname/download/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/path-exists/download/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
+    },
+    "path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/path-is-inside/download/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/path-key/download/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+      "dev": true
+    },
+    "path-parse": {
+      "version": "1.0.6",
+      "resolved": "http://r.cnpmjs.org/path-parse/download/path-parse-1.0.6.tgz",
+      "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=",
+      "dev": true
+    },
+    "path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "http://r.cnpmjs.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true
+    },
+    "path-type": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/path-type/download/path-type-1.1.0.tgz",
+      "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "pify": "^2.0.0",
+        "pinkie-promise": "^2.0.0"
+      }
+    },
+    "pbkdf2": {
+      "version": "3.0.17",
+      "resolved": "http://r.cnpmjs.org/pbkdf2/download/pbkdf2-3.0.17.tgz",
+      "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=",
+      "dev": true,
+      "requires": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "performance-now": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+    },
+    "picomatch": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
+      "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+      "dev": true,
+      "optional": true
+    },
+    "pify": {
+      "version": "2.3.0",
+      "resolved": "http://r.cnpmjs.org/pify/download/pify-2.3.0.tgz",
+      "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+      "dev": true
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "http://r.cnpmjs.org/pinkie/download/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pkg-up": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz",
+      "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
+      "requires": {
+        "find-up": "^2.1.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+          "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
+        }
+      }
+    },
+    "portfinder": {
+      "version": "1.0.28",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
+      "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
+      "dev": true,
+      "requires": {
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.5"
+      }
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "http://r.cnpmjs.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true
+    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "http://r.cnpmjs.org/process/download/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
+      "dev": true
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha1-eCDZsWEgzFXKmud5JoCufbptf+I="
+    },
+    "promised-io": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz",
+      "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y="
+    },
+    "proxy-addr": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
+      "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
+      "dev": true,
+      "requires": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.9.0"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/prr/download/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/pseudomap/download/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "psl": {
+      "version": "1.1.31",
+      "resolved": "http://registry.npm.taobao.org/psl/download/psl-1.1.31.tgz",
+      "integrity": "sha1-6aqG0BAbWxBcvpOsa3hM1UcnYYQ="
+    },
+    "public-encrypt": {
+      "version": "4.0.3",
+      "resolved": "http://r.cnpmjs.org/public-encrypt/download/public-encrypt-4.0.3.tgz",
+      "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
+      "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew="
+    },
+    "qs": {
+      "version": "6.9.0",
+      "resolved": "http://r.cnpmjs.org/qs/download/qs-6.9.0.tgz",
+      "integrity": "sha1-0Sl+KgScUxGctJzKNmrbusyAtAk="
+    },
+    "querystring": {
+      "version": "0.2.0",
+      "resolved": "http://r.cnpmjs.org/querystring/download/querystring-0.2.0.tgz",
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "dev": true
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/querystring-es3/download/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true
+    },
+    "querystringify": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz",
+      "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
+      "dev": true
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/randombytes/download/randombytes-2.1.0.tgz",
+      "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "resolved": "http://r.cnpmjs.org/randomfill/download/randomfill-1.0.4.tgz",
+      "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+          "dev": true
+        }
+      }
+    },
+    "read-pkg": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/read-pkg/download/read-pkg-1.1.0.tgz",
+      "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
+      "dev": true,
+      "requires": {
+        "load-json-file": "^1.0.0",
+        "normalize-package-data": "^2.3.2",
+        "path-type": "^1.0.0"
+      }
+    },
+    "read-pkg-up": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz",
+      "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
+      "dev": true,
+      "requires": {
+        "find-up": "^1.0.0",
+        "read-pkg": "^1.0.0"
+      },
+      "dependencies": {
+        "find-up": {
+          "version": "1.1.2",
+          "resolved": "http://r.cnpmjs.org/find-up/download/find-up-1.1.2.tgz",
+          "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
+          "dev": true,
+          "requires": {
+            "path-exists": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          }
+        },
+        "path-exists": {
+          "version": "2.1.0",
+          "resolved": "http://r.cnpmjs.org/path-exists/download/path-exists-2.1.0.tgz",
+          "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
+          "dev": true,
+          "requires": {
+            "pinkie-promise": "^2.0.0"
+          }
+        }
+      }
+    },
+    "readable-stream": {
+      "version": "2.3.6",
+      "resolved": "http://r.cnpmjs.org/readable-stream/download/readable-stream-2.3.6.tgz",
+      "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "readdirp": {
+      "version": "2.2.1",
+      "resolved": "http://r.cnpmjs.org/readdirp/download/readdirp-2.2.1.tgz",
+      "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.11",
+        "micromatch": "^3.1.10",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "redent": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/redent/download/redent-1.0.0.tgz",
+      "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
+      "dev": true,
+      "requires": {
+        "indent-string": "^2.1.0",
+        "strip-indent": "^1.0.1"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/regex-not/download/regex-not-1.0.2.tgz",
+      "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regexp.prototype.flags": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz",
+      "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2"
+      }
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "repeat-element": {
+      "version": "1.1.3",
+      "resolved": "http://r.cnpmjs.org/repeat-element/download/repeat-element-1.1.3.tgz",
+      "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "http://r.cnpmjs.org/repeat-string/download/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "dev": true
+    },
+    "repeating": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/repeating/download/repeating-2.0.1.tgz",
+      "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
+      "dev": true,
+      "requires": {
+        "is-finite": "^1.0.0"
+      }
+    },
+    "request": {
+      "version": "2.88.0",
+      "resolved": "http://registry.npm.taobao.org/request/download/request-2.88.0.tgz?cache=0&other_urls=http%3A%2F%2Fregistry.npm.taobao.org%2Frequest%2Fdownload%2Frequest-2.88.0.tgz",
+      "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=",
+      "requires": {
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.8.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.0",
+        "http-signature": "~1.2.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.19",
+        "oauth-sign": "~0.9.0",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.4.3",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      },
+      "dependencies": {
+        "qs": {
+          "version": "6.5.2",
+          "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
+          "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
+        }
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/require-directory/download/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+      "dev": true
+    },
+    "require-main-filename": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/require-main-filename/download/require-main-filename-1.0.1.tgz",
+      "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
+      "dev": true
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/requires-port/download/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
+    },
+    "resolve": {
+      "version": "1.12.0",
+      "resolved": "http://r.cnpmjs.org/resolve/download/resolve-1.12.0.tgz",
+      "integrity": "sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY=",
+      "dev": true,
+      "requires": {
+        "path-parse": "^1.0.6"
+      }
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "resolve-from": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/resolve-from/download/resolve-from-3.0.0.tgz",
+      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "dev": true
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "http://r.cnpmjs.org/resolve-url/download/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "dev": true
+    },
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "http://r.cnpmjs.org/ret/download/ret-0.1.15.tgz",
+      "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=",
+      "dev": true
+    },
+    "right-align": {
+      "version": "0.1.3",
+      "resolved": "http://r.cnpmjs.org/right-align/download/right-align-0.1.3.tgz",
+      "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
+      "dev": true,
+      "requires": {
+        "align-text": "^0.1.1"
+      }
+    },
+    "rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "ripemd160": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/ripemd160/download/ripemd160-2.0.2.tgz",
+      "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
+      "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/safe-regex/download/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "dev": true,
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "http://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz",
+      "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
+    },
+    "select-hose": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/select-hose/download/select-hose-2.0.0.tgz",
+      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "dev": true
+    },
+    "selfsigned": {
+      "version": "1.10.7",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz",
+      "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==",
+      "dev": true,
+      "requires": {
+        "node-forge": "0.9.0"
+      }
+    },
+    "semver": {
+      "version": "5.7.1",
+      "resolved": "http://r.cnpmjs.org/semver/download/semver-5.7.1.tgz",
+      "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=",
+      "dev": true
+    },
+    "send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.0.0",
+              "resolved": "http://r.cnpmjs.org/ms/download/ms-2.0.0.tgz",
+              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+              "dev": true
+            }
+          }
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "dev": true
+        }
+      }
+    },
+    "serve-index": {
+      "version": "1.9.1",
+      "resolved": "http://r.cnpmjs.org/serve-index/download/serve-index-1.9.1.tgz",
+      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.4",
+        "batch": "0.6.1",
+        "debug": "2.6.9",
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "http-errors": {
+          "version": "1.6.3",
+          "resolved": "http://r.cnpmjs.org/http-errors/download/http-errors-1.6.3.tgz",
+          "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
+          "dev": true,
+          "requires": {
+            "depd": "~1.1.2",
+            "inherits": "2.0.3",
+            "setprototypeof": "1.1.0",
+            "statuses": ">= 1.4.0 < 2"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        },
+        "setprototypeof": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+          "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+          "dev": true
+        }
+      }
+    },
+    "serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+      "dev": true,
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/set-blocking/download/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
+      "dev": true
+    },
+    "set-value": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/set-value/download/set-value-2.0.1.tgz",
+      "integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5",
+      "resolved": "http://r.cnpmjs.org/setimmediate/download/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+      "dev": true
+    },
+    "sha.js": {
+      "version": "2.4.11",
+      "resolved": "http://r.cnpmjs.org/sha.js/download/sha.js-2.4.11.tgz",
+      "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/shebang-command/download/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "dev": true,
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/shebang-regex/download/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+      "dev": true
+    },
+    "signal-exit": {
+      "version": "3.0.2",
+      "resolved": "http://r.cnpmjs.org/signal-exit/download/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
+      "dev": true
+    },
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+      "requires": {
+        "is-arrayish": "^0.3.1"
+      },
+      "dependencies": {
+        "is-arrayish": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+        }
+      }
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "http://r.cnpmjs.org/snapdragon/download/snapdragon-0.8.2.tgz",
+      "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
+      "dev": true,
+      "requires": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://r.cnpmjs.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "http://r.cnpmjs.org/extend-shallow/download/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
+      "dev": true,
+      "requires": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/define-property/download/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "http://r.cnpmjs.org/is-descriptor/download/is-descriptor-1.0.2.tgz",
+          "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "http://r.cnpmjs.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "sockjs": {
+      "version": "0.3.19",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
+      "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==",
+      "dev": true,
+      "requires": {
+        "faye-websocket": "^0.10.0",
+        "uuid": "^3.0.1"
+      }
+    },
+    "sockjs-client": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz",
+      "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.6.6",
+        "eventsource": "0.1.6",
+        "faye-websocket": "~0.11.0",
+        "inherits": "^2.0.1",
+        "json3": "^3.3.2",
+        "url-parse": "^1.1.8"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "faye-websocket": {
+          "version": "0.11.3",
+          "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
+          "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
+          "dev": true,
+          "requires": {
+            "websocket-driver": ">=0.5.1"
+          }
+        }
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.1",
+      "resolved": "http://r.cnpmjs.org/source-list-map/download/source-list-map-2.0.1.tgz",
+      "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=",
+      "dev": true
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "resolved": "http://r.cnpmjs.org/source-map/download/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "dev": true
+    },
+    "source-map-resolve": {
+      "version": "0.5.2",
+      "resolved": "http://r.cnpmjs.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz",
+      "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=",
+      "dev": true,
+      "requires": {
+        "atob": "^2.1.1",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.0",
+      "resolved": "http://r.cnpmjs.org/source-map-url/download/source-map-url-0.4.0.tgz",
+      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+      "dev": true
+    },
+    "spdx-correct": {
+      "version": "3.1.0",
+      "resolved": "http://r.cnpmjs.org/spdx-correct/download/spdx-correct-3.1.0.tgz",
+      "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=",
+      "dev": true,
+      "requires": {
+        "spdx-expression-parse": "^3.0.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-exceptions": {
+      "version": "2.2.0",
+      "resolved": "http://r.cnpmjs.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz",
+      "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=",
+      "dev": true
+    },
+    "spdx-expression-parse": {
+      "version": "3.0.0",
+      "resolved": "http://r.cnpmjs.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz",
+      "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=",
+      "dev": true,
+      "requires": {
+        "spdx-exceptions": "^2.1.0",
+        "spdx-license-ids": "^3.0.0"
+      }
+    },
+    "spdx-license-ids": {
+      "version": "3.0.5",
+      "resolved": "http://r.cnpmjs.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz",
+      "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=",
+      "dev": true
+    },
+    "spdy": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz",
+      "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "spdy-transport": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
+          "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "resolved": "http://r.cnpmjs.org/split-string/download/split-string-3.1.0.tgz",
+      "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "sshpk": {
+      "version": "1.16.1",
+      "resolved": "http://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
+      "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=",
+      "requires": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      }
+    },
+    "stack-trace": {
+      "version": "0.0.10",
+      "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
+      "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA="
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "http://r.cnpmjs.org/static-extend/download/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "http://r.cnpmjs.org/define-property/download/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "http://r.cnpmjs.org/statuses/download/statuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true
+    },
+    "stream-browserify": {
+      "version": "2.0.2",
+      "resolved": "http://r.cnpmjs.org/stream-browserify/download/stream-browserify-2.0.2.tgz",
+      "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "stream-http": {
+      "version": "2.8.3",
+      "resolved": "http://r.cnpmjs.org/stream-http/download/stream-http-2.8.3.tgz",
+      "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=",
+      "dev": true,
+      "requires": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "http://r.cnpmjs.org/string_decoder/download/string_decoder-1.1.1.tgz",
+      "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "string-random": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/string-random/-/string-random-0.1.3.tgz",
+      "integrity": "sha512-g+UsIwzKhNi+9/+Q3Q7hP8R4HkQxiIkQlttnxw6GRdk9pnnkGIv53C6H8dvh8wxAVDhkqpnWeauaPXS1b2sBJg=="
+    },
+    "string-width": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/string-width/download/string-width-1.0.2.tgz",
+      "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+      "dev": true,
+      "requires": {
+        "code-point-at": "^1.0.0",
+        "is-fullwidth-code-point": "^1.0.0",
+        "strip-ansi": "^3.0.0"
+      }
+    },
+    "string.prototype.trimleft": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
+      "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "function-bind": "^1.1.1"
+      }
+    },
+    "string.prototype.trimright": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
+      "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "function-bind": "^1.1.1"
+      }
+    },
+    "strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "http://r.cnpmjs.org/strip-ansi/download/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "strip-bom": {
+      "version": "2.0.0",
+      "resolved": "http://r.cnpmjs.org/strip-bom/download/strip-bom-2.0.0.tgz",
+      "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
+      "dev": true,
+      "requires": {
+        "is-utf8": "^0.2.0"
+      }
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/strip-eof/download/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
+      "dev": true
+    },
+    "strip-indent": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/strip-indent/download/strip-indent-1.0.1.tgz",
+      "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
+      "dev": true,
+      "requires": {
+        "get-stdin": "^4.0.1"
+      }
+    },
+    "supports-color": {
+      "version": "4.5.0",
+      "resolved": "http://r.cnpmjs.org/supports-color/download/supports-color-4.5.0.tgz",
+      "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=",
+      "dev": true,
+      "requires": {
+        "has-flag": "^2.0.0"
+      }
+    },
+    "text-hex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
+      "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
+    },
+    "thunky": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+      "dev": true
+    },
+    "time-stamp": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz",
+      "integrity": "sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==",
+      "dev": true
+    },
+    "timers-browserify": {
+      "version": "2.0.11",
+      "resolved": "http://r.cnpmjs.org/timers-browserify/download/timers-browserify-2.0.11.tgz",
+      "integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=",
+      "dev": true,
+      "requires": {
+        "setimmediate": "^1.0.4"
+      }
+    },
+    "timespan": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz",
+      "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk="
+    },
+    "tmpl": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz",
+      "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE="
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+      "dev": true
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "http://r.cnpmjs.org/to-object-path/download/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "http://r.cnpmjs.org/kind-of/download/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "http://r.cnpmjs.org/to-regex/download/to-regex-3.0.2.tgz",
+      "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
+      "dev": true,
+      "requires": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "to-regex-range": {
+      "version": "2.1.1",
+      "resolved": "http://r.cnpmjs.org/to-regex-range/download/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      }
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+      "dev": true
+    },
+    "tough-cookie": {
+      "version": "2.4.3",
+      "resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz",
+      "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=",
+      "requires": {
+        "psl": "^1.1.24",
+        "punycode": "^1.4.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+        }
+      }
+    },
+    "trim-newlines": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/trim-newlines/download/trim-newlines-1.0.0.tgz",
+      "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
+      "dev": true
+    },
+    "triple-beam": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
+      "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
+    },
+    "tty-browserify": {
+      "version": "0.0.0",
+      "resolved": "http://r.cnpmjs.org/tty-browserify/download/tty-browserify-0.0.0.tgz",
+      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+      "dev": true
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
+    },
+    "type": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/type/download/type-1.2.0.tgz",
+      "integrity": "sha1-hI3XaY2vo+VKbEeedZxLw/GIR6A=",
+      "dev": true
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "uglify-js": {
+      "version": "2.8.29",
+      "resolved": "http://r.cnpmjs.org/uglify-js/download/uglify-js-2.8.29.tgz",
+      "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=",
+      "dev": true,
+      "requires": {
+        "source-map": "~0.5.1",
+        "uglify-to-browserify": "~1.0.0",
+        "yargs": "~3.10.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "1.2.1",
+          "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-1.2.1.tgz",
+          "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=",
+          "dev": true
+        },
+        "cliui": {
+          "version": "2.1.0",
+          "resolved": "http://r.cnpmjs.org/cliui/download/cliui-2.1.0.tgz",
+          "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
+          "dev": true,
+          "requires": {
+            "center-align": "^0.1.1",
+            "right-align": "^0.1.1",
+            "wordwrap": "0.0.2"
+          }
+        },
+        "yargs": {
+          "version": "3.10.0",
+          "resolved": "http://r.cnpmjs.org/yargs/download/yargs-3.10.0.tgz",
+          "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^1.0.2",
+            "cliui": "^2.1.0",
+            "decamelize": "^1.0.0",
+            "window-size": "0.1.0"
+          }
+        }
+      }
+    },
+    "uglify-to-browserify": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/uglify-to-browserify/download/uglify-to-browserify-1.0.2.tgz",
+      "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
+      "dev": true,
+      "optional": true
+    },
+    "uglifyjs-webpack-plugin": {
+      "version": "0.4.6",
+      "resolved": "http://r.cnpmjs.org/uglifyjs-webpack-plugin/download/uglifyjs-webpack-plugin-0.4.6.tgz",
+      "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.5.6",
+        "uglify-js": "^2.8.29",
+        "webpack-sources": "^1.0.1"
+      }
+    },
+    "unifly": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/unifly/-/unifly-1.0.2.tgz",
+      "integrity": "sha512-Lk2CQ/HNspIzA3qqeOhEVnfs6G5yNi/3zY3bjEFm4roPi3FhWhAQ6FZDedWo3OrDfMEmGM3IKdbgekeDfvZ3WQ=="
+    },
+    "union-value": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/union-value/download/union-value-1.0.1.tgz",
+      "integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      }
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/unpipe/download/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/unset-value/download/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "dev": true,
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "http://r.cnpmjs.org/has-value/download/has-value-0.3.1.tgz",
+          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "dev": true,
+          "requires": {
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "resolved": "http://r.cnpmjs.org/isobject/download/isobject-2.1.0.tgz",
+              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "dev": true,
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "http://r.cnpmjs.org/has-values/download/has-values-0.1.4.tgz",
+          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+          "dev": true
+        }
+      }
+    },
+    "upath": {
+      "version": "1.2.0",
+      "resolved": "http://r.cnpmjs.org/upath/download/upath-1.2.0.tgz",
+      "integrity": "sha1-j2bbzVWog6za5ECK+LA1pQRMGJQ=",
+      "dev": true
+    },
+    "uri-js": {
+      "version": "4.2.2",
+      "resolved": "http://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz",
+      "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=",
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "http://r.cnpmjs.org/urix/download/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "dev": true
+    },
+    "url": {
+      "version": "0.11.0",
+      "resolved": "http://r.cnpmjs.org/url/download/url-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "dev": true,
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2",
+          "resolved": "http://r.cnpmjs.org/punycode/download/punycode-1.3.2.tgz",
+          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+          "dev": true
+        }
+      }
+    },
+    "url-parse": {
+      "version": "1.4.7",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
+      "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
+      "dev": true,
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "use": {
+      "version": "3.1.1",
+      "resolved": "http://r.cnpmjs.org/use/download/use-3.1.1.tgz",
+      "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=",
+      "dev": true
+    },
+    "util": {
+      "version": "0.11.1",
+      "resolved": "http://r.cnpmjs.org/util/download/util-0.11.1.tgz",
+      "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "http://r.cnpmjs.org/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/util-deprecate/download/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "http://r.cnpmjs.org/utils-merge/download/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.3.2",
+      "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.3.2.tgz",
+      "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE="
+    },
+    "validate-npm-package-license": {
+      "version": "3.0.4",
+      "resolved": "http://r.cnpmjs.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz",
+      "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=",
+      "dev": true,
+      "requires": {
+        "spdx-correct": "^3.0.0",
+        "spdx-expression-parse": "^3.0.0"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "http://r.cnpmjs.org/vary/download/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "vm-browserify": {
+      "version": "1.1.0",
+      "resolved": "http://r.cnpmjs.org/vm-browserify/download/vm-browserify-1.1.0.tgz",
+      "integrity": "sha1-vXbWojMj4sqP+hICjcBFWcdfkBk=",
+      "dev": true
+    },
+    "vuex": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npm.taobao.org/vuex/download/vuex-3.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex%2Fdownload%2Fvuex-3.1.1.tgz",
+      "integrity": "sha1-DCZL/jDNvM+Wq52zF30hGCilkQ4="
+    },
+    "walker": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz",
+      "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=",
+      "requires": {
+        "makeerror": "1.0.x"
+      }
+    },
+    "watchpack": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
+      "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==",
+      "dev": true,
+      "requires": {
+        "chokidar": "^3.4.1",
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0",
+        "watchpack-chokidar2": "^2.0.0"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+          "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "normalize-path": "^3.0.0",
+            "picomatch": "^2.0.4"
+          }
+        },
+        "binary-extensions": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
+          "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
+          "dev": true,
+          "optional": true
+        },
+        "braces": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+          "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "fill-range": "^7.0.1"
+          }
+        },
+        "chokidar": {
+          "version": "3.4.2",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
+          "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "anymatch": "~3.1.1",
+            "braces": "~3.0.2",
+            "fsevents": "~2.1.2",
+            "glob-parent": "~5.1.0",
+            "is-binary-path": "~2.1.0",
+            "is-glob": "~4.0.1",
+            "normalize-path": "~3.0.0",
+            "readdirp": "~3.4.0"
+          }
+        },
+        "fill-range": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+          "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "fsevents": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+          "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+          "dev": true,
+          "optional": true
+        },
+        "glob-parent": {
+          "version": "5.1.1",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+          "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-glob": "^4.0.1"
+          }
+        },
+        "is-binary-path": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+          "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "binary-extensions": "^2.0.0"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+          "dev": true,
+          "optional": true
+        },
+        "readdirp": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+          "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "picomatch": "^2.2.1"
+          }
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+          "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        }
+      }
+    },
+    "watchpack-chokidar2": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz",
+      "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chokidar": "^2.1.8"
+      }
+    },
+    "wbuf": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+      "dev": true,
+      "requires": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "webpack": {
+      "version": "3.12.0",
+      "resolved": "http://r.cnpmjs.org/webpack/download/webpack-3.12.0.tgz",
+      "integrity": "sha1-P540NgNwYC/PY56Xk520hvTsDXQ=",
+      "dev": true,
+      "requires": {
+        "acorn": "^5.0.0",
+        "acorn-dynamic-import": "^2.0.0",
+        "ajv": "^6.1.0",
+        "ajv-keywords": "^3.1.0",
+        "async": "^2.1.2",
+        "enhanced-resolve": "^3.4.0",
+        "escope": "^3.6.0",
+        "interpret": "^1.0.0",
+        "json-loader": "^0.5.4",
+        "json5": "^0.5.1",
+        "loader-runner": "^2.3.0",
+        "loader-utils": "^1.1.0",
+        "memory-fs": "~0.4.1",
+        "mkdirp": "~0.5.0",
+        "node-libs-browser": "^2.0.0",
+        "source-map": "^0.5.3",
+        "supports-color": "^4.2.1",
+        "tapable": "^0.2.7",
+        "uglifyjs-webpack-plugin": "^0.4.6",
+        "watchpack": "^1.4.0",
+        "webpack-sources": "^1.0.1",
+        "yargs": "^8.0.2"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "http://r.cnpmjs.org/ansi-regex/download/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "camelcase": {
+          "version": "4.1.0",
+          "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-4.1.0.tgz",
+          "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=",
+          "dev": true
+        },
+        "cross-spawn": {
+          "version": "5.1.0",
+          "resolved": "http://r.cnpmjs.org/cross-spawn/download/cross-spawn-5.1.0.tgz",
+          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^4.0.1",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "execa": {
+          "version": "0.7.0",
+          "resolved": "http://r.cnpmjs.org/execa/download/execa-0.7.0.tgz",
+          "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+          "dev": true,
+          "requires": {
+            "cross-spawn": "^5.0.1",
+            "get-stream": "^3.0.0",
+            "is-stream": "^1.1.0",
+            "npm-run-path": "^2.0.0",
+            "p-finally": "^1.0.0",
+            "signal-exit": "^3.0.0",
+            "strip-eof": "^1.0.0"
+          }
+        },
+        "find-up": {
+          "version": "2.1.0",
+          "resolved": "http://r.cnpmjs.org/find-up/download/find-up-2.1.0.tgz",
+          "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
+          "dev": true,
+          "requires": {
+            "locate-path": "^2.0.0"
+          }
+        },
+        "get-stream": {
+          "version": "3.0.0",
+          "resolved": "http://r.cnpmjs.org/get-stream/download/get-stream-3.0.0.tgz",
+          "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "json5": {
+          "version": "0.5.1",
+          "resolved": "http://r.cnpmjs.org/json5/download/json5-0.5.1.tgz",
+          "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+          "dev": true
+        },
+        "load-json-file": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/load-json-file/download/load-json-file-2.0.0.tgz",
+          "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.2",
+            "parse-json": "^2.2.0",
+            "pify": "^2.0.0",
+            "strip-bom": "^3.0.0"
+          }
+        },
+        "locate-path": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/locate-path/download/locate-path-2.0.0.tgz",
+          "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+          "dev": true,
+          "requires": {
+            "p-locate": "^2.0.0",
+            "path-exists": "^3.0.0"
+          }
+        },
+        "mem": {
+          "version": "1.1.0",
+          "resolved": "http://r.cnpmjs.org/mem/download/mem-1.1.0.tgz",
+          "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "mimic-fn": {
+          "version": "1.2.0",
+          "resolved": "http://r.cnpmjs.org/mimic-fn/download/mimic-fn-1.2.0.tgz",
+          "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=",
+          "dev": true
+        },
+        "os-locale": {
+          "version": "2.1.0",
+          "resolved": "http://r.cnpmjs.org/os-locale/download/os-locale-2.1.0.tgz",
+          "integrity": "sha1-QrwpAKa1uL0XN2yOiCtlr8zyS/I=",
+          "dev": true,
+          "requires": {
+            "execa": "^0.7.0",
+            "lcid": "^1.0.0",
+            "mem": "^1.1.0"
+          }
+        },
+        "p-limit": {
+          "version": "1.3.0",
+          "resolved": "http://r.cnpmjs.org/p-limit/download/p-limit-1.3.0.tgz",
+          "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+          "dev": true,
+          "requires": {
+            "p-try": "^1.0.0"
+          }
+        },
+        "p-locate": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/p-locate/download/p-locate-2.0.0.tgz",
+          "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+          "dev": true,
+          "requires": {
+            "p-limit": "^1.1.0"
+          }
+        },
+        "p-try": {
+          "version": "1.0.0",
+          "resolved": "http://r.cnpmjs.org/p-try/download/p-try-1.0.0.tgz",
+          "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+          "dev": true
+        },
+        "path-type": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/path-type/download/path-type-2.0.0.tgz",
+          "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+          "dev": true,
+          "requires": {
+            "pify": "^2.0.0"
+          }
+        },
+        "read-pkg": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/read-pkg/download/read-pkg-2.0.0.tgz",
+          "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "^2.0.0",
+            "normalize-package-data": "^2.3.2",
+            "path-type": "^2.0.0"
+          }
+        },
+        "read-pkg-up": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz",
+          "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+          "dev": true,
+          "requires": {
+            "find-up": "^2.0.0",
+            "read-pkg": "^2.0.0"
+          }
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "http://r.cnpmjs.org/string-width/download/string-width-2.1.1.tgz",
+          "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          }
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "http://r.cnpmjs.org/strip-ansi/download/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "3.0.0",
+          "resolved": "http://r.cnpmjs.org/strip-bom/download/strip-bom-3.0.0.tgz",
+          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+          "dev": true
+        },
+        "tapable": {
+          "version": "0.2.9",
+          "resolved": "http://r.cnpmjs.org/tapable/download/tapable-0.2.9.tgz",
+          "integrity": "sha1-ry2LvJsE907hevK02QSPgHrNGKg=",
+          "dev": true
+        },
+        "which-module": {
+          "version": "2.0.0",
+          "resolved": "http://r.cnpmjs.org/which-module/download/which-module-2.0.0.tgz",
+          "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
+          "dev": true
+        },
+        "y18n": {
+          "version": "3.2.1",
+          "resolved": "http://r.cnpmjs.org/y18n/download/y18n-3.2.1.tgz",
+          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+          "dev": true
+        },
+        "yargs": {
+          "version": "8.0.2",
+          "resolved": "http://r.cnpmjs.org/yargs/download/yargs-8.0.2.tgz",
+          "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^4.1.0",
+            "cliui": "^3.2.0",
+            "decamelize": "^1.1.1",
+            "get-caller-file": "^1.0.1",
+            "os-locale": "^2.0.0",
+            "read-pkg-up": "^2.0.0",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^1.0.1",
+            "set-blocking": "^2.0.0",
+            "string-width": "^2.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^3.2.1",
+            "yargs-parser": "^7.0.0"
+          }
+        },
+        "yargs-parser": {
+          "version": "7.0.0",
+          "resolved": "http://r.cnpmjs.org/yargs-parser/download/yargs-parser-7.0.0.tgz",
+          "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=",
+          "dev": true,
+          "requires": {
+            "camelcase": "^4.1.0"
+          }
+        }
+      }
+    },
+    "webpack-dev-middleware": {
+      "version": "1.12.2",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz",
+      "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==",
+      "dev": true,
+      "requires": {
+        "memory-fs": "~0.4.1",
+        "mime": "^1.5.0",
+        "path-is-absolute": "^1.0.0",
+        "range-parser": "^1.0.3",
+        "time-stamp": "^2.0.0"
+      }
+    },
+    "webpack-dev-server": {
+      "version": "2.11.5",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.5.tgz",
+      "integrity": "sha512-7TdOKKt7G3sWEhPKV0zP+nD0c4V9YKUJ3wDdBwQsZNo58oZIRoVIu66pg7PYkBW8A74msP9C2kLwmxGHndz/pw==",
+      "dev": true,
+      "requires": {
+        "ansi-html": "0.0.7",
+        "array-includes": "^3.0.3",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.2",
+        "compression": "^1.7.3",
+        "connect-history-api-fallback": "^1.3.0",
+        "debug": "^3.1.0",
+        "del": "^3.0.0",
+        "express": "^4.16.2",
+        "html-entities": "^1.2.0",
+        "http-proxy-middleware": "^0.19.1",
+        "import-local": "^1.0.0",
+        "internal-ip": "1.2.0",
+        "ip": "^1.1.5",
+        "killable": "^1.0.0",
+        "loglevel": "^1.4.1",
+        "opn": "^5.1.0",
+        "portfinder": "^1.0.9",
+        "selfsigned": "^1.9.1",
+        "serve-index": "^1.9.1",
+        "sockjs": "0.3.19",
+        "sockjs-client": "1.1.5",
+        "spdy": "^4.0.0",
+        "strip-ansi": "^3.0.0",
+        "supports-color": "^5.1.0",
+        "webpack-dev-middleware": "1.12.2",
+        "yargs": "6.6.0"
+      },
+      "dependencies": {
+        "has-flag": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "5.5.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+          "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "webpack-sources": {
+      "version": "1.4.3",
+      "resolved": "http://r.cnpmjs.org/webpack-sources/download/webpack-sources-1.4.3.tgz",
+      "integrity": "sha1-7t2OwLko+/HL/plOItLYkPMwqTM=",
+      "dev": true,
+      "requires": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "http://r.cnpmjs.org/source-map/download/source-map-0.6.1.tgz",
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+          "dev": true
+        }
+      }
+    },
+    "websocket-driver": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
+      "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==",
+      "dev": true,
+      "requires": {
+        "http-parser-js": ">=0.4.0 <0.4.11",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      }
+    },
+    "websocket-extensions": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
+      "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
+      "dev": true
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "http://r.cnpmjs.org/which/download/which-1.3.1.tgz",
+      "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
+      "dev": true,
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "1.0.0",
+      "resolved": "http://r.cnpmjs.org/which-module/download/which-module-1.0.0.tgz",
+      "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+      "dev": true
+    },
+    "window-size": {
+      "version": "0.1.0",
+      "resolved": "http://r.cnpmjs.org/window-size/download/window-size-0.1.0.tgz",
+      "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
+      "dev": true
+    },
+    "winston": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz",
+      "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==",
+      "requires": {
+        "async": "^2.6.1",
+        "diagnostics": "^1.1.1",
+        "is-stream": "^1.1.0",
+        "logform": "^2.1.1",
+        "one-time": "0.0.4",
+        "readable-stream": "^3.1.1",
+        "stack-trace": "0.0.x",
+        "triple-beam": "^1.3.0",
+        "winston-transport": "^4.3.0"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
+          "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "winston-transport": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz",
+      "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==",
+      "requires": {
+        "readable-stream": "^2.3.6",
+        "triple-beam": "^1.2.0"
+      }
+    },
+    "wordwrap": {
+      "version": "0.0.2",
+      "resolved": "http://r.cnpmjs.org/wordwrap/download/wordwrap-0.0.2.tgz",
+      "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=",
+      "dev": true
+    },
+    "wrap-ansi": {
+      "version": "2.1.0",
+      "resolved": "http://r.cnpmjs.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz",
+      "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
+      "dev": true,
+      "requires": {
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.1"
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "http://r.cnpmjs.org/wrappy/download/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "wrench": {
+      "version": "1.3.9",
+      "resolved": "https://registry.npmjs.org/wrench/-/wrench-1.3.9.tgz",
+      "integrity": "sha1-bxPsNRRTF+spLKX2UxORskQRFBE="
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "http://r.cnpmjs.org/xtend/download/xtend-4.0.2.tgz",
+      "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=",
+      "dev": true
+    },
+    "yallist": {
+      "version": "2.1.2",
+      "resolved": "http://r.cnpmjs.org/yallist/download/yallist-2.1.2.tgz",
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+      "dev": true
+    },
+    "yargs": {
+      "version": "6.6.0",
+      "resolved": "http://r.cnpmjs.org/yargs/download/yargs-6.6.0.tgz",
+      "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^3.0.0",
+        "cliui": "^3.2.0",
+        "decamelize": "^1.1.1",
+        "get-caller-file": "^1.0.1",
+        "os-locale": "^1.4.0",
+        "read-pkg-up": "^1.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^1.0.1",
+        "set-blocking": "^2.0.0",
+        "string-width": "^1.0.2",
+        "which-module": "^1.0.0",
+        "y18n": "^3.2.1",
+        "yargs-parser": "^4.2.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "3.0.0",
+          "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-3.0.0.tgz",
+          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+          "dev": true
+        },
+        "y18n": {
+          "version": "3.2.1",
+          "resolved": "http://r.cnpmjs.org/y18n/download/y18n-3.2.1.tgz",
+          "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+          "dev": true
+        }
+      }
+    },
+    "yargs-parser": {
+      "version": "4.2.1",
+      "resolved": "http://r.cnpmjs.org/yargs-parser/download/yargs-parser-4.2.1.tgz",
+      "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=",
+      "dev": true,
+      "requires": {
+        "camelcase": "^3.0.0"
+      },
+      "dependencies": {
+        "camelcase": {
+          "version": "3.0.0",
+          "resolved": "http://r.cnpmjs.org/camelcase/download/camelcase-3.0.0.tgz",
+          "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=",
+          "dev": true
+        }
+      }
+    },
+    "zrender": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npm.taobao.org/zrender/download/zrender-4.3.2.tgz?cache=0&sync_timestamp=1612184093375&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fzrender%2Fdownload%2Fzrender-4.3.2.tgz",
+      "integrity": "sha1-7HQy+UFcgsc1hLa3uMR+GwFiCcY="
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..88f8fcd
--- /dev/null
+++ b/package.json
@@ -0,0 +1,40 @@
+{
+  "name": "shoppingMall",
+  "version": "1.0.0",
+  "description": "#### Description 商城web",
+  "main": "main.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
+    "start": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "browserslist": "^4.12.0",
+    "build": "^0.1.4",
+    "caniuse-lite": "^1.0.30001051",
+    "echarts": "^4.9.0",
+    "flyio": "^0.6.14",
+    "font-awesome": "^4.7.0",
+    "js-base64": "^2.6.4",
+    "jssha": "^2.3.1",
+    "jweixin-module": "^1.4.1",
+    "moment": "^2.24.0",
+    "mpvue-echarts": "^0.3.2",
+    "qs": "^6.9.0",
+    "string-random": "^0.1.3",
+    "unifly": "^1.0.2",
+    "vuex": "^3.1.0"
+  },
+  "devDependencies": {
+    "@types/js-base64": "^3.3.1",
+    "webpack": "^3.12.0",
+    "webpack-dev-server": "^2.11.5"
+  },
+  "repository": {
+    "type": "git",
+    "url": "https://gitee.com/guangzhou_hualei_information/shoppingMall_web.git"
+  }
+}
diff --git a/pages.json b/pages.json
new file mode 100644
index 0000000..178abe6
--- /dev/null
+++ b/pages.json
@@ -0,0 +1,405 @@
+{
+	"pages": [	
+		{
+			"path": "pages/index/start-up",
+			"style": {
+				"navigationBarTitleText": "运营中心"
+			}
+		},
+		 {
+			"path": "pages/index/home",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": true,
+				"navigationStyle": "custom" //禁用uni-app默认的头部导航
+			}
+		},
+		 {
+			"path": "pages/index/all-agent",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": true,
+				"navigationStyle": "custom" //禁用uni-app默认的头部导航
+			}
+		},
+		{
+			"path": "pages/index/city-agent",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": true,
+				"navigationStyle": "custom" //禁用uni-app默认的头部导航
+			}
+		},
+		{
+			"path": "pages/index/mall",
+			"style": {
+				"navigationBarTitleText": "门店管理",
+				"enablePullDownRefresh": true,
+				"navigationStyle": "custom" //禁用uni-app默认的头部导航
+			}
+		},
+		{
+			"path": "pages/index/equipment",
+			"style": {
+				"navigationBarTitleText": "设备列表",
+				"enablePullDownRefresh": true,
+				"navigationStyle": "custom" //禁用uni-app默认的头部导航
+			}
+		},
+		{
+			"path": "pages/index/mine",
+			"style": {
+				"navigationBarTitleText": "结算中心",
+				"enablePullDownRefresh": true,
+				"navigationStyle": "custom", //禁用uni-app默认的头部导航
+				"navigationBarTextStyle": "black",
+				"navigationBarBackgroundColor": "#5CE6B5",
+					"backgroundColor": "#5CE6B5"
+			}
+		},
+		{
+			"path": "pages/index/login",
+			"style": {
+				"navigationBarTitleText": "登录"
+			}
+		}
+	],	
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "商城",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8"
+	},
+	"subPackages": [{
+			"root": "pages/mall",
+			"pages": [
+				{
+					"path": "eq-details",
+					"style": {
+						"navigationBarTitleText": "设备名称",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "eq-details-new",
+					"style": {
+						"navigationBarTitleText": "设备名称",
+						"navigationStyle": "custom" 
+					}
+				},
+				{
+					"path": "relevance-shop",
+					"style": {
+						"navigationBarTitleText": "关联店铺"
+					}
+				},
+				{
+					"path": "abount-machine",
+					"style": {
+						"navigationBarTitleText": "关于本机"
+					}
+				},
+				{
+					"path": "auxiliary-use",
+					"style": {
+						"navigationBarTitleText": "辅助功能"
+					}
+				},
+				{
+					"path": "maintenance-machine",
+					"style": {
+						"navigationBarTitleText": "维护"
+					}
+				},
+				{
+					"path": "managing-tasks",
+					"style": {
+						"navigationBarTitleText": "管理任务"
+					}
+				},
+				{
+					"path": "support_language",
+					"style": {
+						"navigationBarTitleText": "支持语言"
+					}
+				},
+				{
+					"path": "default_language",
+					"style": {
+						"navigationBarTitleText": "默认语言",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "update_name",
+					"style": {
+						"navigationBarTitleText": "修改名称"
+					}
+				},
+				{
+					"path": "clean-nozzle",
+					"style": {
+						"navigationBarTitleText": "清洗喷头",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "clean-nozzle-history",
+					"style": {
+						"navigationBarTitleText": "清洗喷头记录"
+					}
+				},
+				{
+					"path": "clean-nozzle-detection",
+					"style": {
+						"navigationBarTitleText": "喷嘴检测"
+					}
+				},
+				{
+					"path": "software-update",
+					"style": {
+						"navigationBarTitleText": "软件更新"
+					}
+				},
+				{
+					"path": "exclusive-services",
+					"style": {
+						"navigationBarTitleText": "专属服务"
+					}
+				},
+				{
+					"path": "print-tasks",
+					"style": {
+						"navigationBarTitleText": "打印任务"
+					}
+				},
+				{
+					"path": "arrive-good",
+					"style": {
+						"navigationBarTitleText": "上架商品"
+					}
+				},
+				{
+					"path": "related-template",
+					"style": {
+						"navigationBarTitleText": "关联模板"
+					}
+				},
+				{
+					"path": "machine-inventory",
+					"style": {
+						"navigationBarTitleText": "设备库存"
+					}
+				},
+				{
+					"path": "test-colour",
+					"style": {
+						"navigationBarTitleText": "测试色块"
+					}
+				},
+				{
+					"path": "first-ink-installation",
+					"style": {
+						"navigationBarTitleText": "首次装墨"
+					}
+				},
+				{
+					"path": "maintenance-history",
+					"style": {
+						"navigationBarTitleText": "维保历史"
+					}
+				},
+				{
+					"path": "eq-profit",
+					"style": {
+						"navigationBarTitleText": "设备关联收益",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "profit",
+					"style": {
+						"navigationBarTitleText": "订单统计",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "informationList",
+					"style": {
+						"navigationBarTitleText": "切换代理"
+					}
+				},
+				{
+					"path": "stockList",
+					"style": {
+						"navigationBarTitleText": "库存"
+					}
+				}
+			]
+		},
+		{
+			"root": "pages/store",
+			"pages": [{
+					"path": "shopdetails",
+					"style": {
+						"navigationBarTitleText": "新增店铺"
+					}
+				},
+				{
+					"path": "equipment_list",
+					"style": {
+						"navigationBarTitleText": "设备列表",
+						"enablePullDownRefresh": true
+					}
+				}
+			]
+		},
+		{
+			"root": "pages/mine",
+			"pages": [{
+					"path": "order",
+					"style": {
+						"navigationBarTitleText": "订单列表",
+						"enablePullDownRefresh": true,
+						"onReachBottomDistance":100
+					}
+				},
+				{
+					"path": "order-details",
+					"style": {
+						"navigationBarTitleText": "订单详情"
+					}
+				},
+				{
+					"path": "Liquidation",
+					"style": {
+						"navigationBarTitleText": "收入明细",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "Liquidation-details",
+					"style": {
+						"navigationBarTitleText": "收入详情"
+					}
+				},
+				{
+					"path": "bill",
+					"style": {
+						"navigationBarTitleText": "账单列表",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "bill-details",
+					"style": {
+						"navigationBarTitleText": "账单详情"
+					}
+				},
+				{
+					"path": "bill-doubt",
+					"style": {
+						"navigationBarTitleText": "账单疑惑"
+					}
+				},
+				{
+					"path": "Withdrawal",
+					"style": {
+						"navigationBarTitleText": "提现记录",
+						"enablePullDownRefresh": true
+					}
+				},
+				{
+					"path": "Withdrawal-details",
+					"style": {
+						"navigationBarTitleText": "提现详情"
+					}
+				},
+				{
+					"path": "bank",
+					"style": {
+						"navigationBarTitleText": "提现账号"
+					}
+				},
+				{
+					"path": "information",
+					"style": {
+						"navigationBarTitleText": "代理信息"
+					}
+				},
+				{
+					"path": "balance",
+					"style": {
+						"navigationBarTitleText": "资金账户"
+					}
+				},
+				{
+					"path": "money",
+					"style": {
+						"navigationBarTitleText": "提现"
+					}
+				},
+				{
+					"path": "goodStock",
+					"style": {
+						"navigationBarTitleText": "商品库存",
+						"enablePullDownRefresh": true
+					}
+				},
+				 {
+					"path": "Print",
+					"style": {
+						"navigationBarTitleText": "打印记录"
+					}
+				},
+				{
+					"path": "PrintCard",
+					"style": {
+						"navigationBarTitleText": "打印卡记录"
+					}
+				}, 
+				{
+					"path": "PrintUseDetail",
+					"style": {
+						"navigationBarTitleText": "打印量"
+					}
+				},
+				{
+					"path": "PackageDetail",
+					"style": {
+						"navigationBarTitleText": "套餐明细"
+					}
+				},
+				{
+					"path": "RightsAndInterests",
+					"style": {
+						"navigationBarTitleText": "权益对比"
+					}
+				},
+				{
+					"path": "Settle",
+					"style": {
+						"navigationBarTitleText": "结算列表"
+					}
+				},{
+					"path": "SettleDetail",
+					"style": {
+						"navigationBarTitleText": "结算明细"
+					}
+				},
+				 {
+					"path": "UserAgreement",
+					"style": {
+						"navigationBarTitleText": "用户协议"
+					}
+				},
+				{
+					"path": "PrivacyPolicy",
+					"style": {
+						"navigationBarTitleText": "隐私政策"
+					}
+				} 
+			]
+		}
+	]
+}
diff --git a/pages/index/all-agent.vue b/pages/index/all-agent.vue
new file mode 100644
index 0000000..de2bc86
--- /dev/null
+++ b/pages/index/all-agent.vue
@@ -0,0 +1,1255 @@
+<template>
+	<view class="full-width content-color" style="background: #fff; width: 100%; position: relative;">
+		<!-- 自定义头部 -->
+		<myhead :title="titleName" :color="'#000'" :titleShow="true" :backShow="true" :background="'#F8F8F8'"></myhead>
+		<view class="home" v-if="long">
+		
+			<!--订单收益开始-->
+			<view v-if="selectTopType == 1" class="today">
+				<view class="today_ul" style="width:60%;margin-top: -17upx;margin-left:20upx;">
+					<view class="today_ul_div">
+						<view class="today_order_money">
+							<text>{{LoupanList.allOrderIncome.today.order_num }}</text>
+						</view>
+						<view class="today_profit_text" >今日订单(笔)</view>
+						<view class="today_order_money" style="margin-top: 28upx;" >
+							<text>{{LoupanList.allOrderIncome.yesterday.order_num}}</text>
+						</view>
+						<view class="today_profit_text" >昨日订单(笔)</view>
+					</view>
+				</view>
+				
+				<view class="today_ul" style="width:calc(40% - 20upx);margin-left: 30upx;margin-top: -17upx;">
+					<view class="today_ul_div">
+						<view class="today_order_money">
+								<text> {{LoupanList.allOrderIncome.today.order_valid}}</text>
+						</view>
+						<view class="today_profit_text">今日有效(笔)</view>
+						<view class="today_order_money" style="margin-top: 28upx;" >
+								<text>{{LoupanList.allOrderIncome.yesterday.order_valid}}</text>
+						</view>
+						<view class="today_profit_text" >昨日有效(笔)</view>
+					</view>
+				</view>
+				<label class="fa fa-angle-right"
+					style="color: #fff; font-size: 40upx; width:5%;height: 80upx; margin-top: 70upx; padding-left: 5upx;"
+					@click="toProfitPage()"></label>
+			</view>
+			<!--订单结束收益->
+			
+			<!--设备开始-->
+			<view v-if="selectTopType == 2" class="today" style="display: flex; flex-direction: column;">
+				<view class="today_ul" style="width:100%;margin-left:30upx;margin-top: -17upx">
+					<view class="today_ul_div">
+						<view class="today_order_money">
+							<text>{{LoupanList.allMachineCount.all}}</text>
+						</view>
+						<view class="today_profit_text">设备总数(台)</view>
+					</view>
+				</view>
+				<view class="today_ul"
+					style="width:100%;display: flex; flex-direction: row ;margin-top:30upx;margin-left:30upx ">
+					<view class="today_ul_div">
+						<view class="today_order_money">
+							<text>{{LoupanList.allMachineCount.phone}}</text>
+						</view>
+						<view class="today_profit_text">手机壳(台)</view>
+					</view>
+					<view class="today_ul_div" style="padding-left: 25upx;">
+						<view class="today_order_money">
+							<text>{{LoupanList.allMachineCount.shirt}}</text>
+						</view>
+						<view class="today_profit_text">T恤(台)</view>
+					</view>
+					<view class="today_ul_div" style="padding-left: 25upx;">
+						<view class="today_order_money">
+							<text>{{LoupanList.allMachineCount.golf}}</text>
+						</view>
+						<view class="today_profit_text">高尔夫(台)</view>
+					</view>
+					<view class="today_ul_div" style="padding-left: 25upx;">
+						<view class="today_order_money">
+							<text>{{LoupanList.allMachineCount.orther}}</text>
+						</view>
+						<view class="today_profit_text">其他(台)</view>
+					</view>
+				</view>
+			</view>
+			<!--设备结束->			
+			
+			<!--代理开始-->
+			<view v-if="selectTopType == 3" class="today" style="display: flex; flex-direction: row;">
+				<view class="today_ul" style="width:100%;margin-left:30upx;">
+					<view class="today_ul_div" style="align-items: center; height: 100%; margin-top: 40upx; ">
+						<view class="today_order_money">
+							<text>{{LoupanList.allPartnerCount.all}}</text>
+						</view>
+						<view class="today_profit_text">代理总数(位)</view>
+					</view>
+				</view>
+				<view class="today_ul" style="display: flex; flex-direction: column;margin-left:30upx;  margin-top: -30upx;
+				align-items: center; height: 100%;">
+					<view class="today_ul_div">
+						<view class="today_order_money">
+							<text style="font-size: 40upx;">{{LoupanList.allPartnerCount.domestic}}</text>
+						</view>
+						<view class="today_profit_text">国内代理(位)</view>
+					</view>
+					<view class="today_ul_div" style="margin-top: 20upx;">
+						<view class="today_order_money">
+							<text style="font-size: 40upx;">{{LoupanList.allPartnerCount.oversea}}</text>
+						</view>
+						<view class="today_profit_text">国外代理(位)</view>
+					</view>
+				</view>
+			</view>
+			<!--代理结束->
+
+			<!-- 指标趋势 -->
+			<view class="equipment">
+				<view style="display: flex; align-items: center; padding: 0upx 35upx; ">
+					<view style="font-size: 40upx; font-weight: 500; color: #333333; padding: 20upx 0;">指标趋势</view>
+					<view style="margin-left: auto; display: flex; font-size: 26upx;">
+						<view @click="getsevendate(-6)" :style="{'color': seven ? '#E33C64':''}"
+							style="font-size: 26upx;padding: 20upx 0;">近7日</view>
+						<view @click="getthirtydate(-30)" :style="{'color': thirty ? '#E33C64':''}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">近30日</view>
+						<view @click="datatogglePopup('target')" :style="{'color': (seven || thirty) ? '':'#E33C64'}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">
+							自定义<span :style="{'color': (seven || thirty) ? '':'#E33C64'}" class="iconfont icon-xiala"
+								style="margin-left: 5upx; font-size: 20upx; color: #333333;"></span>
+						</view>
+					</view>
+				</view>
+				<view style="padding: 10upx 35upx; ">
+					<view style="display: flex;align-items: center; width: 100%;">
+						<view style="font-size: 23upx;">指标</view>
+						
+						<view @click="target('order')" :class="queryPage.table == 'order' ? 'targetgreen':''"
+							style="font-size: 23upx; color:#FFFFFF; background:#999999; padding: 5upx 25upx; margin-left: 15upx; border-radius: 30upx;">
+							订单总数</view>
+						<view @click="target('order_valid')"
+							:class="queryPage.table == 'order_valid' ? 'targetgreen':''"
+							style="font-size: 23upx; color:#FFFFFF; background:#999999; padding: 5upx 25upx; margin-left: 15upx; border-radius: 30upx;">
+							有效订单</view>
+						<!-- <view @click="target('statement')" :class="queryPage.table == 'statement' ? 'targetgreen':''"
+							style="font-size: 23upx; color:#FFFFFF; background:#999999; padding: 5upx 25upx; margin-left: 15upx; border-radius: 30upx;">
+							收入金额</view> -->
+					</view>
+				</view>
+			</view>
+
+			<!-- 折线图 -->
+			<view class="qiun-columns">
+				<view class="qiun-charts" style="position: relative;">
+					<image :class="[imgSrcstate ? 'imgSrcdisplay':'']" :src="imgSrc" style="width: 750upx;height: 500upx;
+					 position: absolute;z-index: -1; width: 100%; top: 0; left: 0;" @click="imgSrcstate = false"></image>
+					<canvas :class="['charts',imgSrcstate ? 'imgSrcstate':'']" canvas-id="canvaLineA" id="canvaLineA"
+						disable-scroll=true @touchstart="touchLineA" @touchmove="moveLineA"
+						@touchend="touchEndLineA"></canvas>
+				</view>
+			</view>
+
+
+			<!--代理销量榜单开始-->
+			<view v-if="AllSelfStatisticsList !=null && AllSelfStatisticsList.length > 0"
+				style="width: 100%; padding-bottom:20upx; ">
+				<view style="display: flex; align-items: center; padding: 10upx 35upx;">
+					<view style="font-size: 40upx; font-weight: 500; color: #333333; padding: 30upx 0;">普通设备</view>
+					<view style="margin-left: auto; display: flex; font-size: 26upx;">
+						<view @click="getcommongoodonedate(-1)" :style="{'color': commongoodone ? '#E33C64':''}"
+							style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">昨天</view>
+						<view @click="getcommongoodsevendate(-6)" :style="{'color': commongoodseven ? '#E33C64':''}"
+							style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">近7日</view>
+						<view @click="getcommongoodthirtydate(-30)" :style="{'color': commongoodthirty ? '#E33C64':''}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">近30日</view>
+					</view>
+				</view>
+				<view style=" align-items: center; 
+					display: flex; text-align: center; color: #FFFFFF; font-size: 24upx; position: absolute; 
+					width:calc(100% - 80upx); height: 85upx;line-height: 85upx; margin-left:40upx;background: #E33C64">
+					<view style="width:50%;color:#FFFFFF;font-weight:bold;border-right:1upx solid #D5D5D5;">代理</view>
+					<view style="width:15%;height:100%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">设备</view>
+					<view style="width:15%;height:100%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">订单</view>
+					<view style="width:20%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">有效订单</view>
+			
+				</view>
+				<scroll-view
+					style="margin-top: 86upx; width:calc(100% - 80upx); background: #F8F8F8; margin-left:40upx;">
+					<view v-for="(item, index) in AllSelfStatisticsList" :key="index"
+						style="display: flex; font-size: 24upx; border-bottom:1upx solid #FFFFFF; flex-direction: column;">
+						<view v-if="item.name !=null"
+							style="width: 100%; display: flex; flex-direction: row;height: 60upx;line-height:60upx;  ">
+							<view @click="selectSelfAgentList(index,item)"
+								style="width: 50%;border-right: 1upx solid #FFFFFF; font-size: 20upx; display: flex; flex-direction: row;padding-left: 8upx;">
+								<span v-if="item.items !=null && item.items.length > 0" class="iconfont icon-xiala"
+									style="font-size: 20upx; color: #99999;margin-right:10upx;"></span>
+								<span v-if="item.items ==null || item.items.length == 0"
+									style="font-size: 20upx; color: #99999;margin-right:10upx; width: 20upx;"></span>
+								<text style=" width: 160upx; overflow:hidden;
+														 text-overflow:ellipsis;
+														 display:-webkit-box;
+														 -webkit-line-clamp:1;
+														">{{item.name}}</text>
+							</view>
+							<view
+								style="width: 15%;border-right: 1upx solid #FFFFFF; font-size: 20upx;text-align: center; ">
+								{{item.all_machine_count!=undefined?item.all_machine_count:0}}
+							</view>
+							<view
+								style="width: 15%;border-right: 1upx solid #FFFFFF; color: #44CF7C;font-size: 20upx;text-align: center;  ">
+								{{item.order_count!=undefined ?item.order_count:0 }}
+							</view>
+							<view
+								style="width:20%;border-right: 1upx solid #FFFFFF;font-size: 20upx;text-align: center;  ">
+								{{item.order_valid}}
+							</view>
+							<!-- <view
+								style="width:15%;border-right: 1upx solid #FFFFFF; font-size: 20upx;text-align: center; ">
+								{{formatRounding(item.statement_sum)}}
+							</view> -->
+						</view>
+						<view v-if="item.isDown" v-for="(districtItem, index) in item.items" :key="index"
+							style="width: 100%; display: flex; flex-direction: row;height: 60upx;line-height:60upx;">
+							<view v-if="districtItem !=null" style="width: 100%; display: flex; flex-direction: row;">
+								<view style="width:50%;;padding-left: 40upx; font-size: 20upx;">
+									{{districtItem.id}}
+								</view>
+								<view style="width:15%; font-size: 20upx;text-align: center; ">
+									{{districtItem.all_machine_count!=undefined?districtItem.all_machine_count:0}}
+								</view>
+								<view style="width:15%;color: #44CF7C; font-size: 20upx; text-align: center; ">
+									{{districtItem.order_count!=undefined?districtItem.order_count:0}}
+								</view>
+								<view style="width:20%;font-size: 20upx;text-align: center; ">
+									{{districtItem.order_valid}}
+								</view>
+								<!-- <view style="width:15%;font-size: 20upx; text-align: center; ">
+									{{formatRounding(districtItem.statement_sum)}}
+								</view> -->
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+			<!-- 代理销量榜单结束 -->
+
+
+			<!--本月商品销量榜单 -->
+			<view style="width: 100%; padding-bottom: 30upx; margin-bottom:40upx ">
+				<view style="display: flex; align-items: center; padding: 0upx 30upx">
+					<view style="font-size: 40upx; font-weight: 500; color: #333333; padding: 30upx 0;">商品销量</view>
+					<view style="margin-left: auto; display: flex; font-size: 26upx;margin-right: 10upx;">
+						<view @click="getgoodonedate(-1)" :style="{'color': goodone ? '#E33C64':''}"
+							style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">昨天</view>
+						<view @click="getgoodsevendate(-6)" :style="{'color': goodseven ? '#E33C64':''}"
+							style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">近7日</view>
+						<view @click="getgoodthirtydate(-30)" :style="{'color': goodthirty ? '#E33C64':''}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">近30日</view>
+					</view>
+				</view>
+				<view v-if="thisMonthGoodsSizeRank.length > 0">
+					<view class='topBox' v-for="(item, index) in thisMonthGoodsSizeRank" :key="index"
+						@click="LiquidationGoodSize(item)">
+						<view class='topLittleBOX-1' style="width: 240upx;">{{item.goods_name}}</view>
+						<view class='topLittleBOX-2' style="width: calc(100% - 240upx);">
+							<view class='row-1' :style="{width: item.row2 +'px;max-width:90%'}"></view>
+							<view class='rowText'>{{item.count}}</view>
+						</view>
+					</view>
+				</view>
+				<view v-else style="text-align: center; line-height: 60upx;">
+					暂无商品销量数据
+				</view>
+			</view>
+			<!--本月商品销量榜单结束 -->
+		</view>
+
+
+		<!-- 自定义底部 -->
+	    <foot action="0" :partnerId="Userres_partner_id" :partnerType="UserresPartnerType"></foot>
+
+		<!-- 自定义日期开始 -->
+		<uni-popup ref="datashowshare" :type="'center'" @change="change"
+			style="position: relative; z-index: 999999999;">
+			<view class="uni-share" style="width: 700upx; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						自定义日期
+					</view>
+					<view style="margin:40upx; display: flex; align-items: center;justify-content: center;">
+						<view style="width: calc(50% - 30upx);">
+							<picker mode="date" :value="queryPage.trend_start_time" start="2000-01-01"
+								:end="queryPage.trend_end_time" @change="starttimeChange">
+								<view
+									style="font-size: 24upx; background:#F3F3F3; padding: 20upx 25upx; border-radius: 10upx; text-align: center;">
+									{{queryPage.trend_start_time ? queryPage.trend_start_time : '开始时间'}}
+								</view>
+							</picker>
+						</view>
+						<view style="font-size: 24upx; width: 60upx; text-align: center;">至</view>
+						<view style="width: calc(50% - 30upx);">
+							<picker mode="date" :value="queryPage.trend_end_time" :start="queryPage.trend_strat_time"
+								:end="queryPage.trend_end_time" @change="endtimeChange">
+								<view
+									style="font-size: 24upx; background:#F3F3F3; padding: 20upx 25upx; border-radius: 10upx; text-align: center;">
+									{{queryPage.trend_end_time ? queryPage.trend_end_time : '结束时间'}}
+								</view>
+							</picker>
+						</view>
+					</view>
+					<view @click="setdata" style="width: calc(100% - 80upx); margin:0 auto 40upx; height: 90upx; border-radius: 10upx;
+					line-height: 90upx; font-size: 26upx; text-align: center; color: #FFFFFF; background: #E33C64;">确定</view>
+				</view>
+			</view>
+		</uni-popup>
+		<!-- 自定义日期结束 -->
+	</view>
+</template>
+
+<script>
+	import updata from '@/util/updata.js'; //版本更新
+	import foot from '../../components/foot.vue'; // 自定义底部
+	import logoservice from '@/service/logoservice.js';
+	import myhead from './head/head-home-default.vue';
+	//一款可以让数字跑起来的组件
+	import digitJump from '../../components/zhihuai-DigitJump/zhihuai-DigitJump.vue'
+	//折线图
+	import uCharts from '../../js_sdk/u-charts/u-charts.js';
+	//底部弹框
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	var _self;
+	var canvaLineA = null;
+	export default {
+		components: {
+			foot,
+			myhead,
+			digitJump,
+			uniPopup
+		},
+		computed: {},
+		data() {
+			return {
+				selectTopType: 1, //1:订单收益 2:设备 3:代理
+				long: false,
+				queryPage: {
+					m: 'Report/allIndex',
+					table: 'order',
+
+					all_start_time: null, //设备数据开始时间
+					all_end_time: null, //	设备数据结束时间
+
+					trend_start_time: null, //订单趋势开始时间
+					trend_end_time: null, //订单趋势结束时间
+					
+					goods_start_time: null, //商品销量开始时间
+					goods_end_time: null,   //商品销量结束时间
+				},
+				LoupanList: [],
+				IndicatorRrendList: [], //指标趋势集合
+				AllCityStatisticsList: [], //代理集合
+				AllSelfStatisticsList: [], //普通代理集合
+				thirty: null,
+				seven: true,
+
+				commongoodone: true,
+				commongoodseven: null,
+				commongoodthirty: null,
+
+				datatogglePopup_text: null,
+				cWidth: '',
+				cHeight: '',
+				pixelRatio: 1,
+				enableScroll: false,
+				imgSrc: null,
+				imgSrcstate: false, //控制折线图顶层问题
+				chartDataimgSrcstate: true,
+				chartData: {
+					categories: ['', '', '', '', '', '', '', '', ''],
+					series: [{
+						name: '数值',
+						data: [0, 0, 0, 0, 0, 0, 0, 0, 0],
+						color: '#E33C64'
+					}]
+				},
+				datetext: '昨天',
+				datetext_good: '昨天',
+				titleName: '全部代理',
+				agentList: [], //代理数据
+				Userres_partner_id: null, //总代理
+				AgentState: '-1',
+				UserresPartnerType: 4, //代理标识判断
+
+				goodo: null,
+				goodone: true,
+				goodseven: null,
+				goodthirty: null,
+
+				thisMonthGoodsSizeRank: [], //商品数量集合
+
+			};
+		},
+		methods: {
+
+			//四设五入
+			formatRounding(value) {
+				//截取当前数据到小数点后两位
+				let realVal = parseFloat(value).toFixed(2)
+				return realVal
+			},
+
+			//调转统计界面
+			toProfitPage() {
+				uni.navigateTo({
+					url: '/pages/mall/profit?proxy=1',
+				});
+			},
+
+			//头部标题选中
+			onSelectTopTitle(index) {
+				this.selectTopType = index;
+			},
+
+			//调转市代理页面
+			transferToPageCityAgent() {
+				uni.reLaunch({
+					url: "/pages/index/city-agent"
+				})
+			},
+
+
+			//选中代理设备
+			selectCityAgentList(index, item) {
+				var resultList = this.AllCityStatisticsList;
+				this.AllCityStatisticsList = [];
+				var isDown = item.isDown;
+				if (isDown) {
+					isDown = false
+				} else {
+					isDown = true
+				}
+				resultList.forEach(itemData => {
+					if (itemData.id == item.id) {
+						itemData.isDown = isDown
+					}
+				})
+				this.AllCityStatisticsList = resultList;
+			},
+
+			//选中普通设备列表
+			selectSelfAgentList(index, item) {
+				var resultList = this.AllSelfStatisticsList;
+				this.AllSelfStatisticsList = [];
+				var isDown = item.isDown;
+				if (isDown) {
+					isDown = false
+				} else {
+					isDown = true
+				}
+				resultList.forEach(itemData => {
+					if (itemData.id == item.id) {
+						itemData.isDown = isDown
+					}
+				})
+				this.AllSelfStatisticsList = resultList;
+			},
+
+			//确定时间段
+			setdata(e) {
+				this.chartDataimgSrcstate = true
+				this.seven = null
+				this.thirty = null
+				this.loadGoodsList(1);
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+					_this.$refs['datashowshare'].close();
+				}, 800);
+			},
+
+			//选择开始时间
+			starttimeChange(e) {
+				this.queryPage.trend_start_time = e.target.value;
+			},
+
+			//选择结束时间 
+			endtimeChange(e) {
+				this.queryPage.trend_end_time = e.target.value
+			},
+
+
+	        //自定义时间段
+			datatogglePopup(e) {
+			
+				var _this = this
+				_this.imgSrcstate = true
+				setTimeout(function() { //延迟一定时间执行
+					_this.$nextTick(() => {
+						_this.$refs['datashowshare'].open()
+					})
+				}, 100);
+			},
+
+
+
+			//指标趋势---7天
+			getsevendate(e) {
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.trend_start_time = this.getDay(e)
+				this.queryPage.trend_end_time = this.getDay(0)
+				this.seven = true
+				this.thirty = null
+				this.loadGoodsList(1);
+			},
+
+
+			//指标趋势---30天
+			getthirtydate(e) {
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.trend_start_time = this.getDay(e)
+				this.queryPage.trend_end_time = this.getDay(0)
+				//this.queryPage.start_time = this.getDay(e)
+				//this.queryPage.end_time = this.getDay(0)
+				this.seven = null
+				this.thirty = true
+				this.loadGoodsList(1);
+			},
+
+
+			// 普通设备--昨天
+			getcommongoodonedate(e) {
+				this.datetext = '昨天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.all_start_time = this.getDay(e)
+				this.queryPage.all_end_time = this.getDay(e)
+				this.commongoodone = true
+				this.commongoodseven = null
+				this.commongoodthirty = null
+				this.loadGoodsList(3);
+			},
+
+			// 普通设备---7天
+			getcommongoodsevendate(e) {
+				this.datetext = '近7天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.all_start_time = this.getDay(e)
+				this.queryPage.all_end_time = this.getDay(0)
+				this.commongoodone = null
+				this.commongoodseven = true
+				this.commongoodthirty = null
+				this.loadGoodsList(3);
+			},
+
+			// 普通设备----30天
+			getcommongoodthirtydate(e) {
+				this.datetext = '近30天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.all_start_time = this.getDay(e)
+				this.queryPage.all_end_time = this.getDay(0)
+				this.commongoodone = null
+				this.commongoodseven = null
+				this.commongoodthirty = true
+				this.loadGoodsList(3);
+			},
+
+
+			// 商品销量----昨天
+			getgoodonedate(e) {
+				this.datetext_good = '昨天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.goods_start_time = this.getDay(e) 
+				this.queryPage.goods_end_time = this.getDay(0)
+				this.goodone = true
+				this.goodseven = null
+				this.goodthirty = null
+				this.loadGoodsList(2);
+			},
+
+			// 商品销量----7天
+			getgoodsevendate(e) {
+				this.datetext_good = '近7天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.goods_start_time = this.getDay(e)
+				this.queryPage.goods_end_time = this.getDay(0)
+				this.goodseven = true
+				this.goodthirty = null
+				this.goodone = null
+				this.loadGoodsList(2);
+			},
+
+			// 商品销量----30天
+			getgoodthirtydate(e) {
+				this.datetext_good = '近30天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.goods_start_time = this.getDay(e)
+				this.queryPage.goods_end_time = this.getDay(0)
+				this.goodseven = null
+				this.goodthirty = true
+				this.goodone = null
+				this.loadGoodsList(2);
+			},
+
+			//获取天数
+			getDay(day) {
+				this.imgSrcstate = false
+				var today = new Date();
+				var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
+				today.setTime(targetday_milliseconds); //注意,这行是关键代码
+				var tYear = today.getFullYear();
+				var tMonth = today.getMonth();
+				var tDate = today.getDate();
+				tMonth = this.doHandleMonth(tMonth + 1);
+				tDate = this.doHandleMonth(tDate);
+				return tYear + "-" + tMonth + "-" + tDate;
+			},
+
+			//获取月份
+			doHandleMonth(month) {
+				var m = month;
+				if (month.toString().length == 1) {
+					m = "0" + month;
+				}
+				return m;
+			},
+
+			//指标趋势点击
+			target(e) {
+				this.chartDataimgSrcstate = true
+				this.queryPage.table = e
+				this.loadGoodsList(1);
+			},
+
+			//打开所属代理
+			clickAgent() {
+				this.imgSrcstate = true
+				this.$nextTick(() => {
+					this.$refs['showshareAgent'].open()
+				})
+			},
+
+			//打开设备
+			machinetogglePopup() {
+				this.imgSrcstate = true
+				this.$nextTick(() => {
+					this.$refs['machineshowshare'].open()
+				})
+			},
+
+			//打开商品
+			togglePopup() {
+				this.imgSrcstate = true
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+				})
+			},
+
+			//选择月份
+			selectMonth(item) {
+				this.chartDataimgSrcstate = true
+				this.queryPage.goods_name = item.goods_name ? item.goods_name : null
+				this.queryPage.goods_attr = item.goods_specs ? item.goods_specs : null
+				this.queryPage.goods_id = item.goods_id ? item.goods_id : null
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+					_this.$refs['showshare'].close();
+					_this.loadGoodsList(1);
+				}, 100);
+			},
+
+			cancel(type) {
+				this.$refs['showshare'].close()
+				this.$refs['machineshowshare'].close()
+				this.$refs['showshareAgent'].close()
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+				}, 100);
+			},
+			
+			change(e) {
+				if (e.show == false) {
+					var _this = this
+					setTimeout(function() { //延迟一定时间执行
+						_this.imgSrcstate = false
+						_this.chartDataimgSrcstate = false
+					}, 100);
+				}
+			},
+
+			//设备数据
+			equipment_list(e) {
+				uni.navigateTo({
+					url: '/pages/store/equipment_list?status=' + e,
+				});
+			},
+
+			//本月设备收入榜单
+			Liquidationmachine_id(e) {
+				let machineIncome_start_time = this.queryPage.thisMonthOrderIncomeRank_start_time
+				let machineIncome_end_time = this.queryPage.thisMonthOrderIncomeRank_end_time
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + e.machine_id + '&start_time=' +
+						machineIncome_start_time +
+						'&end_time=' + machineIncome_end_time + '&datetext=' + this.datetext
+				});
+			},
+
+			//本月商品销量榜单
+			LiquidationGoodSize(e) {
+				let machineIncome_start_time = this.queryPage.goods_start_time
+				let machineIncome_end_time = this.queryPage.goods_end_time
+			
+				uni.navigateTo({
+					url: '/pages/mine/order?goods_name=' + e.goods_name + '&goods_specs=' + e.goods_specs +
+						'&start_time=' + machineIncome_start_time + '&end_time=' + machineIncome_end_time +
+						'&datetext=' + this.datetext_good + "&is_pay=1" 
+				});
+			},
+
+			//收益
+			Liquidation(e) {
+				if (e == null) {
+					uni.navigateTo({
+						url: '/pages/mine/Liquidation',
+					});
+				} else {
+					uni.navigateTo({
+						url: '/pages/mine/Liquidation?date=' + e + "&day=" + e,
+					});
+				}
+			},
+
+			//调转订单界面
+			toOrderPage(e) {
+				if (e == null) {
+					uni.navigateTo({
+						url: '/pages/mine/order?proxy=1',
+					});
+				} else {
+					uni.navigateTo({
+						url: '/pages/mine/order?day=' + e + "&proxy=1",
+					});
+				}
+			},
+
+			//获取天数
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				//this.queryPage.month = myDate.getFullYear() + '-' + myMonth;
+				let today = myDate.getFullYear() + '-' + myMonth
+				return today
+			},
+
+			loadGoodsList(state) {
+				uni.showLoading({
+					title: '正在加载中...',
+					mask: true
+				})
+				logoservice.Reportindex(this.queryPage).then(result => {
+					this.long = true
+					this.LoupanList = result
+					var max = 80;
+					var first = 0;
+					if (state == 1 || state == 5) { //指标趋势折线图
+						let categories = []
+						let seriesdata = []
+						if (this.LoupanList.allTrend.length > 8) {
+							let number = Math.ceil(this.LoupanList.allTrend.length / 8)
+							this.LoupanList.allTrend.forEach((item, index) => {
+								if (index % number == 0) {
+									categories.push(item.day.split("-")[1] + '-' + item.day.split("-")[2])
+								} else {
+									categories.push('')
+								}
+								seriesdata.push(item.total)
+							})
+						} else {
+							this.LoupanList.allTrend.forEach((item, index) => {
+								categories.push(item.day.split("-")[1] + '-' + item.day.split("-")[2])
+								seriesdata.push(item.total)
+							})
+						}
+						this.chartData.categories = categories
+						this.chartData.series[0].data = seriesdata
+						this.cWidth = uni.upx2px(750);
+						this.cHeight = uni.upx2px(500);
+						this.showLineA("canvaLineA", this.chartData);
+					}
+					if (state == 2 || state == 5) { //市代理列表
+						this.LoupanList.allGoods.forEach((item, index) => {
+							if (index == 0) {
+								item.row2 = max;
+								first = parseFloat(item.count);
+							} else {
+								item.row2 = max * parseFloat(item.count / first)
+								if (item.row2 <= 1) {
+									item.row2 = 1;
+								}
+							}
+						})
+						this.thisMonthGoodsSizeRank = this.LoupanList.allGoods;
+					}
+					if (state == 3 || state == 5) { //普通设备
+						this.LoupanList.allSelfStatistics.forEach(item => {
+							item.isDown = false //是否下拉
+						})
+						this.AllSelfStatisticsList = this.LoupanList.allSelfStatistics;
+					}
+					uni.hideLoading();
+					uni.stopPullDownRefresh();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				});
+			},
+
+			//格式化时间
+			dateFormatTotext(time) {
+				try {
+					var d = new Date(time.replace(/-/g, "/"));
+					var times = (d.getMonth() + 1) + '-' + d.getDate();
+					return times
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				return time;
+			},
+
+			//折线一
+			showLineA(canvasId, chartData) {
+				var _self = this;
+				canvaLineA = new uCharts({
+					$this: _self,
+					canvasId: canvasId, //页面组件canvas-id
+					type: 'area', //图表类型
+					fontSize: 11,
+					legend: {
+						show: false
+					},
+					dataLabel: false, //是否在图表中显示数据标签内容值
+					dataPointShape: true, //是否在图表中显示数据点图形标识
+					background: '#FFFFFF',
+					pixelRatio: _self.pixelRatio,
+					categories: chartData.categories,
+					series: chartData.series,
+					animation: true,
+					enableScroll: _self.enableScroll, //开启图表拖拽功能
+					xAxis: {
+						type: 'grid',
+						gridColor: '#F2F2F2',
+						gridType: 'dash',
+						dashLength: 4,
+						itemCount: 8, //x轴单屏显示数据的数量,默认为5个
+						scrollShow: true, //新增是否显示滚动条,默认false
+						scrollAlign: 'left', //滚动条初始位置
+						scrollBackgroundColor: '#F7F7FF', //默认为 #EFEBEF
+						scrollColor: '#DEE7F7', //默认为 #A6A6A6
+					},
+					yAxis: {
+						calibration: true,
+						gridType: 'dash',
+						gridColor: '#F2F2F2',
+						dashLength: 4,
+						splitNumber: 5,
+						format: (val) => {
+							return val.toFixed(0)
+						}
+					},
+					width: _self.cWidth * _self.pixelRatio,
+					height: _self.cHeight * _self.pixelRatio,
+					padding: [20, 15, 4, 15],
+					extra: {
+						area: {
+							type: 'curve',
+							opacity: 0.2,
+							addLine: true,
+							width: 2
+						}
+					}
+				});
+				canvaLineA.addEventListener('renderComplete', () => { //监控图表渲染完成
+					setTimeout(function() { //延迟一定时间执行
+						uni.canvasToTempFilePath({ //将图表转成图片
+							x: 0,
+							y: 0,
+							width: _self.cWidth * _self.pixelRatio,
+							height: _self.cHeight * _self.pixelRatio,
+							fileType: 'png',
+							canvasId: 'canvaLineA',
+							success: function(res) {
+								_self.imgSrc = res.tempFilePath;
+								_self.chartDataimgSrcstate = false
+							},
+							fail: function(res) {}
+						}, _self);
+					}, 100);
+				});
+			},
+			
+			touchLineA(e) {
+				canvaLineA.scrollStart(e);
+			},
+			
+			moveLineA(e) {
+				canvaLineA.scroll(e);
+			},
+			
+			touchEndLineA(e) {
+				canvaLineA.scrollEnd(e);
+				//下面是toolTip事件,如果滚动后不需要显示,可不填写
+				canvaLineA.showToolTip(e, {
+					format: function(item, category) {
+						return category + ' ' + item.name + ':' + item.data
+					}
+				});
+			}
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+			this.loadGoodsList(5);
+		},
+
+		//上拉加载
+		onReachBottom() {},
+
+		//滑动
+		onPageScroll(e) {
+			let st = e.scrollTop;
+			this.imgSrcstate = true
+		},
+
+		onLoad(options) {
+			this.queryPage.trend_start_time = this.getDay(-6) //订单趋势开始时间
+			this.queryPage.trend_end_time = this.getDay(0) //订单趋势结束时间
+			this.queryPage.goods_start_time = this.getDay(-1) //商品销量开始时间
+			this.queryPage.goods_end_time = this.getDay(-1) //商品销量结束时间
+			this.queryPage.all_start_time = this.getDay(-1) //设备数量开始时间
+			this.queryPage.all_end_time = this.getDay(-1) //设备数量结束时间
+		},
+
+		onShow() {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						this.Userres_partner_id = this.$base.Userres.partner_id; //总代理
+						uni.setStorageSync('partner_id', this.$base.Userres.partner_id)
+						//代理标识判断开始
+						if (this.Userres_partner_id == 0) {
+							this.UserresPartnerType == 1
+						} else {
+							if (this.$base.Userres.partner != null) {
+								if (this.$base.Userres.partner.level == 1) {
+									this.UserresPartnerType == 2
+								} else if (this.$base.Userres.partner.level == 2) {
+									this.UserresPartnerType == 3
+								}
+							}
+						}
+						//代理标识判断开始结束
+						uni.setStorageSync('openid', result.openid)
+						logoservice.setwixinInfo(result);
+						this.loadGoodsList(5);
+						logoservice.receiveMoneyList({
+							m: 'Init/getPartner'
+						}).then(result => {
+							this.agentList = result.list
+							result.list.forEach(item => {
+								if (item.id == result.p_id) {
+									this.titleName = item.name
+									this.queryPage.partner_id = item.id
+									this.$base.partner_id = this.queryPage.partner_id;
+								}
+							})
+						}).catch(err => {
+							uni.showToast({
+								title: err.msg,
+								icon: 'none'
+							});
+						})
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onUnload() {
+			let pages = getCurrentPages();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		background: #FFFFFF !important;
+	}
+
+	.qiun-columns {
+		display: flex;
+		flex-direction: column !important;
+	}
+
+	.qiun-charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.imgSrcstate {
+		position: absolute;
+		width: 100%;
+		right: -900px;
+		top: -600px;
+		display: none;
+	}
+
+	.imgSrcdisplay {
+		z-index: 0 !important;
+	}
+
+	/*底部分享 */
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 26upx;
+		text-align: center;
+		background: #FFFFFF;
+	}
+
+	.green {
+		background-color: #E33C64 !important;
+		color: #FFFFFF;
+	}
+
+	.targetgreen {
+		color: #FFFFFF !important;
+		background: #E33C64 !important;
+	}
+
+	/*样式的width和height一定要与定义的cWidth和cHeight相对应*/
+	.qiun-charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.home {
+		width: 100%;
+		padding-bottom: 40upx;
+		display: flex;
+		flex-direction: column;
+
+		/*今日 today */
+		.today {
+			width: 100%;
+			background: #E33C64;
+			display: flex;
+			justify-content: center;
+			padding-top: 50upx;
+			padding-bottom: 30upx;
+			height: auto;
+
+			.today_ul {
+				width: 100%;
+
+				.today_ul_div {
+					margin-left: 20upx;
+					color: #FFFFFF;
+
+					.today_money {
+						font-size: 35upx;
+						font-weight: bold;
+					}
+
+					.today_profit_text {
+						font-size: 22upx;
+						font-weight: 400;
+						line-height: 20upx;
+					}
+
+					.today_order_money {
+						//margin-top: 96upx;
+						font-size: 50upx;
+						font-weight: 400;
+						margin-bottom: 10upx;
+						//font-weight: bold;
+					}
+
+					.today_order_num {
+						// margin-top: 37upx;
+						font-size: 36upx;
+						font-weight: bold;
+					}
+				}
+			}
+		}
+
+		/* yesterday */
+		.yesterday {
+			width: 100%;
+			height: 127upx;
+			display: flex;
+			border-bottom: 1px solid rgba(178, 178, 178, 0.2);
+
+			.yesterday_div {
+				width: 100%/4;
+				margin-left: 45upx;
+				color: #333333;
+				text-align: center;
+
+				.yesterday_profit_money {
+					margin-top: 36upx;
+					font-size: 36upx;
+					font-weight: bold;
+				}
+
+				.yesterday_profit_text {
+					font-size: 20upx;
+					font-weight: 400;
+					line-height: 30upx;
+				}
+			}
+		}
+
+		/* equipment */
+		.equipment {
+			width: 100%;
+
+			.equipment_title {
+				font-size: 40upx;
+				font-weight: 500;
+				color: #333333;
+				margin: 40upx 0 40upx 45upx;
+			}
+
+			.equipment_main {
+				width: 100%;
+				display: flex;
+
+				.equipment_main_ul {
+					width: calc(100% / 2);
+
+					.equipment_main_ul_circle {
+						width: 120upx;
+						height: 120upx;
+						border-radius: 50%;
+						margin: auto;
+
+						.equipment_main_ul_circle_num {
+							font-size: 40upx;
+							font-weight: 400;
+							text-align: center;
+							line-height: 120upx;
+						}
+					}
+
+					.equipment_main_ul_text {
+						font-size: 28upx;
+						font-weight: 400;
+						margin-top: 40upx;
+						color: #333333;
+						text-align: center;
+					}
+				}
+			}
+		}
+
+		/*本月机器榜单  */
+		.machine_title {
+			font-size: 40upx;
+			font-weight: 500;
+			color: #333333;
+			margin: 80upx 0 70upx 45upx;
+		}
+
+		.topBox {
+			width: calc(100% - 90upx);
+			margin: 0 auto 40upx;
+			display: flex;
+			flex-direction: row;
+			align-items: center;
+		}
+
+		.topLittleBOX-1 {
+			font-size: 24upx;
+			width: 120upx;
+			color: #888888;
+			overflow: text-align;
+		}
+
+		.topLittleBOX-2 {
+			padding-left: 20upx;
+			padding-top: auto;
+			padding-bottom: auto;
+			display: flex;
+
+			vertical-align: middle;
+			flex-direction: row;
+			align-items: center;
+			width: calc(100% - 120upx);
+		}
+
+		.row-1 {
+			height: 30upx;
+			background-color: #43CF7C;
+			border-radius: 20upx;
+			width: 0upx;
+			transition: width 1.5s linear;
+		}
+
+		.rowText {
+			margin-left: 10upx;
+			font-size: 30upx;
+			color: #4c4c4c;
+		}
+
+	}
+</style>
diff --git a/pages/index/city-agent.vue b/pages/index/city-agent.vue
new file mode 100644
index 0000000..a327f39
--- /dev/null
+++ b/pages/index/city-agent.vue
@@ -0,0 +1,1284 @@
+<template>
+	<view class="full-width content-color" style="background: #fff; width: 100%; position: relative;">
+		<!-- 自定义头部 -->
+		<myhead :title="titleName" :color="'#000'" :titleShow="true" :backShow="true" :background="'#F8F8F8'"></myhead>
+		
+		<view class="home" v-if="long">
+			<view style=" align-items: center;
+			display: flex; text-align: center; color: #FFFFFF; font-size: 24upx; position: absolute; 
+			width:100%; height: 85upx;line-height: 85upx;;border-bottom:1upx solid #D5D5D5;margin-top: 10upx;">
+				<view :style="{'background': selectTopType ==1  ? '#FF8D1A':'#999999'}" style="width:50%;color:#FFFFFF;font-weight:bold;
+				border-right:1upx solid #D5D5D5;
+				 border-top-left-radius:20upx; 
+				background:#999999;height: 100%;" @click="onSelectTopTitle(1)">收益</view>
+				<view :style="{'background': selectTopType == 2  ? '#FF8D1A':'#999999'}"
+					style="width:50%;height:100%;color: #FFFFFF;border-right:1upx solid #D5D5D5;background: #999999;height: 100%;border-top-right-radius: 20upx;"
+					@click="onSelectTopTitle(2)">
+					设备</view>
+			</view>
+
+			<!--订单收益开始-->
+			<view v-if="selectTopType == 1" class="today">
+				<view class="today_ul" style="width:33%;margin-top: -17upx;margin-left: 20upx;">
+					<view class="today_ul_div">
+						<view class="today_order_money" @click="toOrderPage(getDay(-1))">
+							<!-- @click="profit()" -->
+							<text>{{LoupanList.cityOrderIncome.yesterday.order_num}}</text>
+						</view>
+						<view class="today_profit_text" @click="toOrderPage(getDay(-1))">昨日订单(笔)</view>
+						<view class="today_order_money" style="margin-top: 28upx;" @click="Liquidation(getDay(-1))">
+							<digitJump :textColor="zh_text_white" :digitDelay="0"
+								:digitTo="LoupanList.cityOrderIncome.yesterday.order_amount" :digitFiex='2'></digitJump>
+						</view>
+						<view class="today_profit_text" @click="Liquidation(getDay(-1))">昨日收益(¥)</view>
+					</view>
+				</view>
+
+				<view class="today_ul" style="width:33%;margin-top: -17upx">
+					<view class="today_ul_div">
+						<view class="today_order_money" @click="toOrderPage(getDay(0))">
+							<!-- @click="profit()" -->
+							<text>{{LoupanList.cityOrderIncome.today.order_num}}</text>
+						</view>
+						<view class="today_profit_text" @click="toOrderPage(getDay(0))">今日实时订单(笔)</view>
+						<view class="today_order_money" style="margin-top: 28upx;" @click="Liquidation(getDay(0))">
+							<digitJump :textColor="zh_text_white" :digitDelay="0"
+								:digitTo="LoupanList.cityOrderIncome.today.order_amount" :digitFiex='2'></digitJump>
+						</view>
+						<view class="today_profit_text" @click="Liquidation(getDay(0))">今日实时收益(¥)</view>
+					</view>
+				</view>
+				<view style="width:1upx;height:110upx;background: #D5D5D5;margin-top: 40upx; margin-left: 35upx;">
+				</view>
+
+				<view class="today_ul" style="width:33%;margin-top: -17upx">
+					<view class="today_ul_div">
+						<view class="today_order_money" @click="toOrderPage(null)">
+							<!-- @click="profit()" -->
+							<text>{{LoupanList.cityOrderIncome.month.order_num}}</text>
+						</view>
+						<view class="today_profit_text" @click="toOrderPage(null)">本月订单(笔)</view>
+						<view class="today_order_money" style="margin-top: 28upx;" @click="Liquidation(null)">
+							<digitJump :textColor="zh_text_white" :digitDelay="0"
+								:digitTo="LoupanList.cityOrderIncome.month.order_amount" :digitFiex='2'></digitJump>
+						</view>
+						<view class="today_profit_text" @click="Liquidation(null)">本月收益(¥)</view>
+					</view>
+				</view>
+
+				<label class="fa fa-angle-right"
+					style="color: #fff; font-size: 40upx; width:5%;height: 80upx; margin-top: 70upx; padding-left: 5upx;"
+					@click="toProfitPage()"></label>
+			</view>
+			<!--订单结束->
+			
+			
+			<!-设备开始-->
+			<view v-if="selectTopType == 2" class="today">
+				<view class="today_ul" style="width: 33%;margin-left:20upx;margin-top: -17upx">
+					<view class="today_ul_div">
+						<view class="today_order_money">
+							<text>{{LoupanList.cityMachineCount.week}}</text>
+						</view>
+						<view class="today_profit_text">本周新增(台)</view>
+						<view class="today_order_money" style="margin-top: 28upx;">
+							<text>{{LoupanList.cityMachineCount.all}}</text>
+						</view>
+						<view class="today_profit_text">代理设备</view>
+					</view>
+				</view>
+				<view class="today_ul" style="width:33%;margin-top: -17upx">
+					<view class="today_ul_div">
+						<view class="today_order_money">
+							<text>{{LoupanList.cityMachineCount.month}}</text>
+						</view>
+						<view class="today_profit_text">本月新增(台)</view>
+						<view class="today_order_money" style="margin-top: 28upx;">
+							<text>{{LoupanList.cityMachineCount.my}}</text>
+						</view>
+						<view class="today_profit_text">我的设备(台)</view>
+					</view>
+				</view>
+				<view style="width:1upx;height:110upx;background: #D5D5D5;margin-top: 40upx; margin-left: 35upx;">
+				</view>
+				<view class="today_ul" style="width:34%;margin-left: 30upx;margin-top: -17upx;">
+					<view class="today_ul_div">
+						<view class="today_order_money">
+							<text>{{LoupanList.cityMachineCount.week_partner}}</text>
+						</view>
+						<view class="today_profit_text">本周新增(位)</view>
+						<view class="today_order_money" style="margin-top: 28upx;">
+							<text>{{LoupanList.cityMachineCount.all_partner}}</text>
+						</view>
+						<view class="today_profit_text">市代理总数(位)</view>
+					</view>
+				</view>
+			</view>
+			<!--设备结束->
+	
+			<!--指标趋势-->
+			<view class="equipment">
+				<view style="display: flex; align-items: center; padding: 0upx 35upx;">
+					<view style="font-size: 40upx; font-weight: 500; color: #333333; padding: 20upx 0;">指标趋势</view>
+					<view style="margin-left: auto; display: flex; font-size: 26upx;">
+						<view @click="getsevendate(-7)" :style="{'color': seven ? '#FF8D1A':''}"
+							style="font-size: 26upx;padding: 20upx 0;">近7日</view>
+						<view @click="getthirtydate(-30)" :style="{'color': thirty ? '#FF8D1A':''}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">近30日</view>
+						<view @click="datatogglePopup('target')" :style="{'color': (seven || thirty) ? '':'#FF8D1A'}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">
+							自定义<span :style="{'color': (seven || thirty) ? '':'#FF8D1A'}" class="iconfont icon-xiala"
+								style="margin-left: 5upx; font-size: 20upx; color: #333333;"></span>
+						</view>
+					</view>
+				</view>
+				<view style="padding: 20upx 45upx;">
+					<view style="display: flex;align-items: center;">
+						<view style="font-size: 26upx;">指标</view>
+						<view @click="target('machine')" :class="queryPage.table == 'machine' ? 'targetgreen':''"
+							style="font-size: 26upx; color:#FFFFFF; background:#999999; padding: 5upx 25upx; margin-left: 20upx; border-radius: 40upx;">
+							设备数量</view>
+						<view @click="target('order')" :class="queryPage.table == 'order' ? 'targetgreen':''"
+							style="font-size: 26upx; color:#FFFFFF; background:#999999; padding: 5upx 25upx; margin-left: 20upx; border-radius: 40upx;">
+							订单笔数</view>
+						<view @click="target('statement')" :class="queryPage.table == 'statement' ? 'targetgreen':''"
+							style="font-size: 26upx; color:#FFFFFF; background:#999999; padding: 5upx 25upx; margin-left: 20upx; border-radius: 40upx;">
+							收入金额</view>
+					</view>
+				</view>
+			</view>
+
+			<!-- 折线图开始-->
+			<view class="qiun-columns">
+				<view class="qiun-charts" style="position: relative;">
+					<image :class="[imgSrcstate ? 'imgSrcdisplay':'']" :src="imgSrc" style="width: 750upx;height: 500upx;
+					 position: absolute;z-index: -1; width: 100%; top: 0; left: 0;" @click="imgSrcstate = false"></image>
+					<canvas :class="['charts',imgSrcstate ? 'imgSrcstate':'']" canvas-id="canvaLineA" id="canvaLineA"
+						disable-scroll=true @touchstart="touchLineA" @touchmove="moveLineA"
+						@touchend="touchEndLineA"></canvas>
+				</view>
+			</view>
+			<!-- 折线图结束-->
+
+			<!--代理设备开始 -->
+			<view v-if="AllDistrictStatisticsList !=null && AllDistrictStatisticsList.length > 0"
+				style="width: 100%; padding-bottom: 10upx; margin-bottom: 10upx;">
+				<view style="display: flex; align-items: center; padding: 10upx 35upx;">
+					<view style="font-size: 40upx; font-weight: 500; color: #333333; padding: 30upx 0;">代理设备</view>
+					<view style="margin-left: auto; display: flex; font-size: 26upx;">
+						<view @click="getdistrictdate(-1)" :style="{'color': districtgoodone ? '#FF8D1A':''}"
+							style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">昨天</view>
+						<view @click="getdistrictsevendate(-7)" :style="{'color': districtgoodseven ? '#FF8D1A':''}"
+							style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">近7日</view>
+						<view @click="getdistrictthirtydate(-30)" :style="{'color': districtgoodthirty ? '#FF8D1A':''}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">近30日</view>
+					</view>
+				</view>
+				<view style=" align-items: center;
+				display: flex; text-align: center; color: #FFFFFF; font-size: 24upx; position: absolute; 
+				width:calc(100% - 80upx); height: 85upx;line-height: 85upx; margin-left:40upx;background: #FF8D1A">
+					<view style="width:40%;color:#FFFFFF;font-weight:bold;border-right:1upx solid #D5D5D5;">代理</view>
+					<view style="width:15%;height:100%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">设备</view>
+					<view style="width:15%;height:100%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">新增</view>
+					<view style="width:15%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">订单</view>
+					<view style="width:15%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">金额</view>
+				</view>
+				<scroll-view
+					style="margin-top: 86upx; width:calc(100% - 80upx); background: #F8F8F8; margin-left:40upx;">
+					<view v-for="(item, index) in AllDistrictStatisticsList" :key="index"
+						style="display: flex;font-size:24upx;border-bottom:1upx solid #FFFFFF; flex-direction:column;">
+						<view v-if="item.name !=null"
+							style="width:100%;display:flex;flex-direction:row;height:60upx;line-height:60upx;align-items:center;">
+							<view @click="selectDistrictAgentList(index,item)"
+							style="width: 40%;border-right: 1upx solid #FFFFFF; font-size: 20upx; display: flex; flex-direction: row;padding-left: 8upx;">
+							<span v-if="item.items !=null && item.items.length > 0" class="iconfont icon-xiala"
+								style="font-size: 20upx; color: #99999;margin-right:10upx;"></span>
+							<span v-if="item.items ==null || item.items.length == 0"
+								style="font-size: 20upx; color: #99999;margin-right:10upx; width: 20upx;"></span>
+							<text style=" width: 98%; overflow:hidden;text-overflow:ellipsis;display:-webkit-box; -webkit-line-clamp:1;-webkit-box-orient:vertical;">{{item.name}}</text>
+							</view>
+						
+							<view style="width: 15%;border-right:1upx solid #FFFFFF;font-size: 20upx; text-align: center;">
+								{{item.all_machine_count}}
+							</view>
+							<view style="width:15%;border-right:1upx solid #FFFFFF;color:#FF8D1A; font-size: 20upx;text-align: center;">
+								{{item.new_machine_count}}
+							</view>
+							<view style="width:15%;border-right: 1upx solid #FFFFFF;font-size: 20upx;text-align: center;">
+								{{item.order_count}}
+							</view>
+							<view style="width:15%;border-right: 1upx solid #FFFFFF;font-size: 20upx;text-align: center;">
+								{{formatRounding(item.statement_sum)}}
+							</view>
+						</view>
+						<view v-if="item.isDown " v-for="(districtItem, index) in item.items" :key="index"
+							style="width: 100%; display: flex; flex-direction: row;">
+							<view
+								style="width:100%;display: flex; flex-direction: row;height:60upx;line-height:60upx;">
+								<view style="width:40%;;padding-left: 40upx;font-size: 20upx;">
+									{{districtItem.name}}
+								</view>
+								<view style="width:15%;font-size: 20upx;text-align: center;">
+									{{districtItem.all_machine_count}}
+								</view>
+								<view style="width:15%;color:#FF8D1A;font-size: 20upx;text-align: center;">
+									{{districtItem.new_machine_count}}
+								</view>
+								<view style="width:15%;font-size: 20upx;text-align: center;">
+									{{districtItem.order_count}}
+								</view>
+								<view style="width:15%;font-size: 20upx;text-align: center;">
+									{{formatRounding(districtItem.statement_sum)}}
+								</view>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+			<!--代理设备结束 -->
+
+			<!--我的设备销量开始 -->
+			<view v-if="AllDeviceStatisticsList !=null && AllDeviceStatisticsList.length > 0"
+				style="width: 100%; padding-bottom:50upx;margin-bottom:50upx;">
+				<view style="display: flex; align-items: center; padding: 10upx 35upx;">
+					<view style="font-size: 40upx; font-weight: 500; color: #333333; padding: 30upx 0;">我的设备</view>
+					<view style="margin-left: auto; display: flex; font-size: 26upx;">
+						<view @click="getdeviceonedate(-1)" :style="{'color': devicegoodone ? '#FF8D1A':''}"
+							style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">昨天</view>
+						<view @click="getdevicesevendate(-7)" :style="{'color': devicegoodseven ? '#FF8D1A':''}"
+							style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">近7日</view>
+						<view @click="getdevicethirtydate(-30)" :style="{'color': devicegoodthirty ? '#FF8D1A':''}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">近30日</view>
+					</view>
+				</view>
+				<view style=" align-items: center;
+					display: flex; text-align: center; color: #FFFFFF; font-size: 24upx; position: absolute; 
+					width:calc(100% - 80upx); height: 85upx;line-height: 85upx; margin-left:40upx;background: #FF8D1A">
+					<view style="width:25%;height:100%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">设备编号</view>
+					<view style="width:25%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">作品数</view>
+					<view style="width:25%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">订单</view>
+					<view style="width:25%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">收益</view>
+				</view>
+				<scroll-view
+					style="margin-top: 86upx; width:calc(100% - 80upx); background: #F8F8F8; margin-left:40upx;">
+					<view v-for="(item, index) in AllDeviceStatisticsList" :key="index"
+						style="display: flex; text-align: center; font-size: 24upx; text-align:center;border-bottom:1upx solid #FFFFFF; flex-direction:column;">
+						<view
+							style="width:100%;display:flex;flex-direction:row;height:60upx;height:60upx;line-height:60upx;align-items:center;">
+							<view style="width: 25%;border-right:1upx solid #FFFFFF;font-size: 20upx;">
+								{{item.id}}
+							</view>
+							<view style="width:25%;border-right:1upx solid #FFFFFF;color:#FF8D1A; font-size: 20upx;">
+								{{item.works_num}}
+							</view>
+							<view style="width:25%;border-right: 1upx solid #FFFFFF;font-size: 20upx;">
+								{{item.order_count}}
+							</view>
+							<view style="width:25%;border-right: 1upx solid #FFFFFF;font-size: 20upx;">
+								{{formatRounding(item.statement_sum)}}
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+			</view>
+			<!--我的设备销量结束 -->
+		</view>
+
+		<!-- 自定义底部 -->
+		<foot action="0" :partnerId="Userres_partner_id" :partnerType="UserresPartnerType"></foot>
+
+		<!-- 自定义日期开始 -->
+		<uni-popup ref="datashowshare" :type="'center'" @change="change"
+			style="position: relative; z-index: 999999999;">
+			<view class="uni-share" style="width: 700upx; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+				text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						自定义日期
+					</view>
+					<view style="margin:40upx; display: flex; align-items: center;justify-content: center;">
+						<view style="width: calc(50% - 30upx);">
+							<picker mode="date" :value="queryPage.trend_start_time" start="2000-01-01"
+								:end="queryPage.trend_end_time" @change="starttimeChange">
+								<view
+									style="font-size: 24upx; background:#F3F3F3; padding: 20upx 25upx; border-radius: 10upx; text-align: center;">
+									{{queryPage.trend_start_time ? queryPage.trend_start_time : '开始时间'}}
+								</view>
+							</picker>
+						</view>
+						<view style="font-size: 24upx; width: 60upx; text-align: center;">至</view>
+						<view style="width: calc(50% - 30upx);">
+							<picker mode="date" :value="queryPage.trend_end_time" :start="queryPage.trend_strat_time"
+								:end="queryPage.trend_end_time" @change="endtimeChange">
+								<view
+									style="font-size: 24upx; background:#F3F3F3; padding: 20upx 25upx; border-radius: 10upx; text-align: center;">
+									{{queryPage.trend_end_time ? queryPage.trend_end_time : '结束时间'}}
+								</view>
+							</picker>
+						</view>
+					</view>
+					<view @click="setdata" style="width: calc(100% - 80upx); margin:0 auto 40upx; height: 90upx; border-radius: 10upx;
+				line-height: 90upx; font-size: 26upx; text-align: center; color: #FFFFFF; background: #FF8D1A;">确定</view>
+				</view>
+			</view>
+		</uni-popup>
+		<!-- 自定义日期结束 -->
+
+	</view>
+</template>
+
+<script>
+	import updata from '@/util/updata.js'; //版本更新
+	import foot from '../../components/foot.vue'; // 自定义底部
+	import logoservice from '@/service/logoservice.js';
+	import myhead from './head/head-home-default.vue';
+	//一款可以让数字跑起来的组件
+	import digitJump from '../../components/zhihuai-DigitJump/zhihuai-DigitJump.vue'
+
+	//折线图
+	import uCharts from '../../js_sdk/u-charts/u-charts.js';
+	//底部弹框
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	var _self;
+	var canvaLineA = null;
+	export default {
+		components: {
+			foot,
+			myhead,
+			digitJump,
+			uniPopup
+		},
+		computed: {},
+		data() {
+			return {
+				selectTopType: 1, //1:订单收益 2:设备 
+				long: false,
+				//m=Report/cityIndex
+				queryPage: {
+					m: 'Report/cityIndex',
+					table: 'machine',
+					trend_start_time: null, //指标开始时间
+					trend_end_time: null, //指标结束时间
+					city_start_time: null, //市级代理开始时间
+					city_end_time: null, //市级代理结束时间
+					machine_start_time: null, //我的设备开始时间
+					machine_end_time: null, //我的设备结束时间
+				},
+				LoupanList: [],
+				IndicatorRrendList: [], //指标趋势集合
+				AllDistrictStatisticsList: [], //区级代理集合
+				AllDeviceStatisticsList: [], //设备代理集合
+
+				thirty: null,
+				seven: true,
+				districtgoodone: true,
+				districtgoodseven: null,
+				districtgoodthirty: null,
+
+				devicegoodone: true,
+				devicegoodseven: null,
+				devicegoodthirty: null,
+
+				datatogglePopup_text: null,
+
+				cWidth: '',
+				cHeight: '',
+				pixelRatio: 1,
+				enableScroll: false,
+				imgSrc: null,
+				imgSrcstate: false, //控制折线图顶层问题
+				chartDataimgSrcstate: true,
+				chartData: {
+					categories: ['0', '0', '0', '0', '0', '0', '0', '0', '0'],
+					series: [{
+						name: '数值',
+						data: [0, 0, 0, 0, 0, 0, 0, 0, 0],
+						color: '#FF8D1A'
+					}]
+				},
+
+				datetext: '昨天',
+				datetext_good: '昨天',
+				device_datetext_good: '昨天',
+				titleName: '',
+
+				Userres_partner_id: null, //总代理
+				AgentState: '-1',
+				UserresPartnerType: 4, //代理标识判断
+			};
+		},
+		methods: {
+			
+			
+			//四设五入
+			formatRounding(value ) {
+				//截取当前数据到小数点后两位
+				let realVal = parseFloat(value).toFixed(2)
+				return realVal
+			},
+			
+
+			//调转统计界面
+			toProfitPage() {
+				uni.navigateTo({
+					url: '/pages/mall/profit?proxy=1',
+				});
+			},
+
+			//调转订单界面
+			toOrderPage(e) {
+				if (e == null) {
+					uni.navigateTo({
+						url: '/pages/mine/order?proxy=1',
+					});
+				} else {
+					uni.navigateTo({
+						url: '/pages/mine/order?day=' + e + "&proxy=1",
+					});
+				}
+			},
+
+			//格式化时间
+			dateFormatTotext(time) {
+				try {
+					var d = new Date(time.replace(/-/g, "/"));
+					var times = (d.getMonth() + 1) + '-' + d.getDate();
+					return times
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				return time;
+			},
+
+			//头部标题选中
+			onSelectTopTitle(index) {
+				this.selectTopType = index;
+			},
+
+		
+
+			//选中区代理列表
+			selectDistrictAgentList(index, item) {
+				console.log("进来")
+				var resultList = this.AllDistrictStatisticsList;
+				this.AllDistrictStatisticsList = [];
+				var isDown = item.isDown;
+				if (isDown) {
+					isDown = false
+				} else {
+					isDown = true
+				}
+				resultList.forEach(itemData => {
+					if (itemData.id == item.id) {
+						itemData.isDown = isDown
+					}
+				})
+				this.AllDistrictStatisticsList = resultList;
+			},
+
+
+			//选中设备列表
+			selectDeviceAgentList(index, item) {
+				var resultList = this.AllDeviceStatisticsList;
+				this.AllDeviceStatisticsList = [];
+				var isDown = item.isDown;
+				if (isDown) {
+					isDown = false
+				} else {
+					isDown = true
+				}
+				resultList.forEach(itemData => {
+					if (itemData.id == item.id) {
+						itemData.isDown = isDown
+					}
+				})
+				this.AllDeviceStatisticsList = resultList;
+			},
+
+			//确定时间段
+			setdata(e) {
+				this.chartDataimgSrcstate = true
+				this.seven = null
+				this.thirty = null
+				this.loadGoodsList(1);
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+					_this.$refs['datashowshare'].close();
+				}, 800);
+			},
+
+			//选择开始时间
+			starttimeChange(e) {
+				console.log("开始时间:" + e.target.value);
+				this.queryPage.trend_start_time = e.target.value;
+			},
+
+			//选择结束时间 
+			endtimeChange(e) {
+				this.queryPage.trend_end_time = e.target.value
+			},
+
+			//自定义时间段
+			datatogglePopup(e) {
+				var _this = this
+				_this.imgSrcstate = true
+				setTimeout(function() { //延迟一定时间执行
+					_this.$nextTick(() => {
+						_this.$refs['datashowshare'].open()
+					})
+				}, 100);
+			},
+
+			//指标趋势---7天
+			getsevendate(e) {
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.trend_start_time = this.getDay(e)
+				this.queryPage.trend_end_time = this.getDay(0)
+				this.seven = true
+				this.thirty = null
+				this.loadGoodsList(1);
+			},
+
+			//指标趋势---30天
+			getthirtydate(e) {
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.trend_start_time = this.getDay(e)
+				this.queryPage.trend_end_time = this.getDay(0)
+				this.seven = null
+				this.thirty = true
+				this.loadGoodsList(1);
+			},
+
+
+			//区代理销量----昨天
+			getdistrictdate(e) {
+				this.datetext_good = '昨天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.city_start_time = this.getDay(e)
+				this.queryPage.city_end_time = this.getDay(0)
+				this.districtgoodseven = null
+				this.districtgoodthirty = null
+				this.districtgoodone = true
+				this.loadGoodsList(2);
+			},
+
+			// 区代理销量----7天
+			getdistrictsevendate(e) {
+				this.datetext_good = '近7天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.city_start_time = this.getDay(e)
+				this.queryPage.city_end_time = this.getDay(0)
+				this.districtgoodseven = true
+				this.districtgoodthirty = null
+				this.districtgoodone = null
+				this.loadGoodsList(2);
+			},
+
+			// 区代理销量----30天
+			getdistrictthirtydate(e) {
+				this.datetext_good = '近30天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.city_start_time = this.getDay(e)
+				this.queryPage.city_end_time = this.getDay(0)
+				this.districtgoodone = null
+				this.districtgoodseven = null
+				this.districtgoodthirty = true
+				this.loadGoodsList(2);
+			},
+
+
+			// 设备代理---昨天
+			getdeviceonedate(e) {
+				this.device_datetext_good = '昨天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.machine_start_time = this.getDay(e)
+				this.queryPage.machine_end_time = this.getDay(0)
+				this.devicegoodone = true
+				this.devicegoodseven = null
+				this.devicegoodthirty = null
+				this.loadGoodsList(3);
+			},
+
+
+			// 设备代理---7天
+			getdevicesevendate(e) {
+				this.device_datetext_good = '近7天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.machine_start_time = this.getDay(e)
+				this.queryPage.machine_end_time = this.getDay(0)
+				this.devicegoodone = null
+				this.devicegoodseven = true
+				this.devicegoodthirty = null
+				this.loadGoodsList(3);
+			},
+
+
+			// 设备代理----30天
+			getdevicethirtydate(e) {
+				this.device_datetext_good = '近30天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.machine_start_time = this.getDay(e)
+				this.queryPage.machine_end_time = this.getDay(0)
+				this.devicegoodone = null
+				this.devicegoodseven = null
+				this.devicegoodthirty = true
+				this.loadGoodsList(3);
+			},
+
+
+			//获取天数
+			getDay(day) {
+				this.imgSrcstate = false
+				var today = new Date();
+				var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
+				today.setTime(targetday_milliseconds); //注意,这行是关键代码
+				var tYear = today.getFullYear();
+				var tMonth = today.getMonth();
+				var tDate = today.getDate();
+				tMonth = this.doHandleMonth(tMonth + 1);
+				tDate = this.doHandleMonth(tDate);
+				return tYear + "-" + tMonth + "-" + tDate;
+			},
+
+			doHandleMonth(month) {
+				var m = month;
+				if (month.toString().length == 1) {
+					m = "0" + month;
+				}
+				return m;
+			},
+
+			//指标
+			target(e) {
+				this.chartDataimgSrcstate = true
+				this.queryPage.table = e
+				this.loadGoodsList(1);
+			},
+
+			//打开所属代理
+			clickAgent() {
+				this.imgSrcstate = true
+				this.$nextTick(() => {
+					this.$refs['showshareAgent'].open()
+				})
+			},
+
+			// 打开设备
+			machinetogglePopup() {
+				this.imgSrcstate = true
+				this.$nextTick(() => {
+					this.$refs['machineshowshare'].open()
+				})
+			},
+			selectmachine(item) {
+				this.chartDataimgSrcstate = true
+				this.queryPage.machine_id = item.machine_id ? item.machine_id : null
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+					_this.$refs['machineshowshare'].close();
+					_this.loadGoodsList(1);
+				}, 100);
+			},
+			//打开商品
+			togglePopup() {
+				this.imgSrcstate = true
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+				})
+			},
+			selectMonth(item) {
+				this.chartDataimgSrcstate = true
+				this.queryPage.goods_name = item.goods_name ? item.goods_name : null
+				this.queryPage.goods_attr = item.goods_specs ? item.goods_specs : null
+				this.queryPage.goods_id = item.goods_id ? item.goods_id : null
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+					_this.$refs['showshare'].close();
+					_this.loadGoodsList(1);
+				}, 100);
+			},
+			cancel(type) {
+				this.$refs['showshare'].close()
+				this.$refs['machineshowshare'].close()
+				this.$refs['showshareAgent'].close()
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+				}, 100);
+			},
+			change(e) {
+				if (e.show == false) {
+					var _this = this
+					setTimeout(function() { //延迟一定时间执行
+						_this.imgSrcstate = false
+						_this.chartDataimgSrcstate = false
+					}, 100);
+				}
+			},
+
+			//设备数据
+			equipment_list(e) {
+				uni.navigateTo({
+					url: '/pages/store/equipment_list?status=' + e,
+				});
+			},
+			//本月设备收入榜单
+			Liquidationmachine_id(e) {
+				let machineIncome_start_time = this.queryPage.thisMonthOrderIncomeRank_start_time
+				let machineIncome_end_time = this.queryPage.thisMonthOrderIncomeRank_end_time
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + e.machine_id + '&start_time=' +
+						machineIncome_start_time +
+						'&end_time=' + machineIncome_end_time + '&datetext=' + this.datetext
+				});
+
+			},
+			//本月商品销量榜单
+			LiquidationGoodSize(e) {
+				let machineIncome_start_time = this.queryPage.thisMonthGoodsSizeRank_start_time
+				let machineIncome_end_time = this.queryPage.thisMonthGoodsSizeRank_end_time
+				uni.navigateTo({
+					url: '/pages/mine/order?goods_name=' + e.goods_name + '&goods_specs=' + e.goods_specs +
+						'&start_time=' + machineIncome_start_time + '&end_time=' + machineIncome_end_time +
+						'&datetext=' + this.datetext_good
+				});
+			},
+
+			//收益
+			Liquidation(e) {
+				//console.log("date=" + e);
+				if (e == null) {
+					uni.navigateTo({
+						url: '/pages/mine/Liquidation',
+					});
+				} else {
+					uni.navigateTo({
+						url: '/pages/mine/Liquidation?date=' + e + "&day=" + e,
+					});
+				}
+			},
+
+			//获取天数
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				let today = myDate.getFullYear() + '-' + myMonth
+				return today
+			},
+
+			//加载数据
+			loadGoodsList(state) {
+				console.log("加载前")
+				uni.showLoading({
+					title: '正在加载中...',
+					mask: true
+				})
+				logoservice.Reportindex(this.queryPage).then(result => {
+					console.log("加载后")
+					this.long = true
+					this.LoupanList = result
+					if (state == 1 || state == 5) { //折线图
+						let categories = []
+						let seriesdata = []
+						if (this.LoupanList.cityTrend.length > 8) {
+							let number = Math.ceil(this.LoupanList.cityTrend.length / 8)
+							this.LoupanList.cityTrend.forEach((item, index) => {
+								if (index % number == 0) {
+									categories.push(item.day.split("-")[1] + '-' + item.day.split("-")[2])
+								} else {
+									categories.push('')
+								}
+								seriesdata.push(item.total)
+							})
+						} else {
+							this.LoupanList.cityTrend.forEach((item, index) => {
+								categories.push(item.day.split("-")[1] + '-' + item.day.split("-")[2])
+								seriesdata.push(item.total)
+							})
+						}
+						this.chartData.categories = categories
+						this.chartData.series[0].data = seriesdata
+						this.cWidth = uni.upx2px(750);
+						this.cHeight = uni.upx2px(500);
+						this.showLineA("canvaLineA", this.chartData);
+					}
+
+					if (state == 2 || state == 5) { //区代理
+						this.LoupanList.cityCityStatistics.forEach(item => {
+							item.isDown = false //是否下拉
+						})
+						this.AllDistrictStatisticsList = this.LoupanList.cityCityStatistics
+					}
+
+					if (state == 3 || state == 5) { //我的设备
+						var myMachineCountObject = this.LoupanList.myMachineCount
+						this.AllDeviceStatisticsList = [];
+						if (myMachineCountObject != null && myMachineCountObject != "") {
+							for (const key in myMachineCountObject) {
+								this.AllDeviceStatisticsList.push(myMachineCountObject[key]);
+							}
+						}
+					}
+					uni.hideLoading();
+					uni.stopPullDownRefresh();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				});
+			},
+
+
+			//折线一
+			showLineA(canvasId, chartData) {
+				var _self = this;
+				canvaLineA = new uCharts({
+					$this: _self,
+					canvasId: canvasId, //页面组件canvas-id
+					type: 'area', //图表类型
+					fontSize: 11,
+					legend: {
+						show: false
+					},
+					dataLabel: false, //是否在图表中显示数据标签内容值
+					dataPointShape: true, //是否在图表中显示数据点图形标识
+					background: '#FFFFFF',
+					pixelRatio: _self.pixelRatio,
+					categories: chartData.categories,
+					series: chartData.series,
+					animation: true,
+					enableScroll: _self.enableScroll, //开启图表拖拽功能
+					xAxis: {
+						type: 'grid',
+						gridColor: '#F2F2F2',
+						gridType: 'dash',
+						dashLength: 4,
+						itemCount: 8, //x轴单屏显示数据的数量,默认为5个
+						scrollShow: true, //新增是否显示滚动条,默认false
+						scrollAlign: 'left', //滚动条初始位置
+						scrollBackgroundColor: '#F7F7FF', //默认为 #EFEBEF
+						scrollColor: '#DEE7F7', //默认为 #A6A6A6
+					},
+					yAxis: {
+						calibration: true,
+						gridType: 'dash',
+						gridColor: '#F2F2F2',
+						dashLength: 4,
+						splitNumber: 5,
+						format: (val) => {
+							return val.toFixed(0)
+						}
+					},
+					width: _self.cWidth * _self.pixelRatio,
+					height: _self.cHeight * _self.pixelRatio,
+					padding: [20, 15, 4, 15],
+					extra: {
+						area: {
+							type: 'curve',
+							opacity: 0.2,
+							addLine: true,
+							width: 2
+						}
+					}
+				});
+				canvaLineA.addEventListener('renderComplete', () => { //监控图表渲染完成
+					//console.log(_self.chartDataimgSrcstate)
+					//if(_self.chartDataimgSrcstate){
+					setTimeout(function() { //延迟一定时间执行
+						uni.canvasToTempFilePath({ //将图表转成图片
+							x: 0,
+							y: 0,
+							width: _self.cWidth * _self.pixelRatio,
+							height: _self.cHeight * _self.pixelRatio,
+							fileType: 'png',
+							canvasId: 'canvaLineA',
+							success: function(res) {
+								//console.log(res)
+								_self.imgSrc = res.tempFilePath;
+								_self.chartDataimgSrcstate = false
+							},
+							fail: function(res) {}
+						}, _self);
+					}, 100);
+					//}
+				});
+			},
+
+			touchLineA(e) {
+				canvaLineA.scrollStart(e);
+			},
+
+			moveLineA(e) {
+				canvaLineA.scroll(e);
+			},
+
+			touchEndLineA(e) {
+				canvaLineA.scrollEnd(e);
+				//下面是toolTip事件,如果滚动后不需要显示,可不填写
+				canvaLineA.showToolTip(e, {
+					format: function(item, category) {
+						return category + ' ' + item.name + ':' + item.data
+					}
+				});
+			}
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+			this.loadGoodsList(5);
+		},
+
+		//上拉加载
+		onReachBottom() {},
+
+		//滑动
+		onPageScroll(e) {
+			let st = e.scrollTop;
+			this.imgSrcstate = true
+		},
+
+		onLoad(options) {
+			this.queryPage.trend_start_time = this.getDay(-7) //指标开始时间
+			this.queryPage.trend_end_time = this.getDay(0) //指标结束时间
+
+			this.queryPage.city_start_time = this.getDay(-1) //市级代理开始时间
+			this.queryPage.city_end_time = this.getDay(-1) //市级代理结束时间
+
+			this.queryPage.machine_start_time = this.getDay(-1) //我的设备开始时间
+			this.queryPage.machine_end_time = this.getDay(-1) //我的结束时间
+
+		},
+
+		onShow() {
+			this.cWidth = uni.upx2px(750);
+			this.cHeight = uni.upx2px(500);
+			this.showLineA("canvaLineA", this.chartData)
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+						uni.setStorageSync('partner_id', this.$base.Userres.partner_id)
+
+						//代理标识判断开始
+						if (this.Userres_partner_id == 0) {
+							this.UserresPartnerType == 1
+						} else {
+							if (this.$base.Userres.partner != null) {
+								if (this.$base.Userres.partner.level == 1) {
+									this.UserresPartnerType == 2
+								} else if (this.$base.Userres.partner.level == 2) {
+									this.UserresPartnerType == 3
+								}
+							}
+						}
+						//代理标识判断开始结束
+
+						uni.setStorageSync('openid', result.openid)
+						logoservice.setwixinInfo(result);
+						this.loadGoodsList(5);
+						logoservice.receiveMoneyList({
+							m: 'Init/getPartner'
+						}).then(result => {
+							this.agentList = result.list
+							result.list.forEach(item => {
+								if (item.id == result.p_id) {
+									this.titleName = item.name
+									//this.queryPage.partner_id = item.id
+									//this.queryPage.partner_name = item.name
+									// wx.setNavigationBarTitle({
+									// 	title: item.name
+									// }) //修改头部名称
+								}
+							})
+						}).catch(err => {
+							uni.showToast({
+								title: err.msg,
+								icon: 'none'
+							});
+						})
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onUnload() {
+			let pages = getCurrentPages();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		background: #FFFFFF !important;
+	}
+
+	.qiun-columns {
+		display: flex;
+		flex-direction: column !important;
+	}
+
+	.qiun-charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.imgSrcstate {
+		position: absolute;
+		width: 100%;
+		right: -900px;
+		top: -600px;
+		display: none;
+	}
+
+	.imgSrcdisplay {
+		z-index: 0 !important;
+	}
+
+	/* 底部分享 */
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 26upx;
+		text-align: center;
+		background: #FFFFFF;
+	}
+
+	.green {
+		background-color: #FF8D1A !important;
+		color: #FFFFFF;
+	}
+
+	.targetgreen {
+		color: #FFFFFF !important;
+		background: #FF8D1A !important;
+	}
+
+	/*样式的width和height一定要与定义的cWidth和cHeight相对应*/
+	.qiun-charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.home {
+		width: 100%;
+		padding-bottom: 60upx;
+		display: flex;
+		flex-direction: column;
+
+		/*今日 today */
+		.today {
+			width: 100%;
+			background: #FF8D1A;
+			display: flex;
+			justify-content: center;
+			padding-top: 50upx;
+			margin-top: 94upx;
+			padding-bottom: 30upx;
+			height: auto;
+
+			.today_ul {
+				width: 50%;
+
+				.today_ul_div {
+					margin-left: 20upx;
+					color: #FFFFFF;
+
+					.today_money {
+						font-size: 35upx;
+						font-weight: bold;
+					}
+
+					.today_profit_text {
+						font-size: 22upx;
+						font-weight: 400;
+						line-height: 20upx;
+					}
+
+					.today_order_money {
+						// margin-top: 96upx;
+						font-size: 50upx;
+						font-weight: 400;
+						margin-bottom: 10upx;
+					}
+
+					.today_order_num {
+						// margin-top: 37upx;
+						font-size: 36upx;
+						font-weight: bold;
+					}
+				}
+			}
+		}
+
+		/* yesterday */
+		.yesterday {
+			width: 100%;
+			height: 127upx;
+			display: flex;
+			border-bottom: 1px solid rgba(178, 178, 178, 0.2);
+
+			.yesterday_div {
+				width: 100%/4;
+				margin-left: 45upx;
+				color: #333333;
+				text-align: center;
+
+				.yesterday_profit_money {
+					margin-top: 36upx;
+					font-size: 36upx;
+					font-weight: bold;
+				}
+
+				.yesterday_profit_text {
+					font-size: 20upx;
+					font-weight: 400;
+					line-height: 30upx;
+				}
+			}
+		}
+
+		/* equipment */
+		.equipment {
+			width: 100%;
+
+			.equipment_title {
+				font-size: 40upx;
+				font-weight: 500;
+				color: #333333;
+				margin: 50upx 0 40upx 45upx;
+			}
+
+			.equipment_main {
+				width: 100%;
+				display: flex;
+
+				.equipment_main_ul {
+					width: calc(100% / 2);
+
+					.equipment_main_ul_circle {
+						width: 120upx;
+						height: 120upx;
+						border-radius: 50%;
+						margin: auto;
+
+						.equipment_main_ul_circle_num {
+							font-size: 40upx;
+							font-weight: 400;
+							text-align: center;
+							line-height: 120upx;
+						}
+					}
+
+					.equipment_main_ul_text {
+						font-size: 28upx;
+						font-weight: 400;
+						margin-top: 40upx;
+						color: #333333;
+						text-align: center;
+					}
+				}
+			}
+		}
+
+		/*本月机器榜单  */
+		.machine_title {
+			font-size: 40upx;
+			font-weight: 500;
+			color: #333333;
+			margin: 80upx 0 70upx 45upx;
+		}
+
+		.topBox {
+			width: calc(100% - 90upx);
+			margin: 0 auto 40upx;
+			display: flex;
+			flex-direction: row;
+			align-items: center;
+		}
+
+		.topLittleBOX-1 {
+			font-size: 24upx;
+			width: 120upx;
+			color: #888888;
+			overflow: text-align;
+		}
+
+		.topLittleBOX-2 {
+			padding-left: 20upx;
+			padding-top: auto;
+			padding-bottom: auto;
+			display: flex;
+			// height: 50upx;
+			// line-height:50upx;
+			vertical-align: middle;
+			flex-direction: row;
+			align-items: center;
+			width: calc(100% - 120upx);
+		}
+
+		.row-1 {
+			height: 30upx;
+			background-color: #F56364;
+			border-radius: 20upx;
+			width: 0upx;
+			transition: width 1.5s linear;
+		}
+
+		.rowText {
+			margin-left: 10upx;
+			font-size: 30upx;
+			color: #4c4c4c;
+		}
+
+	}
+</style>
diff --git a/pages/index/common/uni-popup/uni-popup.vue b/pages/index/common/uni-popup/uni-popup.vue
new file mode 100644
index 0000000..fd132de
--- /dev/null
+++ b/pages/index/common/uni-popup/uni-popup.vue
@@ -0,0 +1,274 @@
+<template>
+	<view v-if="showPopup" class="uni-popup" @touchmove.stop.prevent="clear">
+		<uni-transition :mode-class="['fade']" :styles="maskClass" :duration="duration" :show="showTrans"
+			@click="onTap" />
+		<uni-transition :mode-class="ani" :styles="transClass" :duration="duration" :show="showTrans" @click="onTap">
+			<view class="uni-popup__wrapper-box" @click.stop="clear">
+				<slot />
+			</view>
+		</uni-transition>
+	</view>
+</template>
+
+<script>
+	import uniTransition from '../uni-transition/uni-transition.vue'
+
+	/**
+	 * PopUp 弹出层
+	 * @description 弹出层组件,为了解决遮罩弹层的问题
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=329
+	 * @property {String} type = [top|center|bottom] 弹出方式
+	 * 	@value top 顶部弹出
+	 * 	@value center 中间弹出
+	 * 	@value bottom 底部弹出
+	 * @property {Boolean} animation = [ture|false] 是否开启动画
+	 * @property {Boolean} maskClick = [ture|false] 蒙版点击是否关闭弹窗
+	 * @event {Function} change 打开关闭弹窗触发,e={show: false}
+	 */
+
+	export default {
+		name: 'UniPopup',
+		components: {
+			uniTransition
+		},
+		props: {
+			// 开启动画
+			animation: {
+				type: Boolean,
+				default: true
+			},
+			// 弹出层类型,可选值,top: 顶部弹出层;bottom:底部弹出层;center:全屏弹出层
+			type: {
+				type: String,
+				default: 'center'
+			},
+			maskClick: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				duration: 300,
+				ani: [],
+				showPopup: false,
+				showTrans: false,
+				maskClass: {
+					'position': 'fixed',
+					'bottom': 0,
+					'top': 0,
+					'left': 0,
+					'right': 0,
+					'backgroundColor': 'rgba(0, 0, 0, 0.4)',
+				},
+				transClass: {
+					'position': 'fixed',
+					'left': 0,
+					'right': 0,
+
+				},
+				maskClickData: true
+			}
+		},
+		watch: {
+			type: {
+				handler: function(newVal) {
+					switch (this.type) {
+						case 'top':
+							this.ani = ['slide-top']
+							this.transClass = {
+								'position': 'fixed',
+								'left': 0,
+								'right': 0,
+							}
+							break
+						case 'bottom':
+							this.ani = ['slide-bottom']
+							this.transClass = {
+								'position': 'fixed',
+								'left': 0,
+								'right': 0,
+								'bottom': 0
+							}
+							break
+						case 'center':
+							this.ani = ['zoom-out', 'fade']
+							this.transClass = {
+								'position': 'fixed',
+								/* #ifndef APP-NVUE */
+								'display': 'flex',
+								'flexDirection': 'column',
+								/* #endif */
+								'bottom': 0,
+								'left': 0,
+								'right': 0,
+								'top': 0,
+								'justifyContent': 'center',
+								'alignItems': 'center'
+							}
+
+							break
+					}
+				},
+				immediate: true
+			}
+		},
+		created() {
+			if (this.animation) {
+				this.duration = 300
+			} else {
+				this.duration = 0
+			}
+		},
+		methods: {
+
+			//设置是否能点击
+			setMaskClick(IsmaskClick) {
+				this.maskClickData = IsmaskClick
+			},
+
+			clear(e) {
+				e.stopPropagation()
+			},
+			
+			open() {
+				this.maskClickData = this.maskClick;
+				this.showPopup = true
+				this.$nextTick(() => {
+					clearTimeout(this.timer)
+					this.timer = setTimeout(() => {
+						this.showTrans = true
+					}, 10);
+				})
+				this.$emit('change', {
+					show: true
+				})
+			},
+			
+			close(type) {
+				this.showTrans = false
+				this.$nextTick(() => {
+					clearTimeout(this.timer)
+					this.$emit('change', {
+						show: false
+					})
+					this.timer = setTimeout(() => {
+						this.showPopup = false
+					}, 500)
+				})
+			},
+			
+			onTap() {
+				if (!this.maskClickData) return
+				this.close()
+			}
+		}
+	}
+</script>
+<style lang="scss" scoped>
+	.uni-popup {
+		position: fixed;
+		/* #ifdef H5 */
+		top: var(--window-top);
+		/* #endif */
+		/* #ifndef H5 */
+		top: 0;
+		/* #endif */
+		bottom: 0;
+		left: 0;
+		right: 0;
+		/* #ifndef APP-NVUE */
+		z-index: 9999;
+		/* #endif */
+	}
+
+	.uni-popup__mask {
+		position: absolute;
+		top: 0;
+		bottom: 0;
+		left: 0;
+		right: 0;
+		background-color: $uni-bg-color-mask;
+		opacity: 0;
+	}
+
+	.mask-ani {
+		transition-property: opacity;
+		transition-duration: 0.2s;
+	}
+
+	.uni-top-mask {
+		opacity: 1;
+	}
+
+	.uni-bottom-mask {
+		opacity: 1;
+	}
+
+	.uni-center-mask {
+		opacity: 1;
+	}
+
+	.uni-popup__wrapper {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: absolute;
+	}
+
+	.top {
+		top: 0;
+		left: 0;
+		right: 0;
+		transform: translateY(-500px);
+	}
+
+	.bottom {
+		bottom: 0;
+		left: 0;
+		right: 0;
+		transform: translateY(500px);
+	}
+
+	.center {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		flex-direction: column;
+		/* #endif */
+		bottom: 0;
+		left: 0;
+		right: 0;
+		top: 0;
+		justify-content: center;
+		align-items: center;
+		transform: scale(1.2);
+		opacity: 0;
+	}
+
+	.uni-popup__wrapper-box {
+		/* #ifndef APP-NVUE */
+		display: block;
+		/* #endif */
+		position: relative;
+	}
+
+	.content-ani {
+		// transition: transform 0.3s;
+		transition-property: transform, opacity;
+		transition-duration: 0.2s;
+	}
+
+
+	.uni-top-content {
+		transform: translateY(0);
+	}
+
+	.uni-bottom-content {
+		transform: translateY(0);
+	}
+
+	.uni-center-content {
+		transform: scale(1);
+		opacity: 1;
+	}
+</style>
diff --git a/pages/index/common/uni-transition/uni-transition.vue b/pages/index/common/uni-transition/uni-transition.vue
new file mode 100644
index 0000000..3252752
--- /dev/null
+++ b/pages/index/common/uni-transition/uni-transition.vue
@@ -0,0 +1,276 @@
+<template>
+	<view v-if="isShow" ref="ani" class="uni-transition" :class="[ani.in]" :style="'transform:' +transform+';'+stylesObject"
+	 @click="change">
+		 <slot></slot>
+	</view>
+</template>
+
+<script>
+	//#ifdef APP-NVUE
+	const animation = uni.requireNativePlugin('animation');
+	// #endif
+	/*
+	 * Transition 过渡动画
+	 * @description 简单过渡动画组件
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=985
+	 * @property {Boolean} show = [false|true] 控制组件显示或隐藏
+     * @property {Array} modeClass = [fade|slide-top|slide-right|slide-bottom|slide-left|zoom-in|zoom-out] 过渡动画类型
+     * @value fade 渐隐渐出过渡
+     * @value slide-top 由上至下过渡
+     * @value slide-right 由右至左过渡
+     * @value slide-bottom 由下至上过渡
+     * @value slide-left 由左至右过渡
+     * @value zoom-in 由小到大过渡
+     * @value zoom-out 由大到小过渡
+	 * @property {Number} duration 过渡动画持续时间
+	 * @property {Object} styles 组件样式,同 css 样式,注意带’-‘连接符的属性需要使用小驼峰写法如:`backgroundColor:red`
+	 */
+	export default {
+		name: 'uniTransition',
+		props: {
+			show: {
+				type: Boolean,
+				default: false
+			},
+			modeClass: {
+				type: Array,
+				default () {
+					return []
+				}
+			},
+			duration: {
+				type: Number,
+				default: 300
+			},
+			styles: {
+				type: Object,
+				default () {
+					return {}
+				}
+			}
+		},
+		data() {
+			return {
+				isShow: false,
+				transform: '',
+				ani: { in: '',
+					active: ''
+				}
+			};
+		},
+		watch: {
+			show: {
+				handler(newVal) {
+					if (newVal) {
+						this.open()
+					} else {
+						this.close()
+					}
+				},
+				immediate: true
+			}
+		},
+		computed: {
+			stylesObject() {
+				let styles = {
+					...this.styles,
+					'transition-duration': this.duration / 1000 + 's'
+				}
+				let transfrom = ''
+				for (let i in styles) {
+					let line = this.toLine(i)
+					transfrom += line + ':' + styles[i] + ';'
+				}
+				return transfrom
+			}
+		},
+		created() {
+			//this.timer = null
+			//this.nextTick = (time = 50) => new Promise(resolve => {
+			//clearTimeout(this.timer)
+			//this.timer = setTimeout(resolve, time)
+			//return this.timer
+			//});
+		},
+		methods: {
+			change() {
+				this.$emit('click', {
+					detail: this.isShow
+				})
+			},
+			open() {
+				clearTimeout(this.timer)
+				this.isShow = true
+				this.transform = ''
+				this.ani.in = ''
+				for (let i in this.getTranfrom(false)) {
+					if (i === 'opacity') {
+						this.ani.in = 'fade-in'
+					} else {
+						this.transform += `${this.getTranfrom(false)[i]} `
+					}
+				}
+				this.$nextTick(() => {
+					setTimeout(() => {
+						this._animation(true)
+					}, 50)
+				})
+			},
+			close(type) {
+				clearTimeout(this.timer)
+				this._animation(false)
+			},
+			_animation(type) {
+				let styles = this.getTranfrom(type)
+				// #ifdef APP-NVUE
+				if(!this.$refs['ani']) return
+				animation.transition(this.$refs['ani'].ref, {
+					styles,
+					duration: this.duration, //ms
+					timingFunction: 'ease',
+					needLayout: false,
+					delay: 0 //ms
+				}, () => {
+					if (!type) {
+						this.isShow = false
+					}
+					this.$emit('change', {
+						detail: this.isShow
+					})
+				})
+				// #endif
+				// #ifndef APP-NVUE
+				this.transform = ''
+				for (let i in styles) {
+					if (i === 'opacity') {
+						this.ani.in = `fade-${type?'out':'in'}`
+					} else {
+						this.transform += `${styles[i]} `
+					}
+				}
+				this.timer = setTimeout(() => {
+					if (!type) {
+						this.isShow = false
+					}
+					this.$emit('change', {
+						detail: this.isShow
+					})
+				}, this.duration)
+				// #endif
+			},
+			getTranfrom(type) {
+				let styles = {
+					transform: ''
+				}
+				this.modeClass.forEach((mode) => {
+					switch (mode) {
+						case 'fade':
+							styles.opacity = type ? 1 : 0
+							break;
+						case 'slide-top':
+							styles.transform += `translateY(${type?'0':'-100%'}) `
+							break;
+						case 'slide-right':
+							styles.transform += `translateX(${type?'0':'100%'}) `
+							break;
+						case 'slide-bottom':
+							styles.transform += `translateY(${type?'0':'100%'}) `
+							break;
+						case 'slide-left':
+							styles.transform += `translateX(${type?'0':'-100%'}) `
+							break;
+						case 'zoom-in':
+							styles.transform += `scale(${type?1:0.8}) `
+							break;
+						case 'zoom-out':
+							styles.transform += `scale(${type?1:1.2}) `
+							break;
+					}
+				})
+				return styles
+			},
+			_modeClassArr(type) {
+				let mode = this.modeClass
+				if (typeof(mode) !== "string") {
+					let modestr = ''
+					mode.forEach((item) => {
+						modestr += (item + '-' + type + ',')
+					})
+					return modestr.substr(0, modestr.length - 1)
+				} else {
+					return mode + '-' + type
+				}
+			},
+			// getEl(el) {
+			// 	console.log(el || el.ref || null);
+			// 	return el || el.ref || null
+			// },
+			toLine(name) {
+				return name.replace(/([A-Z])/g, "-$1").toLowerCase();
+			}
+		}
+	}
+</script>
+
+<style>
+	.uni-transition {
+		transition-timing-function: ease;
+		transition-duration: 0.3s;
+		transition-property: transform, opacity;
+	}
+
+	.fade-in {
+		opacity: 0;
+	}
+
+	.fade-active {
+		opacity: 1;
+	}
+
+	.slide-top-in {
+		/* transition-property: transform, opacity; */
+		transform: translateY(-100%);
+	}
+
+	.slide-top-active {
+		transform: translateY(0);
+		/* opacity: 1; */
+	}
+
+	.slide-right-in {
+		transform: translateX(100%);
+	}
+
+	.slide-right-active {
+		transform: translateX(0);
+	}
+
+	.slide-bottom-in {
+		transform: translateY(100%);
+	}
+
+	.slide-bottom-active {
+		transform: translateY(0);
+	}
+
+	.slide-left-in {
+		transform: translateX(-100%);
+	}
+
+	.slide-left-active {
+		transform: translateX(0);
+		opacity: 1;
+	}
+
+	.zoom-in-in {
+		transform: scale(0.8);
+	}
+
+	.zoom-out-active {
+		transform: scale(1);
+	}
+
+	.zoom-out-in {
+		transform: scale(1.2);
+	}
+</style>
diff --git a/pages/index/equipment.vue b/pages/index/equipment.vue
new file mode 100644
index 0000000..5caa4bc
--- /dev/null
+++ b/pages/index/equipment.vue
@@ -0,0 +1,655 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<!-- 自定义头部 -->
+		<myhead :title="topTitle" :color="'#000'" :titleShow="true" :backShow="true" :background="'#ffffff'"></myhead>
+		<view class="full-width">
+			<!-- 选项卡 -->
+			<view class="equipment" :style="{'top':equipmentHeight + 'px'}">
+				<view class="equipment_main">
+					<view class="equipment_main_ul" @click="equipment_list(null)">
+						<view class="equipment_main_ul_circle" style="color: #3321D9; border:10upx solid #3321D9;">
+							<view class="equipment_main_ul_circle_num">{{equipmentData.total || '0'}}
+							</view>
+						</view>
+						<view class="equipment_main_ul_text">设备总数</view>
+					</view>
+					<view class="equipment_main_ul" @click="equipment_list('good')">
+						<view class="equipment_main_ul_circle" style="color: #5CE6B5; border:10upx solid #04BC2B ;">
+							<view class="equipment_main_ul_circle_num">
+								{{equipmentData.goodsNum || '0'}}
+							</view>
+						</view>
+						<view class="equipment_main_ul_text">在线设备</view>
+					</view>
+					<view class="equipment_main_ul" @click="equipment_list('bad')">
+						<view class="equipment_main_ul_circle" style="color: #FB1B1B; border:10upx solid #FB1B1B;">
+							<view class="equipment_main_ul_circle_num">{{equipmentData.badNum || '0'}}
+							</view>
+						</view>
+						<view class="equipment_main_ul_text">离线设备</view>
+					</view>
+				</view>
+			</view>
+
+			<!--动态数据 -->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long">
+				<view style="padding-bottom: 120upx; padding-top: 220upx;">
+					<view v-for="(item, index) in LoupanList" :key="index" @click="store(item)" class="eq_list">
+						<view class="full-width eq_list_top">
+							<text v-if="item.status.value == 0" class="eq_list_top_right_fault"
+								style="background:#FB1B1B;">离线</text>
+							<text v-if="item.status.value == 1" class="eq_list_top_right_fault"
+								style="background:#04BC2B;">正常</text>
+							<text v-if="item.status.value == 2" class="eq_list_top_right_fault"
+								style="background:#5CE6B5;">生产中</text>
+							<text v-if="item.status.value == 3" class="eq_list_top_right_fault"
+								style="background:#F2A03E;">故障</text>
+							<text v-if="item.status.value == 4" class="eq_list_top_right_fault"
+								style="background:#F2A03E;">调试</text>
+							<text v-if="item.status.value == 5" class="eq_list_top_right_fault"
+								style="background:#F2A03E;">升级中</text>
+							<!-- 设备状态 0:离线 1:正常 2:生产中 3:故障 4:调试 5:升级中 -->
+						</view>
+						<!-- 设备状态 0:离线 1:正常 2:生产中 3:故障 4:调试 5:升级中 -->
+						<view style="width: 100%;display: flex;flex-direction: row;">
+							<!-- <view class="full-width eq_list_ul" style="line-height: 70upx;"> -->
+							<view class="eq_list_ul_left">
+								<image @click.stop="previewImage(item.cover)"
+									:src="item.cover + '?x-oss-process=image/resize,lfit,w_300'" mode="aspectFit"
+									style="width:150upx; height:150upx;display: block; float: left;padding-top: 60upx;border-top 1px solid #007AFF;margin-left: 20upx;margin-top: -10upx;">
+								</image>
+							</view>
+							<view
+								style="width:100%;float: left;margin-left: 15upx;padding-bottom: 10upx; display: flex;flex-direction: column;">
+								<view v-if="item.edition!=null &&  item.edition.mark == 'standard'"
+									class="full-width  eq_list_top_right_text"
+									style="text-align:right;margin-top:-48upx; height: 60upx;">
+									<view style="color:#FFFFFF;margin-top: 0upx;				        
+                                         width: 60upx;height:60upx;border-top: 25px solid #383838;
+										 border-left: 25px solid transparent;
+										 border-right: 25px solid #383838;
+										 border-bottom: 25px solid transparent;float:right;">
+									</view>
+									<view
+										style=" transform:rotate(45deg);  float: right;margin-right: -100upx;margin-top: 15upx;">
+										<text class=" eq_list_top_right_text_fault"
+											style="font-size: 20upx;color: #FFFFFF;"> 标准版</text>
+									</view>
+								</view>
+								<view v-if="item.edition!=null &&  item.edition.mark== 'unlimited'"
+									class="full-width  eq_list_top_right_text"
+									style="text-align:right;margin-top:-48upx; height: 60upx;">
+									<view style="color:#FFFFFF;margin-top: 0upx;				        
+								         width: 60upx;height:60upx;border-top: 25px solid #FF8D1A;
+										 border-left: 25px solid transparent;
+										 border-right: 25px solid #FF8D1A;
+										 border-bottom: 25px solid transparent;float:right;">
+									</view>
+									<view
+										style=" transform:rotate(45deg);  float: right;margin-right: -100upx;margin-top: 15upx;">
+										<text class=" eq_list_top_right_text_fault"
+											style="font-size: 20upx;color: #FFFFFF;"> 无限版</text>
+									</view>
+								</view>
+								<text
+									style="float: left;font-weight: bold;font-size: 32upx; margin-top: -25upx;">{{item.id}}-{{item.code}}</text>
+								<text
+									style="font-size: 28upx;color: #383838;margin-left:4upx;margin-top: 10upx;">{{category(item.shop_id,item)}}</text>
+								<text
+									style="font-size: 28upx;color: #383838;margin-left:4upx;margin-top: 30upx;">{{item.category}}-{{item.goods_category}}</text>
+								<View v-if="item.edition!=null && item.edition.mark == 'standard'">
+									<text
+										style="font-size:24upx;color: #383838;margin-left:4upx;margin-top: 0upx;">剩余打印量:</text>
+									<text
+										v-if="getPrintSurplusCount(item.package_total.quota - item.package_total.used_quota) ==1 "
+										style="font-size:24upx;color: #1FBA40;margin-left:4upx;margin-top: 0upx;">{{item.package_total.quota - item.package_total.used_quota}}</text>
+									<text
+										v-if="getPrintSurplusCount(item.package_total.quota - item.package_total.used_quota) ==2 "
+										style="font-size:24upx;color: #FF8D1A;margin-left:4upx;margin-top: 0upx;">{{item.package_total.quota - item.package_total.used_quota}}</text>
+									<text
+										v-if="getPrintSurplusCount(item.package_total.quota - item.package_total.used_quota) ==3 "
+										style="font-size:24upx;color: #FB1B1B;margin-left:4upx;margin-top: 0upx;">{{item.package_total.quota - item.package_total.used_quota}}</text>
+								</view>
+								<View v-if="item.edition!=null &&  item.edition.mark == 'unlimited'">
+									<text
+										style="font-size:24upx;color: #383838;margin-left:4upx;margin-top: 0upx;">剩余打印量:无限量</text>
+								</view>
+							</view>
+						</view>
+						<view class="full-width eq_list_ul_right" style="line-height:40upx;padding-bottom:10upx;width:calc(100% - 50upx); border-top: 1upx solid #F7F7F7;
+							margin-left:30upx;margin-top: 10upx; display: flex; flex-direction: row; height: 60upx;line-height: 60upx;">
+							<text style="width:60%; color:#383838;font-size: 22upx; ">{{item.partner ? (item.partner) : '  ' }}{{ item.partner_id == 0 ? '(总)' : '(终)' }}</text>
+							<text
+								style="width:40%;color:#383838;font-size: 22upx;float:right;text-align: right;">{{dateFormatTotext(item.create_time)}}</text>
+						</view>
+					</view>
+				</view>
+
+				<!--暂无相关信息 -->
+				<view class="align-center content-color"
+					style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+					v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju"
+						style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">
+						暂无相关设备信息
+					</view>
+				</view>
+			</view>
+			<!--动态数据完 -->
+		</view>
+		<!--返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+		<!--自定义底部 -->
+		<foot action="3" :partnerId="Userres_partner_id" :partnerType="UserresPartnerType"></foot>
+	</view>
+
+</template>
+
+<script>
+	import Enums from '@/util/Enums';
+	import Env from '@/util/Env.js';
+	//自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import myhead from './head/head.vue';
+	export default {
+		components: {
+			foot,
+			myhead
+		},
+		computed: {},
+		data() {
+			return {
+				long: false,
+				LoupanList: [], //数据
+				//返回顶部
+				totopstatus: false,
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/list',
+					page: 1,
+					per_page: 6,
+					count: 0
+				},
+				topQueryPage: {
+					m: 'Machine/machineStatusNum',
+				},
+				Report: null,
+				equipmentHeight: null,
+				topTitle: '设备列表',
+				Userres_partner_id: null,
+				equipmentData: null, //顶部设备数据对象
+				UserresPartnerType: 4,
+			};
+		},
+
+		mounted() {
+
+		},
+
+		created() {
+			//设备信息
+			let app = uni.getSystemInfoSync();
+			//胶囊信息
+			let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
+			this.equipmentHeight = app.statusBarHeight + menuButtonInfo.height + (menuButtonInfo.top - app
+				.statusBarHeight) * 2
+		},
+
+		methods: {
+
+			//店铺名称
+			partnername(partner_id, partner) {
+				var partner_name = '尚未铺设';
+				if (partner) {
+					partner.forEach(item => {
+						if (item.id == partner_id) {
+							partner_name = item.name
+						}
+					});
+				}
+				return partner_name
+			},
+
+			//设备数据
+			equipment_list(e) {
+				this.queryPage.status = null
+				this.queryPage.stock = null
+				if (e == 'good') {
+					this.queryPage.status = 'good'
+					this.topTitle = '正常设备'
+				}
+				if (e == 'bad') {
+					this.queryPage.status = 'bad'
+					this.topTitle = '问题设备'
+				}
+				if (e == null) {
+					this.topTitle = '设备列表'
+				}
+				this.LoupanList = []
+				this.queryPage.page = 1;
+				this.queryPage.count = 0;
+				this.dataLoadState.pullDownRefresh = false
+				this.dataLoadState.reachBottom = false;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+
+			//格式化时间
+			dateFormatTotext(time) {
+				try {
+					var d = new Date(time.replace(/-/g, "/"));
+					var times = d.getFullYear() + '年' + (d.getMonth() + 1) + '月' + d.getDate() + "日";
+					return "开通时间" + times
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				return "";
+			},
+
+
+			//获取剩余量次数相差
+			getPrintSurplusCount(count) {
+				try {
+					if (count >= 200) { //红色 
+						return 1;
+					} else if (count < 200 && count >= 50) { //橙色
+						return 2;
+					} else if (count < 50) { //红色
+						return 3;
+					}
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+
+			//获取相差天数 
+			getDaysDifference(time) {
+				try {
+					let day = new Date(time.replace(/-/g, "/")).getTime() - new Date().getTime(); //日期转时间戳
+					let dayCount = Math.floor(day / 86400000); //时间戳获取天数
+					return dayCount;
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+
+			//预览图片
+			previewImage(e) {
+				var current = e; //这里获取到的是一张本地的图片
+				wx.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+
+			//查询店铺
+			category(id, item) {
+				var dataname = '尚未铺设';
+				if (item.shop != null) {
+					dataname = item.shop.short_name;
+				}
+				return dataname
+			},
+
+			//加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data
+					//转换时间
+					queryList.forEach(itemOne => {
+						if (itemOne.default_package != null) {
+							itemOne.default_package.create_date = this.dateFormatTotext(itemOne
+								.default_package.expire_date);
+						}
+					})
+					//下拉更新时,查询结果集
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//console.log("新设备数据:" + this.LoupanList)
+					//分页对象处理
+					this.queryPage.count = result.count;
+					this.queryPage.per_page = result.per_page;
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					// uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//获取设备顶部数量
+			getDquipmentTopList() {
+				//console.log("顶部数据进来")
+				logoservice.MachineToplist(this.topQueryPage).then(result => {
+					this.equipmentData = result.data
+					//console.log("顶部数据:"+result.data)
+					//total: 22
+				}).catch(err => {
+
+				});
+			},
+
+			//点击选中店铺
+			store(item) {
+				let status = -1;
+				if (item.edition != null && item.edition.mark == 'standard') {
+					status = 0;
+				} else if (item.edition != null && item.edition.mark == 'unlimited') {
+					status = 1;
+				}
+				if (item.is_open_manage == 1) {
+					uni.navigateTo({
+						url: '../mall/eq-details-new?id=' + item.id + "&printType=" + status +"&isShowBack=true",
+					});
+				} else {
+					uni.navigateTo({
+						url: '../mall/eq-details?id=' + item.id + "&printType=" + status,
+					});
+				}
+				/* uni.navigateTo({
+					url: '../mall/eq-details-new?id=' + item.id + "&printType=" + status +"&isShowBack=true",
+				}); */
+			},
+
+			//返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1200) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+
+			//做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+
+			//获取天数
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				//this.queryPage.month = myDate.getFullYear() + '-' + myMonth;
+				let today = myDate.getFullYear() + '-' + myMonth
+				return today
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+		},
+
+		//上拉加载
+		onReachBottom() {
+			if (this.LoupanList.length < 6) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+
+		onLoad(options) {
+			this.LoupanList = []
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			if (this.$base.partner_id = -1) {
+				logoservice.receiveMoneyList({
+					m: 'Init/getPartner'
+				}).then(result => {
+					this.agentList = result.list
+					result.list.forEach(item => {
+						if (item.id == result.p_id) {
+							this.$base.partner_id = item.id;
+							this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+							this.getDquipmentTopList();
+						}
+					})
+				}).catch(err => {
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			}
+
+
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+						logoservice.setwixinInfo(result);
+						//代理标识判断开始
+						if (this.$base.Userres.partner_id == 0) {
+							this.UserresPartnerType = 1
+						} else {
+							if (this.$base.Userres.partner != null) {
+								if (this.$base.Userres.partner.level == 1) {
+									this.UserresPartnerType = 2
+								} else if (this.$base.Userres.partner.level == 2) {
+									this.UserresPartnerType = 3
+								}
+							}
+						}
+
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		datatimeLimited(time) {
+			//return new Date(time.replace(/-/g, "/")).format('HH:mm:ss');
+			return time;
+		},
+		onShow() {
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+	}
+
+	.eq_list {
+		width: calc(100% - 60upx);
+		margin: 30upx 30upx 0;
+		/*padding: 0upx 20upx; */
+		border-radius: 30upx;
+		background: #FFFFFF;
+		box-shadow: 0px 0px 20px 0px rgba(51, 51, 51, 0.1);
+
+		.eq_list_top {
+			overflow: hidden;
+			padding: 0upx 0;
+
+			.eq_list_top_left {
+				float: left;
+				// width: 150upx;
+				padding: 6upx 0upx;
+				font-weight: bold;
+				font-size: 36upx;
+			}
+
+			.eq_list_top_right_fault {
+				float: left;
+				background: #E72C31;
+				font-size: 24upx;
+				padding: 8upx 25upx;
+				color: #FFFFFF;
+				border-bottom-right-radius: 30upx;
+				border-top-left-radius: 30upx;
+			}
+
+			.eq_list_top_right_text {
+				width: calc(100% - 150upx);
+				text-align: right;
+			}
+		}
+
+		.eq_list_ul {
+			display: flex;
+			align-items: center;
+			line-height: 45upx;
+
+			.eq_list_ul_left {
+				width: 150upx;
+			}
+
+			.eq_list_ul_right {
+				width: calc(100% - 150upx);
+				text-align: right;
+			}
+		}
+	}
+
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+
+	/* equipment */
+	.equipment {
+		width: 100%;
+		position: fixed;
+		top: 0;
+		height: 220upx;
+		background: #fff;
+
+		.equipment_main {
+			width: 100%;
+			display: flex;
+			padding: 10px 20px;
+
+			.equipment_main_ul {
+				width: calc(100% / 3);
+
+				.equipment_main_ul_circle {
+					width: 110upx;
+					height: 110upx;
+					line-height: 80upx;
+					border-radius: 50%;
+					margin: auto;
+
+					.equipment_main_ul_circle_num {
+						font-size: 40upx;
+						font-weight: 400;
+						text-align: center;
+						margin-top: 10upx;
+					}
+				}
+
+				.equipment_main_ul_text {
+					font-size: 24upx;
+					font-weight: 400;
+					margin-top: 10upx;
+					color: #333333;
+					text-align: center;
+
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/pages/index/head/head-home-default.vue b/pages/index/head/head-home-default.vue
new file mode 100644
index 0000000..206ba13
--- /dev/null
+++ b/pages/index/head/head-home-default.vue
@@ -0,0 +1,117 @@
+<template>
+	<view :style="{ height: height + 'px', background:background}">
+		<view class="head" :style="{ height: height + 'px', background:background}">
+			<view class="back" @click="back" v-if="backShow" :style="{ top: top + 'px', color:color }">
+				<image src="../../../static/house.png" mode="aspectFit"
+				style="width: 39upx; height: 39upx; margin-top: calc((32px - 39upx)/2);margin-left: auto; margin-right: auto;"></image>
+			</view>
+			<view @click="toSelectAgent()" class="title" v-if="titleShow" :style="{ top: top + 'px', color:color, 'font-size': size + 'rpx' }">{{title}}
+			<span class="iconfont icon-xiala"
+				style="font-size: 20upx; color: #99999;margin-left:15upx;"></span>
+			</view>
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			title: {
+				type: String,
+				default: '自定义标题'
+			},
+			size:{
+				type: String,
+				default: '32'
+			},
+			color:{
+				type: String,
+				default: '#000'
+			},
+			titleShow: {
+				type: Boolean,
+				default: true
+			},
+			backShow: {
+				type: Boolean,
+				default: true
+			},
+			background:{
+				type: String,
+				default: "linear-gradient(to right, #43e97b 0%, #38f9d7 100%)"
+			}
+		},
+		data() {
+			return {
+				height :0,
+				top:0,
+				be_child:0
+			}
+		},
+		mounted() {
+			
+		},
+		created() {
+			//设备信息
+			let app = uni.getSystemInfoSync();
+			//胶囊信息
+			let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
+			this.height  = app.statusBarHeight + menuButtonInfo.height + (menuButtonInfo.top - app.statusBarHeight)*2
+			this.top = menuButtonInfo.top;
+		},
+		methods: {
+			//选择代理商页面
+			toSelectAgent(){
+				uni.navigateTo({
+					url: '/pages/mall/informationList',
+				});
+			},
+		
+			back(){
+				// if(this.$base.Userres.be_child == 1){
+				// 	uni.reLaunch({url:"/pages/index/home"});
+				// } else{
+					// console.log('点击头部返回')
+					// uni.navigateBack();
+					uni.navigateTo({
+						url: '/pages/mine/information',
+					});
+				// }
+			}
+		},
+		onLoad(options) {
+			
+		},
+		onShow() {
+			this.be_child = this.$base.Userres.be_child;
+		}
+	}
+</script>
+
+<style>
+.head{
+	position: fixed;
+	width: 750rpx;
+	z-index: 888;
+	align-items: center;
+}
+.title{
+	position: fixed;
+	width: 750rpx;
+	text-align: center;
+	line-height: 32px;
+	height: 32px;
+}
+.back{
+	position: fixed;
+	width: 81rpx;
+	text-align: center;
+	line-height: 32px;
+	height: 32px;
+	font-size: 32rpx;
+	font-weight: 900;
+	z-index: 9;
+	align-items: center;
+}
+</style>
diff --git a/pages/index/head/head-machine.vue b/pages/index/head/head-machine.vue
new file mode 100644
index 0000000..70cb3a5
--- /dev/null
+++ b/pages/index/head/head-machine.vue
@@ -0,0 +1,114 @@
+<template>
+	<view :style="{ height: height + 'px', background:background}">
+		<view class="head" :style="{ height: height + 'px', background:background}">
+			<view class="back" @click="back" :style="{ top: top + 'px', color:color }">
+				<image src="../../../static/icon_all_back.png" mode="aspectFit"
+					style="width: 40upx; height: 40upx; margin-top: 18upx;margin-left: -20upx; margin-right: auto;">
+				</image>
+			</view>
+			<view class="title" v-if="titleShow" style="margin-top: 5upx;"  :style="{ top: top + 'px', color:color, 'font-size': size + 'rpx' }">
+				{{title}}
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			title: {
+				type: String,
+				default: '自定义标题'
+			},
+			size: {
+				type: String,
+				default: '30'
+			},
+			color: {
+				type: String,
+				default: '#000'
+			},
+			titleShow: {
+				type: Boolean,
+				default: true
+			},
+			backShow: {
+				type: Boolean,
+				default: true
+			},
+			background: {
+				type: String,
+				default: "linear-gradient(to right, #43e97b 0%, #38f9d7 100%)"
+			}
+		},
+		data() {
+			return {
+				height: 0,
+				top: 0,
+				be_child: 0
+			}
+		},
+		mounted() {
+
+		},
+		created() {
+			//设备信息
+			let app = uni.getSystemInfoSync();
+			//胶囊信息
+			let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
+			this.height = app.statusBarHeight + menuButtonInfo.height + (menuButtonInfo.top - app.statusBarHeight) * 2
+			this.top = menuButtonInfo.top;
+		},
+		methods: {
+			back() {
+				if (this.backShow) {
+					uni.navigateBack();
+				} else {
+					uni.exitMiniProgram({
+						success: function() {
+							//console.log('退出小程序成功');
+						},
+						fail: function(err) {
+							//console.log('退出小程序失败', err);
+						}
+					})
+				}
+			}
+		},
+		onLoad(options) {
+
+		},
+		onShow() {
+
+		}
+	}
+</script>
+
+<style>
+	.head {
+		position: fixed;
+		width: 750rpx;
+		z-index: 888;
+		align-items: center;
+	}
+
+	.title {
+		position: fixed;
+		width: 750rpx;
+		text-align: center;
+		line-height: 32px;
+		height: 32px;
+	}
+
+	.back {
+		position: fixed;
+		width: 81rpx;
+		text-align: center;
+		line-height: 32px;
+		height: 32px;
+		font-size: 32rpx;
+		font-weight: 900;
+		z-index: 9;
+		align-items: center;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/index/head/head.vue b/pages/index/head/head.vue
new file mode 100644
index 0000000..1d2db57
--- /dev/null
+++ b/pages/index/head/head.vue
@@ -0,0 +1,106 @@
+<template>
+	<view :style="{ height: height + 'px', background:background}">
+		<view class="head" :style="{ height: height + 'px', background:background}">
+			<view class="back" @click="back" v-if="backShow" :style="{ top: top + 'px', color:color }">
+				<image src="../../../static/house.png" mode="aspectFit"
+				style="width: 39upx; height: 39upx; margin-top: calc((32px - 39upx)/2);margin-left: auto; margin-right: auto;"></image>
+			</view>
+			<view class="title" v-if="titleShow" :style="{ top: top + 'px', color:color, 'font-size': size + 'rpx' }">{{title}}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			title: {
+				type: String,
+				default: '自定义标题'
+			},
+			size:{
+				type: String,
+				default: '32'
+			},
+			color:{
+				type: String,
+				default: '#000'
+			},
+			titleShow: {
+				type: Boolean,
+				default: true
+			},
+			backShow: {
+				type: Boolean,
+				default: true
+			},
+			background:{
+				type: String,
+				default: "linear-gradient(to right, #43e97b 0%, #38f9d7 100%)"
+			}
+		},
+		data() {
+			return {
+				height :0,
+				top:0,
+				be_child:0
+			}
+		},
+		mounted() {
+			
+		},
+		created() {
+			//设备信息
+			let app = uni.getSystemInfoSync();
+			//胶囊信息
+			let menuButtonInfo = uni.getMenuButtonBoundingClientRect();
+			this.height  = app.statusBarHeight + menuButtonInfo.height + (menuButtonInfo.top - app.statusBarHeight)*2
+			this.top = menuButtonInfo.top;
+		},
+		methods: {
+			back(){
+				// if(this.$base.Userres.be_child == 1){
+				// 	uni.reLaunch({url:"/pages/index/home"});
+				// } else{
+					// console.log('点击头部返回')
+					// uni.navigateBack();
+					uni.navigateTo({
+						url: '/pages/mine/information',
+					});
+				// }
+			}
+		},
+		onLoad(options) {
+			
+		},
+		onShow() {
+			this.be_child = this.$base.Userres.be_child;
+		}
+	}
+</script>
+
+<style>
+.head{
+	position: fixed;
+	width: 750rpx;
+	z-index: 888;
+	align-items: center;
+}
+.title{
+	position: fixed;
+	width: 750rpx;
+	text-align: center;
+	line-height: 32px;
+	height: 32px;
+}
+.back{
+	position: fixed;
+	width: 81rpx;
+	text-align: center;
+	line-height: 32px;
+	height: 32px;
+	font-size: 32rpx;
+	font-weight: 900;
+	z-index: 9;
+	align-items: center;
+}
+</style>
diff --git a/pages/index/home.vue b/pages/index/home.vue
new file mode 100644
index 0000000..03a6d8a
--- /dev/null
+++ b/pages/index/home.vue
@@ -0,0 +1,1320 @@
+<template>
+	<view class="full-width content-color" style="background: #fff; width: 100%; position: relative;height: 100%;">
+		<!-- 自定义头部 -->
+		<myhead :title="titleName" :color="'#000'" :titleShow="true" :backShow="true" :background="'#F8F8F8'"></myhead>
+		
+		<view class="home" >
+			<!-- 首页头部开始开始 -->
+			<view style="display:flex; flex-direction: column;width: 100%;
+			height: 370upx;">
+				<view
+					style="width: 100%;display: flex; flex-direction:row;background: #44CF7C;; height: 300upx; padding-top: 40upx;">
+					<view
+						style="display: flex; flex-direction:column; width: calc(100% / 2);color: #fff; font-size: 28upx; margin-left: 50upx;">
+						<view style="font-size: 34upx;">{{ LoupanList!=null&&LoupanList.todayOrderIncome[0]!=null?LoupanList.todayOrderIncome[0].order_num:"0"}}
+						</view>
+						<view style="margin-top: 10upx;">今日订单(笔)</view>
+						<view style="font-size: 34upx;margin-top: 40upx;">
+							{{LoupanList!=null&&LoupanList.yesterdayOrderIncome[0]!=null?LoupanList.yesterdayOrderIncome[0].order_num:"0"}}
+						</view>
+						<view style="margin-top: 10upx;">昨日订单(笔)</view>
+					</view>
+					<view
+						style="display: flex; flex-direction:column; width: calc(100% / 2);color: #fff; font-size: 28upx;margin-left: 50upx;">
+						<view style="font-size: 34upx;">
+							{{LoupanList!=null&&LoupanList.todayOrderIncome[0]!=null?LoupanList.todayOrderIncome[0].order_valid:"0"}}
+						</view>
+						<view style="margin-top: 10upx;">今日有效(笔)</view>
+						<view style="font-size: 34upx;margin-top: 40upx;">
+							{{LoupanList!=null&&LoupanList.yesterdayOrderIncome[0]!=null?LoupanList.yesterdayOrderIncome[0].order_valid:"0"}}
+						</view>
+						<view style="margin-top: 10upx;">昨日有效(笔)</view>
+					</view>
+					<label class="fa fa-angle-right"
+						style="color: #fff; font-size: 40upx; width:6%;height: 80upx;padding-left: 5upx; margin-top:100upx"
+						@click="toProfitPage()"></label>
+				</view>
+			</view>
+			<!-- 首页头部开始结束 -->
+
+			<!-- 指标趋势 开始-->
+			<view class="equipment">
+				<view style="display: flex; align-items: center; padding: 0upx 45upx;">
+					<view style="font-size: 40upx; font-weight: 500; color: #333333; padding: 20upx 0;">指标趋势</view>
+					<view style="margin-left: auto; display: flex; font-size: 26upx;">
+						<view @click="getsevendate(-6)" :style="{'color': seven ? '#57BE6A':''}"
+							style="font-size: 26upx;padding: 20upx 0;">近7日</view>
+						<view @click="getthirtydate(-30)" :style="{'color': thirty ? '#57BE6A':''}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">近30日</view>
+						<view @click="datatogglePopup('target')" :style="{'color': (seven || thirty) ? '':'#57BE6A'}"
+							style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">
+							自定义<span :style="{'color': (seven || thirty) ? '':'#57BE6A'}" class="iconfont icon-xiala"
+								style="margin-left: 5upx; font-size: 20upx; color: #333333;"></span>
+						</view>
+					</view>
+				</view>
+				<view style="padding: 20upx 45upx;">
+					<!-- 代理 -->
+					<view v-if="Userres_partner_id == 0"
+						style="display: flex;align-items: center; margin-bottom: 30upx;">
+						<view style="font-size: 26upx;">代理</view>
+						<view @click="clickAgent"
+							style="font-size: 26upx; color:#FFFFFF; background:#43CF7C; padding: 5upx 25upx; margin-left: 20upx; border-radius: 40upx;">
+							{{queryPage.partner_name == null ? '全部' : queryPage.partner_name}}
+							<span class="iconfont icon-xiala"
+								style="margin-left: 5upx; font-size: 20upx; color: #FFFFFF;"></span>
+						</view>
+					</view>
+					<view style="display: flex;align-items: center; margin-bottom: 30upx;">
+						<view style="font-size: 26upx;">设备</view>
+						<view @click="machinetogglePopup"
+							style="font-size: 26upx; color:#FFFFFF; background:#43CF7C; padding: 5upx 25upx; margin-left: 20upx; border-radius: 40upx;">
+							{{queryPage.machine_id == null ? '全部' : queryPage.machine_id}}
+							<span class="iconfont icon-xiala"
+								style="margin-left: 5upx; font-size: 20upx; color: #FFFFFF;"></span>
+						</view>
+					</view>
+					<view style="display: flex;align-items: center;">
+						<view style="font-size: 26upx;">指标</view>
+						<view @click="target('order')" :class="queryPage.table == 'order' ? 'targetgreen':''"
+							style="font-size: 26upx; color:#FFFFFF; background:#999999; padding: 5upx 25upx; margin-left: 20upx; border-radius: 40upx;">
+							订单</view>
+						<view @click="target('order_valid')"
+							:class="queryPage.table == 'order_valid' ? 'targetgreen':''"
+							style="font-size: 26upx; color:#FFFFFF; background:#999999; padding: 5upx 25upx; margin-left: 20upx; border-radius: 40upx;">
+							有效</view>
+					</view>
+				</view>
+				<!-- 指标趋势结束-->
+
+
+				<!-- 折线图 开始-->
+				<view class="qiun-columns">
+					<view class="qiun-charts" style="position: relative;">
+						<image :class="[imgSrcstate ? 'imgSrcdisplay':'']" :src="imgSrc" style="width: 750upx;height: 500upx;
+					 position: absolute;z-index: -1; width: 100%; top: 0; left: 0;" @click="imgSrcstate = false"></image>
+						<!-- :class="['charts',imgSrcstate ? 'imgSrcstate':'']" -->
+						<canvas :class="['charts',imgSrcstate ? 'imgSrcstate':'']" canvas-id="canvaLineA"
+							id="canvaLineA" disable-scroll=true @touchstart="touchLineA" @touchmove="moveLineA"
+							@touchend="touchEndLineA"></canvas>
+					</view>
+				</view>
+
+				<!-- 折线图 结束-->
+
+				<!--设备销量开始开始 -->
+				<view v-if="AllDeviceStatisticsList !=null && AllDeviceStatisticsList.length > 0"
+					style="width: 100%; padding-bottom: 10upx; margin-bottom: 10upx;">
+					<view style="display: flex; align-items: center; padding: 10upx 35upx;">
+						<view style="font-size: 40upx; font-weight: 500; color: #333333; padding: 30upx 0;">我的设备</view>
+						<view style="margin-left: auto; display: flex; font-size: 26upx;">
+							<view @click="getdeviceonedate(-1)" :style="{'color': devicegoodone ? '#57BE6A':''}"
+								style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">昨天</view>
+							<view @click="getdevicesevendate(-6)" :style="{'color': devicegoodseven ? '#57BE6A':''}"
+								style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">近7日</view>
+							<view @click="getdevicethirtydate(-30)" :style="{'color': devicegoodthirty ? '#57BE6A':''}"
+								style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">近30日</view>
+						</view>
+					</view>
+					<view style=" align-items: center;
+				     display: flex; text-align: center; color: #FFFFFF; font-size: 24upx; position: absolute; 
+				     width:calc(100% - 80upx); height: 85upx;line-height: 85upx; margin-left:40upx;background: #57BE6A">
+						<view style="width:33%;height:100%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">设备编号</view>
+						<view style="width:33%;color: #FFFFFF;border-right:1upx solid #D5D5D5;">订单</view>
+						<view style="width:33%;color: #FFFFFF;">有效订单</view>
+					</view>
+					<scroll-view
+						style="margin-top: 86upx; width:calc(100% - 80upx); background: #F8F8F8; margin-left:40upx;">
+						<!-- height: 65upx;line-height: 65upx; -->
+						<view v-for="(item, index) in AllDeviceStatisticsList" :key="index"
+							style="display: flex; text-align: center; font-size: 24upx; text-align: center;border-bottom:1upx solid #FFFFFF; flex-direction: column;">
+							<view
+								style="width: 100%; display: flex; flex-direction: row; height:60upx;height: 60upx;line-height:60upx;align-items: center;">
+								<view style="width: 33%;border-right: 1upx solid #FFFFFF;font-size: 20upx; ">
+									{{item.id}}
+								</view>
+								<view style="width: 33%;border-right: 1upx solid #FFFFFF;font-size: 20upx; ">
+									{{item.order_count}}
+								</view>
+								<view style="width: 33%; color: #44CF7C; font-size: 20upx;">
+									{{item.order_valid}}
+								</view>
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<!--设备销量开始结束-->
+
+
+				<!--本月商品销量榜单 -->
+				<view style="width: 100%; padding-bottom: 40upx; margin-bottom: 40upx;">
+					<view style="display: flex; align-items: center; padding: 0upx 30upx">
+						<view style="font-size: 40upx; font-weight: 500; color: #333333; padding: 30upx 0;">商品销量</view>
+						<view style="margin-left: auto; display: flex; font-size: 26upx;margin-right: 10upx;">
+							<!-- <view @click="getgoododate(0)" :style="{'color': goodo ? '#57BE6A':''}"
+							style="font-size: 26upx;padding: 20upx 0;">今天</view> -->
+							<view @click="getgoodonedate(-1)" :style="{'color': goodone ? '#57BE6A':''}"
+								style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">昨天</view>
+							<view @click="getgoodsevendate(-6)" :style="{'color': goodseven ? '#57BE6A':''}"
+								style="font-size: 26upx; margin-left: 20upx; padding: 20upx 0;">近7日</view>
+							<view @click="getgoodthirtydate(-30)" :style="{'color': goodthirty ? '#57BE6A':''}"
+								style="font-size: 26upx; margin-left: 20upx;padding: 20upx 0;">近30日</view>
+						</view>
+					</view>
+					<view v-if="thisMonthGoodsSizeRank.length > 0">
+						<view class='topBox' v-for="(item, index) in thisMonthGoodsSizeRank" :key="index"
+							@click="LiquidationGoodSize(item)">
+							<view class='topLittleBOX-1' style="width: 240upx;">{{item.goods_name}}</view>
+							<view class='topLittleBOX-2' style="width: calc(100% - 240upx);">
+								<view class='row-1' :style="{width: item.row2 +'px;max-width:90%'}"></view>
+								<view class='rowText'>{{item.count}}</view>
+							</view>
+						</view>
+					</view>
+					<view v-else style="text-align: center; line-height: 60upx;">
+						暂无商品销量数据
+					</view>
+				</view>
+			</view>
+			<!--本月商品销量榜单结束 -->
+		</view>
+
+		<!-- 自定义底部 -->
+		<foot action="0" :partnerId="Userres_partner_id"></foot>
+
+		<!-- 设备弹框 -->
+		<uni-popup ref="machineshowshare" :type="'bottom'" @change="change">
+			<view class="uni-share" style="width: 100%; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						选择设备类型
+					</view>
+					<scroll-view scroll-y style="margin: auto; height: 500upx; overflow: hidden; overflow-y: scroll;">
+						<view style="width: calc(100% - 40upx); margin:20upx auto; overflow: hidden;">
+							<view v-for="(item, index) in Machinelist" :key="index" @click="selectmachine(item)"
+								:class="queryPage.machine_id == item.machine_id  ? 'green':''"
+								style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item.machine_id == null ? '全部' : item.machine_id}}
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="uni-share-btn" @click="cancel('share')">取消</view>
+			</view>
+		</uni-popup>
+
+		<!-- 自定义日期 -->
+		<uni-popup ref="datashowshare" :type="'center'" @change="change"
+			style="position: relative; z-index: 999999999;">
+			<view class="uni-share" style="width: 700upx; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						自定义日期
+					</view>
+					<view style="margin:40upx; display: flex; align-items: center;justify-content: center;">
+						<view style="width: calc(50% - 30upx);">
+							<picker mode="date" :value="queryPage.map_start_time" start="2000-01-01"
+								:end="queryPage.map_end_time" @change="starttimeChange">
+								<view
+									style="font-size: 24upx; background:#F3F3F3; padding: 20upx 25upx; border-radius: 10upx; text-align: center;">
+									{{queryPage.map_start_time ? queryPage.map_start_time : '开始时间'}}
+								</view>
+							</picker>
+						</view>
+						<view style="font-size: 24upx; width: 60upx; text-align: center;">至</view>
+						<view style="width: calc(50% - 30upx);">
+							<picker mode="date" :value="queryPage.map_end_time" :start="queryPage.map_start_time"
+								:end="queryPage.map_end_time" @change="endtimeChange">
+
+								<view
+									style="font-size: 24upx; background:#F3F3F3; padding: 20upx 25upx; border-radius: 10upx; text-align: center;">
+									{{queryPage.map_end_time ? queryPage.map_end_time : '结束时间'}}
+								</view>
+							</picker>
+						</view>
+					</view>
+					<view @click="setdata" style="width: calc(100% - 80upx); margin:0 auto 40upx; height: 90upx; border-radius: 10upx;
+					line-height: 90upx; font-size: 26upx; text-align: center; color: #FFFFFF; background: #57BE6A;">确定</view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+
+
+</template>
+
+<script>
+	import updata from '@/util/updata.js'; //版本更新
+	import foot from '../../components/foot.vue'; // 自定义底部
+	import logoservice from '@/service/logoservice.js';
+	import myhead from './head/head-home-default.vue';
+	//一款可以让数字跑起来的组件
+	import digitJump from '../../components/zhihuai-DigitJump/zhihuai-DigitJump.vue'
+	//折线图
+	import uCharts from '../../js_sdk/u-charts/u-charts.js';
+	//底部弹框
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	var _self;
+	var canvaLineA = null;
+	export default {
+		components: {
+			foot,
+			myhead,
+			digitJump,
+			uniPopup
+		},
+		computed: {},
+		data() {
+			return {
+				long: false,
+				queryPage: {
+					m: 'Report/index',
+					table: 'order',
+					map_start_time: null, //趋势开始时间
+					map_end_time: null, //趋势结束时间
+					goods_start_time: null, //商品销量开始时间
+					goods_end_time: null, //商品销量结束时间
+					machine_start_time: null, //设备数量开始时间
+					machine_end_time: null, //设备数量结束时间
+				},
+				LoupanList: [],
+				thisMonthOrderIncomeRank: [],
+				thisMonthGoodsSizeRank: [],
+
+				goodsItem: [], //全部商品类型数据
+				Machinelist: [], //全部设备类型数据
+
+				AllDeviceStatisticsList: [], //设备代理集合
+
+				thirty: null,
+				seven: true,
+
+				equipmento: null,
+				equipmentone: true,
+				equipmentseven: null,
+				equipmentthirty: null,
+
+				goodo: null,
+				goodone: true,
+				goodseven: null,
+				goodthirty: null,
+
+				devicegoodone: true,
+				devicegoodseven: null,
+				devicegoodthirty: null,
+				datatogglePopup_text: null,
+
+				cWidth: '',
+				cHeight: '',
+				pixelRatio: 1,
+				enableScroll: false,
+				imgSrc: null,
+				imgSrcstate: false, //控制折线图顶层问题
+				chartDataimgSrcstate: true,
+				chartData: {
+					categories: ['2012', '2013', '2014', '2015', '2016', '2017', '2018', '2019', '2020'],
+					series: [{
+						name: '数值',
+						data: [70, 40, 65, 100, 44, 68, 40, 20, 190, ],
+						color: '#2fc25b'
+					}]
+				},
+				datetext: '昨天',
+				datetext_good: '昨天',
+				device_datetext_good: '昨天',
+				titleName: '运营首页',
+				agentList: [], //代理数据
+				Userres_partner_id: null, //总代理
+				AgentState: '-1',
+			};
+		},
+		methods: {
+
+			onLoadData() {
+				this.long = true;
+			},
+
+
+			onLoadInitData() {
+				uni.login({
+					provider: 'weixin',
+					success: (res) => {
+						logoservice.login({
+							m: 'Init/init',
+							code: res.code
+						}).then(result => {
+							this.$base.Userres = result //记录用户登录信息
+							this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+							uni.setStorageSync('partner_id', this.$base.Userres.partner_id)
+							uni.setStorageSync('openid', result.openid)
+							logoservice.setwixinInfo(result);
+							if (result.partner) {
+								this.titleName = result.partner.name
+							}
+							//代理标识判断开始
+							if (this.Userres_partner_id == 0) {
+								this.UserresPartnerType == 1
+								uni.reLaunch({
+									url: "/pages/index/all-agent"
+								})
+								return
+							} else {
+								if (this.$base.Userres.partner != null) {
+									if (this.$base.Userres.partner.level == 1) {
+										this.UserresPartnerType == 2
+										uni.reLaunch({
+											url: "/pages/index/city-agent"
+										})
+										return
+									}
+								}
+							}
+							//代理标识判断开始结束
+							this.loadGoodsList(4);
+							this.getMachinelist()
+							logoservice.receiveMoneyList({
+								m: 'Init/getPartner'
+							}).then(result => {
+								this.agentList = result.list
+								result.list.forEach(item => {
+									if (item.id == result.p_id) {
+										this.titleName = item.name
+										this.queryPage.partner_id = item.id
+										this.$base.partner_id = this.queryPage
+											.partner_id;
+										this.queryPage.partner_name = item.name
+									}
+								})
+							}).catch(err => {
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						}).catch(err => {
+							uni.navigateTo({
+								url: 'login',
+							});
+						})
+					},
+					fail: (err) => {
+						console.error('授权登录失败:' + JSON.stringify(err));
+					}
+				});
+			},
+
+			//四设五入
+			formatRounding(value) {
+				//截取当前数据到小数点后两位
+				let realVal = parseFloat(value).toFixed(2)
+				return realVal
+			},
+
+			//调转统计界面
+			toProfitPage() {
+				uni.navigateTo({
+					url: '/pages/mall/profit',
+				});
+			},
+
+			//调转订单界面
+			toOrderPage(e) {
+				if (e == null) {
+					uni.navigateTo({
+						url: '/pages/mine/order',
+					});
+				} else {
+					uni.navigateTo({
+						url: '/pages/mine/order?day=' + e + "&proxy=1",
+					});
+				}
+			},
+
+
+			//确定时间段
+			setdata(e) {
+				this.chartDataimgSrcstate = true
+				this.seven = null
+				this.thirty = null
+				this.loadGoodsList(1);
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+					_this.$refs['datashowshare'].close();
+				}, 800);
+			},
+
+
+			//选择开始时间
+			starttimeChange(e) {
+				this.queryPage.map_start_time = e.target.value;
+			},
+
+			//选择结束时间 
+			endtimeChange(e) {
+				this.queryPage.map_end_time = e.target.value
+			},
+
+
+			//自定义时间段
+			datatogglePopup(e) {
+				var _this = this
+				_this.imgSrcstate = true
+				setTimeout(function() { //延迟一定时间执行
+					_this.$nextTick(() => {
+						_this.$refs['datashowshare'].open()
+					})
+				}, 100);
+			},
+
+
+			//指标趋势---7天
+			getsevendate(e) {
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.map_start_time = this.getDay(e)
+				this.queryPage.map_end_time = this.getDay(0)
+				this.seven = true
+				this.thirty = null
+				this.loadGoodsList(1);
+			},
+
+			//指标趋势---30天
+			getthirtydate(e) {
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.map_start_time = this.getDay(e)
+				this.queryPage.map_end_time = this.getDay(0)
+				this.seven = null
+				this.thirty = true
+				this.loadGoodsList(1);
+			},
+
+			// 商品销量----昨天
+			getgoodonedate(e) {
+				this.datetext_good = '昨天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.goods_start_time = this.getDay(e)
+				this.queryPage.goods_end_time = this.getDay(e)
+				this.goodone = true
+				this.goodseven = null
+				this.goodthirty = null
+				this.loadGoodsList(2);
+			},
+
+			// 商品销量----7天
+			getgoodsevendate(e) {
+				this.datetext_good = '近7天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.goods_start_time = this.getDay(e)
+				this.queryPage.goods_end_time = this.getDay(0)
+				this.goodseven = true
+				this.goodthirty = null
+				this.goodone = null
+				this.loadGoodsList(2);
+			},
+
+			// 商品销量----30天
+			getgoodthirtydate(e) {
+				this.datetext_good = '近30天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.goods_start_time = this.getDay(e)
+				this.queryPage.goods_end_time = this.getDay(0)
+				this.goodseven = null
+				this.goodthirty = true
+				this.goodone = null
+				this.loadGoodsList(2);
+			},
+
+
+			//设备代理---昨天
+			getdeviceonedate(e) {
+				this.device_datetext_good = '昨天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.machine_start_time = this.getDay(e)
+				this.queryPage.machine_end_time = this.getDay(0)
+				this.devicegoodone = true
+				this.devicegoodseven = null
+				this.devicegoodthirty = null
+				this.loadGoodsList(3);
+			},
+
+			//设备代理---7天
+			getdevicesevendate(e) {
+				this.device_datetext_good = '近7天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.machine_start_time = this.getDay(e)
+				this.queryPage.machine_end_time = this.getDay(0)
+				this.devicegoodone = null
+				this.devicegoodseven = true
+				this.devicegoodthirty = null
+				this.loadGoodsList(3);
+			},
+
+			//设备代理----30天
+			getdevicethirtydate(e) {
+				this.device_datetext_good = '近30天'
+				this.chartDataimgSrcstate = true
+				this.imgSrcstate = false
+				this.queryPage.machine_start_time = this.getDay(e)
+				this.queryPage.machine_end_time = this.getDay(0)
+				this.devicegoodone = null
+				this.devicegoodseven = null
+				this.devicegoodthirty = true
+				this.loadGoodsList(3);
+			},
+
+			//选择代理
+			toAgent(item) {
+				logoservice.receiveMoneyList({
+					p_id: item.partner_id,
+					m: 'Init/changePartner'
+				}).then(result => {
+					uni.reLaunch({
+						url: "/pages/index/home"
+					})
+				}).catch(err => {
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				});
+			},
+
+			//获取天数
+			getDay(day) {
+				this.imgSrcstate = false
+				var today = new Date();
+				var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
+				today.setTime(targetday_milliseconds); //注意,这行是关键代码
+				var tYear = today.getFullYear();
+				var tMonth = today.getMonth();
+				var tDate = today.getDate();
+				tMonth = this.doHandleMonth(tMonth + 1);
+				tDate = this.doHandleMonth(tDate);
+				return tYear + "-" + tMonth + "-" + tDate;
+			},
+
+			doHandleMonth(month) {
+				var m = month;
+				if (month.toString().length == 1) {
+					m = "0" + month;
+				}
+				return m;
+			},
+
+			//指标
+			target(e) {
+				this.chartDataimgSrcstate = true
+				this.queryPage.table = e
+				this.loadGoodsList(1);
+			},
+
+			//所属代理
+			clickAgent() {
+				this.imgSrcstate = true
+				this.$nextTick(() => {
+					this.$refs['showshareAgent'].open()
+				})
+			},
+
+			selectAgent(e) {
+				this.chartDataimgSrcstate = true
+				this.agentList.forEach(item => {
+					if (item.id == e.id) {
+						this.queryPage.partner_id = item.id
+						this.queryPage.partner_name = item.name
+					}
+				})
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+					_this.$refs['showshareAgent'].close();
+					_this.loadGoodsList(1);
+				}, 100);
+			},
+
+			//打开设备
+			machinetogglePopup() {
+				this.imgSrcstate = true
+				this.$nextTick(() => {
+					this.$refs['machineshowshare'].open()
+				})
+			},
+
+			selectmachine(item) {
+				this.chartDataimgSrcstate = true
+				this.queryPage.machine_id = item.machine_id ? item.machine_id : null
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+					_this.$refs['machineshowshare'].close();
+					_this.loadGoodsList(1);
+				}, 100);
+			},
+
+			//打开商品
+			togglePopup() {
+				this.imgSrcstate = true
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+				})
+			},
+
+			cancel(type) {
+				this.$refs['showshare'].close()
+				this.$refs['machineshowshare'].close()
+				this.$refs['showshareAgent'].close()
+				var _this = this
+				setTimeout(function() { //延迟一定时间执行
+					_this.imgSrcstate = false
+				}, 100);
+			},
+
+			change(e) {
+				if (e.show == false) {
+					var _this = this
+					setTimeout(function() { //延迟一定时间执行
+						_this.imgSrcstate = false
+						_this.chartDataimgSrcstate = false
+					}, 100);
+				}
+			},
+
+			refundNumorder(e) {
+				uni.navigateTo({
+					url: '/pages/mine/Liquidation',
+				});
+			},
+
+			//设备数据
+			equipment_list(e) {
+				uni.navigateTo({
+					url: '/pages/store/equipment_list?status=' + e,
+				});
+			},
+
+			//本月设备收入榜单
+			Liquidationmachine_id(e) {
+				let machine_start_time = this.queryPage.machine_start_time
+				let machine_end_time = this.queryPage.machine_end_time
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + e.machine_id + '&start_time=' + machine_start_time +
+						'&end_time=' + machine_end_time + '&datetext=' + this.datetext
+				});
+			},
+
+			//本月商品销量榜单
+			LiquidationGoodSize(e) {
+				let goods_start_time = this.queryPage.goods_start_time
+				let goods_end_time = this.queryPage.goods_end_time
+				uni.navigateTo({
+					url: '/pages/mine/order?goods_name=' + e.goods_name + '&goods_specs=' + e.goods_specs +
+						'&start_time=' + goods_start_time + '&end_time=' + goods_end_time +
+						'&datetext=' + this.datetext_good + "&is_pay=1"
+				});
+			},
+
+			//收益
+			Liquidation(e) {
+				//console.log("date=" + e);
+				if (e == null) {
+					uni.navigateTo({
+						url: '/pages/mine/Liquidation',
+					});
+				} else {
+					uni.navigateTo({
+						url: '/pages/mine/Liquidation?date=' + e + "&day=" + e,
+					});
+				}
+			},
+
+			//获取天数
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				//this.queryPage.month = myDate.getFullYear() + '-' + myMonth;
+				let today = myDate.getFullYear() + '-' + myMonth
+				return today
+			},
+
+			//加载数据
+			loadGoodsList(state) {
+				//console.log("加载前" + state)
+				uni.showLoading({
+					title: '正在加载中...',
+					mask: true
+				})
+				logoservice.Reportindex(this.queryPage).then(result => {
+					//console.log("加载后")
+					this.long = true
+					this.LoupanList = result
+					var max = 80;
+					var first = 0;
+					if (state == 3 || state == 4) { //设备
+						var myMachineCountObject = this.LoupanList.myMachineCount
+						this.AllDeviceStatisticsList = [];
+						if (myMachineCountObject != null && myMachineCountObject != "") {
+							for (const key in myMachineCountObject) {
+								this.AllDeviceStatisticsList.push(myMachineCountObject[key]);
+							}
+						}
+						//console.log("this.AllDeviceStatisticsList="+this.AllDeviceStatisticsList)
+					}
+					if (state == 2 || state == 4) { //商品销量
+						this.LoupanList.thisGoodsSizeRank.forEach((item, index) => {
+							if (index == 0) {
+								item.row2 = max;
+								first = parseFloat(item.count);
+							} else {
+								item.row2 = max * parseFloat(item.count / first)
+								if (item.row2 <= 1) {
+									item.row2 = 1;
+								}
+							}
+							//console.log("this.AllDeviceStatisticsList="+this.AllDeviceStatisticsList)
+						})
+						this.thisMonthGoodsSizeRank = this.LoupanList.thisGoodsSizeRank
+					}
+
+					//console.log("this.chartData进来"+this.chartData)
+
+					if (state == 1 || state == 4) {
+						let categories = []
+						let seriesdata = []
+						if (this.LoupanList.mapList.length > 8) {
+							let number = Math.ceil(this.LoupanList.mapList.length / 8)
+							this.LoupanList.mapList.forEach((item, index) => {
+								if (index % number == 0) {
+									categories.push(item.day.split("-")[1] + '-' + item.day.split("-")[2])
+								} else {
+									categories.push('')
+								}
+								seriesdata.push(item.total)
+							})
+						} else {
+							this.LoupanList.mapList.forEach((item, index) => {
+								categories.push(item.day.split("-")[1] + '-' + item.day.split("-")[2])
+								seriesdata.push(item.total)
+							})
+						}
+						this.chartData.categories = categories
+						this.chartData.series[0].data = seriesdata;
+						this.cWidth = uni.upx2px(750);
+						this.cHeight = uni.upx2px(500);
+
+						this.showLineA("canvaLineA", this.chartData);
+					}
+					uni.hideLoading();
+					uni.stopPullDownRefresh();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				});
+			},
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: "Money/orderList",
+					machine_id: null,
+					sub: 1
+				}).then(result => {
+					this.goodsItem = result;
+					this.goodsItem.unshift({
+						goods_id: null,
+						goods_name: null,
+						goods_specs: null,
+					})
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到商品类型选择',
+						icon: 'none'
+					});
+				});
+			},
+			getMachinelist() {
+				logoservice.Machinelist({
+					m: 'Machine/list',
+					page: 1,
+					per_page: 100
+				}).then(result => {
+					let queryList = []
+					result.data.forEach(item => {
+						queryList.push({
+							machine_id: item.id
+						})
+					})
+					queryList.sort(function(a, b) {
+						return a.machine_id - b.machine_id
+					})
+					// console.log(queryList);
+					this.Machinelist = queryList;
+					this.Machinelist.unshift({
+						machine_id: null
+					})
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到商品类型选择',
+						icon: 'none'
+					});
+				});
+			},
+			//折线一
+			showLineA(canvasId, chartData) {
+				var _self = this;
+				canvaLineA = new uCharts({
+					$this: _self,
+					canvasId: canvasId, //页面组件canvas-id
+					type: 'area', //图表类型
+					fontSize: 11,
+					legend: {
+						show: false
+					},
+					dataLabel: false, //是否在图表中显示数据标签内容值
+					dataPointShape: true, //是否在图表中显示数据点图形标识
+					background: '#FFFFFF',
+					pixelRatio: _self.pixelRatio,
+					categories: chartData.categories,
+					series: chartData.series,
+					animation: true,
+					enableScroll: _self.enableScroll, //开启图表拖拽功能
+					xAxis: {
+						type: 'grid',
+						gridColor: '#F2F2F2',
+						gridType: 'dash',
+						dashLength: 4,
+						itemCount: 8, //x轴单屏显示数据的数量,默认为5个
+						scrollShow: true, //新增是否显示滚动条,默认false
+						scrollAlign: 'left', //滚动条初始位置
+						scrollBackgroundColor: '#F7F7FF', //默认为 #EFEBEF
+						scrollColor: '#DEE7F7', //默认为 #A6A6A6
+					},
+					yAxis: {
+						calibration: true,
+						gridType: 'dash',
+						gridColor: '#F2F2F2',
+						dashLength: 4,
+						splitNumber: 5,
+						format: (val) => {
+							return val.toFixed(0)
+						}
+					},
+					width: _self.cWidth * _self.pixelRatio,
+					height: _self.cHeight * _self.pixelRatio,
+					padding: [20, 15, 4, 15],
+					extra: {
+						area: {
+							type: 'curve',
+							opacity: 0.2,
+							addLine: true,
+							width: 2
+						}
+					}
+				});
+				canvaLineA.addEventListener('renderComplete', () => { //监控图表渲染完成
+					//console.log(_self.chartDataimgSrcstate)
+					if (_self.chartDataimgSrcstate) {
+						setTimeout(function() { //延迟一定时间执行
+							uni.canvasToTempFilePath({ //将图表转成图片
+								x: 0,
+								y: 0,
+								width: _self.cWidth * _self.pixelRatio,
+								height: _self.cHeight * _self.pixelRatio,
+								fileType: 'png',
+								canvasId: 'canvaLineA',
+								success: function(res) {
+									_self.imgSrc = res.tempFilePath;
+									_self.chartDataimgSrcstate = false
+								},
+								fail: function(res) {}
+							}, _self);
+						}, 100);
+					}
+				});
+			},
+
+			touchLineA(e) {
+				canvaLineA.scrollStart(e);
+			},
+
+			moveLineA(e) {
+				canvaLineA.scroll(e);
+			},
+
+			touchEndLineA(e) {
+				canvaLineA.scrollEnd(e);
+				//下面是toolTip事件,如果滚动后不需要显示,可不填写
+				canvaLineA.showToolTip(e, {
+					format: function(item, category) {
+						return category + ' ' + item.name + ':' + item.data
+					}
+				});
+			}
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+			this.loadGoodsList(4);
+		},
+
+		//上拉加载
+		onReachBottom() {},
+
+		//滑动
+		onPageScroll(e) {
+			let st = e.scrollTop;
+			this.imgSrcstate = true
+		},
+
+
+		onLoad(options) {
+			this.queryPage.map_start_time = this.getDay(-6) //趋势开始时间
+			this.queryPage.map_end_time = this.getDay(0) //趋势结束时间
+			this.queryPage.goods_start_time = this.getDay(-1) //商品销量开始时间
+			this.queryPage.goods_end_time = this.getDay(-1) //商品销量结束时间
+			this.queryPage.machine_start_time = this.getDay(-1) //设备数量开始时间
+			this.queryPage.machine_end_time = this.getDay(-1) //设备数量结束时间
+		},
+
+
+		onShow() {
+
+
+
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+						uni.setStorageSync('partner_id', this.$base.Userres.partner_id)
+						uni.setStorageSync('openid', result.openid)
+						logoservice.setwixinInfo(result);
+
+						if (result.partner) {
+							this.titleName = result.partner.name
+						}
+
+						//代理标识判断开始
+						if (this.Userres_partner_id == 0) {
+							this.UserresPartnerType == 1
+							uni.reLaunch({
+								url: "/pages/index/all-agent"
+							})
+							return
+
+						} else {
+							if (this.$base.Userres.partner != null) {
+								if (this.$base.Userres.partner.level == 1) {
+									this.UserresPartnerType == 2
+									uni.reLaunch({
+										url: "/pages/index/city-agent"
+									})
+									return
+
+								}
+							}
+						}
+						//代理标识判断开始结束
+
+						this.loadGoodsList(4);
+						this.getMachinelist()
+						logoservice.receiveMoneyList({
+							m: 'Init/getPartner'
+						}).then(result => {
+							this.agentList = result.list
+							result.list.forEach(item => {
+								if (item.id == result.p_id) {
+									this.titleName = item.name
+									this.queryPage.partner_id = item.id
+									this.$base.partner_id = this.queryPage.partner_id;
+									this.queryPage.partner_name = item.name
+								}
+							})
+						}).catch(err => {
+							uni.showToast({
+								title: err.msg,
+								icon: 'none'
+							});
+						})
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onUnload() {
+			let pages = getCurrentPages();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		background: #FFFFFF !important;
+	}
+
+	.qiun-columns {
+		display: flex;
+		flex-direction: column !important;
+	}
+
+	.qiun-charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.imgSrcstate {
+		position: absolute;
+		width: 100%;
+		right: -900px;
+		top: -600px;
+		display: none;
+	}
+
+	.imgSrcdisplay {
+		z-index: 0 !important;
+	}
+
+	/* 底部分享 */
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 26upx;
+		text-align: center;
+		background: #FFFFFF;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	.targetgreen {
+		color: #FFFFFF !important;
+		background: #43CF7C !important;
+	}
+
+	/*样式的width和height一定要与定义的cWidth和cHeight相对应*/
+	.qiun-charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.charts {
+		width: 750upx;
+		height: 500upx;
+		background-color: #FFFFFF;
+	}
+
+	.home {
+		width: 100%;
+		padding-bottom: 60upx;
+
+		/*今日 today */
+		.today {
+			width: 100%;
+			height: 307upx;
+			background: #43CF7C;
+			display: flex;
+			align-items: center;
+			justify-content: center;
+
+			.today_ul {
+				width: 50%;
+
+				.today_ul_div {
+					margin-left: 20upx;
+					color: #FFFFFF;
+
+					.today_money {
+						font-size: 35upx;
+
+
+						font-weight: 400;
+						margin-bottom: 10upx;
+
+					}
+
+					.today_profit_text {
+						font-size: 22upx;
+						font-weight: 400;
+						line-height: 20upx;
+					}
+
+					.today_order_money {
+						// margin-top: 96upx;
+						font-size: 50upx;
+						font-weight: 400;
+						margin-bottom: 10upx;
+					}
+
+					.today_order_num {
+						// margin-top: 37upx;
+						font-size: 36upx;
+						font-weight: bold;
+					}
+				}
+			}
+		}
+
+		/* yesterday */
+		.yesterday {
+			width: 100%;
+			height: 327upx;
+			display: flex;
+
+			border-bottom: 1px solid rgba(178, 178, 178, 0.2);
+
+			.yesterday_div {
+				width: 100%/4;
+				margin-left: 45upx;
+				color: #333333;
+				text-align: center;
+
+				.yesterday_profit_money {
+					margin-top: 36upx;
+					font-size: 36upx;
+					font-weight: bold;
+				}
+
+				.yesterday_profit_text {
+					font-size: 20upx;
+					font-weight: 400;
+					line-height: 30upx;
+				}
+			}
+		}
+
+		/* equipment */
+		.equipment {
+			width: 100%;
+
+			.equipment_title {
+				font-size: 40upx;
+				font-weight: 500;
+				color: #333333;
+				margin: 50upx 0 40upx 45upx;
+			}
+
+			.equipment_main {
+				width: 100%;
+				display: flex;
+
+				.equipment_main_ul {
+					width: calc(100% / 2);
+
+					.equipment_main_ul_circle {
+						width: 120upx;
+						height: 120upx;
+						border-radius: 50%;
+						margin: auto;
+
+						.equipment_main_ul_circle_num {
+							font-size: 40upx;
+							font-weight: 400;
+							text-align: center;
+							line-height: 120upx;
+						}
+					}
+
+					.equipment_main_ul_text {
+						font-size: 28upx;
+						font-weight: 400;
+						margin-top: 40upx;
+						color: #333333;
+						text-align: center;
+					}
+				}
+			}
+		}
+
+		/*本月机器榜单  */
+		.machine_title {
+			font-size: 40upx;
+			font-weight: 500;
+			color: #333333;
+			margin: 80upx 0 70upx 45upx;
+		}
+
+		.topBox {
+			width: calc(100% - 90upx);
+			margin: 0 auto 40upx;
+			display: flex;
+			flex-direction: row;
+			align-items: center;
+		}
+
+		.topLittleBOX-1 {
+			font-size: 24upx;
+			width: 120upx;
+			color: #888888;
+			overflow: text-align;
+		}
+
+		.topLittleBOX-2 {
+			padding-left: 20upx;
+			padding-top: auto;
+			padding-bottom: auto;
+			display: flex;
+			// height: 50upx;
+			// line-height:50upx;
+			vertical-align: middle;
+			flex-direction: row;
+			align-items: center;
+			width: calc(100% - 120upx);
+		}
+
+		.row-1 {
+			height: 30upx;
+			background-color: #43CF7C;
+			border-radius: 20upx;
+			width: 0upx;
+			transition: width 1.5s linear;
+		}
+
+		.rowText {
+			margin-left: 10upx;
+			font-size: 30upx;
+			color: #4c4c4c;
+		}
+
+	}
+</style>
\ No newline at end of file
diff --git a/pages/index/login.vue b/pages/index/login.vue
new file mode 100644
index 0000000..9fa80a2
--- /dev/null
+++ b/pages/index/login.vue
@@ -0,0 +1,276 @@
+<template>
+	<view class="content">
+		<view class="loader">
+		</view>
+		<view class="logoimg">
+			<image class="logo" src="/static/logo.jpg" style="background: #FFFFFF;"></image>
+		</view>
+		<view class="text-area">
+			<text class="title">{{title}}</text>
+		</view>
+		<input type="text" placeholder="请输入您的管理员账号" clearable focus class="inputAcc" v-model="phone" />
+		<input type="password" displayable placeholder="请输入登录密码" class="input" v-model="password" />
+		<button class="loginBtn" @tap="bindLogin" hover-class="hover-class-bg">登录</button>
+		<image src="../../static/bg.png" mode=""
+			style="position: absolute; left: 0; bottom: 0; z-index: -1; width: 464upx; height: 590upx;"></image>
+	</view>
+</template>
+
+<script>
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+
+		},
+		data() {
+			return {
+				title: 'ColorPark',
+				openid: null,
+				phone: '',
+				password: '',
+				unionId: '',
+				isMachine: 0,
+				machine_id: "" // 设备Id
+			}
+		},
+		methods: {
+			bindLogin() {
+				uni.showLoading({
+					title: '正在登录中...'
+				});
+				if (!this.phone) {
+					uni.showToast({
+						icon: 'none',
+						title: '请输入您的管理员账号'
+					});
+					return;
+				}
+				if (!this.password) {
+					uni.showToast({
+						icon: 'none',
+						title: '请输入登录密码'
+					});
+					return;
+				}
+				const data = {
+					m: 'Init/bindWx',
+					openid: this.openid,
+					phone: this.phone,
+					pass: this.password,
+					unionId: this.unionId
+				};
+				if (this.openid == undefined || this.openid == null) {
+					data.openid = uni.getStorageSync('openid')
+				}
+				logoservice.bindWx(data).then(result => {
+					uni.hideLoading();
+					if (result.openid) {
+						uni.setStorageSync('openid', result.openid)
+					}
+					uni.setStorageSync('openid', result.openid)
+					logoservice.setwixinInfo(result);
+					uni.setStorageSync('token', result.token)
+
+					uni.showToast({
+						icon: 'none',
+						title: '登录成功'
+					});
+
+                    var that = this
+					if (this.machine_id != null && this.machine_id != "") {
+						setTimeout(function() {
+							uni.reLaunch({
+								url: '../mall/eq-details-new?id=' + that.machine_id +
+									"&isShowBack=false"
+							});
+						}, 1000) //延
+
+					} else {
+
+						uni.reLaunch({
+							url: 'mall',
+						});
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+		},
+		onReady() {
+
+		},
+
+		onLoad(options) {
+			if (options.machine_id) {
+				this.machine_id = options.machine_id
+			}
+		},
+
+		onShow() {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					console.log(res)
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						//console.log(result)
+						if (result.openid) {
+							uni.setStorageSync('openid', result.openid)
+						}
+						uni.setStorageSync('openid', result.openid)
+						logoservice.setwixinInfo(result);
+						uni.setStorageSync('token', result.token)
+						this.openid = result.openid
+						this.unionId = result.unionId
+						//console.log(logoservice.getwixinInfo())
+					}).catch(err => {
+						console.log(err.data)
+						// console.log(err)
+						if (err.data.openid) {
+							uni.setStorageSync('openid', err.data.openid)
+						}
+						this.openid = err.data.openid
+						uni.showToast({
+							title: err.msg,
+							icon: 'none'
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		}
+	}
+</script>
+
+<style lang="scss">
+	/*每个页面公共css */
+	page {
+		min-height: 100%;
+		display: flex;
+		font-size: 16px;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		display: block;
+	}
+
+	page {
+		background-color: #fff;
+	}
+
+	.content {
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+	}
+
+	.input {
+		font-size: 28upx;
+		margin: 20% 0rem;
+		position: absolute;
+		top: 600rpx;
+		height: 70upx;
+		width: 50%;
+		text-align: center;
+		// border-bottom: 1px #007AFF solid;
+		border-bottom: 1px #14141A solid;
+		border-radius: 10upx;
+	}
+
+	.inputAcc {
+		font-size: 28upx;
+		margin: 20% 0rem;
+		position: absolute;
+		top: 470rpx;
+		height: 70upx;
+		width: 50%;
+		text-align: center;
+		// border-bottom: 1px #007AFF solid;
+		border-bottom: 1px #14141A solid;
+		border-radius: 10upx;
+
+	}
+
+	.loginBtn {
+		font-size: 34upx;
+		background: #14141A !important;
+		// background: linear-gradient(to right, #4bb0ff, #6149f6);
+		border-radius: 200rpx;
+		width: 200rpx;
+		position: absolute;
+		color: white;
+		bottom: 150rpx;
+	}
+
+	.loginBtn:active {
+		// transform: translateY(4upx);
+	}
+
+	.logoimg {
+		position: absolute;
+		top: 155rpx;
+		z-index: 10;
+	}
+
+	.logo {
+		height: 200rpx;
+		width: 200rpx;
+		border-radius: 100upx;
+	}
+
+	.text-area {
+		position: absolute;
+		top: 400rpx;
+		display: flex;
+		justify-content: center;
+	}
+
+	.title {
+		font-size: 50rpx;
+		color: #14141A;
+	}
+
+	.loader {
+		z-index: 1;
+		position: absolute;
+		top: 130rpx;
+		width: 250rpx;
+		height: 250rpx;
+		border-radius: 50%;
+		background: linear-gradient(#f07e6e, #84cdfa, #5ad1cd);
+		animation: animate 1.2s linear infinite;
+	}
+
+	@keyframes animate {
+		0% {
+			transform: rotate(0deg);
+		}
+
+		100% {
+			transform: rotate(360deg);
+		}
+	}
+
+	.loader:after {
+		content: '';
+		position: absolute;
+		top: 10px;
+		left: 10px;
+		right: 10px;
+		bottom: 10px;
+		background: #f1f1f1;
+		border: solid white 10px;
+		border-radius: 50%;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/index/mall.vue b/pages/index/mall.vue
new file mode 100644
index 0000000..733c822
--- /dev/null
+++ b/pages/index/mall.vue
@@ -0,0 +1,264 @@
+<template>
+	<view class="full-width content-color full-height">
+		<!-- 自定义头部 -->
+		<myhead :title="'门店管理'" :color="'#000'" :titleShow="true" :backShow="true" :background="'#F8F8F8'"></myhead>
+		<!-- 动态数据 -->
+		<view scroll-y class="full-width full-height" @touchend="touchEnd" v-if="long">
+			<view style="padding-top: 20upx; padding-bottom: 120upx;">
+				<!-- 动态数据完 -->
+				<view @click="couponStatusone()"
+					style="width: 90%; margin:0 auto 40upx; border-radius: 10upx; height:280upx; line-height: 280upx; overflow: hidden;">
+					<view class="iconfont icon-21 cu-btn shadow cuIcon"
+						style="background: #FFFFFF; text-align: center; font-size: 80upx;"></view>
+				</view>
+				<!-- 数据 -->
+				<view v-for="(item, index) in LoupanList" :key="index" @click="store(item)"
+					@touchstart.preven="touchstart(item,index)" @touchend.prevent="touchend"
+					style="width: 90%; margin:0 auto 40upx; border-radius: 10upx; background: #FFFFFF; overflow: hidden;">
+					<img :src="item.image + '?x-oss-process=image/resize,lfit,w_640'"
+						style="width: 100%; height:280upx; object-fit:cover;" mode="aspectFill">
+					<view class="uni-center" style="font-size: 34upx; color: #343434; margin: 19upx 0;">
+						{{item.short_name}}</view>
+					<!-- <view class="uni-center" style="font-size: 26upx; color: #888888;">电话: {{item.phone}}</view> -->
+					<view class="uni-center" style="font-size: 26upx; color: #888888;">所属代理: {{item.partner_name}}
+					</view>
+					<view class="uni-center" style="font-size: 26upx; color: #888888; margin: 11upx 15upx 29upx 15upx;">
+						<view v-html="item.address"></view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!-- 返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+		<!-- 自定义底部 -->
+		<foot action="1" :partnerId="Userres_partner_id" :partnerType= "UserresPartnerType"></foot>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import Enums from '@/util/Enums';
+	import Env from '@/util/Env.js';
+	import updata from '@/util/updata.js'
+	//自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import myhead from './head/head.vue';
+	export default {
+		components: {
+			uniIcon,
+			foot,
+			myhead
+		},
+		computed: {},
+		data() {
+			return {
+				long: false,
+				LoupanList: [], //数据
+				//返回顶部
+				totopstatus: false,
+				//判断是否为长按
+				nav: true,
+				Userres_partner_id: null, //总代理
+				UserresPartnerType:4,
+			};
+		},
+		methods: {
+			couponStatusone() {
+				if (this.$base.Userres.be_child == 1) return;
+				uni.navigateTo({
+					url: "/pages/store/shopdetails"
+				})
+			},
+			touchstart(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+		       let that = this;
+				that.nav = true
+				clearInterval(this.Loop); //再次清空定时器,防止重复注册定时器
+				this.Loop = setTimeout(function() {
+					that.nav = false
+					//console.log(that.nav)
+					uni.showModal({
+						title: '删除',
+						content: '确认要删除当前门店吗?',
+						confirmText: '删除',
+						confirmColor: '#ff3b32',
+						success: async function(res) {
+							if (res.confirm) {
+								that.LoupanList.splice(index, 1)
+								logoservice.shopdel({
+									ids: item.id,
+									m: 'Shop/del'
+								}).then(result => {
+									uni.showToast({
+										icon: "success",
+										title: '删除成功!',
+										duration: 2000
+									});
+								}).catch(err => {
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								});
+							} else if (res.cancel) {
+								console.log('用户点击取消')
+							}
+						}
+					});
+				}.bind(this), 500);
+			},
+			touchend() {
+				clearInterval(this.Loop);
+			},
+			store(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				if (this.nav) {
+					uni.navigateTo({
+						url: '../store/shopdetails?start=2&id=' + item.id,
+					});
+				}
+			},
+			//返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1200) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			datalist() {
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				logoservice.shoplist({
+					m: 'Shop/list'
+				}).then(result => {
+					this.long = true
+					this.LoupanList = result
+					uni.hideLoading();
+					uni.stopPullDownRefresh();
+				}).catch(err => {
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+					uni.hideLoading();
+					uni.stopPullDownRefresh();
+				})
+			},
+		},
+		//下拉加载
+		onPullDownRefresh() {
+			clearInterval(this.Loop);
+			uni.showLoading({
+				title: '正在加载中...'
+			})
+			this.datalist()
+		},
+		//上拉加载
+		onReachBottom() {
+			uni.showToast({
+				title: '没有更多数据了!',
+				icon: 'none'
+			});
+		},
+		onLoad(options) {
+			uni.showLoading({
+				title: '正在加载中...'
+			})
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						uni.setStorageSync('openid', result.openid)
+						logoservice.setwixinInfo(result);
+						//代理标识判断开始
+						if (this.$base.Userres.partner_id == 0) {
+							this.UserresPartnerType = 1
+							//console.log("UserresPartnerType进来"+_self.UserresPartnerType);
+						} else {
+							if (this.$base.Userres.partner != null) {
+								if (this.$base.Userres.partner.level == 1) {
+									this.UserresPartnerType = 2
+								} else if (this.$base.Userres.partner.level == 2) {
+									this.UserresPartnerType = 3
+								}
+							  }
+						}
+						this.datalist()
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			this.datalist();
+			//console.log('onShow')
+			//console.log(this.$base.Userres)
+			// uni.login({
+			// 	provider: 'weixin',
+			// 	success: (res) => {
+			// 		logoservice.login({
+			// 			m: 'Init/init',
+			// 			code: res.code
+			// 		}).then(result => {
+			// 			this.$base.Userres = result //记录用户登录信息
+			// 			uni.setStorageSync('openid', result.openid)
+			// 			logoservice.setwixinInfo(result);
+			// 			this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+			// 		}).catch(err => {})
+			// 	},
+			// 	fail: (err) => {
+			// 		console.error('授权登录失败:' + JSON.stringify(err));
+			// 	}
+			// });
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+	}
+
+	 //返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+</style>
diff --git a/pages/index/mine.vue b/pages/index/mine.vue
new file mode 100644
index 0000000..5177f26
--- /dev/null
+++ b/pages/index/mine.vue
@@ -0,0 +1,383 @@
+<template>
+	<view class="mine full-height full-width">
+		<!-- 自定义头部 -->
+		<myhead :title="'结算中心'" :color="'#fff'" :titleShow="true" :backShow="true" :background="'#5CE6B5'"></myhead>
+
+		<view style="width: 100%; height: 240upx;background:#5CE6B5 ;"></view>
+
+		<!--页头-->
+		<view class="wallet-score bg-white-color full-width"
+			style="position: relative;;margin-top: -175upx;background: #29D698;">
+			<view class="wallet content-color " style="margin-left: 30upx;">
+				<view class="text" style="font-size: 24upx;letter-spacing: 2upx;color: #FFFFFF;">未提现到账金额 (元)</view>
+				<view class="score-num">{{ userInfo.withdrawal_amount || 0 }}</view>
+			</view>
+
+			<view style="position: absolute; right: 0upx; top: 190upx; background: #F0A900;
+				padding: 22upx 50upx;
+				color: #FFFFFF;
+				border-top-left-radius:40upx;
+				border-top-right-radius:0upx;
+				border-bottom-right-radius:0upx;
+				border-bottom-left-radius:40upx;" @click="money()"
+				v-if="UserresPartnerType > 1 ">
+				<text style="color: #FFFFFF; font-size: 32upx;" hover-class="hover-class-text">提现</text>
+			</view>
+
+			<view v-if=" long && UserresPartnerType > 1 && userInfo != null && userInfo.self_payment == 0"
+				style="position: absolute; left: 35upx; top: 190upx;display: flex;flex-direction: column;"
+				@click="toBalanceBank()">
+				<text style="color: #fff; font-size: 26upx;"
+					hover-class="hover-class-text">{{getText(userInfo.account_name)}}</text>
+				<text style="color: #fff; font-size: 26upx;margin-top: 2upx;"
+					hover-class="hover-class-text">{{getText(userInfo.account_sn)}}</text>
+				<label v-if="userInfo.account_name != null &&  userInfo.account_name != 'null' && userInfo.account_name  != '' "  class="fa fa-angle-right"
+					style="color: #fff; font-size: 40upx; margin-left: 340upx;margin-top:-38upx; "></label>
+				<text style="color: #fff; font-size: 26upx;margin-top:-5upx;"
+					hover-class="hover-class-text">{{getText(userInfo.bank_name)}}</text>
+			</view>
+		</view>
+
+		<view class="other-info" v-if="long">
+			<view class="item" style="width: calc(100% / 3)" v-for="(other, index) in sociallist" :key="index"
+				@click="toOther(other)">
+				<view style="border-radius: 20upx;margin-left: 18upx;margin-right: 18upx;height: 200upx;">
+					<view class="icon" style="position: relative;" hover-class="hover-class-text">
+						<image :src="other.icon"
+							style="width: 80upx;height: 80upx; margin-left: -10upx;margin-top: 35upx;">
+						</image>
+					</view>
+					<view class="text content-color" hover-class="hover-class-text">
+						{{other.name}}
+					</view>
+				</view>
+			</view>
+		</view>
+
+		<!-- 自定义底部 -->
+		<foot action="4" :partnerId="Userres_partner_id" :partnerType="UserresPartnerType"></foot>
+		
+	</view>
+</template>
+
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	// 自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import myhead from './head/head.vue';
+	export default {
+		components: {
+			uniIcon,
+			foot,
+			myhead
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isShow: false,
+				sociallist: [{
+						code: 'order',
+						name: '订单列表',
+						path: '/pages/mine/order',
+						icon: '../../static/icon_mine_order.png',
+					},
+					{
+						code: 'Liquidation',
+						name: '收入明细',
+						path: '/pages/mine/Liquidation',
+						icon: '../../static/icon_mine_income.png',
+					},
+					// {
+					// 	code: 'Withdrawal',
+					// 	name: '提现记录',
+					// 	path: '/pages/mine/Withdrawal',
+					// 	icon: '../../static/icon_mine_withdrawal.png',
+					// },
+					{
+						code: 'information',
+						name: '代理信息',
+						path: '/pages/mine/information',
+						icon: '../../static/icon_mine_agent.png',
+					},
+					
+					// {
+					// 	code: 'goodStock',
+					// 	name: '商品库存',
+					// 	path: '/pages/mine/goodStock',
+					// 	icon: '../../static/icon_mine_inventory.png',
+					// },
+					// {
+					// 	code: 'printRecord',
+					// 	name: '打印卡充值记录',
+					// 	path: '/pages/mine/PrintCard',
+					// 	icon: '../../static/icon_mine_printe_list.png',
+					// },
+					
+				],
+				userInfo: null,
+				be_child: 0, //子代理
+				partner_id: null, //总代理
+				Userres_partner_id: null, //总代理
+				UserresPartnerType: 0,
+			};
+		},
+
+		methods: {
+
+			getText(text) {
+				if (text == null || text == "null") {
+					return "";
+				}
+				return text;
+			},
+
+			nameFormat(item) {
+				console.log("name=" + item)
+				if (!item) return '';
+				let str = item;
+				if (str.length == 2) {
+					str = str.toString().replace(/^([^\x00-\xff])([^\x00-\xff]{0,})([^\x00-\xff])/g, '$1*')
+				} else if (str.length == 3) {
+					str = str.toString().replace(/^([^\x00-\xff])([^\x00-\xff]{0,})([^\x00-\xff])/g, '$1*$3')
+				} else if (str.length == 4) {
+					str = str.toString().replace(/^([^\x00-\xff])([^\x00-\xff]{0,2})([^\x00-\xff])/g, '$1**$3')
+				} else if (str.length > 4) {
+					str = str.toString().replace(/^([^\x00-\xff])([^\x00-\xff]{0,3})([^\x00-\xff])/g, '$1***$3')
+				} else {}
+				return str;
+			},
+			
+			bankNoFormat(item) {
+				if (!item) return '';
+				let bankCard = item;
+				var reg = /^(\d{4})\d+(\d{4})$/;
+				return bankCard.replace(reg, "$1 **** $2");
+			},
+			
+			toBalanceBank() {
+				uni.navigateTo({
+					url: '../mine/bank'
+				});
+			},
+			
+			balance() {
+				uni.navigateTo({
+					url: '../mine/balance'
+				});
+			},
+			
+			money() {
+				
+					uni.navigateTo({
+						//url: '../mine/money'
+						url:'../mine/Settle',
+					});
+				
+			},
+
+			printUseMoney() {
+				uni.navigateTo({
+					url: '../mine/PrintUseDetail'
+				});
+			},
+
+			packageDetail() {
+				uni.navigateTo({
+					url: '../mine/PackageDetail'
+				});
+			},
+
+			toOther(other) {
+				let path = other.path;
+				if (other.name == "收入明细") {
+					path = path + "?selfPayment=" + this.userInfo.self_payment
+				}
+				uni.navigateTo({
+					url: path
+				});
+			},
+
+			moneyinfo() {
+				logoservice.Moneyinfo({
+					m: 'Money/info'
+				}).then(result => {
+					this.long = true;
+					this.userInfo = result
+					if (result != null && result.self_payment == 1) {
+						this.sociallist = [{
+								code: 'order',
+								name: '订单列表',
+								path: '/pages/mine/order',
+								icon: '../../static/icon_mine_order.png',
+							},
+							{
+								code: 'Liquidation',
+								name: '收入明细',
+								path: '/pages/mine/Liquidation',
+								icon: '../../static/icon_mine_income.png',
+							},
+							{
+								code: 'information',
+								name: '代理信息',
+								path: '/pages/mine/information',
+								icon: '../../static/icon_mine_agent.png',
+							},
+						]
+					}
+					uni.hideLoading();
+					uni.stopPullDownRefresh();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			}
+		},
+		
+		//下拉加载
+		onPullDownRefresh() {
+			this.moneyinfo();
+		},
+		
+		//上拉加载
+		onReachBottom() {
+			this.moneyinfo();
+		},
+		
+		onShow() {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						uni.setStorageSync('openid', result.openid)
+						logoservice.setwixinInfo(result);
+						//代理标识判断开始
+						if (result.partner_id == 0) {
+							this.UserresPartnerType = 1
+						} else {
+							if (result.partner != null) {
+								if (result.partner.level == 1) {
+									this.UserresPartnerType = 2
+								} else if (result.partner.level == 2) {
+									this.UserresPartnerType = 3
+								} else {
+									this.UserresPartnerType = 4
+								}
+							}
+						}
+						if (this.UserresPartnerType == 1) {
+							this.sociallist = [{
+									code: 'order',
+									name: '订单列表',
+									path: '/pages/mine/order',
+									icon: '../../static/icon_mine_order.png',
+								},
+								{
+									code: 'Liquidation',
+									name: '收入明细',
+									path: '/pages/mine/Liquidation',
+									icon: '../../static/icon_mine_income.png',
+								},
+							]
+						}
+						this.moneyinfo();
+						this.be_child = this.$base.Userres.be_child //子代理
+						this.partner_id = this.$base.Userres.partner_id //总代理
+						this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+					}).catch(err => {
+
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		background: #FFFFFF !important;
+		width: 100%;
+		height: 100%;
+	}
+
+	.mine {
+
+		//结算
+		.wallet-score {
+			padding: 50upx 0;
+			width: 90%;
+			height: 320upx;
+			margin: 57upx auto;
+			background: #5CE6B6;
+			box-shadow: 1upx 19upx 57upx 9upx rgba(92, 230, 182, 0.5);
+			border-radius: 25upx;
+			display: flex;
+			font-size: 26upx;
+			color: #fff;
+
+			.wallet {
+				width: 100%;
+
+				.score-num {
+					line-height: 70upx;
+					font-size: 50upx;
+					font-weight: bold;
+					color: #fff;
+				}
+
+				.text {
+					line-height: 50upx;
+					margin-left: 5upx;
+					color: #fff;
+				}
+			}
+		}
+
+		.other-info {
+			width: 100%;
+			margin-top: -15upx;
+			overflow: hidden;
+			padding-left: 20upx;
+			padding-right: 20upx;
+
+			.item {
+				float: left;
+				height: 225upx;
+				align-items: center;
+				margin-top: 0upx;
+				width: calc(100% / 5);
+
+				.icon {
+					width: 60upx;
+					font-size: 80upx;
+					margin: auto;
+
+					label {
+						font-size: 60upx;
+					}
+				}
+
+				.text {
+					width: 100%;
+					font-size: 25upx;
+					text-align: center;
+				}
+			}
+		}
+	}
+</style>
diff --git a/pages/index/start-up.vue b/pages/index/start-up.vue
new file mode 100644
index 0000000..d3a3b15
--- /dev/null
+++ b/pages/index/start-up.vue
@@ -0,0 +1,470 @@
+<template>
+	<view class="full-width content-color full-height" style="height: 120%;">
+		<view class="start">
+			<view style="height: 160upx;"></view>
+			<image src="/static/logo.jpg" class="start_img"></image>
+			<view class="start_title">我的风格 我设计</view>
+			<view class="start_div" v-if="typeIn == 0">
+				<view class="start_text">该小程序为色彩公园运营平台,包括店铺管理、设备中心、结算中心、运营报表、设备库存等功能。</view>
+				<view class="start_text" style="margin-top: 30upx;">暂不提供对外注册,请联系服务商注册帐号。</view>
+			</view>
+			
+			<view class="start_div" v-if="typeIn == 1">
+				<view class="start_text">该小程序为色彩公园运营平台,包括店铺管理、设备中心、结算中心、运营报表、设备库存等功能。</view>
+				<view  v-if="  code == '101' || code == '102' || code =='103'|| code =='106' " class="start_text" style="margin-top: 30upx;
+				 font-size: 35upx; color: #ff0000; width: 100%; text-align: center;
+				  font-weight: 600; ">你暂时没有权限访问</view>
+			</view>
+			
+			<view class="footer" v-if="typeIn == 0">
+				<view class="footer_but" @click="login()" hover-class="hover-class-bg">已有账号,前往登录</view>
+			</view>
+			
+			<view class="footer" v-if="typeIn == 1 && (code == '101' || code == '102' || code =='103'|| code =='106')">
+				<view class="footer_but" @click="toBackCurrentProgram()" hover-class="hover-class-bg">返回</view>
+			</view>
+
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	import logoservice from '@/service/logoservice.js';
+	import store from '../../store'
+	import Env from '@/util/Env.js';
+
+	export default {
+		props: {
+			partnerId: {
+				type: Number,
+				default: 1,
+			},
+			partnerType: {
+				//1所有 2市级别 3区级别 4终端
+				type: Number,
+				default: 4,
+			},
+		},
+		components: {
+
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				LoupanList: [],
+				//partner_id: "",
+				//machine_id: "",
+				machine_id: "100022", //设备Id
+				partner_id: "14", //代理商Id
+				typeIn: -1, // 0 默认进来 1 设备详情页面进来
+				appletType: 0 ,// 1手机壳 2T恤 3 高尔夫 4 plus 5烘焙 6:Lite
+				code:"",
+			};
+		},
+		methods: {
+
+			login() {
+				var that = this
+				uni.login({
+					provider: 'weixin',
+					success: (res) => {
+						logoservice.login({
+							m: 'Init/init',
+							code: res.code
+						}).then(result => {
+							that.$base.Userres = result //记录用户登录信息
+							if (result.openid) {
+								uni.setStorageSync('openid', result.openid)
+							}
+							uni.setStorageSync('openid', result.openid)
+							logoservice.setwixinInfo(result);
+							uni.setStorageSync('token', result.token)
+							uni.showLoading({
+								title: '自动登录中...'
+							});
+							if (that.$base.Userres.partner_id == 0) {
+								setTimeout(() => {
+									uni.navigateTo({
+										url: 'all-agent',
+									})
+
+									uni.hideLoading();
+								}, 500);
+							} else {
+								if (that.$base.Userres.partner != null) {
+									if (that.$base.Userres.partner.level == 1) {
+										setTimeout(() => {
+											uni.navigateTo({
+												url: 'city-agent',
+											})
+											uni.hideLoading();
+										}, 500);
+									} else if (that.$base.Userres.partner.level == 2) {
+										setTimeout(() => {
+
+											uni.navigateTo({
+												url: 'home',
+											});
+											uni.hideLoading();
+										}, 500);
+
+									} else {
+										setTimeout(() => {
+
+											uni.navigateTo({
+												url: 'home',
+											});
+											uni.hideLoading();
+										}, 500);
+									}
+								} else {
+									setTimeout(() => {
+										uni.navigateTo({
+											url: 'index',
+										})
+
+										uni.hideLoading();
+									}, 500);
+								}
+							}
+						}).catch(err => {
+							//console.log(err)
+							if (err.data.openid) {
+								uni.setStorageSync('openid', err.data.openid)
+							}
+							uni.navigateTo({
+								url: 'login',
+							});
+						})
+					},
+					fail: (err) => {
+						//console.error('授权登录失败:' + JSON.stringify(err));
+					}
+				});
+			},
+
+			//监听网络状态
+			networkManage() {
+				wx.getNetworkType({
+					success: function(res) {
+						if (res.networkType == 'none') {
+							uni.showToast({
+								title: '网络似乎不太顺畅',
+								icon: 'none',
+								duration: 2000
+							});
+						}
+					}
+				})
+			},
+
+			//手机壳小程序
+			toPhoneApplet() {
+				var url = Env.getBaseURL();
+				var envVersionName = "trial";
+				if (url.indexOf("colorpark") != -1) {
+					envVersionName = "release";
+				}
+				
+				wx.navigateToMiniProgram({
+					appId: 'wxdca8810ccd426633',
+					path: 'pages/index/start-up?machine_id=' + this.machine_id,
+					envVersion: envVersionName,
+					success(res) {
+
+					},fail(res){
+						
+						//console.log(res)
+						
+					}
+				})
+			},
+
+
+			//T恤小程序
+			toTApplet() {
+				var url = Env.getBaseURL();
+				var envVersionName = "trial";
+				if (url.indexOf("colorpark") != -1) {
+					envVersionName = "release";
+				}
+				wx.navigateToMiniProgram({
+					appId: 'wx629579ec2f3cb8d4',
+					path: 'pages/mall/machineDetail?machine_id=' + this.machine_id,
+					envVersion: envVersionName,
+					success(res) {
+
+					}
+				})
+			},
+
+
+			//高尔夫小程序
+			toGolfApplet() {
+				var url = Env.getBaseURL();
+				var envVersionName = "trial";
+				if (url.indexOf("colorpark") != -1) {
+					envVersionName = "release";
+				}
+				wx.navigateToMiniProgram({
+					appId: 'wx90d72bea4d5222b6',
+					path: 'pages/mall/machineDetail?machine_id=' + this.machine_id,
+					envVersion: envVersionName,
+					success(res) {
+
+					}
+				})
+			},
+
+
+			//Plus小程序
+			toPlusApplet() {
+				var url = Env.getBaseURL();
+				var envVersionName = "trial";
+				if (url.indexOf("colorpark") != -1) {
+					envVersionName = "release";
+				}
+				wx.navigateToMiniProgram({
+					appId: 'wx4fbb04b6a8c55b06',
+					path: 'pages/mall/machineDetail?machine_id=' + this.machine_id,
+					envVersion: envVersionName,
+					success(res) {
+
+					}
+				})
+			},
+
+
+			//烘焙小程序
+			toBakingApplet() {
+				var url = Env.getBaseURL();
+				var envVersionName = "trial";
+				if (url.indexOf("colorpark") != -1) {
+					envVersionName = "release";
+				}
+				wx.navigateToMiniProgram({
+					appId: 'wx1f880e9650ae72ac',
+					path: 'pages/index/machineDetail?machine_id=' + this.machine_id,
+					envVersion: envVersionName,
+					success(res) {
+
+					}
+				})
+			},
+
+			//Lite小程序
+			toLiteApplet() {
+				var url = Env.getBaseURL();
+				var envVersionName = "trial";
+				if (url.indexOf("colorpark") != -1) {
+					envVersionName = "release";
+				}
+				wx.navigateToMiniProgram({
+					appId: 'wx1c777ee874c39b0b',
+					path: 'pages/index/machineDetail?machine_id=' + this.machine_id,
+					envVersion: envVersionName,
+					success(res) {
+
+					}
+				})
+			},
+
+            //返回当前小程序
+            toBackCurrentProgram(){
+				uni.exitMiniProgram({
+					success: function() {
+						//console.log('退出小程序成功');
+					},
+					fail: function(err) {
+
+					}
+				}) 
+			},
+
+			//设备详情进来登录处理  
+			//code: "0  直接进去
+			//101-103直接报错提示了。
+			//104-105就到登陆页。
+			//106就也是提示无访问权限进入。
+			machineLogin() {
+				var that = this
+				uni.login({
+					provider: 'weixin',
+					success: (res) => {
+						logoservice.login({
+							m: 'Init/checkAdminAuth',
+							code: res.code,
+							machine_id: this.machine_id,
+							partner_id: this.partner_id
+						}).then(result => {
+							that.$base.Userres = result //记录用户登录信息
+							if (result.openid) {
+								uni.setStorageSync('openid', result.openid)
+							}
+							logoservice.setwixinInfo(result);
+							uni.setStorageSync('openid', result.openid)
+							uni.setStorageSync('token', result.token)
+							let code = result.code;
+							that.code = code;
+							if ("0" == code) { //直接调转设备页面
+
+								setTimeout(function() {
+									uni.reLaunch({
+										url: '../mall/eq-details-new?id=' + that
+											.machine_id +
+											"&isShowBack=false",
+									});
+								}, 500)
+
+							} else if ("101" == code || "102" == code || "103" == code) {
+								uni.showToast({
+									title: result.msg,
+									icon: 'none',
+									duration: 2000
+								});
+
+							} else if ("104" == code || "105" == code) { //登陆页
+								uni.reLaunch({
+									url: 'login?machine_id=' + that.machine_id,
+								});
+
+							} else if ("106" == code) { //提示错误信息
+								uni.showToast({
+									title: "无访问权限进入",
+									icon: 'none',
+									duration: 2000
+								});
+							}
+							//console.log(result)
+						}).catch(err => {
+							that.code = "106"
+							uni.showToast({
+								title: "无访问权限进入",
+								icon: 'none',
+								duration: 2000
+							});
+							//console.log(err)
+							/* if (err.data.openid) {
+								uni.setStorageSync('openid', err.data.openid)
+							} */
+						})
+					},
+					fail: (err) => {
+
+					}
+				});
+			},
+
+		},
+
+		onLoad(options) {
+			if (options.partner_id) {
+				this.partner_id = options.partner_id
+				this.machine_id = options.machine_id
+				this.typeIn = 1;
+				this.machineLogin();
+				this.appletType = options.appletType
+
+			} else {
+				this.typeIn = 0;
+			}
+			console.log(this.typeIn)
+
+		},
+
+		onShow() {
+			this.networkManage();
+		},
+
+		// 分享转发
+		onShareAppMessage(options) {
+			var that = this;
+			// 设置转发内容
+			var shareObj = {
+				title: '色彩公园代理中心',
+				path: '/pages/index/start-up', // 默认是当前页面,必须是以‘/’开头的完整路径
+				imageUrl: '', //转发时显示的图片路径,支持网络和本地,不传则使用当前页默认截图。
+				success: function(res) { // 转发成功之后的回调     
+					if (res.errMsg == 'shareAppMessage:ok') {}
+				}
+			};
+			return shareObj;
+		},
+
+		onShareTimeline() {
+			return {
+				title: '色彩公园代理中心',
+				path: '/pages/index/start-up',
+				imageUrl: '',
+				query: 'kjbfrom=pyq'
+			}
+		},
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.start {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+
+		.start_img {
+			width: 218upx;
+			height: 179upx;
+			display: block;
+			margin: 0 auto 26upx;
+		}
+
+		.start_title {
+			height: 34upx;
+			font-size: 36upx;
+			font-weight: 400;
+			color: rgba(51, 51, 51, 1);
+			line-height: 20upx;
+			text-align: center;
+		}
+
+		.start_div {
+			margin: 122upx 99upx 0;
+
+			.start_text {
+				font-size: 28upx;
+				font-weight: 400;
+				color: rgba(51, 51, 51, 1);
+				line-height: 36upx;
+			}
+		}
+
+		.footer {
+			position: fixed;
+			bottom: 20upx;
+			width: 100%;
+
+			.footer_but {
+				width: 80%;
+				margin: 0upx auto 0;
+				color: #fff;
+				height: 88upx;
+				text-align: center;
+				line-height: 88upx;
+				background: rgba(92, 230, 182, 1);
+				border-radius: 10upx;
+			}
+
+			.footer_but_text {
+				text-align: center;
+				line-height: 80upx;
+			}
+		}
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/abount-machine.vue b/pages/mall/abount-machine.vue
new file mode 100644
index 0000000..407a4fe
--- /dev/null
+++ b/pages/mall/abount-machine.vue
@@ -0,0 +1,857 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width" v-if="list">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%;">
+
+				<view class="order-list" v-if="list">
+
+					<view class="item-new-list">
+						<view class="item full-width" @click="updateName()">
+							<label class="text content-color">名称</label>
+							<label class="value content-color">
+								<text style="text-align: right;margin-top: 7upx;"
+									class="full-width">{{list.code}}</text>
+								<label class="fa fa-angle-right align-right sub-color"
+									style="margin-top: -2upx;"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">出厂时间</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{(list.create_time)}}
+								</view>
+							</label>
+						</view>
+						<view class="item full-width">
+							<label class="text content-color">保障剩余时间</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.safeguard_time }}天
+								</view>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width" @click="showPicker()" >
+							<label class="text content-color">店铺</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width"
+									v-if="list.shop_id">{{category(list.shop_id)}}</view>
+								<view style="text-align: right; color: #888888; line-height: 50upx;" class="full-width"
+									v-if="!list.shop_id">没有关联店铺</view>
+								<label class="fa fa-angle-right align-right sub-color"></label>
+							</label>
+						</view>
+						<view class="item full-width">
+							<label class="text content-color">设备地址</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{categoryaddress(list.shop_id)}}
+								</view>
+							</label>
+						</view>
+					</view>
+
+
+
+					<!-- <view class="item full-width" @click="showPicker()"
+						style=" border-top: 1upx solid #f6f6f6;padding-top: 10upx;margin-top: 5upx;">
+						<label class="text content-color">店铺</label>
+						<label class="value content-color">
+							<view style="text-align: right;line-height: 50upx;" class="full-width"
+								v-if="list.shop_id">{{category(list.shop_id)}}</view>
+							<view style="text-align: right; color: #888888; line-height: 50upx;" class="full-width"
+								v-if="!list.shop_id">没有关联店铺</view>
+							<label class="fa fa-angle-right align-right sub-color"></label>
+						</label>
+					</view> -->
+
+
+					<view class="item-new-list" style="margin-top: 30upx;">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{queryPage.machine_id}}
+								</view>
+							</label>
+						</view>
+						<view class="item full-width">
+							<label class="text content-color">客户</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">瑞丰彩
+								</view>
+							</label>
+						</view>
+						<view class="item full-width">
+							<label class="text content-color">类型</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.goods_category}}
+								</view>
+							</label>
+						</view>
+					
+						<view class="item full-width">
+							<label class="text content-color">软件版本</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.pc_version}}
+								</view>
+							</label>
+						</view>
+						<view class="item full-width">
+							<label class="text content-color">最大打印尺寸</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.machine_size_name}}
+								</view>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">二维码</label>
+							<label class="value content-color">
+								<input type="text" disabled="disabled" class="full-width" />
+								<image @click.stop="showPreviewImage(list.h5_code,list.id)"
+									v-if="list.h5_code !='' && list.h5_code " :src="list.h5_code " mode="aspectFit"
+									style="width:80upx; height:80upx; border-radius:10upx; display: block; float: right;margin-top: -5upx;">
+								</image>
+								<image @click.stop="showPreviewImage(list.min_code,list.id)" v-if="list.min_code"
+									:src="list.min_code " mode="aspectFit"
+									style="width:80upx; height:80upx; border-radius:10upx; display: block; float: right;margin-top: -5upx; margin-left: 25upx;">
+								</image>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list" @click="maintenanceManual()">
+						<view class="item full-width">
+							<label class="text content-color">查看机器使用手册</label>
+							<label class="value content-color">
+								<text style="text-align: right;margin-top: 5upx;" class="full-width"></text>
+								<label class="fa fa-angle-right align-right sub-color"
+									style="margin-top: -3upx;"></label>
+							</label>
+						</view>
+					</view>
+
+				</view>
+			</view>
+		</view>
+	</view>
+
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true,
+				isShowPullButtom: false,
+				isOnclickItem: false,
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [],
+				StcokLists: [],
+				list: null,
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null,
+					month: null,
+					year: null,
+					is_excess: null,
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				showshareitem: null,
+				showshareindex: null,
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				isShowPop: false,
+
+			};
+		},
+
+		methods: {
+			
+			
+			maintenanceManual() {
+				uni.showToast({
+					title: '即将开放',
+					icon: 'none'
+				});
+			},
+
+			//店铺
+			showPicker(item) {
+				uni.navigateTo({
+					url: '../mall/relevance-shop?machineid=' + this.list.id,
+				});
+			},
+		
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+
+			categoryaddress(address) {
+				var dataaddress = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == address) {
+							dataaddress = item.address.replace('<br/>', '');
+						}
+					});
+				}
+				return dataaddress
+			},
+
+			//修改名称
+			updateName() {
+				uni.navigateTo({
+					url: '../mall/update_name?machineid=' + this.queryPage.machine_id + "&code=" + this.list.code,
+				});
+			},
+
+			//获取相差天数
+			getDaysDifference(time) {
+				try {
+					let day = new Date(time.replace(/-/g, "/")).getTime() - new Date().getTime(); //日期转时间戳
+					let dayCount = Math.floor(day / 86400000); //时间戳获取天数
+					return dayCount;
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//预览显示图片
+			showPreviewImage(e, id) {
+				if (e == null || e == "") {
+					uni.showToast({
+						title: '暂时没有定制二维码',
+						icon: 'none'
+					});
+					return
+				}
+				var current = e + "?x-oss-process=image/watermark,text_" + this.getStrToBase64(id) +
+					",g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a"; //这里获取到的是一张本地的图片
+				uni.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+
+			//格式化时间
+			dateFormat(time) {
+				try {
+					var dt = new Date(time.replace(/-/g, '/'));
+					var y = dt.getFullYear();
+					var m = dt.getMonth() + 1;
+					var d = dt.getDate();
+					return y + '年' + m + '月' + d + '日';
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				if (time == undefined) {
+					return "";
+				}
+				return time;
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//获取底部弹框数据
+			loadStockGoodsList(goods_name) {
+				logoservice.MachineStockGoodsList({
+					m: 'Machine/getStockGoodsList',
+					machine_id: this.queryPage.machine_id,
+					goods_name: goods_name,
+				}).then(result => {
+					this.GoodsItem = result;
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+		
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//设备打印信息 加载数据
+			loadGoodsList(direction) {
+
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+
+		},
+
+		onPullDownRefresh() {
+
+		},
+
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+			this.listdetail();
+			this.machineGetShopList()
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 320upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 130upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/arrive-good.vue b/pages/mall/arrive-good.vue
new file mode 100644
index 0000000..be667e6
--- /dev/null
+++ b/pages/mall/arrive-good.vue
@@ -0,0 +1,599 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content" v-if="long"
+				style="padding-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+
+				<view class="order-list">
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">型号功能仅对部分机型有效。开启对应的型号,设备即可实现当前商品的定制</view>
+					<view class="item-new-list">
+						<view v-for="(item, index) in list" :key="index">
+							<view class="item full-width" >
+								<label class="text content-color"  style="min-width: 400upx;">{{item.name}}</label>
+								<switch :checked="item.flag == 1 ? true :false" @change="onSwitchChange($event,item)"
+									class="item-new-list-switch" />
+							</view>
+						</view>
+					</view>
+
+
+				</view>
+
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true,
+				isShowPullButtom: false,
+				isOnclickItem: false,
+				list: null,
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null,
+					month: null,
+					year: null,
+					is_excess: null,
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+
+				isShowPop: false,
+			};
+		},
+
+		methods: {
+
+			//开关修改
+			onSwitchChange(e, item) {
+				if (e.detail.value == true) {
+					item.flag = 1;
+					uni.showLoading({
+						title: '开启中...'
+					})
+				} else {
+					item.flag = 0;
+					uni.showLoading({
+						title: '关闭中...'
+					})
+				}
+				logoservice.Machinestatus({
+					m: 'Machine/relationGoodsSave',
+					machine_id: this.queryPage.machine_id,
+					goods_id: item.id,
+				}).then(result => {
+					uni.hideLoading();
+					if (e.detail.value == true) {
+						uni.showToast({
+							title: '开启成功'
+						})
+					} else {
+						uni.showToast({
+							title: '关闭成功'
+						})
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+					if (e.detail.value == true) {
+						item.flag = 0;
+					} else {
+						item.flag = 1;
+					}
+				})
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			goodList() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/relationGoods',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.hideLoading();
+					this.list = result
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+		},
+
+		onPullDownRefresh() {
+
+		},
+
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			this.queryPage.machine_id = options.machineid
+			this.goodList();
+		},
+
+		onShow() {
+
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/auxiliary-use.vue b/pages/mall/auxiliary-use.vue
new file mode 100644
index 0000000..194db96
--- /dev/null
+++ b/pages/mall/auxiliary-use.vue
@@ -0,0 +1,778 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="padding-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+
+				<view class="order-list" v-if="list">
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">启用对应功能,可对设备开启相应功能,以便更好体验设备</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">官方图库</label>
+							<switch :checked="isPublic" @change="onSwitchChange($event,1)"
+								class="item-new-list-switch" />
+						</view>
+						<view class="item full-width">
+							<label class="text content-color">图片隐私保护</label>
+							<switch :checked="isPrivacy" @change="onSwitchChange($event,2)"
+								class="item-new-list-switch" />
+						</view>
+						<view class="item full-width">
+							<label class="text content-color">图片上传</label>
+							<switch :checked="isdiyUploadMenu" @change="onSwitchChange($event,3)"
+								class="item-new-list-switch" />
+						</view>
+
+						<view v-if="detail.used_applets == 6 || detail.used_applets == 8" class="item full-width">
+							<label class="text content-color">自定义尺寸</label>
+							<switch :checked="isCustomizeSize" @change="onSwitchChange($event,4)"
+								class="item-new-list-switch" />
+						</view>
+					</view>
+
+
+<!-- //2:色彩公园,3:色彩公园T恤,4:色彩公园手机壳,5:高尔夫,6:色彩Plus,7 色彩Lite(通用版) ,8 烘焙食品' -->
+					<view class="item-new-list-text">以上功能支持所有版本。</view>
+
+   
+
+					<view class="item-new-list" v-if="detail.used_applets == 3 || detail.used_applets == 4 || detail.used_applets == 5">
+						<view class="item full-width" v-if="detail.used_applets == 3 || detail.used_applets == 4">
+							<label class="text content-color" >配送下单</label>
+							<switch :checked="isDelivery" @change="onSwitchChange($event,5)"
+								class="item-new-list-switch" />
+						</view>
+						<!-- v-if="detail.used_applets == 3 || detail.used_applets == 4 || detail.used_applets == 5 " -->
+						<view class="item full-width">
+							<label class="text content-color">微信支付</label>
+							<switch :checked="isSupportPay" @change="onSwitchChange($event,6)"
+								class="item-new-list-switch" />
+						</view>
+					</view>
+
+					<view class="item-new-list-text" v-if="detail.used_applets == 3 || detail.used_applets == 4 || detail.used_applets == 5">
+						以上功能仅支持微信小程序。如未配置微信商户收款信息,将默认官方统一收款(需要配置微信商户收款可联系专属客服)。</view>
+
+					<view class="item-new-list" v-if=" detail!=null && detail.h5_code != null && detail.h5_code != '' ">
+						<view  class="item full-width"
+							@click="supportLanguage()">
+							<label class="text content-color">支持语言</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.language_total}}
+								</view>
+								<label class="fa fa-angle-right align-right sub-color"></label>
+							</label>
+						</view>
+
+						<view class="item full-width"
+							@click="defaultLanguage()">
+							<label class="text content-color">默认语言</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.machine_language_default ? list.machine_language_default : "" }}
+								</view>
+								<label class="fa fa-angle-right align-right sub-color"></label>
+							</label>
+						</view>
+
+						<view 
+							class="item full-width">
+							<label class="text content-color">自动登录</label>
+							<switch :checked="isAutoRegister" @change="onSwitchChange($event,7)"
+								class="item-new-list-switch" />
+						</view>
+
+						<view
+							class="item full-width">
+							<label class="text content-color">贝宝支付</label>
+							<switch :checked="isSupportPaypal" @change="onSwitchChange($event,8)"
+								class="item-new-list-switch" />
+						</view>
+
+						<view
+							
+							class="item full-width">
+							<label class="text content-color">海外配送</label>
+							<switch :checked="isSupportOversea" @change="onSwitchChange($event,9)"
+								class="item-new-list-switch" />
+						</view>
+
+					</view>
+
+					<view class="item-new-list-text"  v-if=" detail!=null && detail.h5_code != null && detail.h5_code != '' " >以上功能仅支持H5(Web)。开启贝宝支付必须联系专属客户提前配置收款基础参数。</view>
+
+				</view>
+
+			</view>
+		</view>
+
+	</view>
+
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				is_public: 1,
+				privacy: 0,
+				diy_upload_menu: 1,
+				customize_size: 0,
+				delivery: 0,
+				support_pay: 0,
+				auto_register: 0,
+				support_paypal: 1,
+				support_oversea: 0,
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+				},
+				isPublic: false,
+				isPrivacy: false,
+				isdiyUploadMenu: false,
+				isCustomizeSize: false,
+				isDelivery: false,
+				isSupportPay: false,
+				isAutoRegister: false,
+				isSupportPaypal: false,
+				isSupportOversea: false,
+				list: null,
+				status_name: null,
+				machine_language_list: [],
+				machine_category_id: null, //63 自助机
+				detail: null,
+			};
+		},
+
+		methods: {
+
+			getSwitchCheck(type, isCheck) {
+				switch (type) {
+					case 1:
+						this.status_name = "is_public";
+						this.isPublic = isCheck
+						break;
+					case 2:
+						this.status_name = "privacy";
+						this.isPrivacy = isCheck
+						break;
+					case 3:
+						this.status_name = "diy_upload_menu";
+						this.isdiyUploadMenu = isCheck
+						break;
+					case 4:
+						this.status_name = "customize_size";
+						this.isCustomizeSize = isCheck
+						break;
+					case 5:
+						this.status_name = "delivery";
+						this.isDelivery = isCheck
+						break;
+					case 6:
+						this.status_name = "support_pay";
+						this.isSupportPay = isCheck
+						break;
+					case 7:
+						this.status_name = "auto_register";
+						this.isAutoRegister = isCheck
+						break;
+					case 8:
+						this.status_name = "support_paypal";
+						this.isSupportPaypal = isCheck
+						break;
+					case 9:
+						this.status_name = "support_oversea";
+						this.isSupportOversea = isCheck
+						break;
+				}
+			},
+
+			//设备锁定
+			onSwitchChange(e, type) {
+				if (e.detail.value == true) {
+					this.getSwitchCheck(type, true)
+					uni.showLoading({
+						title: '开启中...'
+					})
+				} else {
+					this.getSwitchCheck(type, false)
+					uni.showLoading({
+						title: '关闭中...'
+					})
+				}
+				logoservice.Machinestatus({
+					m: 'Machine/UpdateStatus',
+					machine_id: this.queryPage.machine_id,
+					status_name: this.status_name,
+				}).then(result => {
+					uni.hideLoading();
+					if (e.detail.value == true) {
+						uni.showToast({
+							title: '开启成功'
+						})
+					} else {
+						uni.showToast({
+							title: '关闭成功'
+						})
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+					if (e.detail.value == true) {
+						this.getSwitchCheck(type, false)
+					} else {
+						this.getSwitchCheck(type, true)
+					}
+				})
+			},
+
+			defaultLanguage() {
+				uni.navigateTo({
+					url: '../mall/default_language?machineid=' + this.queryPage.machine_id + "&param=" + JSON
+						.stringify(this.list)
+				});
+			},
+
+			supportLanguage() {
+				uni.navigateTo({
+					url: '../mall/support_language?machineid=' + this.queryPage.machine_id + "&param=" + JSON
+						.stringify(this.list)
+				});
+			},
+
+			//获取状态
+			getStatus() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/auxiliaryFunctions',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					uni.hideLoading();
+					this.list = result
+					this.machine_language_list = this.list.machine_language_list
+					if (this.list.machine_language_default == undefined || this.list.machine_language_default ==
+						null) {
+						this.list.machine_language_default = ""
+					}
+					this.isPublic = this.list.is_public == 1 ? true : false;
+					this.isPrivacy = this.list.privacy == 1 ? true : false;
+					this.isdiyUploadMenu = this.list.diy_upload_menu == 1 ? true : false;
+					this.isCustomizeSize = this.list.customize_size == 1 ? true : false;
+					this.isDelivery = this.list.delivery == 1 ? true : false;
+					this.isSupportPay = this.list.support_pay == 1 ? true : false;
+					this.isAutoRegister = this.list.auto_register == 1 ? true : false;
+					this.isSupportPaypal = this.list.support_paypal == 1 ? true : false;
+					this.isSupportOversea = this.list.support_oversea == 1 ? true : false;
+
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.detail = result[0]
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+
+		},
+
+		onPullDownRefresh() {
+
+		},
+
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.machine_category_id = options.machine_category_id
+			this.getStatus();
+			this.listdetail();
+		},
+
+		//this.list.machine_category_id
+		onShow() {
+			this.getStatus();
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/clean-nozzle-detection.vue b/pages/mall/clean-nozzle-detection.vue
new file mode 100644
index 0000000..a1e5924
--- /dev/null
+++ b/pages/mall/clean-nozzle-detection.vue
@@ -0,0 +1,722 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="padding-bottom:  20upx;  width: 100%;height: 100%; background: #fff;">
+
+				<view class="order-list">
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">状态</label>
+
+							<label class="value content-color" v-if="list.flag.value == 'Y'">
+								<text v-if="list.status.value == 0" style="text-align:right; color: #808080;"
+									class="full-width">离线</text>
+								<text v-if="list.status.value == 1 || list.status.value == 2 "
+									style="text-align:right; color: #5CE6B5;" class="full-width">在线</text>
+								<text v-if="list.status.value == 3 || list.status.value == 4 || list.status.value == 5 "
+									style="text-align:right; color: #D43030;" class="full-width">故障</text>
+							</label>
+
+							<label class="value content-color" v-if="list.flag.value == 'N'">
+								<text  style="text-align:right; color: #FF8D1A;"
+									class="full-width">锁定</text>
+							</label>
+						</view>
+					</view>
+
+
+
+					<view class="item-new-list">
+
+						<text style="color: #DB4F4F; font-size: 30upx;
+						width: 100%; text-align: center; margin-top: 60upx; font-weight: 800;"> 喷嘴检测功能正在实现</text>
+
+						<text style="color: #00; font-size: 26upx;
+						margin-top: 50upx; margin-left: 20upx;">您可以在设备前置操作面版,按置“喷嘴检测”,机器将自动完成检测操作。</text>
+
+						<text style="color: #00; font-size: 26upx;
+						margin-top: 30upx; margin-left: 20upx;">检测前,需在平台平整放置一张空白纸张。</text>
+
+						<image style=" width: 600upx; margin: auto; margin-top: 0upx;" mode="aspectFit"
+							src="https://img.colorpark.cn/back/169811966765373ff354908.png" />
+					</view>
+
+
+					<view class="item-new-list-text">喷嘴检测是机器日常保养必要操作。具体操作如不明白不联系您的专属客服。</view>
+
+					<!-- <view class="item-new-list" style="background:#A49D93 ; padding-top: 40upx; padding-bottom: 40upx;">
+						<image style="width: 600upx; margin: auto; margin-top: 20upx;"  mode="aspectFit"  src="https://img.xiaopiu.com/userImages/img22500018b4741a3b0.png"/>
+					</view> -->
+
+				</view>
+			</view>
+
+			<!-- <view class="item-new-list-text" style="margin-top: 30upx;">喷嘴检测是机器日常保养的必要操作。机器必须通电,且有正常连接网络,才能完成远程喷嘴检测操作。</view>
+
+			<view class="save_bt" @click="cleanNozzleDetection()">喷嘴检测</view> -->
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: null, //货道数据
+				stockData: null, //库存数据
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				oldMousePos: {},
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartClean: false, //是否自动清洗开始
+				shop_id: null
+			};
+		},
+
+		methods: {
+
+			cleanNozzleDetection() {
+
+			},
+
+			//清洗历史记录
+			cleanNozzleHistory() {
+				uni.navigateTo({
+					url: "/pages/mall/clean-nozzle-history?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//保存店铺
+			saveShop() {
+
+			},
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			//确定
+			onConfirm(e) {
+				this.shop_id = e.value[0];
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						this.shop_id = this.list.shop_id
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+
+		},
+
+		//上拉加载
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+			//this.machineGetShopList();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+		display: flex;
+		flex-direction: column;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/clean-nozzle-history.vue b/pages/mall/clean-nozzle-history.vue
new file mode 100644
index 0000000..f3326fb
--- /dev/null
+++ b/pages/mall/clean-nozzle-history.vue
@@ -0,0 +1,582 @@
+<template>
+	<view class="order full-height full-width">
+		<view class="uni-tab-bar full-width">
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+
+				<view class="order-list">
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+
+
+
+					<view class="item-new-list" v-if="list">
+						<view v-for="(item, index) in list" :key="index">
+							<view class="item full-width">
+								<label class="text content-color">{{item.create_time}}</label>
+								<label class="value content-color">
+									<text v-if="item.status.value == 0" style="text-align: right; color: #E72C31;"
+										class="full-width"> 失败</text>
+									<text v-if="item.status.value == 1" style="text-align: right; color: #5CE6B5;"
+										class="full-width"> 成功</text>
+								</label>
+							</view>
+						</view>
+					</view>
+					<view class="item-new-list" v-if="list.length == 0 && long">
+						<view style="height: 140upx;  text-align: center;  width: 100%; line-height: 140upx; ">暂时还没清洗日志
+						</view>
+					</view>
+
+
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'NozzleCleanLog/list',
+					machine_id: null,
+				},
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				shop_id: null,
+				long: false,
+				list:[],
+
+			};
+		},
+
+		methods: {
+
+
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'NozzleCleanLog/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					uni.hideLoading();
+					this.long = true
+					this.list = result.data
+				}).catch(err => {
+					this.long = true
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//格式化时间
+			dateFormat(time) {
+				try {
+					var dt = new Date(time.replace(/-/g, '/'));
+					var y = dt.getFullYear();
+					var m = dt.getMonth() + 1;
+					var d = dt.getDate();
+					return y + '年' + m + '月' + d + '日';
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				if (time == undefined) {
+					return "";
+				}
+				return time;
+			},
+
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+
+		},
+
+		//上拉加载
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 400upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 160upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/clean-nozzle.vue b/pages/mall/clean-nozzle.vue
new file mode 100644
index 0000000..456165d
--- /dev/null
+++ b/pages/mall/clean-nozzle.vue
@@ -0,0 +1,939 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				 style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+				<!-- 机器 -->
+				<view class="order-list">
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list"  v-if="list">
+						<view class="item full-width">
+							<label class="text content-color">状态</label>
+							<label class="value content-color"   v-if="list.flag.value == 'Y'">
+								<text v-if="list.status.value == 0" style="text-align:right; color: #808080;"
+									class="full-width">离线</text>
+								<text v-if="list.status.value == 1 || list.status.value == 2 " style="text-align:right; color: #5CE6B5;"
+									class="full-width">在线</text>
+								<text v-if="list.status.value == 3 || list.status.value == 4 || list.status.value == 5 " style="text-align:right; color: #D43030;"
+									class="full-width">故障</text>
+							</label>
+							<label class="value content-color"  v-if="list.flag.value == 'N'">
+								<text  style="text-align:right; color: #FF8D1A;"
+									class="full-width">锁定</text>
+							</label>
+						</view>
+
+						<view class="item full-width" @click="cleanNozzleHistory()">
+							<label class="text content-color">最后清洗</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{ list.clear_time != null ? list.clear_time : "" }}</view>
+								<label class="fa fa-angle-right align-right sub-color"></label>
+							</label>
+						</view>
+					</view>
+
+
+					<view style="margin-top: 30upx;
+					border-radius: 20upx;
+					width: calc(100% - 60upx);			
+					background: #fff;
+					margin: 0upx 30upx 10upx 30upx;
+					border-radius: 20upx;
+					box-shadow: 0 0 10upx 10upx #F5F5F5;">
+						<img src="https://img.colorpark.cn/back/169811951965373f5f53498.png"
+							style="width: 300upx;margin: auto; display: block;" mode="aspectFit">
+					</view>
+
+				</view>
+			</view>
+			
+			<view class="item-new-list-text" style="margin-top: 30upx;">清洗喷头是防止喷头堵塞和填充缺失墨水的必要操作。机器必须通电,且有正常连接网络,才能完成远程清洗喷头操作</view>
+
+			<view class="save_bt" @click="saveCleanNozzle()"  v-if="list"
+			 :style="{background: list.status.value == 0 ? '#999' : '#191931' }" >清洗喷头</view>
+
+			<uni-popup ref="cleanCountDown" type="bottom" :maskClick="false">
+				<view style="width: 100%; height: 600upx; margin: auto;">
+					<view style="background: #F9F9F9;width: 100%; height: 100%; border-radius: 20upx  20upx  0upx 0upx;
+					align-items: center;
+					display: flex;
+					flex-direction: column;">
+						<view
+							style="margin-top:220upx;  color: rgba(67, 207, 124, 1);  font-size: 60upx;  font-weight: 800 ">
+							{{countDownTimeCount}}
+						</view>
+						<view style="margin-top: 80upx; font-size: 26upx; color: #999; ">请稍后 </view>
+						<view style="margin-top: 20upx; font-size: 26upx; color: #999; "> 正在清洗中,预计需要一分钟</view>
+					</view>
+				</view>
+			</uni-popup>
+
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: null, //货道数据
+				stockData: null, //库存数据
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				oldMousePos: {},
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartClean: false, //是否自动清洗开始
+				shop_id: null,
+				isClickClean:false,
+			};
+		},
+
+		methods: {
+
+			//清洗历史记录
+			cleanNozzleHistory() {
+				uni.navigateTo({
+					url: "/pages/mall/clean-nozzle-history?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//添加店铺
+			addShop() {
+				uni.navigateTo({
+					url: "/pages/store/shopdetails"
+				})
+			},
+
+
+			//清洗喷头
+			saveCleanNozzle() {
+				if(this.list.status.value == 0){
+					uni.showToast({
+						title: "打印机离线",
+						duration: 1000,
+						 icon: 'error' 
+					})
+					return;
+				}
+				if (this.isClickClean) {
+					return;
+				}
+				this.isClickClean = true;
+
+				uni.showLoading({
+					title: '清洗中...',
+				})
+				this.intCountTimer = 0;
+				this.countDownTimeCount = 1;
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/clearHead',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.autoClick()
+				}).catch(err => {
+					this.cleanTimeData();
+					uni.showToast({
+						title: err.msg,
+						duration: 1000,
+						icon: "none",
+					})
+				})
+			},
+
+
+			//5秒一次定时器
+			autoClick() {
+				this.$refs['cleanCountDown'].open();
+				this.isAutoStartClean = true;
+				let that = this;
+				this.timer = setInterval(function() {
+					that.getCleanStatus();
+				}, 5000);
+				this.countDownTime = setInterval(function() {
+					that.countDownTimeCount++;
+				}, 1000);
+			},
+			
+			
+			//获取状态值
+			getCleanStatus() {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/getClearHeadStatus',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					if (this.countDownTimeCount >= 60) {
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+					let clear_status = result.clear_status.value;
+					if (clear_status == 0) {
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+				}).catch(err => {
+			
+				})
+			},
+			
+			
+			//清除计时器数据
+			cleanTimeData() {
+				this.isAutoStartClean = false;
+				clearInterval(this.timer);
+				this.timer = null;
+				clearInterval(this.countDownTime);
+				this.countDownTime = null;
+				this.intCountTimer = 0;
+				this.isClickClean = false;
+				uni.hideLoading();
+				this.$refs['cleanCountDown'].close();
+				this.countDownTimeCount = 1;
+			},
+
+			//获取店铺名称
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+			//店铺
+			showPicker(item) {
+				this.pickerValueArray = this.shopList
+				this.pickerValueArray.filter(item => {
+					item.label = item.short_name
+					item.value = item.id
+				});
+				this.$refs.mpvuePicker.show();
+			},
+
+			//确定
+			onConfirm(e) {
+				this.shop_id = e.value[0];
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						this.shop_id = this.list.shop_id
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+
+		},
+
+		//上拉加载
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+			this.machineGetShopList();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/default_language.vue b/pages/mall/default_language.vue
new file mode 100644
index 0000000..63001f8
--- /dev/null
+++ b/pages/mall/default_language.vue
@@ -0,0 +1,597 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+
+				<view class="order-list">
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">启用对应功能,可对设备开启相应功能,以便更好体验设备</view>
+
+					<view class="item-new-list">
+						<view class="item full-width" style="margin-top: 5upx;" @click="showLanguage()">
+							<label class="text content-color">默认语言</label>
+							<label class="value content-color">
+								<view class="full-width" style="width: 320upx; 
+								 height: 50upx; 
+								 border-radius: 8upx;
+								 background: #fff; position: absolute;right: 30upx;
+								 margin-top: -25upx; ">
+									<view style=" color: #999;top: 10upx; width: 220upx;  
+									text-align: end; line-height: 50upx; display: flex; justify-content: flex-end;margin-left: 35upx;">{{languageName}}</view>
+									<span class="iconfont icon-xiala"
+										style="font-size: 20upx; color: #999; position: relative; float: right; right: 30upx;  margin-top: -35upx;"></span>
+								</view>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">仅对H5版本生效,开启对应的语言,设备定制端将支持当前语言</view>
+
+				</view>
+			</view>
+
+			<!-- 语言选择 -->
+			<mpvue-picker ref="mpvuePicker" :themeColor="'#53B2B0'" :mode="mode"
+				:pickerValueDefault="pickerValueDefault" @onChange="onChange" @onCancel="onCancel"
+				:pickerValueArray="pickerValueArray" @onConfirm="onConfirm">
+			</mpvue-picker>
+
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				param: null,
+				language_list: [], //语言列表
+				languageName: null,
+				
+			    selectEModel:null,
+				
+			};
+		},
+
+		methods: {
+
+
+			//选择语言
+			showLanguage(item) {
+				this.pickerValueArray = this.language_list
+				this.pickerValueArray.filter(item => {
+					item.label = item.title
+					item.value = item.machine_language_id
+				});
+				this.$refs.mpvuePicker.show();
+			},
+
+
+			onChange(e) {
+				
+				this.selectEModel = e;
+				
+				//console.log(e);
+			},
+
+			onCancel(e) {
+
+			},
+
+			//确定
+			onConfirm(e) {
+				var that = this;
+				uni.showLoading({
+					title: '加载中...'
+				})
+				setTimeout(function() { //延迟一定时间执行
+				    if(that.selectEModel != null){
+						e  = that.selectEModel
+					}
+					that.languageName = e.label
+					logoservice.Machinelistdetail({
+						m: 'Machine/defaultLanguageSave',
+						machine_id: that.queryPage.machine_id,
+						machine_language_id: e.value[0]
+					}).then(result => {
+						uni.hideLoading();
+						uni.showToast({
+							title: '修改语言成功',
+							icon: 'none'
+						});
+					}).catch(err => {
+						uni.hideLoading();
+						uni.showToast({
+							title: err.msg,
+							icon: 'none'
+						});
+					})
+				}, 3000);
+			}
+
+		},
+
+		onPullDownRefresh() {
+
+		},
+
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			this.queryPage.machine_id = options.machineid;
+			this.param = JSON.parse(options.param);
+			this.language_list = this.param.machine_language_list
+			// this.language_list.forEach((item, index) => {
+			// 	var pickerValue = {
+			// 		label: item.title,
+			// 		value: item.machine_language_id
+			// 	}
+			// 	//this.pickerValueArray.push(pickerValue)
+			// });
+			this.languageName = this.param.machine_language_default
+		},
+
+		onShow() {
+
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/eq-details-new.vue b/pages/mall/eq-details-new.vue
new file mode 100644
index 0000000..bdfdd35
--- /dev/null
+++ b/pages/mall/eq-details-new.vue
@@ -0,0 +1,2215 @@
+<template>
+	<view class="order full-height full-width">
+
+		<myhead :title="queryPage.machine_id" :color="'#000'" :titleShow="true" :backShow="isShowBack"
+			:background="'#F8F8F8'"></myhead>
+
+		<view v-if="!list&&long">
+			<view class="noData">
+				<image src="../../static/icon_guaqi.png" mode="aspectFill" class="noData_img"></image>
+				<view class="noData_title">
+					非常抱歉,您没有权限查阅当前打印站的信息!<br>
+				</view>
+				<!-- <view class="noData_but" @click="tomain()">返回</view> -->
+			</view>
+		</view>
+
+
+		<view class="uni-tab-bar full-width" v-if="list">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content" v-if="long"
+				style="padding-bottom: 20upx; background: #fff; height: 100%;">
+
+				<view
+					style="margin: auto; width: 100%; text-align: center; height: 30upx; line-height: 40upx; font-size: 28upx;">
+					{{list.goods_category}}
+				</view>
+
+
+				<vew class="eq-detail-top-layout">
+
+					<view class="left" v-if="!lockingStatus">
+						<view v-if="list.status.value == 0" class="status" style="background: #808080;">
+							离线
+						</view>
+						<view v-if="list.status.value == 1 || list.status.value == 2 " class="status"
+							style="background: #43CF7C;">
+							在线
+						</view>
+						<view v-if="list.status.value == 3 || list.status.value == 4 || list.status.value == 5 "
+							class="status" style="background: #D43030;">
+							故障
+						</view>
+					</view>
+
+					<view class="left" v-if="lockingStatus">
+						<view class="status" style="background: #FF8D1A;">
+							锁定
+						</view>
+					</view>
+
+					<view class="center">
+						<image :src="list.cover" mode="aspectFit" style="height: 250upx; " />
+						<view class="ink">
+							<view class="content">
+								<view class="ink-list-bc" style="border: 1upx solid #62C5F1;">
+									<view v-if="inkStatusC" style=" background: #62C5F1; " class="in"> </view>
+									<view v-if="!inkStatusC" style=" background: #62C5F1;height: 20upx;  " class="in">
+									</view>
+								</view>
+								<text class="text">C</text>
+							</view>
+							<view class="content">
+								<view class="ink-list-bc" style="border: 1upx solid #EE4FEFFF;">
+									<view v-if="inkStatusM" style="background: #EE4FEFFF;  " class="in"></view>
+									<view v-if="!inkStatusM" style=" background: #EE4FEFFF;height: 20upx;" class="in">
+									</view>
+								</view>
+								<text class="text">M</text>
+							</view>
+							<view class="content">
+								<view class="ink-list-bc" style="border: 1upx solid #F5EC60FF;">
+									<view v-if="inkStatusY" style=" background: #F5EC60FF;" class="in">
+									</view>
+									<view v-if="!inkStatusY" style=" background: #F5EC60FF;height: 20upx;" class="in">
+									</view>
+								</view>
+								<text class="text">Y</text>
+							</view>
+							<view class="content">
+								<view class="ink-list-bc" style="border: 1upx solid #4B4B4B;">
+									<view v-if="inkStatusK" style=" background: #4B4B4B; " class="in"></view>
+									<view v-if="!inkStatusK" style="background: #4B4B4B; height: 20upx;" class="in">
+									</view>
+								</view>
+								<text class="text">K</text>
+							</view>
+
+							<view class="content">
+								<view class="ink-list-bc" style="border: 1upx solid #BFBFBF; background:#BFBFBF ;">
+									<view v-if="inkStatusW" style=" background: #FFF;  " class="in"></view>
+									<view v-if="!inkStatusW" style="background: #FFF; height: 20upx;" class="in">
+									</view>
+								</view>
+								<text class="text">W</text>
+							</view>
+
+							<view class="content">
+								<view class="ink-list-bc" style="margin-top: 0upx;border: 1upx solid #A6A6A6;">
+									<!-- 	<view class="ink-list-bc" style="margin-top: 0upx; margin-bottom: -33upx;border: 1upx solid #A6A6A6;"> -->
+									<view v-if="!inkStatusHas" style="background: #A6A6A6;" class="in"></view>
+									<view v-if="inkStatusHas" style="background: #A6A6A6; height: 20upx;" class="in">
+									</view>
+								</view>
+								<!-- <view style=" position: relative; bottom: 28upx; left: 2upx;">
+									<image src="../../static/icon_rights_interests_cancel.png"
+										style="width: 15upx; height: 15upx;" mode="aspectFill"> </image>
+								</view> -->
+								<text class="text">废</text>
+							</view>
+						</view>
+					</view>
+
+					<view class="right" />
+
+				</vew>
+
+
+				<view class="order-list" style="width: 100%; height: 100%; ">
+					<view class="item-new-list-top" v-if=" machineErrors && machineErrors.ink_type == 0 ">
+						<view class="image">
+							<image v-if="machineErrors.ink_type == 0"
+								src="../../static/icon_rights_interests_cancel.png" style="height: 40upx;"
+								mode="aspectFit"></image>
+							<image v-if="machineErrors.ink_type == 1" src="../../static/icon_machine_ink_has.png"
+								style="height: 33upx;" mode="aspectFit"></image>
+						</view>
+						<view class="text">
+							<text
+								style="font-size: 25upx; color: #000; margin-bottom: 8upx;">{{machineErrors.ink_info}}</text>
+							<text>更新时间:{{dateFormat(machineErrors.ink_update_time)}}</text>
+						</view>
+						<view class="image" @click="getMchineErrors(0)">
+							<image src="../../static/icon_machine_load.png" style="height: 35upx;" mode="aspectFit">
+							</image>
+						</view>
+					</view>
+
+					<view class="item-new-list-top" v-if="machineErrors">
+						<view class="image">
+							<image v-if="machineErrors.status_type == 0"
+								src="../../static/icon_rights_interests_cancel.png" style="height: 40upx;"
+								mode="aspectFit"></image>
+							<image v-if="machineErrors.status_type == 1" src="../../static/icon_machine_right.png"
+								style="height: 38upx;" mode="aspectFit"></image>
+							<image v-if="machineErrors.status_type == 2"
+								src="../../static/icon_machine_status_close.png" style="height: 62upx;"
+								mode="aspectFit"></image>
+						</view>
+						<view class="text">
+							<text
+								style="font-size: 25upx; color: #000; margin-bottom: 8upx;">{{machineErrors.status_info}}</text>
+							<text>更新时间:{{dateFormat(machineErrors.status_update_time)}}</text>
+						</view>
+						<view class="image" @click="getMchineErrors(1)">
+							<image src="../../static/icon_machine_load.png" style="height: 35upx;" mode="aspectFit">
+							</image>
+						</view>
+					</view>
+
+					<view class="item-new-list-color" style="margin-top: 30upx;">
+						<view class="content" @tap="cleanNozzle()">
+							<image src="../../static/icon_machine_clean.png" class="image" mode="aspectFit"></image>
+							<text class="text">清洗喷头</text>
+						</view>
+
+						<view class="content" @tap="testColour()">
+							<image src="../../static/icon_machine_color.png" class="image" mode="aspectFit"></image>
+							<text class="text">测试色块</text>
+						</view>
+
+						<view class="content" @tap="abountMachine()">
+							<image src="../../static/icon_machine_local.png" class="image" mode="aspectFit"></image>
+							<text class="text">关于本机</text>
+						</view>
+
+						<view class="content" @tap="maintenanceMachine()">
+							<image src="../../static/icon_machine_more.png" class="image" mode="aspectFit"></image>
+							<text class="text">更多功能</text>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width" @click="todayPrintPage()">
+							<label class="text content-color">今日打印</label>
+							<label class="value content-color">
+								<view style="text-align: right; color: #888888; line-height: 50upx;" class="full-width">
+									{{list.machine_order.day_total_effective_order}}/{{list.machine_order.day_total_order}}
+								</view>
+								<label class="fa fa-angle-right align-right sub-color"></label>
+							</label>
+						</view>
+						<view class="item full-width" @click="historyPrintPage()">
+							<label class="text content-color">历史打印</label>
+							<label class="value content-color">
+								<view style="text-align: right; color: #888888; line-height: 50upx;" class="full-width">
+									<!-- 120/650 -->
+									{{list.machine_order.total_effective_order}}/{{list.machine_order.total_order}}
+								</view>
+								<label class="fa fa-angle-right align-right sub-color"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width" @click="managingTasks()">
+							<label class="text content-color">管理任务</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:55upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">对任务进行恢复、多次打印等操作,同时部分机型可进行模版、商品上下架、查阅历史打印记录操作。</view>
+
+					<view class="item-new-list">
+
+						<view class="item full-width">
+							<label class="text content-color">锁定</label>
+							<switch :checked="lockingStatus" @change="onSefaultStatus"
+								style="float: right;zoom: 0.6;position:absolute;right:75upx" />
+						</view>
+
+						<view class="item full-width">
+							<label class="text content-color">最近开机</label>
+							<label class="value content-color">
+								<text class="full-width"
+									style="text-align: right;">{{list.last_connect_time ? list.last_connect_time : "" }}</text>
+							</label>
+						</view>
+
+					</view>
+
+					<view class="item-new-list-text">机器开机且有联网,状态将显示正常,锁定状态的设备不允许下单操作,墨水低于20%将显示为缺失状态。</view>
+
+					<view class="item-new-list">
+						<view class="item full-width" @click="abountMachine()">
+							<label class="text content-color">关于本机</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:55upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+						<view class="item full-width" @click="auxiliaryUse()">
+							<label class="text content-color">辅助</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:55upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+						<view class="item full-width" @click="maintenanceMachine()">
+							<label class="text content-color">维护</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:55upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">辅助功能可对设备基础进行调整,维护对设备可完成远程清洗喷头、闪喷、远程测试等操作</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">二维码</label>
+							<label class="value content-color" style="margin-top: 2upx; margin-bottom: 2upx;">
+								<input type="text" disabled="disabled" class="full-width" />
+								<image @click.stop="showPreviewImage(list.h5_code,list.id)"
+									v-if="list.h5_code !='' && list.h5_code "
+									:src="list.h5_code + '?x-oss-process=image/watermark,text_'+getStrToBase64(list.id)+',g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a'"
+									mode="aspectFit"
+									style="width:80upx; height:80upx; border-radius:10upx; display: block; float: right;margin-top: -5upx;">
+								</image>
+								<image @click.stop="showPreviewImage(list.min_code,list.id)" v-if="list.min_code"
+									:src="list.min_code + '?x-oss-process=image/watermark,text_'+getStrToBase64(list.id)+',g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a'"
+									mode="aspectFit"
+									style="width:80upx; height:80upx; border-radius:10upx; display: block; float: right;margin-top: -5upx; margin-left: 25upx;">
+								</image>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">定制二维码,可随时将设备二维码分享,方便用户随时下单。</view>
+
+					<view class="item-new-list" style="margin-top: 40upx;" @click="exclusiveServices()">
+						<view class="item full-width">
+							<label class="text content-color">专属服务</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">联系专属客服,可随时随地获得客户维护支持服务。</view>
+
+					<view class="item-new-list" @click="maintenanceManual()">
+						<view class="item full-width">
+							<label class="text content-color">查看机器保养手册</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+				</view>
+			</view>
+		</view>
+
+		<mpvue-pickernew ref="printingMpvuePicker" :themeColor="'#53B2B0'"
+			:pickerValueDefault="printingpickerValueDefault" @onChange="onChange" @onCancel="onCancel"
+			@onConfirm="onConfirmPrinting" :pickerValueArray="printingPickerValueArray"></mpvue-pickernew>
+
+		<view v-if="isTouchStart" style=" position: fixed;
+		  top: 0;
+		  left: 0;  
+		  bottom: 0;
+		  right: 0;
+		  width: 100%;
+		  height: 100%;
+		  z-index: 9999;" @touchmove.prevent @mousewheel.prevent></view>
+
+	</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	import myhead from '../index/head/head-machine.vue';
+
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew,
+			myhead
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				goodsItem: [{
+						goods_name: '全部',
+						type: -12,
+					},
+					{
+						goods_name: '套餐内',
+						type: 0,
+					},
+					{
+						goods_name: '打印卡',
+						type: 1,
+					},
+				],
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				//默认选中
+				currentTab: {
+					code: 0,
+					name: '机器'
+				},
+				tabBars: [{
+						code: 0,
+						name: '机器'
+					},
+					{
+						code: 2,
+						name: ''
+					},
+					{
+						code: 1,
+						name: '打印'
+					},
+				],
+				//end底部弹框
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				//加载全部交易类型数据
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				lockingStatus: false,
+				is_update_status: 0, //是否更新故障的时间
+				is_update_ink: 0, //是否更新墨水的时间
+				machineErrors: null, //机器错误信息
+				isShowBack: false, //是否显示返回
+				flagValue: "", //机器挂起
+
+				//list.flag.value
+			};
+		},
+
+		methods: {
+
+
+			maintenanceManual() {
+				uni.showToast({
+					title: '即将开放',
+					icon: 'none'
+				});
+			},
+
+			dateFormat(time) {
+				let now = new Date(time * 1000),
+					y = now.getFullYear(),
+					m = now.getMonth() + 1,
+					d = now.getDate();
+				return y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d) + " " + now.toTimeString().substr(0,
+					8);
+			},
+
+			//今日打印
+			todayPrintPage() {
+				uni.navigateTo({
+					url: '/pages/mall/profit?machine_id=' + this.queryPage.machine_id + "&type=1",
+				});
+			},
+
+			//历史打印
+			historyPrintPage() {
+				uni.navigateTo({
+					url: '/pages/mall/profit?machine_id=' + this.queryPage.machine_id + "&type=0",
+				});
+			},
+
+			//测试色块
+			testColour(type) {
+				uni.navigateTo({
+					url: '../mall/test-colour?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//远程清洗
+			cleanNozzle() {
+				uni.navigateTo({
+					url: '../mall/clean-nozzle?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//专属服务
+			exclusiveServices() {
+				uni.navigateTo({
+					url: "/pages/mall/exclusive-services?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//管理任务
+			managingTasks() {
+				uni.navigateTo({
+					url: '../mall/managing-tasks?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//维护
+			maintenanceMachine(type) {
+				uni.navigateTo({
+					url: '../mall/maintenance-machine?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//辅助功能
+			auxiliaryUse() {
+				uni.navigateTo({
+					url: '../mall/auxiliary-use?machineid=' + this.queryPage.machine_id + "&machine_category_id=" +
+						this.list.machine_category_id,
+				});
+			},
+
+			//关于本机
+			abountMachine() {
+				uni.navigateTo({
+					url: '../mall/abount-machine?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//调转订单列表
+			toOrderList() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			touchstart(ev) {
+				ev.preventDefault();
+				this.isTouchStart = true;
+				const selectDom = ev.currentTarget;
+				const {
+					pageX,
+					pageY
+				} = ev.touches[0]; // 手指位置
+				const {
+					offsetLeft,
+					offsetTop
+				} = selectDom; // 元素位置
+				// 手指原始位置
+				this.oldMousePos = {
+					x: pageX,
+					y: pageY
+				};
+				// 元素原始位置
+				this.oldNodePos = {
+					x: offsetLeft,
+					y: offsetTop
+				};
+			},
+
+			touchMove(ev) {
+				ev.preventDefault();
+				const selectDom = ev.currentTarget;
+				// x轴偏移量
+				const lefts = this.oldMousePos.x - this.oldNodePos.x;
+				// y轴偏移量
+				const tops = this.oldMousePos.y - this.oldNodePos.y;
+				const {
+					pageX,
+					pageY
+				} = ev.touches[0]; // 手指位置
+				this.autoCleanLeft = pageX - lefts;
+				this.autoCleanTop = pageY - tops;
+			},
+
+			touchEnd(ev) {
+				ev.preventDefault();
+				this.isTouchStart = false;
+			},
+
+			//选中普通设备列表
+			selectStockList(index, item) {
+				var resultList = this.stockDataList;
+				this.stockDataList = [];
+				var isDown = item.isDown;
+				if (isDown) {
+					isDown = false
+				} else {
+					isDown = true
+				}
+				resultList.forEach(itemData => {
+					if (itemData.id == item.id) {
+						itemData.isDown = isDown
+					}
+				})
+				this.stockDataList = resultList;
+			},
+
+			//调转库存列表
+			toStockList() {
+				uni.navigateTo({
+					url: '../mall/stockList?id=' + this.queryPage.machine_id,
+				});
+			},
+
+			//获取库存新接口
+			getStockData() {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/getStockDetail',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.stockData = result;
+					var max = 60;
+					var first = 20;
+					this.stockData.list.forEach((item, index) => {
+						item.id = index
+						item.isDown = false;
+						if (index == 0) {
+							item.row2 = max * item.need_stock / first;
+							if (item.row2 <= 0) {
+								item.row2 = 0;
+							}
+							first = parseFloat(item.need_stock);
+							if (first <= 1) {
+								first = 20;
+							}
+						} else {
+							item.row2 = max * parseFloat(item.need_stock / first)
+							if (item.row2 <= 0) {
+								item.row2 = 0;
+							}
+						}
+					})
+					this.stockDataList = this.stockData.list
+				}).catch(err => {
+
+				})
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//预览显示图片
+			showPreviewImage(e, id) {
+				if (e == null || e == "") {
+					uni.showToast({
+						title: '暂时没有定制二维码',
+						icon: 'none'
+					});
+					return
+				}
+				var current = e + "?x-oss-process=image/watermark,text_" + this.getStrToBase64(id) +
+					",g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a"; //这里获取到的是一张本地的图片
+				uni.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+
+			//调转明细页面
+			packageDetail(machineId) {
+				let machineid = machineId;
+				uni.navigateTo({
+					url: '../mine/PrintUseDetail?machineid=' + machineid + '&print_type=' + this.print_type
+				});
+			},
+
+			Reprint(item) {
+				if (item.status.value == 0) {
+					return;
+				}
+				uni.showModal({
+					title: '温馨提示',
+					content: '是否此订单恢复打印?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							//恢复打印的接口:
+							logoservice.MachineStockGoodsList({
+								m: 'Machine/repeatPrint',
+								machine_id: item.machine_id,
+								id: item.id,
+							}).then(result => {
+								uni.showToast({
+									title: '恢复订单打印成功',
+									icon: 'none'
+								});
+								item.status.value = 0
+								item.status.text = "等待出料"
+							}).catch(err => {
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//代理商名字
+			partnername(partner_id, partner) {
+				var partner_name = '尚未铺设';
+				if (partner) {
+					partner.forEach(item => {
+						if (item.id == partner_id) {
+							partner_name = item.name
+						}
+					});
+				}
+				return partner_name
+			},
+
+			tomain() {
+				uni.reLaunch({
+					url: "/pages/index/home"
+				})
+			},
+
+			//打印年月日printing  Printing
+			printingShowPicker(mode) {
+				this.$refs.printingMpvuePicker.show();
+			},
+
+			//日期确定
+			onConfirmPrinting(e) {
+				this.queryPage.year = null
+				this.queryPage.month = null
+				this.queryPage.date = null
+				if (e.value.length == 1) {
+					this.queryPage.year = e.value[0]
+				} else if (e.value.length == 2) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + e.value[1] //补齐
+					}
+					this.queryPage.month = e.value[0] + '-' + myMonth
+				} else if (e.value.length == 3) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth //补齐
+					}
+					let mydate = e.value[2]
+					if (mydate < 10) {
+						mydate = '0' + e.value[2] //补齐
+					}
+					this.queryPage.date = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				//数据加载状态处理 false
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.LoupanList = []
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//打开类型
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['printingShowshare'].open()
+				})
+				this.getGoodsAttrList()
+			},
+
+			Printingcancel(type) {
+				this.$refs['printingShowshare'].close()
+			},
+
+			selectMonth(item) {
+				if (item.type == -12) {
+					this.attr = "全部打印类型";
+					this.queryPage.is_excess = null;
+				} else {
+					this.attr = item.goods_name ? item.goods_name : null
+					this.queryPage.is_excess = item.type
+				}
+				this.$refs['printingShowshare'].close();
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//更换弹框
+			showshareclick(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let itema = JSON.stringify(item)
+				let itemb = JSON.parse(itema);
+				this.showshareitem = itemb;
+				this.showshareindex = index;
+				this.$nextTick(() => {
+					this.$refs['showshareinput'].open()
+				})
+			},
+
+			change(e) {
+
+			},
+
+			//库存数量输入
+			StockCountInput(e) {
+				this.isOnclickItem = true;
+				var that = this;
+				setTimeout(function() {
+					that.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是2秒
+			},
+
+			//'2:色彩公园,3:色彩公园T恤,4:色彩公园手机壳,5:高尔夫,6:色彩Plus,7 色彩Lite(通用版) ,8 烘焙食品'
+			inputVal(item, index) {
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let StcokListsnumber = item.total_stock
+				if (item.stock > this.maxnumber) {
+					uni.showToast({
+						title: '最大只能输入' + this.maxnumber + '个',
+						icon: 'none',
+					});
+					item.stock = StcokListsnumber > this.maxnumber ? this.maxnumber : StcokListsnumber;
+					return false;
+				}
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//pop选中商品
+			selectGood(item) {
+				this.$refs["showshare"].close();
+				var that = this;
+				let index;
+				if (this.selectItem != null) {
+					that.StcokList.forEach((items, indexNumber) => {
+						if (items.id == this.selectItem.id) {
+							index = indexNumber;
+						}
+					});
+				}
+				uni.showModal({
+					title: '确认',
+					content: '是否关联当前商品?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							if (that.list.used_applets == '3') {
+								that.StcokList[index].stock = item.stock > 12 ? 12 : item.stock;
+							}
+							if (that.list.used_applets == '4') {
+								that.StcokList[index].stock = item.stock > 7 ? 7 : item.stock;
+							}
+							that.StcokList[index].title = item.title; //name
+							that.StcokList[index].name = item.name;
+							that.StcokList[index].front_image = item.front_image;
+							that.StcokList[index].goods_id = item.goods_id;
+							that.StcokList[index].dict_id = item.dict_id;
+							that.StcokList[index].total_stock = item.stock;
+							that.StcokList[index].isShowPullButtom = false;
+							that.confirmChangeChannel(that.StcokList[index])
+						}
+					}
+				});
+			},
+
+			//确认更换货道
+			confirmChangeChannel(item) {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/saveStock',
+					id: item.id,
+					machine_id: this.queryPage.machine_id,
+					goods_id: item.goods_id,
+					goods_size: item.goods_size,
+					stock: item.stock,
+					dict_id: item.dict_id
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: "更换成功",
+						icon: 'none'
+					});
+				}).catch(err => {
+					uni.hideLoading();
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.StcokList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.loadStockList(Enums.DATA_DIRECTION.UP);
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//下架功能
+			shelvesGood(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				var _this = this
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品下架吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							if (item.goods_id == 0) {
+								uni.showToast({
+									title: "还没绑定商品不能下架",
+									icon: 'none'
+								});
+								_this.StcokList[index].isShowPullButtom = false;
+								_this.SortNumber++;
+								_this.StcokList[index].SortNumber = _this.SortNumber;
+								this.setData({
+									StcokList: _this.StcokList
+								})
+							} else {
+								uni.showLoading({
+									title: '正在加载中...'
+								})
+								logoservice.MachineSavePartnerStock({
+									m: 'Machine/saveStock',
+									id: item.id,
+									machine_id: _this.queryPage.machine_id,
+									goods_id: item.goods_id,
+									goods_size: item.goods_size,
+									stock: item.stock,
+									dict_id: item.dict_id,
+									type: "off",
+								}).then(result => {
+									console.log(result)
+									uni.hideLoading();
+									uni.showToast({
+										title: "下架成功",
+										icon: 'none'
+									});
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+								}).catch(err => {
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+									uni.hideLoading();
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								})
+							}
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			//显示下面选择按钮 
+			showPullButton(item, index) {
+				if (this.isOnclickItem == false) {
+					var that = this;
+					if (item.isShowPullButtom) {
+						that.StcokList[index].isShowPullButtom = false;
+					} else {
+						that.StcokList[index].isShowPullButtom = true;
+					}
+					this.SortNumber++;
+					that.StcokList[index].SortNumber = this.SortNumber;
+					this.setData({
+						StcokList: that.StcokList
+					})
+				}
+			},
+
+			//修改货道
+			changeChannel(item, index) {
+				this.$refs["showshareinput"].close();
+				this.$refs["showshare"].close();
+				var _this = this
+				_this.isOnclickItem = true;
+				setTimeout(function() {
+					_this.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是1秒
+				let jsonLists = JSON.parse(_this.StcokLists);
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品货道调整吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							uni.showLoading({
+								title: '正在加载中...'
+							})
+							logoservice.MachineSavePartnerStock({
+								m: 'Machine/saveStock',
+								id: item.id,
+								machine_id: _this.queryPage.machine_id,
+								goods_id: item.goods_id,
+								goods_size: item.goods_size,
+								stock: item.stock,
+								dict_id: item.dict_id
+							}).then(result => {
+								uni.hideLoading();
+								uni.showToast({
+									title: "修改成功",
+									icon: 'none'
+								});
+								_this.StcokList[index].stock = item.stock;
+							}).catch(err => {
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//获取底部弹框数据
+			loadStockGoodsList(goods_name) {
+				logoservice.MachineStockGoodsList({
+					m: 'Machine/getStockGoodsList',
+					machine_id: this.queryPage.machine_id,
+					goods_name: goods_name,
+				}).then(result => {
+					this.GoodsItem = result;
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+
+			chooseImage: async function() {
+				if (this.$base.Userres.be_child == 1) return;
+				var _this = this
+				uni.chooseImage({
+					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['camera', 'album'], //从相册选择
+					count: 1,
+					success: (res) => {
+						let tempFilePaths = res.tempFilePaths;
+						uni.showLoading({
+							title: '图片正在上传...'
+						})
+						uni.uploadFile({
+							url: 'https://tprint.refinecolor.com/partnerapplets/index',
+							filePath: tempFilePaths[0],
+							method: 'POST',
+							name: 'file',
+							header: {
+								'content-type': 'multipart/form-data'
+							},
+							formData: {
+								m: 'Upload/upload'
+							}, //请求额外的form data
+							success: function(res) {
+								logoservice.MachinesaveCover({
+									m: 'Machine/saveCover',
+									machine_id: _this.queryPage.machine_id,
+									cover: JSON.parse(res.data).data.url
+								}).then(result => {
+									uni.hideLoading();
+									uni.showToast({
+										title: '上传成功',
+										icon: 'none',
+										duration: 3000
+									})
+									_this.listdetail()
+								}).catch(err => {
+									uni.hideLoading();
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								})
+							},
+							fail: function(res) {
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							}
+						})
+					}
+				})
+			},
+
+			//预览图片
+			previewImage(imgs, list) {
+				let listattr = []
+				list.forEach(item => {
+					listattr.push(item.works_image)
+				})
+				var current = imgs.works_image; //这里获取到的是一张本地的图片
+				wx.previewImage({
+					current: current, // 当前显示图片的http链接
+					urls: listattr // 需要预览的图片http链接列表
+				})
+			},
+
+			datatimeLimited(time) {
+				return new Date(time.replace(/-/g, "/"))._format('HH:mm:ss');
+			},
+
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			categoryaddress(address) {
+				var dataaddress = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == address) {
+							dataaddress = item.address.replace('<br/>', '');
+						}
+					});
+				}
+				return dataaddress
+			},
+
+			//店铺
+			showPicker(item) {
+				uni.navigateTo({
+					url: '../mall/relevance-shop?machineid=' + this.list.id,
+				});
+			},
+
+			//确定
+			onConfirm(e) {
+				uni.showLoading({
+					title: '正在关联中...'
+				})
+				logoservice.Machinelistdetail({
+					m: 'Machine/bindShop',
+					machine_id: this.queryPage.machine_id,
+					shop_id: e.value[0]
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '关联店铺成功',
+						icon: 'none'
+					});
+					this.listdetail()
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			tapTab(tab) {
+				this.currentTab = tab;
+				if (this.currentTab.code == 0) {
+					this.listdetail()
+				}
+				if (this.currentTab.code == 1) {
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.LoupanList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+				}
+				if (this.currentTab.code == 2) {
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.StcokList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.getStockData();
+				}
+			},
+
+			//设备锁定
+			onSefaultStatus(e) {
+				if (e.detail.value == true) {
+					this.list.flag.value = "N"
+					this.lockingStatus = true;
+					uni.showLoading({
+						title: '设备锁定中...'
+					})
+				} else {
+					this.list.flag.value = "Y"
+					this.lockingStatus = false;
+					uni.showLoading({
+						title: '设备恢复中...'
+					})
+				}
+				logoservice.Machinestatus({
+					m: 'Machine/status',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					uni.hideLoading();
+					if (e.detail.value == true) {
+						uni.showToast({
+							title: '锁定成功'
+						})
+					} else {
+						uni.showToast({
+							title: '恢复成功'
+						})
+					}
+
+					this.listdetail();
+
+					this.getMchineErrors(1)
+
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+
+						if (this.list.flag.value == "N") {
+							this.lockingStatus = true
+						} else {
+							this.lockingStatus = false
+						}
+
+						if (this.list.show_clean) {
+							this.show_clean = this.list.show_clean
+						}
+						if (this.list.clear_time) {
+							this.clear_time = this.list.clear_time
+						}
+						if (this.list.edition != null && this.list.edition.mark == 'standard') {
+							this.print_type = 0;
+						} else if (this.list.edition != null && this.list.edition.mark == 'unlimited') {
+							this.print_type = 1;
+						}
+						let ink = this.list.ink;
+						if (ink.length >= 6) {
+							this.inkStatusC = ink.substring(0, 1) == 0 ? true : false;
+							this.inkStatusM = ink.substring(1, 2) == 0 ? true : false;
+							this.inkStatusY = ink.substring(2, 3) == 0 ? true : false;
+							this.inkStatusK = ink.substring(3, 4) == 0 ? true : false;
+							this.inkStatusW = ink.substring(4, 5) == 0 ? true : false;
+							this.inkStatusHas = ink.substring(5, 6) == 0 ? true : false;
+						}
+						this.list.default_package.create_date = this.dateFormat(this.list.default_package
+							.expire_date);
+						if (this.list.machine_category_id == 63) {
+
+							this.list.isSinglePlatep = false;
+						}
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					/* uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					}); */
+				})
+			},
+
+			//设备打印信息 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//做滚动加载使用
+			loadMore() {
+				if (this.isTouchStart || this.currentTab.code == 0) {
+					return;
+				}
+				if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				if (this.currentTab.code == 1) {
+					this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+				}
+				if (this.currentTab.code == 2) {
+					this.loadStockList(Enums.DATA_DIRECTION.DOWN)
+				}
+			},
+
+			//获取日期
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				this.queryPage.date = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+			},
+
+			//获取月份
+			getMonth() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				this.queryPage.month = myDate.getFullYear() + '-' + myMonth;
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			//获取机器错误信息
+			getMchineErrors(type) {
+				if (type == 0) {
+					this.is_update_ink = 1;
+					this.is_update_status = 0
+				} else if (type == 1) {
+					this.is_update_ink = 0;
+					this.is_update_status = 1
+				} else {
+					this.is_update_ink = 0;
+					this.is_update_status = 0
+				}
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				logoservice.Machinelistdetail({
+					m: 'Machine/getErrors',
+					machine_id: this.queryPage.machine_id,
+					is_update_status: this.is_update_status,
+					is_update_ink: this.is_update_ink
+				}).then(result => {
+					uni.hideLoading();
+					this.machineErrors = result
+				}).catch(err => {
+					//uni.hideLoading();
+				})
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+			if (this.isTouchStart) {
+				return;
+			}
+			if (this.currentTab.code == 0) {
+				this.listdetail()
+			}
+			if (this.currentTab.code == 1) {
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			}
+			if (this.currentTab.code == 2) {
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.StcokList = []
+				this.loadStockList(Enums.DATA_DIRECTION.UP);
+			}
+			uni.stopPullDownRefresh();
+		},
+
+		//上拉加载
+		onReachBottom() {
+			if (this.currentTab.code == 0 || this.isTouchStart) {
+				return;
+			}
+			if (this.LoupanList.length < 6) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			if (this.currentTab.code == 1) {
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN)
+			}
+		},
+
+		onLoad(options) {
+			let that = this;
+			uni.getSystemInfo({
+				success(res) {
+					that.autoCleanLeft = res.windowWidth - 100;
+					that.autoCleanTop = res.windowHeight - 180;
+				}
+			});
+
+
+
+			if (options.isShowBack == "false" || options.isShowBack == false) {
+				this.isShowBack = false
+			} else {
+				this.isShowBack = true;
+			}
+
+			//options.isShowBack;
+
+
+			//console.log(this.isShowBack);
+
+			this.getMonth();
+			this.printingPickerValueArray = ['month'];
+			this.queryPage.machine_id = options.id
+			uni.setNavigationBarTitle({
+				title: this.queryPage.machine_id
+			})
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+						this.is_inner = this.$base.Userres.is_inner
+						logoservice.setwixinInfo(result);
+						this.listdetail();
+						this.getMchineErrors(-1)
+						this.machineGetShopList();
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					//console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+
+		onShow() {
+			// this.isTouchStart = false;
+			// if (this.$base != null && this.$base.Userres != null) {
+			// 	this.be_child = this.$base.Userres.be_child //子代理
+			// }
+			this.listdetail();
+			this.getMchineErrors(-1)
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/*去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 320upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-top {
+		margin: 30upx 30upx 25upx 30upx;
+		background: #fff;
+		min-height: 80upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		display: flex;
+		flex-direction: row;
+		padding-top: 25upx;
+		padding-bottom: 28upx;
+
+		.image {
+			display: flex;
+			align-items: center;
+			width: 18%;
+			min-height: 80upx;
+		}
+
+		.text {
+			display: flex;
+			width: 64%;
+			min-height: 80upx;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			font-size: 22upx;
+			color: #999;
+		}
+
+	}
+
+	.eq-detail-top-layout {
+		display: flex;
+		flex-direction: row;
+		margin-top: 5upx;
+		height: 400upx;
+
+		.left {
+			display: flex;
+			flex-direction: column;
+			width: 15%;
+
+			.status {
+				background: #E72C31;
+				font-size: 30upx;
+				color: #FFFFFF;
+				/*border-top-right-radius: 30upx; */
+				border-radius: 30upx;
+				height: 60upx;
+				width: 140upx;
+				text-align: center;
+				line-height: 60upx;
+				margin-top: 15upx;
+				margin-left: 20upx;
+				font-weight: 600;
+			}
+		}
+
+		.center {
+			display: flex;
+			flex-direction: column;
+			width: 70%;
+			align-items: center;
+			justify-content: center;
+
+			.ink {
+				display: flex;
+				flex-direction: row;
+				height: 120upx;
+				margin-top: 10upx;
+
+				.content {
+					display: flex;
+					flex-direction: column;
+					width: 40upx;
+					height: 120upx;
+					align-items: center;
+					justify-content: center;
+
+					.text {
+						font-size: 26upx;
+						color: #999;
+						margin-top: 8upx;
+						height: 30upx;
+						line-height: 30upx;
+						width: 100%;
+						text-align: center;
+
+					}
+
+					.image {
+						width: 50upx;
+						height: 50upx;
+
+					}
+				}
+			}
+		}
+
+		.right {
+			width: 15%;
+		}
+	}
+
+	.item-new-list-color {
+
+		background: #fff;
+		margin: 30upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		height: 180upx;
+		display: flex;
+		flex-direction: row;
+		width: calc(100% - 60upx);
+
+
+		.content {
+
+			display: flex;
+			flex-direction: column;
+			width: 25%;
+			align-items: center;
+			justify-content: center;
+
+
+			.image {
+				height: 65upx;
+				width: 65upx;
+			}
+
+			.text {
+				color: #000;
+				width: 100%;
+				font-size: 23upx;
+				margin-top: 8upx;
+				text-align: center;
+
+			}
+
+		}
+	}
+
+
+
+	.ink-list-bc {
+		width: 20upx;
+		height: 100upx;
+		background: #fff;
+		border: 1upx solid #2A82E4;
+		justify-content: end;
+		align-items: flex-end;
+		display: flex;
+		border-radius: 12upx;
+
+		.in {
+			width: 100%;
+			height: 55upx;
+			background: #2A82E4;
+			border-radius: 12upx;
+		}
+
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/eq-details.vue b/pages/mall/eq-details.vue
new file mode 100644
index 0000000..cd1cd90
--- /dev/null
+++ b/pages/mall/eq-details.vue
@@ -0,0 +1,2409 @@
+<template>
+	<view class="order full-height full-width">
+
+		<!-- 暂无相关信息 -->
+		<view v-if="!list&&long">
+			<view class="noData">
+				<image src="../../static/icon_guaqi.png" mode="aspectFill" class="noData_img"></image>
+				<view class="noData_title">
+					非常抱歉,您没有权限查阅当前打印站的信息!<br>
+				</view>
+				<view class="noData_but" @click="tomain()">返回</view>
+			</view>
+			
+		</view>
+
+		<view class="uni-tab-bar full-width" v-if="list">
+			<!-- 状态栏 -->
+			<scroll-view id="tab-bar" class="uni-swiper-tab bg-white-color">
+				<view v-for="(tab, index) in tabBars" :key="index"
+					:class="['swiper-tab-list', currentTab.code == tab.code ? 'active' : '']" :id="tab.code"
+					:data-current="index" @click="tapTab(tab)">
+					<view style="width: 100%; display:flex;flex-direction:row;">
+						<text style="width: 100upx;padding-left:90upx;">{{ tab.name }}</text>
+						<view v-if="tab.name != '' && currentTab.code== tab.code"
+							style="width:55upx;background: #43CF7C;height:6upx;;margin-top: 78upx;margin-left: -77upx;">
+						</view>
+					</view>
+				</view>
+			</scroll-view>
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content" v-if="long"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%;">
+				<!-- 机器 -->
+				<view class="order-list" v-if="currentTab.code == 0">
+					<view style="width: 100%; height: auto;padding: 0upx  20upx  0upx 20upx">
+						<view class="eq-detail-score bg-white-color full-width" style="position: relative;">
+							<view
+								style="position: absolute;top: 30upx;width: 180upx; height: 60upx; border-top-right-radius: 40upx; border-bottom-right-radius:40upx; background: #FFFFFF;text-align: center;padding-top: 10upx;">
+								<text style="color:#383838;font-size:40upx;font-weight: bold;">{{list.id}}</text>
+							</view>
+							<view class="eq-detail-score content-color align-center">
+								<view
+									style="position: center; margin-top: -5upx;height: 160upx;width: 100%;display: flex;flex-direction: column;"
+									@click="printUseMoney()">
+									<view v-if="print_type == 0" style="padding-top: 50upx; ">
+										<text
+											v-if="getPrintSurplusCount(list.package_total.quota - list.package_total.used_quota) == 1"
+											style="color: #fff; font-size: 50upx; margin-left:15upx; font-weight: bold; text-align: center;height: 50upx;">{{list.package_total.quota - list.package_total.used_quota}}</text>
+										<text
+											v-if="getPrintSurplusCount(list.package_total.quota - list.package_total.used_quota) == 2"
+											style="color: #FF8D1A; font-size: 50upx; margin-left:15upx; font-weight: bold; text-align: center;height: 50upx;">{{list.package_total.quota - list.package_total.used_quota}}</text>
+									</view>
+									<view v-if="print_type == 1" style="padding-top: 50upx;">
+										<text
+											style="color: #fff; font-size: 46upx; margin-left:15upx; font-weight: bold; text-align: center;height: 50upx;">无限量</text>
+									</view>
+									<text <text
+										style="color: #fff; font-size: 22upx; margin-left:15upx; ; text-align: center;">剩余打印量(次)</text>
+								</view>
+							</view>
+						</view>
+					</view>
+					<view v-if="print_type == 0"
+						style="margin-top: -45upx;background: #383838;margin-left: 45upx;margin-right: 45upx; border-radius: 20upx; width: calc(100% -90upx); height: 80upx; position: relative;line-height: 80upx;align-items: center;">
+						<text style="color: #FFFFFF; font-size: 24upx;margin-left: 80upx;">标准版</text>
+						<text
+							style="color: #FFFFFF; font-size: 24upx;float: right;margin-right: 80upx;width: 150upx;height: 60upx;"
+							@click="packageDetail(list.id)">了解更多权益</text>
+						<label class="fa fa-angle-right"
+							style="color: #fff; font-size: 30upx; float: right; margin-top: 25upx; margin-right: -160upx;"></label>
+					</view>
+					<view v-if="print_type == 1"
+						style="margin-top: -40upx;background: #FF8D1A;margin-left: 45upx;margin-right: 45upx; border-radius: 20upx; width: calc(100% -90upx); height: 80upx; position: relative;line-height: 80upx;align-items: center;">
+						<text style="color: #FFFFFF; font-size: 24upx;margin-left: 80upx;">无限版</text>
+						<text
+							style="color: #FFFFFF; font-size: 24upx;float: right;margin-right: 80upx; width: 150upx;height: 60upx;"
+							@click="packageDetail(list.id)">了解更多权益</text>
+						<label class="fa fa-angle-right"
+							style="color: #fff; font-size: 30upx; float: right; margin-top: 25upx; margin-right: -160upx;"></label>
+					</view>
+					<view v-else-if="print_type != 1 && print_type != 0 "
+						style="margin-top: -40upx;background:transparent;margin-left: 45upx;margin-right: 45upx; border-radius: 20upx; width: calc(100% -90upx); height: 80upx; position: relative;line-height: 80upx;align-items: center; visibility:display ;">
+					</view>
+					<view
+						style="margin-top: -18upx; padding: 20upx 15upx 15upx;background: #FFFFFF;margin-left: 20upx;margin-right: 15upx; border-radius: 20upx;">
+						<view class="item full-width">
+							<label class="text content-color">所属代理</label>
+							<label class="value content-color">
+								<text v-if="Userres_partner_id == 0" style="text-align: right;"
+									class="full-width">{{list.partner}}</text>
+								<text v-else style="text-align: right;" class="full-width">{{list.partner}}</text>
+							</label>
+						</view>
+						<view class="item full-width" style="border: 0;">
+							<label class="text content-color">设备类型</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{list.category}}</text>
+							</label>
+						</view>
+						<view class="item full-width" style="border: 0;">
+							<label class="text content-color">关联商品</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{list.goods_category}}</text>
+							</label>
+						</view>
+						<view class="item full-width" style="border: 0;">
+							<label class="text content-color"></label>
+							<label class="value content-color">
+								<text style="color:#383838;font-size: 22upx;text-align: right"
+									class="full-width">开通时间{{dateFormat(list.create_time)}}</text>
+							</label>
+						</view>
+						<view v-if="list.default_package !=null" class="item full-width" style="border: 0; ">
+							<label class="text content-color"></label>
+							<label class="value content-color" style="margin-bottom: 5upx;">
+								<text v-if="getDaysDifference(list.default_package.expire_date) > 100"
+									style="text-align: right;color: #1FBA40; font-size: 22upx;"
+									class="full-width">有效日期至{{list.default_package.create_date}}</text>
+								<text
+									v-if="getDaysDifference(list.default_package.expire_date) <= 100 && getDaysDifference(list.default_package.expire_date) > 30"
+									style="text-align: right;color: #FF8D1A; font-size: 22upx;"
+									class="full-width">有效日期至{{list.default_package.create_date}}</text>
+								<text v-if="getDaysDifference(list.default_package.expire_date) <= 30"
+									style="text-align: right;color: #FB1B1B; font-size: 22upx;"
+									class="full-width">有效日期至{{list.default_package.create_date}}</text>
+							</label>
+						</view>
+						<view class="item full-width" @click="showPicker()"
+							style=" border-top: 1upx solid #f6f6f6;padding-top: 10upx;margin-top: 5upx;">
+							<label class="text content-color">店铺</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width"
+									v-if="list.shop_id">{{category(list.shop_id)}}</view>
+								<view style="text-align: right; color: #888888; line-height: 50upx;" class="full-width"
+									v-if="!list.shop_id">没有关联店铺</view>
+								<label class="fa fa-angle-right align-right sub-color"></label>
+							</label>
+						  </view>
+						<view class="item full-width" >
+							<label class="text content-color">地址</label>
+							<label class="value content-color">
+								<text style="text-align: right;"
+									class="full-width">{{categoryaddress(list.shop_id)}}</text>
+							</label>
+						 </view>
+						<view>
+					  </view>
+					</view>
+					
+					<view style="margin-top: 10upx; padding: 20upx 15upx 15upx;background: #FFFFFF;margin-left: 20upx;margin-right: 15upx; border-radius: 20upx;">
+				       <view class="item full-width"                     
+				       	style=" padding-top: 10upx;margin-top: 5upx;font-size: 26upx;height:50upx ">
+				       	<label class="text content-color">设备</label>
+				       	<label class="value content-color">
+				       		<text v-if="list.status.value == 0" style="text-align:right; color: #E72C31;"
+				       			class="full-width">离线</text>
+				       		<text v-if="list.status.value == 1" style="text-align:right; color: #5CE6B5;"
+				       			class="full-width">正常</text>
+				       		<text v-if="list.status.value == 2  " style="text-align:right; color: #5CE6B5;"
+				       			class="full-width">生产中</text>
+				       		<text v-if="list.status.value == 3" style="text-align:right; color: #E72C31;"
+				       			class="full-width">故障</text>
+				       		<text v-if="list.status.value == 4" style="text-align:right; color: #E72C31;"
+				       			class="full-width">调试</text>
+				       		<text v-if="list.status.value == 5" style="text-align:right; color: #E72C31;"
+				       			class="full-width">升级中</text>
+				        	</label>
+				       </view>
+				       
+				       <view class="item full-width" style="border: 0; line-height: 48upx; min-height: 48upx; font-size: 26upx; height:48upx">
+				       	<label class="text content-color">打印</label>
+				       	<label class="value content-color">
+				       		<text style="text-align: right; color: #5CE6B5;;" v-if="list.printer_client > 0"
+				       			class="full-width">正常</text>
+				       		<text style="text-align: right; color: #E72C31;" v-if="list.printer_client == 0"
+				       			class="full-width">掉线</text>
+				       	</label>
+				       </view>	
+						
+						<view class="item full-width"
+							style="border: 0; line-height: 45upx; min-height: 45upx; font-size: 26upx;height:45upx"
+							v-if="list.isSinglePlatep==false">
+							<label class="text content-color">平板</label>
+							<label class="value content-color">
+								<text style="text-align: right; color: #5CE6B5;" v-if="list.android_client > 0"
+									class="full-width">正常</text>
+								<text style="text-align: right; color: #E72C31;" v-if="list.android_client == 0"
+									class="full-width">掉线</text>
+							</label>
+						</view>	   
+							
+						<view class="item full-width"
+							style=" border-top: 1upx solid #f6f6f6;padding-top: 10upx;margin-top: 5upx;height:53upx">
+							<label class="text content-color">版本</label>
+							<label class="value content-color">
+								<text style="text-align: right;"
+									class="full-width">{{list.pc_version}}/{{list.version}}</text>
+							</label>
+						</view>
+						<!-- <view v-if="list.status.value == 3">
+							<view class="item full-width" v-if="list.error_time " style="height:50upx">
+								<label class="text content-color" style="color: #E72C31;">错误时间</label>
+								<label class="value content-color">
+									<text style="text-align: right;color: #E72C31;"
+										class="full-width">{{list.error_time || ''}}</text>
+								</label>
+							</view>
+							<view class="item full-width" v-if="list.errors"  style="height:50upx">
+								<label class="text content-color" style="color: #E72C31;">错误信息</label>
+								<label class="value content-color">
+									<text style="text-align: right;color: #E72C31;"
+										class="full-width">{{list.errors || ''}}</text>
+								</label>
+							</view>
+						</view> -->
+					</view>
+
+					<!-- v-if="list.isSinglePlatep == false && be_child == 0" -->
+					<view style="margin-top: 10upx;
+					 padding: 20upx 15upx 15upx;
+					 background: #FFFFFF;
+					 margin-left: 20upx;
+					 margin-right: 15upx;
+					 border-radius: 20upx;" >
+						<view class="item full-width" style="height:85upx">
+							<label class="text content-color" style="color:#333333;	font-size: 28upx;">墨水容量</label>
+							<label class="value content-color">
+								<view style="
+								display: flex;
+								flex-direction: row;
+								width: 100%;justify-content: flex-end; height: 40upx;
+								padding-top: 5upx;
+								padding-bottom: 5upx;">
+									<view style="
+								        display: flex;
+								        flex-direction: column; height: 30upx;">
+										<view :style="{color: inkStatusC ? '#333333' : '#999' }"
+											style="width:40upx; height: 30upx; font-size: 26upx; color: #999;  ">C
+										</view>
+										<view v-if="!inkStatusC"
+											style="margin-top: -16upx; width: 25upx; height: 5upx; background: #999; margin-left: -3upx;">
+										</view>
+									</view>
+									<view style=" display: flex;
+																	  flex-direction: column;height: 30upx; ">
+										<view :style="{color: inkStatusM ? '#333333' : '#999' }"
+											style="width:40upx; height: 30upx; font-size: 26upx; color: #999;  ">M
+										</view>
+										<view v-if="!inkStatusM"
+											style="margin-top: -16upx; width: 25upx; height: 5upx; background: #999; margin-left: -3upx;">
+										</view>
+									</view>
+									<view style="display: flex;
+												flex-direction: column;height: 30upx; ">
+										<view :style="{color: inkStatusY ? '#333333' : '#999' }"
+											style="width:40upx; height: 30upx; font-size: 26upx; color: #999;  ">Y
+										</view>
+										<view v-if="!inkStatusY"
+											style="margin-top: -16upx; width: 25upx; height: 5upx; background: #999; margin-left: -3upx;">
+										</view>
+									</view>
+									<view style="display: flex;
+																	  flex-direction: column;height: 30upx; ">
+										<view :style="{color: inkStatusK ? '#333333' : '#999' }"
+											style="width:40upx; height: 30upx; font-size: 26upx; color: #999;  ">K
+										</view>
+										<view v-if="!inkStatusK"
+											style="margin-top: -16upx; width: 25upx; height: 5upx; background: #999; margin-left: -3upx;">
+										</view>
+									</view>
+									<view style=" display: flex;
+																	  flex-direction: column; height: 30upx; ">
+										<view :style="{color: inkStatusW ? '#333333' : '#999' }"
+											style="width:40upx; height: 30upx; font-size: 26upx; color: #999;  ">W
+										</view>
+										<view v-if="!inkStatusW"
+											style="margin-top: -16upx; width: 28upx; height: 5upx; background: #999; margin-left: 0upx;">
+										</view>
+									</view>
+									<view
+										style=" display: flex; flex-direction: column;  height: 30upx; align-items: center; margin-top: -1upx; ">
+										<view :style="{color: inkStatusHas ? '#333333' : '#999' }"
+											style="width:54upx; height: 30upx; font-size: 26upx; color: #999; margin-left: 4upx; ">
+											废墨</view>
+										<view v-if="!inkStatusHas"
+											style="margin-top: -16upx; width: 60upx; height: 5upx; background: #999; margin-left: -1upx;">
+										</view>
+									</view>
+								</view>
+							</label>
+						</view>
+				
+						<view class="item full-width" style="height:85upx; border-top: 1upx solid #f6f6f6" >
+							<label class="text content-color" style="color: #333333;font-size: 28upx;">最近清洗</label>
+							<label class="value content-color">
+								<label class="value content-color" style="width: 400upx;">
+									<text style="text-align: right;color: #999; font-size: 24upx; margin-top: 20upx;"
+										class="full-width">{{clear_time }}</text>
+								</label>
+								<label  v-if=" show_clean == 1 && !isAutoStartClean " 
+								@click="cleanPrintPop()" class="fa fa-angle-right align-right sub-color"
+									style="margin-top: 6upx; margin-right: 0upx;"></label>
+							</label>
+						</view>
+			
+						<view class="item full-width"  style="height:85upx;border-top: 1upx solid #f6f6f6">
+							<label class="text content-color" style="color: #333333;font-size: 28upx;">最近开机</label>
+							<label class="value content-color">
+								<label class="value content-color" style="width: 400upx;">
+									<text style="text-align: right;color: #999; font-size: 24upx;"
+										class="full-width">{{list.last_connect_time ? list.last_connect_time : "" }}</text>
+								</label>
+							</label>
+						</view>
+					</view>
+
+					<view style="margin-top: 10upx; padding: 20upx 15upx 15upx;background: #FFFFFF;margin-left: 20upx;margin-right: 15upx; border-radius: 20upx;">
+						<view class="item full-width" style="height: 90upx;">
+							<label class="text content-color" style="color:#333333;	font-size: 28upx;">二维码</label>
+							<label class="value content-color">
+								<input type="text" disabled="disabled" class="full-width" />
+								<image @click.stop="showPreviewImage(list.h5_code,list.id)"
+									v-if="list.h5_code !='' && list.h5_code "
+									:src="list.h5_code + '?x-oss-process=image/watermark,text_'+getStrToBase64(list.id)+',g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a'"
+									mode="aspectFit"
+									style="width:80upx; height:80upx; border-radius:10upx; display: block; float: right;margin-top: -5upx;">
+								</image>
+								<image @click.stop="showPreviewImage(list.min_code,list.id)" v-if="list.min_code"
+									:src="list.min_code + '?x-oss-process=image/watermark,text_'+getStrToBase64(list.id)+',g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a'"
+									mode="aspectFit"
+									style="width:80upx; height:80upx; border-radius:10upx; display: block; float: right;margin-top: -5upx; margin-left: 25upx;">
+								</image>
+								<label class="fa fa-angle-right align-right sub-color"
+									style="margin-top: 8upx;margin-left: 5upx;"></label>
+							</label>
+						</view>
+						
+						<view class="item full-width" style="height: 90upx;border-top: 1upx solid #f6f6f6" @click="toLiquidationList()">
+							<label class="text content-color" style="color: #333333;font-size: 28upx;">收益</label>
+							<label class="value content-color">
+								<input type="text" disabled="disabled" class="full-width" />
+								<label class="fa fa-angle-right align-right sub-color"></label>
+							</label>
+						</view>
+						
+						<view class="item full-width" style="height: 90upx;border-top: 1upx solid #f6f6f6" @click="toOrderList()">
+							<label class="text content-color" style="color: #333333;font-size: 28upx;">订单</label>
+							<label class="value content-color">
+								<input type="text" disabled="disabled" class="full-width" />
+								<label class="fa fa-angle-right align-right sub-color"></label>
+							</label>
+						</view>
+					</view>
+				</view>
+
+				<!-- 货道 Freight way-->
+				<view class="way-list"
+					v-if="currentTab.code == 2 && list.isSinglePlatep == false && stockData != null ">
+					<!--  库存数量 -->
+					<view class="print-score bg-white-color full-width" style="position: relative;height:230upx;">
+						<view class="print content-color ">
+							<view style="position: absolute;top: 30upx;width: 180upx; height: 60upx; border-top-right-radius: 40upx;
+								 border-bottom-right-radius:40upx; background: #FFFFFF;text-align: center;
+								 padding-top: 10upx;">
+								<text
+									style="color:#383838;font-size:40upx;font-weight: bold;">{{queryPage.machine_id}}</text>
+							</view>
+							<text @click="toStockList()"
+								style="color:#fff;font-size:30upx; position: absolute; right: 20upx; top:50upx">调整</text>
+							<view
+								style="height: 70upx;position: absolute; left:0upx;top:120upx;width:100%;display:flex;flex-direction:row">
+								<text
+									style="color: #fff; font-size: 50upx;width:33%;;font-weight: 500; text-align: center; padding-left:10upx">{{stockData.all_stock}}</text>
+								<text
+									style="color: #fff; font-size: 50upx;width:33%;;font-weight: 500;text-align: center;padding-left:20upx;">{{stockData.now_stock}}</text>
+								<text
+									style="color: #fff; font-size: 50upx;width:33%;;font-weight: 500;text-align:center;padding-right:30upx;">{{stockData.need_stock}}</text>
+							</view>
+							<view
+								   style="position:  absolute; left:0upx;top:180upx;width:100%;display:flex;flex-direction:row">
+								<text
+									style="color:#fff; font-size:23upx;text-align:center;width:33%; padding-left:5upx;">总库存(个)</text>
+								<text
+									style="color:#fff; font-size:23upx;margin-left:30upx;text-align:center;width:33%;">实时库存(个)</text>
+								<text
+									style="color: #fff; font-size:23upx;text-align:center;width:33%;padding-right:25upx;">需补货(个)</text>
+							</view>
+						</view>
+					</view>
+
+					<!-- 库存列表 -->
+					<view style="width: 100% ; margin-top: 20upx;  background: #fff;  border-radius: 20upx; padding-bottom: 20upx; ">
+						<view style="padding-top: 10upx; font-size: 24upx; font-weight: 550; height: 60upx; width: calc(100% - 60upx); border-bottom: 1upx solid #eee;  margin-left: 30upx;">
+							补货明细</view>
+						<view v-if="stockDataList.length > 0">
+							<view class='topBox' v-for="(item, index) in stockDataList" :key="index">
+								<view style="display: flex;flex-direction: row;align-items: center;"
+									@click="selectStockList(index, item)">
+									<span v-if="item.list !=null && item.list.length > 0" class="iconfont icon-xiala"
+										style="font-size: 20upx; color: #99999;margin-right:10upx;"></span>
+									<span v-if="item.list == null || item.list.length == 0"
+										style="font-size: 20upx; color: #99999;margin-right:10upx; width: 20upx;"></span>
+									<view class='topLittleBOX-1' style="width: 240upx;">{{item.name}}</view>
+									<view class='topLittleBOX-2' style="width: calc(100% - 240upx);  ">
+										<view class='row-1' :style="{width: item.row2 +'px;max-width:90%'}"></view>
+										<view class='rowText' style="position: absolute; right: 80upx">
+											{{item.need_stock}}
+										</view>
+									</view>
+								</view>
+								<view v-if="item.isDown" v-for="(itemStock, index) in item.list" :key="index"
+									style="display: flex;flex-direction: row;height: 55upx;  align-items: center; position: relative;  ">
+									<view style="width: 250upx;font-size: 26upx;color: #333;  margin-left: 30upx;  ">
+										{{itemStock.channel_no}}
+									</view>
+									<view style="font-size: 26upx;color: #333;position: absolute; right: 80upx">
+										{{itemStock.need_stock}}
+									</view>
+								</view>
+							</view>
+						</view>
+						<view style="width: 100%;
+						height: 70upx; 
+						line-height: 80upx; 
+						text-align: center;  
+						margin-top: 10upx;" v-if="stockDataList == null || stockDataList.length == 0">暂时不需要补货</view>
+					</view>
+				</view>
+
+				<!--  打印  -->
+				<view style=" background: #F1F1F1; position: fixed; width:100%;top: 85upx; z-index: 99;height: 190upx;"
+					v-if="currentTab.code == 1">
+					<view style="height: 20upx;width:100%;background: #F1F1F1;"></view>
+					<view
+						style="width:calc(100% -40upx);padding-top: 20upx; background: #FFFFFF; border-radius: 20upx;margin-left:20upx; margin-right: 20upx;">
+						<view
+							style="width:100%; background: #FFFFFF;height: 140upx; line-height: 140upx;padding-top: 10upx;"
+							@click="togglePopup()">
+							<view
+								style="width: calc(100% - 40upx);border-radius:50upx; height: 90upx; border:2upx solid  #F1F1F1;margin-left: 20upx; margin-right: 20upx;">
+								<text
+									style="color: #333333;float: left;margin-top: -20upx;margin-left: 30upx;font-size: 27upx;">{{attr == null ? '全部打印类型' : attr}}</text>
+								<span class="iconfont icon-xiala"
+									style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;float: right ;margin-top: -25upx;margin-right: 30upx;"></span>
+							</view>
+						</view>
+						<view style="display: flex; width: 100%;height: 40upx;margin-top: 20upx;">
+							<view style="font-size: 28upx; line-height: 40upx; width: 50%; text-align: left;color: #333333;margin-left: 35upx;margin-top: -30upx;">
+								作品数量:{{queryPage.total}}件</view>
+							<view
+								style="width: calc(100% / 2); text-align: right; padding: 25upx 15upx 25upx 25upx; margin-right: 35upx;margin-top: -55upx;"
+								@click="printingShowPicker('selector')">
+								<text style="color: #333333;" v-if="queryPage.year">{{queryPage.year}}年</text>
+								<text style="color: #333333;" v-if="queryPage.month">{{queryPage.month}}月</text>
+								<text style="color: #333333;" v-if="queryPage.date">{{queryPage.date}}</text>
+								<span class="iconfont icon-xiala" style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+							</view>
+						</view>
+					</view>
+				</view>
+
+				<view class="order-list" v-if="currentTab.code == 1">
+					<view style="height: 180upx; position: relative;z-index: 9;"></view>
+					<!-- 动态数据 -->
+					<view v-if="LoupanList.length > 0" style="overflow: hidden; position: relative;">
+						<view style="margin-top: 70upx;padding-bottom:30upx;">
+							<view v-for="(item, index) in LoupanList" :key="index"
+								style="display: flex; margin-left:30upx;margin-right: 30upx; 
+								border-radius: 30upx; font-size: 24upx;
+								border-top: 1upx solid #F5F5F5; padding-bottom:30upx;padding-top: 15upx;margin-top: 20upx;background: #FFFFFF; ">
+								<view
+									style="margin-top:-15upx;height:40upx;line-height: 50upx;text-align:center; width: 140upx;">
+									<view v-if="item.status.text == '生产完成'  " style=" color: #FFFFFF;font-size: 24upx;border-bottom-right-radius: 30upx; background:#43CF7C;
+								      border-top-left-radius: 30upx;height: 50upx;width: 140upx;"> 生产完成</view>
+									<view v-if="item.status.text == '生产中'" style=" color: #FFFFFF;font-size: 24upx;border-bottom-right-radius: 30upx; background:#FF8D1A;
+									    border-top-left-radius: 30upx;height: 40upx;width: 140upx;"> 生产中</view>
+									<view
+										v-if="item.status.text == '打印失败' ||item.status.text == '失败' || item.status.text == '取消生产' ||  item.status.text == '等待出料' "
+										style=" color: #FFFFFF;font-size: 24upx;border-bottom-right-radius: 30upx; background:#D43030;									    border-top-left-radius: 30upx;height: 40upx;width: 140upx;">
+										{{item.status.text}}
+									</view>
+								</view>
+								<view style="width: auto; display: flex;" @click="previewImage(item,LoupanList)">
+									<image :src="item.works_image + '?x-oss-process=image/resize,lfit,w_115'"
+										style="width:115upx; height:115upx; margin: auto; align-items: center;margin-left:-130upx; margin-top: 35upx;"
+										mode="aspectFill"></image>
+								</view>
+								<view style="display: flex;flex-direction: column;width: 60%;margin-left: 20upx;">
+									<view style="height: 40upx;font-size: 30upx;font-weight: bold;">
+										{{item.name}}
+									</view>
+									<view style="height: 40upx;font-size:22upx;">
+										{{item.machine_id}}--{{item.goods_specs}}
+									</view>
+									<view @click="reprint(item,index)"
+										style="margin-top: 10upx; display: flex;flex-direction: row; margin-left: 5upx;">
+										<text v-if="item.is_excess == 0"
+											style="margin-right: 10upx;font-size: 22upx;color: #595959; ">套餐卡</text>
+										<text v-if="item.is_excess == 1"
+											style="margin-right: 10upx;font-size: 22upx;color: #595959; ">打印卡</text>
+									</view>
+									<view style="font-size: 26upx;margin-top: 5upx;margin-left: 2upx;">
+										{{item.create_time}}
+									</view>
+									<view v-if="item.min!= '' && item.min!= null"
+										style="font-size: 26upx;margin-left: 5upx;">{{item.min}}(用时)</view>
+								</view>
+								<view v-if=" item.status.value!== 0  " style="width: 20%;display: flex; align-items: center; justify-content: center; 
+								text-align: center; line-height: 30upx; color: #fff;" @click="Reprint(item)">
+									<text style="width: 80upx;height: 80upx; line-height:80upx; font-size: 23upx;text-align:center;color: #FFFFFF;background-color: rgba(67, 207, 124, 1.0);border-radius: 80px;text-align: center;margin-right: 25upx;">
+										恢复</text>
+								</view>
+							</view>
+						</view>
+					</view>
+					<!-- 暂无相关信息 -->
+					<view class="align-center content-color"
+						style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+						v-if=" LoupanList.length == 0 || LoupanList.length == null ">
+						<span class="iconfont icon-wushuju"
+							style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+						<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">当前无打印
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+
+		<!-- 店铺 -->
+		<mpvue-picker ref="mpvuePicker" :themeColor="'#53B2B0'" :mode="mode" :pickerValueDefault="pickerValueDefault"
+			@onChange="onChange" @onConfirm="onConfirm" @onCancel="onCancel" :pickerValueArray="pickerValueArray">
+		</mpvue-picker>
+
+		<!-- 年月日 -->
+		<mpvue-pickernew ref="printingMpvuePicker" :themeColor="'#53B2B0'"
+			:pickerValueDefault="printingpickerValueDefault" @onChange="onChange" @onCancel="onCancel"
+			@onConfirm="onConfirmPrinting" :pickerValueArray="printingPickerValueArray"></mpvue-pickernew>
+
+		<!-- 中间弹框,加货道输入框-->
+		<uni-popup ref="showshareinput" type="center" @change="change">
+			<view style="width:600upx; margin:auto; display: flex; flex-direction: column;">
+				<view
+					style="width:100%; height: 400upx; background: #FFFFFF; border-radius: 10upx; position: relative;">
+					<view style="width:100%; text-align: center; margin:30upx 0 0;">
+						<label>仓库库存({{showshareitem.total_stock}})个</label>
+					</view>
+					<view
+						style="display: flex; align-items: center; margin:50upx 20upx 0; height: 80upx; line-height: 80upx;">
+						<label style="padding-left:20upx;">当前货道库存:</label>
+						<input v-model="showshareitem.stock" style="width: 60%;font-size: 28upx; height: 90upx; line-height: 90upx;
+						background: #f9f9f9;
+						color:#5CE6B6; padding-left: 10upx; border-radius: 5upx;" min="0" :max="maxnumber" :maxlength="maxlength"
+							type="number" @click.stop="StockCountInput()"
+							@input="inputVal(showshareitem, showshareindex)"></input>
+					</view>
+					<view style="width: calc(100% - 40upx); margin: auto; text-align: right;padding:10upx 20upx;">
+						<label style="font-size: 22upx; color: #B2B2B2;">最大只能输入{{maxnumber}}个</label>
+					</view>
+					<view style="width:100%; position: absolute; bottom: 0; 
+					display: flex; height: 100upx; align-items: center;border-radius:0 0 10upx 10upx;">
+						<view @click="cancel('share')"
+							style="width: 50%; background: #B2B2B2; text-align: center;height: 100upx; line-height: 100upx; color: #FFFFFF;">
+							取消</view>
+						<view @click.stop="changeChannel(showshareitem,showshareindex)"
+							style="width: 50%; background: #5CE6B6; text-align: center; height: 100upx; line-height: 100upx; color: #FFFFFF;">
+							确定</view>
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+
+		<!-- 底部弹框 搜索商品名称 -->
+		<uni-popup ref="showshare" :type="type" @change="change">
+			<view class="uni-pop_show" style="width: 100%; margin: auto;">
+				<view style="width: 100%;background: #FFFFFF;border-bottom: 4upx solid #E9E7ED;margin-right: 80upx;">
+					<!-- 搜索框 -->
+					<view class="weui-search-bar">
+						<view class="weui-search-bar_form">
+							<input type="text" class="weui-search-bar_input" placeholder="请输入商品名称"
+								@input='diseaseNameInput' />
+						</view>
+					</view>
+					<view style="width: 100%; height: 550upx; background: #F9F9F9;">
+						<scroll-view scroll-y
+							style="width:100%; height: 550upx; overflow: hidden; overflow-y: scroll; background: #FFFFFF;">
+							<view v-for="(item, index) in GoodsItem" :key="index" @click="selectGood(item)"
+								style="width: calc(100% - 60upx); margin: auto; height: 110upx; display: flex; align-items: center; border-top: 1upx solid #F6F6F6; background: #FFFFFF;">
+								<image :src="item.front_image + '?x-oss-process=image/resize,lfit,w_100'"
+									mode="aspectFit"
+									style="width:70upx; height: 70upx;line-height:70upx; margin: 0 10upx;"></image>
+								<view style="width: calc(100% - 90upx);">
+									<view
+										style="font-size: 25upx;color: #B2B2B2;width: 100%;white-space: nowrap;text-overflow:ellipsis; overflow:hidden; word-break:break-all;">
+										{{item.name}}({{item.title}})
+									</view>
+									<view
+										style="font-size: 25upx;color: #B2B2B2;width: 100%;white-space: nowrap;text-overflow:ellipsis; overflow:hidden; word-break:break-all;">
+										商品库存 : {{item.stock}}
+									</view>
+								</view>
+							</view>
+							<view class="align-center"
+								style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+								v-if="GoodsItem == null  ||  ( GoodsItem != null && GoodsItem.length == 0) ">
+								<span class="iconfont icon-wushuju"
+									style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+								<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">
+									啊嘞,还是一片荒漠</view>
+							</view>
+						</scroll-view>
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+
+		<!-- 打印选择类型 -->
+		<uni-popup ref="printingShowshare" :type="type" @change="change">
+			<view class="uni-share" style="width: 100%; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						选择打印类型
+					</view>
+					<scroll-view scroll-y style="margin: auto; height: 500upx; overflow: hidden; overflow-y: scroll;">
+						<view style="width: calc(100% - 40upx); margin:20upx auto; overflow: hidden;">
+							<view v-for="(item, index) in goodsItem" :key="index" @click="selectMonth(item)"
+								:class="attr == item.goods_name ? 'green':''"
+								style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item.goods_name == null ? '全部' : item.goods_name}}
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view
+					style="height: 90rpx; line-height: 90rpx; font-size: 14px; text-align: center; color: #666; background: #FFFFFF; border-top: 1px solid #EEEEEE;"
+					@click="Printingcancel('share')">取消</view>
+			</view>
+		</uni-popup>
+
+		<!-- 清洗弹框 -->
+		<uni-popup ref="cleanPrint" type="center" @change="changeCleanPrint">
+			<view style="width: 600upx; height: 640upx;  ">
+				<view style="background: #F9F9F9;width: 100%; height: 100%; border-radius: 20upx;
+				align-items: center;
+				display: flex;
+				flex-direction: column;">
+					<image style="width: 320upx; height: 320upx;  margin-top: 80upx; "
+						src="https://img.xiaopiu.com/userImages/img79980184d0e9c4a0.png" mode="aspectFit"> </image>
+					<view style="margin-top: 80upx; font-size: 26upx; color: #999; ">上一次清洗时间:{{clear_time }} </view>
+					<view style="width:200upx; height: 60upx; border-radius: 15upx;
+					 line-height: 60upx; text-align: center; 
+					 background: rgba(67, 207, 124, 1);margin-top: 40upx; color: #fff; " :style="{background: !isClickClean ?'rgba(67, 207, 124, 1)' :'#999' 
+					 }" @click="autoCleanNozzle()">自动清洗喷头
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+
+		<uni-popup ref="cleanCountDown" type="bottom" :maskClick="false">
+			<view style="width: 100%; height: 600upx; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%; height: 100%; border-radius: 20upx  20upx  0upx 0upx;
+				align-items: center;
+				display: flex;
+				flex-direction: column;">
+					<view
+						style="margin-top:220upx;  color: rgba(67, 207, 124, 1);  font-size: 60upx;  font-weight: 800 ">
+						{{countDownTimeCount}}
+					</view>
+					<view style="margin-top: 80upx; font-size: 26upx; color: #999; ">请稍后 </view>
+					<view style="margin-top: 20upx; font-size: 26upx; color: #999; "> 正在清洗中,预计需要一分钟</view>
+				</view>
+			</view>
+		</uni-popup>
+
+		<view v-if="isTouchStart" style=" position: fixed;
+		  top: 0;
+		  left: 0;  
+		  bottom: 0;
+		  right: 0;
+		  width: 100%;
+		  height: 100%;
+		  z-index: 9999;" @touchmove.prevent @mousewheel.prevent></view>
+					
+		 </view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				goodsItem: [{
+						goods_name: '全部',
+						type: -12,
+					},
+					{
+						goods_name: '套餐内',
+						type: 0,
+					},
+					{
+						goods_name: '打印卡',
+						type: 1,
+					},
+				],
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				//默认选中
+				currentTab: {
+					code: 0,
+					name: '机器'
+				},
+				tabBars: [{
+						code: 0,
+						name: '机器'
+					},
+					{
+						code: 2,
+						name: ''
+					},
+					{
+						code: 1,
+						name: '打印'
+					},
+				],
+				//end底部弹框
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				//加载全部交易类型数据
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: null, //货道数据
+				stockData: null, //库存数据
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				// 手指原始位置
+				oldMousePos: {},
+				// 元素原始位置
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartClean: false //是否自动清洗开始
+			};
+		},
+
+		methods: {
+
+              //调转收益列表
+			 toLiquidationList(){
+				 uni.navigateTo({
+				 	url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				 });
+				 
+			 },
+
+             //调转订单列表
+			 toOrderList(){
+				 uni.navigateTo({
+				 	url: '../mine/order?machineid=' + this.queryPage.machine_id,
+				 });
+				 
+			},
+ 
+			touchstart(ev) {
+				ev.preventDefault();
+				this.isTouchStart = true;
+				const selectDom = ev.currentTarget;
+				const {
+					pageX,
+					pageY
+				} = ev.touches[0]; // 手指位置
+				const {
+					offsetLeft,
+					offsetTop
+				} = selectDom; // 元素位置
+				// 手指原始位置
+				this.oldMousePos = {
+					x: pageX,
+					y: pageY
+				};
+				// 元素原始位置
+				this.oldNodePos = {
+					x: offsetLeft,
+					y: offsetTop
+				};
+			},
+
+			touchMove(ev) {
+				ev.preventDefault();
+				const selectDom = ev.currentTarget;
+				// x轴偏移量
+				const lefts = this.oldMousePos.x - this.oldNodePos.x;
+				// y轴偏移量
+				const tops = this.oldMousePos.y - this.oldNodePos.y;
+				const {
+					pageX,
+					pageY
+				} = ev.touches[0]; // 手指位置
+				this.autoCleanLeft = pageX - lefts;
+				this.autoCleanTop = pageY - tops;
+			},
+           
+			touchEnd(ev) {
+				ev.preventDefault();
+				this.isTouchStart = false;
+			},
+
+			//自定清洗               
+			autoCleanNozzle() {
+				if (this.isClickClean) {
+					return;
+				}
+				this.isClickClean = true;
+				this.$refs['cleanPrint'].setMaskClick(false);
+				uni.showLoading({
+					title: '清洗中...',
+				})
+				this.intCountTimer = 0;
+				this.countDownTimeCount = 1;
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/clearHead',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.autoClick()
+				}).catch(err => {
+					this.cleanTimeData();
+					uni.showToast({
+						title: err.msg,
+						duration: 1000,
+						icon: "none",
+					})
+				})
+			},
+
+			//清除计时器数据
+			cleanTimeData() {
+				this.isAutoStartClean = false;
+				clearInterval(this.timer);
+				this.timer = null;
+				clearInterval(this.countDownTime);
+				this.countDownTime = null;
+				this.intCountTimer = 0;
+				this.isClickClean = false;
+				this.$refs['cleanPrint'].setMaskClick(true);
+				uni.hideLoading();
+				this.$refs['cleanCountDown'].close();
+				this.$refs['cleanPrint'].open();
+				this.countDownTimeCount = 1;
+			},
+
+			//5秒一次定时器
+			autoClick() {
+				this.$refs['cleanCountDown'].open();
+				this.$refs['cleanPrint'].close();
+				this.isAutoStartClean = true;
+				let that = this;
+				this.timer = setInterval(function() {
+					that.getCleanStatus();
+				}, 5000);
+				this.countDownTime = setInterval(function() {
+					that.countDownTimeCount++;
+				}, 1000);
+			},
+
+			//获取状态值
+			getCleanStatus() {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/getClearHeadStatus',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					if (this.countDownTimeCount >= 60) {
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+					let clear_status = result.clear_status.value;
+					if (clear_status == 0) {
+						this.$refs['cleanPrint'].setMaskClick(true);
+						if (result.clear_time) {
+							this.clear_time = result.clear_time;
+						}
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+				}).catch(err => {
+
+				})
+			},
+
+			//清洗打印弹窗
+			cleanPrintPop() {
+				this.$refs['cleanPrint'].open();
+			},
+
+			changeCleanPrint(obj) {
+				this.isShowPop = obj.show;
+			},
+
+			//选中普通设备列表
+			selectStockList(index, item) {
+				var resultList = this.stockDataList;
+				this.stockDataList = [];
+				var isDown = item.isDown;
+				if (isDown) {
+					isDown = false
+				} else {
+					isDown = true
+				}
+				resultList.forEach(itemData => {
+					if (itemData.id == item.id) {
+						itemData.isDown = isDown
+					}
+				})
+				this.stockDataList = resultList;
+			},
+
+			//调转库存列表
+			toStockList() {
+				uni.navigateTo({
+					url: '../mall/stockList?id=' + this.queryPage.machine_id,
+				});
+			},
+
+			//获取库存新接口
+			getStockData() {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/getStockDetail',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.stockData = result;
+					var max = 60;
+					var first = 20;
+					this.stockData.list.forEach((item, index) => {
+						item.id = index
+						item.isDown = false;
+						if (index == 0) {
+							item.row2 = max * item.need_stock / first;
+							if (item.row2 <= 0) {
+								item.row2 = 0;
+							}
+							first = parseFloat(item.need_stock);
+							if (first <= 1) {
+								first = 20;
+							}
+						} else {
+							item.row2 = max * parseFloat(item.need_stock / first)
+							if (item.row2 <= 0) {
+								item.row2 = 0;
+							}
+						}
+					})
+					this.stockDataList = this.stockData.list
+				}).catch(err => {
+
+				})
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//预览显示图片
+			showPreviewImage(e, id) {
+				if (e == null || e == "") {
+					uni.showToast({
+						title: '暂时没有定制二维码',
+						icon: 'none'
+					});
+					return
+				}
+				var current = e + "?x-oss-process=image/watermark,text_" + this.getStrToBase64(id) + ",g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a"; //这里获取到的是一张本地的图片
+				uni.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+
+			//获取剩余量次数相差
+			getPrintSurplusCount(count) {
+				try {
+					if (count >= 200) { //白色
+						return 1;
+					} else if (count < 200 && count >= 50) { //橙色
+						return 2;
+					} else if (count < 50) { //红色
+						return 3;
+					}
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+			//获取相差天数 
+			getDaysDifference(time) {
+				try {
+					let day = new Date(time.replace(/-/g, "/")).getTime() - new Date().getTime(); //日期转时间戳
+					let dayCount = Math.floor(day / 86400000); //时间戳获取天数
+					return dayCount;
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+			//格式化时间
+			dateFormat(time) {
+				try {
+					var dt = new Date(time.replace(/-/g, '/'));
+					var y = dt.getFullYear();
+					var m = dt.getMonth() + 1;
+					var d = dt.getDate();
+					return y + '年' + m + '月' + d + '日';
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				if(time == undefined){
+					return "";
+				}
+				return time;
+			},
+
+			//调转明细页面
+			packageDetail(machineId) {
+				let machineid = machineId;
+				uni.navigateTo({
+					url: '../mine/PrintUseDetail?machineid=' + machineid + '&print_type=' + this.print_type
+				});
+			},
+
+			Reprint(item) {
+				if (item.status.value == 0) {
+					return;
+				}
+				uni.showModal({
+					title: '温馨提示',
+					content: '是否此订单恢复打印?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							//恢复打印的接口:
+							logoservice.MachineStockGoodsList({
+								m: 'Machine/repeatPrint',
+								machine_id: item.machine_id,
+								id: item.id,
+							}).then(result => {
+								uni.showToast({
+									title: '恢复订单打印成功',
+									icon: 'none'
+								});
+								item.status.value = 0
+								item.status.text = "等待出料"
+							}).catch(err => {
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+							
+						}
+					}
+				});
+			},
+
+			//代理商名字
+			partnername(partner_id, partner) {
+				var partner_name = '尚未铺设';
+				if (partner) {
+					partner.forEach(item => {
+						if (item.id == partner_id) {
+							partner_name = item.name
+						}
+					});
+				}
+				return partner_name
+			},
+
+			tomain() {
+				uni.reLaunch({
+					url: "/pages/index/home"
+				})
+			},
+
+			//打印年月日printing  Printing
+			printingShowPicker(mode) {
+				this.$refs.printingMpvuePicker.show();
+			},
+
+			//日期确定
+			onConfirmPrinting(e) {
+				this.queryPage.year = null
+				this.queryPage.month = null
+				this.queryPage.date = null
+				if (e.value.length == 1) {
+					this.queryPage.year = e.value[0]
+				} else if (e.value.length == 2) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + e.value[1] //补齐
+					}
+					this.queryPage.month = e.value[0] + '-' + myMonth
+				} else if (e.value.length == 3) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth //补齐
+					}
+					let mydate = e.value[2]
+					if (mydate < 10) {
+						mydate = '0' + e.value[2] //补齐
+					}
+					this.queryPage.date = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				//数据加载状态处理 false
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.LoupanList = []
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//打开类型
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['printingShowshare'].open()
+				})
+				this.getGoodsAttrList()
+			},
+
+			Printingcancel(type) {
+				this.$refs['printingShowshare'].close()
+			},
+
+			selectMonth(item) {
+				if (item.type == -12) {
+					this.attr = "全部打印类型";
+					this.queryPage.is_excess = null;
+				} else {
+					this.attr = item.goods_name ? item.goods_name : null
+					this.queryPage.is_excess = item.type
+				}
+				this.$refs['printingShowshare'].close();
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//更换弹框
+			showshareclick(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let itema = JSON.stringify(item)
+				let itemb = JSON.parse(itema);
+				this.showshareitem = itemb;
+				this.showshareindex = index;
+				this.$nextTick(() => {
+					this.$refs['showshareinput'].open()
+				})
+			},
+
+			change(e) {
+
+			},
+
+			//库存数量输入
+			StockCountInput(e) {
+				this.isOnclickItem = true;
+				var that = this;
+				setTimeout(function() {
+					that.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是2秒
+			},
+
+			inputVal(item, index) {
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let StcokListsnumber = item.total_stock
+				if (item.stock > this.maxnumber) {
+					uni.showToast({
+						title: '最大只能输入' + this.maxnumber + '个',
+						icon: 'none',
+					});
+					item.stock = StcokListsnumber > this.maxnumber ? this.maxnumber : StcokListsnumber;
+					return false;
+				}
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//pop选中商品
+			selectGood(item) {
+				this.$refs["showshare"].close();
+				var that = this;
+				let index;
+				if (this.selectItem != null) {
+					that.StcokList.forEach((items, indexNumber) => {
+						if (items.id == this.selectItem.id) {
+							index = indexNumber;
+						}
+					});
+				}
+				uni.showModal({
+					title: '确认',
+					content: '是否关联当前商品?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							if (that.list.used_applets == '3') {
+								that.StcokList[index].stock = item.stock > 12 ? 12 : item.stock;
+							}
+							if (that.list.used_applets == '4') {
+								that.StcokList[index].stock = item.stock > 7 ? 7 : item.stock;
+							}
+							that.StcokList[index].title = item.title; //name
+							that.StcokList[index].name = item.name;
+							that.StcokList[index].front_image = item.front_image;
+							that.StcokList[index].goods_id = item.goods_id;
+							that.StcokList[index].dict_id = item.dict_id;
+							that.StcokList[index].total_stock = item.stock;
+							that.StcokList[index].isShowPullButtom = false;
+							that.confirmChangeChannel(that.StcokList[index])
+						} 
+					}
+				});
+			},
+
+			//确认更换货道
+			confirmChangeChannel(item) {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/saveStock',
+					id: item.id,
+					machine_id: this.queryPage.machine_id,
+					goods_id: item.goods_id,
+					goods_size: item.goods_size,
+					stock: item.stock,
+					dict_id: item.dict_id
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: "更换成功",
+						icon: 'none'
+					});
+				}).catch(err => {
+					uni.hideLoading();
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.StcokList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.loadStockList(Enums.DATA_DIRECTION.UP);
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//下架功能
+			shelvesGood(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				var _this = this
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品下架吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							if (item.goods_id == 0) {
+								uni.showToast({
+									title: "还没绑定商品不能下架",
+									icon: 'none'
+								});
+								_this.StcokList[index].isShowPullButtom = false;
+								_this.SortNumber++;
+								_this.StcokList[index].SortNumber = _this.SortNumber;
+								this.setData({
+									StcokList: _this.StcokList
+								})
+							} else {
+								uni.showLoading({
+									title: '正在加载中...'
+								})
+								logoservice.MachineSavePartnerStock({
+									m: 'Machine/saveStock',
+									id: item.id,
+									machine_id: _this.queryPage.machine_id,
+									goods_id: item.goods_id,
+									goods_size: item.goods_size,
+									stock: item.stock,
+									dict_id: item.dict_id,
+									type: "off",
+								}).then(result => {
+									uni.hideLoading();
+									uni.showToast({
+										title: "下架成功",
+										icon: 'none'
+									});
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+								}).catch(err => {
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+									uni.hideLoading();
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								})
+							}
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			//显示下面选择按钮 
+			showPullButton(item, index) {
+				if (this.isOnclickItem == false) {
+					var that = this;
+					if (item.isShowPullButtom) {
+						that.StcokList[index].isShowPullButtom = false;
+					} else {
+						that.StcokList[index].isShowPullButtom = true;
+					}
+					this.SortNumber++;
+					that.StcokList[index].SortNumber = this.SortNumber;
+					this.setData({
+						StcokList: that.StcokList
+					})
+				}
+			},
+
+			//修改货道
+			changeChannel(item, index) {
+				this.$refs["showshareinput"].close();
+				this.$refs["showshare"].close();
+				var _this = this
+				_this.isOnclickItem = true;
+				setTimeout(function() {
+					_this.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是1秒
+				let jsonLists = JSON.parse(_this.StcokLists);
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品货道调整吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							uni.showLoading({
+								title: '正在加载中...'
+							})
+							logoservice.MachineSavePartnerStock({
+								m: 'Machine/saveStock',
+								id: item.id,
+								machine_id: _this.queryPage.machine_id,
+								goods_id: item.goods_id,
+								goods_size: item.goods_size,
+								stock: item.stock,
+								dict_id: item.dict_id
+							}).then(result => {
+								uni.hideLoading();
+								uni.showToast({
+									title: "修改成功",
+									icon: 'none'
+								});
+								_this.StcokList[index].stock = item.stock;
+							}).catch(err => {
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//获取底部弹框数据
+			loadStockGoodsList(goods_name) {
+				logoservice.MachineStockGoodsList({
+					m: 'Machine/getStockGoodsList',
+					machine_id: this.queryPage.machine_id,
+					goods_name: goods_name,
+				}).then(result => {
+					this.GoodsItem = result;
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+
+			chooseImage: async function() {
+				if (this.$base.Userres.be_child == 1) return;
+				var _this = this
+				uni.chooseImage({
+					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['camera', 'album'], //从相册选择
+					count: 1,
+					success: (res) => {
+						let tempFilePaths = res.tempFilePaths;
+						uni.showLoading({
+							title: '图片正在上传...'
+						})
+						uni.uploadFile({
+							url: 'https://tprint.refinecolor.com/partnerapplets/index',
+							filePath: tempFilePaths[0],
+							method: 'POST',
+							name: 'file',
+							header: {
+								'content-type': 'multipart/form-data'
+							},
+							formData: {
+								m: 'Upload/upload'
+							}, //请求额外的form data
+							success: function(res) {
+								logoservice.MachinesaveCover({
+									m: 'Machine/saveCover',
+									machine_id: _this.queryPage.machine_id,
+									cover: JSON.parse(res.data).data.url
+								}).then(result => {
+									uni.hideLoading();
+									uni.showToast({
+										title: '上传成功',
+										icon: 'none',
+										duration: 3000
+									})
+									_this.listdetail()
+								}).catch(err => {
+									uni.hideLoading();
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								})
+							},
+							fail: function(res) {
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							}
+						})
+					}
+				})
+			},
+
+			//预览图片
+			previewImage(imgs, list) {
+				let listattr = []
+				list.forEach(item => {
+					listattr.push(item.works_image)
+				})
+				var current = imgs.works_image; //这里获取到的是一张本地的图片
+				wx.previewImage({
+					current: current, // 当前显示图片的http链接
+					urls: listattr // 需要预览的图片http链接列表
+				})
+			},
+
+			datatimeLimited(time) {
+				return new Date(time.replace(/-/g, "/"))._format('HH:mm:ss');
+			},
+
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			categoryaddress(address) {
+				var dataaddress = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == address) {
+							dataaddress = item.address.replace('<br/>', '');
+						}
+					});
+				}
+				return dataaddress
+			},
+
+			//店铺
+			showPicker(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.pickerValueArray = this.shopList
+				this.pickerValueArray.filter(item => {
+					item.label = item.short_name
+					item.value = item.id
+				});
+				this.$refs.mpvuePicker.show();
+			},
+
+			//确定
+			onConfirm(e) {
+				uni.showLoading({
+					title: '正在关联中...'
+				})
+				logoservice.Machinelistdetail({
+					m: 'Machine/bindShop',
+					machine_id: this.queryPage.machine_id,
+					shop_id: e.value[0]
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '关联店铺成功',
+						icon: 'none'
+					});
+					this.listdetail()
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+			
+			onChange(e) {
+				
+			},
+			
+			onCancel(e) {
+				
+			},
+			
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			tapTab(tab) {
+				this.currentTab = tab;
+				if (this.currentTab.code == 0) {
+					this.listdetail()
+				}
+				if (this.currentTab.code == 1) {
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.LoupanList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+				}
+				if (this.currentTab.code == 2) {
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.StcokList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.getStockData();
+				}
+			},
+
+			//设备挂起
+			onSefaultStatus(e) {
+				this.list.flag.value = e.detail.value ? 'N' : 'Y';
+				if (e.detail.value == true) {
+					uni.showLoading({
+						title: '设备挂起中...'
+					})
+				} else {
+					uni.showLoading({
+						title: '设备恢复中...'
+					})
+				}
+				logoservice.Machinestatus({
+					m: 'Machine/status',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					uni.hideLoading();
+					if (e.detail.value == true) {
+						uni.showToast({
+							title: '挂起成功'
+						})
+					} else {
+						uni.showToast({
+							title: '恢复成功'
+						})
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+					if (this.list.flag.value == 'N') {
+						this.list.flag.value = 'Y'
+					} else if (this.list.flag.value == 'Y') {
+						this.list.flag.value = 'N'
+					}
+				})
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						if (this.list.show_clean) {
+							this.show_clean = this.list.show_clean
+						}
+						if (this.list.clear_time) {
+							this.clear_time = this.list.clear_time
+						}
+						if (this.list.edition != null && this.list.edition.mark == 'standard') {
+							this.print_type= 0 ;
+						} else if (this.list.edition != null && this.list.edition.mark == 'unlimited') {
+							this.print_type = 1;
+						}
+						let ink = this.list.ink;
+						if (ink.length >= 6) {
+							this.inkStatusC = ink.substring(0, 1) == 0 ? true : false;
+							this.inkStatusM = ink.substring(1, 2) == 0 ? true : false;
+							this.inkStatusY = ink.substring(2, 3) == 0 ? true : false;
+							this.inkStatusK = ink.substring(3, 4) == 0 ? true : false;
+							this.inkStatusW = ink.substring(4, 5) == 0 ? true : false;
+							this.inkStatusHas = ink.substring(5, 6) == 0 ? true : false;
+						}
+						this.list.default_package.create_date = this.dateFormat(this.list.default_package.expire_date);
+						if (this.list.machine_category_id == 63) {
+							this.tabBars = [{
+										code: 0,
+										name: '机器'
+									},
+									{
+										code: 1,
+										name: '打印'
+									},
+									{
+										code: 2,
+										name: '库存'
+									},
+								],
+								this.list.isSinglePlatep = false;
+						}
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//设备打印信息 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//下拉更新时,查询结果集
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//做滚动加载使用
+			loadMore() {
+				if (this.isTouchStart || this.currentTab.code == 0) {
+					return;
+				}
+				if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				if (this.currentTab.code == 1) {
+					this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+				}
+				if (this.currentTab.code == 2) {
+					this.loadStockList(Enums.DATA_DIRECTION.DOWN)
+				}
+			},
+
+			//获取日期
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				this.queryPage.date = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+			},
+
+			//获取月份
+			getMonth() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				this.queryPage.month = myDate.getFullYear() + '-' + myMonth;
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+			if (this.isTouchStart) {
+				return;
+			}
+			if (this.currentTab.code == 0) {
+				this.listdetail()
+			}
+			if (this.currentTab.code == 1) {
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			}
+			if (this.currentTab.code == 2) {
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.StcokList = []
+				this.loadStockList(Enums.DATA_DIRECTION.UP);
+			}
+			uni.stopPullDownRefresh();
+		},
+
+		//上拉加载
+		onReachBottom() {
+			if (this.currentTab.code == 0 || this.isTouchStart) {
+				return;
+			}
+			if (this.LoupanList.length < 6) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			if (this.currentTab.code == 1) {
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN)
+			}
+		},
+
+		onLoad(options) {
+			//设置时间
+			let that = this;
+			uni.getSystemInfo({
+				success(res) {
+					that.autoCleanLeft = res.windowWidth - 100;
+					that.autoCleanTop = res.windowHeight - 180;
+				}
+			});
+			this.getMonth();
+			this.printingPickerValueArray = ['month'];
+			this.queryPage.machine_id = options.id
+			uni.setNavigationBarTitle({
+				title: this.queryPage.machine_id
+			})
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+						this.is_inner = this.$base.Userres.is_inner
+						logoservice.setwixinInfo(result);
+						this.listdetail();
+						this.machineGetShopList();
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+			
+				}
+			});
+		},
+		onShow() {
+			this.isTouchStart = false;
+			if (this.$base != null && this.$base.Userres != null) {
+				this.be_child = this.$base.Userres.be_child //子代理
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/* 底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+        width: 100%;
+		height: 100%;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 100upx;
+
+			.order-list {
+				min-height: 350upx;
+				//width: 100%;
+				margin-right: 5upx;
+				width: calc(100% - 5upx);
+				border-radius: 10upx;
+
+				.item {
+					min-height: 35upx;
+					display: flex;
+					margin-left: 20upx;
+					align-items: center;
+					font-size: 28upx;
+
+					.text {
+						width: 250upx;
+						/*padding-left: 25upx; */
+						color: #353535;
+					}
+
+					.value {
+						width: calc(100% - 280upx);
+						display: flex;
+
+						.prick {
+							width: calc(100% - 40upx);
+						}
+
+						.fa-angle-right {
+							width: 40upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx
+	}
+	
+</style>
diff --git a/pages/mall/eq-profit.vue b/pages/mall/eq-profit.vue
new file mode 100644
index 0000000..6a7669e
--- /dev/null
+++ b/pages/mall/eq-profit.vue
@@ -0,0 +1,465 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<view style="position: fixed; width: 100%;">
+				<view style="width:100%;text-align: center;padding: 30upx 0; background: #F1F1F1;" @click="togglePopup()">
+					<text>{{directiontext == null ? '全部交易类型' : directiontext}}</text>
+					<span class="iconfont icon-xiala" style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+				</view>
+				<view style="display: flex; padding: 30upx 0; background: #F6F6F6;">
+					<!-- 年月日 -->
+					<view style="width: calc(100% / 2); text-align: left; padding-left: 20upx;" @click="showPicker('selector')">
+						<text v-if="queryPage.year">{{queryPage.year}}年</text>
+						<text v-if="queryPage.month">{{queryPage.month}}月</text>
+						<text v-if="queryPage.date">{{queryPage.date}}</text>
+						<text v-if="!queryPage.date && !queryPage.month && !queryPage.year">全部</text>
+						<span class="iconfont icon-xiala" style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+					</view>
+					<!-- 状态类型 -->
+					<view style="width: calc(100% / 2); text-align: right; padding-right: 20upx;visibility: hidden;" 
+					v-if="queryPage.machine_id != null || queryPage.billing_id != null">
+						<picker @change="bindPickerChange" :value="queryPage.status" :range="array">
+							{{array[queryPage.status] || '全部'}}
+							<span class="iconfont icon-xiala" style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+						</picker>
+					</view>
+				</view>
+				<view style="display: flex; padding: 0 20upx 20upx; color: #BCBEC1; background: #F6F6F6; font-size: 24upx;">
+					<view>收入明细:{{queryPage.count || '0'}}笔</view>
+					<view style="margin-left: 10upx;">收入金额:¥{{settle_amount || '0'}}元</view>
+				</view>
+			</view>
+			<!--动态数据-->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long" style="padding-top: 252upx;">
+				<view>
+					<view v-for="(item, index) in LoupanList" :key="index" class="eq_list" @click="details(item)">
+						<view class="eq_list_div">
+							<view class="full-width eq_list_ul">
+								<text class="eq_list_ul_left"  v-if="item.direction.value != 'withdrawal'">{{item.goods_attr || ''}}</text>
+								 <text class="eq_list_ul_right">
+									<text v-if="item.settle_amount > 0" style="color:#5CE6B6;font-size: 30upx;">+ {{item.settle_amount || '0'}}</text>
+									<text v-else style="color:#F67273;font-size: 30upx;">{{item.settle_amount || '0'}}</text>
+								</text> 
+							</view>
+							<view class="full-width eq_list_ul" style="color: #BCBEC1; font-size: 24upx;">
+							 	<text style="width: 40%;">{{item.create_time}}</text>
+								<text style="width: 60%; text-align: right;color:#F67273;" v-if="item.direction.value == 'expense'">退款</text>
+								<text style="width: 60%; text-align: right;color:#F67273;" v-if="item.direction.value == 'withdrawal'">提现</text>
+							</view>
+						</view>
+					</view>
+				</view>
+				<!--暂无相关信息-->
+				<view class="align-center content-color" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);" 
+				  v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju" style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">暂无相关信息</view>
+				</view>
+			</view>
+			<!--动态数据完 -->
+		</view>
+		<!--返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+		<mpvue-picker ref="mpvuePicker"
+		:themeColor="'#53B2B0'" 
+		:pickerValueDefault="pickerValueDefault"
+		@onChange="onChange"
+		@onCancel="onCancel"
+		@onConfirm="onConfirm" 
+		:pickerValueArray="pickerValueArray"></mpvue-picker>
+		<uni-popup ref="showshare" :type="type"  @change="change">
+			<view class="uni-share" style="width: 100%; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 4upx solid #E9E7ED;">
+					<view style="width: 100%;border-bottom: 2upx solid #E9E7ED; height:100upx; text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						选择交易类型
+					</view>
+					<scroll-view scroll-y style="margin: auto; height: 500upx; overflow: hidden; overflow-y: scroll;">
+						<view style="width: calc(100% - 40upx); margin:20upx auto; overflow: hidden;">
+							<view v-for="(item, index) in directionlist" :key="index" @click="selectMonthdirection(item)" :class="queryPage.direction == item.val ? 'green':''"
+							style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item.text}}
+							</view>
+						</view>
+					</scroll-view>
+				 </view>
+				<view class="uni-share-btn" @click="cancel('share')">取消</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	import Enums from '@/util/Enums';
+	//自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePickernew.vue';
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker
+		},
+		computed: {},
+		data() {
+			return {
+				long:false,
+				LoupanList: [], //数据
+				// 返回顶部
+				totopstatus: false,
+				// 上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m:'Money/statementList',
+					billing_id:null,
+					machine_id:null,
+					page: 1,
+					per_page: 12,
+					count:null,
+					status: null,//2付款状态
+					year: null,// 年
+					month: null,// 月
+					date: null,// 日
+					goods_attr: null,// 商品
+					direction:null  // 类型expense退款 |income 收入|withdrawal  提现
+				},
+				goodsItem:[],
+				order_amount:null,
+				settle_amount:null,
+				//年
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				array: ['待清算', '待结算', '已结算','全部'],
+				type: 'bottom',
+				directionlist:[{text:'全部',val:null},{text:'收入',val:'income'},{text:'退款',val:'expense'}],
+				directiontext:null,
+			};
+		},
+		mounted(){
+			
+		},
+		methods: {
+			details(item){
+				if(item.direction.value == 'withdrawal'){
+					uni.navigateTo({
+						url: '/pages/mine/Withdrawal-details?id=' + item.id,
+					});
+				}else{
+					uni.navigateTo({
+						url: '/pages/mine/Liquidation-details?id=' + item.id,
+					});
+				}
+			},
+			bindPickerChange (e) {
+				if(e.target.value == 3){
+					this.queryPage.status = null
+				}else{
+					this.queryPage.status = e.target.value
+				}
+				this.LoupanList = []
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.count = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			showPicker(mode) {
+				this.$refs.mpvuePicker.show();
+			},
+			//确定
+			onConfirm(e) {
+				this.queryPage.year = null
+				this.queryPage.month = null
+				this.queryPage.date = null
+				if(e.value.length == 1){
+					this.queryPage.year = e.value[0]
+				}else if(e.value.length == 2){
+					let myMonth = e.value[1]
+					if(myMonth<10){
+						myMonth = '0'+ e.value[1]  //补齐
+					}
+					this.queryPage.month = e.value[0] + '-' + myMonth
+				}else if(e.value.length == 3){
+					let myMonth = e.value[1]
+					if(myMonth<10){
+						myMonth = '0'+ myMonth  //补齐
+					}
+					let mydate = e.value[2]
+					if(mydate<10){
+						mydate = '0'+ e.value[2]  //补齐
+					}
+					this.queryPage.date = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				this.LoupanList = []
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.count = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			onChange(e) {
+			  //console.log(e);
+			},
+			onCancel(e) {
+			  //console.log(e);
+			},
+			// 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({title: '正在加载中...'})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({title: '没有更多数据了!', icon: 'none'});
+						}, 500);
+					}
+				}
+				logoservice.MoneystatementList(this.queryPage).then(result => {
+					//console.log(result.data)
+					this.long = true
+					let queryList = result.data
+					// 下拉更新时,查询结果集
+					// 触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					// console.log(this.LoupanList)
+					// 分页对象处理
+					this.queryPage.count = result.count;
+					this.queryPage.per_page = result.per_page;
+					this.order_amount = result.gross_profit_total;
+					this.settle_amount = result.settle_amount_total.toFixed(2);
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					// uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg ? err.msg : err.data,
+						icon: 'none'
+					});
+				});
+			},
+			//返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			//做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({title: '没有更多数据了!', icon: 'none'});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+			cancel(type) {
+				this.$refs['show' + type].close()
+			},
+			change(e) {
+				console.log('是否打开:' + e.show)
+			},
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['show' + 'share'].open()
+				})
+			},
+			selectMonthdirection(item){
+				this.queryPage.direction = item.val;
+				this.directiontext = item.text;
+				this.$refs['show' + 'share'].close();
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.count = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			// selectMonth(item) {
+			// 	this.queryPage.goods_attr = item;
+			// 	this.$refs['show' + 'share'].close();
+			// 	this.dataLoadState.pullDownRefresh = false;
+			// 	this.dataLoadState.reachBottom = false;
+			// 	this.queryPage.page = 1;
+			// 	this.queryPage.count = 0;
+			// 	this.LoupanList = []
+			// 	this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			// },
+			getGoodsAttrList(){
+				//加载全部交易类型数据
+				logoservice.MoneystatementList({m: 'Money/getGoodsAttrList'}).then(result => {
+		
+					this.goodsItem = result;
+					this.goodsItem.unshift(null)
+				}).catch(res => {
+					uni.showToast({title: res.msg ? res.msg: '未查到交易类型选择', icon: 'none'});
+				});
+			}
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+		},
+		// 上拉加载
+		onReachBottom() {
+			if (this.LoupanList.length < 12) {
+				return setTimeout(() => {
+					uni.showToast({title: '没有更多数据了!', icon: 'none'});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+		onLoad(options) {
+			// 门店关联
+			if(options.shop_id){
+				this.queryPage.shop_id = options.shop_id
+				wx.setNavigationBarTitle({title: options.shop_name})
+			}
+			// 设备关联
+			if(options.machineid){
+				this.queryPage.machine_id = options.machineid
+				wx.setNavigationBarTitle({title: options.machineid})
+			}
+			// 账单关联
+			if(options.billingid){
+				this.queryPage.billing_id = options.billingid
+				wx.setNavigationBarTitle({title: options.title})
+			}
+			// 可用余额
+			if(options.id){
+				this.queryPage.status = options.id
+				if(options.id == 2){
+					wx.setNavigationBarTitle({title: '可用明细'})
+				}else{
+					wx.setNavigationBarTitle({title: '冻结明细'})
+				}
+			}
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({ m:'Init/init',code:res.code}).then(result => {
+						logoservice.setwixinInfo(result);
+						this.LoupanList = []
+						this.queryPage.page = 1;
+						this.queryPage.count = 0;
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+						this.getGoodsAttrList()
+					}).catch(err => {
+						uni.navigateTo({url: 'login',});
+					})
+				},
+				fail: (err) => {
+					//console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+	.eq_list{
+		width: 100%;
+		padding: 0upx 20upx; 
+		background: #FFFFFF;
+		.eq_list_div{
+			border-top: 1upx solid #F5F5F5; 
+			padding: 20upx 0;
+			.eq_list_ul{
+				display: flex; 
+				align-items: center; 
+				line-height: 40upx;
+				.eq_list_ul_left{
+					width: 300upx;
+				}
+				.eq_list_ul_right{
+					width: calc(100% - 300upx); 
+					text-align: right;
+					font-weight: 400;
+				}
+			}
+		}
+		
+	}
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+	
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+	.uni-share-btn {
+		height: 90rpx;
+		line-height: 90rpx;
+		font-size: 14px;
+		text-align: center;
+		color: #666;
+		background: #FFFFFF;
+		border-top: 1px solid #EEEEEE;
+		// margin: 20upx 0;
+	}
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+</style>
diff --git a/pages/mall/exclusive-services.vue b/pages/mall/exclusive-services.vue
new file mode 100644
index 0000000..ce72c96
--- /dev/null
+++ b/pages/mall/exclusive-services.vue
@@ -0,0 +1,623 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+
+				<view class="order-list" v-if="list">
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">出厂时间</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{list.create_time}}</text>
+							</label>
+						</view>
+
+						<view class="item full-width" @click="cleanNozzleHistory()">
+							<label class="text content-color">保障剩余时间</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.safeguard_time}}天
+								</view>
+							</label>
+						</view>
+					</view>
+
+					<view style="margin-top: 30upx;
+					border-radius: 20upx;
+					width: calc(100% - 60upx);
+					background: #fff;
+					margin: 0upx 30upx 10upx 30upx;
+					border-radius: 20upx;
+					box-shadow: 0 0 10upx 10upx #F5F5F5;">
+						<!-- 	 @click.stop="showPreviewImage(urlImage)" -->
+
+
+						<image  show-menu-by-longpress="true" :src="urlImage"   @click.stop="showPreviewImage(urlImage)" 
+							style="width: 300upx;margin: auto; display: block;" mode="aspectFit"> </image>
+					</view>
+				</view>
+			</view>
+
+			<view class="item-new-list-text" style="margin-top: 0upx;">通过扫描二维码、或点击咨询按钮,即可联系您的专属售后服务。</view>
+
+			<button ref="button"   class="save_bt" @click="goCustomer()">咨询</button>
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew,
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				list: null,
+				urlImage: "https://img.colorpark.cn/back/169819716165386ea9a0ef9.png",
+				qrCodeUrl: ""
+			};
+		},
+
+
+
+		methods: {
+
+
+		
+
+			//预览显示图片
+			showPreviewImage(e, id) {
+				if (e == null || e == "") {
+					uni.showToast({
+						title: '暂时没有定制二维码',
+						icon: 'none'
+					});
+					return
+				}
+				var current = e + "?x-oss-process=image/watermark,text_" + this.getStrToBase64(id) +
+					",g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a"; //这里获取到的是一张本地的图片
+				uni.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			goCustomer() {
+				uni.openCustomerServiceChat({
+					corpId: 'wwa5849fc2f69d8e53',
+					//showMessageCard: true,
+					extInfo: {
+						url: 'https://work.weixin.qq.com/kfid/kfcc68d63fbdbcc9644'
+					},
+					success: (e) => {
+						//console.log('e', e)
+					},
+					fail: (err) => {
+						//console.log('err', err)
+					}
+				})
+			},
+
+
+
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+
+		},
+
+		//上拉加载
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+			//this.machineGetShopList();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/first-ink-installation.vue b/pages/mall/first-ink-installation.vue
new file mode 100644
index 0000000..6c10d23
--- /dev/null
+++ b/pages/mall/first-ink-installation.vue
@@ -0,0 +1,887 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+				<!-- 机器 -->
+				<view class="order-list">
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">状态</label>
+							<label class="value content-color" v-if="list.flag.value == 'Y'">
+								<text v-if="list.status.value == 0" style="text-align:right; color: #808080;"
+									class="full-width">离线</text>
+								<text v-if="list.status.value == 1 || list.status.value == 2 "
+									style="text-align:right; color: #5CE6B5;" class="full-width">在线</text>
+								<text v-if="list.status.value == 3 || list.status.value == 4 || list.status.value == 5 "
+									style="text-align:right; color: #D43030;" class="full-width">故障</text>
+							</label>
+							<label class="value content-color" v-if="list.flag.value == 'N'">
+								<text style="text-align:right; color: #FF8D1A;" class="full-width">锁定</text>
+							</label>
+						</view>
+					</view>
+
+					<view style="margin-top: 30upx;
+					border-radius: 20upx;
+					width: calc(100% - 60upx);			
+					background: #fff;
+					margin: 0upx 30upx 10upx 30upx;
+					border-radius: 20upx;
+					box-shadow: 0 0 10upx 10upx #F5F5F5;">
+						<img src="https://img.colorpark.cn/back/169811945365373f1dccaf2.png"
+							style="width: 300upx;margin: auto; display: block;" mode="aspectFit">
+					</view>
+				</view>
+			</view>
+
+			<view class="item-new-list-text" style="margin-top: 30upx;">
+				装墨是将墨管与喷头填充满墨水,所以对墨水消耗很大,建议只用于新机装墨。机器必须通电,且有正常连接网络,才能完成远程喷嘴检测操作。</view>
+
+			<!-- <view class="save_bt" @click="showConfirmCenterPop()">开始装墨</view> -->
+
+			<view class="save_bt" @click="showConfirmCenterPop()" v-if="list"
+				:style="{background: list.status.value == 0 ? '#999' : '#191931' }">开始装墨</view>
+
+
+			<uni-popup ref="cleanCountDown" type="bottom" :maskClick="false">
+				<view style="width: 100%; height: 600upx; margin: auto;">
+					<view style="background: #F9F9F9;width: 100%; height: 100%; border-radius: 20upx  20upx  0upx 0upx;
+					align-items: center;
+					display: flex;
+					flex-direction: column;">
+						<view
+							style="margin-top:220upx;  color: rgba(67, 207, 124, 1);  font-size: 60upx;  font-weight: 800 ">
+							{{countDownTimeCount}}
+						</view>
+						<view style="margin-top: 80upx; font-size: 26upx; color: #999; ">请稍后 </view>
+						<view style="margin-top: 20upx; font-size: 26upx; color: #999; "> 正在装墨中,预计需要一分钟</view>
+					</view>
+				</view>
+			</uni-popup>
+
+			<uni-popup ref="confirmCenter" type="center">
+				<view style="width:600upx; margin:auto; display: flex; flex-direction: column;">
+					<view
+						style="width:100%; height: 320upx; background: #FFFFFF; border-radius: 15upx; position: relative; margin-top: -100upx;">
+						<view style="font-size: 28upx;color: #999;margin: 50upx 30upx 0upx 30upx">
+							首次装墨只用于新购机器第一次装墨,由于装墨过程比较耗费墨水,请不要随意多次点击装墨,以免造成墨水浪费。同意装墨请点击下方确定。 </view>
+						<view
+							style="width:100%; position: absolute; bottom: 0; display: flex; height: 100upx; align-items: center;border-radius:0 0 10upx 10upx;">
+							<view @click="closeConfirmCenterPop()"
+								style="width: 50%;text-align: center;height: 100upx; line-height: 100upx; color: #000; font-size: 30upx;">
+								取消</view>
+							<view @click.stop="installation()"
+								style="width: 50%;  text-align: center; height: 100upx; line-height: 100upx; color: #000;font-size: 30upx;">
+								确定</view>
+						</view>
+					</view>
+				</view>
+			</uni-popup>
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: null, //货道数据
+				stockData: null, //库存数据
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				oldMousePos: {},
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartInstallation: false, //是否自动清洗开始
+				shop_id: null,
+			};
+		},
+
+		methods: {
+
+
+			//显示确定弹框
+			showConfirmCenterPop() {
+
+				if (this.list.status.value == 0) {
+					uni.showToast({
+						title: "打印机离线",
+						duration: 1000,
+						icon: 'error'
+					})
+					return;
+				}
+
+				this.$refs['confirmCenter'].open();
+			},
+
+
+			//关闭确定弹框
+			closeConfirmCenterPop() {
+				this.$refs['confirmCenter'].close();
+			},
+
+
+			//装墨中
+			installation() {
+
+
+
+				this.$refs['confirmCenter'].close()
+				if (this.isClickClean) {
+					uni.showToast({
+						title: '装墨中...',
+						icon: 'none'
+					});
+
+					return;
+				}
+				this.isClickClean = true;
+				uni.showLoading({
+					title: '装墨中...',
+				})
+				this.intCountTimer = 0;
+				this.countDownTimeCount = 1;
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/loadInk',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.autoClick()
+				}).catch(err => {
+					this.isClickClean = false
+					uni.hideLoading();
+					//this.cleanTimeData();
+					uni.showToast({
+						title: err.msg,
+						duration: 1000,
+						icon: "none",
+					})
+				})
+			},
+
+			autoClick() {
+				this.$refs['cleanCountDown'].open();
+				let that = this;
+				this.countDownTime = setInterval(function() {
+					that.countDownTimeCount++;
+					if (that.countDownTimeCount >= 60) {
+						uni.hideLoading();
+						clearInterval(that.countDownTime);
+						that.countDownTime = null;
+						that.isClickClean = false
+						that.countDownTimeCount = 0;
+						that.$refs['cleanCountDown'].close()
+						uni.showToast({
+							title: "装墨完成",
+							icon: "none",
+						})
+					}
+				}, 1000);
+			},
+
+			//获取店铺名称
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+
+			//确定
+			onConfirm(e) {
+				this.shop_id = e.value[0];
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						this.shop_id = this.list.shop_id
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+
+		},
+
+		//上拉加载
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+			this.machineGetShopList();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/informationList.vue b/pages/mall/informationList.vue
new file mode 100644
index 0000000..deb4d05
--- /dev/null
+++ b/pages/mall/informationList.vue
@@ -0,0 +1,315 @@
+<template>
+	<view class="full-width content-color full-height">
+		<view class="full-width" style="height: 90%;">
+			<!--动态数据-->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long" style="margin-bottom: 30upx;">
+				<!-- <view v-for="(item, index) in LoupanList.city" :key="index">
+				<view @click="tocityHome(item)" style="color:#383838;background: #FFFFFF;display: flex;
+				flex-direction: row;margin: 20upx; height: 120upx; align-items: center; padding-left: 20upx;padding-right: 20upx;">
+						<view style="font-size: 28upx;font-weight: 500;color:#000000;">(市){{item.name}}</view>
+						<view :class="'lang-close'" style="margin-left: auto; margin-right: 20upx;">
+							<label class="fa fa-angle-right align-right sub-color" style="font-size: 40upx;"></label>
+						</view>
+					</view>
+				</view> -->
+				<!-- <view v-for="(item, index) in LoupanList.district" :key="index">
+					<view 
+						style="color:#383838;background: #FFFFFF;display: flex;
+			    	    flex-direction: row;margin: 20upx; height: 120upx; align-items: center; padding-left: 20upx;padding-right: 20upx;">
+						<view style="font-size: 28upx;font-weight: 500;color:#666666 ;">(区){{item.name}}</view>
+						<view :class="'lang-close'" style="margin-left: auto; margin-right: 20upx;">
+							<label class="fa fa-angle-right align-right sub-color" style="font-size: 40upx;"></label>
+						</view>
+					</view>
+				</view> -->
+				<!-- <view class="eq_list" >
+					<view class="eq_list_div" v-for="(item, index) in LoupanList.client" :key="index"
+						@click="refundNumorder(item)">
+						<view :style="{'color':p_id == item.id ? '#39B54A':''}"
+							style="font-size: 28upx;font-weight: 500;color:#666666">{{item.name}}</view>
+						<view :class="item.isShowPullButtom ? 'lang-open' : 'lang-close'"
+							style="margin-left: auto; margin-right: 20upx;">
+							<label class="fa fa-angle-right align-right sub-color"
+								:style="{'color':p_id == item.id ? '#39B54A':'#666666'}"
+								style="font-size: 40upx;"></label>
+						</view>
+					</view>
+				</view> -->
+				<view class="eq_list" style="margin-top: 5upx;">
+					<view class="eq_list_div" v-for="(item, index) in LoupanList.self" :key="index"
+						@click="refundNumorder(item)">
+						<view :style="{'color':p_id == item.id ? '#39B54A':''}"
+							style="font-size: 28upx;font-weight: 500;color:#666666">{{item.name}}</view>
+						<view :class="item.isShowPullButtom ? 'lang-open' : 'lang-close'"
+							style="margin-left: auto; margin-right: 20upx;">
+							<label class="fa fa-angle-right align-right sub-color"
+								:style="{'color':p_id == item.id ? '#39B54A':'#666666'}"
+								style="font-size: 40upx;"></label>
+						</view>
+					</view>
+				</view>
+				<!--暂无相关信息-->
+				<view class="align-center content-color"
+					style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+					v-if=" LoupanList == null">
+					<span class="iconfont icon-wushuju"
+						style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 23upx;">暂无相关信息</view>
+				</view>
+			</view>
+			<!--动态数据完-->
+		</view>
+		<!--返回顶部-->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+		<view v-if="is_inner == 1" @click="toallHome()" style="width:160upx;
+					height:80upx; 
+					line-height:80upx; 
+					border: 20upx; 
+					background:#E33C64; 
+					border-radius:50upx 0upx 0upx 50upx;
+					align-items:center;
+					color: #FFFFFF;
+					padding-left:15upx;padding-left: 30upx; position:fixed; right: 0upx;bottom: 80upx">所有数据</view>
+	   </view>
+	   
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import Enums from '@/util/Enums';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	//自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon,
+			foot,
+			uniPopup
+		},
+		computed: {
+			
+		},
+		data() {
+			return {
+				msg: "",
+				error: true,
+				stockValue: "",
+				stockCount: "",
+				long: false,
+				LoupanList: [], //数据
+				//返回顶部
+				totopstatus: false,
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Partner/levelList',
+				},
+				nameInput: null,
+				isOnclickItem: false, //是否点击item
+				showshareitem: null,
+				showshareindex: null,
+				p_id: null,
+				is_inner: null, //是否显示所有
+			};
+		},
+		
+		methods: {
+			//调转所有数据
+			toallHome() {
+				logoservice.receiveMoneyList({
+					p_id: 0,
+					m: 'Init/changePartner'
+				}).then(result => {
+					uni.reLaunch({
+						url: "/pages/index/all-agent"
+					})
+				}).catch(err => {
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				});
+			},
+
+			//调转市代理
+			tocityHome(item) {
+				logoservice.receiveMoneyList({
+					p_id: item.id,
+					m: 'Init/changePartner'
+				}).then(result => {
+					uni.reLaunch({
+						url: "/pages/index/city-agent"
+					})
+				}).catch(err => {
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				});
+			},
+
+			//选择终端返回首页
+			refundNumorder(item) {
+				logoservice.receiveMoneyList({
+					p_id: item.id,
+					m: 'Init/changePartner'
+				}).then(result => {
+					uni.reLaunch({
+						url: "/pages/index/home"
+					})
+				}).catch(err => {
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				});
+			},
+
+			//加载数据
+			loadGoodsList(direction) {
+				//if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...',
+					mask: true
+				})
+				logoservice.receiveMoneyList(this.queryPage).then(result => {
+					this.long = true
+					this.LoupanList = result;
+					console.log("数据:" + this.LoupanList)
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+				});
+			},
+
+			//返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+
+			//做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+		},
+
+		onLoad(options) {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						this.is_inner = this.$base.Userres.is_inner //总代理
+						logoservice.setwixinInfo(result);
+						this.LoupanList = []
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		
+		onShow() {
+
+		}
+		
+	};
+</script>
+
+<style lang="scss">
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+	.eq_list {
+		width: 100%;
+		overflow: hidden;
+		padding-right: 20upx;
+		border-radius: 10upx;
+		margin-top: -10upx;
+
+		.eq_list_div {
+			float: left;
+			height: 120upx;
+			align-items: center;
+			width: calc(100% / 2 - 20upx);
+			margin-left: 20upx;
+			margin-top: 20upx;
+			background: #FFFFFF;
+			padding: 40upx 20upx;
+			display: flex;
+			flex-direction: row;
+			align-items: center;
+		}
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	page {
+		width: 100%;
+		height: 99%;
+		background: #F8F8F8;
+	}
+
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+</style>
diff --git a/pages/mall/machine-inventory.vue b/pages/mall/machine-inventory.vue
new file mode 100644
index 0000000..4bf01bd
--- /dev/null
+++ b/pages/mall/machine-inventory.vue
@@ -0,0 +1,1898 @@
+<template>
+	<view class=" full-height full-width">
+
+		<!-- 暂无相关信息 -->
+		<!-- <view v-if="!list&&long">
+			<view class="noData">
+				<image src="../../static/icon_guaqi.png" mode="aspectFill" class="noData_img"></image>
+				<view class="noData_title">
+					非常抱歉,您没有权限查阅当前打印站的信息!<br>
+				</view>
+				<view class="noData_but" @click="tomain()">返回</view>
+			</view>
+		</view> -->
+
+		<view class="uni-tab-bar full-width" v-if="list">
+			
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content" v-if="long"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%;">
+
+                 <view class="way-list"  style="
+			border-radius: 10upx;
+			margin: 30upx;"
+                 	v-if="stockData != null ">
+                 	<!--  库存数量 -->
+                 	<view class="print-score bg-white-color full-width" style="position: relative;height:230upx;">
+                 		<view class="print content-color ">
+                 			<view style="position: absolute;top: 30upx;width: 180upx; height: 60upx; border-top-right-radius: 40upx;
+                 				 border-bottom-right-radius:40upx; background: #FFFFFF;text-align: center;
+                 				 padding-top: 10upx;">
+                 				<text
+                 					style="color:#383838;font-size:40upx;font-weight: bold;">{{queryPage.machine_id}}</text>
+                 			</view>
+                 			<text @click="toStockList()"
+                 				style="color:#fff;font-size:30upx; position: absolute; right: 20upx; top:50upx">调整</text>
+                 			<view
+                 				style="height: 70upx;position: absolute; left:0upx;top:120upx;width:100%;display:flex;flex-direction:row">
+                 				<text
+                 					style="color: #fff; font-size: 50upx;width:33%;;font-weight: 500; text-align: center; padding-left:10upx">{{stockData.all_stock}}</text>
+                 				<text
+                 					style="color: #fff; font-size: 50upx;width:33%;;font-weight: 500;text-align: center;padding-left:20upx;">{{stockData.now_stock}}</text>
+                 				<text
+                 					style="color: #fff; font-size: 50upx;width:33%;;font-weight: 500;text-align:center;padding-right:30upx;">{{stockData.need_stock}}</text>
+                 			</view>
+                 			<view
+                 				   style="position:  absolute; left:0upx;top:180upx;width:100%;display:flex;flex-direction:row">
+                 				<text
+                 					style="color:#fff; font-size:23upx;text-align:center;width:33%; padding-left:5upx;">总库存(个)</text>
+                 				<text
+                 					style="color:#fff; font-size:23upx;margin-left:30upx;text-align:center;width:33%;">实时库存(个)</text>
+                 				<text
+                 					style="color: #fff; font-size:23upx;text-align:center;width:33%;padding-right:25upx;">需补货(个)</text>
+                 			</view>
+                 		</view>
+                 	</view>
+                 
+                 	<!-- 库存列表 -->
+                 	<view
+                 		style="width: 100% ; margin-top: 20upx;  background: #fff;  border-radius: 20upx; padding-bottom: 20upx; ">
+                 		<view
+                 			style="padding-top: 10upx; font-size: 24upx; font-weight: 550; height: 60upx; width: calc(100% - 60upx); border-bottom: 1upx solid #eee;  margin-left: 30upx;">
+                 			补货明细</view>
+                 		<view v-if="stockDataList.length > 0">
+                 			<view class='topBox' v-for="(item, index) in stockDataList" :key="index">
+                 
+                 				<view style="display: flex;flex-direction: row;align-items: center;"
+                 					@click="selectStockList(index, item)">
+                 					<span v-if="item.list !=null && item.list.length > 0" class="iconfont icon-xiala"
+                 						style="font-size: 20upx; color: #99999;margin-right:10upx;"></span>
+                 					<span v-if="item.list == null || item.list.length == 0"
+                 						style="font-size: 20upx; color: #99999;margin-right:10upx; width: 20upx;"></span>
+                 					<view class='topLittleBOX-1' style="width: 240upx;">{{item.name}}</view>
+                 					<view class='topLittleBOX-2' style="width: calc(100% - 240upx);  ">
+                 						<view class='row-1' :style="{width: item.row2 +'px;max-width:90%'}"></view>
+                 						<view class='rowText' style="position: absolute; right: 80upx">
+                 							{{item.need_stock}}
+                 						</view>
+                 					</view>
+                 				</view>
+                 				<view v-if="item.isDown" v-for="(itemStock, index) in item.list" :key="index"
+                 					style="display: flex;flex-direction: row;height: 55upx;  align-items: center; position: relative;  ">
+                 					<view style="width: 250upx;font-size: 26upx;color: #333;  margin-left: 30upx;  ">
+                 						{{itemStock.channel_no}}
+                 					</view>
+                 					<view style="font-size: 26upx;color: #333;position: absolute; right: 80upx">
+                 						{{itemStock.need_stock}}
+                 					</view>
+                 				</view>
+                 			</view>
+                 		</view>
+                 		<view style="width: 100%;
+                 		height: 70upx; 
+                 		line-height: 80upx; 
+                 		text-align: center;  
+                 		margin-top: 10upx;" v-if="stockDataList == null || stockDataList.length == 0">
+                 			暂时不需要补货
+                 		</view>
+                 	</view>
+                 </view>
+                 
+
+
+
+          </view>
+
+		</view>
+
+		<!-- 店铺 -->
+		<mpvue-picker ref="mpvuePicker" :themeColor="'#53B2B0'" :mode="mode" :pickerValueDefault="pickerValueDefault"
+			@onChange="onChange" @onConfirm="onConfirm" @onCancel="onCancel" :pickerValueArray="pickerValueArray">
+		</mpvue-picker>
+
+		<!-- 年月日 -->
+		<mpvue-pickernew ref="printingMpvuePicker" :themeColor="'#53B2B0'"
+			:pickerValueDefault="printingpickerValueDefault" @onChange="onChange" @onCancel="onCancel"
+			@onConfirm="onConfirmPrinting" :pickerValueArray="printingPickerValueArray"></mpvue-pickernew>
+
+		<!-- 中间弹框,加货道输入框-->
+		<uni-popup ref="showshareinput" type="center" @change="change">
+			<view style="width:600upx; margin:auto; display: flex; flex-direction: column;">
+				<view
+					style="width:100%; height: 400upx; background: #FFFFFF; border-radius: 10upx; position: relative;">
+					<view style="width:100%; text-align: center; margin:30upx 0 0;">
+						<label>仓库库存({{showshareitem.total_stock}})个</label>
+					</view>
+					<view
+						style="display: flex; align-items: center; margin:50upx 20upx 0; height: 80upx; line-height: 80upx;">
+						<label style="padding-left:20upx;">当前货道库存:</label>
+						<input v-model="showshareitem.stock" style="width: 60%;font-size: 28upx; height: 90upx; line-height: 90upx;
+						background: #f9f9f9;
+						color:#5CE6B6; padding-left: 10upx; border-radius: 5upx;" min="0" :max="maxnumber" :maxlength="maxlength"
+							type="number" @click.stop="StockCountInput()"
+							@input="inputVal(showshareitem, showshareindex)"></input>
+					</view>
+					<view style="width: calc(100% - 40upx); margin: auto; text-align: right;padding:10upx 20upx;">
+						<label style="font-size: 22upx; color: #B2B2B2;">最大只能输入{{maxnumber}}个</label>
+					</view>
+					<view style="width:100%; position: absolute; bottom: 0; 
+					display: flex; height: 100upx; align-items: center;border-radius:0 0 10upx 10upx;">
+						<view @click="cancel('share')"
+							style="width: 50%; background: #B2B2B2; text-align: center;height: 100upx; line-height: 100upx; color: #FFFFFF;">
+							取消</view>
+						<view @click.stop="changeChannel(showshareitem,showshareindex)"
+							style="width: 50%; background: #5CE6B6; text-align: center; height: 100upx; line-height: 100upx; color: #FFFFFF;">
+							确定</view>
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+
+
+
+
+
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				goodsItem: [{
+						goods_name: '全部',
+						type: -12,
+					},
+					{
+						goods_name: '套餐内',
+						type: 0,
+					},
+					{
+						goods_name: '打印卡',
+						type: 1,
+					},
+				],
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				//默认选中
+				currentTab: {
+					code: 2,
+					name: ''
+				},
+				tabBars: [{
+						code: 0,
+						name: '机器'
+					},
+					{
+						code: 2,
+						name: ''
+					},
+					{
+						code: 1,
+						name: '打印'
+					},
+				],
+				//end底部弹框
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				//加载全部交易类型数据
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: null, //货道数据
+				stockData: null, //库存数据
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				// 手指原始位置
+				oldMousePos: {},
+				// 元素原始位置
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartClean: false //是否自动清洗开始
+			};
+		},
+
+		methods: {
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+
+			},
+
+			//调转订单列表
+			toOrderList() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.queryPage.machine_id,
+				});
+
+			},
+
+			touchstart(ev) {
+				ev.preventDefault();
+				this.isTouchStart = true;
+				const selectDom = ev.currentTarget;
+				const {
+					pageX,
+					pageY
+				} = ev.touches[0]; // 手指位置
+				const {
+					offsetLeft,
+					offsetTop
+				} = selectDom; // 元素位置
+				// 手指原始位置
+				this.oldMousePos = {
+					x: pageX,
+					y: pageY
+				};
+				// 元素原始位置
+				this.oldNodePos = {
+					x: offsetLeft,
+					y: offsetTop
+				};
+			},
+
+			touchMove(ev) {
+				ev.preventDefault();
+				const selectDom = ev.currentTarget;
+				// x轴偏移量
+				const lefts = this.oldMousePos.x - this.oldNodePos.x;
+				// y轴偏移量
+				const tops = this.oldMousePos.y - this.oldNodePos.y;
+				const {
+					pageX,
+					pageY
+				} = ev.touches[0]; // 手指位置
+				this.autoCleanLeft = pageX - lefts;
+				this.autoCleanTop = pageY - tops;
+			},
+
+			touchEnd(ev) {
+				ev.preventDefault();
+				this.isTouchStart = false;
+			},
+
+			//自定清洗               
+			autoCleanNozzle() {
+				if (this.isClickClean) {
+					return;
+				}
+				this.isClickClean = true;
+				this.$refs['cleanPrint'].setMaskClick(false);
+				uni.showLoading({
+					title: '清洗中...',
+				})
+				this.intCountTimer = 0;
+				this.countDownTimeCount = 1;
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/clearHead',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.autoClick()
+				}).catch(err => {
+					this.cleanTimeData();
+					uni.showToast({
+						title: err.msg,
+						duration: 1000,
+						icon: "none",
+					})
+				})
+			},
+
+			//清除计时器数据
+			cleanTimeData() {
+				this.isAutoStartClean = false;
+				clearInterval(this.timer);
+				this.timer = null;
+				clearInterval(this.countDownTime);
+				this.countDownTime = null;
+				this.intCountTimer = 0;
+				this.isClickClean = false;
+				this.$refs['cleanPrint'].setMaskClick(true);
+				uni.hideLoading();
+				this.$refs['cleanCountDown'].close();
+				this.$refs['cleanPrint'].open();
+				this.countDownTimeCount = 1;
+			},
+
+			//5秒一次定时器
+			autoClick() {
+				this.$refs['cleanCountDown'].open();
+				this.$refs['cleanPrint'].close();
+				this.isAutoStartClean = true;
+				let that = this;
+				this.timer = setInterval(function() {
+					that.getCleanStatus();
+				}, 5000);
+				this.countDownTime = setInterval(function() {
+					that.countDownTimeCount++;
+				}, 1000);
+			},
+
+			//获取状态值
+			getCleanStatus() {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/getClearHeadStatus',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					if (this.countDownTimeCount >= 60) {
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+					let clear_status = result.clear_status.value;
+					if (clear_status == 0) {
+						this.$refs['cleanPrint'].setMaskClick(true);
+						if (result.clear_time) {
+							this.clear_time = result.clear_time;
+						}
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+				}).catch(err => {
+
+				})
+			},
+
+			//清洗打印弹窗
+			cleanPrintPop() {
+				this.$refs['cleanPrint'].open();
+			},
+
+			changeCleanPrint(obj) {
+				this.isShowPop = obj.show;
+			},
+
+			//选中普通设备列表
+			selectStockList(index, item) {
+				var resultList = this.stockDataList;
+				this.stockDataList = [];
+				var isDown = item.isDown;
+				if (isDown) {
+					isDown = false
+				} else {
+					isDown = true
+				}
+				resultList.forEach(itemData => {
+					if (itemData.id == item.id) {
+						itemData.isDown = isDown
+					}
+				})
+				this.stockDataList = resultList;
+			},
+
+			//调转库存列表
+			toStockList() {
+				uni.navigateTo({
+					url: '../mall/stockList?id=' + this.queryPage.machine_id,
+				});
+			},
+
+			//获取库存新接口
+			getStockData() {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/getStockDetail',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.stockData = result;
+					var max = 60;
+					var first = 20;
+					this.stockData.list.forEach((item, index) => {
+						item.id = index
+						item.isDown = false;
+						if (index == 0) {
+							item.row2 = max * item.need_stock / first;
+							if (item.row2 <= 0) {
+								item.row2 = 0;
+							}
+							first = parseFloat(item.need_stock);
+							if (first <= 1) {
+								first = 20;
+							}
+						} else {
+							item.row2 = max * parseFloat(item.need_stock / first)
+							if (item.row2 <= 0) {
+								item.row2 = 0;
+							}
+						}
+					})
+					this.stockDataList = this.stockData.list
+				}).catch(err => {
+
+				})
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//预览显示图片
+			showPreviewImage(e, id) {
+				if (e == null || e == "") {
+					uni.showToast({
+						title: '暂时没有定制二维码',
+						icon: 'none'
+					});
+					return
+				}
+				var current = e + "?x-oss-process=image/watermark,text_" + this.getStrToBase64(id) +
+					",g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a"; //这里获取到的是一张本地的图片
+				uni.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+
+			//获取剩余量次数相差
+			getPrintSurplusCount(count) {
+				try {
+					if (count >= 200) { //白色
+						return 1;
+					} else if (count < 200 && count >= 50) { //橙色
+						return 2;
+					} else if (count < 50) { //红色
+						return 3;
+					}
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+			//获取相差天数 
+			getDaysDifference(time) {
+				try {
+					let day = new Date(time.replace(/-/g, "/")).getTime() - new Date().getTime(); //日期转时间戳
+					let dayCount = Math.floor(day / 86400000); //时间戳获取天数
+					return dayCount;
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+			//格式化时间
+			dateFormat(time) {
+				try {
+					var dt = new Date(time.replace(/-/g, '/'));
+					var y = dt.getFullYear();
+					var m = dt.getMonth() + 1;
+					var d = dt.getDate();
+					return y + '年' + m + '月' + d + '日';
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				if (time == undefined) {
+					return "";
+				}
+				return time;
+			},
+
+			//调转明细页面
+			packageDetail(machineId) {
+				let machineid = machineId;
+				uni.navigateTo({
+					url: '../mine/PrintUseDetail?machineid=' + machineid + '&print_type=' + this.print_type
+				});
+			},
+
+			Reprint(item) {
+				if (item.status.value == 0) {
+					return;
+				}
+				uni.showModal({
+					title: '温馨提示',
+					content: '是否此订单恢复打印?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							//恢复打印的接口:
+							logoservice.MachineStockGoodsList({
+								m: 'Machine/repeatPrint',
+								machine_id: item.machine_id,
+								id: item.id,
+							}).then(result => {
+								uni.showToast({
+									title: '恢复订单打印成功',
+									icon: 'none'
+								});
+								item.status.value = 0
+								item.status.text = "等待出料"
+							}).catch(err => {
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//代理商名字
+			partnername(partner_id, partner) {
+				var partner_name = '尚未铺设';
+				if (partner) {
+					partner.forEach(item => {
+						if (item.id == partner_id) {
+							partner_name = item.name
+						}
+					});
+				}
+				return partner_name
+			},
+
+			tomain() {
+				uni.reLaunch({
+					url: "/pages/index/home"
+				})
+			},
+
+			//打印年月日printing  Printing
+			printingShowPicker(mode) {
+				this.$refs.printingMpvuePicker.show();
+			},
+
+			//日期确定
+			onConfirmPrinting(e) {
+				this.queryPage.year = null
+				this.queryPage.month = null
+				this.queryPage.date = null
+				if (e.value.length == 1) {
+					this.queryPage.year = e.value[0]
+				} else if (e.value.length == 2) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + e.value[1] //补齐
+					}
+					this.queryPage.month = e.value[0] + '-' + myMonth
+				} else if (e.value.length == 3) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth //补齐
+					}
+					let mydate = e.value[2]
+					if (mydate < 10) {
+						mydate = '0' + e.value[2] //补齐
+					}
+					this.queryPage.date = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				//数据加载状态处理 false
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.LoupanList = []
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//打开类型
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['printingShowshare'].open()
+				})
+				this.getGoodsAttrList()
+			},
+
+			Printingcancel(type) {
+				this.$refs['printingShowshare'].close()
+			},
+
+			selectMonth(item) {
+				if (item.type == -12) {
+					this.attr = "全部打印类型";
+					this.queryPage.is_excess = null;
+				} else {
+					this.attr = item.goods_name ? item.goods_name : null
+					this.queryPage.is_excess = item.type
+				}
+				this.$refs['printingShowshare'].close();
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//更换弹框
+			showshareclick(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let itema = JSON.stringify(item)
+				let itemb = JSON.parse(itema);
+				this.showshareitem = itemb;
+				this.showshareindex = index;
+				this.$nextTick(() => {
+					this.$refs['showshareinput'].open()
+				})
+			},
+
+			change(e) {
+
+			},
+
+			//库存数量输入
+			StockCountInput(e) {
+				this.isOnclickItem = true;
+				var that = this;
+				setTimeout(function() {
+					that.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是2秒
+			},
+
+			inputVal(item, index) {
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let StcokListsnumber = item.total_stock
+				if (item.stock > this.maxnumber) {
+					uni.showToast({
+						title: '最大只能输入' + this.maxnumber + '个',
+						icon: 'none',
+					});
+					item.stock = StcokListsnumber > this.maxnumber ? this.maxnumber : StcokListsnumber;
+					return false;
+				}
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//pop选中商品
+			selectGood(item) {
+				this.$refs["showshare"].close();
+				var that = this;
+				let index;
+				if (this.selectItem != null) {
+					that.StcokList.forEach((items, indexNumber) => {
+						if (items.id == this.selectItem.id) {
+							index = indexNumber;
+						}
+					});
+				}
+				uni.showModal({
+					title: '确认',
+					content: '是否关联当前商品?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							if (that.list.used_applets == '3') {
+								that.StcokList[index].stock = item.stock > 12 ? 12 : item.stock;
+							}
+							if (that.list.used_applets == '4') {
+								that.StcokList[index].stock = item.stock > 7 ? 7 : item.stock;
+							}
+							that.StcokList[index].title = item.title; //name
+							that.StcokList[index].name = item.name;
+							that.StcokList[index].front_image = item.front_image;
+							that.StcokList[index].goods_id = item.goods_id;
+							that.StcokList[index].dict_id = item.dict_id;
+							that.StcokList[index].total_stock = item.stock;
+							that.StcokList[index].isShowPullButtom = false;
+							that.confirmChangeChannel(that.StcokList[index])
+						}
+					}
+				});
+			},
+
+			//确认更换货道
+			confirmChangeChannel(item) {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/saveStock',
+					id: item.id,
+					machine_id: this.queryPage.machine_id,
+					goods_id: item.goods_id,
+					goods_size: item.goods_size,
+					stock: item.stock,
+					dict_id: item.dict_id
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: "更换成功",
+						icon: 'none'
+					});
+				}).catch(err => {
+					uni.hideLoading();
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.StcokList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.loadStockList(Enums.DATA_DIRECTION.UP);
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//下架功能
+			shelvesGood(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				var _this = this
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品下架吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							console.log(item.goods_id)
+							if (item.goods_id == 0) {
+								uni.showToast({
+									title: "还没绑定商品不能下架",
+									icon: 'none'
+								});
+								_this.StcokList[index].isShowPullButtom = false;
+								_this.SortNumber++;
+								_this.StcokList[index].SortNumber = _this.SortNumber;
+								this.setData({
+									StcokList: _this.StcokList
+								})
+							} else {
+								uni.showLoading({
+									title: '正在加载中...'
+								})
+								logoservice.MachineSavePartnerStock({
+									m: 'Machine/saveStock',
+									id: item.id,
+									machine_id: _this.queryPage.machine_id,
+									goods_id: item.goods_id,
+									goods_size: item.goods_size,
+									stock: item.stock,
+									dict_id: item.dict_id,
+									type: "off",
+								}).then(result => {
+									console.log(result)
+									uni.hideLoading();
+									uni.showToast({
+										title: "下架成功",
+										icon: 'none'
+									});
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+								}).catch(err => {
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+									uni.hideLoading();
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								})
+							}
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			//显示下面选择按钮 
+			showPullButton(item, index) {
+				if (this.isOnclickItem == false) {
+					var that = this;
+					if (item.isShowPullButtom) {
+						that.StcokList[index].isShowPullButtom = false;
+					} else {
+						that.StcokList[index].isShowPullButtom = true;
+					}
+					this.SortNumber++;
+					that.StcokList[index].SortNumber = this.SortNumber;
+					this.setData({
+						StcokList: that.StcokList
+					})
+				}
+			},
+
+			//修改货道
+			changeChannel(item, index) {
+				this.$refs["showshareinput"].close();
+				this.$refs["showshare"].close();
+				var _this = this
+				_this.isOnclickItem = true;
+				setTimeout(function() {
+					_this.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是1秒
+				let jsonLists = JSON.parse(_this.StcokLists);
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品货道调整吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							uni.showLoading({
+								title: '正在加载中...'
+							})
+							logoservice.MachineSavePartnerStock({
+								m: 'Machine/saveStock',
+								id: item.id,
+								machine_id: _this.queryPage.machine_id,
+								goods_id: item.goods_id,
+								goods_size: item.goods_size,
+								stock: item.stock,
+								dict_id: item.dict_id
+							}).then(result => {
+								uni.hideLoading();
+								uni.showToast({
+									title: "修改成功",
+									icon: 'none'
+								});
+								_this.StcokList[index].stock = item.stock;
+							}).catch(err => {
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//获取底部弹框数据
+			loadStockGoodsList(goods_name) {
+				logoservice.MachineStockGoodsList({
+					m: 'Machine/getStockGoodsList',
+					machine_id: this.queryPage.machine_id,
+					goods_name: goods_name,
+				}).then(result => {
+					this.GoodsItem = result;
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+			reprint(e, index) {
+				//console.log(e)
+				//console.log(index)
+			},
+
+			chooseImage: async function() {
+				if (this.$base.Userres.be_child == 1) return;
+				var _this = this
+				uni.chooseImage({
+					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['camera', 'album'], //从相册选择
+					count: 1,
+					success: (res) => {
+						let tempFilePaths = res.tempFilePaths;
+						uni.showLoading({
+							title: '图片正在上传...'
+						})
+						uni.uploadFile({
+							url: 'https://tprint.refinecolor.com/partnerapplets/index',
+							filePath: tempFilePaths[0],
+							method: 'POST',
+							name: 'file',
+							header: {
+								'content-type': 'multipart/form-data'
+							},
+							formData: {
+								m: 'Upload/upload'
+							}, //请求额外的form data
+							success: function(res) {
+								logoservice.MachinesaveCover({
+									m: 'Machine/saveCover',
+									machine_id: _this.queryPage.machine_id,
+									cover: JSON.parse(res.data).data.url
+								}).then(result => {
+									uni.hideLoading();
+									uni.showToast({
+										title: '上传成功',
+										icon: 'none',
+										duration: 3000
+									})
+									_this.listdetail()
+								}).catch(err => {
+									uni.hideLoading();
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								})
+							},
+							fail: function(res) {
+								console.log(res);
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							}
+						})
+					}
+				})
+			},
+
+			//预览图片
+			previewImage(imgs, list) {
+				let listattr = []
+				list.forEach(item => {
+					listattr.push(item.works_image)
+				})
+				var current = imgs.works_image; //这里获取到的是一张本地的图片
+				wx.previewImage({
+					current: current, // 当前显示图片的http链接
+					urls: listattr // 需要预览的图片http链接列表
+				})
+			},
+
+			datatimeLimited(time) {
+				return new Date(time.replace(/-/g, "/"))._format('HH:mm:ss');
+			},
+
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			categoryaddress(address) {
+				var dataaddress = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == address) {
+							dataaddress = item.address.replace('<br/>', '');
+						}
+					});
+				}
+				return dataaddress
+			},
+
+			//店铺
+			showPicker(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.pickerValueArray = this.shopList
+				this.pickerValueArray.filter(item => {
+					item.label = item.short_name
+					item.value = item.id
+				});
+				this.$refs.mpvuePicker.show();
+			},
+
+			//确定
+			onConfirm(e) {
+				uni.showLoading({
+					title: '正在关联中...'
+				})
+				logoservice.Machinelistdetail({
+					m: 'Machine/bindShop',
+					machine_id: this.queryPage.machine_id,
+					shop_id: e.value[0]
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '关联店铺成功',
+						icon: 'none'
+					});
+					this.listdetail()
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			tapTab(tab) {
+				this.currentTab = tab;
+				if (this.currentTab.code == 0) {
+					this.listdetail()
+				}
+				if (this.currentTab.code == 1) {
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.LoupanList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+				}
+				if (this.currentTab.code == 2) {
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.StcokList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.getStockData();
+				}
+			},
+
+			//设备挂起
+			onSefaultStatus(e) {
+				this.list.flag.value = e.detail.value ? 'N' : 'Y';
+				if (e.detail.value == true) {
+					uni.showLoading({
+						title: '设备挂起中...'
+					})
+				} else {
+					uni.showLoading({
+						title: '设备恢复中...'
+					})
+				}
+				logoservice.Machinestatus({
+					m: 'Machine/status',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					uni.hideLoading();
+					if (e.detail.value == true) {
+						uni.showToast({
+							title: '挂起成功'
+						})
+					} else {
+						uni.showToast({
+							title: '恢复成功'
+						})
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+					if (this.list.flag.value == 'N') {
+						this.list.flag.value = 'Y'
+					} else if (this.list.flag.value == 'Y') {
+						this.list.flag.value = 'N'
+					}
+				})
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						if (this.list.show_clean) {
+							this.show_clean = this.list.show_clean
+						}
+						if (this.list.clear_time) {
+							this.clear_time = this.list.clear_time
+						}
+						if (this.list.edition != null && this.list.edition.mark == 'standard') {
+							this.print_type = 0;
+						} else if (this.list.edition != null && this.list.edition.mark == 'unlimited') {
+							this.print_type = 1;
+						}
+						let ink = this.list.ink;
+						if (ink.length >= 6) {
+							this.inkStatusC = ink.substring(0, 1) == 0 ? true : false;
+							this.inkStatusM = ink.substring(1, 2) == 0 ? true : false;
+							this.inkStatusY = ink.substring(2, 3) == 0 ? true : false;
+							this.inkStatusK = ink.substring(3, 4) == 0 ? true : false;
+							this.inkStatusW = ink.substring(4, 5) == 0 ? true : false;
+							this.inkStatusHas = ink.substring(5, 6) == 0 ? true : false;
+						}
+						this.list.default_package.create_date = this.dateFormat(this.list.default_package
+							.expire_date);
+						if (this.list.machine_category_id == 63) {
+							this.tabBars = [{
+										code: 0,
+										name: '机器'
+									},
+									{
+										code: 1,
+										name: '打印'
+									},
+									{
+										code: 2,
+										name: '库存'
+									},
+								],
+								this.list.isSinglePlatep = false;
+						}
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//设备打印信息 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//下拉更新时,查询结果集
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//做滚动加载使用
+			loadMore() {
+				if (this.isTouchStart || this.currentTab.code == 0) {
+					return;
+				}
+				if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				if (this.currentTab.code == 1) {
+					this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+				}
+				if (this.currentTab.code == 2) {
+					this.loadStockList(Enums.DATA_DIRECTION.DOWN)
+				}
+			},
+
+			//获取日期
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				this.queryPage.date = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+			},
+
+			//获取月份
+			getMonth() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				this.queryPage.month = myDate.getFullYear() + '-' + myMonth;
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+			if (this.isTouchStart) {
+				return;
+			}
+			if (this.currentTab.code == 0) {
+				this.listdetail()
+			}
+			if (this.currentTab.code == 1) {
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			}
+			if (this.currentTab.code == 2) {
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.StcokList = []
+				this.loadStockList(Enums.DATA_DIRECTION.UP);
+			}
+			uni.stopPullDownRefresh();
+		},
+
+		//上拉加载
+		onReachBottom() {
+			if (this.currentTab.code == 0 || this.isTouchStart) {
+				return;
+			}
+			if (this.LoupanList.length < 6) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			if (this.currentTab.code == 1) {
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN)
+			}
+		},
+
+		onLoad(options) {
+			//设置时间
+			let that = this;
+			uni.getSystemInfo({
+				success(res) {
+					that.autoCleanLeft = res.windowWidth - 100;
+					that.autoCleanTop = res.windowHeight - 180;
+				}
+			});
+			this.getMonth();
+			this.printingPickerValueArray = ['month'];
+			this.queryPage.machine_id = options.id
+			uni.setNavigationBarTitle({
+				title: this.queryPage.machine_id
+			})
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						that.$base.Userres = result //记录用户登录信息
+						that.Userres_partner_id = that.$base.Userres.partner_id //总代理
+						that.is_inner = that.$base.Userres.is_inner
+						logoservice.setwixinInfo(result);
+	
+	
+
+						that.getStockData();
+						that.listdetail()
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					//console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			this.isTouchStart = false;
+			if (this.$base != null && this.$base.Userres != null) {
+				this.be_child = this.$base.Userres.be_child //子代理
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/* 底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			padding-top: 20upx;
+			border-radius: 10upx;
+			margin: 30upx;
+			padding: 30upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 100upx;
+
+			.order-list {
+				min-height: 350upx;
+				//width: 100%;
+				margin-right: 5upx;
+				width: calc(100% - 5upx);
+				border-radius: 10upx;
+
+				.item {
+					min-height: 35upx;
+					display: flex;
+					margin-left: 20upx;
+					align-items: center;
+					font-size: 28upx;
+
+					.text {
+						width: 250upx;
+						/*padding-left: 25upx; */
+						color: #353535;
+					}
+
+					.value {
+						width: calc(100% - 280upx);
+						display: flex;
+
+						.prick {
+							width: calc(100% - 40upx);
+						}
+
+						.fa-angle-right {
+							width: 40upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/maintenance-history.vue b/pages/mall/maintenance-history.vue
new file mode 100644
index 0000000..db8b775
--- /dev/null
+++ b/pages/mall/maintenance-history.vue
@@ -0,0 +1,855 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+
+				<view class="order-list"  v-if="list">
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">出厂时间</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{list.create_time}}</text>
+							</label>
+						</view>
+
+						<view class="item full-width" @click="cleanNozzleHistory()">
+							<label class="text content-color">保障剩余时间</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.safeguard_time}}天
+								</view>
+							</label>
+						</view>
+					</view>
+
+					<view style="margin-top: 30upx;
+					border-radius: 20upx;
+					width: calc(100% - 60upx);
+					background: #fff;
+					margin: 0upx 30upx 10upx 30upx;
+					border-radius: 20upx;
+					box-shadow: 0 0 10upx 10upx #F5F5F5;" @click.stop="showPreviewImage(urlImage)">
+						<image show-menu-by-longpress="true"  :src="urlImage" style="width: 300upx;margin: auto; display: block;" mode="aspectFit">
+						</image>
+					</view>
+				</view>
+			</view>
+
+			<view class="item-new-list-text" style="margin-top: 0upx;">通过扫描二维码、或点击咨询按钮,即可联系您的专属售后服务。</view>
+
+			<button class="save_bt" @click="goCustomer()">咨询</button>
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				oldMousePos: {},
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartClean: false, //是否自动清洗开始
+				shop_id: null,
+				urlImage: " https://img.colorpark.cn/back/169819716165386ea9a0ef9.png"
+			};
+		},
+
+		methods: {
+
+
+
+			//预览显示图片
+			showPreviewImage(e, id) {
+				if (e == null || e == "") {
+					uni.showToast({
+						title: '暂时没有定制二维码',
+						icon: 'none'
+					});
+					return
+				}
+				var current = e + "?x-oss-process=image/watermark,text_" + this.getStrToBase64(id) +
+					",g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a"; //这里获取到的是一张本地的图片
+				uni.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+
+
+			goCustomer() {
+				wx.openCustomerServiceChat({
+					corpId: 'wwa5849fc2f69d8e53',
+					//showMessageCard: true,
+					extInfo: {
+						url: 'https://work.weixin.qq.com/kfid/kfcc68d63fbdbcc9644'
+					},
+					success: (e) => {
+						console.log('e', e)
+					},
+					fail: (err) => {
+						console.log('err', err)
+					}
+				})
+			},
+
+			//清洗历史记录
+			cleanNozzleHistory() {
+				uni.navigateTo({
+					url: "/pages/mall/clean-nozzle-history?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//添加店铺
+			addShop() {
+				uni.navigateTo({
+					url: "/pages/store/shopdetails"
+				})
+			},
+
+			//保存店铺
+			saveShop() {
+				if (this.shop_id == "" || this.shop_id == null) {
+					uni.showToast({
+						title: '还没关联店铺',
+						icon: 'none'
+					});
+					return
+				}
+				uni.showLoading({
+					title: '正在关联中...'
+				})
+				logoservice.Machinelistdetail({
+					m: 'Machine/bindShop',
+					machine_id: this.queryPage.machine_id,
+					shop_id: this.shop_id
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '关联店铺成功',
+						icon: 'none'
+					});
+					//this.listdetail()
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//获取店铺名称
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+
+
+			//确定
+			onConfirm(e) {
+				this.shop_id = e.value[0];
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						this.shop_id = this.list.shop_id
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+
+		},
+
+		//上拉加载
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+			this.machineGetShopList();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/maintenance-machine.vue b/pages/mall/maintenance-machine.vue
new file mode 100644
index 0000000..bb6728d
--- /dev/null
+++ b/pages/mall/maintenance-machine.vue
@@ -0,0 +1,1111 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content" style="
+			 padding-bottom: 20upx;
+			 width: 100%;height: 100%;
+			 background: #fff;">
+
+				<view class="order-list" v-if="list">
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">出厂时间</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.create_time}}
+								</view>
+							</label>
+						</view>
+						<view class="item full-width">
+							<label class="text content-color">保障剩余时间</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.safeguard_time }}天
+								</view>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+
+						<view class="item full-width">
+							<label class="text content-color">最近清洗时间</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.clear_time ? list.clear_time : "" }}
+								</view>
+							</label>
+						</view>
+
+						<view class="item full-width">
+							<label class="text content-color">最后开机时间</label>
+							<label class="value content-color">
+								<view style="text-align: right;line-height: 50upx;" class="full-width">
+									{{list.last_connect_time ? list.last_connect_time : "" }}
+								</view>
+							</label>
+						</view>
+
+
+
+						<view class="item full-width">
+							<label class="text content-color">墨水容量</label>
+
+							<label class="value content-color">
+
+								<view style="
+								display: flex;
+								flex-direction: row;
+								width: 100%;justify-content: center; min-height: 80upx;">
+
+									<view class="ink">
+										<view class="content">
+											<view class="ink-list-bc" style="border: 1upx solid #62C5F1;">
+												<view v-if="inkStatusC" style=" background: #62C5F1; " class="in">
+												</view>
+												<view v-if="!inkStatusC" style=" background: #62C5F1;height: 20upx;  "
+													class="in"> </view>
+											</view>
+
+											<text class="ink-list-bc-text">C</text>
+										</view>
+										<view class="content">
+											<view class="ink-list-bc" style="border: 1upx solid #EE4FEFFF;">
+												<view v-if="inkStatusM" style="background: #EE4FEFFF;  " class="in">
+												</view>
+												<view v-if="!inkStatusM" style=" background: #EE4FEFFF;height: 20upx;"
+													class="in"> </view>
+											</view>
+
+											<text class="ink-list-bc-text">M</text>
+										</view>
+										<view class="content">
+											<view class="ink-list-bc" style="border: 1upx solid #F5EC60FF;">
+												<view v-if="inkStatusY" style=" background: #F5EC60FF;" class="in">
+												</view>
+												<view v-if="!inkStatusY" style=" background: #F5EC60FF;height: 20upx;"
+													class="in"> </view>
+											</view>
+											<text class="ink-list-bc-text">Y</text>
+										</view>
+										<view class="content">
+											<view class="ink-list-bc" style="border: 1upx solid #4B4B4B;">
+												<view v-if="inkStatusK" style=" background: #4B4B4B; " class="in">
+												</view>
+												<view v-if="!inkStatusK" style="background: #4B4B4B; height: 20upx;"
+													class="in"> </view>
+											</view>
+											<text class="ink-list-bc-text">K</text>
+										</view>
+
+										<view class="content">
+											<view class="ink-list-bc"
+												style="border: 1upx solid #BFBFBF; background:#BFBFBF ;">
+												<view v-if="inkStatusW" style=" background: #fff; " class="in">
+												</view>
+												<view v-if="!inkStatusW" style="background: #fff; height: 20upx;"
+													class="in"> </view>
+											</view>
+											<text class="ink-list-bc-text">W</text>
+										</view>
+
+										<view class="content">
+											<view class="ink-list-bc"
+												style="margin-top: 0upx;border: 1upx solid #A6A6A6; ">
+												<view v-if="!inkStatusHas" style="background: #A6A6A6;" class="in">
+												</view>
+												<view v-if="inkStatusHas" style="background: #A6A6A6; height: 20upx;"
+													class="in"> </view>
+											</view>
+
+											<text class="ink-list-bc-text">废</text>
+										</view>
+									</view>
+
+								</view>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width" style="padding-top: 5upx;margin-top: 5upx;">
+							<label class="text content-color">机器状态</label>
+
+							<label class="value content-color" v-if="list.flag.value == 'Y'">
+								<text v-if="list.status.value == 0" style="text-align:right; color: #808080;"
+									class="full-width">离线</text>
+								<text v-if="list.status.value == 1 || list.status.value == 2 "
+									style="text-align:right; color: #5CE6B5;" class="full-width">在线</text>
+								<text v-if="list.status.value == 3 || list.status.value == 4 || list.status.value == 5 "
+									style="text-align:right; color: #D43030;" class="full-width">故障</text>
+							</label>
+
+							<label class="value content-color" v-if="list.flag.value == 'N'">
+								<text style="text-align:right; color: #FF8D1A;" class="full-width">锁定</text>
+							</label>
+
+						</view>
+
+						<view class="item full-width" @click="cleanNozzle()">
+							<label class="text content-color">远程清洗</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+
+						<view class="item full-width" @click="cleanNozzleDetection()">
+							<label class="text content-color">喷嘴检测</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+
+						<view class="item full-width" @click="testColour()">
+							<label class="text content-color">测试色块</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+
+						<view class="item full-width" @click="softwareUpdate()">
+							<label class="text content-color">软件更新</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">状态正常的设备,可进行远程喷嘴清洗、检测和具体的色块打印,对设备进行常规的维护操作。</view>
+
+					<view class="item-new-list" style="margin-top: 40upx;" @click="firstInkInstallation()">
+						<view class="item full-width">
+							<label class="text content-color">首次装墨</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">装墨比较消耗墨水,建议使用在喷嘴首次调试中使用</view>
+
+					<view class="item-new-list" @click="maintenanceHistory()">
+						<view class="item full-width">
+							<label class="text content-color">维保历史</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list" style="margin-top: 40upx;" @click="exclusiveServices()">
+						<view class="item full-width">
+							<label class="text content-color">专属服务</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list" @click="maintenanceManual()">
+						<view class="item full-width">
+							<label class="text content-color">查看机器使用手册</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;font-size: 50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true,
+				isShowPullButtom: false,
+				isOnclickItem: false,
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [],
+				StcokLists: [],
+				list: null,
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null,
+					month: null,
+					year: null,
+					is_excess: null,
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				showshareitem: null,
+				showshareindex: null,
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				isShowPop: false,
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false
+			};
+		},
+
+		methods: {
+
+
+			maintenanceManual() {
+				uni.showToast({
+					title: '即将开放',
+					icon: 'none'
+				});
+			},
+
+
+			//维保历史
+			maintenanceHistory() {
+				uni.showToast({
+					title: '即将开放',
+					icon: 'none'
+				});
+			},
+
+			//测试色块
+			testColour() {
+				uni.navigateTo({
+					url: "/pages/mall/test-colour?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//首次装墨
+			firstInkInstallation() {
+				uni.navigateTo({
+					url: "/pages/mall/first-ink-installation?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+
+			//专属服务
+			exclusiveServices() {
+				uni.navigateTo({
+					url: "/pages/mall/exclusive-services?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//软件更新
+			softwareUpdate() {
+				uni.navigateTo({
+					url: "/pages/mall/software-update?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//碰嘴检测
+			cleanNozzleDetection() {
+				uni.navigateTo({
+					url: "/pages/mall/clean-nozzle-detection?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//远程清洗
+			cleanNozzle() {
+				uni.navigateTo({
+					url: '../mall/clean-nozzle?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//获取底部弹框数据
+			loadStockGoodsList(goods_name) {
+				logoservice.MachineStockGoodsList({
+					m: 'Machine/getStockGoodsList',
+					machine_id: this.queryPage.machine_id,
+					goods_name: goods_name,
+				}).then(result => {
+					this.GoodsItem = result;
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+
+						if (this.list.show_clean) {
+							this.show_clean = this.list.show_clean
+						}
+						if (this.list.clear_time) {
+							this.clear_time = this.list.clear_time
+						}
+						if (this.list.edition != null && this.list.edition.mark == 'standard') {
+							this.print_type = 0;
+						} else if (this.list.edition != null && this.list.edition.mark == 'unlimited') {
+							this.print_type = 1;
+						}
+						let ink = this.list.ink;
+						if (ink.length >= 6) {
+							this.inkStatusC = ink.substring(0, 1) == 0 ? true : false;
+							this.inkStatusM = ink.substring(1, 2) == 0 ? true : false;
+							this.inkStatusY = ink.substring(2, 3) == 0 ? true : false;
+							this.inkStatusK = ink.substring(3, 4) == 0 ? true : false;
+							this.inkStatusW = ink.substring(4, 5) == 0 ? true : false;
+							this.inkStatusHas = ink.substring(5, 6) == 0 ? true : false;
+						}
+
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//设备打印信息 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+		},
+
+		onPullDownRefresh() {
+
+		},
+
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/*去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 320upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-top {
+		margin: 30upx 30upx 25upx 30upx;
+		background: #fff;
+		height: 150upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		display: flex;
+		flex-direction: row;
+
+		.image {
+			display: flex;
+			align-items: center;
+			width: 18%;
+			height: 100%;
+		}
+
+		.text {
+			display: flex;
+			width: 64%;
+			height: 100%;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			font-size: 22upx;
+			color: #999;
+		}
+	}
+
+	.eq-detail-top-layout {
+		display: flex;
+		flex-direction: row;
+		margin-top: 5upx;
+		height: 400upx;
+
+		.left {
+			display: flex;
+			flex-direction: column;
+			width: 15%;
+
+			.status {
+				background: #E72C31;
+				font-size: 24upx;
+				color: #FFFFFF;
+				border-top-right-radius: 30upx;
+				height: 60upx;
+				width: 100upx;
+				text-align: center;
+				line-height: 60upx;
+				margin-top: 15upx;
+			}
+		}
+
+		.right {
+			width: 15%;
+		}
+	}
+
+	.item-new-list-color {
+
+		background: #fff;
+		margin: 30upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		height: 180upx;
+		display: flex;
+		flex-direction: row;
+		width: calc(100% - 60upx);
+
+		.content {
+
+			display: flex;
+			flex-direction: column;
+			width: calc(25%);
+			align-items: center;
+			justify-content: center;
+
+			.image {
+				height: 40upx;
+				width: 40upx;
+			}
+
+			.text {
+				color: #000;
+				width: 100%;
+				font-size: 24upx;
+				margin-top: 8upx;
+				text-align: center;
+
+			}
+
+		}
+	}
+
+	.ink-list-bc {
+		width: 20upx;
+		height: 80upx;
+		background: #fff;
+		border: 1upx solid #2A82E4;
+		justify-content: end;
+		align-items: flex-end;
+		display: flex;
+		border-radius: 12upx;
+
+		.in {
+			width: 100%;
+			height: 50upx;
+			background: #2A82E4;
+			border-radius: 12upx;
+		}
+
+	}
+
+
+	.ink {
+		display: flex;
+		flex-direction: row;
+		height: 100upx;
+		width: 100%;
+		justify-content: flex-end;
+		align-items: center;
+
+
+		.content {
+			display: flex;
+			flex-direction: column;
+			width: 20upx;
+			height: 100upx;
+			align-items: center;
+			justify-content: center;
+			margin-left: 10upx;
+
+
+			/* .text {
+				font-size: 10upx;
+				color: #999;
+				margin-top: 10upx;
+				height: 15upx;
+				line-height: 15upx;
+				width: 100%;
+				text-align: center;
+				zoom:  0.7
+
+			}
+ */
+			.image {
+				width: 20upx;
+				height: 20upx;
+
+			}
+		}
+	}
+
+	.ink-list-bc-text {
+		font-size: 20upx;
+		color: #999;
+		margin-top: 10upx;
+		height: 15upx;
+		line-height: 15upx;
+		width: 100%;
+		text-align: center;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/managing-tasks.vue b/pages/mall/managing-tasks.vue
new file mode 100644
index 0000000..71a8df3
--- /dev/null
+++ b/pages/mall/managing-tasks.vue
@@ -0,0 +1,800 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%;">
+				<!-- 机器 -->
+				<view class="order-list"  v-if="list">
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+						<view>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width" @click="printTasks()">
+							<label class="text content-color">打印任务</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color item-new-list-come"></label>
+							</label>
+						</view>
+						<!-- <p class="content vT hL">喷嘴检测</p> -->
+						<view class="item full-width" @click="printOrder()">
+							<label class="text content-color">打印订单</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color item-new-list-come"></label>
+							</label>
+						</view>
+						<!-- <p class="content vT hL">测试色块</p> -->
+						<view v-if="list.machine_category_id == 64  && ( list.used_applets == 4 || list.used_applets == 6 || list.used_applets == 8 )"  class="item full-width" @click="arriveGood()">
+							<label class="text content-color">上架商品</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color item-new-list-come"></label>
+							</label>
+						</view>
+						<view v-if="list.machine_category_id == 64 && ( list.used_applets == 6 || list.used_applets == 8 )" class="item full-width" @click="relatedTemplate()">
+							<label class="text content-color">可用模版</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color item-new-list-come"></label>
+							</label>
+						</view>
+					</view>
+
+					<!-- <p class="content vT hL">设备库存</p> -->
+					<view class="item-new-list">
+						<view class="item full-width" @click="machineInventory()"  v-if="list.machine_category_id == 63" >
+							<label class="text content-color">设备库存</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+
+						<view class="item full-width" @click="toLiquidation()">
+							<label class="text content-color">收益列表</label>
+							<label class="value content-color">
+								<label class="fa fa-angle-right align-right sub-color"
+									style="float:right;position:absolute;right:50upx;margin-top: -30upx;"></label>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">以上列表只有开启线上收款、库存管理机型可查阅。</view>
+
+				</view>
+			</view>
+		</view>
+
+	</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true,
+				isShowPullButtom: false,
+				isOnclickItem: false,
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [],
+				StcokLists: [],
+				list: null,
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null,
+					month: null,
+					year: null,
+					is_excess: null,
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				showshareitem: null,
+				showshareindex: null,
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				isShowPop: false,
+			};
+		},
+
+		methods: {
+			
+			//Liquidation收益类表
+			toLiquidation(){
+				uni.navigateTo({
+					url: "/pages/mall/eq-profit?machineid=" + this.queryPage.machine_id
+				})
+			},
+			
+
+            //设备库存
+			machineInventory(){
+				uni.navigateTo({
+					url: "/pages/mall/machine-inventory?id=" + this.queryPage.machine_id
+				})
+			},
+
+			//关联模板
+			relatedTemplate() {
+				uni.navigateTo({
+					url: "/pages/mall/related-template?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//关联商品
+			arriveGood() {
+				uni.navigateTo({
+					url: "/pages/mall/arrive-good?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+
+			//打印订单
+			printOrder() {
+				uni.navigateTo({
+					url: "/pages/mine/order?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+
+			//打印任务
+			printTasks() {
+				uni.navigateTo({
+					url: "/pages/mall/print-tasks?id=" + this.queryPage.machine_id + "&printType=1"
+				})
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//格式化时间
+			dateFormat(time) {
+				try {
+					var dt = new Date(time.replace(/-/g, '/'));
+					var y = dt.getFullYear();
+					var m = dt.getMonth() + 1;
+					var d = dt.getDate();
+					return y + '年' + m + '月' + d + '日';
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				if (time == undefined) {
+					return "";
+				}
+				return time;
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//获取底部弹框数据
+			loadStockGoodsList(goods_name) {
+				logoservice.MachineStockGoodsList({
+					m: 'Machine/getStockGoodsList',
+					machine_id: this.queryPage.machine_id,
+					goods_name: goods_name,
+				}).then(result => {
+					this.GoodsItem = result;
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+			//店铺
+			// showPicker(item) {
+			// 	this.pickerValueArray = this.shopList
+			// 	this.pickerValueArray.filter(item => {
+			// 		item.label = item.short_name
+			// 		item.value = item.id
+			// 	});
+			// 	this.$refs.mpvuePicker.show();
+			// },
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//设备打印信息 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+		},
+
+		onPullDownRefresh() {
+
+		},
+
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 60upx);
+	}
+
+	.item-new-list-come {
+		float: right;
+		position: absolute;
+		right: 50upx;
+		margin-top: -30upx;
+	}
+
+	.content-color {
+		color: #fff;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/print-tasks.vue b/pages/mall/print-tasks.vue
new file mode 100644
index 0000000..a3b35c6
--- /dev/null
+++ b/pages/mall/print-tasks.vue
@@ -0,0 +1,2136 @@
+<template>
+	<view class="order full-height full-width">
+
+		<!-- 暂无相关信息 -->
+		<view v-if="!list && long && !LoupanList">
+			<view class="noData">
+				<image src="../../static/icon_guaqi.png" mode="aspectFill" class="noData_img"></image>
+				<view class="noData_title">
+					非常抱歉,您没有权限查阅当前打印站的信息!<br>
+				</view>
+				<view class="noData_but" @click="tomain()">返回</view>
+			</view>
+
+		</view>
+
+		<view class="uni-tab-bar full-width" v-if="list ">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%;">
+
+				<!--  打印  -->
+				<view style=" background: #F1F1F1; position: fixed; width:100%;top: 10upx; z-index: 99;height: 190upx;">
+					<view style="height: 20upx;width:100%;background: #F1F1F1;"></view>
+					<view
+						style="width:calc(100% -40upx);padding-top: 20upx; background: #FFFFFF; border-radius: 20upx;margin-left:20upx; margin-right: 20upx;">
+						<view
+							style="width:100%; background: #FFFFFF;height: 140upx; line-height: 140upx;padding-top: 10upx;"
+							@click="togglePopup()">
+							<view
+								style="width: calc(100% - 40upx);border-radius:50upx; height: 90upx; border:2upx solid  #F1F1F1;margin-left: 20upx; margin-right: 20upx;">
+								<text
+									style="color: #333333;float: left;margin-top: -20upx;margin-left: 30upx;font-size: 27upx;">{{attr == null ? '全部打印类型' : attr}}</text>
+								<span class="iconfont icon-xiala"
+									style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;float: right ;margin-top: -25upx;margin-right: 30upx;"></span>
+							</view>
+						</view>
+						<view style="display: flex; width: 100%;height: 40upx;margin-top: 20upx;">
+							<view
+								style="font-size: 28upx; line-height: 40upx; width: 50%; text-align: left;color: #333333;margin-left: 35upx;margin-top: -30upx;">
+								作品数量:{{queryPage.total}}件</view>
+							<view
+								style="width: calc(100% / 2); text-align: right; padding: 25upx 15upx 25upx 25upx; margin-right: 35upx;margin-top: -55upx;"
+								@click="printingShowPicker('selector')">
+								<text style="color: #333333;" v-if="queryPage.year">{{queryPage.year}}年</text>
+								<text style="color: #333333;" v-if="queryPage.month">{{queryPage.month}}月</text>
+								<text style="color: #333333;" v-if="queryPage.date">{{queryPage.date}}</text>
+								<span class="iconfont icon-xiala"
+									style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+							</view>
+						</view>
+					</view>
+				</view>
+
+				<view class="order-list" v-if="long">
+					<view style="height: 180upx; position: relative;z-index: 9;"></view>
+					<!-- 动态数据 -->
+					<view v-if="LoupanList.length > 0" style="overflow: hidden; position: relative;">
+						<view style="margin-top: 70upx;padding-bottom:30upx;">
+							<view v-for="(item, index) in LoupanList" :key="index"
+								style="display: flex; margin-left:30upx;margin-right: 30upx; 
+								border-radius: 30upx; font-size: 24upx;
+								border-top: 1upx solid #F5F5F5; padding-bottom:30upx;padding-top: 15upx;margin-top: 20upx;background: #FFFFFF; ">
+								<view
+									style="margin-top:-15upx;height:40upx;line-height: 50upx;text-align:center; width: 140upx;">
+									<view v-if="item.status.text == '生产完成'  " style=" color: #FFFFFF;font-size: 24upx;border-bottom-right-radius: 30upx; background:#43CF7C;
+								      border-top-left-radius: 30upx;height: 50upx;width: 140upx;"> 生产完成</view>
+									<view v-if="item.status.text == '生产中'" style=" color: #FFFFFF;font-size: 24upx;border-bottom-right-radius: 30upx; background:#FF8D1A;
+									    border-top-left-radius: 30upx;height: 40upx;width: 140upx;"> 生产中</view>
+									<view
+										v-if="item.status.text == '打印失败' ||item.status.text == '失败' || item.status.text == '取消生产' ||  item.status.text == '等待出料' "
+										style=" color: #FFFFFF;font-size: 24upx;border-bottom-right-radius: 30upx; background:#D43030;									    border-top-left-radius: 30upx;height: 40upx;width: 140upx;">
+										{{item.status.text}}
+									</view>
+								</view>
+								<view style="width: auto; display: flex;" @click="previewImage(item,LoupanList)">
+									<image :src="item.works_image + '?x-oss-process=image/resize,lfit,w_115'"
+										style="width:115upx; height:115upx; margin: auto; align-items: center;margin-left:-130upx; margin-top: 35upx;"
+										mode="aspectFill"></image>
+								</view>
+								<view style="display: flex;flex-direction: column;width: 60%;margin-left: 20upx;">
+									<view style="height: 40upx;font-size: 30upx;font-weight: bold;">
+										{{item.name}}
+									</view>
+									<view style="height: 40upx;font-size:22upx;">
+										{{item.machine_id}}--{{item.goods_specs}}
+									</view>
+									<view @click="reprint(item,index)"
+										style="margin-top: 10upx; display: flex;flex-direction: row; margin-left: 5upx;">
+										<text v-if="item.is_excess == 0"
+											style="margin-right: 10upx;font-size: 22upx;color: #595959; ">套餐卡</text>
+										<text v-if="item.is_excess == 1"
+											style="margin-right: 10upx;font-size: 22upx;color: #595959; ">打印卡</text>
+									</view>
+									<view style="font-size: 26upx;margin-top: 5upx;margin-left: 2upx;">
+										{{item.create_time}}
+									</view>
+									<view v-if="item.min!= '' && item.min!= null"
+										style="font-size: 26upx;margin-left: 5upx;">{{item.min}}(用时)</view>
+								</view>
+								<view v-if=" item.status.value !== 0  " style="width: 20%;display: flex; align-items: center; justify-content: center; 
+								text-align: center; line-height: 30upx; color: #fff;" @click="Reprint(item)">
+									<text
+										style="width: 80upx;height: 80upx; line-height:80upx; font-size: 23upx;text-align:center;color: #FFFFFF;background-color: #131319;border-radius: 80px;text-align: center;margin-right: 25upx;">
+										恢复</text>
+								</view>
+
+
+								<view
+									v-if=" item.status.value == 0  &&  list.is_open_manage == 1"
+									style="width: 20%;display: flex; align-items: center; justify-content: center;text-align: center; line-height: 30upx; color: #fff;">
+									<text  @click="showPrintPop(item)"
+										style="width: 80upx;height: 80upx; line-height:80upx; font-size: 23upx;text-align:center;color: #FFFFFF;background-color: rgba(67, 207, 124, 1.0);border-radius: 80px;text-align: center;margin-right: 25upx;">
+										打印</text>
+								</view>
+
+							</view>
+						</view>
+					</view>
+					<!-- 暂无相关信息 -->
+					<view class="align-center content-color"
+						style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+						v-if=" LoupanList.length == 0 || LoupanList.length == null ">
+						<span class="iconfont icon-wushuju"
+							style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+						<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">当前无打印
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+
+		<!-- 年月日 -->
+		<mpvue-pickernew ref="printingMpvuePicker" :themeColor="'#53B2B0'"
+			:pickerValueDefault="printingpickerValueDefault" @onChange="onChange" @onCancel="onCancel"
+			@onConfirm="onConfirmPrinting" :pickerValueArray="printingPickerValueArray"></mpvue-pickernew>
+
+		<!-- 底部弹框 搜索商品名称 -->
+		<uni-popup ref="showshare" :type="type" @change="change">
+			<view class="uni-pop_show" style="width: 100%; margin: auto;">
+				<view style="width: 100%;background: #FFFFFF;border-bottom: 4upx solid #E9E7ED;margin-right: 80upx;">
+					<!-- 搜索框 -->
+					<view class="weui-search-bar">
+						<view class="weui-search-bar_form">
+							<input type="text" class="weui-search-bar_input" placeholder="请输入商品名称"
+								@input='diseaseNameInput' />
+						</view>
+					</view>
+					<view style="width: 100%; height: 550upx; background: #F9F9F9;">
+						<scroll-view scroll-y
+							style="width:100%; height: 550upx; overflow: hidden; overflow-y: scroll; background: #FFFFFF;">
+							<view v-for="(item, index) in GoodsItem" :key="index" @click="selectGood(item)"
+								style="width: calc(100% - 60upx); margin: auto; height: 110upx; display: flex; align-items: center; border-top: 1upx solid #F6F6F6; background: #FFFFFF;">
+								<image :src="item.front_image + '?x-oss-process=image/resize,lfit,w_100'"
+									mode="aspectFit"
+									style="width:70upx; height: 70upx;line-height:70upx; margin: 0 10upx;"></image>
+								<view style="width: calc(100% - 90upx);">
+									<view
+										style="font-size: 25upx;color: #B2B2B2;width: 100%;white-space: nowrap;text-overflow:ellipsis; overflow:hidden; word-break:break-all;">
+										{{item.name}}({{item.title}})
+									</view>
+									<view
+										style="font-size: 25upx;color: #B2B2B2;width: 100%;white-space: nowrap;text-overflow:ellipsis; overflow:hidden; word-break:break-all;">
+										商品库存 : {{item.stock}}
+									</view>
+								</view>
+							</view>
+							<view class="align-center"
+								style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+								v-if="GoodsItem == null  ||  ( GoodsItem != null && GoodsItem.length == 0) ">
+								<span class="iconfont icon-wushuju"
+									style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+								<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">
+									啊嘞,还是一片荒漠</view>
+							</view>
+
+							<!-- <view  style="visibility: hidden;" >{{ showData }} </view> -->
+
+
+						</scroll-view>
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+
+		<!-- 打印选择类型 -->
+		<uni-popup ref="printingShowshare" :type="type" @change="change">
+			<view class="uni-share" style="width: 100%; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						选择打印类型
+					</view>
+					<scroll-view scroll-y style="margin: auto; height: 500upx; overflow: hidden; overflow-y: scroll;">
+						<view style="width: calc(100% - 40upx); margin:20upx auto; overflow: hidden;">
+							<view v-for="(item, index) in goodsItem" :key="index" @click="selectMonth(item)"
+								:class="attr == item.goods_name ? 'green':''"
+								style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item.goods_name == null ? '全部' : item.goods_name}}
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view
+					style="height: 90rpx; line-height: 90rpx; font-size: 14px; text-align: center; color: #666; background: #FFFFFF; border-top: 1px solid #EEEEEE;"
+					@click="Printingcancel('share')">取消</view>
+			</view>
+		</uni-popup>
+
+		<uni-popup ref="confirmCenter" type="center">
+			<view style="width:650upx; margin:auto; display: flex; flex-direction: column;">
+				<view style="width:100%;  background: #FFFFFF; border-radius: 15upx;
+					padding-top: 40upx; padding-bottom: 40upx;display: flex; flex-direction: column;">
+					<view style="
+					  width: 100%;
+					 text-align: center; 
+					 font-size: 35upx;
+					  color: #000;
+					   height: 80upx;
+                      line-height: 80upx;
+					 ">是否继续打印 </view>
+
+					<!-- v-if ="list.choose_whiteink == 1" -->
+					<view v-if="list.choose_whitelink == 1" style="display: flex;
+					      flex-direction: row;
+					      width: 100%; height: 250upx;
+						  justify-content: center; 
+						  align-items: center;
+						  margin-top: 80upx; 
+						  margin-bottom: 60upx;">
+						<view style="width: 50%; 
+						   display: flex;
+						   justify-content: center; 
+						   align-items: center;">
+							<view style="width: 250upx;
+							height: 250upx; 
+							background:#999;
+							color: #fff; 
+							text-align: center;
+							 line-height: 250upx;" :style="{background: selectPrintItemType == 0 ?'rgba(67, 207, 124, 1)' :'#999'}"
+								@click="selectPrintType(0)">白色手机壳
+							</view>
+						</view>
+						<view style="width: 50%;
+						display: flex;
+						justify-content: center; 
+						align-items: center;">
+							<view
+								style="width: 250upx;height: 250upx; background:#999;color: #fff;text-align: center; line-height: 250upx;"
+								:style="{background: selectPrintItemType == 1 ?'rgba(67, 207, 124, 1)' :'#999'}"
+								@click="selectPrintType(1)">其他颜色手机壳</view>
+						</view>
+					</view>
+
+
+					<view style="width:100%; display: flex; height: 60upx; align-items: center;margin-top: 40upx;">
+						<view @click="closePrintPop()"
+							style="width: 50%;text-align: center;height: 100upx; line-height: 100upx; color: #000; font-size: 30upx;">
+							取消</view>
+						<view @click.stop="printAgain()"
+							style="width: 50%;  text-align: center; height: 100upx; line-height: 100upx; color: #000;font-size: 30upx;">
+							确定</view>
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+
+		<!-- <uni-popup ref="cleanPrint" type="center" @change="changeCleanPrint">
+			<view style="width: 600upx; height: 640upx;  ">
+				<view style="background: #F9F9F9;width: 100%; height: 100%; border-radius: 20upx;
+				align-items: center;
+				display: flex;
+				flex-direction: column;">
+					<image style="width: 320upx; height: 320upx;  margin-top: 80upx; "
+						src="https://img.xiaopiu.com/userImages/img79980184d0e9c4a0.png" mode="aspectFit"> </image>
+					<view style="margin-top: 80upx; font-size: 26upx; color: #999; ">上一次清洗时间:{{clear_time }} </view>
+					<view style="width:200upx; height: 60upx; border-radius: 15upx;
+					 line-height: 60upx; text-align: center; 
+					 background: rgba(67, 207, 124, 1);margin-top: 40upx; color: #fff; " :style="{background: !isClickClean ?'rgba(67, 207, 124, 1)' :'#999' 
+					 }" @click="autoCleanNozzle()">自动清洗喷头
+					</view>
+				</view>
+			</view>
+		  </uni-popup> -->
+
+	</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				goodsItem: [{
+						goods_name: '全部',
+						type: -12,
+					},
+					{
+						goods_name: '套餐内',
+						type: 0,
+					},
+					{
+						goods_name: '打印卡',
+						type: 1,
+					},
+				],
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				//默认选中
+				currentTab: {
+					code: 1,
+					name: '机器'
+				},
+				tabBars: [{
+						code: 0,
+						name: '机器'
+					},
+					{
+						code: 2,
+						name: ''
+					},
+					{
+						code: 1,
+						name: '打印'
+					},
+				],
+				//end底部弹框
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				//加载全部交易类型数据
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: null, //货道数据
+				stockData: null, //库存数据
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				//手指原始位置
+				oldMousePos: {},
+				//元素原始位置
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartClean: false, //是否自动清洗开始
+				selectPrintItem: null, //选中打印对象
+				selectPrintItemType: 0, //0 只打印彩墨 1 打印彩墨和白
+				showData: 1,
+			};
+		},
+
+		methods: {
+
+			//选择类型
+			selectPrintType(type) {
+				this.selectPrintItemType = type
+			},
+
+			//显示打印弹框
+			showPrintPop(item) {
+				this.selectPrintItemType = 0
+				this.selectPrintItem = item;
+				this.$refs["confirmCenter"].open();
+			},
+
+			//关闭打印弹框
+			closePrintPop() {
+				this.selectPrintItem = null;
+				this.$refs["confirmCenter"].close();
+			},
+
+
+// text: "生产中"
+// value: 1
+
+			//打印
+			printAgain() {
+				if (this.selectPrintItem == null) {
+					return
+				}
+				//this.showData++;
+				//0 :只打印彩墨 1:打印彩墨和白墨
+				//恢复打印的接口:
+
+				let queue_id = this.selectPrintItem.id
+
+				let that = this;
+				
+				this.$refs["confirmCenter"].close();
+				
+				uni.showLoading({
+					title: '操作中...',
+				})
+				
+				logoservice.MachineStockGoodsList({
+					m: 'Machine/remotePrint',
+					machine_id: this.selectPrintItem.machine_id,
+					queue_id: queue_id,
+					white_ink: this.selectPrintItemType
+				}).then(result => {
+					
+					setTimeout(function() {
+						uni.hideLoading();
+						
+						that.LoupanList.forEach(itemData => {
+							if (itemData.id == queue_id) {
+								itemData.status.value = 1
+								itemData.status.text = "生产中"
+							}
+						});
+						//that.closePrintPop();
+					}, 4000) //延迟时间 这里是2秒
+
+
+				
+
+
+					//console.log(this.LoupanList);
+
+					/* LoupanList.forEach(){
+						
+					} */
+
+					//this.selectPrintItem.status.click = true;
+
+				}).catch(err => {
+					this.closePrintPop();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+
+			//调转订单列表
+			toOrderList() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+
+			touchstart(ev) {
+				ev.preventDefault();
+				this.isTouchStart = true;
+				const selectDom = ev.currentTarget;
+				const {
+					pageX,
+					pageY
+				} = ev.touches[0]; // 手指位置
+				const {
+					offsetLeft,
+					offsetTop
+				} = selectDom; // 元素位置
+				// 手指原始位置
+				this.oldMousePos = {
+					x: pageX,
+					y: pageY
+				};
+				// 元素原始位置
+				this.oldNodePos = {
+					x: offsetLeft,
+					y: offsetTop
+				};
+			},
+
+			touchMove(ev) {
+				ev.preventDefault();
+				const selectDom = ev.currentTarget;
+				// x轴偏移量
+				const lefts = this.oldMousePos.x - this.oldNodePos.x;
+				// y轴偏移量
+				const tops = this.oldMousePos.y - this.oldNodePos.y;
+				const {
+					pageX,
+					pageY
+				} = ev.touches[0]; // 手指位置
+				this.autoCleanLeft = pageX - lefts;
+				this.autoCleanTop = pageY - tops;
+			},
+
+			touchEnd(ev) {
+				ev.preventDefault();
+				this.isTouchStart = false;
+			},
+
+			//自定清洗               
+			autoCleanNozzle() {
+				if (this.isClickClean) {
+					return;
+				}
+				this.isClickClean = true;
+				this.$refs['cleanPrint'].setMaskClick(false);
+				uni.showLoading({
+					title: '清洗中...',
+				})
+				this.intCountTimer = 0;
+				this.countDownTimeCount = 1;
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/clearHead',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.autoClick()
+				}).catch(err => {
+					this.cleanTimeData();
+					uni.showToast({
+						title: err.msg,
+						duration: 1000,
+						icon: "none",
+					})
+				})
+			},
+
+			//清除计时器数据
+			cleanTimeData() {
+				this.isAutoStartClean = false;
+				clearInterval(this.timer);
+				this.timer = null;
+				clearInterval(this.countDownTime);
+				this.countDownTime = null;
+				this.intCountTimer = 0;
+				this.isClickClean = false;
+				this.$refs['cleanPrint'].setMaskClick(true);
+				uni.hideLoading();
+				this.$refs['cleanCountDown'].close();
+				this.$refs['cleanPrint'].open();
+				this.countDownTimeCount = 1;
+			},
+
+			//5秒一次定时器
+			autoClick() {
+				this.$refs['cleanCountDown'].open();
+				this.$refs['cleanPrint'].close();
+				this.isAutoStartClean = true;
+				let that = this;
+				this.timer = setInterval(function() {
+					that.getCleanStatus();
+				}, 5000);
+				this.countDownTime = setInterval(function() {
+					that.countDownTimeCount++;
+				}, 1000);
+			},
+
+			//获取状态值
+			getCleanStatus() {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/getClearHeadStatus',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					if (this.countDownTimeCount >= 60) {
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+					let clear_status = result.clear_status.value;
+					if (clear_status == 0) {
+						this.$refs['cleanPrint'].setMaskClick(true);
+						if (result.clear_time) {
+							this.clear_time = result.clear_time;
+						}
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+				}).catch(err => {
+
+				})
+			},
+
+			//清洗打印弹窗
+			cleanPrintPop() {
+				this.$refs['cleanPrint'].open();
+			},
+
+			changeCleanPrint(obj) {
+				this.isShowPop = obj.show;
+			},
+
+			//选中普通设备列表
+			selectStockList(index, item) {
+				var resultList = this.stockDataList;
+				this.stockDataList = [];
+				var isDown = item.isDown;
+				if (isDown) {
+					isDown = false
+				} else {
+					isDown = true
+				}
+				resultList.forEach(itemData => {
+					if (itemData.id == item.id) {
+						itemData.isDown = isDown
+					}
+				})
+				this.stockDataList = resultList;
+			},
+
+			//调转库存列表
+			toStockList() {
+				uni.navigateTo({
+					url: '../mall/stockList?id=' + this.queryPage.machine_id,
+				});
+			},
+
+			//获取库存新接口
+			getStockData() {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/getStockDetail',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.stockData = result;
+					var max = 60;
+					var first = 20;
+					this.stockData.list.forEach((item, index) => {
+						item.id = index
+						item.isDown = false;
+						if (index == 0) {
+							item.row2 = max * item.need_stock / first;
+							if (item.row2 <= 0) {
+								item.row2 = 0;
+							}
+							first = parseFloat(item.need_stock);
+							if (first <= 1) {
+								first = 20;
+							}
+						} else {
+							item.row2 = max * parseFloat(item.need_stock / first)
+							if (item.row2 <= 0) {
+								item.row2 = 0;
+							}
+						}
+					})
+					this.stockDataList = this.stockData.list
+				}).catch(err => {
+
+				})
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//预览显示图片
+			showPreviewImage(e, id) {
+				if (e == null || e == "") {
+					uni.showToast({
+						title: '暂时没有定制二维码',
+						icon: 'none'
+					});
+					return
+				}
+				var current = e + "?x-oss-process=image/watermark,text_" + this.getStrToBase64(id) +
+					",g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a"; //这里获取到的是一张本地的图片
+				uni.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+
+			//获取剩余量次数相差
+			getPrintSurplusCount(count) {
+				try {
+					if (count >= 200) { //白色
+						return 1;
+					} else if (count < 200 && count >= 50) { //橙色
+						return 2;
+					} else if (count < 50) { //红色
+						return 3;
+					}
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+			//获取相差天数 
+			getDaysDifference(time) {
+				try {
+					let day = new Date(time.replace(/-/g, "/")).getTime() - new Date().getTime(); //日期转时间戳
+					let dayCount = Math.floor(day / 86400000); //时间戳获取天数
+					return dayCount;
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+			//格式化时间
+			dateFormat(time) {
+				try {
+					var dt = new Date(time.replace(/-/g, '/'));
+					var y = dt.getFullYear();
+					var m = dt.getMonth() + 1;
+					var d = dt.getDate();
+					return y + '年' + m + '月' + d + '日';
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				if (time == undefined) {
+					return "";
+				}
+				return time;
+			},
+
+			//调转明细页面
+			packageDetail(machineId) {
+				let machineid = machineId;
+				uni.navigateTo({
+					url: '../mine/PrintUseDetail?machineid=' + machineid + '&print_type=' + this.print_type
+				});
+			},
+
+
+
+
+			Reprint(item) {
+				if (item.status.value == 0) {
+					return;
+				}
+				uni.showModal({
+					title: '温馨提示',
+					content: '是否此订单恢复打印?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							//恢复打印的接口:
+							logoservice.MachineStockGoodsList({
+								m: 'Machine/repeatPrint',
+								machine_id: item.machine_id,
+								id: item.id,
+							}).then(result => {
+								uni.showToast({
+									title: '恢复订单打印成功',
+									icon: 'none'
+								});
+								item.status.value = 0
+								item.status.text = "等待出料"
+							}).catch(err => {
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//代理商名字
+			partnername(partner_id, partner) {
+				var partner_name = '尚未铺设';
+				if (partner) {
+					partner.forEach(item => {
+						if (item.id == partner_id) {
+							partner_name = item.name
+						}
+					});
+				}
+				return partner_name
+			},
+
+			tomain() {
+				uni.reLaunch({
+					url: "/pages/index/home"
+				})
+			},
+
+			//打印年月日printing  Printing
+			printingShowPicker(mode) {
+				this.$refs.printingMpvuePicker.show();
+			},
+
+			//日期确定
+			onConfirmPrinting(e) {
+				this.queryPage.year = null
+				this.queryPage.month = null
+				this.queryPage.date = null
+				if (e.value.length == 1) {
+					this.queryPage.year = e.value[0]
+				} else if (e.value.length == 2) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + e.value[1] //补齐
+					}
+					this.queryPage.month = e.value[0] + '-' + myMonth
+				} else if (e.value.length == 3) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth //补齐
+					}
+					let mydate = e.value[2]
+					if (mydate < 10) {
+						mydate = '0' + e.value[2] //补齐
+					}
+					this.queryPage.date = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				//数据加载状态处理 false
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.LoupanList = []
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//打开类型
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['printingShowshare'].open()
+				})
+				this.getGoodsAttrList()
+			},
+
+			Printingcancel(type) {
+				this.$refs['printingShowshare'].close()
+			},
+
+			selectMonth(item) {
+				if (item.type == -12) {
+					this.attr = "全部打印类型";
+					this.queryPage.is_excess = null;
+				} else {
+					this.attr = item.goods_name ? item.goods_name : null
+					this.queryPage.is_excess = item.type
+				}
+				this.$refs['printingShowshare'].close();
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//更换弹框
+			showshareclick(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let itema = JSON.stringify(item)
+				let itemb = JSON.parse(itema);
+				this.showshareitem = itemb;
+				this.showshareindex = index;
+				this.$nextTick(() => {
+					this.$refs['showshareinput'].open()
+				})
+			},
+
+			change(e) {
+
+			},
+
+			//库存数量输入
+			StockCountInput(e) {
+				this.isOnclickItem = true;
+				var that = this;
+				setTimeout(function() {
+					that.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是2秒
+			},
+
+			inputVal(item, index) {
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let StcokListsnumber = item.total_stock
+				if (item.stock > this.maxnumber) {
+					uni.showToast({
+						title: '最大只能输入' + this.maxnumber + '个',
+						icon: 'none',
+					});
+					item.stock = StcokListsnumber > this.maxnumber ? this.maxnumber : StcokListsnumber;
+					return false;
+				}
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//pop选中商品
+			selectGood(item) {
+				this.$refs["showshare"].close();
+				var that = this;
+				let index;
+				if (this.selectItem != null) {
+					that.StcokList.forEach((items, indexNumber) => {
+						if (items.id == this.selectItem.id) {
+							index = indexNumber;
+						}
+					});
+				}
+				uni.showModal({
+					title: '确认',
+					content: '是否关联当前商品?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							if (that.list.used_applets == '3') {
+								that.StcokList[index].stock = item.stock > 12 ? 12 : item.stock;
+							}
+							if (that.list.used_applets == '4') {
+								that.StcokList[index].stock = item.stock > 7 ? 7 : item.stock;
+							}
+							that.StcokList[index].title = item.title; //name
+							that.StcokList[index].name = item.name;
+							that.StcokList[index].front_image = item.front_image;
+							that.StcokList[index].goods_id = item.goods_id;
+							that.StcokList[index].dict_id = item.dict_id;
+							that.StcokList[index].total_stock = item.stock;
+							that.StcokList[index].isShowPullButtom = false;
+							that.confirmChangeChannel(that.StcokList[index])
+						}
+					}
+				});
+			},
+
+			//确认更换货道
+			confirmChangeChannel(item) {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/saveStock',
+					id: item.id,
+					machine_id: this.queryPage.machine_id,
+					goods_id: item.goods_id,
+					goods_size: item.goods_size,
+					stock: item.stock,
+					dict_id: item.dict_id
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: "更换成功",
+						icon: 'none'
+					});
+				}).catch(err => {
+					uni.hideLoading();
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.StcokList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.loadStockList(Enums.DATA_DIRECTION.UP);
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//下架功能
+			shelvesGood(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				var _this = this
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品下架吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							console.log(item.goods_id)
+							if (item.goods_id == 0) {
+								uni.showToast({
+									title: "还没绑定商品不能下架",
+									icon: 'none'
+								});
+								_this.StcokList[index].isShowPullButtom = false;
+								_this.SortNumber++;
+								_this.StcokList[index].SortNumber = _this.SortNumber;
+								this.setData({
+									StcokList: _this.StcokList
+								})
+							} else {
+								uni.showLoading({
+									title: '正在加载中...'
+								})
+								logoservice.MachineSavePartnerStock({
+									m: 'Machine/saveStock',
+									id: item.id,
+									machine_id: _this.queryPage.machine_id,
+									goods_id: item.goods_id,
+									goods_size: item.goods_size,
+									stock: item.stock,
+									dict_id: item.dict_id,
+									type: "off",
+								}).then(result => {
+									console.log(result)
+									uni.hideLoading();
+									uni.showToast({
+										title: "下架成功",
+										icon: 'none'
+									});
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+								}).catch(err => {
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+									uni.hideLoading();
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								})
+							}
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			//显示下面选择按钮 
+			showPullButton(item, index) {
+				if (this.isOnclickItem == false) {
+					var that = this;
+					if (item.isShowPullButtom) {
+						that.StcokList[index].isShowPullButtom = false;
+					} else {
+						that.StcokList[index].isShowPullButtom = true;
+					}
+					this.SortNumber++;
+					that.StcokList[index].SortNumber = this.SortNumber;
+					this.setData({
+						StcokList: that.StcokList
+					})
+				}
+			},
+
+			//修改货道
+			changeChannel(item, index) {
+				this.$refs["showshareinput"].close();
+				this.$refs["showshare"].close();
+				var _this = this
+				_this.isOnclickItem = true;
+				setTimeout(function() {
+					_this.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是1秒
+				let jsonLists = JSON.parse(_this.StcokLists);
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品货道调整吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							uni.showLoading({
+								title: '正在加载中...'
+							})
+							logoservice.MachineSavePartnerStock({
+								m: 'Machine/saveStock',
+								id: item.id,
+								machine_id: _this.queryPage.machine_id,
+								goods_id: item.goods_id,
+								goods_size: item.goods_size,
+								stock: item.stock,
+								dict_id: item.dict_id
+							}).then(result => {
+								uni.hideLoading();
+								uni.showToast({
+									title: "修改成功",
+									icon: 'none'
+								});
+								_this.StcokList[index].stock = item.stock;
+							}).catch(err => {
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+
+						}
+					}
+				});
+			},
+
+			//获取底部弹框数据
+			loadStockGoodsList(goods_name) {
+				logoservice.MachineStockGoodsList({
+					m: 'Machine/getStockGoodsList',
+					machine_id: this.queryPage.machine_id,
+					goods_name: goods_name,
+				}).then(result => {
+					this.GoodsItem = result;
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+			reprint(e, index) {
+				//console.log(e)
+				//console.log(index)
+			},
+
+			chooseImage: async function() {
+				if (this.$base.Userres.be_child == 1) return;
+				var _this = this
+				uni.chooseImage({
+					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['camera', 'album'], //从相册选择
+					count: 1,
+					success: (res) => {
+						let tempFilePaths = res.tempFilePaths;
+						uni.showLoading({
+							title: '图片正在上传...'
+						})
+						uni.uploadFile({
+							url: 'https://tprint.refinecolor.com/partnerapplets/index',
+							filePath: tempFilePaths[0],
+							method: 'POST',
+							name: 'file',
+							header: {
+								'content-type': 'multipart/form-data'
+							},
+							formData: {
+								m: 'Upload/upload'
+							}, //请求额外的form data
+							success: function(res) {
+								logoservice.MachinesaveCover({
+									m: 'Machine/saveCover',
+									machine_id: _this.queryPage.machine_id,
+									cover: JSON.parse(res.data).data.url
+								}).then(result => {
+									uni.hideLoading();
+									uni.showToast({
+										title: '上传成功',
+										icon: 'none',
+										duration: 3000
+									})
+									_this.listdetail()
+								}).catch(err => {
+									uni.hideLoading();
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								})
+							},
+							fail: function(res) {
+								console.log(res);
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							}
+						})
+					}
+				})
+			},
+
+			//预览图片
+			previewImage(imgs, list) {
+				let listattr = []
+				list.forEach(item => {
+					listattr.push(item.works_image)
+				})
+				var current = imgs.works_image; //这里获取到的是一张本地的图片
+				wx.previewImage({
+					current: current, // 当前显示图片的http链接
+					urls: listattr // 需要预览的图片http链接列表
+				})
+			},
+
+			datatimeLimited(time) {
+				return new Date(time.replace(/-/g, "/"))._format('HH:mm:ss');
+			},
+
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			categoryaddress(address) {
+				var dataaddress = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == address) {
+							dataaddress = item.address.replace('<br/>', '');
+						}
+					});
+				}
+				return dataaddress
+			},
+
+			//店铺
+			showPicker(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.pickerValueArray = this.shopList
+				this.pickerValueArray.filter(item => {
+					item.label = item.short_name
+					item.value = item.id
+				});
+				this.$refs.mpvuePicker.show();
+			},
+
+			//确定
+			onConfirm(e) {
+				uni.showLoading({
+					title: '正在关联中...'
+				})
+				logoservice.Machinelistdetail({
+					m: 'Machine/bindShop',
+					machine_id: this.queryPage.machine_id,
+					shop_id: e.value[0]
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '关联店铺成功',
+						icon: 'none'
+					});
+					this.listdetail()
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			tapTab(tab) {
+				this.currentTab = tab;
+				if (this.currentTab.code == 0) {
+					this.listdetail()
+				}
+				if (this.currentTab.code == 1) {
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.LoupanList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+				}
+				if (this.currentTab.code == 2) {
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.StcokList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.getStockData();
+				}
+			},
+
+			//设备挂起
+			onSefaultStatus(e) {
+				this.list.flag.value = e.detail.value ? 'N' : 'Y';
+				if (e.detail.value == true) {
+					uni.showLoading({
+						title: '设备挂起中...'
+					})
+				} else {
+					uni.showLoading({
+						title: '设备恢复中...'
+					})
+				}
+				logoservice.Machinestatus({
+					m: 'Machine/status',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					uni.hideLoading();
+					if (e.detail.value == true) {
+						uni.showToast({
+							title: '挂起成功'
+						})
+					} else {
+						uni.showToast({
+							title: '恢复成功'
+						})
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+					if (this.list.flag.value == 'N') {
+						this.list.flag.value = 'Y'
+					} else if (this.list.flag.value == 'Y') {
+						this.list.flag.value = 'N'
+					}
+				})
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						if (this.list.show_clean) {
+							this.show_clean = this.list.show_clean
+						}
+						if (this.list.clear_time) {
+							this.clear_time = this.list.clear_time
+						}
+						if (this.list.edition != null && this.list.edition.mark == 'standard') {
+							this.print_type = 0;
+						} else if (this.list.edition != null && this.list.edition.mark ==
+							'unlimited') {
+							this.print_type = 1;
+						}
+						let ink = this.list.ink;
+						if (ink.length >= 6) {
+							this.inkStatusC = ink.substring(0, 1) == 0 ? true : false;
+							this.inkStatusM = ink.substring(1, 2) == 0 ? true : false;
+							this.inkStatusY = ink.substring(2, 3) == 0 ? true : false;
+							this.inkStatusK = ink.substring(3, 4) == 0 ? true : false;
+							this.inkStatusW = ink.substring(4, 5) == 0 ? true : false;
+							this.inkStatusHas = ink.substring(5, 6) == 0 ? true : false;
+						}
+						this.list.default_package.create_date = this.dateFormat(this.list
+							.default_package
+							.expire_date);
+						if (this.list.machine_category_id == 63) {
+							this.tabBars = [{
+										code: 0,
+										name: '机器'
+									},
+									{
+										code: 1,
+										name: '打印'
+									},
+									{
+										code: 2,
+										name: '库存'
+									},
+								],
+								this.list.isSinglePlatep = false;
+						}
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//设备打印信息 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//下拉更新时,查询结果集
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//做滚动加载使用
+			loadMore() {
+				if (this.isTouchStart || this.currentTab.code == 0) {
+					return;
+				}
+				if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				if (this.currentTab.code == 1) {
+					this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+				}
+				if (this.currentTab.code == 2) {
+					this.loadStockList(Enums.DATA_DIRECTION.DOWN)
+				}
+			},
+
+			//获取日期
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				this.queryPage.date = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+			},
+
+			//获取月份
+			getMonth() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				this.queryPage.month = myDate.getFullYear() + '-' + myMonth;
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+			if (this.isTouchStart) {
+				return;
+			}
+			if (this.currentTab.code == 0) {
+				this.listdetail()
+			}
+			if (this.currentTab.code == 1) {
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			}
+			if (this.currentTab.code == 2) {
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.StcokList = []
+				this.loadStockList(Enums.DATA_DIRECTION.UP);
+			}
+			uni.stopPullDownRefresh();
+		},
+
+		//上拉加载
+		onReachBottom() {
+			if (this.currentTab.code == 0 || this.isTouchStart) {
+				return;
+			}
+			if (this.LoupanList.length < 6) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			if (this.currentTab.code == 1) {
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN)
+			}
+		},
+
+		onLoad(options) {
+			//设置时间
+			let that = this;
+			uni.getSystemInfo({
+				success(res) {
+					that.autoCleanLeft = res.windowWidth - 100;
+					that.autoCleanTop = res.windowHeight - 180;
+				}
+			});
+			this.getMonth();
+			this.printingPickerValueArray = ['month'];
+			this.queryPage.machine_id = options.id
+         //logoservice.setwixinInfo(result);
+		 
+         this.listdetail();
+         this.attr = "全部打印类型";
+         this.queryPage.is_excess = null;
+         this.dataLoadState.pullDownRefresh = false;
+         this.dataLoadState.reachBottom = false;
+         this.queryPage.page = 1;
+         this.queryPage.total = 0;
+         this.LoupanList = []
+         this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+
+
+
+			// uni.login({
+			// 	provider: 'weixin',
+			// 	success: (res) => {
+			// 		logoservice.login({
+			// 			m: 'Init/init',
+			// 			code: res.code
+			// 		}).then(result => {
+			// 			that.$base.Userres = result //记录用户登录信息
+			// 			that.Userres_partner_id = that.$base.Userres.partner_id //总代理
+			// 			that.is_inner = that.$base.Userres.is_inner
+			// 			logoservice.setwixinInfo(result);
+			// 			that.listdetail();
+
+			// 			that.attr = "全部打印类型";
+			// 			that.queryPage.is_excess = null;
+			// 			that.dataLoadState.pullDownRefresh = false;
+			// 			that.dataLoadState.reachBottom = false;
+			// 			that.queryPage.page = 1;
+			// 			that.queryPage.total = 0;
+			// 			that.LoupanList = []
+			// 			that.loadGoodsList(Enums.DATA_DIRECTION.UP);
+
+			// 		}).catch(err => {
+			// 			uni.navigateTo({
+			// 				url: 'login',
+			// 			});
+			// 		})
+			// 	},
+			// 	fail: (err) => {
+			// 		//console.error('授权登录失败:' + JSON.stringify(err));
+			// 	}
+			// });
+		},
+		onShow() {
+			this.isTouchStart = false;
+			if (this.$base != null && this.$base.Userres != null) {
+				this.be_child = this.$base.Userres.be_child //子代理
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/* 底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 20upx;
+
+			.order-list {
+				min-height: 350upx;
+				margin-right: 5upx;
+				width: calc(100% - 5upx);
+				border-radius: 10upx;
+
+
+
+				.item {
+					min-height: 35upx;
+					display: flex;
+					margin-left: 20upx;
+					align-items: center;
+					font-size: 28upx;
+
+					.text {
+						width: 250upx;
+						/*padding-left: 25upx; */
+						color: #353535;
+					}
+
+					.value {
+						width: calc(100% - 280upx);
+						display: flex;
+
+						.prick {
+							width: calc(100% - 40upx);
+						}
+
+						.fa-angle-right {
+							width: 40upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/profit.vue b/pages/mall/profit.vue
new file mode 100644
index 0000000..f621373
--- /dev/null
+++ b/pages/mall/profit.vue
@@ -0,0 +1,421 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<!-- 动态数据 -->
+			<view
+				style="display: flex;  flex-direction: row;width: calc(100% - 40upx); height: 60upx;  background: #fff; margin-left: 20upx; ">
+				<view @click="selectDayData(1)" style="width: 50%; line-height: 60upx; text-align: center;" :style="{ 
+					background : selectDay ?  '#333' : '#fff', color: selectDay ?  '#fff' : '#333'}">
+					每日
+				</view>
+				<view @click="selectDayData(2)" style="width: 50%; line-height: 60upx; text-align: center; " :style="{
+					background : selectDay ?  '#fff' : '#333', color: selectDay ?  '#333' : '#fff'}">
+					每月
+				</view>
+			</view>
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long">
+				<view v-for="(item, index) in LoupanList" :key="index" class="eq_list" @click="refundNumorder(item)">
+
+					<view class="eq_list_div">
+						<view>
+							<view style="font-size: 36upx;font-weight: 600;color: #333; margin-top: 8upx;">{{item.day}}
+							</view>
+							<view style="display: flex; flex-direction: row; margin-top: 10upx; height: 55upx;">
+
+								<!-- {{item.valid_num} } -->
+								<view style="font-size:48upx;font-weight: 600; color: #00B83AFF;"
+									:style="{color:item.valid_num > 0 ? '#00B83AFF' :'#FB1B1B'}"> {{item.valid_num}}
+								</view>
+
+								<view style="display: flex; flex-direction: row;align-items: flex-end; height: 100%;
+								margin-left: 5upx;">
+									<view style="font-size: 35upx;font-weight: 600; color: #333; ">单</view>
+									<view style="font-size: 26upx;color: #999999; margin-left: 12upx; ">
+										全部{{item.pay_num}}单</view>
+								</view>
+
+							</view>
+						</view>
+						<view :class="item.isShowPullButtom ? 'lang-open' : 'lang-close'"
+							style="margin-left: auto; margin-right: 20upx;">
+							<label class="fa fa-angle-right align-right sub-color" style="font-size: 40upx;"></label>
+						</view>
+					</view>
+				</view>
+
+				<!-- 暂无相关信息 -->
+				<view class="align-center content-color"
+					style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+					v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju"
+						style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 23upx;">暂无相关信息</view>
+				</view>
+			</view>
+
+		</view>
+		<!-- 返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import Enums from '@/util/Enums';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	// 自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon,
+			foot,
+			uniPopup
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				msg: "",
+				error: true,
+				stockValue: "",
+				stockCount: "",
+				long: false,
+				LoupanList: [], //数据
+				//返回顶部
+				totopstatus: false,
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Money/receiveOrderList',
+					page: 1,
+					per_page: 12,
+					count: 0,
+					machine_id: ""
+				},
+				nameInput: null,
+				isOnclickItem: false, //是否点击item
+				showshareitem: null,
+				showshareindex: null,
+				proxy: 0, //proxy,0我的订单,1代理订单 默认是0
+				selectDay: true, //选择月份
+				typeSelect: 0, //0 显示全部 1 显示日 2 显示月
+				dateStr: '',
+				time: '',
+				week: ''
+			};
+		},
+
+		methods: {
+			//选择月份 type = 1 //天  type = 2 月
+			selectDayData(type) {
+				if (type == 1) {
+					this.selectDay = true
+				} else {
+					this.selectDay = false
+				}
+				this.LoupanList = []
+				this.queryPage.page = 1;
+				this.queryPage.count = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP, type);
+			},
+
+			//点击调转订单页面
+			refundNumorder(e) {
+				if (this.selectDay) {
+					uni.navigateTo({
+						url: '/pages/mine/order?day=' + e.day + "&proxy=" + this.proxy + "&is_pay=1&machineid=" +
+							this.queryPage.machine_id,
+					});
+				} else {
+					uni.navigateTo({
+						url: '/pages/mine/order?month=' + e.day + "&proxy=" + this.proxy +
+							"&is_pay=1&is_pay=1&machineid=" + this.queryPage.machine_id,
+					});
+				}
+			},
+
+			timeDayFormat() {
+				var dateTime = new Date();
+				//获得系统年份;
+				var year = dateTime.getFullYear();
+				//获得系统月份;
+				var month = dateTime.getMonth() + 1;
+				//获得系统当月分天数;
+				var day = dateTime.getDate();
+				//打印完整的系统日期;
+				return year + '-' + month + '-' + day + ' ';
+			},
+
+			loadGoodsList(direction, type) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...',
+					mask: true
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				//machineOrderListByMonth
+				//machineOrderListByMonth
+				if (type == 1) {
+					this.queryPage.m = "Money/machineOrderList"; //receiveOrderListByMonth  //Money/machineOrderList
+				} else {
+					this.queryPage.m = "Money/machineOrderListByMonth"; //Money/machineOrderListByMonth
+				}
+				logoservice.receiveMoneyList(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data
+
+					//下拉更新时,查询结果集
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+
+					if (type != 1) {
+						newList.forEach(itemData => {
+							itemData.day = itemData.month
+						});
+					}
+					// if (this.typeSelect == 1) {
+					// 	let dayListData = [];
+					// 	if (newList != null && newList.length > 0) {
+					// 		var daytime = this.timeDayFormat();
+					// 		for (var i = 0; i < newList.length; i++) {
+					// 			 var itemData = newList[i];
+					// 			if (itemData.day == daytime) {
+					// 				dayListData.push(itemData)
+					// 			}
+					// 			break;
+					// 		}
+					// 	}
+					// 	newList = dayListData
+					// }
+
+
+					this.LoupanList = newList
+
+					//分页对象处理
+					this.queryPage.count = result.count;
+					this.queryPage.per_page = result.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					//uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+			//返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			//做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+		},
+		//下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			this.LoupanList = []
+			var type = 1;
+			if (this.selectDay) {
+				type = 1
+			} else {
+				type = 2
+			}
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP, type);
+		},
+		//上拉加载
+		onReachBottom() {
+
+		},
+		onLoad(options) {
+			console.log(options);
+			//this.proxy = options.proxy
+			if (this.proxy) {
+				this.proxy = options.proxy
+			}
+
+			if (options.machine_id) {
+				this.queryPage.machine_id = options.machine_id
+			}
+			if (options.type) {
+				this.typeSelect = options.type;
+				if (this.typeSelect == 1) {
+					this.selectDay = true
+				} else {
+					this.selectDay = false
+				}
+			}
+			this.LoupanList = []
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			var type = 1;
+			if (this.selectDay) {
+				type = 1
+			} else {
+				type = 2
+			}
+
+			this.LoupanList = []
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			var type = 1;
+			if (this.selectDay) {
+				type = 1
+			} else {
+				type = 2
+			}
+
+		
+			
+			this.LoupanList = []
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			var type = 1;
+			if (this.selectDay) {
+				type = 1
+			} else {
+				type = 2
+			}
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP, type);
+			
+
+
+			/* uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						logoservice.setwixinInfo(result);
+						this.LoupanList = []
+						this.queryPage.page = 1;
+						this.queryPage.count = 0;
+						var type = 1;
+						if (this.selectDay) {
+							type = 1
+						} else {
+							type = 2
+						}
+
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP, type);
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			}); */
+		},
+		onShow() {
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.eq_list {
+		width: 94%;
+		margin: 20upx auto;
+		border-radius: 10upx;
+		overflow: hidden;
+
+		.eq_list_div {
+			background: #FFFFFF;
+			padding: 20upx 30upx;
+			display: flex;
+			align-items: center;
+		}
+	}
+
+	//返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/related-template.vue b/pages/mall/related-template.vue
new file mode 100644
index 0000000..9f8a42a
--- /dev/null
+++ b/pages/mall/related-template.vue
@@ -0,0 +1,631 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content" v-if="long"
+				style="padding-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+
+				<view class="order-list">
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+
+					<view class="item-new-list-text">模版功能仅对部分机型有效。开启对应的模板,设备即可实现当前商品的自动校对位置</view>
+
+					<view class="item-new-list">
+
+
+						<view v-for="(item, index) in list" :key="index">
+							<view class="item full-width">
+								<label class="text content-color">{{item.name}}</label>
+								<switch :checked="item.flag == 1 ? true :false" @change="onSwitchChange($event,item)"
+									class="item-new-list-switch" />
+							</view>
+						</view>
+
+
+
+					</view>
+
+
+				</view>
+
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true,
+				isShowPullButtom: false,
+				isOnclickItem: false,
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [],
+				StcokLists: [],
+				list: null,
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null,
+					month: null,
+					year: null,
+					is_excess: null,
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				showshareitem: null,
+				showshareindex: null,
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				isShowPop: false,
+			};
+		},
+
+		methods: {
+
+
+			//开关修改
+			onSwitchChange(e, item) {
+				if (e.detail.value == true) {
+					item.flag = 1;
+					uni.showLoading({
+						title: '开启中...'
+					})
+				} else {
+					item.flag = 0;
+					//this.getSwitchCheck(type, false)
+					uni.showLoading({
+						title: '关闭中...'
+					})
+				}
+				logoservice.Machinestatus({
+					m: 'Machine/machineCanvasSave',
+					machine_id: this.queryPage.machine_id,
+					canvas_size_id: item.id,
+				}).then(result => {
+					uni.hideLoading();
+					if (e.detail.value == true) {
+						uni.showToast({
+							title: '开启成功'
+						})
+					} else {
+						uni.showToast({
+							title: '关闭成功'
+						})
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+					if (e.detail.value == true) {
+						item.flag = 0;
+					} else {
+						item.flag = 1;
+					}
+				})
+			},
+
+
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+
+			//设备列表详情
+			goodList() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/machineCanvas',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+
+					this.list = result;
+
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+
+		},
+
+		onPullDownRefresh() {
+
+		},
+
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+
+			this.queryPage.machine_id = options.machineid
+			this.goodList();
+		},
+
+		onShow() {
+
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/relevance-shop.vue b/pages/mall/relevance-shop.vue
new file mode 100644
index 0000000..a1489d3
--- /dev/null
+++ b/pages/mall/relevance-shop.vue
@@ -0,0 +1,856 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%;">
+				<!-- 机器 -->
+				<view class="order-list">
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list" style="padding-top: 60upx;padding-bottom: 60upx;">
+						<view style="color: #000; font-size: 70upx; font-weight: 500; text-align: center; "
+							@click="addShop()">+</view>
+					</view>
+
+					<view class="item-new-list"  v-if="list" >
+						<view class="item full-width" >
+							<label class="text content-color">店铺</label>
+
+							<label class="value content-color">
+
+							<view  v-if="shop_id"   class="full-width" 
+								 style="width: 550upx;
+								   height: 45upx;
+								   border-radius: 8upx;
+								  background: transparent;
+								  position: absolute;
+								   right: 40upx;
+								   margin-top: -20upx;" @click="showPicker()">
+									<view style="color: #000; margin-top: 10upx; font-size: 24upx;display: flex; justify-content: flex-end; width: 470upx; ">{{category(shop_id)}}</view>
+									<span class="iconfont icon-xiala"style="font-size: 20upx; 
+									 color: #999; 
+									 margin-right:10upx;
+									 position: relative; 
+									 float: right; 
+									 right: 20upx; 
+									 top:-28upx"></span>
+								</view>
+
+								<view style="text-align: right; color: #888888; line-height: 50upx;" class="full-width" v-if="!shop_id">没有关联店铺</view>
+
+							</label>
+						</view>
+					</view>
+					<view class="item-new-list-text">关联具体的店铺,访问设备时将显示店铺的具体位置、营业时间,便以客户选择</view>
+				</view>
+			</view>
+
+			<view class="save_bt"  @click="saveShop()">确认</view>
+
+			<!-- 店铺 -->
+			<mpvue-picker ref="mpvuePicker" :themeColor="'#53B2B0'" :mode="mode"
+				:pickerValueDefault="pickerValueDefault" @onChange="onChange" @onCancel="onCancel"
+				:pickerValueArray="pickerValueArray" @onConfirm="onConfirm">
+			</mpvue-picker>
+			
+
+			<view v-if="isTouchStart" style="
+			            position: fixed;
+						top: 0;
+						left: 0;
+			            bottom: 0;
+						right: 0;
+						width: 100%;
+						height: 100%;
+						z-index: 9999;" @touchmove.prevent @mousewheel.prevent></view>
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: null, //货道数据
+				stockData: null, //库存数据
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				oldMousePos: {},
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartClean: false, //是否自动清洗开始
+				shop_id: null
+			};
+		},
+
+		methods: {
+
+			//添加店铺
+			addShop() {
+				uni.navigateTo({
+					url: "/pages/store/shopdetails?machine_id=" + this.queryPage.machine_id 
+				})
+			},
+
+			//保存店铺
+			saveShop() {
+				if (this.shop_id == "" || this.shop_id == null) {
+					uni.showToast({
+						title: '还没关联店铺',
+						icon: 'none'
+					});
+					return
+				}
+				uni.showLoading({
+					title: '正在关联中...'
+				})
+				logoservice.Machinelistdetail({
+					m: 'Machine/bindShop',
+					machine_id: this.queryPage.machine_id,
+					shop_id: this.shop_id
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '关联店铺成功',
+						icon: 'none'
+					});
+					uni.navigateBack()
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//获取店铺名称
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+			//店铺
+			showPicker(item) {
+				this.pickerValueArray = this.shopList
+				this.pickerValueArray.filter(item => {
+					item.label = item.short_name
+					item.value = item.id
+				});
+				this.$refs.mpvuePicker.show();
+			},
+
+			//确定
+			onConfirm(e) {
+				this.shop_id = e.value[0];
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						console.log(this.list)
+						this.shop_id = this.list.shop_id
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+
+		},
+
+		//上拉加载
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			//console.log(options.machineid)
+			this.listdetail();
+			this.machineGetShopList();
+		},
+
+		onShow() {
+			this.machineGetShopList();
+		}
+	};
+</script>
+
+<style lang="scss">
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				margin-right: 5upx;
+				width: calc(100% - 5upx);
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+				
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+				
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/software-update.vue b/pages/mall/software-update.vue
new file mode 100644
index 0000000..5eef2a8
--- /dev/null
+++ b/pages/mall/software-update.vue
@@ -0,0 +1,812 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width" v-if="list">
+			<view class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+				<view class="order-list">
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">状态</label>
+						
+							<label class="value content-color" v-if="list.flag.value == 'Y'">
+								<text v-if="list.status.value == 0" style="text-align:right; color: #808080;"
+									class="full-width">离线</text>
+								<text v-if="list.status.value == 1 || list.status.value == 2 "
+									style="text-align:right; color: #5CE6B5;" class="full-width">在线</text>
+								<text v-if="list.status.value == 3 || list.status.value == 4 || list.status.value == 5 "
+									style="text-align:right; color: #D43030;" class="full-width">故障</text>
+							</label>
+							
+							<label class="value content-color" v-if="list.flag.value == 'N'">
+								<text  style="text-align:right; color: #FF8D1A;"
+									class="full-width">锁定</text>
+							</label>
+							
+						</view>
+
+						<view class="item full-width">
+							<label class="text content-color">当前版本</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{list.version}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">机器必须通电,且有正常连接网络,设备将自动完成下载和更新软件。</view>
+
+					<view class="item-new-list-text" style="text-align: center;margin-top: 80upx; 	color: #000;
+						font-size: 32upx;">
+						{{list.pc_version}}<br>你的设备已是最新的软件版本,包含所有最新的错误修复和安全性增强功能</view>
+				</view>
+
+			</view>
+
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: null, //货道数据
+				stockData: null, //库存数据
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				oldMousePos: {},
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartClean: false, //是否自动清洗开始
+				shop_id: null
+			};
+		},
+
+		methods: {
+
+			//清洗历史记录
+			cleanNozzleHistory() {
+				uni.navigateTo({
+					url: "/pages/mall/clean-nozzle-history?machineid=" + this.queryPage.machine_id
+				})
+			},
+
+			//保存店铺
+			saveShop() {
+				if (this.shop_id == "" || this.shop_id == null) {
+					uni.showToast({
+						title: '还没关联店铺',
+						icon: 'none'
+					});
+					return
+				}
+				uni.showLoading({
+					title: '正在关联中...'
+				})
+				logoservice.Machinelistdetail({
+					m: 'Machine/bindShop',
+					machine_id: this.queryPage.machine_id,
+					shop_id: this.shop_id
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: '关联店铺成功',
+						icon: 'none'
+					});
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//获取店铺名称
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+
+			//确定
+			onConfirm(e) {
+				this.shop_id = e.value[0];
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						this.shop_id = this.list.shop_id
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+
+		},
+
+		//上拉加载
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+			this.machineGetShopList();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/stockList.vue b/pages/mall/stockList.vue
new file mode 100644
index 0000000..1ce0a23
--- /dev/null
+++ b/pages/mall/stockList.vue
@@ -0,0 +1,1219 @@
+<template>
+	<view class="order full-height full-width">
+
+	
+		<view class="way-list" v-if="long && StcokList"  >
+			<view class="way-item" v-for="(item, index) in StcokList" :key="index" @click="showPullButton(item,index)">
+				<view class="way full-width">
+					<view style="font-size: 30upx; color: #333333;font-weight: bold;width: 100upx;text-align: center;">
+						{{item.channel_no}}
+					</view>
+					<image v-if="item.front_image" :src="item.front_image + '?x-oss-process=image/resize,lfit,w_100'"
+						mode="aspectFit" style="width:66upx; height:66upx; border-radius:10upx;"></image>
+					<view v-else style="width: 66upx;"></view>
+					<view style="width: calc(100% - 206upx); padding-left:20upx;">
+						<view style="font-size: 24upx; color: #B2B2B2;" v-if="item.name!=null && item.name!='' ">
+							{{item.name}}-{{item.title}}
+						</view>
+						<view style="display: flex; align-items: center;" v-if="item.name !=  null && item.name != ''">
+							<text style="font-size: 24upx; color: #B2B2B2;">仓库库存:{{item.total_stock}}</text>
+							<text
+								style="font-size: 24upx; color: #B2B2B2; padding-left: 10upx;">当前货道库存:{{item.stock}}</text>
+						</view>
+						<view style="font-size: 24upx; margin-top: 2upx;color: #B2B2B2;"
+							v-if="item.name == null || item.name == ''">货道暂未关联商品</view>
+					</view>
+					<view :class="item.isShowPullButtom ? 'lang-open' : 'lang-close'">
+						<label class="fa fa-angle-right align-right sub-color" style="font-size: 40upx;"></label>
+					</view>
+				</view>
+				<view :class="item.isShowPullButtom ? 'content-open' : 'content-close'">
+					<view :class="item.isShowPullButtom ? 'item-open' : 'item-close'">
+						<view class="eq_list_button" v-if="item.isShowPullButtom == true">
+							<view class="eq_list_button_ul">
+								<button v-if="item.name != null && item.name!=''" class="eq_list_button_li"
+									@click.stop="shelvesGood(item,index)"
+									:class="be_child == 1 ? 'bg-grey' : ''">下架</button>
+							</view>
+							<view class="eq_list_button_ul">
+								<button class="eq_list_button_li" @click.stop="toChangePop(item)"
+									:class="be_child == 1 ? 'bg-grey' : ''">{{item.name ? '切换':'添加'}}</button>
+							</view>
+							<view class="eq_list_button_ul">
+								<button v-if="item.name != null && item.name != ''" class="eq_list_button_li"
+									@click.stop="showshareclick(item,index)"
+									:class="be_child == 1 ? 'bg-grey' : ''">输入</button>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+		
+		<view v-if="(StcokList.length == 0) && !long ">
+			<view class="noData">
+				<image src="../../static/icon_guaqi.png" mode="aspectFill" class="noData_img"></image>
+				<view class="noData_title">
+					非常抱歉,您没有库存信息<br>
+				  </view>
+				<view class="noData_but" @click="tomain()">返回</view>
+			</view>
+		</view>
+		
+
+		<uni-popup ref="showshare" :type="type" @change="change">
+			<view class="uni-pop_show" style="width: 100%; margin: auto;">
+				<view style="width: 100%;background: #FFFFFF;border-bottom: 4upx solid #E9E7ED;margin-right: 80upx;">
+					<view class="weui-search-bar">
+						<view class="weui-search-bar_form">
+							<input type="text" class="weui-search-bar_input" placeholder="请输入商品名称"
+								@input='diseaseNameInput' />
+						</view>
+					</view>
+					<view style="width: 100%; height: 550upx; background: #F9F9F9; " v-if="GoodsItem != null ">
+						<scroll-view scroll-y
+							style="width:100%; height: 550upx; overflow: hidden; overflow-y: scroll; background: #FFFFFF;">
+							<view v-for="(item, index) in GoodsItem" :key="index" @click="selectGood(item)"
+								style="width: calc(100% - 60upx); margin: auto; height: 110upx; display: flex; align-items: center; border-top: 1upx solid #F6F6F6; background: #FFFFFF;">
+								<image :src="item.front_image + '?x-oss-process=image/resize,lfit,w_100'"
+									mode="aspectFit"
+									style="width:70upx; height: 70upx;line-height:70upx; margin: 0 10upx;"></image>
+								  <view style="width: calc(100% - 90upx);">
+									<view
+										style="font-size: 25upx;color: #B2B2B2;width: 100%;white-space: nowrap;text-overflow:ellipsis; overflow:hidden; word-break:break-all;">
+										{{item.name}}({{item.title}})
+									</view>
+									<view
+										style="font-size: 25upx;color: #B2B2B2;width: 100%;white-space: nowrap;text-overflow:ellipsis; overflow:hidden; word-break:break-all;">
+										商品库存 : {{item.stock}}
+									</view>
+								</view>
+							</view>
+							<view class="align-center"
+								style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+								v-if=" GoodsItem == null || ( GoodsItem != null && GoodsItem.length == 0) ">
+								<span class="iconfont icon-wushuju"
+									style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+								<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">
+									啊嘞,还是一片荒漠</view>
+							</view>
+						</scroll-view>
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+
+		<uni-popup ref="showshareinput" type="center" @change="change">
+			<view style="width:600upx; margin:auto; display: flex; flex-direction: column;">
+				<view
+					style="width:100%; height: 400upx; background: #FFFFFF; border-radius: 10upx; position: relative;">
+					<view style="width:100%; text-align: center; margin:30upx 0 0;">
+						<label>仓库库存({{showshareitem.total_stock}})个</label>
+					</view>
+					<view
+						style="display: flex; align-items: center; margin:50upx 20upx 0; height: 80upx; line-height: 80upx;">
+						<label style="padding-left:20upx;">当前货道库存:</label>
+						<input type="number" v-model="showshareitem.stock" style="width: 60%;font-size: 28upx; height: 90upx; line-height: 90upx;
+						background: #f9f9f9;
+						color:#5CE6B6; padding-left: 10upx; border-radius: 5upx;" min="0" :max="maxnumber" :maxlength="maxlength"
+							@click.stop="StockCountInput()" @input="inputVal(showshareitem, showshareindex)"></input>
+					</view>
+					<view style="width: calc(100% - 40upx); margin: auto; text-align: right;padding:10upx 20upx;">
+						<label style="font-size: 22upx; color: #B2B2B2;">最大只能输入{{maxnumber}}个</label>
+					</view>
+					<view style="width:100%; position: absolute; bottom: 0; 
+					display: flex; height: 100upx; align-items: center;border-radius:0 0 10upx 10upx;">
+						<view @click="cancel('share')"
+							style="width: 50%; background: #B2B2B2; text-align: center;height: 100upx; line-height: 100upx; color: #FFFFFF;">
+							取消</view>
+						<view @click.stop="changeChannel(showshareitem,showshareindex)"
+							style="width: 50%; background: #5CE6B6; text-align: center; height: 100upx; line-height: 100upx; color: #FFFFFF;">
+							确定</view>
+					</view>
+				</view>
+			 </view>
+		</uni-popup>
+
+		<!-- 打印选择类型 -->
+		<uni-popup ref="printingShowshare" :type="type" @change="change">
+			<view class="uni-share" style="width: 100%; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						选择打印类型
+					</view>
+					<scroll-view scroll-y style="margin: auto; height: 500upx; overflow: hidden; overflow-y: scroll;">
+						<view style="width: calc(100% - 40upx); margin:20upx auto; overflow: hidden;">
+							<view v-for="(item, index) in goodsItem" :key="index" @click="selectMonth(item)"
+								:class="attr == item.goods_name ? 'green':''"
+								style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item.goods_name == null ? '全部' : item.goods_name}}
+							</view>
+						</view>
+					</scroll-view>
+			 	</view>
+				<view style="height: 90rpx; line-height: 90rpx; font-size: 14px; text-align: center; color: #666; background: #FFFFFF; border-top: 1px solid #EEEEEE;"
+					@click="Printingcancel('share')">取消</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: true,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				goodsItem: [{
+						goods_name: '全部',
+						type: -12,
+					},
+					{
+						goods_name: '套餐内',
+						type: 0,
+					},
+					{
+						goods_name: '打印卡',
+						type: 1,
+					},
+				],
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				currentTab: {
+					code: 0,
+					name: '机器'
+				},
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				//加载全部交易类型数据
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: [], //货道数据
+			};
+		},
+
+		methods: {
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//预览显示图片
+			showPreviewImage(e, id) {
+				if (e == null || e == "") {
+					uni.showToast({
+						title: '暂时没有定制二维码',
+						icon: 'none'
+					});
+					return
+				}
+				var current = e + "?x-oss-process=image/watermark,text_" + this.getStrToBase64(id) +
+					",g_nw,size_50,shadow_50,x_550,y_850,color_4bf25a"; //这里获取到的是一张本地的图片
+				wx.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+
+			//获取剩余量次数相差
+			getPrintSurplusCount(count) {
+				try {
+					if (count >= 200) { //白色
+						return 1;
+					} else if (count < 200 && count >= 50) { //橙色
+						return 2;
+					} else if (count < 50) { //红色
+						return 3;
+					}
+				} catch (e) {
+					return 0;
+				}
+				return 0;
+			},
+
+			//获取相差天数 
+			getDaysDifference(time) {
+				try {
+					let day = new Date(time.replace(/-/g, "/")).getTime() - new Date().getTime(); //日期转时间戳
+					let dayCount = Math.floor(day / 86400000); //时间戳获取天数
+					return dayCount;
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+			//格式化时间
+			dateFormat(time) {
+				try {
+					var dt = new Date(time.replace(/-/g, '/'));
+					var y = dt.getFullYear();
+					var m = dt.getMonth() + 1;
+					var d = dt.getDate();
+					return y + '年' + m + '月' + d + '日';
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				return time;
+			},
+
+			//代理商名字
+			partnername(partner_id, partner) {
+				var partner_name = '尚未铺设';
+				if (partner) {
+					partner.forEach(item => {
+						if (item.id == partner_id) {
+							partner_name = item.name
+						}
+					});
+				}
+				return partner_name
+			},
+
+			tomain() {
+				uni.navigateBack();
+			},
+
+			printingShowPicker(mode) {
+				this.$refs.printingMpvuePicker.show();
+			},
+
+			//日期确定
+			onConfirmPrinting(e) {
+				this.queryPage.year = null
+				this.queryPage.month = null
+				this.queryPage.date = null
+				if (e.value.length == 1) {
+					this.queryPage.year = e.value[0]
+				} else if (e.value.length == 2) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + e.value[1] //补齐
+					}
+					this.queryPage.month = e.value[0] + '-' + myMonth
+				} else if (e.value.length == 3) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth //补齐
+					}
+					let mydate = e.value[2]
+					if (mydate < 10) {
+						mydate = '0' + e.value[2] //补齐
+					}
+					this.queryPage.date = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				// 数据加载状态处理 false
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.LoupanList = []
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//打开类型
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['printingShowshare'].open()
+				})
+				this.getGoodsAttrList()
+			},
+
+			Printingcancel(type) {
+				this.$refs['printingShowshare'].close()
+			},
+
+			selectMonth(item) {
+				if (item.type == -12) {
+					this.attr = "全部打印类型";
+					this.queryPage.is_excess = null;
+				} else {
+					this.attr = item.goods_name ? item.goods_name : null
+					this.queryPage.is_excess = item.type
+				}
+				this.$refs['printingShowshare'].close();
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+			//更换弹框
+			showshareclick(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let itema = JSON.stringify(item)
+				let itemb = JSON.parse(itema);
+				this.showshareitem = itemb;
+				this.showshareindex = index;
+				this.$nextTick(() => {
+					this.$refs['showshareinput'].open()
+				})
+			},
+
+			change(e) {
+
+			},
+
+			//库存数量输入
+			StockCountInput(e) {
+				this.isOnclickItem = true;
+				var that = this;
+				setTimeout(function() {
+					that.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是2秒
+			},
+
+			inputVal(item, index) {
+				if (this.list.used_applets == '3') {
+					this.maxnumber = 12
+					this.maxlength = 2
+				}
+				if (this.list.used_applets == '4') {
+					this.maxnumber = 7
+					this.maxlength = 1
+				}
+				let StcokListsnumber = item.total_stock
+				if (item.stock > this.maxnumber) {
+					uni.showToast({
+						title: '最大只能输入' + this.maxnumber + '个',
+						icon: 'none',
+					});
+					item.stock = StcokListsnumber > this.maxnumber ? this.maxnumber : StcokListsnumber;
+					return false;
+				}
+			},
+
+			//获取输入框字符串
+			diseaseNameInput(e) {
+				this.loadStockGoodsList(e.detail.value)
+			},
+
+			//pop选中商品
+			selectGood(item) {
+				this.$refs["showshare"].close();
+				var that = this;
+				let index;
+				if (this.selectItem != null) {
+					that.StcokList.forEach((items, indexNumber) => {
+						if (items.id == this.selectItem.id) {
+							index = indexNumber;
+						}
+					});
+				}
+				uni.showModal({
+					title: '确认',
+					content: '是否关联当前商品?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							if (that.list.used_applets == '3') {
+								that.StcokList[index].stock = item.stock > 12 ? 12 : item.stock;
+							}
+							if (that.list.used_applets == '4') {
+								that.StcokList[index].stock = item.stock > 7 ? 7 : item.stock;
+							}
+							that.StcokList[index].title = item.title; //name
+							that.StcokList[index].name = item.name;
+							that.StcokList[index].front_image = item.front_image;
+							that.StcokList[index].goods_id = item.goods_id;
+							that.StcokList[index].dict_id = item.dict_id;
+							that.StcokList[index].total_stock = item.stock;
+							that.StcokList[index].isShowPullButtom = false;
+							that.confirmChangeChannel(that.StcokList[index])
+						} else if (res.cancel) {
+							//console.log('用户点击取消')
+						}
+					}
+				});
+			},
+
+			//确认更换货道
+			confirmChangeChannel(item) {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/saveStock',
+					id: item.id,
+					machine_id: this.queryPage.machine_id,
+					goods_id: item.goods_id,
+					goods_size: item.goods_size,
+					stock: item.stock,
+					dict_id: item.dict_id
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: "更换成功",
+						icon: 'none'
+					});
+				}).catch(err => {
+					uni.hideLoading();
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					this.StcokList = []
+					this.queryPage.page = 1;
+					this.queryPage.total = 0;
+					this.loadStockList(Enums.DATA_DIRECTION.UP);
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//下架功能
+			shelvesGood(item, index) {
+				if (this.$base.Userres.be_child == 1) return;
+				var _this = this
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品下架吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							if (item.goods_id == 0) {
+								uni.showToast({
+									title: "还没绑定商品不能下架",
+									icon: 'none'
+								});
+								_this.StcokList[index].isShowPullButtom = false;
+								_this.SortNumber++;
+								_this.StcokList[index].SortNumber = _this.SortNumber;
+								this.setData({
+									StcokList: _this.StcokList
+								})
+							} else {
+								uni.showLoading({
+									title: '正在加载中...'
+								})
+								logoservice.MachineSavePartnerStock({
+									m: 'Machine/saveStock',
+									id: item.id,
+									machine_id: _this.queryPage.machine_id,
+									goods_id: item.goods_id,
+									goods_size: item.goods_size,
+									stock: item.stock,
+									dict_id: item.dict_id,
+									type: "off",
+								}).then(result => {
+									uni.hideLoading();
+									uni.showToast({
+										title: "下架成功",
+										icon: 'none'
+									});
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+								}).catch(err => {
+									_this.dataLoadState.pullDownRefresh = false;
+									_this.dataLoadState.reachBottom = false;
+									_this.StcokList = []
+									_this.queryPage.page = 1;
+									_this.queryPage.total = 0;
+									_this.loadStockList(Enums.DATA_DIRECTION.UP);
+									uni.hideLoading();
+									uni.showToast({
+										title: err.msg,
+										icon: 'none'
+									});
+								})
+							}
+						} else if (res.cancel) {
+							//console.log('用户点击取消')
+						}
+					}
+				});
+			},
+
+			//更换弹框
+			toChangePop(item) {
+				if (this.$base.Userres.be_child == 1) return;
+				this.selectItem = item;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+					this.loadStockGoodsList("");
+				})
+			},
+
+			//显示下面选择按钮 
+			showPullButton(item, index) {
+				if (this.isOnclickItem == false) {
+					//console.log("显示下面选择按钮")
+					var that = this;
+					if (item.isShowPullButtom) {
+						that.StcokList[index].isShowPullButtom = false;
+					} else {
+						that.StcokList[index].isShowPullButtom = true;
+					}
+					this.SortNumber++;
+					that.StcokList[index].SortNumber = this.SortNumber;
+					this.setData({
+						StcokList: that.StcokList
+					})
+				}
+			},
+
+			//修改货道
+			changeChannel(item, index) {
+				this.$refs["showshareinput"].close();
+				this.$refs["showshare"].close();
+				var _this = this
+				_this.isOnclickItem = true;
+				setTimeout(function() {
+					_this.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是1秒
+				let jsonLists = JSON.parse(_this.StcokLists);
+				uni.showModal({
+					title: '确认',
+					content: '确认当前商品货道调整吗?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							uni.showLoading({
+								title: '正在加载中...'
+							})
+							logoservice.MachineSavePartnerStock({
+								m: 'Machine/saveStock',
+								id: item.id,
+								machine_id: _this.queryPage.machine_id,
+								goods_id: item.goods_id,
+								goods_size: item.goods_size,
+								stock: item.stock,
+								dict_id: item.dict_id
+							}).then(result => {
+								uni.hideLoading();
+								uni.showToast({
+									title: "修改成功",
+									icon: 'none'
+								});
+								_this.StcokList[index].stock = item.stock;
+							}).catch(err => {
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+							//console.log('用户点击取消')
+						}
+					}
+				});
+			},
+
+			//获取底部弹框数据
+			loadStockGoodsList(goods_name) {
+				logoservice.MachineStockGoodsList({
+					m: 'Machine/getStockGoodsList',
+					machine_id: this.queryPage.machine_id,
+					goods_name: goods_name,
+				}).then(result => {
+					this.GoodsItem = result;
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			previewImageOne(item) {
+				var current = e; //这里获取到的是一张本地的图片
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+			reprint(e, index) {
+	
+			},
+
+			datatimeLimited(time) {
+				return new Date(time.replace(/-/g, "/"))._format('HH:mm:ss');
+			},
+
+			category(id) {
+				var dataname = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == id) {
+							dataname = item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+
+			categoryaddress(address) {
+				var dataaddress = '';
+				if (this.shopList) {
+					this.shopList.forEach(item => {
+						if (item.id == address) {
+							dataaddress = item.address.replace('<br/>', '');
+						}
+					});
+				}
+				return dataaddress
+			},
+
+			onChange(e) {},
+
+			onCancel(e) {},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			//设备库存信息 加载数据
+			loadStockList(direction) {
+				
+				setTimeout (()=>{
+								uni.showLoading({
+									title: '正在加载中...' ,
+							});
+				},200)
+			  
+				
+				/* uni.showLoading({
+					title: '正在加载中...'
+				}) */
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.MachineGetStock({
+					m: 'Machine/getStock',
+					machine_id: this.queryPage.machine_id,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null
+				}).then(resultGetStock => {
+					this.long = true;
+					let stockList = resultGetStock
+					//下拉更新时,查询结果集
+					//触底更新时,当前列表+查询结果集
+					let newList = this.StcokList.concat(stockList)
+					this.StcokList = newList;
+
+					this.StcokLists = JSON.stringify(newList)
+					
+					// 分页对象处理
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					// uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadStockList(Enums.DATA_DIRECTION.DOWN)
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.total = 0;
+			this.StcokList = []
+			this.loadStockList(Enums.DATA_DIRECTION.UP);
+			uni.stopPullDownRefresh();
+		},
+
+		//上拉加载
+		onReachBottom() {
+			if (this.LoupanList.length < 6) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.loadStockList(Enums.DATA_DIRECTION.DOWN)
+		},
+
+		onLoad(options) {
+			this.printingPickerValueArray = ['month'];
+			this.queryPage.machine_id = options.id
+			wx.setNavigationBarTitle({
+				title: this.queryPage.machine_id
+			})
+			this.loadStockList();
+			this.listdetail();
+		},
+
+		onShow() {
+			this.be_child = this.$base.Userres.be_child //子代理
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	.eq-detail-score {
+		padding: 50upx 0;
+		width: 100%;
+		height: 230upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/* 无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		// color: #FFFFFF;
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+		// color: #999999;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	// 2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/* 输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/* 底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.order {
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 99rpx;
+				height: 0rpx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+				/*#43CF7C */
+				/* #3321D9 */
+			}
+		}
+
+		.way-list {
+			min-height: 350upx;
+
+			padding: 20upx 10upx 10upx;
+			border-radius: 10upx;
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		/*width: calc(100% -40upx); */
+
+		.content {
+			padding-top: 100upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				margin-right: 20upx;
+				//width: calc(100% - 60upx);
+				border-radius: 10upx;
+
+				.item {
+					min-height: 45upx;
+					display: flex;
+					margin-left: 20upx;
+					align-items: center;
+					font-size: 28upx;
+
+					.text {
+						width: 250upx;
+						/* padding-left: 25upx; */
+						color: #353535;
+					}
+
+					.value {
+						width: calc(100% - 280upx);
+						display: flex;
+
+						.prick {
+							width: calc(100% - 40upx);
+						}
+
+						.fa-angle-right {
+							width: 40upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>
diff --git a/pages/mall/support_language.vue b/pages/mall/support_language.vue
new file mode 100644
index 0000000..d8a9d75
--- /dev/null
+++ b/pages/mall/support_language.vue
@@ -0,0 +1,551 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%;">
+
+				<view class="order-list">
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list-text">启用对应功能,可对设备开启相应功能,以便更好体验设备</view>
+
+					<view class="item-new-list">
+
+						<view v-for="(item, index) in language_list" :key="index">
+							<view class="item full-width">
+								<label class="text content-color">{{item.title}}</label>
+								<switch :checked="item.flag == 1 ? true :false" @change="onSwitchChange($event,item)"
+									class="item-new-list-switch" />
+							</view>
+						</view>
+
+					</view>
+
+					<view class="item-new-list-text">仅对H5版本生效,开启对应的语言,设备定制端将支持当前语言</view>
+
+				</view>
+
+			</view>
+		</view>
+
+	</view>
+
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				queryPage: {},
+				param: null,
+				language_list: [] //语言列表
+			};
+		},
+
+		methods: {
+
+			//开关修改
+			onSwitchChange(e, item) {
+				console.log(e)
+				if (e.detail.value == true) {
+					item.flag = 1;
+					//this.getSwitchCheck(type, true)
+					uni.showLoading({
+						title: '开启中...'
+					})
+				} else {
+					item.flag = 0;
+					//this.getSwitchCheck(type, false)
+					uni.showLoading({
+						title: '关闭中...'
+					})
+				}
+				logoservice.Machinestatus({
+					m: 'Machine/LanguageSupportSave',
+					machine_id: this.queryPage.machine_id,
+					machine_language_id: item.id,
+				}).then(result => {
+					uni.hideLoading();
+					if (e.detail.value == true) {
+						uni.showToast({
+							title: '开启成功'
+						})
+					} else {
+						uni.showToast({
+							title: '关闭成功'
+						})
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+					if (e.detail.value == true) {
+						item.flag = 0;
+					} else {
+						item.flag = 1;
+					}
+				})
+			},
+		},
+
+		onPullDownRefresh() {
+
+		},
+
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			this.queryPage.machine_id = options.machineid;
+			this.param = JSON.parse(options.param);
+			this.language_list = this.param.language_list
+			console.log(this.language_list)
+		},
+
+		onShow() {
+
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 320upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/test-colour.vue b/pages/mall/test-colour.vue
new file mode 100644
index 0000000..a51edcd
--- /dev/null
+++ b/pages/mall/test-colour.vue
@@ -0,0 +1,870 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%; background: #fff;">
+				<!-- 机器 -->
+				<view class="order-list" v-if="list">
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">设备编号</label>
+							<label class="value content-color">
+								<text style="text-align: right;" class="full-width">{{queryPage.machine_id}}</text>
+							</label>
+						</view>
+					</view>
+
+					<view class="item-new-list">
+						<view class="item full-width">
+							<label class="text content-color">状态</label>
+							<label class="value content-color" v-if="list.flag.value == 'Y'">
+								<text v-if="list.status.value == 0" style="text-align:right; color: #808080;"
+									class="full-width">离线</text>
+								<text v-if="list.status.value == 1 || list.status.value == 2 "
+									style="text-align:right; color: #5CE6B5;" class="full-width">在线</text>
+								<text v-if="list.status.value == 3 || list.status.value == 4 || list.status.value == 5 "
+									style="text-align:right; color: #D43030;" class="full-width">故障</text>
+							</label>
+							<label class="value content-color" v-if="list.flag.value == 'N'">
+								<text  style="text-align:right; color: #FF8D1A;"
+									class="full-width">锁定</text>
+							</label>
+						</view>
+					</view>
+
+
+					<view style="margin-top: 30upx;
+					border-radius: 20upx;
+					width: calc(100% - 60upx);			
+					background: #fff;
+					margin: 0upx 30upx 10upx 30upx;
+					border-radius: 20upx;
+					box-shadow: 0 0 10upx 10upx #F5F5F5;
+					height: 400upx;">
+						<img src="https://img.colorpark.cn/back/169811961265373fbc80762.png"
+							style="height: 400upx;margin: auto; display: block;" mode="aspectFit">
+					</view>
+
+				</view>
+			</view>
+
+
+			<view class="item-new-list-text" style="margin-top: 30upx;">打印色块是检测喷头颜色是否正常的必要操作。机器必须通电,且有正常连接网络,才能完成远程打印设备操作。</view>
+
+		<!-- 	<view class="save_bt" @click="testColourBt()">打印色块</view> -->
+			
+			<view class="save_bt" @click="testColourBt()"  v-if="list"
+			 :style="{background: list.status.value == 0 ? '#999' : '#191931' }" >打印色块</view>
+			
+
+			<uni-popup ref="cleanCountDown" type="bottom" :maskClick="false">
+				<view style="width: 100%; height: 600upx; margin: auto;">
+					<view style="background: #F9F9F9;width: 100%; height: 100%; border-radius: 20upx  20upx  0upx 0upx;
+					align-items: center;
+					display: flex;
+					flex-direction: column;">
+						<view
+							style="margin-top:220upx;  color: rgba(67, 207, 124, 1);  font-size: 60upx;  font-weight: 800 ">
+							{{countDownTimeCount}}
+						</view>
+						<view style="margin-top: 80upx; font-size: 26upx; color: #999; ">请稍后 </view>
+						<view style="margin-top: 20upx; font-size: 26upx; color: #999; "> 正在色块正在测试中,预计需要两分钟</view>
+					</view>
+				</view>
+			</uni-popup>
+
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import mpvuePickernew from '../../components/mpvue-picker/mpvuePickernew.vue';
+	import logoservice from '@/service/logoservice.js';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+			mpvuePickernew
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true, //是否单机版 或者 配送版
+				isShowPullButtom: false, //false不显示true显示
+				isOnclickItem: false, //是否点击item
+				numberlist: [],
+				LoupanList: [],
+				SortNumber: 1,
+				StcokList: [], //设备库存列表
+				StcokLists: [],
+				list: null,
+				getStockerCount: "", //设置输入个数
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				//商品库存
+				showshareitem: null,
+				showshareindex: null,
+				//打印年月日
+				printingPickerValueArray: [],
+				printingpickerValueDefault: [0],
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				GoodsItem: null, //货道数据
+				stockData: null, //库存数据
+				stockDataList: null, //库存列表数据
+				inkStatusC: false,
+				inkStatusM: false,
+				inkStatusY: false,
+				inkStatusK: false,
+				inkStatusW: false,
+				inkStatusHas: false,
+				isShowPop: false,
+				timer: null, //定时器
+				intCountTimer: 0,
+				clear_time: "", //上次清洗时间
+				isClickClean: false, //是否点击
+				oldMousePos: {},
+				oldNodePos: {},
+				autoCleanLeft: -40, //左位置
+				autoCleanTop: -40, //下位置
+				isTouchStart: false,
+				show_clean: 0, //为1时就显示清洗喷头的入口,为0时就不显示
+				countDownTimeCount: 1, //倒计时
+				countDownTime: null, //倒计时
+				isAutoStartClean: false, //是否自动清洗开始
+				shop_id: null,
+				isClickClean: false,
+			};
+		},
+
+		methods: {
+
+			//测试色块
+			testColourBt() {
+				if(this.list.status.value == 0){
+					uni.showToast({
+						title: "打印机离线",
+						duration: 1000,
+						 icon: 'error' 
+					})
+					return;
+				}
+				if (this.isClickClean) {
+					return;
+				}
+				this.isClickClean = true;
+				uni.showLoading({
+					title: '色块测试中...',
+				})
+				this.intCountTimer = 0;
+				this.countDownTimeCount = 1;
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/printTestImage',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					this.autoClick()
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						duration: 1000,
+						icon: "none",
+					})
+				})
+			},
+
+			autoClick() {
+				this.$refs['cleanCountDown'].open();
+				let that = this;
+				this.countDownTime = setInterval(function() {
+					that.countDownTimeCount++;
+					if (that.countDownTimeCount >= 100) {
+						uni.hideLoading();
+						clearInterval(that.countDownTime);
+						that.countDownTime = null;
+						that.isClickClean = false
+						that.countDownTimeCount = 0;
+						that.$refs['cleanCountDown'].close()
+						uni.showToast({
+							title: "色块测试完成",
+							duration: 1000,
+							icon: "none",
+						})
+						
+					}
+				}, 1000);
+			},
+
+			//获取状态值
+			getCleanStatus() {
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/getClearHeadStatus',
+					machine_id: this.queryPage.machine_id,
+				}).then(result => {
+					if (this.countDownTimeCount >= 60) {
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+					let clear_status = result.clear_status.value;
+					if (clear_status == 0) {
+						this.cleanTimeData();
+						uni.showToast({
+							title: "清洗成功",
+							duration: 2000
+						})
+					}
+				}).catch(err => {
+
+				})
+			},
+
+
+			//清除计时器数据
+			cleanTimeData() {
+				this.isAutoStartClean = false;
+				clearInterval(this.timer);
+				this.timer = null;
+				clearInterval(this.countDownTime);
+				this.countDownTime = null;
+				this.intCountTimer = 0;
+				this.isClickClean = false;
+				uni.hideLoading();
+				this.$refs['cleanCountDown'].close();
+				this.countDownTimeCount = 1;
+			},
+
+			
+
+			//调转收益列表
+			toLiquidationList() {
+				uni.navigateTo({
+					url: '../mine/Liquidation?machineid=' + this.queryPage.machine_id,
+				});
+			},
+
+			//字符串转base64
+			getStrToBase64(str) {
+				return Base64.encode(str);
+			},
+
+			//取消
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+
+		
+		
+		
+	
+
+			//确定
+			onConfirm(e) {
+				this.shop_id = e.value[0];
+			},
+
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?machineid=' + this.list.id,
+				});
+			},
+
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?machineid=' + this.list.id,
+				});
+			},
+
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+						this.shop_id = this.list.shop_id
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+
+			//获取店铺数据
+			machineGetShopList() {
+				logoservice.MachineGetShop(this.shopQueryPage).then(result => {
+					if (result != null && result != undefined) {
+						this.shopList = result;
+					}
+				}).catch(err => {
+
+				});
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			//goodsItem加载全部交易类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Machine/printRecord',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			},
+		},
+
+		//下拉加载
+		onPullDownRefresh() {
+
+		},
+
+		//上拉加载
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.listdetail();
+		},
+
+		onShow() {
+			this.machineGetShopList();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.item-new-list-switch {
+		float: right;
+		zoom: 0.6;
+		position: absolute;
+		right: 80upx
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mall/update_name.vue b/pages/mall/update_name.vue
new file mode 100644
index 0000000..965c17e
--- /dev/null
+++ b/pages/mall/update_name.vue
@@ -0,0 +1,600 @@
+<template>
+	<view class="order full-height full-width">
+
+		<view class="uni-tab-bar full-width">
+
+			<view scroll-y @scrolltolower="loadMore()" class="full-width content"
+				style="margin-bottom: 20upx; overflow: auto; width: 100%;height: 100%;">
+
+				<view class="order-list">
+
+					<view class="item-new-list">
+						<view class="item full-width" style="height: 60upx;">
+							<label class="text content-color">名称</label>
+							<label class="value content-color">
+								<view style="width: 260upx; height: 50upx; background: transparent; 
+									border: 1upx solid #999;
+									border-radius: 6upx; position: absolute; right: 50upx; margin-top: -25upx;">
+									<input style="color: #000; margin-left: 20upx;" :value="code" maxlength="25"
+										@input="descInput($event)" />
+								</view>
+							</label>
+						</view>
+					</view>
+
+				</view>
+			</view>
+
+			<view class="save_bt" @click="saveMachineCode()">确认</view>
+
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	let Base64 = require('js-base64').Base64;
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				isSinglePlatep: true,
+				isShowPullButtom: false,
+				isOnclickItem: false,
+				list: null,
+				selectItem: null,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null,
+					month: null,
+					year: null,
+					is_excess: null,
+				},
+				shopQueryPage: {
+					m: 'Machine/getShop',
+				},
+				attr: null,
+				maxnumber: 12,
+				maxlength: 2,
+				be_child: 0, //子代理
+				Userres_partner_id: null, //总代理
+				is_inner: null, //恢复订单打印
+				print_type: 0, //默认0标准版 1无限版
+				shopList: null, //店铺列表数据
+				isShowPop: false,
+				code: null,
+			};
+		},
+
+		methods: {
+
+			//保存设备名称
+			saveMachineCode() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/saveMachineName',
+					machine_id: this.queryPage.machine_id,
+					code: this.code
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({
+						title: "修改成功",
+						icon: 'none'
+					});
+					uni.navigateBack();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+			//输入框监听
+			descInput(e) {
+				this.code = e.target.value;
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			//设备列表详情
+			listdetail() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.queryPage.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.list = result[0]
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+		},
+
+		onPullDownRefresh() {
+
+		},
+
+		onReachBottom() {
+
+		},
+
+		onLoad(options) {
+			let that = this;
+			this.queryPage.machine_id = options.machineid
+			this.code = options.code
+		},
+
+		onShow() {
+
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #fff;
+	}
+
+	.eq-detail-score {
+		padding: 40upx 0;
+		width: 100%;
+		height: 210upx;
+		margin: 0upx auto;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+
+	/*无数据 */
+	.noData {
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		transform: translate(-50%, -50%);
+	}
+
+	.noData_img {
+		width: 260upx;
+		height: 260upx;
+		display: block;
+		margin: 0upx auto 102upx;
+	}
+
+	.noData_title {
+		text-align: center;
+		font-size: 36upx;
+	}
+
+	.noData_text {
+		margin-top: 35upx;
+		font-size: 30upx;
+		font-weight: 400;
+	}
+
+	.noData_but {
+		width: 230upx;
+		height: 70upx;
+		line-height: 70upx;
+		text-align: center;
+		color: #F56364;
+		margin: 140upx auto 0;
+		border: 1upx solid #F56364;
+		border-radius: 35upx;
+	}
+
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	.lang-open {
+		transform: rotate(90deg);
+		transition: transform 0.5s;
+	}
+
+	.lang-close {
+		transform: rotateY(0deg);
+		transition: transform 0.5s;
+	}
+
+	//2020-11-17
+	.content-open {
+		height: 90upx;
+		overflow: hidden;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.content-close {
+		height: 0;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-open {
+		height: 40upx;
+		transition: all 0.4s cubic-bezier(0.25, 1.0, 0.25, 1.0);
+	}
+
+	.item-close {
+		opacity: 0;
+		height: 0;
+	}
+
+	/*输入框弹框显示 */
+	.weui-search-bar {
+		position: relative;
+		padding: 8upx 10upx;
+		display: flex;
+		height: 135upx;
+		background: #FFFFFF;
+		align-items: center;
+	}
+
+	.weui-search-bar_form {
+		width: 100%;
+		border-radius: 50upx;
+		background: #F6F6F6;
+	}
+
+	.weui-search-bar_input {
+		height: 80upx;
+		line-height: 80upx;
+		font-size: 25upx;
+		padding-left: 24upx;
+	}
+
+	/*底部弹框显示 */
+	.uni-pop_show {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-calendar-item--isDay-text.data-v-09f1e40c {
+		color: #5CE6B5 !important; //5CE6B5
+	}
+
+	.uni-calendar-item--isDay.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-calendar-item--checked.data-v-09f1e40c {
+		background: #5CE6B5 !important;
+		color: #fff !important;
+	}
+
+	.uni-numbox__value {
+		width: 120upx !important;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #F5F5F5;
+	}
+
+	.eq_list_button {
+		display: flex;
+		flex-direction: row;
+		line-height: 60upx;
+		padding-bottom: 20upx;
+	}
+
+	.eq_list_button_ul {
+		flex: 1;
+	}
+
+	.eq_list_button_li {
+		margin: auto;
+		font-size: 24upx;
+		color: #FFFFFF;
+		width: 150upx;
+		font-weight: bold;
+		text-align: center;
+		line-height: 60upx;
+		height: 60upx;
+		background-color: #5CE6B6;
+	}
+
+	.uni-swiper-tab {
+		border-bottom: 1upx solid #F5F5F5;
+	}
+
+	.clean-bt {
+		border-radius: 50%;
+		width: 200upx;
+		height: 200upx;
+		bottom: 160upx;
+		right: 20upx;
+		position: fixed;
+		font-size: 27upx;
+		text-align: center;
+		line-height: 130upx;
+		z-index: 99991;
+		justify-content: center;
+		align-items: center;
+	}
+
+	.order {
+		width: 100%;
+		height: 100%;
+		background-color: #fff;
+
+		.uni-tab-bar {
+			height: auto !important;
+
+			.uni-swiper-tab {
+				position: fixed;
+				top: var(--window-top);
+				z-index: 999;
+				width: 100%;
+				line-height: 85upx;
+				height: 85upx;
+
+				.swiper-tab-list {
+					width: calc(100% / 3);
+					font-size: 30upx;
+				}
+			}
+
+			.active {
+				color: #43CF7C;
+			}
+		}
+
+		.way-list {
+			margin: 0 20upx;
+			padding-top: 20upx;
+			border-radius: 10upx;
+
+			.topBox {
+				width: calc(100% - 60upx);
+				margin-left: 30upx;
+				margin-top: 15upx;
+				justify-content: center;
+			}
+
+			.topLittleBOX-1 {
+				font-size: 26upx;
+				width: 120upx;
+				color: #333;
+				overflow: text-align;
+			}
+
+			.topLittleBOX-2 {
+				padding-left: 20upx;
+				padding-top: auto;
+				padding-bottom: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+				position: relative;
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #43CF7C;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.rowText {
+				margin-left: 10upx;
+				font-size: 26upx;
+				color: #333;
+				float: right;
+			}
+
+			.way-item {
+				background: #FFFFFF;
+				border-radius: 10upx;
+				margin-bottom: 20upx;
+			}
+
+			.way {
+				height: 120upx;
+				min-height: 90upx;
+				display: flex;
+				align-items: center;
+				font-size: 28upx;
+
+				.text {
+					width: 250upx;
+					padding-left: 20upx;
+					color: #fff;
+				}
+
+				.value {
+					width: calc(100% - 280upx);
+					display: flex;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.content {
+			padding-top: 10upx;
+
+			.order-list {
+				min-height: 350upx;
+				width: 100%;
+				border-radius: 10upx;
+
+				.item {
+					min-height: 70upx;
+					display: flex;
+					align-items: center;
+					font-size: 26upx;
+					border-bottom: 1upx solid #F5F5F5;
+
+					.text {
+						width: 250upx;
+						color: #000;
+						font-size: 29upx;
+					}
+
+					.value {
+						width: calc(100% - 120upx);
+						display: flex;
+						color: #888;
+						margin-top: 15upx;
+						margin-bottom: 15upx;
+
+
+						.prick {
+							width: calc(100% - 35upx);
+						}
+
+						.fa-angle-right {
+							width: 30upx;
+							font-size: 50upx;
+						}
+					}
+				}
+			}
+		}
+	}
+
+	.print-score {
+		width: 100%;
+		height: 280upx;
+		background: #43CF7C;
+		border-radius: 20upx;
+		display: flex;
+		align-items: center;
+		font-size: 26upx;
+		color: #fff;
+
+		.print {
+			width: 100%;
+
+			.text {
+				line-height: 50upx;
+				color: #fff;
+			}
+		}
+	}
+
+	.list-clean {
+		height: 80upx;
+		background: #FFFFFF;
+		padding-left: 20upx;
+		padding-right: 23upx;
+		margin-top: 10upx;
+		border-radius: 15upx;
+		margin-left: 20upx;
+		margin-right: 15upx;
+		padding-top: 18upx;
+	}
+
+	.item-new-list {
+		padding-top: 0upx;
+		padding-left: 30upx;
+		padding-right: 25upx;
+		background: #fff;
+		margin: 0upx 30upx 25upx 30upx;
+		border-radius: 20upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		color: #000;
+	}
+
+	.item-new-list-text {
+		margin: -10upx 45upx 30upx 45upx;
+		color: #999;
+		font-size: 25upx;
+		width: calc(100% - 90upx);
+	}
+
+	.content-color {
+		color: #fff;
+	}
+
+	.save_bt {
+		height: 100upx;
+		width: calc(100% - 60upx);
+		margin-left: 30upx;
+		background: #191931;
+		text-align: center;
+		line-height: 100upx;
+		color: #fff;
+		margin-top: 100upx;
+		border-radius: 20upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mine/Liquidation-details.vue b/pages/mine/Liquidation-details.vue
new file mode 100644
index 0000000..01d2d68
--- /dev/null
+++ b/pages/mine/Liquidation-details.vue
@@ -0,0 +1,251 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<view class="full-width" v-if="long">
+				<view style="text-align: center; font-weight: bold; padding: 100upx 0;">
+					<view style="font-size:80upx;font-weight:bold;">{{LoupanList.settle_amount || ''}}</view>
+					<view v-if="LoupanList.direction.value == 'income'" style="font-size:26upx;font-weight:400;color:#5CE6B6;">收入(¥)</view>
+					<view v-if="LoupanList.direction.value == 'expense'" style="font-size:26upx;font-weight:400;color:#F67273;">退款(¥)</view>
+					<view v-if="LoupanList.direction.value == 'withdrawal'" style="font-size:26upx;font-weight:400;color:#F67273;">提现(¥)</view>
+				</view>
+				<view style="display: flex; justify-content: center;">
+					<view style="width: 100upx;">
+						<view style="width: 100upx;">
+							<view style="width:32upx; height:32upx; margin: auto; background:#5CE6B5; border-radius:50%;"></view>
+						</view>
+						<view style="width:1px; height:80upx; margin: auto; background:#5CE6B5;"></view>
+						<view v-if="LoupanList.status.value == 0">
+							<view style="width:32upx; height:32upx; margin: auto; background:#B2B2B2; border-radius:50%;"></view>
+							<view style="width:1px; height:80upx; margin: auto; background:#B2B2B2;"></view>
+						</view>
+						<view v-if="LoupanList.status.value == 1 || LoupanList.status.value == 2">
+							<view style="width:32upx; height:32upx; margin: auto; background:#5CE6B5; border-radius:50%;"></view>
+							<view style="width:1px; height:80upx; margin: auto; background:#5CE6B5;"></view>
+						</view>
+						<view v-if="LoupanList.status.value != 2" style="width:32upx; height:32upx; margin: auto; background:#B2B2B2; border-radius:50%;"></view>
+						<view v-if="LoupanList.status.value == 2" style="width:32upx; height:32upx; margin: auto;">
+							<span class="iconfont icon-duihao2" style="color: #5CE6B5; font-size: 32upx;"></span>
+						</view>
+					</view>
+					<view>
+						<view>
+							<span>待清算</span>
+							<span style="color: #B2B2B2; padding-left: 20upx;">{{LoupanList.create_time || ''}}</span>
+						</view>
+						<view style="margin-top: 70upx;">
+							<span v-if="LoupanList.status.value == 0" style="color: #B2B2B2;">待结算</span>
+							<span v-if="LoupanList.status.value == 1 || LoupanList.status.value == 2" >待结算</span>
+							<span v-if="LoupanList.status.value == 1 || LoupanList.status.value == 2" style="color: #B2B2B2; padding-left: 20upx;">
+								{{datatime(LoupanList.billing_time) || ''}}
+							</span>
+						</view>
+						<view style="margin-top: 70upx;">
+							<span v-if="LoupanList.status.value != 2" style="color: #B2B2B2;">已结算</span>
+							<span v-if="LoupanList.status.value == 2" style="color: #5CE6B5;">已结算</span>
+							<span v-if="LoupanList.status.value == 2" style="color: #B2B2B2; padding-left: 20upx;">{{datatime(LoupanList.finish_time) || ''}}</span>
+						</view>
+					</view>
+				</view>
+				<view style="display: flex; justify-content: center;">
+					<view class="eq_list">
+						<view class="full-width eq_list_ul" style="margin-top: 30upx;">
+							<text class="eq_list_ul_left">订单编号:</text>
+							<text class="eq_list_ul_right">{{LoupanList.order_id || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">设备编号:</text>
+							<text class="eq_list_ul_right">{{LoupanList.machine_id || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">产品属性:</text>
+							<text class="eq_list_ul_right">{{LoupanList.goods_attr || ''}}</text>
+						</view>
+					<!-- 	<view class="full-width eq_list_ul" style="">
+							<text class="eq_list_ul_left">订单金额:</text>
+							<text class="eq_list_ul_right">¥{{LoupanList.settle_total || ''}}</text>
+						</view> -->
+						<!-- <view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">成本金额:</text>
+							<text class="eq_list_ul_right">¥{{LoupanList.cost_amount || ''}}</text>
+						</view> -->
+						<!-- <view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">结算比例:</text>
+							<text class="eq_list_ul_right">{{LoupanList.settle_rate*100 || ''}}%</text>
+						</view> -->
+						<view class="full-width eq_list_ul">
+							<text v-if="LoupanList.direction.value == 'income'" class="eq_list_ul_left">收入金额:</text>
+							<text v-if="LoupanList.direction.value == 'expense'" class="eq_list_ul_left">退款金额:</text>
+							<text v-if="LoupanList.direction.value == 'withdrawal'" class="eq_list_ul_left">提现金额:</text>
+							<text class="eq_list_ul_right">{{LoupanList.settle_amount || ''}}(¥)</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">所属代理:</text>
+							<text class="eq_list_ul_right">{{LoupanList.partner.name || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">所属店铺:</text>
+							<text class="eq_list_ul_right">{{LoupanList.shop.short_name || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">店铺地址:</text>
+							<view class="eq_list_ul_right" style="width: 350upx;">
+								<view v-html="LoupanList.shop.address"></view>
+							</view>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">订单作品:</text>
+							<view class="eq_list_ul_right">
+								<image :src="LoupanList.order_queue.works_image" mode="widthFix" style="width: 200upx;"></image>
+							</view>
+						</view>
+						<!-- <view style="width: 100%; height: 1upx; background: #F5F5F5; margin: 10upx 0;"></view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">下单时间:</text>
+							<text class="eq_list_ul_right">{{LoupanList.create_time || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul" v-if="LoupanList.billing_time" >
+							<text class="eq_list_ul_left">确认时间:</text>
+							<text class="eq_list_ul_right">{{datatime(LoupanList.billing_time) || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul" v-if="LoupanList.finish_time">
+							<text class="eq_list_ul_left">结算时间:</text>
+							<text class="eq_list_ul_right">{{datatime(LoupanList.finish_time) || ''}}</text>
+						</view>
+						<view style="width: 100%; height: 1upx; background: #F5F5F5; margin: 10upx 0;"></view>
+						<view class="full-width eq_list_ul" style="display: block;">
+							<text style="color: #818181; font-size: 28upx;font-weight:500; line-height: 80upx;">结算方式</text>
+							<view style="background:rgba(238,238,238,1); border-radius:10upx; padding: 15upx;">
+								<view style="line-height: 40upx;">(订单金额 - 成本金额) X 结算比例 = 收入金额</view>
+								<view style="line-height: 40upx;">例:(¥{{LoupanList.settle_total || ''}} - ¥{{LoupanList.cost_amount || ''}}) X  {{LoupanList.settle_rate*100 || ''}}% = ¥{{LoupanList.settle_amount || ''}}</view>
+							</view>
+						</view> -->
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon
+		},
+		computed: {},
+		data() {
+			return {
+				long:false,
+				LoupanList: {
+					finish_time:null
+				}, //数据
+				queryPage: {
+					m:'Money/statementDetail',
+					id:null
+				},
+			};
+		},
+		methods: {
+			datatime(time){
+				if(time != null){
+					var date = new Date(time*1000)
+					var year = date.getFullYear();
+					var month = date.getMonth() + 1;
+					var day = date.getDate();
+					var hour = date.getHours(); 
+					if(month < 10) {
+						month = '0' + month;
+					}
+					if(day < 10) {
+						day = '0' + day;
+					}
+					if(hour < 10) {
+						hour = '0' + hour;
+					}
+					var minute = date.getMinutes();
+					if(minute < 10) {
+						minute = '0' + minute;
+					}
+					var second = date.getSeconds();
+					if(second < 10) {
+						second = '0' + second;
+					}
+					var currentTime = year + "-" + month + "-" + day + "  " + hour + ":" + minute + ":" + second;
+					return currentTime
+				}else{
+					return 0
+				}
+				
+			},
+			// 加载数据
+			loadGoodsList() {
+				uni.showLoading({title: '正在加载中...'})
+				logoservice.MoneystatementDetail(this.queryPage).then(result => {
+					this.long = true
+					this.LoupanList = result
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({ title: err.msg, icon: 'none' });
+				});
+			}
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			// this.loadGoodsList();
+		},
+		// 上拉加载
+		onReachBottom() {
+			// this.loadGoodsList();
+		},
+		onLoad(options) {
+			console.log(options)
+			this.queryPage.id = options.id
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({ m:'Init/init',code:res.code}).then(result => {
+						logoservice.setwixinInfo(result);
+						this.loadGoodsList();
+					}).catch(err => {
+						uni.navigateTo({url: 'login',});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+	.eq_list{
+		margin:0 auto 20upx; 
+		padding: 10upx 20upx; 
+		background: #FFFFFF; 
+		.eq_list_ul{
+			display: flex; 
+			// align-items: center; 
+			line-height: 55upx;
+			font-size: 28upx;
+			.eq_list_ul_left{
+				// width: 180upx;
+				color: #818181;
+			}
+			.eq_list_ul_right{
+				// width: calc(100% - 180upx); 
+				// text-align: right;
+			}
+		}
+	}
+</style>
diff --git a/pages/mine/Liquidation.vue b/pages/mine/Liquidation.vue
new file mode 100644
index 0000000..b18b28b
--- /dev/null
+++ b/pages/mine/Liquidation.vue
@@ -0,0 +1,657 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<view style="position: fixed; width: 100%;">
+				<view style="width:100%;text-align: center;padding: 30upx 0; background: #F1F1F1;"
+					@click="togglePopup()">
+					<!-- <text>{{queryPage.goods_attr == null ? '全部交易类型' : queryPage.goods_attr}}</text> -->
+					<text>{{directiontext == null ? '全部交易类型' : directiontext}}</text>
+					<span class="iconfont icon-xiala"
+						style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+				</view>
+				<view style="display: flex;background: #F6F6F6;">
+					<!-- 年月日 -->
+					<view style="width: calc(100% / 2); text-align: left;padding: 30upx 0 30upx 20upx;"
+						@click="showPicker('selector')">
+						<text v-if="queryPage.year">{{queryPage.year}}年</text>
+						<text v-if="queryPage.month">{{queryPage.month}}月</text>
+						<text v-if="queryPage.date">{{queryPage.date}}</text>
+						<span class="iconfont icon-xiala"
+							style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+					</view>
+					<!-- 状态类型 -->
+					<view
+						style="width: calc(100% / 2); text-align: right;padding: 30upx 20upx 30upx 0; visibility: hidden;">
+						<picker @change="bindPickerChange" :value="queryPage.status" :range="array">
+							{{array[queryPage.status] || '全部'}}
+							<span class="iconfont icon-xiala"
+								style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+						</picker>
+					</view>
+				</view>
+				<view
+					style="display: flex; padding: 0 20upx 20upx; color: #BCBEC1; background: #F6F6F6; font-size: 24upx;">
+					<view>收入明细:{{queryPage.count || '0'}}笔</view>
+					<view style="margin-left: 10upx;">收入金额:¥{{settle_amount || '0'}}元</view>
+				</view>
+			</view>
+			<!-- 动态数据 -->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long"
+				style="padding-top: 252upx;">
+				<view v-for="(item, index) in LoupanList" :key="index" class="eq_list" @click="details(item)">
+					<view class="eq_list_div">
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left"
+								v-if="item.direction.value != 'withdrawal'">{{item.goods_attr || ''}}</text>
+							<text class="eq_list_ul_right">
+								<text v-if="item.settle_amount > 0 && self_payment == 0 && item.material_id != 0"
+									style="color:#5CE6B6;font-size: 30upx;">+{{item.settle_amount || '0'}}</text>
+
+								<text v-if="item.settle_amount > 0 && self_payment == 0 && item.material_id == 0"
+									style="color:#5CE6B6;font-size: 30upx;">+{{item.settle_amount || '0'}}</text>
+
+								<text v-if="item.settle_amount > 0 && self_payment == 1 && item.material_id == 0 "
+									style="color:#5CE6B6;font-size: 30upx;">+{{item.real_amount || '0'}}</text>
+									
+								<text v-if="item.settle_amount <= 0 " style="color:#F67273;font-size: 30upx;">
+									{{item.settle_amount || '0'}}</text>
+							
+							</text>
+						</view>
+						<view class="full-width eq_list_ul" style="color: #BCBEC1; font-size: 24upx;">
+							<text style="width: 40%;">{{item.create_time}}</text>
+							<!-- <text style="width: 30%; text-align: center;visibility: hidden;">订单金额:¥{{item.settle_total || ''}}</text>
+							<text style="width: 10%; text-align: center;visibility: hidden;">{{item.settle_rate*100}}%</text> -->
+							<text style="width: 60%; text-align: right;color:#F67273;"
+								v-if="item.direction.value == 'expense'">退款</text>
+							<text style="width: 60%; text-align: right;color:#F67273;"
+								v-if="item.direction.value == 'withdrawal'">提现</text>
+						</view>
+					</view>
+				</view>
+				<!-- 暂无相关信息 -->
+				<view class="align-center content-color"
+					style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+					v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju"
+						style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">暂无相关信息</view>
+				</view>
+			</view>
+			<!-- 动态数据完 -->
+		</view>
+		<!-- 返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+		<mpvue-picker ref="mpvuePicker" :themeColor="'#53B2B0'" :pickerValueDefault="pickerValueDefault"
+			@onChange="onChange" @onCancel="onCancel" @onConfirm="onConfirm" :pickerValueArray="pickerValueArray">
+		</mpvue-picker>
+		<uni-popup ref="showshare" :type="type" @change="change">
+			<view class="uni-share" style="width: 100%; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						选择交易类型
+					</view>
+					<scroll-view scroll-y style="margin: auto; height: 500upx; overflow: hidden; overflow-y: scroll;">
+						<view style="width: calc(100% - 40upx); margin:20upx auto; overflow: hidden;">
+							<!-- <view v-for="(item, index) in goodsItem" :key="index" @click="selectMonth(item)" :class="queryPage.goods_attr == item ? 'green':''"
+							style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item == null ? '全部' : item}}
+							</view> -->
+							<view v-for="(item, index) in directionlist" :key="index"
+								@click="selectMonthdirection(item)"
+								:class="queryPage.direction == item.val ? 'green':''"
+								style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item.text}}
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="uni-share-btn" @click="cancel('share')">取消</view>
+			</view>
+		</uni-popup>
+	</view>
+
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	import Enums from '@/util/Enums';
+	// 自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePickernew.vue';
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker
+		},
+		computed: {},
+		data() {
+			return {
+				long: false,
+				LoupanList: [], //数据
+				goodSize: null,
+				// 返回顶部
+				totopstatus: false,
+				// 上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Money/statementList',
+					billing_id: null,
+					machine_id: null, // 设备
+					page: 1,
+					per_page: 12,
+					count: null,
+					status: null, //2付款状态
+					year: null, // 年
+					month: null, // 月
+					date: null, // 日
+					goods_attr: null, // 商品
+					direction: null // 类型expense退款 |income 收入|withdrawal  提现
+				},
+				goodsItem: [],
+				order_amount: null,
+				settle_amount: null,
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				array: ['待清算', '待结算', '已结算', '全部'],
+				type: 'bottom',
+				directionlist: [{
+					text: '全部',
+					val: null
+				}, {
+					text: '收入',
+					val: 'income'
+				}, {
+					text: '退款',
+					val: 'expense'
+				}],
+				directiontext: null,
+				self_payment: 0, //是否显示收入列表显示的金额
+			};
+		},
+		mounted() {
+
+		},
+		methods: {
+			details(item) {
+				if (item.direction.value == 'withdrawal') {
+					uni.navigateTo({
+						url: '/pages/mine/Withdrawal-details?id=' + item.id,
+					});
+				} else {
+					uni.navigateTo({
+						url: '/pages/mine/Liquidation-details?id=' + item.id,
+					});
+				}
+			},
+			bindPickerChange(e) {
+				//console.log('picker发送选择改变,携带值为', e.target)
+				if (e.target.value == 3) {
+					this.queryPage.status = null
+				} else {
+					this.queryPage.status = e.target.value
+				}
+				//console.log()
+				this.LoupanList = []
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.count = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				this.queryPage.date = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+				// let today = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+				// return today
+			},
+			getMonth() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				/*let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}*/
+				this.queryPage.month = myDate.getFullYear() + '-' + myMonth;
+			},
+			showPicker(mode) {
+				this.$refs.mpvuePicker.show();
+			},
+			//确定
+			onConfirm(e) {
+				this.queryPage.year = null
+				this.queryPage.month = null
+				this.queryPage.date = null
+				if (e.value.length == 1) {
+					this.queryPage.year = e.value[0]
+				} else if (e.value.length == 2) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + e.value[1] //补齐
+					}
+					this.queryPage.month = e.value[0] + '-' + myMonth
+				} else if (e.value.length == 3) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth //补齐
+					}
+					let mydate = e.value[2]
+					if (mydate < 10) {
+						mydate = '0' + e.value[2] //补齐
+					}
+					this.queryPage.date = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				this.LoupanList = []
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.count = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			onChange(e) {
+				//console.log(e);
+			},
+			onCancel(e) {
+				//console.log(e);
+			},
+			//加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				/*if(this.goodSize != null) {
+					this.queryPage.goods_attr = this.goodSize
+				}*/
+				logoservice.MoneystatementList(this.queryPage).then(result => {
+				
+					this.long = true
+					let queryList = result.data
+					//下拉更新时,查询结果集
+					//触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//console.log(this.LoupanList)
+					//console.log(this.LoupanList)
+					//分页对象处理
+					//console.log(result.settle_amount_total)
+					//console.log(Number(result.settle_amount_total).toFixed(2))
+					this.queryPage.count = result.count;
+					this.queryPage.per_page = result.per_page;
+					this.order_amount = result.gross_profit_total;
+					this.settle_amount = Number(result.settle_amount_total).toFixed(2);
+					
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					//uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg ? err.msg : err.data,
+						icon: 'none'
+					});
+				});
+			},
+			//返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			//做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+			cancel(type) {
+				this.$refs['show' + type].close()
+			},
+			change(e) {
+				console.log('是否打开:' + e.show)
+			},
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['show' + 'share'].open()
+				})
+			},
+			selectMonthdirection(item) {
+				this.queryPage.direction = item.val;
+				this.directiontext = item.text;
+				this.$refs['show' + 'share'].close();
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.count = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			// selectMonth(item) {
+			// 	this.queryPage.goods_attr = item;
+			// 	this.$refs['show' + 'share'].close();
+			// 	this.dataLoadState.pullDownRefresh = false;
+			// 	this.dataLoadState.reachBottom = false;
+			// 	this.queryPage.page = 1;
+			// 	this.queryPage.count = 0;
+			// 	this.LoupanList = []
+			// 	this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			// },
+			getGoodsAttrList() {
+				//加载全部交易类型数据
+				logoservice.MoneystatementList({
+					m: 'Money/getGoodsAttrList'
+				}).then(result => {
+					//console.log(result);
+					this.goodsItem = result;
+					this.goodsItem.unshift(null)
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			}
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			this.getGoodsAttrList()
+		},
+		// 上拉加载
+		onReachBottom() {
+			console.log('上拉加载')
+			if (this.LoupanList.length < 12) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+		onLoad(options) {
+			// 设置时间
+			// 设备关联
+			if (options.selfPayment) {
+				this.self_payment = options.selfPayment;
+			}
+			//console.log(options)
+
+			if (options.machineid) {
+				this.queryPage.machine_id = options.machineid
+				wx.setNavigationBarTitle({
+					title: options.machineid
+				})
+				this.pickerValueArray = ['month']
+				// 获取本月
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				this.queryPage.date = null
+				this.queryPage.month = myDate.getFullYear() + '-' + myMonth
+			}
+			if (options.direction) {
+				this.queryPage.direction = options.direction
+				this.directionlist.forEach(item => {
+					if (options.direction == item.val) {
+						this.directiontext = item.text;
+					}
+				})
+			}
+			if (options.day) {
+				this.queryPage.date = options.day
+			} else {
+				this.getMonth()
+				this.pickerValueArray = ['month']
+			}
+			if (options.date != 'undefined' && options.date != null) {
+				//console.log(options)
+				if (options.date == 'yesterday') {
+					this.pickerValueArray = ['yesterday']
+					// 获取昨天的日期
+					let myDate = new Date();
+					let myMonth = myDate.getMonth() + 1;
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth; //补齐
+					}
+					let mydate = myDate.getDate() - 1;
+					if (mydate < 10) {
+						mydate = '0' + mydate; //补齐
+					}
+					this.queryPage.date = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+				}
+				if (options.date == 'month') {
+					this.pickerValueArray = ['month']
+					// 获取本月
+					let myDate = new Date();
+					let myMonth = myDate.getMonth() + 1;
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth; //补齐
+					}
+					this.queryPage.date = null
+					this.queryPage.month = myDate.getFullYear() + '-' + myMonth
+				}
+			}
+			//console.log("date="+this.queryPage.date)
+			// if (options.goodSize != 'undefined' && options.goodSize != null && options.goodSize != '') {
+			// 	wx.setNavigationBarTitle({
+			// 		title: "收入明细"
+			// 	})
+			// 	this.goodSize = options.goodSize
+			// 	this.pickerValueArray = ['month']
+			// 	// 获取本月
+			// 	let myDate = new Date();
+			// 	let myMonth = myDate.getMonth() + 1;
+			// 	if (myMonth < 10) {
+			// 		myMonth = '0' + myMonth; //补齐
+			// 	}
+			// 	this.queryPage.date = null
+			// 	this.queryPage.month = myDate.getFullYear() + '-' + myMonth
+			// 	//this.queryPage.goods_attr =options.goodSize
+			// }
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						logoservice.setwixinInfo(result);
+						/* this.LoupanList = []
+						this.queryPage.page = 1;
+						this.queryPage.count = 0;
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP); */
+						this.getGoodsAttrList();
+						if (this.goodSize != null) {
+							// this.selectMonth(options.goodSize);
+						} else {
+							this.LoupanList = []
+							this.queryPage.page = 1;
+							this.queryPage.count = 0;
+							this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+						}
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.butn {
+		font-size: 30upx;
+		font-weight: 400;
+		height: 100upx;
+		line-height: 100upx;
+		text-align: center;
+		width: 100%;
+	}
+
+	/* 底部分享 */
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 26upx;
+		text-align: center;
+		background: #FFFFFF;
+	}
+
+	.eq_list {
+		width: 100%;
+		padding: 0upx 20upx;
+		background: #FFFFFF;
+
+		.eq_list_div {
+			border-top: 1upx solid #F5F5F5;
+			padding: 25upx 0;
+
+			.eq_list_ul {
+				display: flex;
+				align-items: center;
+				line-height: 30upx;
+
+				.eq_list_ul_left {
+					width: 300upx;
+				}
+
+				.eq_list_ul_right {
+					width: calc(100% - 300upx);
+					text-align: right;
+					font-weight: 400;
+					margin-top: 30upx;
+				}
+			}
+		}
+
+	}
+
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90rpx;
+		line-height: 90rpx;
+		font-size: 14px;
+		text-align: center;
+		color: #666;
+		background: #FFFFFF;
+		border-top: 1px solid #EEEEEE;
+		// margin: 20upx 0;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+</style>
diff --git a/pages/mine/PackageDetail.vue b/pages/mine/PackageDetail.vue
new file mode 100644
index 0000000..350757a
--- /dev/null
+++ b/pages/mine/PackageDetail.vue
@@ -0,0 +1,349 @@
+<template>
+
+	<view class="packagedetail full-height full-width">
+		<view v-if=" print_type==0" class="print-score bg-white-color full-width"
+			style="position: relative;margin-top: 10upx; height:230upx;">
+			<view class="print content-color align-center" style="width: 100%;">
+				<view
+					style="position: absolute;top: 30upx;width: 180upx; height: 52upx; border-top-right-radius: 40upx; border-bottom-right-radius:40upx; background: #FFFFFF;text-align: center;padding-top: 8upx;">
+					<text style="color:#383838;font-size:40upx;margin-top:15upx;font-weight: bold;">{{machineid}}</text>
+				</view>
+				<view
+					style=" position:center;height:130upx;text-align:center;line-height:130upx;width:100%;margin-top:-40upx;">
+					<text style="color:#fff;font-size:55upx;margin-left:15upx;font-weight:450;">标准版</text>
+				</view>
+				<view style="position: absolute; width: 100%; text-align: center;margin-top: -25upx;">
+					<text v-if="getDaysDifference(time) > 100"
+						style="color: #fff; font-size: 26upx;">有效期至{{dateFormat(time)}}</text>
+					<text v-if="getDaysDifference(time) <= 100  && getDaysDifference(time) > 30"
+						style="color: #FF8D1A; font-size: 26upx;">有效期至{{dateFormat(time)}}</text>
+					<text v-if="getDaysDifference(time) <= 30 "
+						style="color: #FB1B1B; font-size: 26upx;">有效期至{{dateFormat(time)}}</text>
+				</view>
+				<view style="position: absolute; right: 30upx; top: 260upx;">
+					<text style="color: #fff; font-size: 26upx;;" hover-class="hover-class-text"
+						@click="rightsAndInterests()">权限对比</text>
+					<label class="fa fa-angle-right" style="color: #fff; font-size: 32upx; margin-left: 5upx;"></label>
+				</view>
+			</view>
+		</view>
+
+		<view v-if=" print_type==1" class="print-score bg-white-color full-width"
+			style="position: relative;margin-top: 10upx; background:#FF8D1A; height:230upx">
+			<view class="print content-color align-center" style="width: 100%;">
+				<view
+					style="position: absolute;top: 30upx;width: 180upx; height: 52upx; border-top-right-radius: 40upx; border-bottom-right-radius:40upx; background: #FFFFFF;text-align: center;padding-top: 8upx;">
+					<text style="color:#383838;font-size:40upx;margin-top:15upx;font-weight: bold;">{{machineid}}</text>
+				</view>
+				<view
+					style=" position:center;height:130upx;text-align:center;line-height:130upx;width:100%;margin-top:-40upx;">
+					<text style="color:#fff;font-size:55upx;margin-left:15upx;font-weight:450;">无限版</text>
+				</view>
+				<view style="position: absolute; width: 100%; text-align: center;margin-top: -25upx;">
+					<text v-if="getDaysDifference(time) > 100"
+						style="color: #fff; font-size: 26upx;">有效期至{{timeDateFormatText}}</text>
+					<text v-if="getDaysDifference(time) <= 100  && getDaysDifference(time) > 30"
+						style="color: #FF8D1A; font-size: 26upx;">有效期至{{timeDateFormatText}}</text>
+					<text v-if="getDaysDifference(time) <= 30 "
+						style="color: #FB1B1B; font-size: 26upx;">有效期至{{timeDateFormatText}}</text>
+				</view>
+				<view style="position: absolute; right:30upx;top:260upx;">
+					<text style="color: #fff; font-size: 26upx;;" hover-class="hover-class-text"
+						@click="rightsAndInterests()">权限对比</text>
+					<label class="fa fa-angle-right" style="color: #fff; font-size: 32upx; margin-left: 5upx;"></label>
+				</view>
+			</view>
+		</view>
+
+		<View style="margin-left:40upx;margin-top:60upx;">
+			<text v-if="print_type==0" style="font-size: 35upx;color:#383838;font-weight: bold;">基础服务</text>
+			<text v-if="print_type==1" style="font-size: 35upx;color:#FF8D1A;font-weight: bold;">基础服务</text>
+		</view>
+
+		<view class="other-info">
+			<view class="item" style="width: calc(100% / 3)" v-for="(other, index) in packagelistone" :key="index">
+				<view class="text content-color">
+					{{other.name}}
+				</view>
+			</view>
+		</view>
+
+
+		<view style="margin-left:40upx;margin-top:40upx; width:calc(100% - 60upx);height:2upx;background:#f6f6f6;"></view>
+
+
+		<View style="margin-left:40upx;margin-top:40upx; ">
+			<text v-if="print_type==0" style="height:100upx;font-size:35upx;color:#383838;font-weight:bold;">产品服务</text>
+			<text v-if="print_type==1" style="height:100upx;font-size:35upx;color:#FF8D1A;font-weight:bold;">产品服务</text>
+		</view>
+		<view class="other-info">
+			<view class="item" style="width: calc(100% / 3)" v-for="(other, index) in productlistone" :key="index">
+				<view class="text content-color">
+					{{other.name}}
+				</view>
+			</view>
+		</view>
+
+
+		<view style="margin-left:40upx;margin-top:40upx; width:calc(100% - 60upx);height:2upx;background:#f6f6f6;">
+		</view>
+
+		<View style="margin-left:40upx;margin-top:40upx; ">
+			<text v-if="print_type==0" style="font-size:35upx;color:#383838;font-weight: bold;">保障服务</text>
+			<text v-if="print_type==1" style="font-size:35upx;color:#FF8D1A;font-weight: bold;">保障服务</text>
+		</view>
+		<view class="other-info">
+			<view class="item" style="width: calc(100% / 3)" v-for="(other, index) in securitylist" :key="index">
+				<view class="text content-color">
+					{{other.name}}
+				</view>
+			</view>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				packagelistone: [{
+						name: '个人/工作室',
+					},
+					{
+						name: '支持国内',
+
+					},
+					{
+						name: '品牌授权',
+					},
+					{
+						name: '1-3个子运营账号',
+					},
+					{
+						name: '500次/年打印量',
+					},
+					{
+						name: '¥0.5次/次打印卡',
+					},
+				],
+				
+				productlistone: [{
+						name: '部分官方图库',
+
+					},
+					{
+						name: '官方小程序',
+
+					},
+					{
+						name: '官方收款',
+					},
+					{
+						name: '运营小程序',
+					},
+					{
+						name: 'H5定制',
+					}
+				],
+				securitylist: [{
+						name: '培训服务',
+					},
+					{
+						name: '24小时监控',
+
+					},
+					{
+						name: '上门服务',
+					}
+				],
+				long: false,
+				list: {
+					bank_name: null,
+					account_name: null,
+					account_sn: null
+				},
+				submit: true,
+				money: "",
+				machineid: "",
+				print_type: 0, //默认0标准版 1无限版
+				time: "", //失效时间
+				timeDateFormatText:null,//格式化后的时间
+			}
+		},
+		
+		methods: {
+			//获取相差天数 
+			getDaysDifference(time) {
+				try {
+					let day = new Date(time.replace(/-/g, '/')).getTime() - new Date().getTime(); //日期转时间戳
+					let dayCount = Math.floor(day / 86400000); //时间戳获取天数
+					return dayCount;
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+			//格式化时间
+			dateFormat(time) {
+				try {
+					var dt = new Date(time.replace(/-/g, '/'));
+				    var y = dt.getFullYear();
+					var m = dt.getMonth() + 1;
+					var d = dt.getDate();
+					return y + '年' + m + '月' + d + '日';
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				return time;
+			},
+			
+            
+			rightsAndInterests() {
+				uni.navigateTo({
+					url: '../mine/RightsAndInterests?print_type=' + this.print_type
+				});
+			},
+
+			onShow() {
+				var _self = this;
+				uni.login({
+					provider: 'weixin',
+					success: (res) => {
+						logoservice.login({
+							m: 'Init/init',
+							code: res.code
+						}).then(result => {
+							uni.setStorageSync('openid', result.openid)
+							logoservice.setwixinInfo(result);
+							this.submit = true
+							//_self.updateInfoData();
+						}).catch(err => {
+
+						})
+					},
+					fail: (err) => {
+						console.error('授权登录失败:' + JSON.stringify(err));
+					}
+				});
+			},
+			
+			onLoad(options) {
+				this.machineid = options.machineid;
+				this.print_type = options.print_type;
+				this.time = options.time;
+				this.timeDateFormatText =this.dateFormat(this.time);
+				if (this.print_type == 1) {
+					this.packagelistone = [{
+							name: '中小企业',
+						},
+						{
+							name: '全球',
+						},
+						{
+							name: '品牌授权',
+						},
+						{
+							name: '无限',
+						},
+						{
+							name: '无限打印量',
+						},
+					]
+					this.productlistone = [{
+							name: '所有官方图库',
+						},
+						{
+							name: '官方小程序',
+						},
+						{
+							name: '官方收款',
+						},
+						{
+							name: '运营小程序',
+						},
+						{
+							name: 'H5定制',
+						},
+						{
+							name: '自定义小程序',
+						},
+						{
+							name: '自定义收款',
+						},
+						{
+							name: '运营后台',
+						},
+					]
+					this.securitylist = [{
+							name: '培训服务',
+						},
+						{
+							name: '24小时监控',
+						},
+						{
+							name: '上门服务',
+						},
+					]
+				}
+
+			}
+		},
+	}
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 99%;
+		background: #FFFFFF;
+	}
+
+	.packagedetail {
+		width: 100%;
+		height: 100%;
+
+		.print-score {
+			padding: 50upx 0;
+			width: 90%;
+			height: 160upx;
+			margin: 57upx auto;
+			background: #383838;
+			border-radius: 20upx;
+			display: flex;
+			align-items: center;
+			font-size: 26upx;
+			color: #fff;
+		}
+
+		.other-info {
+			width: 100%;
+			margin-top: 30upx;
+			overflow: hidden;
+			padding-left: 40upx;
+			padding-right: 40upx;
+
+			.item {
+				float: left;
+				height: 50upx;
+				align-items: center;
+				width: calc(100% / 5);
+
+				.text {
+					width: 100%;
+					font-size: 24upx;
+					text-align: left;
+					color: #333333;
+				}
+			}
+		}
+	}
+</style>
diff --git a/pages/mine/Print.vue b/pages/mine/Print.vue
new file mode 100644
index 0000000..52ed45a
--- /dev/null
+++ b/pages/mine/Print.vue
@@ -0,0 +1,682 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<view style="position: fixed; width: 100%;">
+			<view style="height: 20upx;width:100%;background: #F1F1F1;"></view>
+				<view style="width:calc(100% -40upx);padding-top: 20upx; padding-bottom: 20upx; background: #FFFFFF; border-radius: 20upx;margin-left:20upx; margin-right: 20upx;">
+					<view style="width:calc(100% - 40upx);border-radius:50upx; height: 90upx; border:2upx solid #F1F1F1;margin:20upx;" @click="togglePopup()">
+					<text style="color: #383838;float:left;margin-top:25upx;margin-left: 30upx;">{{attr == null ? '打印类型' :attr}}</text>
+					<span class="iconfont icon-xiala"
+						  style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;float: right;margin-top:30upx;margin-right:20upx;"></span>
+					</view>	
+					<view style="display: flex; padding: 15upx 20upx 15upx 40upx; color: #BCBEC1; font-size: 24upx;flex-direction: row;">
+							<view style="width: 40%; color: #383838">作品总数:{{queryPage.total || '0'}}笔</view>
+							<view style="width: calc(60% - 20upx); text-align:right;" @click="showPicker('selector')">
+								<text style="color: #383838" v-if="queryPage.start_time == null && queryPage.end_time == null">
+									<text style="color: #383838" v-if="queryPage.year">{{queryPage.year}}年</text>
+									<text style="color: #383838" v-if="queryPage.month">{{queryPage.month}}月</text>
+									<text style="color: #383838" v-if="queryPage.day">{{queryPage.day}}</text>
+									<text style="color: #383838" v-if="!queryPage.day && !queryPage.month && !queryPage.year">全部</text>
+								</text>
+								<text v-else>{{datetext}}</text>
+								<span class="iconfont icon-xiala"style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+							</view>
+					  </view>
+				  </view>
+		     </view>
+			
+			<!-- 动态数据 -->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long"
+				style="padding-top: 250upx; ">
+				<view v-for="(item, index) in LoupanList" :key="index" class="eq_list">
+					<!-- @click="details(item)" -->
+					<view style=" color: #FFFFFF;font-size: 24upx;border-bottom-right-radius: 20upx; background:#43CF7C;
+					  border-top-left-radius: 20upx;height: 50upx;width: 140upx;text-align: center;padding-top: 10upx;"> {{item.status.text}}</view>
+					<view class="eq_list_div">
+						<view class="full-width eq_list_ul">
+							<view style="width: 130upx; display: flex;align-items: center;"
+								@click="previewImage(item,LoupanList)">
+								<image :src="item.works_image + '?x-oss-process=image/resize,lfit,w_130'"
+									style="width:130upx; height:150upx; margin: auto; align-items: center;margin-left: 20upx;"
+									mode="aspectFill"></image>
+							</view>
+							<View style="width: 60%; height: auto;display: flex;flex-direction: column;margin-left: 20upx;">
+								<text class="eq_list_ul_left" style="margin-left:15upx;width: auto;">
+									<text style="font-size: 30upx;font-weight: bold;">{{item.goods_name || ''}}</text>
+									<text style="font-size: 30upx; font-weight: bold"
+										  v-if="item.used_applets == '2'">-{{item.goods_specs || ''}} </text>
+								</text>
+								<text class="eq_list_ul_left" style="margin-left:15upx;width: auto;margin-top: 2upx;">
+									<text style="font-size: 22upx;">{{item.machine_id || ''}}</text>
+									<text style="font-size: 22upx;"
+										  v-if="item.used_applets == '2'">-{{item.goods_specs || ''}} </text>
+								</text>
+								<View style="width: 100%; height: auto;display: flex;flex-direction: row;margin-top: 15upx;">
+									<text class="eq_list_ul_left" style="margin-left:15upx;width: auto;">
+										<text style="font-size: 24upx;color:#595959;">套餐内</text>
+									</text>
+								</view>
+								<text style="margin-left:15upx;width:auto;font-size: 26upx;margin-top: 2upx;">{{item.pay_time}}</text>
+								<text style="margin-left:15upx;width:auto;font-size: 26upx;margin-top: 0upx;">3分20秒(用时</text>
+							</view>
+							<!--<view class="full-width eq_list_ul" style="width:40%;"> -->
+							<view style="width:40%;display: flex;justify-content: center;
+								text-align:center;line-height:30upx;color:#FFFFFF;">
+								<text
+									style="width: 80upx;height:80upx;font-size:24upx;
+									text-align:center;
+									color:rgba(255, 255, 255, 1);
+									background-color: rgba(67, 207, 124, 1);
+									border-radius: 80upx;
+									line-height:80upx;
+									text-align:center;margin-right:-70upx;">恢复</text>
+							</view>
+						</view>
+					</view>
+				</view>
+				
+				<!--暂无相关信息 -->
+				<view class="align-center content-color"
+					style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+					v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju"
+						style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">暂无相关信息
+					</view>
+				</view>
+			</view>
+			
+		<!--动态数据完 -->
+		</view>
+		<!--返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+		<mpvue-picker ref="mpvuePicker" :themeColor="'#53B2B0'" :pickerValueDefault="pickerValueDefault" @onChange="onChange" @onCancel="onCancel" @onConfirm="onConfirm" :pickerValueArray="pickerValueArray">
+		</mpvue-picker>
+		<uni-popup ref="showshare" :type="type" @change="change">
+			<view class="uni-share" style="width: 100%; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						选择打印类型
+					</view>
+					<scroll-view scroll-y style="margin: auto; height: 500upx; overflow: hidden; overflow-y: scroll;">
+						<view style="width: calc(100% - 40upx); margin:20upx auto; overflow: hidden;">
+							<view v-for="(item, index) in goodsItem" :key="index" @click="selectMonth(item)"
+								:class="attr == item.goods_name ? 'green':''"
+								style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item.goods_name == null ? '全部' : item.goods_name}}
+							</view>
+						</view>
+					</scroll-view>
+				 </view>
+			  <view class="uni-share-btn" @click="cancel('share')">取消</view>
+		    </view>
+		 </uni-popup>
+	   </view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	import Enums from '@/util/Enums';
+	//自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePickernew.vue';
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker
+		},
+		computed: {},
+		data() {
+			return {
+				long: false,
+				LoupanList: [], //数据
+				goodSize: null,
+				//返回顶部
+				totopstatus: false,
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/printRecord',
+					machine_id: null,
+					page: 1,
+					per_page: 20,
+					total: 0,
+					date: null, //日
+					month: null, //月
+					year: null, //日
+					is_excess: null, //套餐选择类型
+				},
+				goodsItem: [
+					{
+						goods_name: '全部',
+						type: -12
+					},
+					{
+						goods_name: '套餐内',
+						type: 2
+					},
+					{
+						goods_name: '打印卡',
+						type: 1
+					},
+				],
+				attr,
+				order_amount: null,
+				total_mount: null,
+				//年
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				type: 'bottom',
+				datetext: null,
+			};
+		},
+		mounted() {
+
+		},
+		methods: {
+			details(item) {
+				/*uni.navigateTo({
+					url: '/pages/mine/order-details?id=' + item.id,
+				}); */
+			},
+			//恢复打印
+			Reprint(item) {
+				if (item.status.value == 0) {
+					return;
+				}
+				uni.showModal({
+					title: '温馨提示',
+					content: '是否此订单恢复打印?',
+					confirmText: '确定',
+					confirmColor: '#ff3b32',
+					success: function(res) {
+						if (res.confirm) {
+							// 恢复打印的接口:
+							logoservice.MachineStockGoodsList({
+								m: 'Machine/repeatPrint',
+								machine_id: item.machine_id,
+								id: item.id,
+							}).then(result => {
+								uni.showToast({
+									title: '恢复订单打印成功',
+									icon: 'none'
+								});
+								//console.log('-----')
+								item.status.value = 0
+								item.status.text = "等待出料"
+							}).catch(err => {
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							})
+						} else if (res.cancel) {
+							//console.log('用户点击取消')
+						}
+					}
+				});
+			},
+			bindPickerChange(e) {
+				console.log('picker发送选择改变,携带值为', e.target)
+				if (e.target.value == 3) {
+					this.queryPage.status = null
+				} else {
+					this.queryPage.status = e.target.value
+				}
+				this.LoupanList = []
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				this.queryPage.day = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+			},
+			showPicker(mode) {
+				this.$refs.mpvuePicker.show();
+			},
+			//确定
+			onConfirm(e) {
+				this.queryPage.year = null
+				this.queryPage.month = null
+				this.queryPage.day = null
+				this.queryPage.start_time = null
+				this.queryPage.end_time = null
+				if (e.value.length == 1) {
+					this.queryPage.year = e.value[0]
+				} else if (e.value.length == 2) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + e.value[1] //补齐
+					}
+					this.queryPage.month = e.value[0] + '-' + myMonth
+				} else if (e.value.length == 3) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth //补齐
+					}
+					let mydate = e.value[2]
+					if (mydate < 10) {
+						mydate = '0' + e.value[2] //补齐
+					}
+					this.queryPage.day = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				this.LoupanList = []
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			onChange(e) {
+				//console.log(e);
+			},
+			onCancel(e) {
+				//console.log(e);
+			},
+			//设备打印信息 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data.data
+					// 下拉更新时,查询结果集
+					// 触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					// 分页对象处理
+					this.queryPage.total = result.data.total;
+					this.queryPage.per_page = result.data.per_page;
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					// uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+			//返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			//做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+			cancel(type) {
+				this.$refs['show' + type].close()
+			},
+			change(e) {
+				console.log('是否打开:' + e.show)
+			},
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['show' + 'share'].open()
+				})
+			},
+			selectMonth(item) {
+				//this.queryPage.goods_name = item.goods_name ? item.goods_name : null
+				//this.queryPage.attr = item.goods_specs ? item.goods_specs : null
+				if(item.type == -12){
+					this.attr ="全部打印类型";
+					this.queryPage.is_excess = null;
+				}else{
+					this.attr = item.goods_name ? item.goods_name : null
+					this.queryPage.is_excess = item.type
+				}
+				this.$refs['show' + 'share'].close();
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				//this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			//刷新状态
+			mentDetail(id) {
+				console.log(id)
+				logoservice.MoneystatementDetail({
+					m: 'Money/orderDetail',
+					id: id
+				}).then(result => {
+					this.LoupanList.forEach(item => {
+						if (item.id == id) {
+							item.is_pay = result.is_pay
+							item.status = result.status
+						}
+					})
+				}).catch(err => {});
+			}
+		},
+		
+		//下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.total = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			this.getGoodsAttrList()
+		},
+		
+		//上拉加载
+		onReachBottom() {
+			console.log('上拉加载')
+			if (this.LoupanList.length < 12) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+		onLoad(options) {
+			// 设置时间
+			this.getToday()
+			// 门店关联
+			if (options.shop_id) {
+				this.queryPage.shop_id = options.shop_id
+				wx.setNavigationBarTitle({
+					title: options.shop_name
+				})
+				this.queryPage.day = null
+				this.queryPage.month = null
+				this.queryPage.year = null
+			}
+			// 设备关联
+			if (options.machineid) {
+				this.queryPage.machine_id = options.machineid
+				wx.setNavigationBarTitle({
+					title: options.machineid
+				})
+				this.queryPage.day = null
+				this.queryPage.month = null
+				this.queryPage.year = null
+				// this.pickerValueArray = ['month']
+				// // 获取本月
+				// let myDate = new Date();
+				// let myMonth = myDate.getMonth() + 1;
+				// if (myMonth < 10) {
+				// 	myMonth = '0' + myMonth; //补齐
+				// }
+				// this.queryPage.day = null
+				// this.queryPage.month = myDate.getFullYear() + '-' + myMonth
+			}
+			if (options.start_time) {
+				this.queryPage.start_time = options.start_time
+			}
+			if (options.end_time) {
+				this.queryPage.end_time = options.end_time
+			}
+			if (options.is_pay) {
+				this.queryPage.is_pay = options.is_pay
+			}
+			if (options.datetext) {
+				this.datetext = options.datetext
+			}
+			if (options.date != 'undefined' && options.date != null) {
+				if (options.date == 'yesterday') {
+					this.pickerValueArray = ['yesterday']
+					// 获取昨天的日期
+					let myDate = new Date();
+					let myMonth = myDate.getMonth() + 1;
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth; //补齐
+					}
+					let mydate = myDate.getDate() - 1;
+					if (mydate < 10) {
+						mydate = '0' + mydate; //补齐
+					}
+					this.queryPage.day = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+				}
+				if (options.date == 'month') {
+					this.pickerValueArray = ['month']
+					// 获取本月
+					let myDate = new Date();
+					let myMonth = myDate.getMonth() + 1;
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth; //补齐
+					}
+					this.queryPage.day = null
+					this.queryPage.month = myDate.getFullYear() + '-' + myMonth
+				}
+			}
+			if (options.goods_name != 'undefined' && options.goods_name != null && options.goods_name != '') {
+				wx.setNavigationBarTitle({
+					title: "订单列表"
+				})
+				this.goodSize = {
+					goods_name: options.goods_name,
+					goods_specs: options.goods_specs
+				}
+				this.queryPage.day = null
+				this.queryPage.month = null
+				this.queryPage.year = null
+				// this.pickerValueArray = ['month']
+				// 获取本月
+				// let myDate = new Date();
+				// let myMonth = myDate.getMonth() + 1;
+				// if (myMonth < 10) {
+				// 	myMonth = '0' + myMonth; //补齐
+				// }
+				// this.queryPage.day = null
+				// this.queryPage.month = myDate.getFullYear() + '-' + myMonth
+			}
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						logoservice.setwixinInfo(result);
+						//this.getGoodsAttrList();
+						if (this.goodSize != null) {
+							this.selectMonth(this.goodSize);
+						} else {
+							this.LoupanList = []
+							this.queryPage.page = 1;
+							this.queryPage.total = 0;
+							this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+						}
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow(id) {
+			console.log(id)
+			// console.log('-------onShow')
+			if (id) {
+				this.mentDetail(id)
+			}
+			// this.dataLoadState.pullDownRefresh = false;
+			// this.dataLoadState.reachBottom = false;
+			// this.queryPage.page = 1;
+			// this.queryPage.total = 0;
+			// this.LoupanList = []
+			// this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			// this.getGoodsAttrList()
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.butn {
+		font-size: 30upx;
+		font-weight: 400;
+		height: 100upx;
+		line-height: 100upx;
+		text-align: center;
+		width: 100%;
+	}
+
+	/* 底部分享 */
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 26upx;
+		text-align: center;
+		background: #FFFFFF;
+	}
+
+	.eq_list {
+		width: calc(100% -40upx);
+
+		background: #FFFFFF;
+		margin-left: 20upx;
+		margin-right: 20upx;
+		margin-top: 20upx;
+		border-radius: 20upx;
+
+		.eq_list_div {
+
+            margin-top: -40upx;
+			padding: 20upx 0;
+
+			.eq_list_ul {
+				display: flex;
+				align-items: center;
+				line-height: 40upx;
+
+				.eq_list_ul_left {
+					width: 300upx;
+				}
+
+				.eq_list_ul_right {
+					width: calc(100% - 300upx);
+					text-align: right;
+					font-weight: 400;
+				}
+			}
+		}
+
+	}
+
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90rpx;
+		line-height: 90rpx;
+		font-size: 14px;
+		text-align: center;
+		color: #666;
+		background: #FFFFFF;
+		border-top: 1px solid #EEEEEE;
+		// margin: 20upx 0;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+</style>
diff --git a/pages/mine/PrintCard.vue b/pages/mine/PrintCard.vue
new file mode 100644
index 0000000..510a5a6
--- /dev/null
+++ b/pages/mine/PrintCard.vue
@@ -0,0 +1,242 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<!-- 动态数据 -->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long" >
+					<view v-for="(item, index) in LoupanList" :key="index" class="eq_list" >
+						<view class="eq_list_div">
+							<view class="full-width eq_list_ul">
+								<text class="eq_list_ul_left" style="font-size: 30upx;">{{item.machine_id}} - {{item.title}}打印卡</text>
+							</view>
+							<view class="full-width eq_list_ul">
+								<text class="eq_list_ul_left" style="font-size: 24upx; color: #B2B2B2; width: 80%;">充值时间:{{item.create_time}}</text>
+								<text class="eq_list_ul_right" style="font-size: 30upx;height:100%;color:#3A8CE6;margin-top:-60upx;">¥{{item.amount}}</text>
+					
+							</view>
+						</view>
+					</view>
+				<!-- 暂无相关信息 -->
+				<view class="align-center content-color" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);" 
+				v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju" style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">暂无相关信息</view>
+				</view>
+			</view>
+			<!-- 动态数据完 -->
+		</view>
+		<!-- 返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import Enums from '@/util/Enums';
+	// 自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon,
+			foot,
+		},
+		computed: {},
+		data() {
+			return {
+				long:false,
+				LoupanList: [], //数据
+				// 返回顶部
+				totopstatus: false,
+				// 上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m:'Money/partnerOrderList',
+					page: 1,
+					per_page: 12,
+					count:0
+				},
+			};
+		},
+		methods: {
+		
+			// 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({title: '正在加载中...'})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({title: '没有更多数据了!', icon: 'none'});
+						}, 500);
+					}
+				}
+				logoservice.Withdrawallist(this.queryPage).then(result => {
+					// console.log(result.data)
+					this.long = true
+					let queryList = result.data
+					// 下拉更新时,查询结果集
+					// 触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					// console.log(this.LoupanList)
+					// 分页对象处理
+					this.queryPage.count = result.count;
+					this.queryPage.per_page = result.per_page;
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					// uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+			// 返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			// 做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({title: '没有更多数据了!', icon: 'none'});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+		},
+		// 上拉加载
+		onReachBottom() {
+			console.log('上拉加载')
+			if (this.LoupanList.length < 12) {
+				return setTimeout(() => {
+					uni.showToast({title: '没有更多数据了!', icon: 'none'});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+		onLoad(options) {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({ m:'Init/init',code:res.code}).then(result => {
+						logoservice.setwixinInfo(result);
+						this.LoupanList = []
+						this.queryPage.page = 1;
+						this.queryPage.count = 0;
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+					}).catch(err => {
+						uni.navigateTo({url: 'login',});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			
+		}
+	};
+</script>
+
+<style lang="scss">
+	.uni-collapse-cell__title{
+		border: 0 !important;
+	}
+	.uni-collapse:after{
+		height: 0 !important;
+	}
+	.uni-collapse:before{
+		height: 0 !important;
+	}
+	.uni-collapse-cell:after{
+		height: 0 !important;
+	}
+	.uni-collapse-cell--open{
+		background: #fff !important;
+	}
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+	.eq_list{
+		width: 94%;
+		margin:20upx auto; 
+		border-radius:10upx;
+		background: #FFFFFF;
+		overflow: hidden;
+		.eq_list_div{
+			margin: 0 20upx;
+			padding: 20upx 10upx;
+			.eq_list_ul{
+				display: flex; 
+				align-items: center; 
+				line-height: 50upx; 
+				.eq_list_ul_left{
+					width: 50%; 
+				}
+				.eq_list_ul_right{
+					width: 50%; 
+					text-align: right;
+				}
+			}
+		}
+	}
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+</style>
diff --git a/pages/mine/PrintUseDetail.vue b/pages/mine/PrintUseDetail.vue
new file mode 100644
index 0000000..5f0d9de
--- /dev/null
+++ b/pages/mine/PrintUseDetail.vue
@@ -0,0 +1,462 @@
+<template>
+	<view style="width: 100%; height: 85%;">
+		<!--标准版开始 -->
+		<view v-if="print_type == 0 && long" class="printusedetail full-width full-height">
+			<view class="print-score bg-white-color full-width" style="position: relative;;margin-top: 10upx; height:230upx;">
+				<view class="print content-color ">
+					<view
+						style="position: absolute;top: 30upx;width: 180upx; height: 52upx; border-top-right-radius: 40upx; border-bottom-right-radius:40upx; background: #FFFFFF;text-align: center;padding-top: 8upx;">
+						<text style="color:#383838;font-size:40upx;font-weight: bold;">{{machineid}}</text>
+					</view>
+					<view
+						style="height: 70upx;position: absolute; left:20upx;top:140upx;width:100%;display:flex;flex-direction:row">
+						<text
+							style="color: #fff; font-size: 60upx;width:22%;;font-weight: 500; text-align: center; padding-left:10upx">{{list != null ? list.package_total.quota : 0}}</text>
+						<text
+							style="color: #fff; font-size: 60upx;width:45%;;font-weight: 500;text-align: center;padding-left:20upx;">{{list != null ? list.package_total.used_quota : 0}}</text>
+						<text v-if="getPrintSurplusCount(surplusCount) == 1 "
+							style="color: #43CF7C; font-size: 60upx;width:33%;;font-weight: 500;text-align:center;padding-right:30upx;">{{surplusCount}}</text>
+						<text v-if="getPrintSurplusCount(surplusCount) == 2 "
+							style="color: #FF8D1A; font-size: 60upx;width:33%;;font-weight: 500;text-align:center;padding-right:30upx;">{{surplusCount}}</text>
+						<text v-if="getPrintSurplusCount(surplusCount) == 3 "
+							style="color: #FB1B1B; font-size: 60upx;width:33%;;font-weight: 500;text-align:center;padding-right:30upx;">{{surplusCount}}</text>
+					</view>
+					<view style="position: absolute; left:20upx;top:220upx;width:100%;display:flex;flex-direction:row">
+						<text style="color:#fff; font-size:23upx;text-align:center;width:25%; padding-left:5upx;">可打印总量(次)</text>
+						<text
+							style="color:#fff; font-size:23upx;margin-left:30upx;text-align:center;width:40%;">已经使用(次)</text>
+						<text style="color: #fff; font-size:23upx;text-align:center;width:35%;padding-right:25upx;">剩余打印量(次)</text>
+					</view>
+				</view>
+			</view>
+
+			<view    class="print-score bg-white-color full-width"
+				style="position: relative;margin-top: -30upx;height: 180upx;background: #FFFFFF;box-shadow: 1upx 19upx 57upx 9upx rgba(197, 197, 197, 0.5);height: 130upx">
+				<view style="position: absolute; left: 20upx; top: 25upx;">
+					<text style="color: #fff; font-size:28upx;color: #383838;font-weight:bold;">标准版</text>
+				</view>
+				<view
+					style="position: absolute;left:180upx;top:25upx;background:#383838; width:180upx; height:38upx; border-radius: 30upx; text-align: center;padding-top: 3upx;"
+					@click="packageDetail()">
+					<text style="color: #fff; font-size: 24upx;color: #FFFFFF;padding-top:10upx;">套餐权益</text>
+					<label class="fa fa-angle-right align-right sub-color"
+						style="margin-left:8upx;font-size:25upx;color:#ffffff;"></label>
+				</view>
+				<view style="position: absolute; right: 20upx; top: 28upx;">
+					<text v-if="getPrintSurplusCount(packageSurplusCount) == 1 "
+						style="color: #43CF7C;font-size: 24upx;">剩余打印量:{{packageSurplusCount}}次</text>
+					<text v-if="getPrintSurplusCount(packageSurplusCount) == 2 "
+						style="color: #FF8D1A;font-size: 24upx;">剩余打印量:{{packageSurplusCount}}次</text>
+					<text v-if="getPrintSurplusCount(packageSurplusCount) == 3 "
+						style="color: #FB1B1B;font-size: 24upx;">剩余打印量:{{packageSurplusCount}}次</text>
+				</view>
+				<view class='topLittleBOX-2' style="margin-left: 20upx;margin-top:20upx;height:60upx;">
+					<view class='row-1' :style="{width: 250 +'px;max-width:90%'}"></view>
+				</view>
+				<view style="position:absolute; left:20upx; top:135upx">
+					<text
+						style=" font-size: 26upx;color: #333333;">已使用:{{list.default_package.used_quota}}次/可打印总量:{{list != null ? list.default_package.quota : 0}}次</text>
+				</view>
+				<view style="position:absolute;width:calc(100% - 40upx);height:2upx;background:#f6f6f6;top:80upx;margin-left: 20upx;margin-right:10upx;">
+				</view>
+				<view style="position:absolute; top:180upx; height:auto;width:100%;text-align:center;" v-if="list">
+					<text v-if="getDaysDifference(list.default_package.expire_time) > 100"
+						style=" font-size: 22upx;color:#43CF7C">有效期至{{list.default_package.create_date}}</text>
+					<text
+						v-if="getDaysDifference(list.default_package.expire_time) > 30 &&  getDaysDifference(list.default_package.expire_time) <=100"
+						style=" font-size: 22upx;color:#FF8D1A ">有效期至{{list.default_package.create_date}}</text>
+					<text v-if="getDaysDifference(list.default_package.expire_time) <= 30"
+						style=" font-size: 22upx;color:#FB1B1B ">有效期至{{list.default_package.create_date}}</text>
+				</view>
+			</view>
+
+
+			<view v-if="  printCardList.length != null && printCardList.length > 0  && list" class="print-score-buttom">
+				<view style="width:100%; height:40upx;display:flex;flex-direction:row;margin-top:20upx;">
+					<text
+						style="color:#fff;font-size:28upx;color:#2A82E4;font-weight:bold;width:30%;margin-left: 15upx;">打印卡</text>
+					<view style="width:70%;text-align:right;">
+						<text
+							v-if="getPrintSurplusCount(list.package_total.print_card_quota - list.package_total.print_card_used_quota) == 1 "
+							style="color: #43CF7C;font-size: 24upx; width:90%;margin-right: 15upx;">剩余打印量:{{list.package_total.print_card_quota - list.package_total.print_card_used_quota}}次</text>
+						<text
+							v-if="getPrintSurplusCount(list.package_total.print_card_quota - list.package_total.print_card_used_quota) == 2 "
+							style="color: #FF8D1A;font-size: 24upx; width:90%;margin-right: 15upx;">剩余打印量:{{list.package_total.print_card_quota - list.package_total.print_card_used_quota}}次</text>
+						<text
+							v-if="getPrintSurplusCount(list.package_total.print_card_quota - list.package_total.print_card_used_quota) == 3 "
+							style="color: #FB1B1B;font-size: 24upx; width:90%;margin-right: 15upx;">剩余打印量:{{list.package_total.print_card_quota - list.package_total.print_card_used_quota}}次</text>
+						<!-- <text
+							style="color:#fff;font-size: 22upx;color: #7EDEA5;width:90%;margin-right: 15upx;">余量:{{list.package_total.print_card_quota - list.package_total.print_card_used_quota}}次</text> -->
+					</view>
+				</view>
+				<view style="margin-top:25upx;height:35upx;margin-left: 15upx;">
+					<view class='row-2' :style="{width: 250 +'px;max-width:90%'}"></view>
+				</view>
+				<view style="margin-left:15upx;margin-top: 5upx;">
+					<text
+						style="font-size: 26upx;color: #333333;">已使用:{{list.package_total.print_card_used_quota}}次/可打印总量:{{list.package_total.print_card_quota}}次</text>
+				</view>
+				<view v-for="(item, index) in printCardList" :key="index">
+					<view
+						style="margin-left:20upx; margin-top:20upx;height: auto;display:flex;flex-direction:column;background: #FDF7E8;box-shadow: 1upx 19upx 57upx 9upx;border-radius: 5upx;width: 93%;padding-left: 20upx;">
+						<text
+							style=" font-size:26upx;color: #2A82E4;font-weight: bold ;margin-top: 10upx;">{{item.quota}}次打印卡</text>
+						<text
+							style="font-size: 22upx;color:#666666;margin-top: 5upx; margin-bottom: 10upx;">已使用:{{item.used_quota}}次,&#8194;&#8194;&#8194;剩余打印量:{{item.quota - item.used_quota}}次</text>
+					</view>
+				</view>
+			</view>
+
+			<view style="position:relative;margin-top:-30upx;
+			width:calc(100% - 70upx); 
+			height: 160upx; 
+			 border-radius: 20upx; margin-left: 35upx;margin-right: 35upx; 	background: #FFFFFF;
+			box-shadow: 1upx 19upx 57upx 9upx rgba(197, 197, 197, 0.5);text-align: center;line-height: 160upx;"
+					v-if="printCardList.length == 0  ||  printCardList.length == null">
+					<text style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx; color: #2A82E4; font-weight: 600">
+						未充值打印卡
+					</text>
+				</view> 
+		</view>
+		<!-- 标准版结束-->
+
+
+		<!-- 无限版开始-->
+		<view v-if="print_type == 1 && long" class="printusedetail full-width full-height">
+			<view class="print-score bg-white-color full-width"
+				style="position: relative;margin-top: 10upx;background: #FF8D1A; height:230upx;">
+				<view class="print content-color ">
+					<view
+						style="position: absolute;top: 30upx;width: 180upx; height: 52upx; border-top-right-radius: 40upx; border-bottom-right-radius:40upx; background: #FFFFFF;text-align: center;padding-top: 8upx;">
+						<text style="color:#383838;font-size:40upx;font-weight: bold;">{{machineid}}</text>
+					</view>
+					<view
+						style="height: 70upx;position: absolute; left:20upx;top:140upx;width:100%;display:flex;flex-direction:row">
+						<text
+							style="color: #fff; font-size: 40upx;width:33%;;font-weight: 400; text-align: center;padding-right: 20upx;">无限</text>
+						<text
+							style="color: #fff; font-size: 42upx;width:33%;;font-weight: 400;text-align: center;">{{list.package_total.used_quota}}</text>
+						<text
+							style="color: #FFFFFF; font-size: 40upx;width:33%;;font-weight: 400;text-align:center;padding-right:30upx;">无限</text>
+					</view>
+					<view style="position: absolute; left:20upx;top:200upx;width:100%;display:flex;flex-direction:row">
+						<text style="color:#fff; font-size:24upx;text-align:center;width:25%;padding-left: 30upx;">可印总量(次)</text>
+						<text
+							style="color:#fff; font-size:24upx;margin-left:30upx;text-align:center;width:40%;">已使用(次)</text>
+						<text style="color: #fff; font-size:24upx;text-align:center;width:35%;padding-right: 30upx;">剩余打印量(次)</text>
+					</view>
+				</view>
+			</view>
+
+			<view class="print-score bg-white-color full-width"
+				style="position: relative;margin-top: -30upx;height: 180upx;background: #FFFFFF;box-shadow: 1upx 19upx 57upx 9upx rgba(197, 197, 197, 0.5);height: 130upx">
+				<view style="position: absolute; left: 20upx; top: 25upx;">
+					<text style="color: #fff; font-size:28upx;color: #FF8D1A;;font-weight:bold;">无限版</text>
+				</view>
+				<view
+					style="position: absolute;left:180upx;top:28upx;background:#FF8D1A; width:180upx; height:38upx; border-radius: 30upx; text-align: center;padding-top: 3upx;"
+					@click="packageDetail()">
+					<text style="color: #fff; font-size: 24upx;color: #FFFFFF;padding-top:10upx;">套餐权益</text>
+					<label class="fa fa-angle-right align-right sub-color"
+						style="margin-left:8upx;font-size:25upx;color:#ffffff;"></label>
+				</view>
+				<view style="position:absolute;top:115upx; width:100%;height:80upx; text-align: center;">
+					<text style="color: #fff; font-size:30upx;color: #FF8D1A;font-weight:600;">不限制打印次数</text>
+				</view>
+				<view
+					style="position:absolute;width:calc(100% - 40upx);height:2upx;background:#f6f6f6;top:80upx;margin-left: 20upx;margin-right:10upx;">
+				</view>
+				<view style="position:absolute;top:165upx;width:100%;height:80upx;text-align: center;">
+					<text v-if="getDaysDifference(list.default_package.expire_time) > 100"
+						style=" font-size: 22upx;color:#43CF7C">有效期至{{list.default_package.create_date}}</text>
+					<text
+						v-if="getDaysDifference(list.default_package.expire_time) > 30 &&  getDaysDifference(list.default_package.expire_time) <=100"
+						style=" font-size: 22upx;color:#FF8D1A ">有效期至{{list.default_package.create_date}}</text>
+					<text v-if="getDaysDifference(list.default_package.expire_time) <= 30"
+						style=" font-size: 22upx;color:#FB1B1B ">有效期至{{list.default_package.create_date}}</text>
+				</view>
+			</view>
+		</view>
+		
+		<!-- <view v-if="long && print_type == 0"  style="width:100%; height: 80upx;" >
+		 <text style="float:right;color:#FFFFFF; font-size: 30upx;background:#2A82E4;
+		 border-top-left-radius:60upx;
+		 border-bottom-left-radius: 60upx;	
+		 width: 220upx;text-align: center;height:80upx;line-height:80upx;margin-right:-15upx;margin-top:20upx;"
+				@click="printCardRecharge()">充值打印卡</text>
+		</view> -->
+		
+	</view>
+</template>
+
+<script>
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	import logoservice from '@/service/logoservice.js';
+
+	export default {
+		components: {
+			uniPopup,
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				list: null,
+				submit: true,
+				money: "",
+				machineid: "",
+				print_type: 0, //默认0标准版 1无限版
+				surplusCount: 0, //剩余次数
+				packageSurplusCount: 0, //打印卡剩余次数
+				printCardList: [], //打印卡列表
+			}
+		},
+		methods: {
+
+			//获取剩余量次数相差
+			getPrintSurplusCount(count) {
+				try {
+					if (count >= 200) { //绿色
+						return 1;
+					} else if (count < 200 && count >= 50) { //橙色
+						return 2;
+					} else if (count < 50) { //红色
+						return 3;
+					}
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+
+			//获取相差天数
+			getDaysDifference(time) {
+				try {
+					let day = new Date(time.replace(/-/g, "/")).getTime() - new Date().getTime(); //日期转时间戳
+					let dayCount = Math.floor(day / 86400000); //时间戳获取天数
+					return dayCount;
+				} catch (e) {
+
+				}
+				return 0;
+			},
+
+
+			//格式化时间
+			dateFormat(time) {
+				try {
+					var dt = new Date(time.replace(/-/g, '/'));
+				    var y = dt.getFullYear();
+					var m = dt.getMonth() + 1;
+					var d = dt.getDate();
+					return y + '年' + m + '月' + d + '日';
+				} catch (e) {
+					// 错误处理代码片段
+				}
+				return time;
+			},
+			
+			
+			packageDetail() {
+				var time;
+				if (this.list != null && this.list.default_package != null) {
+					time = this.list.default_package.expire_date;
+				}
+				uni.navigateTo({
+					url: '../mine/PackageDetail?machineid=' + this.machineid + "&print_type=" + this.print_type +
+						"&time=" + time,
+				});
+			},
+			// printCardRecharge() {
+			// 	uni.navigateTo({
+			// 		url: '../mine/PrintCardRecharge?machineid=' + this.machineid + "&surplusCount=" + this
+			// 			.surplusCount,
+			// 	});
+			// },
+			// printCardRechargeList() {
+			// 	uni.navigateTo({
+			// 		url: '../mine/PrintCardRechargeList'
+			// 	});
+			// },
+
+			//获取初始化数据
+			getDataInfo() {
+				uni.showLoading({
+					title: '正在加载中...'
+				});
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.machineid
+				}).then(result => {
+					this.long = true
+					uni.hideLoading();
+
+					if (result[0] != undefined) {
+						this.list = result[0];
+						
+						if (this.list != null && this.list.package_total != null) {
+							var quota = this.list.package_total.quota;
+							var used_quota = this.list.package_total.used_quota;
+							this.surplusCount = quota - used_quota;
+						}
+
+						if (this.list != null && this.list.default_package != null) {
+							this.list.default_package.create_date = this.dateFormat(this.list.default_package.expire_date);
+							var quota = this.list.default_package.quota;
+							var used_quota = this.list.default_package.used_quota;
+							this.packageSurplusCount = quota - used_quota;
+						}
+
+						this.printCardList = this.list.print_package;
+
+						console.log("打印数量:"+this.printCardList.length );
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+		},
+
+		onShow() {
+
+		},
+		onLoad(options) {
+			this.machineid = options.machineid;
+			this.print_type = options.print_type;
+			var _seft = this
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.long = true;
+						/* uni.showLoading({
+							title: '正在加载中...'
+						}); */
+						_seft.getDataInfo();
+					}).catch(err => {
+
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 99%;
+		background: #FFFFFF;
+	}
+
+	.printusedetail {
+
+		.print-score-buttom {
+			width: 88%;
+			padding: 10upx;
+			padding-bottom: 30upx;
+			background: #FFFFFF;
+			border-radius: 20upx;
+			display: flex;
+			flex-direction: column;
+			font-size: 26upx;
+			color: #fff;
+			position: relative;
+			margin: 0 auto;
+			margin-top: -40upx;
+			box-shadow: 1upx 19upx 57upx 9upx rgba(197, 197, 197, 0.5);
+			.print {
+				width: 100%;
+				.text {
+					line-height: 50upx;
+					color: #fff;
+				}
+			}
+			.print-card-has-no-use-box {
+				padding-left: 20upx;
+				padding-top: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+			}
+			.row-1 {
+				height: 30upx;
+				background-color: #383838;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+			.row-2 {
+				height: 30upx;
+				background-color: #2A82E4;
+				border-radius: 20upx;
+				transition: width 1.5s linear;
+			}
+		}
+
+		.print-score {
+			padding: 50upx 0;
+			width: 90%;
+			height: 220upx;
+			margin: 57upx auto;
+			background: #383838;
+			border-radius: 20upx;
+			display: flex;
+			align-items: center;
+			font-size: 26upx;
+			color: #fff;
+
+			.print {
+				width: 100%;
+
+				.text {
+					line-height: 50upx;
+					color: #fff;
+				}
+			}
+
+			.print-card-has-no-use-box {
+				padding-left: 20upx;
+				padding-top: auto;
+				display: flex;
+				vertical-align: middle;
+				flex-direction: row;
+				align-items: center;
+				width: calc(100% - 120upx);
+			}
+
+			.row-1 {
+				height: 30upx;
+				background-color: #383838;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+
+			.row-2 {
+				height: 30upx;
+				background-color: #2A82E4;
+				border-radius: 20upx;
+				width: 0upx;
+				transition: width 1.5s linear;
+			}
+		}
+
+	}
+</style>
diff --git a/pages/mine/PrivacyPolicy.vue b/pages/mine/PrivacyPolicy.vue
new file mode 100644
index 0000000..46d605e
--- /dev/null
+++ b/pages/mine/PrivacyPolicy.vue
@@ -0,0 +1,147 @@
+<template>
+	<view class="full-width content-color full-height">
+		<view class="full-width">
+			<div>
+		
+				<div style="text-indent: 32upx;">
+					本应用非常重视用户隐私政策并严格遵守相关的法律规定。请您仔细阅读《隐私政策》后再继续使用。
+					如果您继续使用我们的服务,表示您已经充分阅读和理解我们协议的全部内容。
+				</div>
+				<div style="text-indent: 32upx; margin-top: 5upx;">
+					本小程序尊重并保护所有使用服务用户的个人隐私权。
+					为了给您提供更准确、更优质的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。
+					除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。
+					本应用会不时更新本隐私权政策。您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。
+				</div>
+				<div style="margin-top: 5upx;">
+					<div style="text-indent: 32upx; font-weight: 900;">1. 适用范围</div>
+					<div style="text-indent: 32upx;">
+						(a) 在您注册本应用小程序帐号时,您根据小程序要求提供的个人注册信息。
+					</div>
+					<div style="text-indent: 32upx;">
+						(b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,
+						包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据。
+					</div>
+					<div style="text-indent: 32upx;">
+						(c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。
+					</div>
+					<div style="text-indent: 32upx;">
+						(d) 本应用严禁用户发布不良信息,如裸露、色情和亵渎内容,发布的内容我们会进行审核,一经发现不良信息,会禁用该用户的所有权限,予以封号处理。
+					</div>
+				</div>
+				<div style="margin-top: 5upx;">
+					<div style="text-indent: 32upx; font-weight: 900;">2. 信息使用</div>
+					<div style="text-indent: 32upx;">
+						(a) 本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人登录信息。如果我们存储发生维修或升级,我们会事先发出推送消息来通知您,请您提前允许本应用消息通知。
+					</div>
+					<div style="text-indent: 32upx;">
+						(b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。
+					</div>
+					<div style="text-indent: 32upx;">
+						(c) 为服务用户的目的,本应用可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,
+						或者与本应用合作伙伴共享信息以便他们向您发送有关其产品和服务的信息。(后者需要您的事先同意)
+					</div>
+				</div>
+				<div style="margin-top: 5upx;">
+					<div style="text-indent: 32upx; font-weight: 900;">3. 信息披露</div>
+					<div style="text-indent: 32upx;">
+						在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:
+					</div>
+					<div style="text-indent: 32upx;">
+						(a) 未经您事先同意,我们不会向第三方披露。
+					</div>
+					<div style="text-indent: 32upx;">
+						(b) 为提供您所要求的产品和服务,而必须和第三方分享您的个人信息。
+					</div>
+					<div style="text-indent: 32upx;">
+						(c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露。
+					</div>
+					<div style="text-indent: 32upx;">
+						(d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露。
+					</div>
+					<div style="text-indent: 32upx;">
+						(e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷。
+					</div>
+				</div>
+				<div style="margin-top: 5upx;">
+					<div style="text-indent: 32upx; font-weight: 900;">4. 信息存储和交换</div>
+					<div style="text-indent: 32upx;">
+						本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。
+					</div>
+				</div>
+				<div style="margin-top: 5upx;">
+					<div style="text-indent: 32upx; font-weight: 900;">5. Cookie的使用</div>
+					<div style="text-indent: 32upx;">
+						(a) 在您未拒绝接受cookies的情况下,本应用会在您的计算机上设定或取用cookies,以便您能登录或使用依赖于cookies的本应用平台服务或功能。
+						本应用使用cookies可为您提供更加周到的个性化服务,包括推广服务。
+					</div>
+					<div style="text-indent: 32upx;">
+						(b) 您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式拒绝接受cookies。
+						但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的本应用网络服务或功能。
+					</div>
+					<div style="text-indent: 32upx;">
+						(c) 通过本应用所设cookies所取得的有关信息,将适用本政策。
+					</div>
+				</div>
+				<div style="margin-top: 5upx;">
+					<div style="text-indent: 32upx;">6.本隐私政策的更改</div>
+					<div style="text-indent: 32upx;">
+						(a)
+						如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。
+					</div>
+					<div style="text-indent: 32upx;">
+						(b) 本公司保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。
+					</div>
+				</div>
+				<div style="text-indent: 32upx; margin-top: 5upx;">
+					请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。
+				</div>
+				<div style="text-indent: 32upx; margin-top: 5upx;">
+					感谢您花时间了解我们的隐私政策!我们将尽全力保护您的个人信息和合法权益,再次感谢您的信任!
+				</div>
+			</div>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		components: {
+
+		},
+		computed: {},
+		data() {
+			return {
+
+			};
+		},
+		mounted() {
+
+		},
+		methods: {
+			onChange(e) {
+
+			},
+			onCancel(e) {
+
+			},
+			change() {
+
+			},
+		},
+		onLoad(options) {
+
+		},
+		onShow() {
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mine/RightsAndInterests.vue b/pages/mine/RightsAndInterests.vue
new file mode 100644
index 0000000..e21b7a5
--- /dev/null
+++ b/pages/mine/RightsAndInterests.vue
@@ -0,0 +1,274 @@
+<template>
+	<view style="width: 100%;  background: #F8F8F8;">
+		<view style="position: absolute; padding-left: 30upx; top: 20upx; display: flex;flex-direction: column;padding-right: 30upx; margin-bottom: 20upx;">
+			<text style="color: #333333; font-size: 32upx;font-weight:bold;"
+				hover-class="hover-class-text">云打印软件服务权益</text>
+			<text style="color: #333333; font-size: 26upx;margin-top: 10upx;"
+				hover-class="hover-class-text">瑞丰彩自助云打印服务,无需安装任何APP、无需人工设计,只需微信“扫一扫”,轻松上传相片、自动渲染、自助打印。</text>
+			<view style="width: 100%;height: auto; margin-top: 40upx;">
+				<!--动态数据-->
+				<view style=" background: #F8F8F8; overflow: hidden; position: relative; width: 100%; ">
+					<view style="border-radius:5upx 5upx 0px 0px; align-items: center; 
+				display: flex; text-align: center; color: #FFFFFF; font-size: 24upx; position: absolute; 
+				width:100%; height: 85upx;line-height: 85upx;">
+						<view style="width:33%;color:#383838;font-weight:bold;">对比项</view>
+						<view style="width:33.5%;background:#383838;height:100%;color: #FFFFFF;border-right:1upx solid #999999;">标准版</view>
+						<view style="width:33.5%;background:#E3801B;color: #FFFFFF;">无限版</view>
+					</view>
+					<scroll-view
+						style="margin-top: 86upx;margin-bottom: 0upx; padding-bottom: 5upx; border-bottom-right-radius: 5upx; border-bottom-left-radius: 5upx;  width: 100%; background: #F8F8F8;">
+						
+						<view v-for="(item, index) in openlist" :key="index"
+							style="display: flex; text-align: center; font-size: 24upx; border-top: 2upx solid #FFFFFF; height: 65upx;line-height: 65upx; text-align: center;">
+							<view style="width: 33%;border-right: 1upx solid #FFFFFF; ">  <!-- border-right: 1upx solid #EEEEEE;border-left: 1upx solid #EEEEEE; -->
+								{{item.name}}
+							</view>
+							<view style="width: 33%; border-right: 2upx solid #FFFFFF;height: 100%; ">
+								<image v-if="item.standard == 1" src="../../static/icon_rights_interests_complete.png"
+									style="width: 35upx;height: 35upx;margin-top: 15upx; "></image>
+								<image v-if="item.standard == 2" src="../../static/icon_rights_interests_cancel.png"
+									style="width: 28upx;height: 28upx;margin-top: 15upx;"></image>
+									<text style="width: 28upx;height: 28upx;font-size:24upx;" v-if="item.standard == 5">{{item.standardText}}</text>
+							</view>
+							<view style="width: 33%; height: 100%;">
+								<image v-if="item.upgrade == 1" src="../../static/icon_rights_interests_complete.png"
+									style="width: 35upx;height: 35upx;margin-top: 15upx;"></image>
+								<image v-if="item.upgrade == 2" src="../../static/icon_rights_interests_cancel.png"
+									style="width: 28upx;height: 28upx;margin-top: 15upx;"></image>
+									<text style="width: 28upx;height: 28upx;font-size:26upx;" v-if="item.upgrade == 5">{{item.infiniteText}}</text>
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+			</view>
+			
+			
+		</view>
+	</view>
+</template>
+
+<script>
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				openlist: [/*{
+						name: '设备服务费',
+						standard: 5,
+						upgrade: 5,
+						standardText: "¥12800",
+						infiniteText: "¥19800",
+					},
+					{
+						name: '软件服务费',
+						standard: 5,
+						upgrade: 5,
+						standardText: "¥1888",
+						infiniteText: "¥3888",
+					}, */
+					{
+						name: '适合客户',
+						standard: 5,
+						upgrade: 5,
+						standardText: "个人工作室",
+						infiniteText: "中小企业",
+					},
+					{
+						name: '支持区域',
+						standard: 5,
+						upgrade: 5,
+						standardText: "国内",
+						infiniteText: "全球",
+					},
+					{
+						name: '默认打印数',
+						standard: 5,
+						upgrade: 5,
+						standardText: "500",
+						infiniteText: "无限",
+					},
+					
+					{
+						name: '超量打印量',
+						standard: 5,
+						upgrade: 5,
+						standardText: "¥0.5/次",
+						infiniteText: "无限",
+					},
+					
+					{
+						name: '运营子账号',
+						standard: 5,
+						upgrade: 5,
+						standardText: "1-3",
+						infiniteText: "1-10",
+					},
+					{
+						name: '品牌授权',
+						standard: 1,
+						upgrade: 1,
+					},
+					{
+						name: '官方图库',
+						standard: 5,
+						upgrade: 5,
+						standardText: "部分图库",
+						infiniteText: "所有",
+					},
+					{
+						name: '专属图片',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '图库管理',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '广告管理',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '官方小程序',
+						standard: 1,
+						upgrade: 1,
+					},
+					{
+						name: '官方客户端',
+						standard: 1,
+						upgrade: 1,
+
+					},
+					{
+						name: '自定小程序',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: 'H5定制',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '自定义收款',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '独立pc运营平台',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '开放平台',
+						standard: 2,
+						upgrade: 2,
+					},
+					{
+						name: '培训服务',
+						standard: 1,
+						upgrade: 1,
+					},
+					{
+						name: '优先客户支持',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '官方微信群',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '24小时智能监控',
+						standard: 1,
+						upgrade: 1,
+					},
+					{
+						name: '专属数据分析服务',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '专属技术支持',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '系统升级',
+						standard: 1,
+						upgrade: 1,
+					},
+					{
+						name: '特别定制',
+						standard: 2,
+						upgrade: 1,
+					},
+					{
+						name: '上门服务',
+						standard: 1,
+						upgrade: 1,
+					},
+					{
+						name: '设备维护',
+						standard: 1,
+						upgrade: 1,
+					},
+
+					
+				],
+				long: false,
+				list: {
+					bank_name: null,
+					account_name: null,
+					account_sn: null
+				},
+				submit: true,
+				money: "",
+				print_type: 0, //默认0标准版 1无限版
+			}
+		},
+		methods: {
+
+		},
+		onShow() {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						uni.setStorageSync('openid', result.openid)
+						logoservice.setwixinInfo(result);
+						this.submit = true
+					}).catch(err => {
+
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onLoad(options) {
+			this.print_type = options.print_type;
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+</style>
diff --git a/pages/mine/Settle.vue b/pages/mine/Settle.vue
new file mode 100644
index 0000000..fab72c7
--- /dev/null
+++ b/pages/mine/Settle.vue
@@ -0,0 +1,373 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<view    style="position: fixed; width: 100%;">
+
+				<view
+					style="width:calc(100% - 40upx); background: #FFFFFF;height: 220upx; padding-top: 10upx;margin-left: 20upx; border-radius: 10upx;">
+					<view @click="togglePopup()" style="width: calc(100% - 40upx);border-radius:50upx; height: 80upx; border:2upx solid  #F1F1F1;
+						margin-left: 20upx; margin-right: 20upx;">
+						<text style="color: #333333;float: left;margin-top: 20upx;margin-left: 30upx;font-size: 27upx;">
+							{{queryPage.direction!=null ? queryPage.direction :"结算状态" }}
+						</text>
+						<span class="iconfont icon-xiala"
+							style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;float: right ;margin-top: 25upx;margin-right: 30upx;"></span>
+					</view>
+					<view style="width: calc(100% - 40upx); height: 90upx;margin-left: 20upx; 
+						   margin-right: 20upx; margin-top: 20upx;display: flex;
+						   flex-direction: row;  border:2upx solid  #F1F1F1;">
+						<view
+							style="margin: auto; display: flex;  flex-direction: row; justify-content: center; width: calc(100% -100upx);margin-top: 20upx;">
+							<text style="color: #333333;font-size: 27upx;" @click="selectStartTime()">
+								{{selectStartTimeText?selectStartTimeText:"开始时间"}}</text>
+							<text style="color: #333333;margin-left: 60upx;font-size: 27upx;"> ~ </text>
+							<text style="color: #333333;margin-left: 60upx;font-size: 27upx;" @click="selectEndTime()">
+								{{selectEndTimeText?selectEndTimeText:"结束时间"}} </text>
+						</view>
+					</view>
+				</view>
+			</view>
+			<!-- 动态数据 -->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width"  v-if="long"
+				style="padding-top: 252upx;">
+				<view v-for="(item, index) in LoupanList" :key="index" class="eq_list" @click="details(item)">
+					<view class="eq_list_div">
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">结算时间 {{item.create_time || ''}}</text>
+							<text class="eq_list_ul_right" style="margin-top: -5upx;">
+								<text v-if="item.settle_amount >= 0  "
+									style="color:#5CE6B6;font-size: 30upx;">+{{item.settle_amount || '0'}}</text>
+								<text v-if="item.settle_amount < 0 " style="color:#F67273;font-size: 30upx;">
+									{{item.settle_amount || '0'}}</text>
+							</text>
+						</view>
+						<view class="full-width eq_list_ul" style="color: #BCBEC1; font-size: 24upx;">
+							<text style="width: 60%;">结算周期:{{item.start_time}} - {{item.end_time}}</text>
+							<text style="width: 40%; text-align: right;color:#F67273;"
+								v-if="item.status.text == '未结算' || item.status.text == '待结算' ">{{item.status.text}}</text>
+							<text style="width: 40%; text-align: right;color:#5CE6B6;"
+								v-if="item.status.text == '已结算'   ">{{item.status.text}}</text>
+							<text style="width: 40%; text-align: right;color:#F0A900;"
+								v-if="item.status.text == '结算中' || item.status.text == '提现中'  ">{{item.status.text}}</text>
+						</view>
+					</view>
+				</view>
+				<!-- 暂无相关信息 -->
+				<view class="align-center content-color"
+					style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+					v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju"
+						style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">暂无相关信息</view>
+				</view>
+			</view>
+			<!-- 动态数据完 -->
+		</view>
+		<!-- 返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+
+		<mpvue-picker ref="mpvuePicker" :themeColor="'#53B2B0'" :pickerValueDefault="pickerValueDefault"
+			 @onCancel="onCancel" @onConfirm="onConfirm" :pickerValueArray="pickerValueArray">
+		</mpvue-picker>
+		<uni-popup ref="showshare" :type="type" @change="change">
+			<view class="uni-share" style="width: 100%; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						选择结算状态
+					</view>
+					<scroll-view scroll-y style="margin: auto; height: 500upx; overflow: hidden; overflow-y: scroll;">
+						<view style="width: calc(100% - 40upx); margin:20upx auto; overflow: hidden;">
+							<view v-for="(item, index) in directionlist" :key="index"
+								@click="selectMonthdirection(item)"
+								:class="queryPage.direction == item.val ? 'green':''"
+								style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item.text}}
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="uni-share-btn" @click="cancel('share')">取消</view>
+			</view>
+		</uni-popup>
+	</view>
+
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	import Enums from '@/util/Enums';
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePickernew.vue';
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+		},
+		computed: {},
+		data() {
+			return {
+				long: false,
+				LoupanList: [], //数据
+				queryPage: {
+					m: 'Settle/list',
+					partner_id: 14,
+				},
+				goodsItem: [],
+				pickerValueArray: [],
+				pickerValueDefault: [0, 1],
+				array: ['待结算', '已结算', '提现中', '全部'],
+				type: 'bottom',
+				directionlist: [{
+						text: '全部',
+						val: ""
+					}, 
+					{
+						text: '结算中',
+						val: '1'
+					},
+					{
+						text: '提现中',
+						val: '2'
+					},
+					{
+						text: '已结算',
+						val: '3'
+					}
+				],
+				selectStartTimeText: "", //开始时间
+				selectEndTimeText: "", //结束时间
+				selectTypeTime: 1, //1开始时间 2结束时间
+			};
+		},
+		mounted() {
+
+		},
+		methods: {
+
+			//开始时间
+			selectStartTime() {
+				this.selectTypeTime = 1;
+				this.$refs.mpvuePicker.show();
+			},
+
+			//结束时间
+			selectEndTime() {
+				this.selectTypeTime = 2;
+				this.$refs.mpvuePicker.show();
+			},
+
+			//日期确定
+			onConfirm(e) {
+				let date;
+				if (e.value.length == 1) {
+					date = e.value[0]
+				} else if (e.value.length == 2) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + e.value[1] //补齐
+					}
+					date = e.value[0] + '-' + myMonth
+				} else if (e.value.length == 3) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth //补齐
+					}
+					let mydate = e.value[2]
+					if (mydate < 10) {
+						mydate = '0' + e.value[2] //补齐
+					}
+					date = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				if (this.selectTypeTime == 1) {
+					this.selectStartTimeText = date;
+					this.queryPage.start_time = this.selectStartTimeText
+					if (this.queryPage.end_time != null && this.queryPage.end_time != "") {
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+					}
+				} else {
+					this.selectEndTimeText = date;
+					this.queryPage.end_time = this.selectEndTimeText
+					if (this.queryPage.start_time != null && this.queryPage.start_time != "") {
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+					}
+				}
+			},
+
+			details(item) {
+				uni.navigateTo({
+					url: '/pages/mine/SettleDetail?id=' + item.settle_id,
+				});
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+			
+			change(){
+				
+			},
+
+			//加载数据
+			loadGoodsList(direction) {
+				logoservice.MoneystatementList(this.queryPage).then(result => {
+					this.long = true
+					this.LoupanList = result
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg ? err.msg : err.data,
+						icon: 'none'
+					});
+				});
+			},
+
+			
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['show' + 'share'].open()
+				})
+			},
+
+			selectMonthdirection(item) {
+				this.queryPage.status = item.val;
+				this.attr = item.text;
+				this.queryPage.direction = this.attr;
+
+				console.log(item.val);
+
+				this.$refs['show' + 'share'].close();
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+		},
+
+		// partner_id
+		onLoad(options) {
+			this.pickerValueArray = ['month', 'day']
+			this.queryPage.partner_id = uni.getStorageSync('partner_id');
+			this.loadGoodsList();
+		},
+
+		onShow() {
+
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.butn {
+		font-size: 30upx;
+		font-weight: 400;
+		height: 100upx;
+		line-height: 100upx;
+		text-align: center;
+		width: 100%;
+	}
+
+	/* 底部分享 */
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 26upx;
+		text-align: center;
+		background: #FFFFFF;
+	}
+
+	.eq_list {
+		width: 100%;
+		padding: 0upx 20upx;
+		background: #FFFFFF;
+
+		.eq_list_div {
+			border-top: 1upx solid #F5F5F5;
+			padding: 25upx 0;
+
+			.eq_list_ul {
+				display: flex;
+				align-items: center;
+				line-height: 30upx;
+				margin-top: 20upx;
+
+				.eq_list_ul_left {
+					width: 420upx;
+					font-size: 26upx;
+				}
+
+				.eq_list_ul_right {
+					width: calc(100% - 300upx);
+					text-align: right;
+					font-weight: 400;
+					margin-top: 20upx;
+				}
+			}
+		}
+
+	}
+
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90rpx;
+		line-height: 90rpx;
+		font-size: 14px;
+		text-align: center;
+		color: #666;
+		background: #FFFFFF;
+		border-top: 1px solid #EEEEEE;
+		// margin: 20upx 0;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mine/SettleDetail.vue b/pages/mine/SettleDetail.vue
new file mode 100644
index 0000000..55db861
--- /dev/null
+++ b/pages/mine/SettleDetail.vue
@@ -0,0 +1,345 @@
+<template>
+	<view class="full-width  full-height" style="position: relative; background: #fff;">
+		<view class="full-width" v-if="partnerSettle">
+			<view style=" width: 100%; height: 40upx; background: #fff;"></view>
+			<view style=" width: 100%; text-align: center; margin-bottom: 80upx; ">
+				<text style="font-size: 40upx; color: #F67273;  "v-if="partnerSettle.status.text == '待结算' || partnerSettle.status.text == '未结算' ">{{partnerSettle?partnerSettle.status.text:""}}</text>
+				<text style="font-size: 40upx; color: #F0A900; " v-if="partnerSettle.status.text == '结算中' || partnerSettle.status.text == '提现中' "  >{{partnerSettle?partnerSettle.status.text:""}}</text>
+				<text style="font-size: 40upx; color: #5CE6B6; " v-if="partnerSettle.status.text == '已结算'">{{partnerSettle?partnerSettle.status.text:""}}</text>
+			</view>
+
+			<view style=" width: 100%;display: flex;flex-direction: row; margin-left: 50upx; margin-top: 10upx; ">
+				<text style="font-size: 26upx; color: #333; ">结算周期: {{partnerSettle?partnerSettle.start_time:""}} - {{partnerSettle?partnerSettle.end_time:""}}</text>
+			</view>
+
+			<view style=" width: 100%;display: flex;flex-direction: row; margin-left: 50upx; margin-top: 10upx; ">
+				<text style="font-size: 26upx; color: #333; ">订单总数:{{partnerSettle?partnerSettle.order_count:""}}单</text>
+			</view>
+
+			<!-- <p class="content vT hL">订单金额:¥1.01</p> -->
+			<view style=" width: 100%;display: flex;flex-direction: row; margin-left: 50upx; margin-top: 10upx; ">
+				<text style="font-size: 26upx; color: #333; ">订单金额:¥{{partnerSettle?partnerSettle.order_amount:""}}</text>
+			</view>
+			
+			<view style=" width: 100%;display: flex;flex-direction: row; margin-left: 50upx; margin-top: 10upx; ">
+				<text style="font-size: 26upx; color: #333; ">结算比率:{{partnerSettle?partnerSettle.settle_rate * 100 :""}}%</text>
+			</view>
+			
+			<view style=" width: 100%;display: flex;flex-direction: row; margin-left: 50upx; margin-top: 10upx; ">
+				<text style="font-size: 26upx; color: #333; ">结算金额:¥{{partnerSettle?(partnerSettle.settle_amount * partnerSettle.settle_rate).toFixed(2) :""}}</text>
+			</view>
+
+			<!-- <p class="content vT hL">手续费率:0.6%</p> -->
+			<view style=" width: 100%;display: flex;flex-direction: row; margin-left: 50upx; margin-top: 40upx; ">
+				<text style="font-size: 26upx; color: #333; ">手续费率:{{partnerSettle?(partnerSettle.withdrawal_rate * 100):""}} %</text>
+			</view>
+
+			<view style=" width: 100%;display: flex;flex-direction: row; margin-left: 50upx; margin-top: 10upx; ">
+				<text
+					style="font-size: 26upx; color: #333; ">手续费:{{partnerSettle?(partnerSettle.withdrawal_rate * partnerSettle.settle_amount * partnerSettle.settle_rate).toFixed(2):""}}
+				</text>
+			</view>
+
+			<view style=" width: 100%;display: flex;flex-direction: row; margin-left: 50upx; margin-top: 20upx; ">
+				<text
+					 style="font-size: 26upx; color: red ">可提金额:¥{{partnerSettle?(partnerSettle.settle_amount * partnerSettle.settle_rate - (partnerSettle.withdrawal_rate * partnerSettle.settle_amount * partnerSettle.settle_rate).toFixed(2)).toFixed(2):"" }}</text>
+			</view>
+
+			<!--动态数据-->
+			<view style="width: 100%; margin-top: 40upx;">
+				<view
+					style=" background: #F8F8F8; overflow: hidden; position: relative; width:calc(100% - 20upx);margin-left: 10upx;   ">
+					<view style="border-radius:5upx 5upx 0px 0px; align-items: center; 
+				display: flex; 
+				text-align: center; 
+				color: #FFFFFF; 
+				font-size: 24upx; 
+				width:100%; 
+				height: 90upx;
+				line-height: 90upx;">
+						<view style="width:18%;color:#383838;font-weight:bold;border-right: 1upx solid #FFFFFF;">类型</view>
+						<view style="width:40%;color:#383838;font-weight:bold;border-right: 1upx solid #FFFFFF;">订单</view>
+						<view style="width:22%;color:#383838;font-weight:bold;border-right: 1upx solid #FFFFFF;">商品</view>
+						<view style="width:20%;color:#383838;font-weight:bold">状态</view>
+					</view>
+
+					<scroll-view style="
+						 border-bottom-right-radius: 5upx;
+						 border-bottom-left-radius: 5upx;  
+						 background: #F8F8F8;align-items: center;">
+
+						<view v-for="(item, index) in LoupanList" :key="index" style="display: flex;  
+						     font-size: 20upx; 
+						     border-top: 1upx solid #FFF;
+							 height: 110upx;
+							 line-height: 110upx; flex-direction: column; ">
+
+							<view style="height: 90upx;line-height: 90upx; flex-direction: row; text-align: center; display: flex;
+							  width: 100%; ">
+								<view style="width: 18%;border-right: 1upx solid #FFFFFF; margin-top: 20upx; ">
+									<text style="font-size: 20upx; color: #F67273; "v-if="item.direction == 'income'">收入</text>
+									<text style="font-size: 20upx; color: #5CE6B6; " v-if="item.direction == 'expense'">支出</text>	
+								</view>
+								<view style="width: 40%;border-right: 1upx solid #FFFFFF;text-overflow:ellipsis;overflow:hidden;">
+								  {{item.order_id}}
+								</view>
+								<view style="width: 22%;border-right: 1upx solid #FFFFFF;margin-top: 12upx; ">
+									{{item.goods_name}}
+								</view>
+								<view  style="width: 20%;border-right: 1upx solid #FFFFFF;margin-top: 5upx; ">
+									<text v-if="item.direction == 'income'"
+										style="color:#5CE6B6;font-size: 26upx;">+{{item.settle_amount > 0 ? item.settle_amount : -item.settle_amount}}</text>
+									<text v-if="item.direction == 'expense'" style="color:#F67273;font-size: 26upx;">
+										{{item.settle_amount < 0 ? item.settle_amount : -item.settle_amount}}</text>
+								</view>
+							</view>
+							
+							<view style="height: 21upx;line-height: 21upx; flex-direction: row; text-align: center; display: flex;
+							  width: 100%; margin-top: -20upx;">
+								<view style="width: 18%;border-right: 1upx solid #FFFFFF; height: 80upx;"></view>
+								<view style="width: 40%;border-right: 1upx solid #FFFFFF;height: 80upx;">{{item.create_time}}</view>
+								<view style="width: 22%;border-right: 1upx solid #FFFFFF;height: 80upx;"></view>
+								<view style="width: 20%;border-right: 1upx solid #FFFFFF;height: 80upx; ">
+									<text style="font-size: 20upx; color: #F67273;  "v-if="item.status.text == '待结算' || item.status.text == '未结算' ">{{item?item.status.text:""}}</text>
+									<text style="font-size: 20upx; color: #5CE6B6; " v-if="item.status.text == '已结算'">{{item?item.status.text:""}}</text>
+								</view>
+						   </view>
+						</view>
+					</scroll-view>
+				 </view>
+					  <view style="height: 120upx; width: 100%; background: #FFF;"> </view>
+			</view>
+		</view>
+
+		<view  v-if="partnerSettle != null && (partnerSettle.status.text == '待结算' || partnerSettle.status.text == '未结算' ||  partnerSettle.status.text == '结算中'  )"
+			@click="toMoney()" style="width: 130upx; height: 60upx; background: green; position: fixed; bottom: 70upx; right: 40upx; color: #fff; font-size: 30upx;
+		  line-height: 60upx; text-align: center;z-index: 9999999;">提现 </view>
+
+	</view>
+
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	import Enums from '@/util/Enums';
+	// 自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePickernew.vue';
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker,
+		},
+		computed: {},
+		data() {
+			return {
+				long: false,
+				LoupanList: [], //数据
+				queryPage: {
+					m: 'Settle/Detail',
+					id: null,
+				},
+				goodsItem: [],
+				pickerValueArray: [],
+				pickerValueDefault: [0, 1],
+				type: 'bottom',
+				selectStartTimeText: "", //开始时间
+				selectEndTimeText: "", //结束时间
+				partnerSettle: null, //结算明细
+			};
+		},
+		mounted() {
+
+		},
+		methods: {
+
+			//提现
+			toMoney() {
+				let money = (this.partnerSettle.settle_amount * this.partnerSettle.settle_rate - (this.partnerSettle.withdrawal_rate * this.partnerSettle.settle_amount * this.partnerSettle.settle_rate).toFixed(2)).toFixed(2);
+				//(this.partnerSettle.settle_amount - (this.partnerSettle.withdrawal_rate * this.partnerSettle.settle_amount * this.partnerSettle.settle_rate).toFixed(2)).toFixed(2)
+				//(this.partnerSettle.settle_amount - (this.partnerSettle.withdrawal_rate * this.partnerSettle.settle_amount).toFixed(2)).toFixed(2);
+				uni.navigateTo({
+					url: '../mine/money?money=' + money + "&id=" + this.queryPage.id
+				});
+			},
+
+			onChange(e) {
+
+			},
+
+			onCancel(e) {
+
+			},
+
+			loadGoodsList(direction) {
+				logoservice.MoneystatementList(this.queryPage).then(result => {
+					this.long = true
+					this.LoupanList = result.list
+					this.partnerSettle = result.partnerSettle
+
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg ? err.msg : err.data,
+						icon: 'none'
+					});
+				});
+			},
+
+			cancel(type) {
+
+			},
+
+			change(e) {
+
+			},
+
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['show' + 'share'].open()
+				})
+			},
+
+			selectMonthdirection(item) {
+				this.queryPage.direction = item.val;
+				this.directiontext = item.text;
+				this.$refs['show' + 'share'].close();
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Money/getGoodsAttrList'
+				}).then(result => {
+					this.goodsItem = result;
+					this.goodsItem.unshift(null)
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到交易类型选择',
+						icon: 'none'
+					});
+				});
+			}
+		},
+
+		onLoad(options) {
+			if (options.id) {
+				this.queryPage.id = options.id;
+			}
+			this.loadGoodsList();
+		},
+
+		onShow() {
+
+		}
+
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.butn {
+		font-size: 30upx;
+		font-weight: 400;
+		height: 100upx;
+		line-height: 100upx;
+		text-align: center;
+		width: 100%;
+	}
+
+	/* 底部分享 */
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 26upx;
+		text-align: center;
+		background: #FFFFFF;
+	}
+
+	.eq_list {
+		width: 100%;
+		padding: 0upx 20upx;
+		background: #FFFFFF;
+
+		.eq_list_div {
+			border-top: 1upx solid #F5F5F5;
+			padding: 25upx 0;
+
+			.eq_list_ul {
+				display: flex;
+				align-items: center;
+				line-height: 30upx;
+
+				.eq_list_ul_left {
+					width: 300upx;
+				}
+
+				.eq_list_ul_right {
+					width: calc(100% - 300upx);
+					text-align: right;
+					font-weight: 400;
+					margin-top: 30upx;
+				}
+			}
+		}
+
+	}
+
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90rpx;
+		line-height: 90rpx;
+		font-size: 14px;
+		text-align: center;
+		color: #666;
+		background: #FFFFFF;
+		border-top: 1px solid #EEEEEE;
+		// margin: 20upx 0;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mine/UserAgreement.vue b/pages/mine/UserAgreement.vue
new file mode 100644
index 0000000..1b97f7a
--- /dev/null
+++ b/pages/mine/UserAgreement.vue
@@ -0,0 +1,290 @@
+<template>
+	<view class="full-width content-color full-height" >
+		<view class="full-width">      
+               <div>
+    
+                    <div>
+                      <div style="text-indent: 32upx; font-weight: 900;">一、总则</div>
+                      <div style="text-indent: 32upx;">
+                        1、用户在注册及使用前请认真阅读本协议,确保充分理解本协议中所有条款。除非您接受本协议所有条款,否则您无权注册、登录或使用本协议所涉服务。您的注册、登录、使用等行为将视为无条件接受本协议所有条款的约束。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、除非另有明确规定,本产品所推出的新功能、新服务,均无条件的使用本协议。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        3、我公司保留在任何时候修改本协议条款的权利,且无需另行通知。在我公司修改协议条款后,如果您不接受修改后的条款,请立即停止使用本产品提供的服务,继续使用本产品提供的服务将被视为接受修改后的协议。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">二、用户注册</div>
+                      <div style="text-indent: 32upx;">
+                        1、用户应当同意本协议的全部条款并按照页面提示完成全部注册程序(未成年人应与法定监护人共同完成)。用户在注册过程中点击“下一步”按钮即表示完全接受本协议全部条款。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、用户在使用本服务前需要注册一个本产品账号。本产品账号应当使用手机号码绑定注册,请用户使用尚未与本产品账号绑定且未被本产品根据本协议封禁的手机号码注册账号。本产品可以根据用户需求或产品需求对账号注册和绑定的方式进行更改,而无须事先通知用户。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        3、用户在使用本产品服务过程中应保证各项服务业务所需信息的真实性,如果因信息不真实而引起的问题,以及问题发生所带来的后果,本公司不负任何责任。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        4、在用户注册及使用本产品时,要搜集能识别用户身份的个人信息以便系统可以在必要时联系用户,或为用户提供更好的使用体验。系统搜集的信息包括但不限于用户的性别、年龄、出生日期、所在城市;系统同意对这些信息的使用将受限于用户个人隐私信息保护的约束。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">三、服务内容</div>
+                      <div style="text-indent: 32upx;">
+                        1、本服务的具体内容由本产品根据实际情况提供,包括但不限于用户使用本产品等。本产品可以对提供的服务予以变更,且本产品提供的服务内容可能随时变更,用户将会收到关于服务变更的通知。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、除非本协议另有其他明示规定,本公司所推出的新产品、新功能、新服务,均受到本协议条款之规范。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">四、服务变更、中断或终止</div>
+                      <div style="text-indent: 32upx;">
+                        1、鉴于网络服务的特殊性(包括但不限于服务器的稳定性问题、恶意的网络攻击等行为的存在及其他无法控制的情形),用户同意我公司有权随时中断或终止部分或全部的服务。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、我公司需要定期或不定期地对提供服务的系统或相关设备进行检修或维护,如因此类情况而造成服务在合理时间内的中断,我公司无需为此承担任何责任。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        3、如发生下列任何一种情形,我公司有权随时变更、中断或终止向用户提供本协议项下的服务而无需对用户或任何第三方承担任何责任:
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (1)根据法律规定用户应提交真实信息,而用户提供的个人资料不真实、或与注册时信息不一致又未能提供合理证明;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (2)用户违反相关法律法规或本协议的约定;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (3)按照法律规定或有权机关的要求;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (4)出于安全的原因或其他必要的情形。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">五、用户个人隐私信息保护</div>
+                      <div style="text-indent: 32upx;">
+                        1、依据法律的规定,我们将在特定情形下收集、使用和披露您的个人信息。以下条款描述了我们如何收集、使用和披露您的个人信息。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、信息收集
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (1)用户提供
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        我们会对您直接提供的信息进行保存。比如:我们会记录您的注册信息、寻求客服或者其他和我们沟通的记录。记录信息的种类包括:头像、昵称、性别、出生日期、所在地区以及其他您选择提供的信息。我们收集、使用和披露个人信息是为了通过创建账户、识别用户、回应查询和邮件等方式来为您提供服务。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (2)自动收集
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        当你接触或者使用我们的服务时,我们将自动收集您的信息包括:
+                        Log信息(我们记录所有您使用服务时的log信息,包括浏览器信息、使用时间、浏览的网页、IP地址及来源)。我们使用多种技术记录信息,包括但不限于:向您的移动设备种Cookies。Cookies是一些存在您的硬件上的小数据包,用以帮助我们提高服务的质量及您的使用体验,了解在哪些区域和功能上受欢迎,以及统计流量等。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        3、信息使用
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (1)除本隐私政策未载明或本隐私政策的更新未能首先通知您的情况下,您的个人信息将不会用于其他目的。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (2)匿名汇总统计数据不是我公司所定义的个人用户信息,我们将为多种目的,包括但不限于分析和使用模式的报告等,来保存和使用此类信息。我公司保留以任何目的或单方面许可第三方使用和披露匿名汇总统计数据的权利。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (3)您在本产品中上传的信息,有可能会损坏您或他人的合法权益,您必须充分意识此类风险的存在。您明确同意,自行承担因上传信息所存在的一切风险及后果,我公司无需承担任何责任。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        4、法定披露
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        虽然我们会尽最大努力保护用户隐私,但当我们有理由相信只有公开个人信息才能遵循现行司法程序、 法院指令或其他法律程序或者保护我公司、我公司用户或第三方的权利、财产或安全时,我们可能披露个人信息。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        5、信息安全
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        我们会采取合理的实际及电子手段以及规程保障措施来保护您的个人信息。 虽然通过因特网信息传输数据并非100% 安全,但我们已经采取并将继续采取商业范畴内合理的努力来确保您的个人信息得到保护。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        6、未成年人隐私保护
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        我公司重视对未成年人个人隐私信息的保护。我公司将依赖用户提供的个人信息判断用户是否为未成年人。任何18岁以下的未成年人注册账号或使用本服务应事先取得家长或其法定监护人(以下简称“监护人”)的书面同意。除根据法律法规的规定及有权机关的指示披露外,我公司不会使用向任何第三方透露未成年人的个人隐私信息。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">六、内容规范</div>
+                      <div style="text-indent: 32upx;">
+                        1、本项规范所述内容是指用户使用本服务过程中所制作、上载、复制、发布、传播的任何内容,包括但不限于账号头像、名称、个性签名等注册信息及认证资料,或文字、语音、图片、图文等发送、回复消息和相关链接页面,以及其他使用本产品账号或本服务所产生的内容。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、用户承诺使用本产品的服务时必须符合中华人民共和国有关法律法规,不得利用本产品的服务制作、上载、复制、发布、传播以下内容:
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (1)反对宪法所确定的基本原则的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (3)损害国家荣誉和利益的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (4)煽动民族仇恨、民族歧视,破坏民族团结的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (5)破坏国家宗教政策,宣扬邪教和封建迷信的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (6)散布谣言,扰乱社会秩序,破坏社会稳定的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (7)散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (8)侮辱或者诽谤他人,侵害他人合法权益的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (9)含有法律、行政法规禁止的其他内容的。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        3、用户不得利用本产品账号或本服务制作、上载、复制、发布、传播下干扰本产品正常运营,以及侵犯其他用户或第三方合作权益的内容:
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (1)含有任何性暗示的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (2)含有辱骂、恐吓、威胁内容的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (3)含有骚扰、垃圾广告、恶意信息、诱骗信息的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (4)涉及他人隐私、个人信息或资料的;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (5)含有其他干扰本服务正常运营和侵犯其他用户或第三方合法权益的。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">七、使用规则</div>
+                      <div style="text-indent: 32upx;">
+                        1、用户在本服务中或通过本服务所传送、发布的任何内容并不反映或代表,也不得被视为反映或代表我公司的观点、立场或政策,我公司对此不承担任何责任。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、用户在使用本产品时,必须遵守中华人民共和国相关法律法规的规定,同意将不会利用本产品进行任何违法或不正当的活动,包括但不限于下列行为:
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (1)干扰或破坏有关服务,或与有关服务连接的任何服务器或网络,或与有关服务相关的任何政策、要求或规定;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (2)采集并存储涉及任何其他用户的个人信息,以用于任何被禁止的活动;
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        (3)故意或非故意违反任何相关的中国法律、法规、规章、条例等其他具有法律效力的规范。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        3、用户须对利用本产品账号或本服务传送信息的真实性、合法性、无害性、准确性、有效性等全权负责,与用户所传播信息相关的任何法律责任由用户自行承担,与我公司无关。如因此给我公司或第三方造成损害的,用户应当依法予以赔偿。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        4、本产品提供的服务中可能包括广告,用户同意在使用过程中显示本产品和第三方供应商、合作伙伴提供的广告。除法律法规明确规定外,用户应自行对该广告信息进行的交易负责,对用户因该广告信息进行的交易或前述广告商提供的内容或遭受的损失或损害,我公司不承担任何责任。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        5、用户为使用本产品,须自行配备进入国际互联网所必需的设备,包括电脑、手机及其他与接入国际互联网有关的装置,并自行支付与此服务有关的费用。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">八、免责声明</div>
+                      <div style="text-indent: 32upx;">
+                        1、对于经由本产品服务而传送的内容,我公司不保证前述内容的正确性、完整性或品质。用户在接受有关服务时,有可能会接触到令人不快、不适当或令人厌恶的内容。在任何情况下,我公司均不对任何内容负责,包括但不限于任何内容发生任何错误或纰漏以及衍生的任何损失或损害。用户使用上述内容,应自行承担风险。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、用户明确同意其使用本产品所存在的风险及其后果将完全由其自己承担,我公司对用户不承担任何责任。如因用户违反有关法律、法规或本协议项下的任何条款而给任何其他第三人造成损失,用户同意承担由此造成的损害赔偿责任。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        3、我公司尊重并保护用户的个人隐私权。但因恶意的网络攻击等行为及其他无法控制的情形,导致用户隐私信息泄露的,用户同意我公司不承担任何责任。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        4、对于因电信系统或互联网网络故障、计算机故障、计算机系统问题或其它任何不可抗力原因而产生损失,我公司不承担任何责任,但将尽力减少因此给用户造成的损失和影响。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">九、知识产权声明</div>
+                      <div style="text-indent: 32upx;">
+                        1、本产品服务中包含的任何文字、图表、音频、视频和软件(包括但不限于软件中包含的图表、动画、音频、视频、界面实际、数据和程序、代码、文档)等信息或材料均受著作权法、商标法和其它法律法规保护,未经相关权利人书面同意,用户不得以任何方式使用该信息或材料。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、本协议未授予用户使用本产品任何商标、服务标记、标识、域名和其他显著品牌特征的权利,任何人不得擅自(包括但不限于:以非法的方式复制、传播、展示、镜像、上载、下载)使用,否则我公司将依法追究法律责任。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        3、除本协议明确允许以外,用户不得以任何形式或任何方式对本产品部分或全部内容进行修改、出租、租赁、出借、出售、分发、复制、创作衍生品或用于任何商业用途。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">十、法律适用</div>
+                      <div style="text-indent: 32upx;">
+                        1、本协议的订立、执行和解释及争议的解决均应适用中国法律并受中国法院管辖。如服务条款任何一部分与中华人民共和国法律相抵触,则该部分条款应按法律规定重新解释,部分条款无效或重新解释不影响其余条款法律效力。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、用户和我公司一致同意本协议。在执行本协议过程中如发生纠纷,双方应友好协商解决;协商不成时,任何一方可直接向所在地的人民法院提起诉讼。
+                      </div>
+                    </div>
+                    <div style="margin-top: 5upx;">
+                      <div style="text-indent: 32upx; font-weight: 900;">十一、其他规定</div>
+                      <div style="text-indent: 32upx;">
+                        1、本协议中的标题仅为方便而设,在解释本协议时应被忽略。
+                      </div>
+                      <div style="text-indent: 32upx;">
+                        2、本协议及其修改权、最终解释权归我公司所有。
+                      </div>
+                    </div>
+               </div>
+		</view>
+	</view>
+</template>
+
+<script>
+
+	export default {
+		components: {
+			
+		},
+		computed: {},
+		data() {
+			return {
+				
+			};
+		},
+		mounted() {
+
+		},
+		methods: {
+			onChange(e) {
+
+			},
+			onCancel(e) {
+
+			},
+			change(){
+				
+			},
+		},
+		onLoad(options) {
+		
+		},
+		onShow() {
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mine/Withdrawal-details.vue b/pages/mine/Withdrawal-details.vue
new file mode 100644
index 0000000..d12df37
--- /dev/null
+++ b/pages/mine/Withdrawal-details.vue
@@ -0,0 +1,171 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<view class="full-width" v-if="long" style="margin:auto 100upx;">
+				<view style="text-align: center; font-weight: bold; padding: 100upx 0; margin-left: -150upx;">
+					<view style="font-size:80upx;font-weight:bold;">{{LoupanList.withdrawal_amount || ''}}</view>
+					<view style="font-size:26upx;font-weight:400;">提现金额(¥)</view>
+				</view>
+				<view style="display: flex; justify-content: center;">
+					<view style="width: 100upx;">
+						<view style="width: 100upx;">
+							<view style="width:32upx; height:32upx; margin: auto; background:#5CE6B5; border-radius:50%;"></view>
+						</view>
+						<view style="width:1px; height:80upx; margin: auto; background:#5CE6B5;"></view>
+						<view v-if="LoupanList.processing_status.value != 1"
+						style="width:32upx; height:32upx; margin: auto; background:#B2B2B2; border-radius:50%;"></view> 
+						<view v-if="LoupanList.processing_status.value == 1" style="width:32upx; height:32upx; margin: auto;">
+							<span class="iconfont icon-duihao2" style="color: #5CE6B5; font-size: 32upx;"></span>
+						</view>
+					</view>
+					<view style="width: calc(100% - 100upx);">
+						<view>
+							<span>发起提现</span>
+							<span style="color: #B2B2B2; padding-left: 20upx;">{{LoupanList.create_time || ''}}</span>
+						</view>
+						<view style="margin-top: 70upx;">
+							<span v-if="LoupanList.processing_status.value == 0" style="color:#B2B2B2;">提现到帐</span>
+							<span v-if="LoupanList.processing_status.value == 1" style="color:#5CE6B5;">提现到帐</span>
+							<span v-if="LoupanList.processing_status.value == 2" style="color:#B2B2B2;">拒绝提现</span>
+							<span style="color: #B2B2B2; padding-left: 20upx;">{{LoupanList.processing_time || ''}}</span>
+						</view>
+					</view>
+				</view>
+				<view style="padding-top: 20upx;">
+					<view class="eq_list">
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">到账金额:</text>
+							<text class="eq_list_ul_right">¥{{LoupanList.amounts_payable || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">服务费:</text>
+							<text class="eq_list_ul_right">¥{{LoupanList.handling_fee || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">银行:</text>
+							<text class="eq_list_ul_right">{{LoupanList.bank_info || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">持卡人:</text>
+							<text class="eq_list_ul_right">{{LoupanList.payee_name || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">卡号:</text>
+							<text class="eq_list_ul_right">{{LoupanList.payee_account_num.replace(/\s/g, '').replace(/[^\d]/g, '').replace(/(\d{4})(?=\d)/g, '$1 ') || ''}}</text>
+						</view>
+						<view style="width: 100%; height: 1upx; background: #F5F5F5; margin: 10upx 0;"></view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">申请时间:</text>
+							<text class="eq_list_ul_right"> {{LoupanList.create_time || ''}} </text>
+						</view>
+						<view class="full-width eq_list_ul" v-if="LoupanList.processing_status.value == 1">
+							<text class="eq_list_ul_left">到账时间:</text>
+							<text class="eq_list_ul_right"> {{LoupanList.processing_time || ''}} </text>
+						</view>
+						<view class="full-width eq_list_ul" >
+							<text class="eq_list_ul_left">提现单号:</text>
+							<text class="eq_list_ul_right">{{LoupanList.id || ''}}</text>
+						</view>
+						<view style="width: 100%; height: 1upx; background: #F5F5F5; margin: 10upx 0;"></view>
+						<view class="full-width eq_list_ul" v-if="LoupanList.processing_info">
+							<text class="eq_list_ul_left">处理信息:</text>
+							<text class="eq_list_ul_right">{{LoupanList.processing_info || ''}}</text>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon
+		},
+		computed: {},
+		data() {
+			return {
+				long:false,
+				LoupanList: null, //数据
+				queryPage: {
+					m:'Withdrawal/detail',
+					id:null
+				},
+			};
+		},
+		methods: {
+			// 加载数据
+			loadGoodsList(direction) {
+				uni.showLoading({title: '正在加载中...'})
+				logoservice.Withdrawaldetail(this.queryPage).then(result => {
+					this.long = true
+					this.LoupanList = result
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({ title: err.msg, icon: 'none' });
+				});
+			}
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.loadGoodsList();
+		},
+		// 上拉加载
+		onReachBottom() {
+			this.loadGoodsList();
+		},
+		onLoad(options) {
+			console.log(options)
+			this.queryPage.id = options.id
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({ m:'Init/init',code:res.code}).then(result => {
+						logoservice.setwixinInfo(result);
+						this.loadGoodsList();
+					}).catch(err => {
+						uni.navigateTo({url: 'login',});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+	.eq_list{
+		width: 90%;
+		margin:0 auto 20upx; 
+		padding: 10upx 20upx; 
+		border-radius:10upx; 
+		background: #FFFFFF; 
+		.eq_list_ul{
+			display: flex; 
+			align-items: center; 
+			line-height: 55upx;
+			font-size: 28upx;
+			.eq_list_ul_left{
+				width: 150upx;
+				color: #B2B2B2;
+			}
+			.eq_list_ul_right{
+				width: calc(100% - 150upx); 
+			}
+		}
+	}
+</style>
diff --git a/pages/mine/Withdrawal.vue b/pages/mine/Withdrawal.vue
new file mode 100644
index 0000000..0e0c37a
--- /dev/null
+++ b/pages/mine/Withdrawal.vue
@@ -0,0 +1,248 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<!-- 动态数据 -->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long" >
+					<view v-for="(item, index) in LoupanList" :key="index" class="eq_list" @click="Withdrawal(item)">
+						<view class="eq_list_div">
+							<view class="full-width eq_list_ul">
+								<text class="eq_list_ul_left" style="font-size: 30upx;">余额提现-{{item.bank_info}}</text>
+								<text class="eq_list_ul_right" style="font-size: 30upx;">¥{{item.withdrawal_amount}}</text>
+							</view>
+							<view class="full-width eq_list_ul">
+								<text class="eq_list_ul_left" style="font-size: 24upx; color: #B2B2B2; width: 80%;">申请时间:{{item.create_time}}</text>
+								<text class="eq_list_ul_right" v-if="item.processing_status.value == 0" style="font-size: 24upx; color: #F56364; width: 20%; ">待处理</text>
+								<text class="eq_list_ul_right" v-if="item.processing_status.value == 1" style="font-size: 24upx; color: #5CE6B5; width: 20%;" >已支付</text>
+								<text class="eq_list_ul_right" v-if="item.processing_status.value == 2" style="font-size: 24upx; color: #B2B2B2; width: 20%;" >拒绝</text>
+							</view>
+						</view>
+					</view>
+				<!-- 暂无相关信息 -->
+				<view class="align-center content-color" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);" 
+				v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju" style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">暂无相关信息</view>
+				</view>
+			</view>
+			<!-- 动态数据完 -->
+		</view>
+		<!-- 返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import Enums from '@/util/Enums';
+	// 自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon,
+			foot,
+		},
+		computed: {},
+		data() {
+			return {
+				long:false,
+				LoupanList: [], //数据
+				// 返回顶部
+				totopstatus: false,
+				// 上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m:'Withdrawal/list',
+					page: 1,
+					per_page: 12,
+					count:0
+				},
+			};
+		},
+		methods: {
+			Withdrawal(item){
+				uni.navigateTo({
+					url: '/pages/mine/Withdrawal-details?id=' + item.id,
+				});
+			},
+			// 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({title: '正在加载中...'})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({title: '没有更多数据了!', icon: 'none'});
+						}, 500);
+					}
+				}
+				logoservice.Withdrawallist(this.queryPage).then(result => {
+					// console.log(result.data)
+					this.long = true
+					let queryList = result.data
+					// 下拉更新时,查询结果集
+					// 触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					// console.log(this.LoupanList)
+					// 分页对象处理
+					this.queryPage.count = result.count;
+					this.queryPage.per_page = result.per_page;
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					// uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+			// 返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			// 做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({title: '没有更多数据了!', icon: 'none'});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+		},
+		// 上拉加载
+		onReachBottom() {
+			console.log('上拉加载')
+			if (this.LoupanList.length < 12) {
+				return setTimeout(() => {
+					uni.showToast({title: '没有更多数据了!', icon: 'none'});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+		onLoad(options) {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({ m:'Init/init',code:res.code}).then(result => {
+						logoservice.setwixinInfo(result);
+						this.LoupanList = []
+						this.queryPage.page = 1;
+						this.queryPage.count = 0;
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+					}).catch(err => {
+						uni.navigateTo({url: 'login',});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			
+		}
+	};
+</script>
+
+<style lang="scss">
+	.uni-collapse-cell__title{
+		border: 0 !important;
+	}
+	.uni-collapse:after{
+		height: 0 !important;
+	}
+	.uni-collapse:before{
+		height: 0 !important;
+	}
+	.uni-collapse-cell:after{
+		height: 0 !important;
+	}
+	.uni-collapse-cell--open{
+		background: #fff !important;
+	}
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+	.eq_list{
+		width: 94%;
+		margin:20upx auto; 
+		border-radius:10upx;
+		background: #FFFFFF;
+		overflow: hidden;
+		.eq_list_div{
+			margin: 0 20upx;
+			padding: 20upx 10upx;
+			.eq_list_ul{
+				display: flex; 
+				align-items: center; 
+				line-height: 50upx; 
+				.eq_list_ul_left{
+					width: 50%; 
+				}
+				.eq_list_ul_right{
+					width: 50%; 
+					text-align: right;
+				}
+			}
+		}
+	}
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+</style>
diff --git a/pages/mine/balance.vue b/pages/mine/balance.vue
new file mode 100644
index 0000000..f8ee28a
--- /dev/null
+++ b/pages/mine/balance.vue
@@ -0,0 +1,97 @@
+<template>
+	<view class="edit-address full-height full-width">
+		<view class="form bg-white-color full-width" >
+			<view class="item full-width" @click="eqprofit(2)">
+				<label class="text content-color" style="font-weight: bold;">可用余额</label>
+				<label class="value content-color">
+					<input style="font-weight: bold;"  type="text" disabled="disabled" v-model="userInfo.base_amount" class="full-width"/>
+					<label  class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+		
+		</view>
+	</view>
+</template>
+
+<script>
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			
+		},
+		computed: {
+			
+		},
+		data() {
+			return {
+				userInfo: {
+					
+				},
+			}
+		},
+		methods: {
+			// 相加
+			add(arg1, arg2) {
+			    return (Math.round(arg1 * 100) + Math.round(arg2 * 100)) / 100;
+			},
+			// 相乘
+			multiple(arg1, arg2) {
+			    return (Math.round(arg1 * 100) * Math.round(arg2 * 100)) / 10000;
+			},
+			eqprofit(id){
+				uni.navigateTo({
+					url: '/pages/mall/eq-profit?id=' + id
+				});
+			},
+		},
+		onLoad(options) {
+			
+		},
+		onShow() {
+			logoservice.Moneyinfo({ m:'Money/info'}).then(result => {
+				uni.hideLoading();
+				console.log(result)
+				this.userInfo = result
+			}).catch(err => {
+				uni.hideLoading();
+				uni.showToast({ title: err.msg, icon: 'none' });
+			})
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background: #F5F5F5;
+	}
+	input{
+		text-align: right;
+	}
+	.edit-address {
+		.form {
+			.item {
+				height: 90upx;
+				display: flex;
+				align-items: center;
+				border-top: 10upx solid #F5F5F5;
+				font-size: 28upx;
+				.text {
+					width: 150upx;
+					padding-left: 20upx;
+				}
+				.value {
+					width: calc(100% - 180upx);
+					display: flex;
+					align-items: center;
+					.prick {
+						width: calc(100% - 40upx);
+					}
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+	}
+</style>
diff --git a/pages/mine/bank.vue b/pages/mine/bank.vue
new file mode 100644
index 0000000..c650ca4
--- /dev/null
+++ b/pages/mine/bank.vue
@@ -0,0 +1,184 @@
+<template>
+	<view class="edit-address full-height full-width">
+		<view class="form bg-white-color full-width">
+			<view class="item full-width">
+				<label class="text content-color">银行</label>
+				<label class="value content-color">
+					<input type="text" v-model="list.bank_name" class="full-width" placeholder="请输入银行名称"/>
+					<label class="fa fa-angle-right align-right sub-color" ></label>
+				</label>
+			</view>
+			<view class="item full-width" >
+				<label class="text content-color">持卡人</label>
+				<label class="value content-color">
+					<input type="text" v-model="list.account_name" class="full-width" placeholder="请输入收款人户名" />
+					<!-- @blur="onSearch" @focus="focus" @input='changeSearch' -->
+					<label class="fa fa-angle-right align-right sub-color" ></label>
+				</label>
+			</view>
+			<view class="item full-width" >
+				<label class="text content-color">卡号</label>
+				<label class="value content-color">
+					<input type="text" v-model="list.account_sn" @input="doInput" @blur="inputBlur" class="full-width" placeholder="请输入收款人账号"/>
+					<label class="fa fa-angle-right align-right sub-color" ></label>
+				</label>
+			</view>
+		</view>
+		<view class="footer" style="bottom: 100upx;">
+			<view class="footer_but" @click="onSave()">保存</view>
+		</view>
+		
+		<view  class="footer" style="display: flex;
+		flex-direction: row; 
+		color: #333; 
+		font-size: 32upx;
+		bottom: 20upx; 
+		justify-content: center;" > 
+		<checkbox checked="checked"> </checkbox>
+		  我已经阅读同意 <view style="color:rgba(92, 230, 182, 1);" @click="toUserAgreement()"> 用户协议 </view> 
+		  和 
+		  <view style="color:rgba(92, 230, 182, 1);"@click="toPrivacyPolicy()">隐私协议 </view>       
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+		},
+		computed: {
+			
+		},
+		data() {
+			return {
+				list: {
+					m:'Money/saveInfo',
+					bank_name:null,
+					account_name:null,
+					account_sn:null
+				},
+				loading: false,
+			}
+		},
+		methods: {
+			
+			
+			//用户协议
+			toUserAgreement(){
+				uni.navigateTo({url: '../mine/UserAgreement'});
+			},
+			
+			//隐私政策
+			toPrivacyPolicy(){
+				uni.navigateTo({url: '../mine/PrivacyPolicy'});
+			},
+			
+			
+			onSave () {
+				if (this.loading) return;
+				if (!this.list.bank_name) {
+					uni.showToast({ title: '银行名称不能为空!', icon: 'none' });
+					return false;
+				}
+				if (!this.list.account_name) {
+					uni.showToast({ title: '银行账户名不能为空!', icon: 'none' });
+					return false;
+				}
+				if (!this.list.account_sn) {
+					uni.showToast({ title: '银行账号不能为空!', icon: 'none' });
+					return false;
+				}
+				this.loading = true;
+				uni.showLoading({ title: '正在保存中...' });
+				const data = {
+					m:'Money/saveInfo',
+					bank_name:this.list.bank_name,
+					account_name:this.list.account_name,
+					account_sn:this.list.account_sn.replace(/\s*/g,"")
+				}
+				logoservice.MoneysaveInfo(data).then(reuslt => {
+					this.loading = false;
+					uni.navigateBack();
+					uni.hideLoading();
+				}).catch(err => {
+					this.loading = false;
+					uni.showToast({ title: err.msg, icon: 'none' });
+				})
+			},
+		doInput(e) {
+			this.list.account_sn = e.detail.value.replace(/\s/g, '').replace(/[^\d]/g, '').replace(/(\d{4})(?=\d)/g, '$1 ');
+		},
+		inputBlur(e){
+			console.log(e);
+		}
+		},
+		onLoad(options) {
+			
+		},
+		onShow() {
+			logoservice.Moneyinfo({ m:'Money/info'}).then(result => {
+				uni.hideLoading();
+				console.log(result)
+				this.list = result
+				this.list.account_sn = this.list.account_sn.replace(/\s/g, '').replace(/[^\d]/g, '').replace(/(\d{4})(?=\d)/g, '$1 ')
+			}).catch(err => {
+				uni.hideLoading();
+				uni.showToast({ title: err.msg, icon: 'none' });
+			})
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background: #F5F5F5;
+	}
+	input{
+		text-align: right;
+	}
+	.edit-address {
+		.form {
+			.item {
+				height: 90upx;
+				display: flex;
+				align-items: center;
+				border-top: 10upx solid #F5F5F5;
+				font-size: 28upx;
+				padding: 0 27upx 0 32upx;
+				width: calc(100% - 60upx);
+				.text {
+					width: 200upx;
+				}
+				.value {
+					width: calc(100% - 200upx);
+					display: flex;
+					align-items: center;
+					.prick {
+						width: calc(100% - 40upx);
+					}
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+		.footer {
+			position: fixed;
+			bottom: 20upx;
+			width: 100%;
+			.footer_but {
+				width: calc(100% - 60upx);
+				margin: 0upx auto 0;
+				color: #fff;
+				height: 88upx;
+				text-align: center;
+				line-height: 88upx;
+				background: rgba(92, 230, 182, 1);
+				border-radius: 10upx;
+			}
+		}
+	}
+</style>
diff --git a/pages/mine/bill-details.vue b/pages/mine/bill-details.vue
new file mode 100644
index 0000000..ff293d0
--- /dev/null
+++ b/pages/mine/bill-details.vue
@@ -0,0 +1,217 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<view class="full-width" v-if="long">
+				<view style="text-align: center; font-weight: bold; padding: 100upx 0;">
+					<view style="font-size:80upx;font-weight:bold;">{{LoupanList.settle_amount || ''}}</view>
+					<view style="font-size:26upx;font-weight:400;">账单金额(¥)</view>
+				</view>
+				<view style="display: flex; justify-content: center;">
+					<view style="width: 100upx;">
+						<view style="width: 100upx;">
+							<view style="width:32upx; height:32upx; margin: auto; background:#5CE6B5; border-radius:50%;"></view>
+						</view>
+						<view style="width:1px; height:80upx; margin: auto; background:#5CE6B5;"></view>
+						<view v-if="LoupanList.status.value == 0">
+							<view style="width:32upx; height:32upx; margin: auto; background:#B2B2B2; border-radius:50%;"></view>
+							<view style="width:1px; height:80upx; margin: auto; background:#B2B2B2;"></view>
+						</view>
+						<view v-if="LoupanList.status.value == 1 || LoupanList.status.value == 2">
+							<view style="width:32upx; height:32upx; margin: auto; background:#5CE6B5; border-radius:50%;"></view>
+							<view style="width:1px; height:80upx; margin: auto; background:#5CE6B5;"></view>
+						</view>
+						<view v-if="LoupanList.status.value != 2" style="width:32upx; height:32upx; margin: auto; background:#B2B2B2; border-radius:50%;"></view>
+						<view v-if="LoupanList.status.value == 2" style="width:32upx; height:32upx; margin: auto;">
+							<span class="iconfont icon-duihao2" style="color: #5CE6B5; font-size: 32upx;"></span>
+						</view>
+					</view>
+					<view style="width: calc(100% - 100upx);">
+						<view>
+							<span>待确认</span>
+							<span style="color: #B2B2B2; padding-left: 20upx;">{{LoupanList.create_time || ''}}</span>
+						</view>
+						<view style="margin-top: 70upx;">
+							<span v-if="LoupanList.status.value == 0" style="color: #B2B2B2;">已确认</span>
+							<span v-if="LoupanList.status.value == 1 || LoupanList.status.value == 2" >已确认</span>
+							<span v-if="LoupanList.status.value == 1 || LoupanList.status.value == 2" style="color: #B2B2B2; padding-left: 20upx;">{{LoupanList.confirm_time|| ''}}</span>
+						</view>
+						<view style="margin-top: 70upx;">
+							<span v-if="LoupanList.status.value != 2" style="color: #B2B2B2;">已完成</span>
+							<span v-if="LoupanList.status.value == 2" style="color: #5CE6B5;">已完成</span>
+							<span v-if="LoupanList.status.value == 2" style="color: #B2B2B2; padding-left: 20upx;">{{LoupanList.finish_time || ''}}</span>
+						</view>
+					</view>
+				</view>
+				<view style="padding-top: 20upx;">
+					
+					<view class="eq_list">
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">结算账单:</text>
+							<text class="eq_list_ul_right">{{LoupanList.title}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">结算明细:</text>
+							<text class="eq_list_ul_right">{{LoupanList.statement_number || ''}}笔</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">订单总额:</text>
+							<text class="eq_list_ul_right">¥{{LoupanList.order_amount}}</text>
+						</view>
+						<view style="width: 100%; height: 1upx; background: #F5F5F5; margin: 10upx 0;"></view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">创建时间:</text>
+							<text class="eq_list_ul_right">{{LoupanList.create_time || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul" v-if="LoupanList.status.value == 1 || LoupanList.status.value == 2" >
+							<text class="eq_list_ul_left">确认时间:</text>
+							<text class="eq_list_ul_right">{{LoupanList.confirm_time  || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul" v-if="LoupanList.status.value == 2">
+							<text class="eq_list_ul_left">完成时间:</text>
+							<text class="eq_list_ul_right">{{LoupanList.finish_time || ''}}</text>
+						</view>
+						<view style="width: 100%; height: 1upx; background: #F5F5F5; margin: 10upx 0;"></view>
+						<view class="full-width eq_list_ul" @click="phone(LoupanList.admin_name[0].phone)">
+							<text class="eq_list_ul_left">联系服务商:</text>
+							<text class="eq_list_ul_right">{{LoupanList.admin_name[0].phone || ''}}</text>
+						</view>
+						<view style="color: #5CE6B6;" @click="profit()">与此账单关联的收益></view>
+					</view>
+				</view>
+				<view style="position: fixed; bottom: 20upx; width: 100%;" v-if="LoupanList.status.value == 0">
+					<view style="width:80%; margin: 0upx auto 0; color: #fff; height:88upx; text-align: center; line-height: 88upx; background:rgba(92,230,182,1); border-radius:10upx;" @click="loginBtnone">确认</view>
+					<view style="text-align: center; line-height: 80upx;" @click="doubt">对账单有疑惑?</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon
+		},
+		computed: {},
+		data() {
+			return {
+				long:false,
+				LoupanList: null, //数据
+				queryPage: {
+					m:'Money/billDetail',
+					id:null
+				},
+			};
+		},
+		methods: {
+			phone(item){
+				uni.makePhoneCall({ phoneNumber: item});
+			},
+			profit(){
+				uni.navigateTo({
+					url: '../mall/eq-profit?billingid=' + this.LoupanList.id + '&title=' + this.LoupanList.title,
+				});
+			},
+			doubt(item){
+				uni.navigateTo({
+					url: '/pages/mine/bill-doubt?id=' + this.LoupanList.id + '&remark=' + this.LoupanList.remark,
+				});
+			},
+			loginBtnone(){
+				let stat = this;
+				uni.showModal({
+					title:'提示',
+					content: '确认了,没有疑惑了?',
+					success:function(res){
+						if(res.confirm){
+							uni.showLoading({title: '正在提交中...'})
+							logoservice.MoneyconfirmBill({
+								m:'Money/confirmBill',
+								id:stat.queryPage.id
+							}).then(result => {
+								stat.loadGoodsList();
+								uni.hideLoading();
+							}).catch(err => {
+								uni.hideLoading();
+								uni.showToast({ title: err.msg, icon: 'none' });
+							});
+						} else if(res.cancel) {
+						}
+					},
+				});
+			},
+			// 加载数据
+			loadGoodsList() {
+				uni.showLoading({title: '正在加载中...'})
+				logoservice.MoneybillDetail(this.queryPage).then(result => {
+					this.long = true
+					this.LoupanList = result
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({ title: err.msg, icon: 'none' });
+				});
+			}
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.loadGoodsList();
+		},
+		// 上拉加载
+		onReachBottom() {
+			this.loadGoodsList();
+		},
+		onLoad(options) {
+			console.log(options)
+			this.queryPage.id = options.id
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({ m:'Init/init',code:res.code}).then(result => {
+						logoservice.setwixinInfo(result);
+						this.loadGoodsList();
+					}).catch(err => {
+						uni.navigateTo({url: 'login',});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			this.loadGoodsList();
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+	.eq_list{
+		width: 90%;
+		margin:0 auto 20upx; 
+		padding: 10upx 20upx; 
+		border-radius:10upx; 
+		background: #FFFFFF; 
+		.eq_list_ul{
+			display: flex; 
+			align-items: center; 
+			line-height: 55upx;
+			font-size: 28upx;
+			.eq_list_ul_left{
+				// width: 180upx;
+				color: #818181;
+			}
+			.eq_list_ul_right{
+				// width: calc(100% - 180upx); 
+				// text-align: right;
+			}
+		}
+	}
+</style>
diff --git a/pages/mine/bill-doubt.vue b/pages/mine/bill-doubt.vue
new file mode 100644
index 0000000..b0ab3fe
--- /dev/null
+++ b/pages/mine/bill-doubt.vue
@@ -0,0 +1,68 @@
+<template>
+	<view class="page">
+		<view class="uni-textarea">
+			<textarea maxlength="10000" placeholder="请输入您的疑问" v-model="queryPage.remark"  style="height: 400upx;"/>
+		</view>
+		<view style="width:calc(100% - 80upx); margin: 80upx auto 0; color: #fff;
+			height:88upx; text-align: center; line-height: 88upx;
+			background:rgba(92,230,182,1);
+			border-radius:10upx;" @click="loginBtnone()">确认</view>
+	</view>
+</template>
+
+<script>
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			
+		},
+		data() {
+			return {
+				queryPage:{
+					m:'Money/billRemark',
+					id:null,
+					remark:null,
+				}
+			}
+		},
+		methods: {
+			loginBtnone(){
+				uni.showLoading({title: '正在提交中...'})
+				logoservice.MoneybillRemark(this.queryPage).then(result => {
+					uni.showToast({title: '提交成功'})
+					uni.navigateBack();
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({ title: err.msg, icon: 'none' });
+				});
+			},
+		},
+		onLoad(options) {
+			this.queryPage.id = options.id
+			this.queryPage.remark = options.remark
+		},
+		onShow() {
+			
+		}
+		
+	}
+</script>
+
+<style lang="scss">
+	.page {
+		width: 100%;
+		height: 100%;
+		background-color: #F5F5F5;
+		padding-top: 50upx;
+	}
+	.uni-textarea {
+		line-height: 1.6;
+		height: 400upx;
+		background: #fff;
+		margin: 0 40upx;
+		width: calc(100% - 80upx);
+		border-radius:10upx;
+		text-align: 24upx;
+	}
+</style>
diff --git a/pages/mine/bill.vue b/pages/mine/bill.vue
new file mode 100644
index 0000000..d7160e9
--- /dev/null
+++ b/pages/mine/bill.vue
@@ -0,0 +1,281 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<!-- 动态数据 -->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long" >
+					<view v-for="(item, index) in LoupanList" :key="index" class="eq_list" @click="billdetails(item)">
+						<view class="eq_list_div">
+							<view class="full-width eq_list_ul">
+								<text class="eq_list_ul_left" style="font-size: 30upx;">{{item.title}}</text>
+								<text class="eq_list_ul_right" style="font-size: 30upx;">¥{{item.settle_amount}}</text>
+							</view>
+							<view class="full-width eq_list_ul">
+								<text class="eq_list_ul_left" style="font-size: 24upx; color: #B2B2B2; width: 80%;">{{item.create_time || ''}}</text>
+								<text class="eq_list_ul_right" v-if="item.status.value == 0" style="font-size: 24upx; color: #F56364; width: 20%; ">待确认</text>
+								<text class="eq_list_ul_right" v-if="item.status.value == 1" style="font-size: 24upx; color: #F2A03E; width: 20%;" >已确认</text>
+								<text class="eq_list_ul_right" v-if="item.status.value == 2" style="font-size: 24upx; color: #5CE6B5; width: 20%;" >已完成</text>
+							</view>
+						</view>
+						
+						
+					</view>
+				<!-- 暂无相关信息 -->
+				<view class="align-center content-color" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);" 
+				v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju" style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">暂无相关信息</view>
+				</view>
+			</view>
+			<!-- 动态数据完 -->
+		</view>
+		<!-- 返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import Enums from '@/util/Enums';
+	// 自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon,
+			foot,
+		},
+		computed: {},
+		data() {
+			return {
+				long:false,
+				LoupanList: [], //数据
+				// 返回顶部
+				totopstatus: false,
+				// 上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m:'Money/billList',
+					page: 1,
+					per_page: 12,
+					count:0
+				},
+			};
+		},
+		methods: {
+			billdetails(item){
+				uni.navigateTo({
+					url: '/pages/mine/bill-details?id=' + item.id,
+				});
+			},
+			loginBtnone(){
+				uni.showModal({
+		       title: '温馨提示',
+		       content: '是否确认要结算当前账单?',
+					confirmText: '确认',
+					confirmColor: '#5CE6B5',
+		       success:async function(res) {
+		         if (res.confirm) {
+							console.log('用户点击确定');
+							uni.showToast({title: '请耐心等待打款'})
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						} 
+		      }
+		    });
+			},
+			change(e){
+				
+			},
+			// 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({title: '正在加载中...'})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({title: '没有更多数据了!', icon: 'none'});
+						}, 500);
+					}
+				}
+				logoservice.MoneybillList(this.queryPage).then(result => {
+					// console.log(result.data)
+					this.long = true
+					let queryList = result.data
+					// 下拉更新时,查询结果集
+					// 触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					// console.log(this.LoupanList)
+					// 分页对象处理
+					this.queryPage.count = result.count;
+					this.queryPage.per_page = result.per_page;
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					// uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+			// 返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			// 做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({title: '没有更多数据了!', icon: 'none'});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+		},
+		// 上拉加载
+		onReachBottom() {
+			console.log('上拉加载')
+			if (this.LoupanList.length < 12) {
+				return setTimeout(() => {
+					uni.showToast({title: '没有更多数据了!', icon: 'none'});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+		onLoad(options) {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({ m:'Init/init',code:res.code}).then(result => {
+						logoservice.setwixinInfo(result);
+						this.LoupanList = []
+						this.queryPage.page = 1;
+						this.queryPage.count = 0;
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+					}).catch(err => {
+						uni.navigateTo({url: 'login',});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			
+		}
+	};
+</script>
+
+<style lang="scss">
+	.uni-collapse-cell__title{
+		border: 0 !important;
+	}
+	.uni-collapse:after{
+		height: 0 !important;
+	}
+	.uni-collapse:before{
+		height: 0 !important;
+	}
+	.uni-collapse-cell:after{
+		height: 0 !important;
+	}
+	.uni-collapse-cell--open{
+		background: #fff !important;
+	}
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+	.eq_list{
+		width: 94%;
+		margin:20upx auto; 
+		border-radius:10upx;
+		background: #FFFFFF;
+		overflow: hidden;
+		.eq_list_div{
+			margin: 0 20upx;
+			padding: 20upx 10upx;
+			.eq_list_ul{
+				display: flex; 
+				align-items: center; 
+				line-height: 50upx;
+				// border-top: 1upx solid #F5F5F5; 
+				.eq_list_ul_left{
+					width: 50%; 
+				}
+				.eq_list_ul_right{
+					width: 50%; 
+					text-align: right;
+				}
+			}
+		}
+		
+	}
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+	.loginBtnone {
+		border: 0 !important;
+		font-size: 28upx;
+		border-radius: 10rpx;
+		width: 300rpx;
+		color: white;
+		background: #5CE6B5;
+		line-height: 70upx;
+		margin:auto;
+	}
+</style>
diff --git a/pages/mine/goodStock.vue b/pages/mine/goodStock.vue
new file mode 100644
index 0000000..b7ada19
--- /dev/null
+++ b/pages/mine/goodStock.vue
@@ -0,0 +1,399 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<!-- 动态数据 -->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long">
+				<view v-for="(item, index) in LoupanList" :key="index" class="eq_list">
+					<view class="eq_list_div">
+						<view class="full-width eq_list_ul">
+							<image @click.stop="previewImage(item.front_image)" v-if="item.front_image" :src="item.front_image + '?x-oss-process=image/resize,lfit,w_100'"
+							 mode="aspectFit" style="width:70upx; height: 90upx;line-height:70upx; margin: 0 10upx;"></image>
+							 <view style="width: calc(100% - 220upx);">
+							 	<view style="font-size: 25upx;color: #B2B2B2;width: 100%;white-space: nowrap;text-overflow:ellipsis; overflow:hidden; word-break:break-all;">
+							 		{{item.goods_name}}<!-- - {{item.title}} -->
+							 	</view>
+							 	<view style="font-size: 25upx;color: #B2B2B2;width: 100%;white-space: nowrap;text-overflow:ellipsis; overflow:hidden; word-break:break-all;margin-top: 7upx;">仓库库存:{{item.stock}}
+							 		<!-- 货道库存:{{item.stockTotal}} -->
+							 	</view>
+							 </view>
+							<button @click.stop="showshareclick(item,index)" 
+							style="font-size: 23upx; color:#FFFFFF; width:130upx;font-weight:bold; text-align: center; line-height: 60upx; height: 60upx; background-color:#5CE6B6">调整</button>
+						</view>
+					</view>
+				</view>
+				<!-- 暂无相关信息 -->
+				<view class="align-center content-color" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+				 v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju" style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 23upx;">暂无相关信息</view>
+				</view>
+			</view>
+			<!-- 动态数据完 -->
+			<!-- 中间弹框,加货道输入框 @click.stop="changeChannel(item,item.stock,index)"-->
+			<uni-popup ref="showshareinput" type="center" @change="showchange">
+				<view style="width:600upx; margin:auto; display: flex; flex-direction: column;">
+					<view style="width:100%; height: 300upx; background: #F9F9F9; border-radius: 10upx; position: relative;">
+						<view style="display: flex; align-items: center; width: calc(100% - 60upx); 
+						margin:40upx 30upx; border-radius: 10upx; height: 120upx; background: #FFFFFF;font-size: 34upx;">
+							<label style="padding-left: 20upx;">实时库存:</label>
+							<input v-model="showshareitem.stock" style="width: 60%;" auto-focus="true"
+							maxlength="100000" type="number" @click.stop="StockCountInput()"></input>
+						</view>
+						<view style="width:100%; background: #FFFFFF; position: absolute; bottom: 0; 
+						display: flex; height: 100upx; align-items: center;border-radius:0 0 10upx 10upx;">
+							<view @click="cancel('share')" 
+							style="padding: 10upx 20upx; border: 1upx solid #5CE6B6;border-radius: 5upx; margin-left: auto; color:#5CE6B6;">
+								取消
+							</view>
+							<view @click.stop="changeChannel(showshareitem,showshareindex)"
+							style="padding: 10upx 20upx; background:#5CE6B6; border-radius: 5upx; color: #FFFFFF; margin: 0 30upx;">
+								确定
+							</view>
+						</view>
+					</view>
+				</view>
+			</uni-popup>
+			
+		</view>
+		<!-- 返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import Enums from '@/util/Enums';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue';
+	// 自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon,
+			foot,
+			uniPopup
+		},
+		computed: {},
+		data() {
+			return {
+				msg: "",
+				error: true,
+				stockValue: "",
+				stockCount: "",
+				long: false,
+				LoupanList: [], //数据
+				LoupanLists: [], //数据
+				// 返回顶部
+				totopstatus: false,
+				// 上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/stockList',
+					page: 1,
+					per_page: 12,
+					count: 0
+				},
+				nameInput: null,
+				
+				isOnclickItem: false, //是否点击item
+				showshareitem:null,
+				showshareindex:null
+			};
+		},
+		methods: {
+			showchange(e){
+				
+			},
+			cancel(type) {
+				this.$refs['showshareinput'].close()
+			},
+			//更换弹框
+			showshareclick(item,index) {
+				console.log(item)
+				let itema = JSON.stringify(item)
+				let itemb = JSON.parse(itema);
+				this.showshareitem = itemb;
+				this.showshareindex = index;
+				this.$nextTick(() => {
+					this.$refs['showshareinput'].open()
+				})
+			},
+			//库存数量输入
+			StockCountInput(e) {
+				console.log("进入库存数量")
+				this.isOnclickItem = true;
+				var that = this;
+				setTimeout(function() {
+					that.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是2秒
+			},
+			//修改货道
+			changeChannel(item,index) {
+				this.$refs["showshareinput"].close();
+				var _this = this
+				_this.isOnclickItem = true;
+				setTimeout(function() {
+					_this.isOnclickItem = false;
+				}, 1000) //延迟时间 这里是1秒
+				let jsonLists = JSON.parse(_this.LoupanLists);
+				uni.showLoading({title: '正在加载中...'})
+				logoservice.MachineSavePartnerStock({
+					m: 'Machine/savePartnerStock',
+					id: item.id,
+					stock: item.stock
+				}).then(result => {
+					uni.hideLoading();
+					uni.showToast({title: "修改成功",icon: 'none'});
+					_this.LoupanList[index].stock = item.stock;
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({title: err.msg,icon: 'none'});
+				})		
+			},
+			
+			previewImage(e) {
+				var current = e; //这里获取到的是一张本地的图片
+				wx.previewImage({
+					current: current, //需要预览的图片链接列表
+					urls: [current] //当前显示图片的链接
+				})
+			},
+			
+			// change(item, value) {
+			// 	let jsonLists = JSON.parse(this.LoupanLists);
+			// 	uni.showModal({
+			// 		title: '确认',
+			// 		content: '确认当前商品入货吗?',
+			// 		confirmText: '确定',
+			// 		confirmColor: '#ff3b32',
+			// 		success: function(res) {
+			// 			if (res.confirm) {
+			// 				uni.showLoading({
+			// 					title: '正在加载中...'
+			// 				})
+			// 				logoservice.MachineSavePartnerStock({
+			// 					m: 'Machine/savePartnerStock',
+			// 					id: item.id,
+			// 					stock: value
+			// 				}).then(result => {
+			// 					console.log()
+			// 					uni.hideLoading();
+			// 					uni.showToast({
+			// 						title: "保存成功",
+			// 						icon: 'none'
+			// 					});
+			// 				}).catch(err => {
+			// 					uni.hideLoading();
+			// 					jsonLists.forEach((items, index) => {
+			// 						//用item操作每一条数据。
+			// 						if (items.id == item.id) {
+			// 							console.error('stock:' + items.stock);
+			// 							item.stock = items.stock
+			// 						}
+			// 					});
+			// 					uni.showToast({
+			// 						title: err.msg,
+			// 						icon: 'none'
+			// 					});
+			// 				})
+			// 			} else if (res.cancel) {
+			// 				console.log('用户点击取消')
+			// 			}
+			// 		}
+			// 	});
+			// },
+			//获取设备代理列表
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.MachineStockList(this.queryPage).then(result => {
+					this.long = true
+					let queryList = result.data
+					// 下拉更新时,查询结果集
+					// 触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					this.LoupanLists = JSON.stringify(newList)
+					// 分页对象处理
+					this.queryPage.count = result.count;
+					this.queryPage.per_page = result.per_page;
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					// uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+			// 返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			// 做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+		},
+		// 上拉加载
+		onReachBottom() {
+			console.log('上拉加载')
+			if (this.LoupanList.length < 12) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+
+
+		onLoad(options) {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						logoservice.setwixinInfo(result);
+						this.LoupanList = []
+						this.queryPage.page = 1;
+						this.queryPage.count = 0;
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+
+		onShow() {
+
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	/* 去除button默认样式 */
+	button::after {
+		border: none;
+	}
+	button {
+		background-color: transparent;
+		padding-left: 0;
+		padding-right: 0;
+		line-height: inherit;
+	}
+
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.eq_list {
+		width: 94%;
+		margin: 20upx auto;
+		border-radius: 10upx;
+		background: #FFFFFF;
+		overflow: hidden;
+
+		.eq_list_div {
+			padding: 20upx 10upx;
+
+			.eq_list_ul {
+				display: flex;
+				align-items: center;
+			}
+		}
+	}
+
+
+
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+
+</style>
diff --git a/pages/mine/information.vue b/pages/mine/information.vue
new file mode 100644
index 0000000..98df66e
--- /dev/null
+++ b/pages/mine/information.vue
@@ -0,0 +1,174 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<!-- 动态数据 -->
+			<view class="full-width" v-if="long" >
+				<view style="padding-top: 20upx;">
+					<view class="eq_list">
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">代理名称:</text>
+							<text class="eq_list_ul_right">{{LoupanList.name}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">负责人:</text>
+							<text class="eq_list_ul_right">{{ getContactInfo(LoupanList.contact)}}</text>
+						</view>
+						<view class="full-width eq_list_ul" >
+							<text class="eq_list_ul_left">登录账号:</text>
+							<text class="eq_list_ul_right">{{LoupanList.account}}</text>
+						</view>
+						<view class="full-width eq_list_ul" >
+							<text class="eq_list_ul_left">客服电话:</text>
+							<text class="eq_list_ul_right">{{LoupanList.phone}}</text>
+						</view>
+						<view class="full-width eq_list_ul" >
+							<text class="eq_list_ul_left">结算比例:</text>
+							<text class="eq_list_ul_right">{{ getSettlementOProportion(LoupanList.settlement_proportion) * 100}}%</text>
+						</view>
+						
+						<view class="full-width eq_list_ul"  >
+							<text class="eq_list_ul_left">官方服务:</text>
+							<text class="eq_list_ul_right" >瑞丰彩</text>
+						</view> 
+					</view>
+					
+					<view class="footer">
+						<view class="footer_but" @click="onSave()">切换账号</view>
+					</view>
+				</view>
+			</view>
+			<!-- 动态数据完 -->
+		</view>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon
+		},
+		computed: {},
+		data() {
+			return {
+				long:false,
+				LoupanList: null, //数据
+				queryPage: {
+					m:'Money/partner'
+				},
+				is_inner: null, //是否显示所有
+			};
+		},
+		methods: {
+			
+			//获取负责人信息
+			getContactInfo(contactName){
+			  if( contactName == 'undefined' || contactName == null || contactName == ""   ){
+				  return "";                  
+			   }  else {
+				  return contactName;
+			   }
+			},
+			
+			//获取结算比例
+			getSettlementOProportion(settlement_proportion){
+				if(isNaN(settlement_proportion) || settlement_proportion == "" ||  settlement_proportion == null){
+					return 1
+				}
+				return  parseFloat(settlement_proportion).toFixed(2);
+			},
+			
+			onSave(){
+				uni.navigateTo({
+					url: '/pages/mall/informationList',
+				});
+			},
+			// 加载数据
+			loadGoodsList(direction) {
+				uni.showLoading({title: '正在加载中...'})
+				logoservice.Moneypartner(this.queryPage).then(result => {
+					this.long = true
+					this.LoupanList = result
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({ title: err.msg, icon: 'none' });
+				});
+			}
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.loadGoodsList();
+		},
+		// 上拉加载
+		onReachBottom() {
+			this.loadGoodsList();
+		},
+		onLoad(options) {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({ m:'Init/init',code:res.code}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						this.is_inner = this.$base.Userres.is_inner //总代理
+						logoservice.setwixinInfo(result);
+						this.loadGoodsList();
+					}).catch(err => {
+						uni.navigateTo({url: 'login',});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+	.eq_list{
+		width: 90%;
+		margin:0 auto 20upx; 
+		padding: 10upx 20upx; 
+		border-radius:10upx; 
+		background: #FFFFFF; 
+		.eq_list_ul{
+			display: flex; 
+			align-items: center; 
+			line-height: 80upx;
+			border-bottom: 1upx solid #F5F5F5; 
+			font-size: 28upx;
+			.eq_list_ul_left{
+				width: 150upx;
+			}
+			.eq_list_ul_right{
+				width: calc(100% - 150upx); 
+				// text-align: right;
+			}
+		}
+	}
+	.footer {
+		position: fixed;
+		bottom: 20upx;
+		width: 100%;
+		.footer_but {
+			width: calc(100% - 60upx);
+			margin: 0upx auto 0;
+			color: #fff;
+			height: 88upx;
+			text-align: center;
+			line-height: 88upx;
+			background: rgba(92, 230, 182, 1);
+			border-radius: 10upx;
+		}
+	}
+</style>
diff --git a/pages/mine/money.vue b/pages/mine/money.vue
new file mode 100644
index 0000000..259331c
--- /dev/null
+++ b/pages/mine/money.vue
@@ -0,0 +1,289 @@
+<template>
+	<view class="full-width" v-if="long">
+		<view class="item full-width" @click="bank()">
+			<label class="text content-color">银行:</label>
+			<label class="value content-color">
+				<input type="text" v-model="list.bank_name" disabled="disabled" class="full-width" />
+				<label class="fa fa-angle-right align-right sub-color"></label>
+			</label>
+		</view>
+		<view class="item full-width">
+			<label class="text content-color">持卡人:</label>
+			<label class="value content-color"> {{list.account_name || ''}} </label>
+		</view>
+		<view class="item full-width">
+			<label class="text content-color">卡号:</label>
+			<label class="value content-color" v-if="list.account_sn!=null && list.account_sn!=''">
+				{{list.account_sn.replace(/\s/g, '').replace(/[^\d]/g, '').replace(/(\d{4})(?=\d)/g, '$1 ') || ''}}</label>
+		</view>
+		<view class="item full-width" style="border: 0;">
+			<label class="text content-color">提现金额:</label>
+		</view>
+		<view style="height: 140upx;  border-bottom: 1px solid #EEEEEE; margin: 50upx 50upx 50upx; display: flex;">
+			<span style="font-size: 60upx; line-height: 140upx;">¥</span>
+			<!-- <input style="width: 100%; height: 140upx; line-height: 140upx; font-size: 35upx;"
+			 v-model="queryPage.withdrawal_amount" placeholder="请输入提现金额(元)" 
+			@blur="onSearch" @focus="focus" @input='changeSearch'/> -->
+			<!-- 金额输入限制 -->
+
+			<view style="width: 100%; height: 140upx; line-height: 140upx; font-size: 35upx;">{{money}} </view>
+
+			<!-- <input style="width: 100%; height: 140upx; line-height: 140upx; font-size: 35upx;" :value="money" 
+			placeholder="请输入提现金额(元)" type="digit"
+			@input="moneyChange"/> -->
+			<!-- number digit -->
+		</view>
+		<!-- <view v-if="!submit" style="color: #F56364; font-size: 24upx; margin-top: 90upx; width: calc(100% - 100upx); margin: auto;">
+			输入金额超过提现金额,或提现金额为0
+		</view>
+		<view style="color: #B2B2B2; font-size: 24upx; margin-top: 90upx; width: calc(100% - 100upx); margin: auto;">
+			到账金额<span v-if="list.withdrawal_rate">{{(money - (money*list.withdrawal_rate).toFixed(2)) || '0'}}</span>元,
+			服务费<span v-if="list.withdrawal_rate">{{((money * list.withdrawal_rate).toFixed(2)) || ''}}</span>元
+		</view> -->
+		<!-- 	<view style="color: #B2B2B2; font-size: 24upx; margin-top: 90upx; width: calc(100% - 100upx); margin: auto;">可提现金额{{list.base_amount || 0}}元 
+			<span style="color: #5CE6B6; font-size: 24upx; margin-left: 10upx;" @click="numone()" hover-class="hover-class-text">全部提出</span>
+		</view> -->
+		<!-- <button type="button" v-if="!submit" class="mui-btn mui-btn-danger submit submitone">提交</button> -->
+		<!-- v-if="submit" -->
+		<button type="button" class="mui-btn mui-btn-danger submit" @click="paymentone()"
+			hover-class="hover-class-bg">提交</button>
+	</view>
+</template>
+
+<script>
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				long: false,
+				list: {
+					bank_name: null,
+					account_name: null,
+					account_sn: null
+				},
+				queryPage: {
+					m: 'Withdrawal/apply',
+					withdrawal_amount: null,
+					id: "", 
+				},
+				submit: true,
+				money: "",
+			
+			}
+		},
+		methods: {
+			moneyChange(event) {
+				let money = this.moneyone(event.detail.value);
+				// this.money = money
+				this.setData({
+					money: money
+				});
+				this.queryPage.withdrawal_amount = money
+				if (money > this.list.base_amount) {
+					this.submit = false
+				} else {
+					this.submit = true
+				}
+				return money
+			},
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+			// 验证输入金额
+			moneyone(val) {
+				let num = val.toString(); //先转换成字符串类型
+				if (num.indexOf('.') == 0) { //第一位就是 .
+					num = '1' + num
+				} else if (num.indexOf('0') == 0) {
+					num = ''
+				}
+				num = num.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符
+				num = num.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
+				num = num.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
+				num = num.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); //只能输入两个小数
+				if (num.indexOf(".") < 0 && num != "") {
+					num = parseFloat(num);
+				}
+				return num
+			},
+
+			bank() {
+				uni.navigateTo({
+					url: '/pages/mine/bank',
+				});
+			},
+			numone() {
+				this.setData({
+					money: this.list.base_amount
+				});
+				this.queryPage.withdrawal_amount = this.list.base_amount
+			},
+			paymentone() {
+				if (this.loading) return;
+				if (!this.queryPage.withdrawal_amount) {
+					uni.showToast({
+						title: '提现金额不能为空!',
+						icon: 'none'
+					});
+					return false;
+				}
+				if (!this.list.bank_name || !this.list.account_name || !this.list.account_sn) {
+					uni.showToast({
+						title: '提现账户未设置!',
+						icon: 'none'
+					});
+					return false;
+				}
+				uni.showLoading({
+					title: '正在提交中...'
+				})
+				logoservice.Withdrawalapply(this.queryPage).then(result => {
+
+					uni.showModal({
+						content: '提现申请已提交,等待人工审核',
+						showCancel: false,
+						success: function(res) {
+							uni.navigateTo({
+									url: '../index/mine'
+							});
+						}
+					});
+
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.data,
+						icon: 'none'
+					});
+				});
+			},
+			moneyinfo() {
+				uni.showLoading({
+					title: '正在加载数据...'
+				})
+				logoservice.Moneyinfo({
+					m: 'Money/info'
+				}).then(result => {
+					this.long = true
+					this.list = result
+					if (result.base_amount > 0 && result.base_amount != null) {
+						this.submit = true
+					} else {
+						this.submit = false
+					}
+					uni.hideLoading();
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			}
+		},
+		onShow() {
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						uni.setStorageSync('openid', result.openid)
+						logoservice.setwixinInfo(result);
+						this.moneyinfo()
+					}).catch(err => {
+
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onLoad(options) {
+			if (options.money) {
+				this.money = options.money;
+				this.queryPage.withdrawal_amount = this.money 
+			}
+			if (options.id) {
+				this.queryPage.id = options.id;
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.item {
+		height: 90upx;
+		display: flex;
+		align-items: center;
+		border-bottom: 1upx solid #EEEEEE;
+		font-size: 30upx;
+		width: calc(100% - 100upx);
+		margin: auto;
+
+		.text {
+			width: 150upx;
+			padding-left: 20upx;
+		}
+
+		.value {
+			width: calc(100% - 180upx);
+			display: flex;
+			align-items: center;
+
+			.prick {
+				width: calc(100% - 40upx);
+			}
+
+			.fa-angle-right {
+				width: 40upx;
+				font-size: 50upx;
+			}
+		}
+	}
+
+	.submit {
+		width: calc(100% - 100upx);
+		margin: 150upx auto 0;
+		height: 50px;
+		border-radius: 10upx;
+		background: #5CE6B6;
+		color: #FFFFFF;
+	}
+
+	.submitone {
+		background: #B2B2B2 !important;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/mine/order-details.vue b/pages/mine/order-details.vue
new file mode 100644
index 0000000..4587bd3
--- /dev/null
+++ b/pages/mine/order-details.vue
@@ -0,0 +1,400 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<view class="full-width" v-if="long">
+				<view style="text-align: center; font-weight: bold; padding: 100upx 0;">
+					<view style="font-size:80upx;font-weight:bold;">
+						<!--<text v-if="Number(LoupanList.real_amount) <=  0">免费</text>
+						<text v-else>¥{{LoupanList.real_amount || ''}}</text>-->
+						<text v-if="LoupanList.is_pay.value == 4" style="color: #F56464;">退款完成</text>
+						<text v-else>
+							<text v-if="LoupanList.status.value == 2" style="color: #5CE6B5;">{{LoupanList.status.text || ''}}</text>
+							<text v-else-if="LoupanList.status.value == 0" style="color: #F56464;">{{LoupanList.status.text || ''}}</text>
+							<text v-else-if="LoupanList.status.value == 3" style="color: #878787;">{{LoupanList.status.text || ''}}</text>
+							<text v-else style="color: #FF8B00;">{{LoupanList.status.text || ''}}</text>
+						</text>
+					</view>
+					<!--<view style="font-size:26upx;font-weight:400;">收入(¥)</view> -->
+				</view>
+				<view style="display: flex; justify-content: center;">
+					<view class="eq_list">
+						<view class="full-width eq_list_ul" style="margin-top: 30upx;">
+							<text class="eq_list_ul_left">打印编号:</text>
+							<text class="eq_list_ul_right">{{LoupanList.order_queue.id || '无'}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">订单编号:</text>
+							<text class="eq_list_ul_right">{{LoupanList.id || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">设备编号:</text>
+							<text class="eq_list_ul_right">{{LoupanList.machine_id || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">产品属性:</text>
+							<text class="eq_list_ul_right">
+								{{LoupanList.order_goods.goods_name || ''}}
+								<text v-if="LoupanList.used_applets != '4'">-{{LoupanList.order_goods.goods_specs || ''}} </text>
+							</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">订单金额:</text>
+							<text class="eq_list_ul_right">¥{{LoupanList.settle_amount || '0'}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">下单时间:</text>
+							<text class="eq_list_ul_right">{{LoupanList.create_time || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">所属代理:</text>
+							<text class="eq_list_ul_right">{{LoupanList.partner.name || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">所属店铺:</text>
+							<text class="eq_list_ul_right">{{LoupanList.shop.short_name || ''}}</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">店铺地址:</text>
+							<view class="eq_list_ul_right" style="width: 350upx;">
+								<view v-html="LoupanList.shop.address"></view>
+							</view>
+						</view>
+						<view class="full-width eq_list_ul">
+							<text class="eq_list_ul_left">订单作品:</text>
+							<view class="eq_list_ul_right">
+								<image :src="LoupanList.works_image" mode="widthFix" style="width: 200upx;"></image>
+							</view>
+						</view>
+					</view>
+				</view>
+				<button v-if="LoupanList.is_pay.value == 1 && Number(LoupanList.real_amount) > 0  && partner_id == LoupanList.partner_id" 
+				type="button" class="mui-btn mui-btn-danger submit" @click="togglePopup()" :class="be_child == 1 ? 'bg-grey' : ''">申请退款</button>
+			</view>
+		</view>
+		<uni-popup ref="showshare" :type="type" @change="change">
+			<view class="uni-share" style="width:630upx; margin:auto; display: flex; flex-direction: column;">
+				<view style="background: #F9F9F9;padding: 20upx;">
+					<view style="border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 32upx; font-weight: 500; color: red;">
+						将原路退回用户支付金额
+					</view>
+					<view style="text-align: left; font-size: 26upx; font-weight: 500; margin: 30upx auto;">退款原因(必填):</view>
+					
+					<textarea 
+					maxlength="10000" 
+					placeholder="请输入您的退款原因..." 
+					v-model="refund_msg" 
+					:show-confirm-bar="false"
+					:cursor-spacing="73" :adjust-position="false"
+					style="height:200upx; width: calc(100% - 20upx); background: #f4f4f4; padding: 10upx; margin: 30upx 0;"/>
+					
+					<view style="text-align: left; font-size: 26upx; font-weight: 500; margin: 30upx auto;">错误图片(非必填):</view>
+					<view style="display: flex;">
+						<image v-if="refund_image" :src="refund_image + '?x-oss-process=image/resize,lfit,w_640'" 
+						mode="aspectFit"
+						style="width: 150upx;height:150upx; margin-right: 10upx;"></image>
+						<view @click="chooseImage()" 
+						style="margin:10upx 0; 
+						width: 150upx;height:150upx; line-height: 150upx;">
+							<view class="iconfont icon-21 cu-btn shadow cuIcon" 
+							style="background: #FFFFFF; text-align: center; font-size: 30upx;"></view>
+						</view>
+					</view>
+				</view>
+				
+				<view style="display: flex;height: 90upx;line-height: 90upx;">
+					<view class="uni-share-btn" style="background: #888888;" @click="cancel('share')">取消</view>
+					<view class="uni-share-btn" @tap="Submit" @touchstart="touchStart" @touchend="touchEnd">提交</view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import logoservice from '@/service/logoservice.js';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	var time = null
+	export default {
+		components: {
+			uniIcon,
+			uniPopup
+		},
+		computed: {},
+		data() {
+			return {
+				long:false,
+				LoupanList: {
+					finish_time:null
+				}, //数据
+				queryPage: {
+					m:'Money/orderDetail',
+					id:null
+				},
+				type: 'center',
+				refund_msg:'设备故障',
+				refund_image:'',
+				touchStartTime:null,
+				touchEndTime:null,
+				lastTapTime:null,
+				be_child:0,
+				partner_id:null,
+			};
+		},
+		/**
+		   * 生命周期函数--监听页面隐藏
+		   */
+		onHide: function () {
+		  //写在onHide()中,切换页面或者切换底部菜单栏时关闭定时器。
+		  clearInterval(time)
+		},
+		onUnload() {
+			// 获取当前页面栈
+			let pages = getCurrentPages()
+			// pages数组中的最后一个为当前页面,倒数第二个为上一个页面
+			let prevPage = pages[pages.length - 2]
+			// 调用上一个页面的onShow函数,将参数传入进去
+			// prevPage.onShow(this.queryPage.id)
+			prevPage.onShow(this.queryPage.id)
+			// 然后调用navigateBack返回页面
+			// uni.navigateBack({
+			// 	// 这个属性表示返回1个页面
+			// 	detal: 1
+			// })
+		},
+		methods: {
+			chooseImage: async function() {
+				var _this = this
+				uni.chooseImage({
+					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['camera', 'album'], //从相册选择
+					count: 1,
+					success: (res) => {
+						let tempFilePaths = res.tempFilePaths;
+						uni.showLoading({
+							title: '图片正在上传...'
+						})
+						wx.uploadFile({
+							url: 'https://tprint.refinecolor.com/partnerapplets/index',
+							filePath: tempFilePaths[0],
+							method: 'POST',
+							name: 'file',
+							header: {
+								'content-type': 'multipart/form-data'
+							},
+							formData: {
+								m: 'Upload/upload'
+							}, //请求额外的form data
+							success: function(res) {
+								console.log(res.data);
+								console.log(JSON.parse(res.data).data.url);
+								uni.hideLoading();
+								uni.showToast({
+									title: '上传成功',
+									icon: 'none',
+									duration: 3000
+								})
+								_this.refund_image = JSON.parse(res.data).data.url
+							},
+							fail: function(res) {
+								console.log(res);
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							}
+						})
+					}
+				})
+			},
+			// 防止重复点击
+			touchStart(e) {
+			  this.touchStartTime = e.timeStamp;
+			},
+			touchEnd(e) {
+			  this.touchEndTime = e.timeStamp;
+			},
+			// 退款原因
+			Submit(e) {
+				var vm = this;
+				// 控制点击事件在350ms内触发,加这层判断是为了防止长按时会触发点击事件
+				if (vm.touchEndTime - vm.touchStartTime < 350) {
+					// 当前点击的时间
+					var currentTime = e.timeStamp;
+					var lastTapTime = vm.lastTapTime;
+					// 更新最后一次点击时间
+					vm.lastTapTime = currentTime;
+					// 如果两次点击时间在300毫秒内,则认为是双击事件
+					if (currentTime - lastTapTime > 300) {
+					  console.log('防止重复点击')
+					  this.$refs['showshare'].close()
+					  logoservice.Withdrawal({m:'Withdrawal/refund',id:this.queryPage.id,refund_msg:this.refund_msg,refund_image:this.refund_image}).then(result => {
+					  	uni.showLoading({title: "退款中...",icon: "none"});
+					  	var that = this
+					  	that.loadGoodsList(2);
+					  	time = setInterval(function(){
+					  		that.loadGoodsList(2);
+					  	},3000)
+					  }).catch(err => {
+					  	uni.showToast({ title: err.msg, icon: 'none' });
+					  });
+					}
+				}
+			},
+			togglePopup() {
+				if(this.$base.Userres.be_child == 1) return;
+				this.$nextTick(() => {
+					this.$refs['showshare'].open()
+				})
+			},
+			cancel(type) {
+				this.$refs['showshare'].close()
+			},
+			change(e) {
+				console.log('是否打开:' + e.show)
+			},
+			datatime(time){
+				if(time != null){
+					var date = new Date(time*1000)
+					var year = date.getFullYear();
+					var month = date.getMonth() + 1;
+					var day = date.getDate();
+					var hour = date.getHours(); 
+					if(month < 10) {
+						month = '0' + month;
+					}
+					if(day < 10) {
+						day = '0' + day;
+					}
+					if(hour < 10) {
+						hour = '0' + hour;
+					}
+					var minute = date.getMinutes();
+					if(minute < 10) {
+						minute = '0' + minute;
+					}
+					var second = date.getSeconds();
+					if(second < 10) {
+						second = '0' + second;
+					}
+					var currentTime = year + "-" + month + "-" + day + "  " + hour + ":" + minute + ":" + second;
+					return currentTime
+				}else{
+					return 0
+				}
+				
+			},
+			// 加载数据
+			loadGoodsList(e) {
+				if(e != 2){
+					uni.showLoading({title: '正在加载中...'})
+				}
+				logoservice.MoneystatementDetail(this.queryPage).then(result => {
+					this.long = true
+					this.LoupanList = result
+					if(e != 2){
+						uni.hideLoading();
+					}
+					if(this.LoupanList.is_pay.value == 4 && e == 2){
+						uni.hideLoading();
+						clearInterval(time)
+					}else{
+						console.log('退款失败')
+					}
+				}).catch(err => {
+					if(e != 2){
+						uni.hideLoading();
+					}
+					if(this.LoupanList.is_pay.value == 4 && e == 2){
+						uni.hideLoading();
+						clearInterval(time)
+					}else{
+						console.log('退款失败')
+					}
+					uni.showToast({ title: err.msg, icon: 'none' });
+				});
+			}
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			// this.loadGoodsList();
+		},
+		// 上拉加载
+		onReachBottom() {
+			// this.loadGoodsList();
+		},
+		onLoad(options) {
+			console.log(options)
+			this.queryPage.id = options.id
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({ m:'Init/init',code:res.code}).then(result => {
+						this.partner_id =result.partner_id;
+						logoservice.setwixinInfo(result);
+						this.loadGoodsList();
+					}).catch(err => {
+						uni.navigateTo({url: 'login',});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+			this.be_child = this.$base.Userres.be_child
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+	.submit{
+		width: calc(100% - 100upx); margin:150upx auto 0; height: 50px; border-radius: 10upx; background: #5CE6B6; color: #FFFFFF;
+		position: fixed;
+		bottom: 10px;
+		left: 0;
+		right: 0;
+	}
+	/* 底部分享 */
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+	
+	.uni-share-btn {
+		width: 50%;
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 26upx;
+		text-align: center;
+		background: #5CE6B6;
+		color: #FFFFFF;
+	}
+	.eq_list{
+		margin:0 auto 20upx; 
+		padding: 10upx 20upx; 
+		background: #FFFFFF; 
+		.eq_list_ul{
+			display: flex; 
+			// align-items: center; 
+			line-height: 55upx;
+			font-size: 28upx;
+			.eq_list_ul_left{
+				// width: 180upx;
+				color: #818181;
+			}
+			.eq_list_ul_right{
+				// width: calc(100% - 180upx); 
+				// text-align: right;
+			}
+		}
+	}
+</style>
diff --git a/pages/mine/order.vue b/pages/mine/order.vue
new file mode 100644
index 0000000..70848be
--- /dev/null
+++ b/pages/mine/order.vue
@@ -0,0 +1,745 @@
+<template>
+	<view class="full-width  full-height content-color " style="position: relative;">
+		<view class="full-width">
+			<view style="position: fixed; width: 100%;">
+				<view style="width:100%;text-align: center;padding: 30upx 0; background: #F1F1F1;"
+					@click="togglePopup()">
+					<text>{{queryPage.goods_name == null ? '全部订单类型' : queryPage.goods_name}}{{queryPage.attr == null ? '' : '-' + queryPage.attr}}</text>
+					<span class="iconfont icon-xiala"
+						style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+				</view>
+				<view style="display: flex;background: #F6F6F6;">
+					<!-- 年月日 -->
+					<view style="width: calc(100% / 2); text-align: left;padding: 30upx 0 30upx 20upx;"
+						@click="showPicker('selector')">
+						<text v-if="queryPage.start_time == null && queryPage.end_time == null">
+							<text v-if="queryPage.year">{{queryPage.year}}年</text>
+							<text v-if="queryPage.month">{{queryPage.month}}月</text>
+							<text v-if="queryPage.day != null">{{queryPage.day}}</text>
+							<text v-if="!queryPage.day && !queryPage.month && !queryPage.year">全部</text>
+						</text>
+						<text v-else>{{datetext}}</text>
+						<span class="iconfont icon-xiala"
+							style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+					</view>
+					<!--状态类型 -->
+					<view
+						style="width: calc(100% / 2); text-align: right;padding: 30upx 20upx 30upx 0; visibility: hidden;">
+						<picker @change="bindPickerChange" :value="queryPage.status" :range="array">
+							{{array[queryPage.status] || '全部'}}
+							<span class="iconfont icon-xiala"
+								style="margin-left: 10upx; font-size: 20upx; color: #BCBEC1;"></span>
+						</picker>
+					</view>
+				</view>
+				<view
+					style="display: flex; padding: 0 20upx 20upx; color: #BCBEC1; background: #F6F6F6; font-size: 24upx;">
+					<view>订单总数:{{queryPage.total || '0'}}笔</view>
+				</view>
+			</view>
+
+           <!-- 暂无相关信息 -->
+			<view class="align-center content-color"
+				style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); "
+				v-if="(LoupanList.length == 0 || LoupanList.length == null) && long">
+				<span class="iconfont icon-wushuju"
+					style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+				<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">暂无相关信息</view>
+			</view>
+
+			<!-- 动态数据 -->
+			<view  scroll-y  class="full-width" @touchend="touchEnd" v-if="long"
+				style=" overflow: auto;  padding-top: 238upx; ">
+				<view v-for="(item, index) in LoupanList" :key="index" class="eq_list" @click="details(item)">
+					<view class="eq_list_div">
+						<view class="full-width eq_list_ul" style="font-size: 28upx;">
+							<text class="eq_list_ul_left">
+								<text>  商户单号: {{item.id}}</text>
+				
+							</text>
+						</view>
+						<view class="full-width eq_list_ul">
+							<view style="width: 100%;font-size: 28upx;">
+							<text>{{item.goods_name || ''}}</text>
+							<text v-if="item.used_applets != '4'">-{{item.goods_specs || ''}} </text> 
+							</view>
+						</view>
+						<view style="width: 100%;font-size: 28upx;overflow: hidden;margin-top: -35upx; height: 50upx;">
+							<text v-if="item.is_pay.value == 4"
+								style="text-align: right; float: right; font-size: 25upx; color: #F56464;">退款完成</text>
+							<text v-else>
+								<text v-if="item.status.value == 2"
+									style="text-align: right; float: right; font-size: 25upx; color: #5CE6B5;">{{item.status.text || ''}}</text>
+								<text v-else-if="item.status.value == 0"
+									style="text-align: right; float: right; font-size: 25upx; color: #FF8D1A;">{{item.status.text || ''}}</text>
+								<text v-else-if="item.status.value == 3"
+									style="text-align: right; float: right; font-size: 25upx; color: #F56464;">{{item.status.text || ''}}</text>
+								<text v-else
+									style="text-align: right; float: right; font-size: 25upx; color: #FF8D1A;">{{item.status.text || ''}}</text>
+							</text>
+						</view>
+						<view style="width: 100%;font-size: 28upx;overflow: hidden;margin-top: -95upx; height: 50upx;">
+						<text 
+							style="text-align: right; float: right; font-size: 25upx; ">	{{item.create_time || ''}}</text>
+						</view>
+					</view>
+				</view>
+				
+				<view style="height:60upx;width: 100%;"></view> 
+				
+			</view>
+			<!--动态数据完 -->
+			
+		</view>
+
+		<!--返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+		<mpvue-picker ref="mpvuePicker" :themeColor="'#53B2B0'" :pickerValueDefault="pickerValueDefault"
+			@onChange="onChange" @onCancel="onCancel" @onConfirm="onConfirm" :pickerValueArray="pickerValueArray">
+		</mpvue-picker>
+		<uni-popup ref="showshare" :type="type" @change="change">
+			<view class="uni-share" style="width: 100%; margin: auto;">
+				<view style="background: #F9F9F9;width: 100%;border-bottom: 1upx solid #00000000;">
+					<view style="width: 100%;border-bottom: 1upx solid #E9E7ED; height:100upx; 
+					text-align: center;line-height: 100upx; font-size: 26upx; font-weight: 500;">
+						选择订单类型
+					</view>
+					<scroll-view scroll-y style="margin: auto; height: 500upx; overflow: hidden; overflow-y: scroll;">
+						<view style="width: calc(100% - 40upx); margin:20upx auto; overflow: hidden;">
+							<view v-for="(item, index) in goodsItem" :key="index" @click="selectMonth(item)"
+								:class="goods_name == item.value  ? 'green':''"
+								style="width: calc(33% - 20upx);margin:10upx; float: left; background: #ffffff;height: 60px; border-radius: 5upx; font-size: 26upx; text-align: center;line-height: 60px;">
+								{{item.value == null ? '全部' : item.value}}
+							</view>
+						</view>
+					</scroll-view>
+				</view>
+				<view class="uni-share-btn" @click="cancel('share')">取消</view>
+			</view>
+		</uni-popup>
+	</view>
+
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import uniPopup from '../index/common/uni-popup/uni-popup.vue'
+	import Enums from '@/util/Enums';
+	//自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePickernew.vue';
+	export default {
+		components: {
+			uniPopup,
+			uniIcon,
+			foot,
+			mpvuePicker
+		},
+		computed: {},
+		data() {
+			return {
+				long: false,
+				LoupanList: [], //数据
+				goodSize: null,
+				//返回顶部
+				totopstatus: false,
+				//上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Money/orderList',
+					machine_id: null,
+					page: 1,
+					per_page: 12,
+					total: null,
+					//status: 2,//2付款状态
+					year: null, //年
+					month: null, //月
+					day: null, //日
+					attr: null,
+					//设备榜单增加参数
+					start_time: null,
+					end_time: null,
+					is_pay: null, //退款状态4
+					status: null,
+					proxy: 0, //订单默认类型 proxy,0我的订单,1代理订单
+				},
+				goods_name: null,
+				goodsItem: [],
+				order_amount: null,
+				total_mount: null,
+				//年
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				array: ['待清算', '待结算', '已结算', '全部'],
+				type: 'bottom',
+				datetext: null,
+				loadBottomComplete:true,//加载成功
+			};
+		},
+		
+		mounted() {
+
+		},
+		
+		methods: {
+			details(item) {
+				uni.navigateTo({
+					url: '/pages/mine/order-details?id=' + item.id,
+				});
+			},
+			bindPickerChange(e) {
+				//console.log('picker发送选择改变,携带值为', e.target)
+				if (e.target.value == 3) {
+					this.queryPage.status = null
+				} else {
+					this.queryPage.status = e.target.value
+				}
+				//console.log()
+				this.LoupanList = []
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			
+			getToday() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				let mydate = myDate.getDate();
+				if (myDate.getDate() < 10) {
+					mydate = '0' + myDate.getDate(); //补齐
+				}
+				this.queryPage.day = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+			},
+			
+			getMonth() {
+				let myDate = new Date();
+				let myMonth = myDate.getMonth() + 1;
+				if (myMonth < 10) {
+					myMonth = '0' + myMonth; //补齐
+				}
+				this.queryPage.month = myDate.getFullYear() + '-' + myMonth;
+			},
+			showPicker(mode) {
+				this.$refs.mpvuePicker.show();
+			},
+			//确定
+			onConfirm(e) {
+				this.queryPage.year = null
+				this.queryPage.month = null
+				this.queryPage.day = null
+				this.queryPage.start_time = null
+				this.queryPage.end_time = null
+				if (e.value.length == 1) {
+					this.queryPage.year = e.value[0]
+				} else if (e.value.length == 2) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + e.value[1] //补齐
+					}
+					this.queryPage.month = e.value[0] + '-' + myMonth
+				} else if (e.value.length == 3) {
+					let myMonth = e.value[1]
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth //补齐
+					}
+					let mydate = e.value[2]
+					if (mydate < 10) {
+						mydate = '0' + e.value[2] //补齐
+					}
+					this.queryPage.day = e.value[0] + '-' + myMonth + '-' + mydate
+				}
+				this.LoupanList = []
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+			onChange(e) {
+				
+			},
+			onCancel(e) {
+	
+			},
+			//加载数据
+			loadGoodsList(direction) {
+				//console.log("加载")
+				//if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+					   this.loadBottomComplete = true;
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.MoneystatementList(this.queryPage).then(result => {
+					
+					let queryList = result.data
+					// 下拉更新时,查询结果集
+					// 触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					//console.log(this.LoupanList)
+					//分页对象处理
+					this.queryPage.total = result.total;
+					this.queryPage.per_page = result.per_page;
+					this.order_amount = result.gross_profit_total;
+					this.total_mount = result.total_mount;
+					//停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					//数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					
+					setTimeout(() => {
+						uni.hideLoading();
+						//this.loadBottomComplete = true;
+					}, 500);
+					
+					//uni.hideLoading();
+					this.long = true
+					//this.queryPage.page = this.queryPage.page + 1;
+					
+					//uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+						this.loadBottomComplete = true;
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg ? err.msg : err.data,
+						icon: 'none'
+					});
+				});
+			},
+			//返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 200
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1000) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			//做滚动加载使用
+			// loadMore() {
+			// 	console.log("loadMore进来")
+			// 	if (Math.ceil(this.queryPage.total / this.queryPage.per_page) < this.queryPage.page) {
+			// 		return setTimeout(() => {
+			// 			uni.showToast({
+			// 				title: '没有更多数据了!',
+			// 				icon: 'none'
+			// 			});
+			// 		}, 500);
+			// 	}
+			// 	this.queryPage.page = this.queryPage.page + 1;
+			// 	this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			// },
+			cancel(type) {
+				this.$refs['show' + type].close()
+			},
+			change(e) {
+				//console.log('是否打开:' + e.show)
+			},
+			togglePopup() {
+				this.$nextTick(() => {
+					this.$refs['show' + 'share'].open()
+				})
+			},
+
+			//选择月份
+			selectMonth(item) {
+				if (item.status == -20) {
+					this.goods_name = ""
+					this.queryPage.status = null;
+				} else {
+					this.goods_name = item.value ? item.value : null
+					this.queryPage.status = item.status;
+				}
+				this.$refs['show' + 'share'].close();
+				this.dataLoadState.pullDownRefresh = false;
+				this.dataLoadState.reachBottom = false;
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				this.LoupanList = []
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			},
+
+			//代理订单订单类型proxy,0我的订单,1代理订单   
+			//加载全部商品类型数据
+			getGoodsAttrList() {
+				logoservice.MoneystatementList({
+					m: 'Money/getOrderStatus',
+					machine_id: this.queryPage.machine_id,
+					sub: 1
+				}).then(result => {
+					this.goodsItem = result;
+					this.goodsItem.unshift({
+						status: "-20",
+						value: "全部"
+					})
+				}).catch(res => {
+					uni.showToast({
+						title: res.msg ? res.msg : '未查到商品类型选择',
+						icon: 'none'
+					});
+				});
+			},
+			// 刷新状态
+			mentDetail(id) {
+				logoservice.MoneystatementDetail({
+					m: 'Money/orderDetail',
+					id: id
+				}).then(result => {
+					this.LoupanList.forEach(item => {
+						if (item.id == id) {
+							item.is_pay = result.is_pay
+							item.status = result.status
+						}
+					})
+				}).catch(err => {});
+			}
+		},
+		//下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.total = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			this.getGoodsAttrList()
+		},
+		//上拉加载
+		onReachBottom() {
+			if (this.LoupanList.length < 12) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 300);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			 // var page = this.queryPage.page + 1; //获取当前页数并+1
+			 //    this.setData({
+			 //      queryPage : page, //更新当前页数
+			 //    })
+			
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+		onLoad(options) {
+			// 设置时间
+			// 门店关联
+			
+		
+			if (options.shop_id) {
+				this.queryPage.shop_id = options.shop_id
+				wx.setNavigationBarTitle({
+					title: options.shop_name
+				})
+				this.queryPage.day = null
+				this.queryPage.month = null
+				this.queryPage.year = null
+			}
+			// 设备关联
+			if (options.machineid) {
+				this.queryPage.machine_id = options.machineid
+				wx.setNavigationBarTitle({
+					title: options.machineid
+				})
+				this.queryPage.day = null
+				this.queryPage.month = null
+				this.queryPage.year = null
+				// this.pickerValueArray = ['month']
+				// //获取本月
+				// let myDate = new Date();
+				// let myMonth = myDate.getMonth() + 1;
+				// if (myMonth < 10) {
+				// 	myMonth = '0' + myMonth; //补齐
+				// }
+				// this.queryPage.day = null
+				// this.queryPage.month = myDate.getFullYear() + '-' + myMonth
+			}
+			if (options.start_time) {
+				this.queryPage.start_time = options.start_time
+			}
+			if (options.end_time) {
+				this.queryPage.end_time = options.end_time
+			}
+			if (options.is_pay) {
+				this.queryPage.is_pay = options.is_pay
+			}
+			if (options.datetext) {
+				this.datetext = options.datetext
+			}
+			
+			if (options.day) {
+				this.queryPage.day = options.day
+			}
+			
+			if (options.month) {
+				this.queryPage.month = options.month
+			}
+			
+			if (options.proxy) {
+				this.queryPage.proxy = options.proxy
+			}
+			
+			if (options.goods_name) {
+				this.queryPage.goods_name = options.goods_name
+			}
+
+			
+
+			if (options.date != 'undefined' && options.date != null) {
+				if (options.date == 'yesterday') {
+					this.pickerValueArray = ['yesterday']
+					// 获取昨天的日期
+					let myDate = new Date();
+					let myMonth = myDate.getMonth() + 1;
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth; //补齐
+					}
+					let mydate = myDate.getDate() - 1;
+					if (mydate < 10) {
+						mydate = '0' + mydate; //补齐
+					}
+					this.queryPage.day = myDate.getFullYear() + '-' + myMonth + '-' + mydate;
+				}
+				if (options.date == 'month') {
+					this.pickerValueArray = ['month']
+					// 获取本月
+					let myDate = new Date();
+					let myMonth = myDate.getMonth() + 1;
+					if (myMonth < 10) {
+						myMonth = '0' + myMonth; //补齐
+					}
+					this.queryPage.day = null
+					this.queryPage.month = myDate.getFullYear() + '-' + myMonth
+				}
+			}
+
+			//console.log("订单日期后"+this.queryPage.date);
+			if (this.queryPage.day ) {
+
+			} else {
+				if ((options.machineid == '' || options.machineid == null) && this.queryPage.month == null) {
+                    //console.log("进来"+ this.queryPage.month)
+					this.getMonth()
+					this.pickerValueArray = ['month']
+				}
+			}
+
+			if (options.goods_name != 'undefined' && options.goods_name != null && options.goods_name != '') {
+				wx.setNavigationBarTitle({
+					title: "订单列表"
+				})
+				this.goodSize = {
+					goods_name: options.goods_name,
+					goods_specs: options.goods_specs,
+					///status:      this.queryPage.status != null ? this.queryPage.status : null ,
+				}
+				this.queryPage.day = null
+				this.queryPage.month = null
+				this.queryPage.year = null
+				// this.pickerValueArray = ['month']
+				// 获取本月
+				// let myDate = new Date();
+				// let myMonth = myDate.getMonth() + 1;
+				// if (myMonth < 10) {
+				// 	myMonth = '0' + myMonth; //补齐
+				// }
+				// this.queryPage.day = null
+				// this.queryPage.month = myDate.getFullYear() + '-' + myMonth
+			}
+			
+			
+			this.getGoodsAttrList();
+			if (this.goodSize != null) {
+				//console.log("111");
+				this.selectMonth(this.goodSize);
+			} else {
+				this.LoupanList = []
+				this.queryPage.page = 1;
+				this.queryPage.total = 0;
+				//console.log("222");
+				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			}
+			
+			
+			// uni.login({
+			// 	provider: 'weixin',
+			// 	success: (res) => {
+			// 		logoservice.login({
+			// 			m: 'Init/init',
+			// 			code: res.code
+			// 		}).then(result => {
+			// 			logoservice.setwixinInfo(result);
+			// 			this.getGoodsAttrList();
+			// 			if (this.goodSize != null) {
+			// 				//console.log("111");
+			// 				this.selectMonth(this.goodSize);
+			// 			} else {
+			// 				this.LoupanList = []
+			// 				this.queryPage.page = 1;
+			// 				this.queryPage.total = 0;
+			// 				//console.log("222");
+			// 				this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			// 			}
+			// 		}).catch(err => {
+			// 			uni.navigateTo({
+			// 				url: 'login',
+			// 			});
+			// 		})
+			// 	},
+			// 	fail: (err) => {
+			// 		console.error('授权登录失败:' + JSON.stringify(err));
+			// 	}
+			// });
+		},
+		onShow(id) {
+			//console.log(id)
+			// console.log('-------onShow')
+			if (id) {
+				this.mentDetail(id)
+			}
+			// this.dataLoadState.pullDownRefresh = false;
+			// this.dataLoadState.reachBottom = false;
+			// this.queryPage.page = 1;
+			// this.queryPage.total = 0;
+			// this.LoupanList = []
+			// this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+			// this.getGoodsAttrList()
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.butn {
+		font-size: 30upx;
+		font-weight: 400;
+		height: 100upx;
+		line-height: 100upx;
+		text-align: center;
+		width: 100%;
+	}
+
+	/*底部分享 */
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90upx;
+		line-height: 90upx;
+		font-size: 26upx;
+		text-align: center;
+		background: #FFFFFF;
+	}
+
+	.eq_list {
+		width: 100%;
+		padding: 0upx 20upx;
+		background: #FFFFFF;
+		height:130upx;
+
+		.eq_list_div {
+			border-top: 1upx solid #F5F5F5;
+			padding: 30upx 0;
+
+			.eq_list_ul {
+				display: flex;
+				align-items: center;
+				line-height: 40upx;
+
+				.eq_list_ul_left {
+					width: 500upx;
+				}
+
+				.eq_list_ul_right {
+					width: calc(100% - 300upx);
+					text-align: right;
+					font-weight: 400;
+				}
+			}
+		}
+	}
+
+	//返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+
+	.uni-share {
+		display: flex;
+		flex-direction: column;
+	}
+
+	.uni-share-btn {
+		height: 90rpx;
+		line-height: 90rpx;
+		font-size: 14px;
+		text-align: center;
+		color: #666;
+		background: #FFFFFF;
+		border-top: 1px solid #EEEEEE;
+	}
+
+	.green {
+		background-color: #4FB36B !important;
+		color: #FFFFFF;
+	}
+</style>
diff --git a/pages/store/equipment_list.vue b/pages/store/equipment_list.vue
new file mode 100644
index 0000000..bd5deac
--- /dev/null
+++ b/pages/store/equipment_list.vue
@@ -0,0 +1,360 @@
+<template>
+	<view class="full-width content-color full-height" style="position: relative;">
+		<view class="full-width">
+			<!-- 动态数据 -->
+			<view scroll-y @scrolltolower="loadMore()" class="full-width" @touchend="touchEnd" v-if="long">
+				<view style="padding-bottom: 100upx;">
+					<view v-for="(item, index) in LoupanList" :key="index" @click="store(item)" class="eq_list">
+						<view class="full-width eq_list_top">
+					      <text class="eq_list_top_left">{{item.code}}-{{item.id}}</text>
+							<!-- 设备状态 0:离线 1:正常 2:生产中 3:故障 4:调试 5:升级中 -->
+							<text v-if="item.status.value == 0" class="eq_list_top_right_fault" style="background:#F56364;">离线</text>
+							<text v-if="item.status.value == 1" class="eq_list_top_right_fault" style="background:#5CE6B5;">正常</text>
+							<text v-if="item.status.value == 2" class="eq_list_top_right_fault" style="background:#5CE6B5;">生产中</text>
+							<text v-if="item.status.value == 3" class="eq_list_top_right_fault" style="background:#F2A03E;">故障</text>
+							<text v-if="item.status.value == 4" class="eq_list_top_right_fault" style="background:#F2A03E;">调试</text>
+							<text v-if="item.status.value == 5" class="eq_list_top_right_fault" style="background:#F2A03E;">升级中</text>
+						</view>
+						<view class="full-width eq_list_ul" style="line-height: 70upx;">
+							<text class="eq_list_ul_left">店铺<strong></strong></text>
+							<text class="eq_list_ul_right">{{category(item)}}</text>
+						</view>
+						
+						<view class="full-width eq_list_ul" style="line-height: 70upx;">
+							<text class="eq_list_ul_left">所属代理<strong></strong></text>
+							<text v-if="Userres_partner_id == 0" class="eq_list_ul_right">{{item.partner.name}}</text>
+							<text v-else class="eq_list_ul_right">{{partnername(item.partner_id,item.partner)}}</text>
+						</view>
+						
+						<view class="full-width eq_list_ul" style="line-height: 70upx;">
+							<text class="eq_list_ul_left">设备图片<strong></strong></text>
+							<view class="eq_list_ul_right">
+								<image @click.stop="previewImage(item.cover)"  v-if="item.cover" :src="item.cover + '?x-oss-process=image/resize,lfit,w_300'"
+								mode="aspectFit" style="width:66upx; height:66upx; border-radius:10upx; display: block; float: right;"></image>
+								<text v-else>暂未上传</text>
+							</view>
+						</view>
+						<!-- <view v-for="(itemstock, indexstock) in item.stock" :key="indexstock">
+							<view class="full-width eq_list_ul">
+								<text class="eq_list_ul_left">{{itemstock.name}}</text>
+								<label class="eq_list_ul_right">
+									【<label v-for="(val, k) in itemstock.sub" :key="k">
+										<text v-if="val.stock >= 10">{{val.goods_size}}({{val.stock}})<text v-if="k<itemstock.sub.length-1">,</text></text>
+										<text v-if="val.stock < 10 &&  val.stock != 0" style="color:#F2A03E;">{{val.goods_size}}({{val.stock}})<text v-if="k<itemstock.sub.length-1">,</text></text>
+										<text v-if="val.stock == 0" style="color:#E72C32;">{{val.goods_size}}({{val.stock}})<text v-if="k<itemstock.sub.length-1">,</text></text>
+									</label>】
+								</label>
+							</view>
+						</view> -->
+					</view>          
+				</view>
+				<!-- 暂无相关信息 -->
+				<view class="align-center content-color" style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);"
+				 v-if="LoupanList.length == 0 || LoupanList.length == null">
+					<span class="iconfont icon-wushuju" style="font-size: 100upx; text-align: center; color: #B2B2B2;"></span>
+					<view style="color: #B2B2B2; text-align: center; line-height: 50upx;font-size: 24upx;">暂无相关设备信息</view>
+				</view>
+			</view>
+			<!-- 动态数据完 -->
+		</view>
+		<!-- 返回顶部 -->
+		<view v-if="totopstatus" class="to-top content-color" @click="totop()">
+			<view class="fa fa-angle-right to-top-icon"></view>
+		</view>
+		<!-- 自定义底部 -->
+		<!-- <foot action="3"></foot> -->
+	</view>
+</template>
+
+<script>
+	import uniIcon from '@/components/uni-icon/uni-icon.vue';
+	import Enums from '@/util/Enums';
+	import Env from '@/util/Env.js';
+	// 自定义底部
+	import foot from '../../components/foot.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			uniIcon,
+			foot
+		},
+		computed: {},
+		data() {
+			return {
+				long: false,
+				LoupanList: [], //数据
+				// 返回顶部
+				totopstatus: false,
+				// 上拉状态
+				dataLoadState: {
+					pullDownRefresh: false,
+					reachBottom: false
+				},
+				queryPage: {
+					m: 'Machine/list',
+					page: 1,
+					per_page: 6,
+					stock:null,     //0:查询缺货设备
+					status:null,	//good:好的设备,bad:坏的设备,其它所有设备
+					count: 0
+				},
+				Userres_partner_id:null,
+			};
+		},
+		methods: {
+			partnername(partner_id,partner){
+				var partner_name = '尚未铺设';
+				if (partner) {
+					partner.forEach(item => {
+						if (item.id == partner_id) {
+							partner_name = item.name
+						}
+					});
+				}
+				return partner_name
+			},
+			category(item) {
+				var dataname = '尚未铺设';
+				if (item.shop) {
+					item.shop.forEach(sub_item => {
+						if (item.shop_id == sub_item.id) {
+							dataname = sub_item.short_name
+						}
+					});
+				}
+				return dataname
+			},
+			// 加载数据
+			loadGoodsList(direction) {
+				if (this.dataLoadState.pullDownRefresh || this.dataLoadState.reachBottom) return;
+				uni.showLoading({
+					title: '正在加载中...'
+				})
+				this.dataLoadState.pullDownRefresh = direction === Enums.DATA_DIRECTION.UP;
+				this.dataLoadState.reachBottom = direction === Enums.DATA_DIRECTION.DOWN;
+				if (this.dataLoadState.reachBottom) {
+					if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+						return setTimeout(() => {
+							uni.showToast({
+								title: '没有更多数据了!',
+								icon: 'none'
+							});
+						}, 500);
+					}
+				}
+				logoservice.Machinelist(this.queryPage).then(result => {
+					// console.log(result.data)
+					this.long = true
+					let queryList = result.data
+					
+				
+					queryList.forEach(item => {
+						item.category.forEach(itemone => {
+							if (itemone.id == item.machine_category_id) {
+								item.machine_category_text = itemone.title
+							}
+						})
+					})
+					
+					// 下拉更新时,查询结果集
+					// 触底更新时,当前列表+查询结果集
+					let newList = this.LoupanList.concat(queryList)
+					this.LoupanList = newList
+					// console.log(this.LoupanList)
+					// 分页对象处理
+					this.queryPage.count = result.count;
+					this.queryPage.per_page = result.per_page;
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+					// uni.showToast({ title: '加载成功', icon: 'none' });
+				}).catch(err => {
+					// 停止当前页面下拉刷新
+					if (this.dataLoadState.pullDownRefresh) uni.stopPullDownRefresh();
+					// 数据加载状态处理 false
+					this.dataLoadState.pullDownRefresh = false;
+					this.dataLoadState.reachBottom = false;
+					uni.hideLoading();
+				});
+			},
+			store(item) {
+				uni.navigateTo({
+					url: '../mall/eq-details?id=' + item.id,
+				});
+			},
+			// 返回顶部
+			totop() {
+				uni.pageScrollTo({
+					scrollTop: 0,
+					duration: 300
+				});
+				this.totopstatus = false
+			},
+			touchEnd(e) {
+				if (e.mp.changedTouches[0].pageY > 1200) {
+					this.totopstatus = true
+				} else {
+					this.totopstatus = false
+				}
+			},
+			// 做滚动加载使用
+			loadMore() {
+				if (Math.ceil(this.queryPage.count / this.queryPage.per_page) < this.queryPage.page) {
+					return setTimeout(() => {
+						uni.showToast({
+							title: '没有更多数据了!',
+							icon: 'none'
+						});
+					}, 500);
+				}
+				this.queryPage.page = this.queryPage.page + 1;
+				this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+			},
+		},
+		// 下拉加载
+		onPullDownRefresh() {
+			this.dataLoadState.pullDownRefresh = false;
+			this.dataLoadState.reachBottom = false;
+			this.queryPage.page = 1;
+			this.queryPage.count = 0;
+			this.LoupanList = []
+			this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+		},
+		// 上拉加载
+		onReachBottom() {
+			console.log('上拉加载')
+			if (this.LoupanList.length < 6) {
+				return setTimeout(() => {
+					uni.showToast({
+						title: '没有更多数据了!',
+						icon: 'none'
+					});
+				}, 500);
+			}
+			this.queryPage.page = this.queryPage.page + 1;
+			this.loadGoodsList(Enums.DATA_DIRECTION.DOWN);
+		},
+		onLoad(options) {
+			console.log(options.status)
+			if(options.status == 'good'){
+				this.queryPage.status = 'good'
+				wx.setNavigationBarTitle({title: '正常设备'})
+			}
+			if(options.status == 'bad'){
+				this.queryPage.status = 'bad'
+				wx.setNavigationBarTitle({title: '问题设备'})
+			}
+			if(options.status == '0'){
+				this.queryPage.stock = '0'
+				wx.setNavigationBarTitle({title: '缺货设备'})
+			}
+			
+			uni.login({
+				provider: 'weixin',
+				success: (res) => {
+					logoservice.login({
+						m: 'Init/init',
+						code: res.code
+					}).then(result => {
+						this.$base.Userres = result //记录用户登录信息
+						this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+						logoservice.setwixinInfo(result);
+						this.LoupanList = []
+						this.queryPage.page = 1;
+						this.queryPage.count = 0;
+						this.loadGoodsList(Enums.DATA_DIRECTION.UP);
+					}).catch(err => {
+						uni.navigateTo({
+							url: 'login',
+						});
+					})
+				},
+				fail: (err) => {
+					console.error('授权登录失败:' + JSON.stringify(err));
+				}
+			});
+		},
+		onShow() {
+
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		width: 100%;
+		height: 100%;
+		background: #FFFFFF;
+	}
+
+	.eq_list {
+		width: calc(100% - 60upx);
+		margin: 30upx 30upx 0;
+		padding: 10upx 20upx;
+		border-radius: 10upx;
+		background: #FFFFFF;
+		box-shadow: 0px 0px 20px 0px rgba(51, 51, 51, 0.1);
+		.eq_list_top {
+			border-bottom: 1upx solid #EBEEF5;
+			overflow: hidden;
+			padding: 10upx 0;
+
+			.eq_list_top_left {
+	float: left;
+	// width: 150upx;
+	padding: 6upx 0upx;
+	font-weight: bold;
+	font-size: 36upx;
+			}
+
+			.eq_list_top_right_fault {
+				float: right;
+				background: #E72C31;
+				font-size: 24upx;
+				padding: 10upx 18upx;
+				color: #FFFFFF;
+				border-radius: 30upx;
+			}
+
+		}
+
+		.eq_list_ul {
+			display: flex;
+			align-items: center;
+			line-height: 45upx;
+
+			.eq_list_ul_left {
+				width: 150upx;
+			}
+
+			.eq_list_ul_right {
+				width: calc(100% - 150upx);
+				text-align: right;
+			}
+		}
+	}
+
+	// 返回顶部
+	.to-top {
+		position: fixed;
+		bottom: 150upx;
+		right: 30upx;
+		width: 80upx;
+		height: 80upx;
+		border-radius: 50%;
+		text-align: center;
+		line-height: 80upx;
+		// box-shadow: 5upx 5upx 5upx #ebeef5;
+		transform: rotate(-90deg);
+		background: #000;
+		opacity: 0.5;
+		z-index: 999;
+	}
+
+	.to-top-icon {
+		color: #FFFFFF;
+	}
+</style>
diff --git a/pages/store/shopdetails.vue b/pages/store/shopdetails.vue
new file mode 100644
index 0000000..b93a1b8
--- /dev/null
+++ b/pages/store/shopdetails.vue
@@ -0,0 +1,679 @@
+<template>
+	<view class="edit-address full-height full-width">
+
+		<view class="item-new-list" v-if="machine_id != '' &&machine_id !=null ">
+			<view class="item full-width">
+				<label class="text content-color">设备编号</label>
+				<label class="value content-color">
+
+					<!-- 	<view style="text-align: right;" class="full-width" v-if="list.partner_id">{{agentReturn(list.partner_id)}}</view> -->
+					<view style="text-align: right; color: #888888;margin-top: -35upx;" class="full-width">
+						{{machine_id}}</view>
+					<!-- <label class="fa fa-angle-right align-right sub-color"></label> -->
+
+					<!-- 	<text style="text-align: right;" class="full-width"  style="margin-left: 340upx; ">{{machine_id}} 1111111</text> -->
+				</label>
+			</view>
+		</view>
+
+
+
+		<view class="form full-width">
+
+			<view class="item full-width" @click="showPicker('agent')" v-if="Userres_partner_id == 0">
+				<label class="text content-color">所属代理</label>
+				<label class="value content-color">
+
+
+					<view style="text-align: right;" class="full-width" v-if="list.partner_id">
+						{{agentReturn(list.partner_id)}}</view>
+					<view style="text-align: right; color: #888888;" class="full-width" v-if="!list.partner_id">请选择所属代理
+					</view>
+					<label class="fa fa-angle-right align-right sub-color"></label>
+
+				</label>
+			</view>
+
+
+
+
+			<view class="item full-width" @click="showPicker('shop_category_id')">
+				<label class="text content-color">店铺分类</label>
+				<label class="value content-color">
+					<view style="text-align: right;" class="full-width" v-if="list.shop_category_id">
+						{{category(list.shop_category_id)}}</view>
+					<view style="text-align: right; color: #888888;" class="full-width" v-if="!list.shop_category_id">
+						请选择店铺分类</view>
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+
+			<view class="item full-width" @click="openmap" style="min-height: 90upx; height: auto;">
+				<label class="text content-color">店铺地址</label>
+				<label class="value content-color">
+					<view class="full-width" style="text-align: right;" v-if="list">{{jiequ(list.address) || ''}}</view>
+					<view class="full-width" style="text-align: right; color: #888888; margin-right: 10px;"
+						v-if="!list.address">请选择地址</view>
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+
+			<view class="item full-width">
+				<label class="text content-color">店铺名称</label>
+				<label class="value content-color">
+					<input type="text" v-model="list.short_name" class="full-width" placeholder="请输入店铺名称" />
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+			<!-- 	<view class="item full-width">
+				<label class="text content-color">负责人</label>
+				<label class="value content-color">
+					<input type="text" v-model="list.owner" class="full-width" placeholder="请输入负责人" />
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view> -->
+
+			<!-- <view class="item full-width" @click="chooseImage()">
+				<label class="text content-color">店铺图片</label>
+				<label class="value content-color">
+					<input v-if="!list.image" type="text" disabled="disabled" class="full-width" placeholder="请上传店铺图片" />
+					<input v-if="list.image" type="text" disabled="disabled" class="full-width" />
+					<image v-if="list.image" :src="list.image + '?x-oss-process=image/resize,lfit,w_640'" mode="aspectFit" style="width:66upx; height:66upx; border-radius:10upx; display: block; float: right;"></image>
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+			<view class="item full-width">
+				<label class="text content-color">联系电话</label>
+				<label class="value content-color">
+					<input type="number" v-model="list.phone" class="full-width" placeholder="请输入联系电话" />
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view> -->
+
+			<view class="item full-width">
+				<label class="text content-color">营业时间(起)</label>
+				<label class="value content-color">
+					<picker class="full-width" mode="time" :value="list.start_time" start="00:00" end="23:59"
+						@change="starttimeChange">
+						<view style="text-align: right;" v-if="list.start_time">{{list.start_time}}</view>
+						<view style="text-align: right; color: #888888;" v-if="!list.start_time">请选择营业时间</view>
+					</picker>
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+			<view class="item full-width">
+				<label class="text content-color">营业时间(末)</label>
+				<label class="value content-color">
+					<picker class="full-width" mode="time" :value="list.end_time" start="00:00" end="23:59"
+						@change="endtimeChange">
+						<view style="text-align: right;" v-if="list.end_time">{{list.end_time}}</view>
+						<view style="text-align: right; color: #888888;" v-if="!list.end_time">请选择营业时间</view>
+					</picker>
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+
+			<!-- 	<view class="item full-width" @click="showPicker('per_consum')">
+				<label class="text content-color">人均消费</label>
+				<label class="value content-color">
+					<input type="text" disabled="disabled" v-model="list.per_consum" class="full-width" placeholder="请选择人均消费" />
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+			 -->
+			<view class="item full-width" @click="profit()" v-if="id">
+				<label class="text content-color" style="width: 300upx;color: #5CE6B5;">查看门店关联收益</label>
+				<label class="value content-color" style="width: calc(100% - 300upx);">
+					<input type="text" disabled="disabled" class="full-width" />
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+
+			<view class="item full-width" @click="toorder()" v-if="id">
+				<label class="text content-color" style="width: 300upx;color: #5CE6B5;">查看门店关联订单</label>
+				<label class="value content-color" style="width: calc(100% - 300upx);">
+					<input type="text" disabled="disabled" class="full-width" />
+					<label class="fa fa-angle-right align-right sub-color"></label>
+				</label>
+			</view>
+
+		</view>
+
+		<mpvue-picker ref="mpvuePicker" :themeColor="'#53B2B0'" :mode="mode" :pickerValueDefault="pickerValueDefault"
+			@onChange="onChange" @onConfirm="onConfirm" @onCancel="onCancel"
+			:pickerValueArray="pickerValueArray"></mpvue-picker>
+		<view class="footer" style="bottom: 100upx;">
+			<view class="footer_but" @click="onSave()">保存</view>
+		</view>
+		<view class="footer" style="display: flex;
+		flex-direction: row; 
+		color: #333; 
+		font-size: 32upx;
+		bottom: 20upx; 
+		justify-content: center;">
+			<checkbox checked="checked"> </checkbox>
+			我已经阅读同意 <view style="color:rgba(92, 230, 182, 1);" @click="toUserAgreement()"> 用户协议 </view>
+			和
+			<view style="color:rgba(92, 230, 182, 1);" @click="toPrivacyPolicy()">隐私协议 </view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import mpvuePicker from '../../components/mpvue-picker/mpvuePicker.vue';
+	import logoservice from '@/service/logoservice.js';
+	export default {
+		components: {
+			mpvuePicker
+		},
+		computed: {
+
+		},
+		data() {
+			return {
+				list: {
+					m: 'Shop/save'
+				},
+				id: null,
+				loading: false,
+				//end
+				SortNumber: 1,
+				mode: 'selector',
+				pickerValueArray: [],
+				pickerValueDefault: [0],
+				start: 1,
+				item: null,
+				per_consum_list: [{
+						label: '1-50元',
+						value: 0
+					},
+					{
+						label: '50-100元',
+						value: 1
+					},
+					{
+						label: '超过200',
+						value: 2
+					}
+				],
+				agentList: null,
+				Userres_partner_id: null,
+				machine: null,
+				machine_id: null,
+			}
+		},
+		methods: {
+
+			//用户协议
+			toUserAgreement() {
+				uni.navigateTo({
+					url: '../mine/UserAgreement'
+				});
+			},
+
+			//隐私政策
+			toPrivacyPolicy() {
+				uni.navigateTo({
+					url: '../mine/PrivacyPolicy'
+				});
+			},
+
+			//查看代理关联收益
+			profit() {
+				uni.navigateTo({
+					url: '../mall/eq-profit?shop_id=' + this.list.id + '&shop_name=' + this.list.short_name,
+				});
+			},
+
+			//查看代理关联订单
+			toorder() {
+				uni.navigateTo({
+					url: '../mine/order?shop_id=' + this.list.id + '&shop_name=' + this.list.short_name,
+				});
+			},
+
+			jiequ(e) {
+				if (e != undefined) {
+					return e.replace('<br/>', '')
+				}
+			},
+
+			setData(obj) {
+				let that = this;
+				let keys = [];
+				let val, data;
+				Object.keys(obj).forEach(function(key) {
+					keys = key.split('.');
+					val = obj[key];
+					data = that.$data;
+					keys.forEach(function(key2, index) {
+						if (index + 1 == keys.length) {
+							that.$set(data, key2, val);
+						} else {
+							if (!data[key2]) {
+								that.$set(data, key2, {});
+							}
+						}
+						data = data[key2];
+					})
+				});
+			},
+
+			category(time) {
+				var times = '';
+				if (this.list.category) {
+					this.list.category.forEach(item => {
+						if (item.id == time) {
+							times = item.title
+						}
+					});
+				}
+				return times
+			},
+			agentReturn(id) {
+				let partner_name = '';
+				if (this.agentList) {
+					this.agentList.forEach(item => {
+						if (item.id == id) {
+							partner_name = item.label
+						}
+					});
+				}
+				return partner_name
+			},
+			// 选择时间 
+			starttimeChange(e) {
+				this.list.start_time = e.target.value
+			},
+			// 选择时间 
+			endtimeChange(e) {
+				this.list.end_time = e.target.value
+			},
+			chooseImage: async function() {
+				var _this = this
+				uni.chooseImage({
+					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
+					sourceType: ['camera', 'album'], //从相册选择
+					count: 1,
+					success: (res) => {
+						let tempFilePaths = res.tempFilePaths;
+						uni.showLoading({
+							title: '图片正在上传...'
+						})
+						// 'https://tprint.refinecolor.com/partnerapplets/index'
+						let urlData = this.$Env.getBaseURL() + "/partnerapplets/index";
+						wx.uploadFile({
+							url: urlData,
+							filePath: tempFilePaths[0],
+							method: 'POST',
+							name: 'file',
+							header: {
+								'content-type': 'multipart/form-data'
+							},
+							formData: {
+								m: 'Upload/upload'
+							}, //请求额外的form data
+							success: function(res) {
+								//console.log(res.data);
+								//console.log(JSON.parse(res.data).data.url);
+								uni.hideLoading();
+								uni.showToast({
+									title: '上传成功',
+									icon: 'none',
+									duration: 3000
+								})
+								_this.list.image = JSON.parse(res.data).data.url
+							},
+							fail: function(res) {
+								console.log(res);
+								uni.hideLoading();
+								uni.showToast({
+									title: err.msg,
+									icon: 'none'
+								});
+							}
+						})
+					}
+				})
+			},
+
+			openmap() {
+				var seft = this
+				uni.getLocation({
+					type: 'gcj02',
+					altitude: true,
+					success() {
+						//定位权限开启,打开地图
+						uni.chooseLocation({
+							success: function(res) {
+								console.log(res)
+								seft.list.address = res.address + '<br/>' + res.name
+								seft.list.short_name = res.name
+								seft.list.latitude = res.latitude
+								seft.list.longitude = res.longitude
+							}
+						});
+					},
+					fail(e) {
+						// 定位权限未开启,引导设置
+						uni.showModal({
+							title: '温馨提示',
+							content: '您已拒绝定位,请开启',
+							confirmText: '去设置',
+							success(res) {
+								if (res.confirm) {
+									//打开授权设置
+									openSetting()
+								}
+							}
+						})
+					}
+				})
+			},
+			onSave() {
+				if (this.loading) return;
+				// if (!this.list.shop_category_id) {
+				// 	uni.showToast({ title: '主题分类不能为空!', icon: 'none' });
+				// 	return false;
+				// }
+				this.loading = true;
+				uni.showLoading({
+					title: '正在保存中...'
+				});
+				const data = {
+					m: 'Shop/save',
+					id: this.list.id,
+					shop_category_id: this.list.shop_category_id,
+					short_name: this.list.short_name,
+					image: this.list.image,
+					owner: this.list.owner,
+					phone: this.list.phone,
+					tel: this.list.phone,
+					address: this.list.address,
+					latitude: this.list.latitude,
+					longitude: this.list.longitude,
+					start_time: this.list.start_time,
+					end_time: this.list.end_time,
+					per_consum: this.list.per_consum,
+					cooperation_way: this.list.cooperation_way,
+					// machine_id:this.list.machine_id,
+				}
+				if (this.id || this.Userres_partner_id == 0) {
+					data.partner_id = this.list.partner_id //代理
+				} else {
+					data.partner_id = this.Userres_partner_id //代理
+				}
+				
+				if(this.machine_id != '' && this.machine_id != null){
+					
+					data.partner_id = this.machine.partner_id
+				}
+				
+				
+				//console.log(data)
+				logoservice.shopsave(data).then(reuslt => {
+					this.loading = false;
+					uni.navigateBack();
+					uni.hideLoading();
+				}).catch(err => {
+					this.loading = false;
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				});
+
+			},
+			showPicker(item) {
+				console.log(item)
+				this.item = item
+				if (this.item == 'shop_category_id') {
+					this.pickerValueArray = this.list.category
+					this.pickerValueArray.filter(item => {
+						item.label = item.title
+						item.value = item.id
+					});
+				} else if (this.item == 'machine_id') {
+					console.log(this.list.machine)
+					this.pickerValueArray = this.list.machine
+					this.pickerValueArray.filter(item => {
+						item.label = item.id + '(' + item.has + ')'
+						item.value = item.id
+					});
+				} else if (this.item == 'per_consum') {
+					console.log(this.per_consum_list)
+					this.pickerValueArray = this.per_consum_list
+				} else if (this.item == 'agent') {
+					console.log(this.agentList)
+					this.pickerValueArray = this.agentList
+				}
+				this.$refs.mpvuePicker.show();
+			},
+			// 确定
+			onConfirm(e) {
+				if (this.item == 'shop_category_id') {
+					this.list.shop_category_id = e.value[0]
+				} else if (this.item == 'machine_id') {
+					this.list.machine_id = e.value[0]
+				} else if (this.item == 'per_consum') {
+					this.list.per_consum = e.label
+				} else if (this.item == 'cooperation_way') {
+					this.list.cooperation_way = e.label
+				} else if (this.item == 'agent') {
+					this.list.partner_id = e.value[0]
+				}
+			},
+			onChange(e) {
+				console.log(e);
+			},
+			onCancel(e) {
+				console.log(e);
+			},
+
+			//设备列表详情
+			listdetail() {
+				logoservice.Machinelistdetail({
+					m: 'Machine/list',
+					machine_id: this.machine_id
+				}).then(result => {
+					this.long = true
+					uni.stopPullDownRefresh();
+					uni.hideLoading();
+					if (result[0] != undefined) {
+						this.machine = result[0]
+					}
+				}).catch(err => {
+					uni.hideLoading();
+					uni.showToast({
+						title: err.msg,
+						icon: 'none'
+					});
+				})
+			},
+
+		},
+		onLoad(options) {
+			//this.machine_id = options.machine_id
+			if (options.machine_id) {
+				this.machine_id = options.machine_id
+				this.listdetail();
+			}
+			this.start = options.start
+			this.id = options.id
+			logoservice.shopdetail({
+				m: 'Shop/detail',
+				id: this.id
+			}).then(result => {
+				console.log(result)
+				this.list = result
+				if (options.start == 2) {
+					// 修改页面标题
+					wx.setNavigationBarTitle({
+						title: this.list.short_name
+					})
+				}
+			}).catch(err => {
+				uni.showToast({
+					title: err.msg,
+					icon: 'none'
+				});
+			})
+
+			this.Userres_partner_id = this.$base.Userres.partner_id //总代理
+			logoservice.receiveMoneyList({
+				m: 'Init/getPartner'
+			}).then(result => {
+				this.agentList = result.list.filter(item => item.id != 0)
+				this.agentList.forEach(item => {
+					item.label = item.name
+					item.value = item.id
+					// if(item.id == result.p_id){
+					// 	this.queryPage.partner_id = item.id
+					// 	this.queryPage.partner_name = item.name
+					// }
+				})
+			}).catch(err => {
+				uni.showToast({
+					title: err.msg,
+					icon: 'none'
+				});
+			})
+			/* let that = this;
+			//1、获取当前位置坐标
+			uni.getLocation({
+				type: 'gcj02',
+				altitude: true,
+				success: function(res) {
+					console.log(res);
+					var qqMapApi = 'https://apis.map.qq.com/ws/geocoder/v1/' + "?location=" + res.latitude + ',' +
+						res.longitude + "&key=" + '3ERBZ-WOD36-XRLSG-MMMG6-6L43F-NWB55' + "&get_poi=1";
+					wx.request({
+						url: qqMapApi,
+						data: {},
+						method: 'GET',
+						success: (res) => {
+							console.log(res)
+							if (res.statusCode == 200 && res.data.status == 0) {
+								// 从返回值中提取需要的业务地理信息数据
+								that.SortNumber++;
+								that.list.address = res.data.result.pois[0].address + res.data.result.pois[0].title;
+								that.list.longitude = res.data.result.location.lng;
+								that.list.short_name = res.data.result.pois[0].title;
+								that.list.SortNumber = that.SortNumber
+								console.log(that.list.address);
+								console.log(that.list.latitude);
+								console.log(that.list.longitude);
+								that.setData({
+									list: that.list,
+								});
+							}
+						}
+					}) */
+			/* }, */
+			/* fail(e) {
+				// 定位权限未开启,引导设置
+				uni.showModal({
+					title: '温馨提示',
+					content: '您已拒绝定位,请开启',
+					confirmText: '去设置',
+					success(res) {
+						if (res.confirm) {
+							//打开授权设置
+							openSetting()
+						}
+					}
+				})
+			} */
+			/* }) */
+
+		},
+		onShow() {
+
+		}
+
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background: #F5F5F5;
+	}
+
+	input {
+		text-align: right;
+	}
+
+	.edit-address {
+		.form {
+			/* height: calc(100% - 128upx); */
+			overflow: scroll;
+			width: calc(100% - 40upx);
+			border-radius: 20upx;
+			margin-left: 20upx;
+			box-shadow: 0 0 10upx 10upx #F5F5F5;
+
+
+			.item {
+				background: #FFFFFF;
+				height: 90upx;
+				display: flex;
+				align-items: center;
+				border-top: 1upx solid #F5F5F5;
+				font-size: 28upx;
+				padding: 0 27upx 0 32upx;
+				width: calc(100% - 60upx);
+
+				.text {
+					width: 200upx;
+				}
+
+				.value {
+					width: calc(100% - 200upx);
+					display: flex;
+					align-items: center;
+
+					.prick {
+						width: calc(100% - 40upx);
+					}
+
+					.fa-angle-right {
+						width: 40upx;
+						font-size: 50upx;
+					}
+				}
+			}
+		}
+
+		.footer {
+			position: fixed;
+			bottom: 20upx;
+			width: 100%;
+
+			.footer_but {
+				width: calc(100% - 60upx);
+				margin: 0upx auto 0;
+				color: #fff;
+				height: 88upx;
+				text-align: center;
+				line-height: 88upx;
+				background: rgba(92, 230, 182, 1);
+				border-radius: 10upx;
+			}
+		}
+	}
+
+
+	.item-new-list {
+		padding-top: 25upx;
+		padding-left: 30upx;
+		padding-right: 30upx;
+		padding-bottom: 25upx;
+		width: calc(100% - 100upx);
+		color: #000;
+		background: #fff;
+		margin: 30upx 20upx 20upx 20upx;
+		border-radius: 18upx;
+		box-shadow: 0 0 10upx 10upx #F5F5F5;
+		//margin-top: 40upx;
+	}
+</style>
\ No newline at end of file
diff --git a/project.config.json b/project.config.json
new file mode 100644
index 0000000..ac13b53
--- /dev/null
+++ b/project.config.json
@@ -0,0 +1,28 @@
+{
+    "appid": "wx9cd3934f286f3d71",
+    "compileType": "miniprogram",
+    "libVersion": "2.30.3",
+    "packOptions": {
+        "ignore": [],
+        "include": []
+    },
+    "setting": {
+        "coverView": true,
+        "es6": true,
+        "postcss": true,
+        "minified": true,
+        "enhance": true,
+        "showShadowRootInWxmlPanel": true,
+        "packNpmRelationList": [],
+        "babelSetting": {
+            "ignore": [],
+            "disablePlugins": [],
+            "outputPath": ""
+        }
+    },
+    "condition": {},
+    "editorSetting": {
+        "tabIndent": "insertSpaces",
+        "tabSize": 4
+    }
+}
\ No newline at end of file
diff --git a/project.private.config.json b/project.private.config.json
new file mode 100644
index 0000000..7d6cb61
--- /dev/null
+++ b/project.private.config.json
@@ -0,0 +1,7 @@
+{
+    "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
+    "projectname": "app_proxy",
+    "setting": {
+        "compileHotReLoad": true
+    }
+}
\ No newline at end of file
diff --git a/service/BaseService.js b/service/BaseService.js
new file mode 100644
index 0000000..a8ba9c4
--- /dev/null
+++ b/service/BaseService.js
@@ -0,0 +1,138 @@
+import $n from '../util/nothing'
+import $store from '../store'
+import Enums from '../util/Enums'
+/**
+ * vuex Store 的 action 调用
+ * @param {*} action 调用的action名
+ * @param {*} params 参数
+ */
+export function _dispatch (action, params) {
+  return $store.dispatch(action, params)
+}
+
+/**
+ * vuex Store 的 getters 引用
+ * @param {*} getters Store中引用的getters属性名
+ * @param {*} defaultValue 默认值(结果为空时)
+ */
+export  function  _getters (getters, defaultValue = null) {
+  return $n._ifNull($store.getters[getters], defaultValue)
+}
+
+/**
+ * 基于Promise调用API
+ * @param {*}
+ */
+export function _callAPI ({callFun = Function, callParams = [], callBack, resultType = Enums.DataType.JSON} = {}) {
+  return new Promise((resolve, reject) => {
+    callFun(...callParams).then(({ code, count, data, per_page, msg}) => {
+      if (code === 0) {
+        data = $n._caseValue(
+          resultType,
+          Enums.DataType.JSON, $n._ifNull(data, {}),
+          Enums.DataType.ARRAY, $n._ifNull(data, []),
+          Enums.DataType.DATE, $n._isNotNull(data) ? new Date(data) : null,
+          Enums.DataType.STRING, $n._ifNull(data, null),
+          Enums.DataType.NUMBER, Number($n._ifNull(data, 0)),
+          data
+        )
+        if (callBack) callBack(data)
+        resolve(data)
+      } else throw {code:code,data:data,msg:msg} || '执行 [' + callFun.name + '] 发生未知错误.'
+    }).catch(err => reject(err))
+  })
+}
+
+/**
+ * 基于Promise调用API
+ * @param {*}
+ */
+export function _callAPIone ({callFun = Function, callParams = [], callBack, resultType = Enums.DataType.JSON} = {}) {
+  return new Promise((resolve, reject) => {
+    callFun(...callParams).then(({ code, count, data, per_page, msg,total}) => {
+      if (code === 0) {
+        data = $n._caseValue(
+          resultType,
+          Enums.DataType.JSON, $n._ifNull(data, {}),
+          Enums.DataType.ARRAY, $n._ifNull(data, []),
+          Enums.DataType.DATE, $n._isNotNull(data) ? new Date(data) : null,
+          Enums.DataType.STRING, $n._ifNull(data, null),
+          Enums.DataType.NUMBER, Number($n._ifNull(data, 0)),
+		  code,
+          data,
+		  count,
+		  per_page,
+		  msg,
+		  total
+        )
+        if (callBack) callBack({code:code,count:count,data:data,per_page:per_page,msg:msg,total:total})
+        resolve({code:code,count:count,data:data,per_page:per_page,msg:msg,total:total})
+      } else throw {code:code,data:data,msg:msg} || '执行 [' + callFun.name + '] 发生未知错误.'
+    }).catch(err => reject(err))
+  })
+}
+
+/**
+ * 查询
+ * @param {*}
+ */
+export function _query ({api, params, callBack, resultType = Enums.DataType.JSON} = {}) {
+  return _callAPIone({callFun: api, callParams: [params], callBack, resultType})
+}
+
+/**
+ * 修改
+ * @param {*}
+ */
+export function _update ({api, params, callBack, resultType = Enums.DataType.JSON} = {}) {
+  return _callAPI({callFun: api, callParams: [params], callBack, resultType})
+}
+
+/**
+ * 保存
+ * @param {*}
+ */
+export function _save ({api, params, callBack, resultType = Enums.DataType.JSON} = {}) {
+  return _callAPI({callFun: api, callParams: [params], callBack, resultType})
+}
+
+/**
+ * 删除
+ * @param {*}
+ */
+export function _delete ({api, params, callBack, resultType = Enums.DataType.JSON} = {}) {
+  return _callAPI({callFun: api, callParams: [params], callBack, resultType})
+}
+
+/**
+ * 调用动作
+ * @param {*}
+ */
+export function _callAction ({api, params, callBack, resultType = Enums.DataType.JSON, action = null} = {}) {
+  console.warn('############# Action: ', action)
+  return _callAPI({callFun: api, callParams: [params], callBack, resultType})
+}
+
+/**
+ * 列表查询
+ * @param {*}
+ */
+export function _queryList ({api, params, callBack, resultType = Enums.DataType.ARRAY} = {}) {
+  return _callAPI({callFun: api, callParams: [params], callBack, resultType})
+}
+
+/**
+ * 分页查询
+ * @param {*}
+ */
+export function _queryPage ({api, params, page, callBack, resultType = Enums.DataType.JSON} = {}) {
+  return _callAPI({callFun: api, callParams: [params, page], callBack, resultType})
+}
+
+/**
+ * 流式分页查询
+ * @param {*}
+ */
+export function _queryFlowPage ({api, params, page, callBack, resultType = Enums.DataType.JSON} = {}) {
+  return _callAPI({callFun: api, callParams: [params, page], callBack, resultType})
+}
diff --git a/service/UserService.js b/service/UserService.js
new file mode 100644
index 0000000..e4ebed6
--- /dev/null
+++ b/service/UserService.js
@@ -0,0 +1,48 @@
+import {
+	_login,
+	_queryUser,
+	_refreshToken
+} from '../api/UserApi'
+import {
+	_query,
+	_getters,
+	_dispatch
+} from './BaseService'
+import Cache from '@/cache'
+
+const service = {
+	cacheAppUser: (appUser) => Cache.setSync(Cache.$Keys.app.APP_USER, appUser),				// 缓存app信息
+	cacheWxInfo: (wxInfo) => Cache.setSync(Cache.$Keys.app.WX_INFO, wxInfo),					// 缓存微信信息
+	cacheUserInfo: (userInfo) => Cache.setSync(Cache.$Keys.app.USER_INFO, userInfo),			// 缓存用户信息
+	
+	getCacheAppUser: () => Cache.getSync(Cache.$Keys.app.APP_USER),								// 获取缓存中的app信息
+	getCacheWxInfo: () => Cache.getSync(Cache.$Keys.app.wxInfo),								// 获取缓存中的微信信息
+	getCacheUserInfo: () => Cache.getSync(Cache.$Keys.app.USER_INFO),							// 获取缓存中的用户信息
+																			// 保存aap信息到store中
+	setToken: (token = null) => _dispatch('setToken', token),									// 设置新Token到store中
+	setUserInfo: (user = {}) => _dispatch('setUserInfo', user),									// 保存用户信息到store中
+	setWxInfo: (wxInfo = {}) => _dispatch('setWxInfo', wxInfo), 								// 保存微信信息到store中
+												// 获取store中的app信息
+	getWxInfo: () => _getters('wxInfo', {}), 													// 获取store中的微信信息
+	getUserInfo: () => _getters('userInfo', {}),												// 获取store中的用户信息
+	
+	/**
+	 * login			登录
+	 * queryUser		查询用户信息
+	 * refreshToken		刷新用户Token
+	 */
+	login: (user = {}) => _query({api: _login, params: user, callBack: (data = {}) => {
+		// service.setAppUser(data);
+		// service.cacheAppUser(service.getAppUser());
+	}}),
+	queryUser: (id = null) => _query({api: _queryUser, params: id, callBack: (data = {}) => {
+		service.setUserInfo(data);
+		service.cacheUserInfo(service.getUserInfo());
+	}}),
+	refreshToken: (oldToken = null) => _query({api: _refreshToken, params: oldToken, callBack: (data = {}) => {
+		service.setToken(service.getAppUser().tokenHead + data);
+		service.cacheAppUser(service.getAppUser());
+	}})
+}
+
+export default service
diff --git a/service/logoservice.js b/service/logoservice.js
new file mode 100644
index 0000000..8844990
--- /dev/null
+++ b/service/logoservice.js
@@ -0,0 +1,231 @@
+import {
+	_login,
+	_shoplist,
+	route_timeout
+} from '../api/logoApi'
+import {
+	_query,
+	_queryPage,
+	_queryList,
+	_getters,
+	_dispatch
+} from './BaseService'
+const service = {
+	setforcedLogin: (brandList = []) => _dispatch('setforcedLogin', brandList), // 保存数据到store中
+	sethasLogin: (hasLogin = []) => _dispatch('sethasLogin', hasLogin), // 保存数据到store中
+	setuserName: (userName = []) => _dispatch('setuserName', userName), // 保存数据到store中
+	setwixinInfo: (wixinInfo = {}) => _dispatch('setwixinInfo', wixinInfo), 								// 保存微信信息到store中
+	setAppUser: (appUser = {}) => _dispatch('setAppUser', {
+		openid: appUser.openid,
+		token: appUser.token,
+		tokenHead: appUser.tokenHead,
+		currentTime: new Date().getTime()
+	}),	
+	getAppUser: () => _getters('appUser', {}), 	// 获取store中的app信息
+	getforcedLogin: () => _getters('forcedLogin', []), // 获取store中的数据
+	gethasLogin: () => _getters('hasLogin', []), // 获取store中的数据
+	getuserName: () => _getters('userName', []), // 获取store中的数据
+	getwixinInfo: () => _getters('wixinInfo', {}), // 获取store中的微信信息
+	
+	//方法
+	login(userName,state) {
+		service.setuserName(userName) 
+		service.setforcedLogin('true')	
+	},
+	
+	logout(state) {
+		service.setuserName("")
+		service.setforcedLogin('false')
+	},
+	
+	//初始化
+	login: (goods = {}) => _queryList({api: _login, params: goods, callBack: (data = {}) => {
+		service.setAppUser(data);
+		console.log(service.getAppUser())
+	}}),
+	
+	//绑定微信
+	bindWx: (goods = {}) => _queryList({api: _login, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Shop/list 店铺列表
+	shoplist: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Shop​/detail商铺详情
+	shopdetail: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Shop​/save商铺保存
+	shopsave: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	// Shop​/del商铺删除
+	shopdel: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	// Machine/list  设备列表
+	Machinelist: (goods = {}) => _query({api: _shoplist, params: goods, callBack: (data = {}) => {
+		console.log(data)
+	}}),
+	
+	// Machine/list  设备列表顶部设备数据
+	MachineToplist: (goods = {}) => _query({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Machine/detail  //获取店铺列表
+	MachineGetShop: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Machine/detail  //获取充值信息列表
+	PayInfoList: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Machine/detail  设备列表详情
+	Machinelistdetail: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Machine/status 设备挂起|启动
+	Machinestatus: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//捕获屏幕截图 Machine/screen
+	Machinescreen: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+
+	//更新设备图片 Machine/saveCover
+	MachinesaveCover: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	// 保存设备对应库存 Machine/saveStock
+	MachinesaveStock: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//设备关联店铺 Machine​/bindShop
+	MachinebindShop: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Machine/printRecord 设备打印信息
+	MachineprintRecord: (goods = {}) => _query({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Money/statementList 清算列表
+	MoneystatementList: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Money/statementDetail 清算列表详情
+	MoneystatementDetail: (goods = {}) => _queryList({api: route_timeout, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Withdrawal/refund 退款原因
+	Withdrawal: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Money/login 结算中心登陆
+	Moneylogin: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Money/info 结算账户
+	Moneyinfo: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Money/saveInfo 保存账户
+	MoneysaveInfo: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Money/billList 账单列表
+	MoneybillList: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Money/billDetail 账单详情
+	MoneybillDetail: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Money/confirmBill 账单确认
+	MoneyconfirmBill: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Money/billRemark 疑惑账单
+	MoneybillRemark: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	// Withdrawal/apply 提现申请
+	Withdrawalapply: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Withdrawal/list 提现记录
+	Withdrawallist: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	// Withdrawal/detail 提现记录详情
+	Withdrawaldetail: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	// Money/partner 代理信息
+	Moneypartner: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	// Report/index 首页数据
+	Reportindex: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	// Machine/againPrint 再次打印
+	MachineagainPrint: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	// Machine/getStock 获取商品库存
+	MachineGetStock: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	// Machine/getStock 获取代理设备库存
+	MachineStockList: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//Machine/savePartnerStock//修改代理库存
+	MachineSavePartnerStock: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	//获取代理商库存商品列表
+	MachineStockGoodsList: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+	// Money/receiveMoneyList
+	// 每日退款收益数量
+	receiveMoneyList: (goods = {}) => _queryList({api: _shoplist, params: goods, callBack: (data = {}) => {
+		
+	}}),
+	
+}
+
+export default service
diff --git a/static/bg.png b/static/bg.png
new file mode 100644
index 0000000..534a502
Binary files /dev/null and b/static/bg.png differ
diff --git a/static/font-awesome/font-awesome.css b/static/font-awesome/font-awesome.css
new file mode 100644
index 0000000..6e8477b
--- /dev/null
+++ b/static/font-awesome/font-awesome.css
@@ -0,0 +1,2342 @@
+/* This stylesheet generated by Transfonter (https://transfonter.org) on March 30, 2018 3:15 AM */
+
+@font-face {
+    font-family: 'FontAwesome';
+    /* src: url('FontAwesome.eot'); */
+    font-weight: normal;
+    font-style: normal;
+}
+@font-face {
+    font-family: 'FontAwesome';
+    src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff2'),
+        url(data:application/font-woff;charset=utf-8;base64,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) format('woff');
+        /* url('FontAwesome.ttf') format('truetype'), */
+        /* url('FontAwesome.svg#FontAwesome') format('svg'); */
+    font-weight: normal;
+    font-style: normal;
+}
+
+.fa {
+  display: inline-block;
+  font: normal normal normal 14px/1 FontAwesome;
+  font-size: inherit;
+  text-rendering: auto;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+/* makes the font 33% larger relative to the icon container */
+.fa-lg {
+  font-size: 1.33333333em;
+  line-height: 0.75em;
+  vertical-align: -15%;
+}
+.fa-2x {
+  font-size: 2em;
+}
+.fa-3x {
+  font-size: 3em;
+}
+.fa-4x {
+  font-size: 4em;
+}
+.fa-5x {
+  font-size: 5em;
+}
+.fa-fw {
+  width: 1.28571429em;
+  text-align: center;
+}
+.fa-ul {
+  padding-left: 0;
+  margin-left: 2.14285714em;
+  list-style-type: none;
+}
+.fa-ul > li {
+  position: relative;
+}
+.fa-li {
+  position: absolute;
+  left: -2.14285714em;
+  width: 2.14285714em;
+  top: 0.14285714em;
+  text-align: center;
+}
+.fa-li.fa-lg {
+  left: -1.85714286em;
+}
+.fa-border {
+  padding: .2em .25em .15em;
+  border: solid 0.08em #eeeeee;
+  border-radius: .1em;
+}
+.fa-pull-left {
+  float: left;
+}
+.fa-pull-right {
+  float: right;
+}
+.fa.fa-pull-left {
+  margin-right: .3em;
+}
+.fa.fa-pull-right {
+  margin-left: .3em;
+}
+/* Deprecated as of 4.4.0 */
+.pull-right {
+  float: right;
+}
+.pull-left {
+  float: left;
+}
+.fa.pull-left {
+  margin-right: .3em;
+}
+.fa.pull-right {
+  margin-left: .3em;
+}
+.fa-spin {
+  -webkit-animation: fa-spin 2s infinite linear;
+  animation: fa-spin 2s infinite linear;
+}
+.fa-pulse {
+  -webkit-animation: fa-spin 1s infinite steps(8);
+  animation: fa-spin 1s infinite steps(8);
+}
+@-webkit-keyframes fa-spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+@keyframes fa-spin {
+  0% {
+    -webkit-transform: rotate(0deg);
+    transform: rotate(0deg);
+  }
+  100% {
+    -webkit-transform: rotate(359deg);
+    transform: rotate(359deg);
+  }
+}
+.fa-rotate-90 {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
+  -webkit-transform: rotate(90deg);
+  -ms-transform: rotate(90deg);
+  transform: rotate(90deg);
+}
+.fa-rotate-180 {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
+  -webkit-transform: rotate(180deg);
+  -ms-transform: rotate(180deg);
+  transform: rotate(180deg);
+}
+.fa-rotate-270 {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
+  -webkit-transform: rotate(270deg);
+  -ms-transform: rotate(270deg);
+  transform: rotate(270deg);
+}
+.fa-flip-horizontal {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
+  -webkit-transform: scale(-1, 1);
+  -ms-transform: scale(-1, 1);
+  transform: scale(-1, 1);
+}
+.fa-flip-vertical {
+  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
+  -webkit-transform: scale(1, -1);
+  -ms-transform: scale(1, -1);
+  transform: scale(1, -1);
+}
+:root .fa-rotate-90,
+:root .fa-rotate-180,
+:root .fa-rotate-270,
+:root .fa-flip-horizontal,
+:root .fa-flip-vertical {
+  filter: none;
+}
+.fa-stack {
+  position: relative;
+  display: inline-block;
+  width: 2em;
+  height: 2em;
+  line-height: 2em;
+  vertical-align: middle;
+}
+.fa-stack-1x,
+.fa-stack-2x {
+  position: absolute;
+  left: 0;
+  width: 100%;
+  text-align: center;
+}
+.fa-stack-1x {
+  line-height: inherit;
+}
+.fa-stack-2x {
+  font-size: 2em;
+}
+.fa-inverse {
+  color: #ffffff;
+}
+/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
+   readers do not read off random characters that represent icons */
+.fa-glass:before {
+  content: "\f000";
+}
+.fa-music:before {
+  content: "\f001";
+}
+.fa-search:before {
+  content: "\f002";
+}
+.fa-envelope-o:before {
+  content: "\f003";
+}
+.fa-heart:before {
+  content: "\f004";
+}
+.fa-star:before {
+  content: "\f005";
+}
+.fa-star-o:before {
+  content: "\f006";
+}
+.fa-user:before {
+  content: "\f007";
+}
+.fa-film:before {
+  content: "\f008";
+}
+.fa-th-large:before {
+  content: "\f009";
+}
+.fa-th:before {
+  content: "\f00a";
+}
+.fa-th-list:before {
+  content: "\f00b";
+}
+.fa-check:before {
+  content: "\f00c";
+}
+.fa-remove:before,
+.fa-close:before,
+.fa-times:before {
+  content: "\f00d";
+}
+.fa-search-plus:before {
+  content: "\f00e";
+}
+.fa-search-minus:before {
+  content: "\f010";
+}
+.fa-power-off:before {
+  content: "\f011";
+}
+.fa-signal:before {
+  content: "\f012";
+}
+.fa-gear:before,
+.fa-cog:before {
+  content: "\f013";
+}
+.fa-trash-o:before {
+  content: "\f014";
+}
+.fa-home:before {
+  content: "\f015";
+}
+.fa-file-o:before {
+  content: "\f016";
+}
+.fa-clock-o:before {
+  content: "\f017";
+}
+.fa-road:before {
+  content: "\f018";
+}
+.fa-download:before {
+  content: "\f019";
+}
+.fa-arrow-circle-o-down:before {
+  content: "\f01a";
+}
+.fa-arrow-circle-o-up:before {
+  content: "\f01b";
+}
+.fa-inbox:before {
+  content: "\f01c";
+}
+.fa-play-circle-o:before {
+  content: "\f01d";
+}
+.fa-rotate-right:before,
+.fa-repeat:before {
+  content: "\f01e";
+}
+.fa-refresh:before {
+  content: "\f021";
+}
+.fa-list-alt:before {
+  content: "\f022";
+}
+.fa-lock:before {
+  content: "\f023";
+}
+.fa-flag:before {
+  content: "\f024";
+}
+.fa-headphones:before {
+  content: "\f025";
+}
+.fa-volume-off:before {
+  content: "\f026";
+}
+.fa-volume-down:before {
+  content: "\f027";
+}
+.fa-volume-up:before {
+  content: "\f028";
+}
+.fa-qrcode:before {
+  content: "\f029";
+}
+.fa-barcode:before {
+  content: "\f02a";
+}
+.fa-tag:before {
+  content: "\f02b";
+}
+.fa-tags:before {
+  content: "\f02c";
+}
+.fa-book:before {
+  content: "\f02d";
+}
+.fa-bookmark:before {
+  content: "\f02e";
+}
+.fa-print:before {
+  content: "\f02f";
+}
+.fa-camera:before {
+  content: "\f030";
+}
+.fa-font:before {
+  content: "\f031";
+}
+.fa-bold:before {
+  content: "\f032";
+}
+.fa-italic:before {
+  content: "\f033";
+}
+.fa-text-height:before {
+  content: "\f034";
+}
+.fa-text-width:before {
+  content: "\f035";
+}
+.fa-align-left:before {
+  content: "\f036";
+}
+.fa-align-center:before {
+  content: "\f037";
+}
+.fa-align-right:before {
+  content: "\f038";
+}
+.fa-align-justify:before {
+  content: "\f039";
+}
+.fa-list:before {
+  content: "\f03a";
+}
+.fa-dedent:before,
+.fa-outdent:before {
+  content: "\f03b";
+}
+.fa-indent:before {
+  content: "\f03c";
+}
+.fa-video-camera:before {
+  content: "\f03d";
+}
+.fa-photo:before,
+.fa-image:before,
+.fa-picture-o:before {
+  content: "\f03e";
+}
+.fa-pencil:before {
+  content: "\f040";
+}
+.fa-map-marker:before {
+  content: "\f041";
+}
+.fa-adjust:before {
+  content: "\f042";
+}
+.fa-tint:before {
+  content: "\f043";
+}
+.fa-edit:before,
+.fa-pencil-square-o:before {
+  content: "\f044";
+}
+.fa-share-square-o:before {
+  content: "\f045";
+}
+.fa-check-square-o:before {
+  content: "\f046";
+}
+.fa-arrows:before {
+  content: "\f047";
+}
+.fa-step-backward:before {
+  content: "\f048";
+}
+.fa-fast-backward:before {
+  content: "\f049";
+}
+.fa-backward:before {
+  content: "\f04a";
+}
+.fa-play:before {
+  content: "\f04b";
+}
+.fa-pause:before {
+  content: "\f04c";
+}
+.fa-stop:before {
+  content: "\f04d";
+}
+.fa-forward:before {
+  content: "\f04e";
+}
+.fa-fast-forward:before {
+  content: "\f050";
+}
+.fa-step-forward:before {
+  content: "\f051";
+}
+.fa-eject:before {
+  content: "\f052";
+}
+.fa-chevron-left:before {
+  content: "\f053";
+}
+.fa-chevron-right:before {
+  content: "\f054";
+}
+.fa-plus-circle:before {
+  content: "\f055";
+}
+.fa-minus-circle:before {
+  content: "\f056";
+}
+.fa-times-circle:before {
+  content: "\f057";
+}
+.fa-check-circle:before {
+  content: "\f058";
+}
+.fa-question-circle:before {
+  content: "\f059";
+}
+.fa-info-circle:before {
+  content: "\f05a";
+}
+.fa-crosshairs:before {
+  content: "\f05b";
+}
+.fa-times-circle-o:before {
+  content: "\f05c";
+}
+.fa-check-circle-o:before {
+  content: "\f05d";
+}
+.fa-ban:before {
+  content: "\f05e";
+}
+.fa-arrow-left:before {
+  content: "\f060";
+}
+.fa-arrow-right:before {
+  content: "\f061";
+}
+.fa-arrow-up:before {
+  content: "\f062";
+}
+.fa-arrow-down:before {
+  content: "\f063";
+}
+.fa-mail-forward:before,
+.fa-share:before {
+  content: "\f064";
+}
+.fa-expand:before {
+  content: "\f065";
+}
+.fa-compress:before {
+  content: "\f066";
+}
+.fa-plus:before {
+  content: "\f067";
+}
+.fa-minus:before {
+  content: "\f068";
+}
+.fa-asterisk:before {
+  content: "\f069";
+}
+.fa-exclamation-circle:before {
+  content: "\f06a";
+}
+.fa-gift:before {
+  content: "\f06b";
+}
+.fa-leaf:before {
+  content: "\f06c";
+}
+.fa-fire:before {
+  content: "\f06d";
+}
+.fa-eye:before {
+  content: "\f06e";
+}
+.fa-eye-slash:before {
+  content: "\f070";
+}
+.fa-warning:before,
+.fa-exclamation-triangle:before {
+  content: "\f071";
+}
+.fa-plane:before {
+  content: "\f072";
+}
+.fa-calendar:before {
+  content: "\f073";
+}
+.fa-random:before {
+  content: "\f074";
+}
+.fa-comment:before {
+  content: "\f075";
+}
+.fa-magnet:before {
+  content: "\f076";
+}
+.fa-chevron-up:before {
+  content: "\f077";
+}
+.fa-chevron-down:before {
+  content: "\f078";
+}
+.fa-retweet:before {
+  content: "\f079";
+}
+.fa-shopping-cart:before {
+  content: "\f07a";
+}
+.fa-folder:before {
+  content: "\f07b";
+}
+.fa-folder-open:before {
+  content: "\f07c";
+}
+.fa-arrows-v:before {
+  content: "\f07d";
+}
+.fa-arrows-h:before {
+  content: "\f07e";
+}
+.fa-bar-chart-o:before,
+.fa-bar-chart:before {
+  content: "\f080";
+}
+.fa-twitter-square:before {
+  content: "\f081";
+}
+.fa-facebook-square:before {
+  content: "\f082";
+}
+.fa-camera-retro:before {
+  content: "\f083";
+}
+.fa-key:before {
+  content: "\f084";
+}
+.fa-gears:before,
+.fa-cogs:before {
+  content: "\f085";
+}
+.fa-comments:before {
+  content: "\f086";
+}
+.fa-thumbs-o-up:before {
+  content: "\f087";
+}
+.fa-thumbs-o-down:before {
+  content: "\f088";
+}
+.fa-star-half:before {
+  content: "\f089";
+}
+.fa-heart-o:before {
+  content: "\f08a";
+}
+.fa-sign-out:before {
+  content: "\f08b";
+}
+.fa-linkedin-square:before {
+  content: "\f08c";
+}
+.fa-thumb-tack:before {
+  content: "\f08d";
+}
+.fa-external-link:before {
+  content: "\f08e";
+}
+.fa-sign-in:before {
+  content: "\f090";
+}
+.fa-trophy:before {
+  content: "\f091";
+}
+.fa-github-square:before {
+  content: "\f092";
+}
+.fa-upload:before {
+  content: "\f093";
+}
+.fa-lemon-o:before {
+  content: "\f094";
+}
+.fa-phone:before {
+  content: "\f095";
+}
+.fa-square-o:before {
+  content: "\f096";
+}
+.fa-bookmark-o:before {
+  content: "\f097";
+}
+.fa-phone-square:before {
+  content: "\f098";
+}
+.fa-twitter:before {
+  content: "\f099";
+}
+.fa-facebook-f:before,
+.fa-facebook:before {
+  content: "\f09a";
+}
+.fa-github:before {
+  content: "\f09b";
+}
+.fa-unlock:before {
+  content: "\f09c";
+}
+.fa-credit-card:before {
+  content: "\f09d";
+}
+.fa-feed:before,
+.fa-rss:before {
+  content: "\f09e";
+}
+.fa-hdd-o:before {
+  content: "\f0a0";
+}
+.fa-bullhorn:before {
+  content: "\f0a1";
+}
+.fa-bell:before {
+  content: "\f0f3";
+}
+.fa-certificate:before {
+  content: "\f0a3";
+}
+.fa-hand-o-right:before {
+  content: "\f0a4";
+}
+.fa-hand-o-left:before {
+  content: "\f0a5";
+}
+.fa-hand-o-up:before {
+  content: "\f0a6";
+}
+.fa-hand-o-down:before {
+  content: "\f0a7";
+}
+.fa-arrow-circle-left:before {
+  content: "\f0a8";
+}
+.fa-arrow-circle-right:before {
+  content: "\f0a9";
+}
+.fa-arrow-circle-up:before {
+  content: "\f0aa";
+}
+.fa-arrow-circle-down:before {
+  content: "\f0ab";
+}
+.fa-globe:before {
+  content: "\f0ac";
+}
+.fa-wrench:before {
+  content: "\f0ad";
+}
+.fa-tasks:before {
+  content: "\f0ae";
+}
+.fa-filter:before {
+  content: "\f0b0";
+}
+.fa-briefcase:before {
+  content: "\f0b1";
+}
+.fa-arrows-alt:before {
+  content: "\f0b2";
+}
+.fa-group:before,
+.fa-users:before {
+  content: "\f0c0";
+}
+.fa-chain:before,
+.fa-link:before {
+  content: "\f0c1";
+}
+.fa-cloud:before {
+  content: "\f0c2";
+}
+.fa-flask:before {
+  content: "\f0c3";
+}
+.fa-cut:before,
+.fa-scissors:before {
+  content: "\f0c4";
+}
+.fa-copy:before,
+.fa-files-o:before {
+  content: "\f0c5";
+}
+.fa-paperclip:before {
+  content: "\f0c6";
+}
+.fa-save:before,
+.fa-floppy-o:before {
+  content: "\f0c7";
+}
+.fa-square:before {
+  content: "\f0c8";
+}
+.fa-navicon:before,
+.fa-reorder:before,
+.fa-bars:before {
+  content: "\f0c9";
+}
+.fa-list-ul:before {
+  content: "\f0ca";
+}
+.fa-list-ol:before {
+  content: "\f0cb";
+}
+.fa-strikethrough:before {
+  content: "\f0cc";
+}
+.fa-underline:before {
+  content: "\f0cd";
+}
+.fa-table:before {
+  content: "\f0ce";
+}
+.fa-magic:before {
+  content: "\f0d0";
+}
+.fa-truck:before {
+  content: "\f0d1";
+}
+.fa-pinterest:before {
+  content: "\f0d2";
+}
+.fa-pinterest-square:before {
+  content: "\f0d3";
+}
+.fa-google-plus-square:before {
+  content: "\f0d4";
+}
+.fa-google-plus:before {
+  content: "\f0d5";
+}
+.fa-money:before {
+  content: "\f0d6";
+}
+.fa-caret-down:before {
+  content: "\f0d7";
+}
+.fa-caret-up:before {
+  content: "\f0d8";
+}
+.fa-caret-left:before {
+  content: "\f0d9";
+}
+.fa-caret-right:before {
+  content: "\f0da";
+}
+.fa-columns:before {
+  content: "\f0db";
+}
+.fa-unsorted:before,
+.fa-sort:before {
+  content: "\f0dc";
+}
+.fa-sort-down:before,
+.fa-sort-desc:before {
+  content: "\f0dd";
+}
+.fa-sort-up:before,
+.fa-sort-asc:before {
+  content: "\f0de";
+}
+.fa-envelope:before {
+  content: "\f0e0";
+}
+.fa-linkedin:before {
+  content: "\f0e1";
+}
+.fa-rotate-left:before,
+.fa-undo:before {
+  content: "\f0e2";
+}
+.fa-legal:before,
+.fa-gavel:before {
+  content: "\f0e3";
+}
+.fa-dashboard:before,
+.fa-tachometer:before {
+  content: "\f0e4";
+}
+.fa-comment-o:before {
+  content: "\f0e5";
+}
+.fa-comments-o:before {
+  content: "\f0e6";
+}
+.fa-flash:before,
+.fa-bolt:before {
+  content: "\f0e7";
+}
+.fa-sitemap:before {
+  content: "\f0e8";
+}
+.fa-umbrella:before {
+  content: "\f0e9";
+}
+.fa-paste:before,
+.fa-clipboard:before {
+  content: "\f0ea";
+}
+.fa-lightbulb-o:before {
+  content: "\f0eb";
+}
+.fa-exchange:before {
+  content: "\f0ec";
+}
+.fa-cloud-download:before {
+  content: "\f0ed";
+}
+.fa-cloud-upload:before {
+  content: "\f0ee";
+}
+.fa-user-md:before {
+  content: "\f0f0";
+}
+.fa-stethoscope:before {
+  content: "\f0f1";
+}
+.fa-suitcase:before {
+  content: "\f0f2";
+}
+.fa-bell-o:before {
+  content: "\f0a2";
+}
+.fa-coffee:before {
+  content: "\f0f4";
+}
+.fa-cutlery:before {
+  content: "\f0f5";
+}
+.fa-file-text-o:before {
+  content: "\f0f6";
+}
+.fa-building-o:before {
+  content: "\f0f7";
+}
+.fa-hospital-o:before {
+  content: "\f0f8";
+}
+.fa-ambulance:before {
+  content: "\f0f9";
+}
+.fa-medkit:before {
+  content: "\f0fa";
+}
+.fa-fighter-jet:before {
+  content: "\f0fb";
+}
+.fa-beer:before {
+  content: "\f0fc";
+}
+.fa-h-square:before {
+  content: "\f0fd";
+}
+.fa-plus-square:before {
+  content: "\f0fe";
+}
+.fa-angle-double-left:before {
+  content: "\f100";
+}
+.fa-angle-double-right:before {
+  content: "\f101";
+}
+.fa-angle-double-up:before {
+  content: "\f102";
+}
+.fa-angle-double-down:before {
+  content: "\f103";
+}
+.fa-angle-left:before {
+  content: "\f104";
+}
+.fa-angle-right:before {
+  content: "\f105";
+}
+.fa-angle-up:before {
+  content: "\f106";
+}
+.fa-angle-down:before {
+  content: "\f107";
+}
+.fa-desktop:before {
+  content: "\f108";
+}
+.fa-laptop:before {
+  content: "\f109";
+}
+.fa-tablet:before {
+  content: "\f10a";
+}
+.fa-mobile-phone:before,
+.fa-mobile:before {
+  content: "\f10b";
+}
+.fa-circle-o:before {
+  content: "\f10c";
+}
+.fa-quote-left:before {
+  content: "\f10d";
+}
+.fa-quote-right:before {
+  content: "\f10e";
+}
+.fa-spinner:before {
+  content: "\f110";
+}
+.fa-circle:before {
+  content: "\f111";
+}
+.fa-mail-reply:before,
+.fa-reply:before {
+  content: "\f112";
+}
+.fa-github-alt:before {
+  content: "\f113";
+}
+.fa-folder-o:before {
+  content: "\f114";
+}
+.fa-folder-open-o:before {
+  content: "\f115";
+}
+.fa-smile-o:before {
+  content: "\f118";
+}
+.fa-frown-o:before {
+  content: "\f119";
+}
+.fa-meh-o:before {
+  content: "\f11a";
+}
+.fa-gamepad:before {
+  content: "\f11b";
+}
+.fa-keyboard-o:before {
+  content: "\f11c";
+}
+.fa-flag-o:before {
+  content: "\f11d";
+}
+.fa-flag-checkered:before {
+  content: "\f11e";
+}
+.fa-terminal:before {
+  content: "\f120";
+}
+.fa-code:before {
+  content: "\f121";
+}
+.fa-mail-reply-all:before,
+.fa-reply-all:before {
+  content: "\f122";
+}
+.fa-star-half-empty:before,
+.fa-star-half-full:before,
+.fa-star-half-o:before {
+  content: "\f123";
+}
+.fa-location-arrow:before {
+  content: "\f124";
+}
+.fa-crop:before {
+  content: "\f125";
+}
+.fa-code-fork:before {
+  content: "\f126";
+}
+.fa-unlink:before,
+.fa-chain-broken:before {
+  content: "\f127";
+}
+.fa-question:before {
+  content: "\f128";
+}
+.fa-info:before {
+  content: "\f129";
+}
+.fa-exclamation:before {
+  content: "\f12a";
+}
+.fa-superscript:before {
+  content: "\f12b";
+}
+.fa-subscript:before {
+  content: "\f12c";
+}
+.fa-eraser:before {
+  content: "\f12d";
+}
+.fa-puzzle-piece:before {
+  content: "\f12e";
+}
+.fa-microphone:before {
+  content: "\f130";
+}
+.fa-microphone-slash:before {
+  content: "\f131";
+}
+.fa-shield:before {
+  content: "\f132";
+}
+.fa-calendar-o:before {
+  content: "\f133";
+}
+.fa-fire-extinguisher:before {
+  content: "\f134";
+}
+.fa-rocket:before {
+  content: "\f135";
+}
+.fa-maxcdn:before {
+  content: "\f136";
+}
+.fa-chevron-circle-left:before {
+  content: "\f137";
+}
+.fa-chevron-circle-right:before {
+  content: "\f138";
+}
+.fa-chevron-circle-up:before {
+  content: "\f139";
+}
+.fa-chevron-circle-down:before {
+  content: "\f13a";
+}
+.fa-html5:before {
+  content: "\f13b";
+}
+.fa-css3:before {
+  content: "\f13c";
+}
+.fa-anchor:before {
+  content: "\f13d";
+}
+.fa-unlock-alt:before {
+  content: "\f13e";
+}
+.fa-bullseye:before {
+  content: "\f140";
+}
+.fa-ellipsis-h:before {
+  content: "\f141";
+}
+.fa-ellipsis-v:before {
+  content: "\f142";
+}
+.fa-rss-square:before {
+  content: "\f143";
+}
+.fa-play-circle:before {
+  content: "\f144";
+}
+.fa-ticket:before {
+  content: "\f145";
+}
+.fa-minus-square:before {
+  content: "\f146";
+}
+.fa-minus-square-o:before {
+  content: "\f147";
+}
+.fa-level-up:before {
+  content: "\f148";
+}
+.fa-level-down:before {
+  content: "\f149";
+}
+.fa-check-square:before {
+  content: "\f14a";
+}
+.fa-pencil-square:before {
+  content: "\f14b";
+}
+.fa-external-link-square:before {
+  content: "\f14c";
+}
+.fa-share-square:before {
+  content: "\f14d";
+}
+.fa-compass:before {
+  content: "\f14e";
+}
+.fa-toggle-down:before,
+.fa-caret-square-o-down:before {
+  content: "\f150";
+}
+.fa-toggle-up:before,
+.fa-caret-square-o-up:before {
+  content: "\f151";
+}
+.fa-toggle-right:before,
+.fa-caret-square-o-right:before {
+  content: "\f152";
+}
+.fa-euro:before,
+.fa-eur:before {
+  content: "\f153";
+}
+.fa-gbp:before {
+  content: "\f154";
+}
+.fa-dollar:before,
+.fa-usd:before {
+  content: "\f155";
+}
+.fa-rupee:before,
+.fa-inr:before {
+  content: "\f156";
+}
+.fa-cny:before,
+.fa-rmb:before,
+.fa-yen:before,
+.fa-jpy:before {
+  content: "\f157";
+}
+.fa-ruble:before,
+.fa-rouble:before,
+.fa-rub:before {
+  content: "\f158";
+}
+.fa-won:before,
+.fa-krw:before {
+  content: "\f159";
+}
+.fa-bitcoin:before,
+.fa-btc:before {
+  content: "\f15a";
+}
+.fa-file:before {
+  content: "\f15b";
+}
+.fa-file-text:before {
+  content: "\f15c";
+}
+.fa-sort-alpha-asc:before {
+  content: "\f15d";
+}
+.fa-sort-alpha-desc:before {
+  content: "\f15e";
+}
+.fa-sort-amount-asc:before {
+  content: "\f160";
+}
+.fa-sort-amount-desc:before {
+  content: "\f161";
+}
+.fa-sort-numeric-asc:before {
+  content: "\f162";
+}
+.fa-sort-numeric-desc:before {
+  content: "\f163";
+}
+.fa-thumbs-up:before {
+  content: "\f164";
+}
+.fa-thumbs-down:before {
+  content: "\f165";
+}
+.fa-youtube-square:before {
+  content: "\f166";
+}
+.fa-youtube:before {
+  content: "\f167";
+}
+.fa-xing:before {
+  content: "\f168";
+}
+.fa-xing-square:before {
+  content: "\f169";
+}
+.fa-youtube-play:before {
+  content: "\f16a";
+}
+.fa-dropbox:before {
+  content: "\f16b";
+}
+.fa-stack-overflow:before {
+  content: "\f16c";
+}
+.fa-instagram:before {
+  content: "\f16d";
+}
+.fa-flickr:before {
+  content: "\f16e";
+}
+.fa-adn:before {
+  content: "\f170";
+}
+.fa-bitbucket:before {
+  content: "\f171";
+}
+.fa-bitbucket-square:before {
+  content: "\f172";
+}
+.fa-tumblr:before {
+  content: "\f173";
+}
+.fa-tumblr-square:before {
+  content: "\f174";
+}
+.fa-long-arrow-down:before {
+  content: "\f175";
+}
+.fa-long-arrow-up:before {
+  content: "\f176";
+}
+.fa-long-arrow-left:before {
+  content: "\f177";
+}
+.fa-long-arrow-right:before {
+  content: "\f178";
+}
+.fa-apple:before {
+  content: "\f179";
+}
+.fa-windows:before {
+  content: "\f17a";
+}
+.fa-android:before {
+  content: "\f17b";
+}
+.fa-linux:before {
+  content: "\f17c";
+}
+.fa-dribbble:before {
+  content: "\f17d";
+}
+.fa-skype:before {
+  content: "\f17e";
+}
+.fa-foursquare:before {
+  content: "\f180";
+}
+.fa-trello:before {
+  content: "\f181";
+}
+.fa-female:before {
+  content: "\f182";
+}
+.fa-male:before {
+  content: "\f183";
+}
+.fa-gittip:before,
+.fa-gratipay:before {
+  content: "\f184";
+}
+.fa-sun-o:before {
+  content: "\f185";
+}
+.fa-moon-o:before {
+  content: "\f186";
+}
+.fa-archive:before {
+  content: "\f187";
+}
+.fa-bug:before {
+  content: "\f188";
+}
+.fa-vk:before {
+  content: "\f189";
+}
+.fa-weibo:before {
+  content: "\f18a";
+}
+.fa-renren:before {
+  content: "\f18b";
+}
+.fa-pagelines:before {
+  content: "\f18c";
+}
+.fa-stack-exchange:before {
+  content: "\f18d";
+}
+.fa-arrow-circle-o-right:before {
+  content: "\f18e";
+}
+.fa-arrow-circle-o-left:before {
+  content: "\f190";
+}
+.fa-toggle-left:before,
+.fa-caret-square-o-left:before {
+  content: "\f191";
+}
+.fa-dot-circle-o:before {
+  content: "\f192";
+}
+.fa-wheelchair:before {
+  content: "\f193";
+}
+.fa-vimeo-square:before {
+  content: "\f194";
+}
+.fa-turkish-lira:before,
+.fa-try:before {
+  content: "\f195";
+}
+.fa-plus-square-o:before {
+  content: "\f196";
+}
+.fa-space-shuttle:before {
+  content: "\f197";
+}
+.fa-slack:before {
+  content: "\f198";
+}
+.fa-envelope-square:before {
+  content: "\f199";
+}
+.fa-wordpress:before {
+  content: "\f19a";
+}
+.fa-openid:before {
+  content: "\f19b";
+}
+.fa-institution:before,
+.fa-bank:before,
+.fa-university:before {
+  content: "\f19c";
+}
+.fa-mortar-board:before,
+.fa-graduation-cap:before {
+  content: "\f19d";
+}
+.fa-yahoo:before {
+  content: "\f19e";
+}
+.fa-google:before {
+  content: "\f1a0";
+}
+.fa-reddit:before {
+  content: "\f1a1";
+}
+.fa-reddit-square:before {
+  content: "\f1a2";
+}
+.fa-stumbleupon-circle:before {
+  content: "\f1a3";
+}
+.fa-stumbleupon:before {
+  content: "\f1a4";
+}
+.fa-delicious:before {
+  content: "\f1a5";
+}
+.fa-digg:before {
+  content: "\f1a6";
+}
+.fa-pied-piper-pp:before {
+  content: "\f1a7";
+}
+.fa-pied-piper-alt:before {
+  content: "\f1a8";
+}
+.fa-drupal:before {
+  content: "\f1a9";
+}
+.fa-joomla:before {
+  content: "\f1aa";
+}
+.fa-language:before {
+  content: "\f1ab";
+}
+.fa-fax:before {
+  content: "\f1ac";
+}
+.fa-building:before {
+  content: "\f1ad";
+}
+.fa-child:before {
+  content: "\f1ae";
+}
+.fa-paw:before {
+  content: "\f1b0";
+}
+.fa-spoon:before {
+  content: "\f1b1";
+}
+.fa-cube:before {
+  content: "\f1b2";
+}
+.fa-cubes:before {
+  content: "\f1b3";
+}
+.fa-behance:before {
+  content: "\f1b4";
+}
+.fa-behance-square:before {
+  content: "\f1b5";
+}
+.fa-steam:before {
+  content: "\f1b6";
+}
+.fa-steam-square:before {
+  content: "\f1b7";
+}
+.fa-recycle:before {
+  content: "\f1b8";
+}
+.fa-automobile:before,
+.fa-car:before {
+  content: "\f1b9";
+}
+.fa-cab:before,
+.fa-taxi:before {
+  content: "\f1ba";
+}
+.fa-tree:before {
+  content: "\f1bb";
+}
+.fa-spotify:before {
+  content: "\f1bc";
+}
+.fa-deviantart:before {
+  content: "\f1bd";
+}
+.fa-soundcloud:before {
+  content: "\f1be";
+}
+.fa-database:before {
+  content: "\f1c0";
+}
+.fa-file-pdf-o:before {
+  content: "\f1c1";
+}
+.fa-file-word-o:before {
+  content: "\f1c2";
+}
+.fa-file-excel-o:before {
+  content: "\f1c3";
+}
+.fa-file-powerpoint-o:before {
+  content: "\f1c4";
+}
+.fa-file-photo-o:before,
+.fa-file-picture-o:before,
+.fa-file-image-o:before {
+  content: "\f1c5";
+}
+.fa-file-zip-o:before,
+.fa-file-archive-o:before {
+  content: "\f1c6";
+}
+.fa-file-sound-o:before,
+.fa-file-audio-o:before {
+  content: "\f1c7";
+}
+.fa-file-movie-o:before,
+.fa-file-video-o:before {
+  content: "\f1c8";
+}
+.fa-file-code-o:before {
+  content: "\f1c9";
+}
+.fa-vine:before {
+  content: "\f1ca";
+}
+.fa-codepen:before {
+  content: "\f1cb";
+}
+.fa-jsfiddle:before {
+  content: "\f1cc";
+}
+.fa-life-bouy:before,
+.fa-life-buoy:before,
+.fa-life-saver:before,
+.fa-support:before,
+.fa-life-ring:before {
+  content: "\f1cd";
+}
+.fa-circle-o-notch:before {
+  content: "\f1ce";
+}
+.fa-ra:before,
+.fa-resistance:before,
+.fa-rebel:before {
+  content: "\f1d0";
+}
+.fa-ge:before,
+.fa-empire:before {
+  content: "\f1d1";
+}
+.fa-git-square:before {
+  content: "\f1d2";
+}
+.fa-git:before {
+  content: "\f1d3";
+}
+.fa-y-combinator-square:before,
+.fa-yc-square:before,
+.fa-hacker-news:before {
+  content: "\f1d4";
+}
+.fa-tencent-weibo:before {
+  content: "\f1d5";
+}
+.fa-qq:before {
+  content: "\f1d6";
+}
+.fa-wechat:before,
+.fa-weixin:before {
+  content: "\f1d7";
+}
+.fa-send:before,
+.fa-paper-plane:before {
+  content: "\f1d8";
+}
+.fa-send-o:before,
+.fa-paper-plane-o:before {
+  content: "\f1d9";
+}
+.fa-history:before {
+  content: "\f1da";
+}
+.fa-circle-thin:before {
+  content: "\f1db";
+}
+.fa-header:before {
+  content: "\f1dc";
+}
+.fa-paragraph:before {
+  content: "\f1dd";
+}
+.fa-sliders:before {
+  content: "\f1de";
+}
+.fa-share-alt:before {
+  content: "\f1e0";
+}
+.fa-share-alt-square:before {
+  content: "\f1e1";
+}
+.fa-bomb:before {
+  content: "\f1e2";
+}
+.fa-soccer-ball-o:before,
+.fa-futbol-o:before {
+  content: "\f1e3";
+}
+.fa-tty:before {
+  content: "\f1e4";
+}
+.fa-binoculars:before {
+  content: "\f1e5";
+}
+.fa-plug:before {
+  content: "\f1e6";
+}
+.fa-slideshare:before {
+  content: "\f1e7";
+}
+.fa-twitch:before {
+  content: "\f1e8";
+}
+.fa-yelp:before {
+  content: "\f1e9";
+}
+.fa-newspaper-o:before {
+  content: "\f1ea";
+}
+.fa-wifi:before {
+  content: "\f1eb";
+}
+.fa-calculator:before {
+  content: "\f1ec";
+}
+.fa-paypal:before {
+  content: "\f1ed";
+}
+.fa-google-wallet:before {
+  content: "\f1ee";
+}
+.fa-cc-visa:before {
+  content: "\f1f0";
+}
+.fa-cc-mastercard:before {
+  content: "\f1f1";
+}
+.fa-cc-discover:before {
+  content: "\f1f2";
+}
+.fa-cc-amex:before {
+  content: "\f1f3";
+}
+.fa-cc-paypal:before {
+  content: "\f1f4";
+}
+.fa-cc-stripe:before {
+  content: "\f1f5";
+}
+.fa-bell-slash:before {
+  content: "\f1f6";
+}
+.fa-bell-slash-o:before {
+  content: "\f1f7";
+}
+.fa-trash:before {
+  content: "\f1f8";
+}
+.fa-copyright:before {
+  content: "\f1f9";
+}
+.fa-at:before {
+  content: "\f1fa";
+}
+.fa-eyedropper:before {
+  content: "\f1fb";
+}
+.fa-paint-brush:before {
+  content: "\f1fc";
+}
+.fa-birthday-cake:before {
+  content: "\f1fd";
+}
+.fa-area-chart:before {
+  content: "\f1fe";
+}
+.fa-pie-chart:before {
+  content: "\f200";
+}
+.fa-line-chart:before {
+  content: "\f201";
+}
+.fa-lastfm:before {
+  content: "\f202";
+}
+.fa-lastfm-square:before {
+  content: "\f203";
+}
+.fa-toggle-off:before {
+  content: "\f204";
+}
+.fa-toggle-on:before {
+  content: "\f205";
+}
+.fa-bicycle:before {
+  content: "\f206";
+}
+.fa-bus:before {
+  content: "\f207";
+}
+.fa-ioxhost:before {
+  content: "\f208";
+}
+.fa-angellist:before {
+  content: "\f209";
+}
+.fa-cc:before {
+  content: "\f20a";
+}
+.fa-shekel:before,
+.fa-sheqel:before,
+.fa-ils:before {
+  content: "\f20b";
+}
+.fa-meanpath:before {
+  content: "\f20c";
+}
+.fa-buysellads:before {
+  content: "\f20d";
+}
+.fa-connectdevelop:before {
+  content: "\f20e";
+}
+.fa-dashcube:before {
+  content: "\f210";
+}
+.fa-forumbee:before {
+  content: "\f211";
+}
+.fa-leanpub:before {
+  content: "\f212";
+}
+.fa-sellsy:before {
+  content: "\f213";
+}
+.fa-shirtsinbulk:before {
+  content: "\f214";
+}
+.fa-simplybuilt:before {
+  content: "\f215";
+}
+.fa-skyatlas:before {
+  content: "\f216";
+}
+.fa-cart-plus:before {
+  content: "\f217";
+}
+.fa-cart-arrow-down:before {
+  content: "\f218";
+}
+.fa-diamond:before {
+  content: "\f219";
+}
+.fa-ship:before {
+  content: "\f21a";
+}
+/* .fa-user-secret:before {
+  content: "\f21b";
+} */
+.fa-motorcycle:before {
+  content: "\f21c";
+}
+.fa-street-view:before {
+  content: "\f21d";
+}
+.fa-heartbeat:before {
+  content: "\f21e";
+}
+.fa-venus:before {
+  content: "\f221";
+}
+.fa-mars:before {
+  content: "\f222";
+}
+.fa-mercury:before {
+  content: "\f223";
+}
+.fa-intersex:before,
+.fa-transgender:before {
+  content: "\f224";
+}
+.fa-transgender-alt:before {
+  content: "\f225";
+}
+.fa-venus-double:before {
+  content: "\f226";
+}
+.fa-mars-double:before {
+  content: "\f227";
+}
+.fa-venus-mars:before {
+  content: "\f228";
+}
+.fa-mars-stroke:before {
+  content: "\f229";
+}
+.fa-mars-stroke-v:before {
+  content: "\f22a";
+}
+.fa-mars-stroke-h:before {
+  content: "\f22b";
+}
+.fa-neuter:before {
+  content: "\f22c";
+}
+.fa-genderless:before {
+  content: "\f22d";
+}
+.fa-facebook-official:before {
+  content: "\f230";
+}
+.fa-pinterest-p:before {
+  content: "\f231";
+}
+.fa-whatsapp:before {
+  content: "\f232";
+}
+.fa-server:before {
+  content: "\f233";
+}
+.fa-user-plus:before {
+  content: "\f234";
+}
+.fa-user-times:before {
+  content: "\f235";
+}
+.fa-hotel:before,
+.fa-bed:before {
+  content: "\f236";
+}
+.fa-viacoin:before {
+  content: "\f237";
+}
+.fa-train:before {
+  content: "\f238";
+}
+.fa-subway:before {
+  content: "\f239";
+}
+.fa-medium:before {
+  content: "\f23a";
+}
+.fa-yc:before,
+.fa-y-combinator:before {
+  content: "\f23b";
+}
+.fa-optin-monster:before {
+  content: "\f23c";
+}
+.fa-opencart:before {
+  content: "\f23d";
+}
+.fa-expeditedssl:before {
+  content: "\f23e";
+}
+.fa-battery-4:before,
+.fa-battery:before,
+.fa-battery-full:before {
+  content: "\f240";
+}
+.fa-battery-3:before,
+.fa-battery-three-quarters:before {
+  content: "\f241";
+}
+.fa-battery-2:before,
+.fa-battery-half:before {
+  content: "\f242";
+}
+.fa-battery-1:before,
+.fa-battery-quarter:before {
+  content: "\f243";
+}
+.fa-battery-0:before,
+.fa-battery-empty:before {
+  content: "\f244";
+}
+.fa-mouse-pointer:before {
+  content: "\f245";
+}
+.fa-i-cursor:before {
+  content: "\f246";
+}
+.fa-object-group:before {
+  content: "\f247";
+}
+.fa-object-ungroup:before {
+  content: "\f248";
+}
+.fa-sticky-note:before {
+  content: "\f249";
+}
+.fa-sticky-note-o:before {
+  content: "\f24a";
+}
+.fa-cc-jcb:before {
+  content: "\f24b";
+}
+.fa-cc-diners-club:before {
+  content: "\f24c";
+}
+.fa-clone:before {
+  content: "\f24d";
+}
+.fa-balance-scale:before {
+  content: "\f24e";
+}
+.fa-hourglass-o:before {
+  content: "\f250";
+}
+.fa-hourglass-1:before,
+.fa-hourglass-start:before {
+  content: "\f251";
+}
+.fa-hourglass-2:before,
+.fa-hourglass-half:before {
+  content: "\f252";
+}
+.fa-hourglass-3:before,
+.fa-hourglass-end:before {
+  content: "\f253";
+}
+.fa-hourglass:before {
+  content: "\f254";
+}
+.fa-hand-grab-o:before,
+.fa-hand-rock-o:before {
+  content: "\f255";
+}
+.fa-hand-stop-o:before,
+.fa-hand-paper-o:before {
+  content: "\f256";
+}
+.fa-hand-scissors-o:before {
+  content: "\f257";
+}
+.fa-hand-lizard-o:before {
+  content: "\f258";
+}
+.fa-hand-spock-o:before {
+  content: "\f259";
+}
+.fa-hand-pointer-o:before {
+  content: "\f25a";
+}
+.fa-hand-peace-o:before {
+  content: "\f25b";
+}
+.fa-trademark:before {
+  content: "\f25c";
+}
+.fa-registered:before {
+  content: "\f25d";
+}
+.fa-creative-commons:before {
+  content: "\f25e";
+}
+.fa-gg:before {
+  content: "\f260";
+}
+.fa-gg-circle:before {
+  content: "\f261";
+}
+.fa-tripadvisor:before {
+  content: "\f262";
+}
+.fa-odnoklassniki:before {
+  content: "\f263";
+}
+.fa-odnoklassniki-square:before {
+  content: "\f264";
+}
+.fa-get-pocket:before {
+  content: "\f265";
+}
+.fa-wikipedia-w:before {
+  content: "\f266";
+}
+.fa-safari:before {
+  content: "\f267";
+}
+.fa-chrome:before {
+  content: "\f268";
+}
+.fa-firefox:before {
+  content: "\f269";
+}
+.fa-opera:before {
+  content: "\f26a";
+}
+.fa-internet-explorer:before {
+  content: "\f26b";
+}
+.fa-tv:before,
+.fa-television:before {
+  content: "\f26c";
+}
+.fa-contao:before {
+  content: "\f26d";
+}
+.fa-500px:before {
+  content: "\f26e";
+}
+.fa-amazon:before {
+  content: "\f270";
+}
+.fa-calendar-plus-o:before {
+  content: "\f271";
+}
+.fa-calendar-minus-o:before {
+  content: "\f272";
+}
+.fa-calendar-times-o:before {
+  content: "\f273";
+}
+.fa-calendar-check-o:before {
+  content: "\f274";
+}
+.fa-industry:before {
+  content: "\f275";
+}
+.fa-map-pin:before {
+  content: "\f276";
+}
+.fa-map-signs:before {
+  content: "\f277";
+}
+.fa-map-o:before {
+  content: "\f278";
+}
+.fa-map:before {
+  content: "\f279";
+}
+.fa-commenting:before {
+  content: "\f27a";
+}
+.fa-commenting-o:before {
+  content: "\f27b";
+}
+.fa-houzz:before {
+  content: "\f27c";
+}
+.fa-vimeo:before {
+  content: "\f27d";
+}
+.fa-black-tie:before {
+  content: "\f27e";
+}
+.fa-fonticons:before {
+  content: "\f280";
+}
+.fa-reddit-alien:before {
+  content: "\f281";
+}
+.fa-edge:before {
+  content: "\f282";
+}
+.fa-credit-card-alt:before {
+  content: "\f283";
+}
+.fa-codiepie:before {
+  content: "\f284";
+}
+.fa-modx:before {
+  content: "\f285";
+}
+.fa-fort-awesome:before {
+  content: "\f286";
+}
+.fa-usb:before {
+  content: "\f287";
+}
+.fa-product-hunt:before {
+  content: "\f288";
+}
+.fa-mixcloud:before {
+  content: "\f289";
+}
+.fa-scribd:before {
+  content: "\f28a";
+}
+.fa-pause-circle:before {
+  content: "\f28b";
+}
+.fa-pause-circle-o:before {
+  content: "\f28c";
+}
+.fa-stop-circle:before {
+  content: "\f28d";
+}
+.fa-stop-circle-o:before {
+  content: "\f28e";
+}
+.fa-shopping-bag:before {
+  content: "\f290";
+}
+.fa-shopping-basket:before {
+  content: "\f291";
+}
+.fa-hashtag:before {
+  content: "\f292";
+}
+.fa-bluetooth:before {
+  content: "\f293";
+}
+.fa-bluetooth-b:before {
+  content: "\f294";
+}
+.fa-percent:before {
+  content: "\f295";
+}
+.fa-gitlab:before {
+  content: "\f296";
+}
+.fa-wpbeginner:before {
+  content: "\f297";
+}
+.fa-wpforms:before {
+  content: "\f298";
+}
+.fa-envira:before {
+  content: "\f299";
+}
+.fa-universal-access:before {
+  content: "\f29a";
+}
+.fa-wheelchair-alt:before {
+  content: "\f29b";
+}
+.fa-question-circle-o:before {
+  content: "\f29c";
+}
+.fa-blind:before {
+  content: "\f29d";
+}
+.fa-audio-description:before {
+  content: "\f29e";
+}
+.fa-volume-control-phone:before {
+  content: "\f2a0";
+}
+.fa-braille:before {
+  content: "\f2a1";
+}
+.fa-assistive-listening-systems:before {
+  content: "\f2a2";
+}
+.fa-asl-interpreting:before,
+.fa-american-sign-language-interpreting:before {
+  content: "\f2a3";
+}
+.fa-deafness:before,
+.fa-hard-of-hearing:before,
+.fa-deaf:before {
+  content: "\f2a4";
+}
+.fa-glide:before {
+  content: "\f2a5";
+}
+.fa-glide-g:before {
+  content: "\f2a6";
+}
+.fa-signing:before,
+.fa-sign-language:before {
+  content: "\f2a7";
+}
+.fa-low-vision:before {
+  content: "\f2a8";
+}
+.fa-viadeo:before {
+  content: "\f2a9";
+}
+.fa-viadeo-square:before {
+  content: "\f2aa";
+}
+.fa-snapchat:before {
+  content: "\f2ab";
+}
+.fa-snapchat-ghost:before {
+  content: "\f2ac";
+}
+.fa-snapchat-square:before {
+  content: "\f2ad";
+}
+.fa-pied-piper:before {
+  content: "\f2ae";
+}
+.fa-first-order:before {
+  content: "\f2b0";
+}
+.fa-yoast:before {
+  content: "\f2b1";
+}
+.fa-themeisle:before {
+  content: "\f2b2";
+}
+.fa-google-plus-circle:before,
+.fa-google-plus-official:before {
+  content: "\f2b3";
+}
+.fa-fa:before,
+.fa-font-awesome:before {
+  content: "\f2b4";
+}
+.fa-handshake-o:before {
+  content: "\f2b5";
+}
+.fa-envelope-open:before {
+  content: "\f2b6";
+}
+.fa-envelope-open-o:before {
+  content: "\f2b7";
+}
+.fa-linode:before {
+  content: "\f2b8";
+}
+.fa-address-book:before {
+  content: "\f2b9";
+}
+.fa-address-book-o:before {
+  content: "\f2ba";
+}
+.fa-vcard:before,
+.fa-address-card:before {
+  content: "\f2bb";
+}
+.fa-vcard-o:before,
+.fa-address-card-o:before {
+  content: "\f2bc";
+}
+.fa-user-circle:before {
+  content: "\f2bd";
+}
+.fa-user-circle-o:before {
+  content: "\f2be";
+}
+.fa-user-o:before {
+  content: "\f2c0";
+}
+.fa-id-badge:before {
+  content: "\f2c1";
+}
+.fa-drivers-license:before,
+.fa-id-card:before {
+  content: "\f2c2";
+}
+.fa-drivers-license-o:before,
+.fa-id-card-o:before {
+  content: "\f2c3";
+}
+.fa-quora:before {
+  content: "\f2c4";
+}
+.fa-free-code-camp:before {
+  content: "\f2c5";
+}
+.fa-telegram:before {
+  content: "\f2c6";
+}
+.fa-thermometer-4:before,
+.fa-thermometer:before,
+.fa-thermometer-full:before {
+  content: "\f2c7";
+}
+.fa-thermometer-3:before,
+.fa-thermometer-three-quarters:before {
+  content: "\f2c8";
+}
+.fa-thermometer-2:before,
+.fa-thermometer-half:before {
+  content: "\f2c9";
+}
+.fa-thermometer-1:before,
+.fa-thermometer-quarter:before {
+  content: "\f2ca";
+}
+.fa-thermometer-0:before,
+.fa-thermometer-empty:before {
+  content: "\f2cb";
+}
+.fa-shower:before {
+  content: "\f2cc";
+}
+.fa-bathtub:before,
+.fa-s15:before,
+.fa-bath:before {
+  content: "\f2cd";
+}
+.fa-podcast:before {
+  content: "\f2ce";
+}
+.fa-window-maximize:before {
+  content: "\f2d0";
+}
+.fa-window-minimize:before {
+  content: "\f2d1";
+}
+.fa-window-restore:before {
+  content: "\f2d2";
+}
+.fa-times-rectangle:before,
+.fa-window-close:before {
+  content: "\f2d3";
+}
+.fa-times-rectangle-o:before,
+.fa-window-close-o:before {
+  content: "\f2d4";
+}
+.fa-bandcamp:before {
+  content: "\f2d5";
+}
+.fa-grav:before {
+  content: "\f2d6";
+}
+.fa-etsy:before {
+  content: "\f2d7";
+}
+.fa-imdb:before {
+  content: "\f2d8";
+}
+.fa-ravelry:before {
+  content: "\f2d9";
+}
+.fa-eercast:before {
+  content: "\f2da";
+}
+.fa-microchip:before {
+  content: "\f2db";
+}
+.fa-snowflake-o:before {
+  content: "\f2dc";
+}
+.fa-superpowers:before {
+  content: "\f2dd";
+}
+.fa-wpexplorer:before {
+  content: "\f2de";
+}
+.fa-meetup:before {
+  content: "\f2e0";
+}
+.sr-only {
+  position: absolute;
+  width: 1px;
+  height: 1px;
+  padding: 0;
+  margin: -1px;
+  overflow: hidden;
+  clip: rect(0, 0, 0, 0);
+  border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+  position: static;
+  width: auto;
+  height: auto;
+  margin: 0;
+  overflow: visible;
+  clip: auto;
+}
diff --git a/static/house.png b/static/house.png
new file mode 100644
index 0000000..84cc45e
Binary files /dev/null and b/static/house.png differ
diff --git a/static/icon_all_back.png b/static/icon_all_back.png
new file mode 100644
index 0000000..2d8cc1f
Binary files /dev/null and b/static/icon_all_back.png differ
diff --git a/static/icon_closes.png b/static/icon_closes.png
new file mode 100644
index 0000000..db875ab
Binary files /dev/null and b/static/icon_closes.png differ
diff --git a/static/icon_guaqi.png b/static/icon_guaqi.png
new file mode 100644
index 0000000..a3314bf
Binary files /dev/null and b/static/icon_guaqi.png differ
diff --git a/static/icon_machine_clean.png b/static/icon_machine_clean.png
new file mode 100644
index 0000000..65b3833
Binary files /dev/null and b/static/icon_machine_clean.png differ
diff --git a/static/icon_machine_color.png b/static/icon_machine_color.png
new file mode 100644
index 0000000..68a5d52
Binary files /dev/null and b/static/icon_machine_color.png differ
diff --git a/static/icon_machine_ink.png b/static/icon_machine_ink.png
new file mode 100644
index 0000000..e9373a6
Binary files /dev/null and b/static/icon_machine_ink.png differ
diff --git a/static/icon_machine_ink_has.png b/static/icon_machine_ink_has.png
new file mode 100644
index 0000000..2ce3c24
Binary files /dev/null and b/static/icon_machine_ink_has.png differ
diff --git a/static/icon_machine_load.png b/static/icon_machine_load.png
new file mode 100644
index 0000000..48585b6
Binary files /dev/null and b/static/icon_machine_load.png differ
diff --git a/static/icon_machine_local.png b/static/icon_machine_local.png
new file mode 100644
index 0000000..2ce850f
Binary files /dev/null and b/static/icon_machine_local.png differ
diff --git a/static/icon_machine_more.png b/static/icon_machine_more.png
new file mode 100644
index 0000000..0023ded
Binary files /dev/null and b/static/icon_machine_more.png differ
diff --git a/static/icon_machine_right.png b/static/icon_machine_right.png
new file mode 100644
index 0000000..1f70e28
Binary files /dev/null and b/static/icon_machine_right.png differ
diff --git a/static/icon_machine_status_close.png b/static/icon_machine_status_close.png
new file mode 100644
index 0000000..53c2fae
Binary files /dev/null and b/static/icon_machine_status_close.png differ
diff --git a/static/icon_mine_agent.png b/static/icon_mine_agent.png
new file mode 100644
index 0000000..48cb61a
Binary files /dev/null and b/static/icon_mine_agent.png differ
diff --git a/static/icon_mine_income.png b/static/icon_mine_income.png
new file mode 100644
index 0000000..4ef45b9
Binary files /dev/null and b/static/icon_mine_income.png differ
diff --git a/static/icon_mine_inventory.png b/static/icon_mine_inventory.png
new file mode 100644
index 0000000..9f1d834
Binary files /dev/null and b/static/icon_mine_inventory.png differ
diff --git a/static/icon_mine_order.png b/static/icon_mine_order.png
new file mode 100644
index 0000000..6f841c2
Binary files /dev/null and b/static/icon_mine_order.png differ
diff --git a/static/icon_mine_printe.png b/static/icon_mine_printe.png
new file mode 100644
index 0000000..8b43750
Binary files /dev/null and b/static/icon_mine_printe.png differ
diff --git a/static/icon_mine_printe_list.png b/static/icon_mine_printe_list.png
new file mode 100644
index 0000000..f16042a
Binary files /dev/null and b/static/icon_mine_printe_list.png differ
diff --git a/static/icon_mine_withdrawal.png b/static/icon_mine_withdrawal.png
new file mode 100644
index 0000000..b59e1e5
Binary files /dev/null and b/static/icon_mine_withdrawal.png differ
diff --git a/static/icon_print_card_recharge.png b/static/icon_print_card_recharge.png
new file mode 100644
index 0000000..c85c46a
Binary files /dev/null and b/static/icon_print_card_recharge.png differ
diff --git a/static/icon_rights_interests_cancel.png b/static/icon_rights_interests_cancel.png
new file mode 100644
index 0000000..da8a2d7
Binary files /dev/null and b/static/icon_rights_interests_cancel.png differ
diff --git a/static/icon_rights_interests_complete.png b/static/icon_rights_interests_complete.png
new file mode 100644
index 0000000..932e1ca
Binary files /dev/null and b/static/icon_rights_interests_complete.png differ
diff --git a/static/icon_select_date.png b/static/icon_select_date.png
new file mode 100644
index 0000000..d588d05
Binary files /dev/null and b/static/icon_select_date.png differ
diff --git a/static/iconfont/iconfont.css b/static/iconfont/iconfont.css
new file mode 100644
index 0000000..9b0cc42
--- /dev/null
+++ b/static/iconfont/iconfont.css
@@ -0,0 +1,99 @@
+@font-face {font-family: "iconfont";
+  src: url('iconfont.eot?t=1598863932815'); /* IE9 */
+  src: url('iconfont.eot?t=1598863932815#iefix') format('embedded-opentype'), /* IE6-IE8 */
+  url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
+  url('iconfont.woff?t=1598863932815') format('woff'),
+  url('iconfont.ttf?t=1598863932815') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
+  url('iconfont.svg?t=1598863932815#iconfont') format('svg'); /* iOS 4.1- */
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-zhijiandan-:before {
+  content: "\e616";
+}
+
+.icon-21:before {
+  content: "\e620";
+}
+
+.icon-stores:before {
+  content: "\e6b2";
+}
+
+.icon-shouye:before {
+  content: "\e659";
+}
+
+.icon-shebei:before {
+  content: "\e74b";
+}
+
+.icon-duihao2:before {
+  content: "\e69e";
+}
+
+.icon-xiala:before {
+  content: "\e613";
+}
+
+.icon-jiantou:before {
+  content: "\e615";
+}
+
+.icon-tixianjilu:before {
+  content: "\e63d";
+}
+
+.icon-zongdailizhanghao:before {
+  content: "\e614";
+}
+
+.icon-zhangdan:before {
+  content: "\e611";
+}
+
+.icon-liebiao:before {
+  content: "\e612";
+}
+
+.icon-yinhangqia:before {
+  content: "\e85b";
+}
+
+.icon-rili1:before {
+  content: "\e785";
+}
+
+.icon-wushuju:before {
+  content: "\e643";
+}
+
+.icon-kucun:before {
+  content: "\e643";
+}
+
+@font-face {
+  font-family: 'iconfont';  /* Project id 2751108 */
+  src: url('//at.alicdn.com/t/font_2751108_rzx1efig7w.woff2?t=1629193710484') format('woff2'),
+       url('//at.alicdn.com/t/font_2751108_rzx1efig7w.woff?t=1629193710484') format('woff'),
+       url('//at.alicdn.com/t/font_2751108_rzx1efig7w.ttf?t=1629193710484') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-dianweishezhi:before {
+  content: "\e630";
+}
\ No newline at end of file
diff --git a/static/iconfont/iconfont.eot b/static/iconfont/iconfont.eot
new file mode 100644
index 0000000..4ddc99b
Binary files /dev/null and b/static/iconfont/iconfont.eot differ
diff --git a/static/iconfont/iconfont.js b/static/iconfont/iconfont.js
new file mode 100644
index 0000000..d427e56
--- /dev/null
+++ b/static/iconfont/iconfont.js
@@ -0,0 +1,47 @@
+! function(i) {
+	var c, t =
+		'<svg><symbol id="icon-31daishouhuo" viewBox="0 0 1024 1024"><path d="M841.530179 137.779993 366.132818 137.779993c-49.562812 0-89.855494 40.144302-89.855494 89.499383l0 131.069151-172.015725 99.067296-6.299473 4.189416 0.713244 1.218758 0.029676 0.118704c-3.922333 4.694929-6.062066 10.54824-6.062066 16.58063l0 275.063683c0 16.075117 12.063757 29.1499 26.891464 29.1499 14.857383 0 26.921139-13.103436 26.921139-29.238928L146.455583 494.973208l168.746262-97.373725c11.707646-4.130064 19.552312-15.124466 19.552312-27.336602L334.754157 231.587496c0-19.552312 16.015765-35.479049 35.68678-35.479049l466.750423 0c19.671015 0 35.68678 15.926738 35.68678 35.479049l0 512.034792c0 16.104793 13.104459 29.179576 29.238928 29.179576 16.134469 0 29.238928-13.104459 29.238928-29.238928L931.355997 227.278353C931.355997 177.923272 891.063315 137.779993 841.530179 137.779993z"  ></path><path d="M741.957369 656.351666c-55.595202 0-102.900601 39.49041-112.973004 94.104261l-204.284663-0.118704c-10.132778-54.555523-57.437154-93.985558-112.973004-93.985558-63.647599 0-115.439172 51.554166-115.439172 114.934682s51.791573 114.934682 115.439172 114.934682c51.67287 0 97.194646-34.558074 111.071701-84.209914l208.117968 0.089028c13.906731 49.592488 59.398832 84.120886 111.042026 84.120886 63.647599 0 115.409496-51.554166 115.409496-114.934682S805.604968 656.351666 741.957369 656.351666zM741.957369 825.514413c-30.070876 0-54.525847-24.336268-54.525847-54.228065 0-29.892821 24.454972-54.228065 54.525847-54.228065s54.525847 24.336268 54.525847 54.228065C796.483216 801.178145 772.028245 825.514413 741.957369 825.514413zM311.726697 825.514413c-30.070876 0-54.525847-24.336268-54.525847-54.228065 0-29.892821 24.454972-54.228065 54.525847-54.228065 30.0412 0 54.496172 24.336268 54.496172 54.228065C366.221846 801.178145 341.766874 825.514413 311.726697 825.514413z"  ></path><path d="M224.930889 573.151755c0 15.540951 12.687974 28.199249 28.317952 28.199249l109.526509-0.029676c15.421224 0 27.575032-4.605901 36.162618-13.727653 13.638625-14.470573 12.539594-35.003212 12.509918-35.121915l0-85.814458c0-15.540951-12.687974-28.199249-28.317952-28.199249s-28.317952 12.658298-28.317952 28.199249l0.029676 78.2072-101.652168 0C237.589187 544.952506 224.930889 557.64048 224.930889 573.151755z"  ></path></symbol><symbol id="icon-wodeqianbao" viewBox="0 0 1024 1024"><path d="M510.027066 1018.883469c-310.781162 0-449.376731-106.263186-449.376731-344.549244 0-188.549284 149.627832-393.97084 333.539492-457.902918l233.69346 0.329505c182.468798 63.797002 331.50516 269.12953 331.513346 457.573413C959.39561 912.61926 820.807205 1018.883469 510.027066 1018.883469zM403.554102 281.066397c-34.134425 13.268188-67.544349 32.459273-99.323123 57.051367-35.151591 27.239388-66.721611 59.758012-93.818759 96.66048-27.224038 37.081547-48.516993 76.631308-63.288418 117.526717-14.981203 41.434691-22.572088 82.479503-22.572088 122.029264 0 50.379411 7.067976 93.51893 21.008476 128.222313 13.223163 32.967856 32.766264 59.32413 59.728336 80.595596 28.959565 22.825868 67.709101 40.431851 115.179252 52.309366 51.785433 12.938684 115.559922 19.505239 189.559287 19.505239 73.991178 0 137.765667-6.566556 189.5511-19.505239 47.462988-11.876492 86.212524-29.468149 115.179252-52.309366 26.977421-21.300119 46.520523-47.657416 59.735499-80.595596 13.941524-34.733059 21.001313-77.872578 21.001313-128.222313 0-39.549761-7.599072-80.609922-22.579251-122.029264-14.771425-40.926108-36.06438-80.46052-63.281255-117.526717-27.088962-36.916794-58.658981-69.436442-93.818759-96.66048-31.794124-24.591071-65.187675-43.783179-99.255585-57.020668l-211.94411-0.418532L403.554102 281.066397zM500.326123 844.409762c-23.320125 0-42.294268-18.98233-42.294268-42.302455 0-2.692319 0.284479-5.445012 0.845251-8.196683l1.480724-7.389294-2.169409 0 0-39.041178-83.751473-0.045025c-18.039865 0-32.714076-14.59951-32.714076-32.549324 0-17.97949 14.629185-32.608675 32.601512-32.608675l5.653767 0 0.01535-0.104377L458.189444 682.172751 458.189444 631.209032l-81.395822 0-2.273786-0.059352c-18.107403 0-32.79594-14.613836-32.79594-32.578999s14.629185-32.594349 32.601512-32.594349l5.467525 0 0.01535-0.074701 70.198805 0 1.196245-4.6366c0.441045-1.749854 1.166569-3.261277 2.213411-4.622274l3.365654-4.247744-90.871637-90.856287c-8.331759-8.316409-4.823865-25.399483 7.816013-38.053688 7.66661-7.673773 17.404392-12.251022 26.050306-12.251022 4.966105 0 9.109472 1.541099 11.989055 4.427846l89.562828 89.585341 83.115999-88.6132c3.829212-4.158716 9.647731-6.446829 16.394389-6.446829 9.610892 0 19.707854 4.39817 27.007097 11.756765 13.9712 14.120602 19.310811 24.276916 7.52437 37.560454l-92.090395 94.132914-0.994654 4.771677-1.02433 5.564739 6.087649 1.765203 77.266781 0.164752 1.75804 0.090051c17.994839 0.135076 32.564673 14.748912 32.564673 32.594349 0 17.830087-14.531971 32.429597-32.391734 32.549324l-4.009314 0.074701-80.415494 0 0 50.962695 82.435501 0 1.772366 0.119727c18.032702 0.135076 32.608675 14.748912 32.608675 32.578999 0 17.845437-14.531971 32.444946-32.399921 32.564673l-84.416622 0.045025 0 40.702004-0.441045 1.779529 0.029676 3.290953c0.590448 3.261277 0.912789 6.028297 0.912789 8.855692C542.621415 825.427432 523.646248 844.409762 500.326123 844.409762zM397.069411 177.824011 323.130422 66.75845l0.276293-0.972141-0.171915-3.948939c-0.61296-2.857071-1.001817-4.577249-1.001817-6.238075 0-12.011568 5.92392-22.556739 15.099906-26.880207l2.737344-2.423189c8.840342-2.093684 97.752348-22.138206 170.023348-22.482037l2.109034 0c73.019037 0 154.436348 19.102057 167.839613 22.37766l0.650823 1.541099 2.131547 1.017166c9.102309 4.322445 14.988366 14.868639 14.988366 26.850531 0 1.675152-0.418532 3.440355-0.852414 5.29561l-0.441045 1.88493 0.957815 4.457522-74.395384 110.586654L397.069411 177.825035zM510.415922 67.716264c-26.14752 0.135076-57.596789 3.096525-93.504604 8.810666l-9.491165 1.5104 23.896246 35.885302 157.52571 0 24.232914-36.363186-9.468652-1.541099c-34.149774-5.504364-64.896032-8.302083-91.39557-8.302083L510.415922 67.716264z"  ></path></symbol><symbol id="icon-wodeyouhuijuan" viewBox="0 0 1024 1024"><path d="M1009.770667 393.536C1018.282667 390.528 1024 382.464 1024 373.397333l0-131.242667c0-52.352-42.56-94.976-94.912-94.976L94.976 147.178667c-52.352 0-94.954667 42.624-94.954667 94.976l0 131.242667c0 9.045333 5.696 17.130667 14.250667 20.138667C64.426667 411.264 98.133333 458.858667 98.133333 512c0 53.12-33.706667 100.757333-83.882667 118.506667C5.696 633.450667 0 641.578667 0 650.624l0 131.242667c0 52.330667 42.602667 94.954667 94.954667 94.954667L929.066667 876.821333c52.330667 0 94.933333-42.624 94.933333-94.954667l0-131.242667c0-9.045333-5.674667-17.130667-14.229333-20.117333-50.218667-17.749333-83.946667-65.365333-83.946667-118.506667S959.552 411.285333 1009.770667 393.536zM883.114667 512c0 66.048 38.869333 125.717333 98.154667 152.981333l0 116.885333c0 28.778667-23.402667 52.202667-52.202667 52.202667L94.954667 834.069333c-28.8 0-52.224-23.424-52.224-52.202667l0-116.885333c59.264-27.264 98.133333-86.933333 98.133333-152.981333 0-66.048-38.869333-125.738667-98.133333-152.981333l0-116.864c0-28.8 23.402667-52.224 52.224-52.224L929.066667 189.930667c28.778667 0 52.202667 23.402667 52.202667 52.224l0 116.864C921.962667 386.282667 883.114667 445.952 883.114667 512z"  ></path><path d="M683.690667 392.533333l-144.682667 0 86.293333-86.208c8.384-8.362667 8.384-21.888 0-30.229333-8.341333-8.341333-21.824-8.341333-30.208 0L512 359.104l-83.008-82.986667c-8.384-8.362667-21.866667-8.362667-30.208 0-8.362667 8.362667-8.362667 21.866667 0 30.208l86.229333 86.208-144.768 0c-11.776 0-21.354667 9.557333-21.354667 21.354667 0 11.797333 9.578667 21.376 21.354667 21.376l150.4 0 0 79.893333L364.8 515.157333c-11.818667 0-21.376 9.557333-21.376 21.376 0 11.818667 9.557333 21.333333 21.376 21.333333l125.845333 0 0 174.869333c0 11.84 9.557333 21.376 21.354667 21.376 11.84 0 21.376-9.578667 21.376-21.376L533.376 557.866667l125.76 0c11.861333 0 21.418667-9.536 21.418667-21.333333s-9.536-21.376-21.376-21.376l-125.781333 0 0-79.893333 150.357333 0c11.776 0 21.312-9.6 21.312-21.376C705.045333 402.112 695.509333 392.533333 683.690667 392.533333z"  ></path></symbol><symbol id="icon-daifukuan01" viewBox="0 0 1024 1024"><path d="M391.809105 95.359858l217.4628 0c5.718235 0 10.354835-5.102205 10.354835-11.395538l0-8.546653c0-6.293333-4.6366-11.395538-10.354835-11.395538l-217.4628 0c-5.719258 0-10.355859 5.102205-10.355859 11.395538l0 8.546653C381.453247 90.257653 386.089847 95.359858 391.809105 95.359858z"  ></path><path d="M305.64877 389.746632l389.782448 0c5.718235 0 10.354835-5.102205 10.354835-11.395538l0-8.546653c0-6.293333-4.6366-11.395538-10.354835-11.395538L305.64877 358.408903c-5.719258 0-10.355859 5.102205-10.355859 11.395538l0 8.546653C295.292911 384.644427 299.929512 389.746632 305.64877 389.746632z"  ></path><path d="M860.412736 595.754542 860.412736 102.585423c0-20.977777-15.429411-37.986149-34.463929-37.986149L704.581622 64.599274c-10.743692 1.198292-15.273868 14.719236-15.273868 14.719236l-38.392402 69.362764c0 0-2.835581 4.306072-4.256954 5.184069-1.219781 0.7552-4.738931 0.949628-4.738931 0.949628L357.80771 154.814971c0 0-2.674922-0.339738-3.66139-0.949628-0.724501-0.448208-2.591011-2.174526-2.591011-2.174526l-40.058344-72.372308c0 0-4.530177-13.520945-15.272845-14.719236L175.201789 64.599274c-19.033495 0-34.463929 17.007349-34.463929 37.986149l0 754.434541c0 20.9788 15.430434 37.985126 34.463929 37.985126l382.28059 0c-0.002047-0.002047-0.004093-0.004093-0.00614-0.00614 38.684044 39.760562 92.759637 64.470337 152.61691 64.470337 117.593232 0 212.923414-95.329159 212.923414-212.922391C923.016563 687.630043 899.083477 634.304534 860.412736 595.754542zM854.310761 589.918627c-0.218988-0.200568-0.432859-0.406253-0.652869-0.607844C853.878926 589.511351 854.092797 589.717036 854.310761 589.918627zM850.96455 586.902944c-0.287549-0.254803-0.573051-0.512676-0.862647-0.766456C850.391499 586.390267 850.677001 586.648141 850.96455 586.902944zM175.201789 863.667362c-3.325745 0-6.031367-2.982938-6.031367-6.647397L169.170422 102.585423c0-3.665483 2.705622-6.647397 6.031367-6.647397l112.188128 0 39.893592 72.073502 2.424212 4.380774 3.566222 3.300162c3.911076 3.618411 6.048763 4.940522 6.952342 5.499248 1.477654 0.914836 5.973038 3.696182 14.328333 4.755304l1.620917 0.205685 1.63115 0 284.11278 0 0.711198 0 0.710175-0.039909c10.194176-0.562818 15.497972-3.846608 17.225313-4.916986 3.194762-1.974981 7.598049-5.362124 13.358239-14.106276l0.668219-1.017166 0.594541-1.072425 38.22458-69.062935 112.534006 0c3.324722 0 6.031367 2.981914 6.031367 6.647397l0 469.37111c-34.530444-24.153096-76.550467-38.33305-121.886001-38.33305-1.439792 0-2.874467 0.025583-4.307096 0.055259l0-7.184633c0-6.293333-4.6366-11.395538-10.354835-11.395538L305.64877 515.097548c-5.719258 0-10.355859 5.102205-10.355859 11.395538l0 8.546653c0 6.29538 4.6366 11.396561 10.355859 11.396561l331.537905 0c1.38658-0.505513 2.781346-0.995677 4.181229-1.472538-60.281945 20.546965-108.391662 67.375503-130.688481 126.8255L305.64877 671.789263c-5.719258 0-10.355859 5.102205-10.355859 11.395538l0 8.547677c0 6.294356 4.6366 11.395538 10.355859 11.395538l195.95802 0c0.282433-1.363044 0.578168-2.720971 0.887206-4.074805-3.479241 15.273868-5.323239 31.168883-5.323239 47.495734 0 43.278689 12.924357 83.533508 35.107589 117.138884-0.004093-0.00614-0.008186-0.01228-0.01228-0.01842L175.201789 863.669408zM847.305207 583.743998c-0.26606-0.224104-0.530073-0.450255-0.797156-0.673335C846.775134 583.293743 847.039147 583.520917 847.305207 583.743998zM843.547627 580.647473c-0.221034-0.178055-0.441045-0.357134-0.661056-0.533143C843.106582 580.290339 843.326593 580.469418 843.547627 580.647473zM839.734788 577.647139c-0.163729-0.12689-0.328481-0.252757-0.493234-0.379647C839.406307 577.394383 839.571059 577.520249 839.734788 577.647139zM835.868737 574.74402c-0.088004-0.064468-0.176009-0.128937-0.264013-0.192382C835.692728 574.615083 835.780733 574.678528 835.868737 574.74402zM701.857581 533.797445c-0.303922 0.011256-0.608867 0.021489-0.912789 0.033769C701.248713 533.818935 701.553659 533.808702 701.857581 533.797445zM697.232237 534.021549c-0.343831 0.021489-0.686638 0.042979-1.030469 0.064468C696.545598 534.064528 696.888406 534.040992 697.232237 534.021549zM692.459536 534.355147c-0.172939 0.01535-0.344854 0.031722-0.517793 0.046049C692.115706 534.38687 692.287621 534.369473 692.459536 534.355147zM680.063205 535.741727c-0.394996 0.055259-0.789992 0.106424-1.183965 0.164752C679.273213 535.849174 679.668209 535.796986 680.063205 535.741727zM675.686525 536.40483c-0.532119 0.086981-1.063215 0.173962-1.594311 0.265036C674.623309 536.578792 675.154405 536.491811 675.686525 536.40483zM671.063227 537.206078c-0.568958 0.105401-1.133823 0.215918-1.701758 0.325411C669.929404 537.421996 670.495292 537.310456 671.063227 537.206078zM666.400021 538.119891c-0.522909 0.10847-1.041726 0.228197-1.561565 0.339738C665.358295 538.347065 665.877111 538.228361 666.400021 538.119891zM659.509077 539.685549c-0.653893 0.158612-1.308809 0.313132-1.960655 0.478907C658.200268 539.997658 658.856207 539.844162 659.509077 539.685549zM655.051555 540.821419c-0.727571 0.193405-1.454118 0.387833-2.177596 0.589424C653.597437 541.209252 654.323984 541.015847 655.051555 540.821419zM650.470213 542.096459c-0.7552 0.220011-1.509377 0.445138-2.260483 0.673335C648.96186 542.541597 649.715013 542.316469 650.470213 542.096459zM645.903198 543.479969c-0.799202 0.251733-1.595334 0.5137-2.390443 0.775666C644.308887 543.993668 645.103995 543.731702 645.903198 543.479969zM509.358335 675.41586c-0.049119 0.1361-0.097214 0.273223-0.145309 0.409322C509.261121 675.689083 509.309216 675.55196 509.358335 675.41586zM505.630431 686.968987c-0.027629 0.093121-0.057305 0.187265-0.083911 0.280386C505.574149 687.156252 505.602801 687.062108 505.630431 686.968987zM504.702292 690.271196c-0.140193 0.51063-0.278339 1.02126-0.414439 1.532913C504.423953 691.292456 504.562099 690.781826 504.702292 690.271196zM503.572562 694.563966c-0.156566 0.627287-0.309038 1.257643-0.460488 1.886977C503.26557 695.821609 503.414973 695.191252 503.572562 694.563966zM554.005184 891.345748c0.010233 0.011256 0.021489 0.021489 0.030699 0.032746C554.025651 891.36826 554.014394 891.357004 554.005184 891.345748zM535.081183 867.826078c0.00921 0.01228 0.01842 0.024559 0.026606 0.037862C535.098579 867.850637 535.089369 867.838358 535.081183 867.826078zM538.005792 871.933629c0.00921 0.01228 0.01842 0.023536 0.025583 0.035816C538.024212 871.958188 538.015002 871.945909 538.005792 871.933629zM541.023522 875.967502c0.00921 0.013303 0.019443 0.024559 0.028653 0.037862C541.042965 875.992061 541.032732 875.980805 541.023522 875.967502zM544.13028 879.923604c0.01228 0.01535 0.024559 0.029676 0.036839 0.046049C544.155862 879.95328 544.142559 879.938953 544.13028 879.923604zM547.332205 883.808074c0.01228 0.01535 0.024559 0.028653 0.036839 0.044002C547.357787 883.836727 547.344484 883.823424 547.332205 883.808074zM550.624181 887.615796c0.01228 0.014326 0.023536 0.026606 0.035816 0.039909C550.647717 887.642402 550.63646 887.629099 550.624181 887.615796zM838.944795 875.398544c-34.417881 34.416857-80.179111 53.371558-128.851647 53.371558-48.673559 0-94.433766-18.954701-128.851647-53.371558-34.417881-34.417881-53.372581-80.179111-53.372581-128.851647 0-48.673559 18.954701-94.433766 53.372581-128.851647s80.178087-53.372581 128.851647-53.372581c48.672536 0 94.433766 18.954701 128.851647 53.372581s53.372581 80.179111 53.372581 128.851647S873.362676 840.97964 838.944795 875.398544z"  ></path><path d="M801.834596 756.008386c8.477069 0 15.349593-6.872524 15.349593-15.349593s-6.872524-15.349593-15.349593-15.349593l-59.743686 0 65.669652-85.421508c5.167696-6.721075 3.906983-16.35755-2.813069-21.524223-6.721075-5.16872-16.358573-3.906983-21.524223 2.813069l-72.494081 94.297666-72.496128-94.297666c-5.166673-6.720052-14.802124-7.981788-21.524223-2.813069-6.720052 5.166673-7.980765 14.803147-2.813069 21.524223l65.671699 85.421508-59.744709 0c-8.477069 0-15.349593 6.872524-15.349593 15.349593s6.872524 15.349593 15.349593 15.349593l75.556836 0 0 33.440623-71.920006 0c-8.477069 0-15.349593 6.872524-15.349593 15.349593s6.872524 15.349593 15.349593 15.349593l71.920006 0 0 57.341986c0 8.477069 6.872524 15.349593 15.349593 15.349593s15.349593-6.872524 15.349593-15.349593l0-57.341986 71.918983 0c8.477069 0 15.349593-6.872524 15.349593-15.349593s-6.872524-15.349593-15.349593-15.349593l-71.918983 0 0-33.440623L801.834596 756.008386z"  ></path></symbol><symbol id="icon-yiwancheng" viewBox="0 0 1024 1024"><path d="M889.679805 547.051307c0-41.48074-27.488051-76.604702-65.056692-87.821161L824.623114 320.252885c0-47.821145-38.557154-86.729294-85.951581-86.729294l-39.310308 0-87.373976-94.53405c-3.321652-3.619434-8.553817-4.706185-13.033851-2.76702L374.667192 233.523591l-85.661985 0c-47.393403 0-85.951581 38.908148-85.951581 86.729294l0 453.629591c0 47.806819 38.557154 86.706781 85.951581 86.706781l449.666326 0c47.393403 0 85.951581-38.899962 85.951581-86.706781L824.623114 634.881678C862.190731 623.665219 889.679805 588.53921 889.679805 547.051307zM600.618317 160.9149l67.11149 72.608691L433.252495 233.523591 600.618317 160.9149zM801.478997 773.881452c0 34.932604-28.181853 63.35698-62.808488 63.35698L289.005206 837.238432c-34.626635 0-62.808488-28.424376-62.808488-63.35698L226.196719 320.252885c0-34.94693 28.181853-63.379493 62.808488-63.379493l449.666326 0c34.626635 0 62.808488 28.433586 62.808488 63.379493l0 135.267776c-0.857531-0.024559-1.716084-0.038886-2.578732-0.038886L578.36243 455.481775c-6.390547 0-11.573593 5.230118-11.573593 11.675924l0 159.799496c0 6.445806 5.184069 11.675924 11.573593 11.675924l220.537835 0c0.862647 0 1.722224-0.01535 2.578732-0.038886L801.478997 773.881452zM798.900266 615.282295 589.936023 615.282295 589.936023 478.82953l208.964242 0c37.296441 0 67.636446 30.607088 67.636446 68.221778C866.536712 584.675206 836.196707 615.282295 798.900266 615.282295z"  ></path></symbol><symbol id="icon-wodedingdan" viewBox="0 0 1024 1024"><path d="M383 341l260 0c16.6 0 30-13.4 30-30 0-16.6-13.4-30-30-30L383 281c-16.6 0-30 13.4-30 30C353 327.6 366.4 341 383 341z"  ></path><path d="M383 465l260 0c16.6 0 30-13.4 30-30 0-16.6-13.4-30-30-30L383 405c-16.6 0-30 13.4-30 30C353 451.6 366.4 465 383 465z"  ></path><path d="M383 598l260 0c16.6 0 30-13.4 30-30 0-16.6-13.4-30-30-30L383 538c-16.6 0-30 13.4-30 30C353 584.6 366.4 598 383 598z"  ></path><path d="M807 690.7c0.4-2.9 0.4-5.9 0-8.9L807 203l-0.5 0c-4.5-39.9-38.3-71-79.5-71L316 132c-44.2 0-80 35.8-80 80l0 600c0 41.1 31.1 75 71 79.5l0 0.5 281 0 0-0.4c4-0.7 7.8-2.2 11.1-4.3 3.5-1.3 6.8-3.3 9.7-6l188.8-172.9c3.8-3.5 6.6-7.8 8.1-12.4l1.3 0L807 690.7zM296 812 296 212c0-11 9-20 20-20l411 0c11 0 20 9 20 20l0 437L633 649c-44.2 0-80 35.8-80 80l0 103L316 832C305 832 296 823 296 812zM708.1 709 613 796.1 613 729c0-11 9-20 20-20L708.1 709z"  ></path></symbol><symbol id="icon-jifen" viewBox="0 0 1603 1024"><path d="M801.23724 0C518.930425 0 289.23724 229.693184 289.23724 512s229.693184 512 512 512c282.311824 0 512-229.693184 512-512S1083.549065 0 801.23724 0zM801.23724 960.000939c-247.04241 0-447.995931-200.963537-447.995931-448.000939 0-247.04241 200.95352-448.000939 447.995931-448.000939S1249.23818 264.95759 1249.23818 512C1249.23818 759.037402 1048.279651 960.000939 801.23724 960.000939z"  ></path><path d="M801.23724 409.832892c-22.665682 0-43.835093-2.909902-63.543293-8.725949-19.689418-5.796014-35.216825-14.408021-46.594742-25.773417l0 34.499367c0 9.338231 4.933311 17.999071 14.782402 25.975007 9.841579 7.977188 23.235392 14.292827 40.150136 18.975716 16.914744 4.659099 35.315742 6.996787 55.205498 6.996787 19.879739 0 38.290753-2.337688 55.196733-6.996787 16.914744-4.659099 30.308557-10.998528 40.1589-18.975716 9.840327-7.975936 14.773637-16.638028 14.773637-25.975007l0-34.499367c-11.369152 11.364144-26.920349 19.953613-46.61102 25.773417C845.064821 406.925495 823.894158 409.832892 801.23724 409.832892z"  ></path><path d="M911.366511 531.161028c-11.369152 11.365396-26.920349 19.956117-46.61102 25.772165-19.69067 5.8173-40.860082 8.728454-63.516999 8.728454-22.665682 0-43.835093-2.909902-63.543293-8.728454-19.689418-5.816048-35.216825-14.382979-46.594742-25.748375l0 34.49561c0 9.340735 4.933311 18.000323 14.782402 25.977511 9.841579 7.974684 23.235392 14.292827 40.150136 18.975716 16.914744 4.659099 35.315742 6.976753 55.205498 6.976753 19.879739 0 38.290753-2.341444 55.196733-7.000543 16.914744-4.680384 30.308557-10.998528 40.1589-18.973212 9.840327-7.97844 14.773637-16.635524 14.773637-25.975007L911.367763 531.161028z"  ></path><path d="M705.86533 357.904165c9.840327 7.999726 23.235392 14.320374 40.150136 18.979472 16.931021 4.659099 35.332019 6.976753 55.221775 6.976753 19.879739 0 38.290753-2.342696 55.196733-7.000543 16.914744-4.659099 30.308557-10.998528 40.1589-18.975716 9.840327-7.97844 14.773637-16.634272 14.773637-25.975007l0-21.514994c0-9.339483-4.932058-17.996566-14.773637-25.973755-9.850344-7.975936-23.244156-14.296584-40.1589-18.975716-16.905979-4.659099-35.316994-7.000543-55.196733-7.000543-19.889756 0-38.290753 2.341444-55.221775 7.000543-16.914744 4.679132-30.309809 10.998528-40.150136 18.975716-9.849091 7.977188-14.774889 16.634272-14.774889 25.97125l0 21.540036C691.09044 341.269893 696.016238 349.928229 705.86533 357.904165z"  ></path><path d="M864.771769 479.029459c-19.706948 5.8173-40.876359 8.729706-63.534528 8.729706-22.665682 0-43.835093-2.911154-63.542041-8.729706-19.691922-5.818552-35.218077-14.404265-46.595994-25.769661l0 34.499367c0 9.339483 4.933311 17.996566 14.782402 25.973755 9.841579 7.974684 23.235392 14.294079 40.150136 18.974464 16.931021 4.659099 35.332019 7.000543 55.221775 7.000543 19.879739 0 38.281989-2.341444 55.196733-7.000543 16.913492-4.659099 30.308557-10.99978 40.1589-18.974464 9.840327-7.977188 14.774889-16.635524 14.774889-25.973755l0-34.499367C900.013636 464.625194 884.462439 473.213411 864.771769 479.029459z"  ></path><path d="M801.23724 642.725216c-22.665682 0-43.835093-2.909902-63.543293-8.725949-19.689418-5.796014-35.216825-14.408021-46.594742-25.773417l0 34.499367c0 9.338231 4.933311 17.999071 14.782402 25.975007 9.841579 7.977188 23.235392 14.292827 40.150136 18.975716 16.914744 4.659099 35.315742 6.996787 55.205498 6.996787 19.879739 0 38.290753-2.337688 55.196733-6.996787 16.914744-4.659099 30.308557-10.998528 40.1589-18.975716 9.840327-7.975936 14.773637-16.638028 14.773637-25.975007l0-34.499367c-11.369152 11.364144-26.920349 19.953613-46.61102 25.773417C845.064821 639.817818 823.894158 642.725216 801.23724 642.725216z"  ></path><path d="M801.23724 720.651488c-22.665682 0-43.835093-2.911154-63.542041-8.729706-19.691922-5.818552-35.218077-14.404265-46.595994-25.769661l0 34.499367c0 9.339483 4.933311 17.996566 14.782402 25.973755 9.841579 7.974684 23.235392 14.294079 40.150136 18.974464 16.931021 4.659099 35.332019 7.000543 55.221775 7.000543 19.879739 0 38.281989-2.341444 55.196733-7.000543 16.913492-4.659099 30.308557-10.99978 40.1589-18.974464 9.840327-7.977188 14.774889-16.635524 14.774889-25.973755l0-34.499367c-11.370404 11.365396-26.921601 19.953613-46.612272 25.769661C845.064821 717.740334 823.894158 720.651488 801.23724 720.651488z"  ></path><path d="M801.23724 798.552718c-22.665682 0-43.835093-2.909902-63.543293-8.728454-19.689418-5.816048-35.216825-14.382979-46.594742-25.748375l0 34.49561c0 9.340735 4.933311 18.000323 14.782402 25.977511 9.841579 7.974684 23.235392 14.292827 40.150136 18.975716 16.914744 4.659099 35.315742 6.976753 55.205498 6.976753 19.879739 0 38.290753-2.341444 55.196733-7.000543 16.914744-4.680384 30.308557-10.998528 40.1589-18.973212 9.840327-7.97844 14.773637-16.635524 14.773637-25.975007l0-34.499367c-11.369152 11.365396-26.920349 19.956117-46.61102 25.772165C845.064821 795.642816 823.894158 798.552718 801.23724 798.552718z"  ></path><path d="M465.847252 496.296046c-8.431704 6.829004-12.648808 14.240239-12.648808 22.234956l0 18.441065c0 7.993466 4.217104 15.407205 12.648808 22.234956 8.425443 6.849038 19.89226 12.259402 34.374156 16.248622 14.494417 3.987968 30.248456 5.972561 47.277142 5.972561 17.019921 0 32.781473-2.005879 47.255856-5.992595 14.480644-3.98922 25.94746-9.415862 34.380416-16.244866 8.425443-6.831508 12.647556-14.241491 12.647556-22.238713l0-18.419779c0-7.99597-4.223365-15.407205-12.647556-22.236208-8.432956-6.829004-19.899773-12.239368-34.380416-16.244866-14.473131-3.987968-30.235935-5.992595-47.255856-5.992595-17.028686 0-32.781473 2.004627-47.277142 5.992595C485.739512 484.056678 474.272696 489.468294 465.847252 496.296046M453.205957 640.844548 453.205957 670.379301c0 7.99597 4.224617 15.407205 12.65632 22.237461 8.425443 6.827752 19.89226 12.238116 34.374156 16.244866 14.494417 3.98922 30.248456 5.993847 47.277142 5.993847 17.019921 0 32.77396-2.004627 47.255856-5.993847 14.480644-3.987968 25.94746-9.417114 34.380416-16.244866 8.425443-6.829004 12.648808-14.242743 12.648808-22.237461l0-29.536005c-9.73515 9.730141-23.047575 17.082527-39.905974 22.062165-16.87092 4.980891-34.995202 7.47384-54.392879 7.47384-19.403937 0-37.528219-2.49295-54.400391-7.47384C476.239759 657.925822 462.946115 650.574689 453.205957 640.844548M453.205957 707.556929l0 29.532249c0 7.997222 4.224617 15.410961 12.65632 22.239965 8.425443 6.827752 19.89226 12.236864 34.374156 16.244866 14.480644 3.987968 30.234682 5.972561 47.262116 5.972561 17.019921 0 32.781473-2.004627 47.255856-5.992595 14.480644-4.00675 25.94746-9.415862 34.380416-16.243614 8.425443-6.830256 12.647556-14.242743 12.647556-22.238713l0-29.536005c-9.733897 9.730141-23.046323 17.085031-39.904722 22.063417-16.857147 4.980891-34.981429 7.472588-54.379105 7.472588-19.403937 0-37.528219-2.491697-54.401643-7.472588C476.239759 724.621927 462.946115 717.287071 453.205957 707.556929M453.205957 574.129662l0 29.536005c0 7.994718 4.224617 15.409709 12.65632 22.238713 8.425443 6.829004 19.89226 12.236864 34.374156 16.244866 14.480644 3.987968 30.234682 5.990091 47.262116 5.990091 17.019921 0 32.781473-2.000871 47.255856-5.990091 14.480644-3.987968 25.94746-9.415862 34.380416-16.244866 8.425443-6.829004 12.647556-14.243995 12.647556-22.238713L641.782378 574.129662c-9.733897 9.730141-23.046323 17.082527-39.904722 22.064669-16.857147 4.980891-34.981429 7.470084-54.379105 7.470084-19.403937 0-37.528219-2.491697-54.401643-7.470084C476.239759 591.232222 462.946115 583.859803 453.205957 574.129662"  ></path><path d="M973.325886 490.937018c-8.431704 6.829004-12.648808 14.241491-12.648808 22.234956l0 18.441065c0 7.993466 4.217104 15.407205 12.648808 22.234956 8.425443 6.849038 19.89226 12.259402 34.374156 16.248622 14.494417 3.987968 30.248456 5.972561 47.277142 5.972561 17.019921 0 32.781473-2.005879 47.255856-5.992595 14.480644-3.98922 25.94746-9.415862 34.380416-16.244866 8.425443-6.831508 12.647556-14.241491 12.647556-22.238713l0-18.419779c0-7.99597-4.222112-15.407205-12.647556-22.236208-8.432956-6.829004-19.899773-12.239368-34.380416-16.244866-14.474383-3.987968-30.235935-5.992595-47.255856-5.992595-17.028686 0-32.781473 2.004627-47.277142 5.992595C993.218146 478.69765 981.751329 484.108014 973.325886 490.937018M960.684591 635.484268l0 29.536005c0 7.99597 4.223365 15.407205 12.65632 22.237461 8.425443 6.8265 19.89226 12.238116 34.374156 16.244866 14.494417 3.98922 30.248456 5.993847 47.277142 5.993847 17.019921 0 32.77396-2.004627 47.255856-5.993847 14.480644-3.987968 25.94746-9.417114 34.380416-16.244866 8.425443-6.829004 12.648808-14.242743 12.648808-22.237461l0-29.536005c-9.73515 9.730141-23.047575 17.082527-39.905974 22.062165-16.87092 4.980891-34.995202 7.47384-54.392879 7.47384-19.403937 0-37.529471-2.49295-54.400391-7.47384C983.718393 652.565543 970.424749 645.214409 960.684591 635.484268M960.684591 702.197902l0 29.532249c0 7.997222 4.223365 15.410961 12.65632 22.239965 8.425443 6.827752 19.89226 12.236864 34.374156 16.244866 14.480644 3.987968 30.234682 5.972561 47.262116 5.972561 17.019921 0 32.781473-2.004627 47.255856-5.992595 14.480644-4.00675 25.94746-9.415862 34.380416-16.243614 8.425443-6.830256 12.647556-14.242743 12.647556-22.238713l0-29.536005c-9.733897 9.730141-23.046323 17.085031-39.904722 22.063417-16.857147 4.980891-34.981429 7.472588-54.379105 7.472588-19.403937 0-37.529471-2.491697-54.401643-7.472588C983.718393 719.261647 970.424749 711.926791 960.684591 702.197902M960.684591 568.769382l0 29.536005c0 7.994718 4.223365 15.409709 12.65632 22.238713 8.425443 6.829004 19.89226 12.236864 34.374156 16.244866 14.480644 3.987968 30.234682 5.990091 47.262116 5.990091 17.019921 0 32.781473-2.000871 47.255856-5.990091 14.480644-3.987968 25.94746-9.415862 34.380416-16.244866 8.425443-6.829004 12.647556-14.243995 12.647556-22.238713l0-29.536005c-9.733897 9.730141-23.046323 17.082527-39.904722 22.064669-16.857147 4.980891-34.981429 7.470084-54.379105 7.470084-19.403937 0-37.529471-2.491697-54.401643-7.470084C983.718393 585.871942 970.424749 578.499523 960.684591 568.769382"  ></path></symbol><symbol id="icon-lingjuandizhi" viewBox="0 0 1024 1024"><path d="M943.088 340.144 526.592 27.64C516.24 19.88 504.112 16 492 16c-12.12 0-24.24 3.88-34.592 11.64L40.912 340.144C25.28 351.872 16 370.816 16 391l0 562.488C16 988.008 42.64 1016 75.496 1016c0 0 79.44 0 146.528 0 103.688 0 91.472-81.88 91.472-81.88L313.496 641c0-34.52 26.64-62.504 59.496-62.504l238 0c32.856 0 59.504 27.984 59.504 62.504l0 298.368c0 0-3.68 75.304 81.528 76.624 68.904 0 156.464 0 156.464 0 32.856 0 59.504-27.992 59.504-62.504L967.992 391C968 370.816 958.72 351.872 943.088 340.144z"  ></path></symbol><symbol id="icon-weibiaoti2fuzhi05" viewBox="0 0 1024 1024"><path d="M633.6 217.6l108.8 0L512 64 281.6 217.6 384 217.6l0 275.2 249.6 0L633.6 217.6zM435.2 172.8 512 121.6l76.8 51.2L588.8 448 435.2 448 435.2 172.8z"  ></path><path d="M627.2 761.6l76.8-102.4 179.2 0-64 249.6L204.8 908.8l-64-249.6 179.2 0 76.8 102.4L627.2 761.6zM838.4 281.6l-147.2 0c-12.8 0-25.6 12.8-25.6 25.6 0 12.8 12.8 25.6 25.6 25.6l108.8 0c12.8 0 19.2 6.4 25.6 19.2L876.8 576c6.4 12.8-6.4 32-25.6 32l-160 0c-6.4 0-12.8 6.4-19.2 12.8l-57.6 83.2c-6.4 6.4-12.8 12.8-19.2 12.8L435.2 716.8c-6.4 0-12.8-6.4-19.2-12.8L358.4 620.8C352 614.4 345.6 608 339.2 608L172.8 608C160 608 147.2 595.2 147.2 576l51.2-224c0-12.8 12.8-19.2 25.6-19.2l108.8 0c12.8 0 25.6-12.8 25.6-25.6 0-12.8-12.8-25.6-25.6-25.6L185.6 281.6c-12.8 0-19.2 6.4-25.6 19.2L89.6 627.2c0 6.4 0 6.4 0 12.8l76.8 300.8c0 12.8 12.8 19.2 25.6 19.2l652.8 0c12.8 0 19.2-6.4 25.6-19.2l76.8-300.8c0-6.4 0-6.4 0-12.8l-76.8-326.4C857.6 288 851.2 281.6 838.4 281.6z"  ></path></symbol><symbol id="icon-shouhuodizhi" viewBox="0 0 1024 1024"><path d="M512.005117 0.346901c-282.287201 0-434.613492 213.591633-434.613492 396.730697 0 190.322673 196.84625 402.487817 429.855118 504.555447l4.758374 2.100848 4.758374-2.100848c232.997612-102.066607 429.844885-314.251194 429.844885-504.555447C946.607352 213.93751 794.292318 0.346901 512.005117 0.346901zM512.00307 526.686491c-108.035552 0-195.61419-87.579661-195.61419-195.61419S403.967518 135.458111 512.00307 135.458111c108.033505 0 195.61419 87.579661 195.61419 195.61419S620.037599 526.686491 512.00307 526.686491z"  ></path><path d="M259.848143 984.530057a246.409 38.232 0 1 0 504.303714 0 246.409 38.232 0 1 0-504.303714 0Z"  ></path></symbol><symbol id="icon-wodeshoucang" viewBox="0 0 1024 1024"><path d="M1019.733333 384c-8.533333-25.6-34.133333-46.933333-59.733333-51.2l-268.8-42.666667L580.266667 42.666667c-12.8-25.6-38.4-42.666667-68.266667-42.666667s-55.466667 17.066667-68.266667 42.666667L328.533333 290.133333l-264.533333 42.666667C34.133333 337.066667 12.8 354.133333 4.266667 384c-8.533333 25.6 0 55.466667 17.066666 76.8l196.266667 200.533333L170.666667 938.666667c-4.266667 29.866667 8.533333 55.466667 29.866666 72.533333 12.8 8.533333 29.866667 12.8 42.666667 12.8 12.8 0 25.6-4.266667 34.133333-8.533333l230.4-123.733334 230.4 123.733334c12.8 4.266667 25.6 8.533333 34.133334 8.533333 17.066667 0 29.866667-4.266667 42.666666-12.8 21.333333-17.066667 34.133333-46.933333 29.866667-72.533333l-46.933333-277.333334 196.266666-200.533333c29.866667-25.6 34.133333-51.2 25.6-76.8z"  ></path></symbol><symbol id="icon-ziyuan" viewBox="0 0 1024 1024"><path d="M512 425.353846a226.855385 226.855385 0 1 0 205.193846 322.953846 36.233846 36.233846 0 1 0-65.378461-30.326154 154.781538 154.781538 0 0 1-294.99077-65.378461A154.781538 154.781538 0 0 1 512 497.427692a157.538462 157.538462 0 0 1 140.603077 90.19077 36.233846 36.233846 0 0 0 65.378461-30.326154A228.036923 228.036923 0 0 0 512 425.353846z"  ></path><path d="M512 291.446154a351.704615 351.704615 0 1 0 351.310769 351.310769A351.704615 351.704615 0 0 0 512 291.446154z m279.236923 351.310769A279.236923 279.236923 0 1 1 512 363.52a279.630769 279.630769 0 0 1 279.236923 279.236923z"  ></path><path d="M801.083077 29.538462H222.916923a62.227692 62.227692 0 0 0-62.227692 62.227692v142.178461a114.215385 114.215385 0 0 0 39.384615 78.769231L250.486154 354.461538a36.233846 36.233846 0 1 0 45.686154-54.744615l-50.412308-39.384615a48.049231 48.049231 0 0 1-12.996923-24.418462V101.612308h558.473846v132.332307a30.326154 30.326154 0 0 1-12.996923 24.418462l-50.412308 39.384615A36.233846 36.233846 0 0 0 773.513846 354.461538l50.806154-39.384615a101.612308 101.612308 0 0 0 39.384615-78.769231V91.766154A62.227692 62.227692 0 0 0 801.083077 29.538462z"  ></path></symbol><symbol id="icon-gouwuche" viewBox="0 0 1024 1024"><path d="M289 881.2c-55.9 0-101.4-45.5-101.4-101.4 0-55.9 45.5-101.4 101.4-101.4s101.4 45.5 101.4 101.4c0 55.9-45.5 101.4-101.4 101.4z m0-161.6c-33.2 0-60.2 27-60.2 60.1 0 33.2 27 60.1 60.2 60.1s60.2-27 60.2-60.1c-0.1-33.1-27.1-60.1-60.2-60.1zM566.2 881.2c-55.9 0-101.4-45.5-101.4-101.4 0-55.9 45.5-101.4 101.4-101.4s101.4 45.5 101.4 101.4c0 55.9-45.5 101.4-101.4 101.4z m0-161.6c-33.2 0-60.2 27-60.2 60.1 0 33.2 27 60.1 60.2 60.1s60.2-27 60.2-60.1c-0.1-33.1-27.1-60.1-60.2-60.1zM648.4 640.8H198.3L86.9 250.6h567.2l45.7-107.7h163.5c40.7 0 73.8 33.4 73.8 74.5 0 41-33.1 74.3-73.8 74.3-5.1 0-47.7 0.1-70.2 0.2L648.4 640.8z m-419-41.3h391.4l144.7-348.9h13.7s77.1-0.2 84-0.2c17.9 0 32.6-14.8 32.6-33 0-18-14.9-33.2-32.6-33.2H727l-45.7 107.7H141.6l87.8 307.6z"  ></path></symbol><symbol id="icon-yiguanbigongdanshu" viewBox="0 0 1025 1024"><path d="M576 64H256a64.19 64.19 0 0 0-64 64v768a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64V320z m94.39 687.53l-45.25 45.25L512 683.65 398.86 796.78l-45.25-45.25 113.14-113.14-113.14-113.14L398.86 480 512 593.14 625.14 480l45.25 45.25-113.14 113.14zM576 320V128l192 192z"  ></path></symbol><symbol id="icon-shouhoukefu" viewBox="0 0 1024 1024"><path d="M824.2 360.7C809 305.8 744.7 128 512.1 128c-230.8 0-297 177.8-310.2 232.7-43.5 17-104 62.4-104 151.3 0 87 60.5 136.2 102.2 155.1 5.7 34.1 22.7 109.7 96.5 155.1 53 34.1 117.3 41.6 160.8 43.5 9.5 18.9 28.4 30.3 49.2 30.3 32.2 0 56.8-24.6 56.8-56.8 0-30.3-24.6-56.8-56.8-56.8-22.7 0-41.6 13.2-51.1 34.1-37.8-1.9-90.8-9.5-134.3-35.9-70-43.5-73.8-128.6-73.8-132.4V383.4c3.8-22.7 45.4-204.3 264.8-204.3S773.3 362.6 777 383.4v266.7c0 7.6 3.8 15.1 9.5 20.8 3.8 3.8 9.5 5.7 15.1 5.7 1.9 0 5.7 0 7.6-1.9 41.6-13.2 119.2-62.4 119.2-160.8-0.2-90.8-62.6-136.2-104.2-153.2zM198 608.5c-22.7-17-51.1-45.4-51.1-96.5s28.4-79.5 51.1-92.7v189.2z m630 0V419.3c22.7 15.1 51.1 43.5 51.1 92.7s-28.4 79.5-51.1 96.5z"  ></path></symbol><symbol id="icon-wodeyuyue" viewBox="0 0 1024 1024"><path d="M868.864 366.08h-808.96v61.44h808.96v-61.44zM261.632 281.088c-16.896 0-30.72-13.824-30.72-30.72V104.448c0-16.896 13.824-30.72 30.72-30.72s30.72 13.824 30.72 30.72v145.92c0 16.896-13.824 30.72-30.72 30.72zM161.792 542.72c0-16.896 13.824-30.72 30.72-30.72h145.92c16.896 0 30.72 13.824 30.72 30.72s-13.824 30.72-30.72 30.72H192.512c-16.896 0-30.72-13.824-30.72-30.72zM747.52 603.136c16.896 0 30.72 13.824 30.72 30.72V711.68c0 16.896-13.824 30.72-30.72 30.72s-30.72-13.824-30.72-30.72v-78.336c0-16.896 13.824-30.208 30.72-30.208z"  ></path><path d="M858.624 715.264c0 16.896-13.824 30.72-30.72 30.72h-78.336c-16.896 0-30.72-13.824-30.72-30.72s13.824-30.72 30.72-30.72h78.336c16.896 0 30.72 13.824 30.72 30.72zM161.792 706.56c0-16.896 13.824-30.72 30.72-30.72h145.92c16.896 0 30.72 13.824 30.72 30.72s-13.824 30.72-30.72 30.72H192.512c-16.896 0-30.72-13.824-30.72-30.72zM666.112 281.088c-16.896 0-30.72-13.824-30.72-30.72V104.448c0-16.896 13.824-30.72 30.72-30.72s30.72 13.824 30.72 30.72v145.92c0 16.896-13.824 30.72-30.72 30.72z"  ></path><path d="M458.752 873.472m-30.72 0a30.72 30.72 0 1 0 61.44 0 30.72 30.72 0 1 0-61.44 0Z"  ></path><path d="M752.64 541.696c93.184 0 168.96 75.776 168.96 168.96s-75.776 168.96-168.96 168.96-168.96-75.776-168.96-168.96 75.776-168.96 168.96-168.96m0-61.44c-127.488 0-230.4 102.912-230.4 230.4s102.912 230.4 230.4 230.4 230.4-102.912 230.4-230.4-102.912-230.4-230.4-230.4z"  ></path><path d="M460.8 842.752H175.104c-37.376 0-68.608-30.72-68.608-68.608V248.32c0-37.376 30.72-68.608 68.608-68.608h578.048c37.376 0 68.608 30.72 68.608 68.608v177.664h60.416V250.88c0-72.704-58.88-131.584-131.584-131.584H178.176C105.472 119.296 46.08 178.176 46.08 250.88v520.704c0 72.704 58.88 131.584 131.584 131.584H460.8v-60.416z"  ></path></symbol><symbol id="icon-buqiajuan" viewBox="0 0 1024 1024"><path d="M941.511111 409.6l25.6-2.844444V224.711111c0-48.355556-36.977778-85.333333-85.333333-85.333333H142.222222c-48.355556 0-85.333333 36.977778-85.333333 85.333333v184.888889l19.911111 5.688889c39.822222 14.222222 65.422222 51.2 65.422222 93.866667 0 42.666667-25.6 79.644444-65.422222 93.866666l-19.911111 5.688889v184.888889c0 48.355556 36.977778 85.333333 85.333333 85.333333h739.555556c48.355556 0 85.333333-36.977778 85.333333-85.333333v-182.044444l-25.6-2.844445c-51.2-5.688889-88.177778-48.355556-88.177778-99.555555s36.977778-93.866667 88.177778-99.555556zM910.222222 659.911111v133.688889c0 17.066667-11.377778 28.444444-28.444444 28.444444H142.222222c-17.066667 0-28.444444-11.377778-28.444444-28.444444v-145.066667c51.2-25.6 85.333333-79.644444 85.333333-139.377777s-34.133333-113.777778-85.333333-139.377778V224.711111c0-17.066667 11.377778-28.444444 28.444444-28.444444h739.555556c17.066667 0 28.444444 11.377778 28.444444 28.444444v133.688889c-65.422222 19.911111-113.777778 79.644444-113.777778 150.755556s48.355556 130.844444 113.777778 150.755555z"  ></path><path d="M696.888889 480.711111h-113.777778c-17.066667 0-28.444444 11.377778-28.444444 28.444445s11.377778 28.444444 28.444444 28.444444h113.777778c17.066667 0 28.444444-11.377778 28.444444-28.444444s-11.377778-28.444444-28.444444-28.444445zM440.888889 480.711111h-113.777778c-17.066667 0-28.444444 11.377778-28.444444 28.444445s11.377778 28.444444 28.444444 28.444444h113.777778c17.066667 0 28.444444-11.377778 28.444444-28.444444s-11.377778-28.444444-28.444444-28.444445z"  ></path></symbol><symbol id="icon-kuaidi-" viewBox="0 0 1024 1024"><path d="M292.6799 823.7c-2.32 2.57-2.41 2.77-1.81 2.13s1.1-1.29 1.66-1.93zM750.5899 841.92l0.37-0.19c-1.62 0.59-2.51 0.94-2.91 1.11l1.35-0.46z"  ></path><path d="M1024.0099 741.39c-0.54-12.16-9.79-22.19-22.3-22.29l-63.15-0.51-100.62-0.81-23.06-0.19c-12-0.1-22.39 10.29-22.3 22.3 0.05 6.16 0 12.31-0.37 18.46-0.3 5.54-1.3 11.11-1.46 16.63 0.21-7.2 0-0.29-0.31 1.73-0.4 2.42-0.84 4.83-1.34 7.24-0.91 4.45-2 8.88-3.31 13.24q-1.6 5.4-3.67 10.66c-0.08 0.17-0.17 0.35-0.26 0.57q-1.26 2.72-2.65 5.37c-1.49 2.8-3.1 5.54-4.85 8.18-0.66 1-1.36 2-2.06 2.95l-0.68 0.84a80.58 80.58 0 0 1-5.6 5.94c-0.88 0.84-1.79 1.65-2.71 2.46-1.9 0.61-4.53 3.29-6.18 4.28-2 1.2-4.05 2.29-6.15 3.29l1.67-0.61c-0.68 0.25-1.36 0.52-2 0.8-1.3 0.61-3.57 1.36-2.51 0.91-1.64 0.56-3.29 1.08-5 1.54-1.84 0.49-3.69 0.93-5.55 1.3-0.61 0.12-1.21 0.22-1.81 0.32a88.6 88.6 0 0 1-14.75 0.27l-1.71-0.17a108.17 108.17 0 0 1-13.52-3.09c-1.51-0.47-3-1-4.5-1.55l0.88 0.46c-0.4-0.21-0.81-0.39-1.22-0.58l-0.24-0.09a16.3 16.3 0 0 1-2.16-1 76.59 76.59 0 0 1-8.78-5.18 7.57 7.57 0 0 1-1.27-0.9l-0.17-0.15a10.81 10.81 0 0 0-1.4-1l0.79 0.45c-0.9-0.79-1.8-1.57-2.67-2.39-2.64-2.51-4.77-5.49-7.34-8l0.92 0.91a15.4 15.4 0 0 1-1.14-1.42q-1.25-1.83-2.4-3.71a95.38 95.38 0 0 1-5-9.23c-0.24-0.49-0.46-1-0.68-1.48-0.4-1-0.81-2.06-1.18-3.1q-1.77-4.92-3.13-10t-2.36-10.18c-0.3-1.52-0.57-3-0.82-4.57l-0.21-1.34c-0.57-5.14-1-10.28-1.17-15.46a128.6 128.6 0 0 1 0.3-16.07c1.14-12-11.14-22.3-22.3-22.3H338.7299c-12.8 0-21.28 10.26-22.3 22.3-0.27 3.27-0.58 6.53-0.95 9.78-0.11 1-0.24 2-0.37 3v0.27c-0.92 5.67-1.87 11.31-3.13 16.91a174.93 174.93 0 0 1-7.76 25.74l0.49-1c-0.27 0.57-0.52 1.16-0.77 1.74l-0.11 0.27c-0.07 0.14-0.13 0.29-0.19 0.43-0.79 1.72-1.6 3.43-2.46 5.12a115.18 115.18 0 0 1-5.47 9.6c-0.88 1.39-1.79 2.75-2.74 4.1l-0.25 0.33 0.66-0.73-0.81 0.93c-0.55 0.7-1.26 1.5-1.66 1.93-1.25 1.47-2.49 2.95-3.86 4.34q-2.79 2.83-5.83 5.39c-0.7 0.5-1.39 1-2.11 1.47-1.9 1.27-3.87 2.46-5.89 3.54-1.71 0.92-6.14 2.59-5.63 2.43a62.73 62.73 0 0 1-6.26 1.87c-1 0.24-2 0.44-3.06 0.63l2.13-0.18c-0.7 0.06-1.4 0.16-2.09 0.23h-0.42c-0.38 0.07-0.76 0.15-1.15 0.21-1.81 0.33-4.61 0.33 0.12-0.14-2.33 0.11-4.63 0-7 0-3.24 0-6.46 0.38-9.72 0.29-1.3 0-2.6-0.11-3.89-0.21l0.79 0.23a7.89 7.89 0 0 0-1.3-0.27l-0.69-0.06a7.54 7.54 0 0 1-1.47-0.28 68.25 68.25 0 0 1-9.32-2.53l-1-0.39c-1.39-0.71-2.81-1.37-4.18-2.14-1.57-0.88-3.35-1.81-5-2.87l-0.52-0.48c-0.64-0.58-1.33-1.1-2-1.67q-2-1.69-3.78-3.52c-2.13-2.11-4.09-4.36-6-6.66-1.14-1.63-2.29-3.26-3.37-4.93a130.08 130.08 0 0 1-9-16.63c0-0.1-0.1-0.22-0.15-0.34 0.12 0.31 0.24 0.63 0.37 1-0.58-1.58-1.26-3.12-1.86-4.69q-1.6-4.23-3-8.53a220.54 220.54 0 0 1-8-34c-0.1-0.62-0.19-1.23-0.28-1.84-0.14-1.22-0.29-2.43-0.41-3.65s-0.27-2.7-0.35-4.06c-0.72-12-9.63-22.3-22.3-22.3H44.6199v-278l40.29-35 74.64-64.91 9.64-8.39h147.24v105.77c0 11.66 10.26 22.84 22.3 22.3s22.3-9.8 22.3-22.3V318 177.57h602.13c8.46 0 16.94 0.15 25.4 0h1.08c11.66 0 22.84-10.25 22.3-22.29s-9.8-22.3-22.3-22.3H365.2099c-8.46 0-16.94-0.15-25.39 0h-1.09a22.62 22.62 0 0 0-22.3 22.3V294.2H163.6599a27.77 27.77 0 0 0-18.52 6.56c-1.25 1-2.45 2.12-3.67 3.19l-56.78 49.37-65.74 57.16c-4.07 3.55-8.62 6.9-12.39 10.78C-0.5401 428.57 0.0099 436.5 0.0099 445.34v302.08a22.62 22.62 0 0 0 22.3 22.3h111.19c6.27 40.17 23.47 81.13 56.43 104.87 19.17 13.81 42.6 16.79 65.57 15.75 21.59-1 41.26-9.71 57.65-23.61 28.06-23.81 40-61 45.33-97H616.0099a203 203 0 0 0 4.53 30.87c7.22 32.51 26.22 64.35 57.24 79a109.27 109.27 0 0 0 30.75 9.69c1.45 0.21 3.89 0.54 5.53 0.75s3 0.44 4.53 0.6a80.76 80.76 0 0 0 14.75 0.22c24-1.82 46.58-10.8 64.16-27.62 27-25.86 36.7-64.08 39-100.87l41.45 0.33 100.63 0.82 23 0.18c11.78 0.09 22.95-10.33 22.43-22.31z m-810.4 95.75a17.18 17.18 0 0 1-2.56-2.08c-0.11-0.06 1.64 1.34 2.56 2.08z m55 5.51l3.2-1.13z m494-7.85l-1.31 1.08c-2.17 1.78-0.15 0.01 1.26-1.08z"  ></path><path d="M678.6399 824c1.5 1.68 3.12 3.1 0 0zM235.7299 845.7h0.51c-3.89-1.12-3.87-0.73-2.67-0.38h0.12c0.66 0.2 1.32 0.27 2.04 0.38zM258.2299 845.5l-1.41 0.14 1-0.07zM689.2399 834.67c0.18 0.13 0.37 0.24 0.54 0.37 0.94 0.51 1.14 0.26-2-1.59l0.61 0.54c0.25 0.24 0.55 0.48 0.85 0.68zM304.0999 803.37l0.08-0.21c-2 4.26-1.07 2.48-0.39 1 0-0.09 0.07-0.18 0.11-0.27s0.11-0.37 0.2-0.52zM701.0099 841.36l0.34 0.12c-2.63-1.33-3.11-1.5-2.74-1.26l0.84 0.43c0.46 0.25 0.98 0.48 1.56 0.71zM989.6399 422.27H686.7899c-11.67 0-22.84 10.26-22.3 22.3s9.8 22.3 22.3 22.3h302.85c11.66 0 22.84-10.26 22.3-22.3s-9.8-22.3-22.3-22.3z"  ></path></symbol></svg>',
+		l = (c = document.getElementsByTagName("script"))[c.length - 1].getAttribute("data-injectcss");
+	if (l && !i.__iconfont__svg__cssinject__) {
+		i.__iconfont__svg__cssinject__ = !0;
+		try {
+			document.write(
+				"<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>"
+			)
+		} catch (c) {
+			console && console.log(c)
+		}
+	}! function(c) {
+		if (document.addEventListener)
+			if (~["complete", "loaded", "interactive"].indexOf(document.readyState)) setTimeout(c, 0);
+			else {
+				var l = function() {
+					document.removeEventListener("DOMContentLoaded", l, !1), c()
+				};
+				document.addEventListener("DOMContentLoaded", l, !1)
+			}
+		else document.attachEvent && (t = c, a = i.document, h = !1, o = function() {
+			h || (h = !0, t())
+		}, (e = function() {
+			try {
+				a.documentElement.doScroll("left")
+			} catch (c) {
+				return void setTimeout(e, 50)
+			}
+			o()
+		})(), a.onreadystatechange = function() {
+			"complete" == a.readyState && (a.onreadystatechange = null, o())
+		});
+		var t, a, h, o, e
+	}(function() {
+		var c, l;
+		(c = document.createElement("div")).innerHTML = t, t = null, (l = c.getElementsByTagName("svg")[0]) && (l.setAttribute(
+				"aria-hidden", "true"), l.style.position = "absolute", l.style.width = 0, l.style.height = 0, l.style.overflow =
+			"hidden",
+			function(c, l) {
+				l.firstChild ? function(c, l) {
+					l.parentNode.insertBefore(c, l)
+				}(c, l.firstChild) : l.appendChild(c)
+			}(l, document.body))
+	})
+}(window);
diff --git a/static/iconfont/iconfont.svg b/static/iconfont/iconfont.svg
new file mode 100644
index 0000000..2f889f5
--- /dev/null
+++ b/static/iconfont/iconfont.svg
@@ -0,0 +1,80 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<!--
+2013-9-30: Created.
+-->
+<svg>
+<metadata>
+Created by iconfont
+</metadata>
+<defs>
+
+<font id="iconfont" horiz-adv-x="1024" >
+  <font-face
+    font-family="iconfont"
+    font-weight="500"
+    font-stretch="normal"
+    units-per-em="1024"
+    ascent="896"
+    descent="-128"
+  />
+    <missing-glyph />
+    
+    <glyph glyph-name="31daishouhuo" unicode="&#58880;" d="M841.530179 758.220007 366.132818 758.220007c-49.562812 0-89.855494-40.144302-89.855494-89.499383l0-131.069151-172.015725-99.067296-6.299473-4.189416 0.713244-1.218758 0.029676-0.118704c-3.922333-4.694929-6.062066-10.54824-6.062066-16.58063l0-275.063683c0-16.075117 12.063757-29.1499 26.891464-29.1499 14.857383 0 26.921139 13.103436 26.921139 29.238928L146.455583 401.026792l168.746262 97.373725c11.707646 4.130064 19.552312 15.124466 19.552312 27.336602L334.754157 664.412504c0 19.552312 16.015765 35.479049 35.68678 35.479049l466.750423 0c19.671015 0 35.68678-15.926738 35.68678-35.479049l0-512.034792c0-16.104793 13.104459-29.179576 29.238928-29.179576 16.134469 0 29.238928 13.104459 29.238928 29.238928L931.355997 668.721647C931.355997 718.076728 891.063315 758.220007 841.530179 758.220007zM741.957369 239.648334c-55.595202 0-102.900601-39.49041-112.973004-94.104261l-204.284663 0.118704c-10.132778 54.555523-57.437154 93.985558-112.973004 93.985558-63.647599 0-115.439172-51.554166-115.439172-114.934682s51.791573-114.934682 115.439172-114.934682c51.67287 0 97.194646 34.558074 111.071701 84.209914l208.117968-0.089028c13.906731-49.592488 59.398832-84.120886 111.042026-84.120886 63.647599 0 115.409496 51.554166 115.409496 114.934682S805.604968 239.648334 741.957369 239.648334zM741.957369 70.485587c-30.070876 0-54.525847 24.336268-54.525847 54.228065 0 29.892821 24.454972 54.228065 54.525847 54.228065s54.525847-24.336268 54.525847-54.228065C796.483216 94.821855 772.028245 70.485587 741.957369 70.485587zM311.726697 70.485587c-30.070876 0-54.525847 24.336268-54.525847 54.228065 0 29.892821 24.454972 54.228065 54.525847 54.228065 30.0412 0 54.496172-24.336268 54.496172-54.228065C366.221846 94.821855 341.766874 70.485587 311.726697 70.485587zM224.930889 322.848245c0-15.540951 12.687974-28.199249 28.317952-28.199249l109.526509 0.029676c15.421224 0 27.575032 4.605901 36.162618 13.727653 13.638625 14.470573 12.539594 35.003212 12.509918 35.121915l0 85.814458c0 15.540951-12.687974 28.199249-28.317952 28.199249s-28.317952-12.658298-28.317952-28.199249l0.029676-78.2072-101.652168 0C237.589187 351.047494 224.930889 338.35952 224.930889 322.848245z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="wodeqianbao" unicode="&#58917;" d="M510.027066-206.883469c-310.781162 0-449.376731 106.263186-449.376731 344.549244 0 188.549284 149.627832 393.97084 333.539492 457.902918l233.69346-0.329505c182.468798-63.797002 331.50516-269.12953 331.513346-457.573413C959.39561-100.61926 820.807205-206.883469 510.027066-206.883469zM403.554102 530.933603c-34.134425-13.268188-67.544349-32.459273-99.323123-57.051367-35.151591-27.239388-66.721611-59.758012-93.818759-96.66048-27.224038-37.081547-48.516993-76.631308-63.288418-117.526717-14.981203-41.434691-22.572088-82.479503-22.572088-122.029264 0-50.379411 7.067976-93.51893 21.008476-128.222313 13.223163-32.967856 32.766264-59.32413 59.728336-80.595596 28.959565-22.825868 67.709101-40.431851 115.179252-52.309366 51.785433-12.938684 115.559922-19.505239 189.559287-19.505239 73.991178 0 137.765667 6.566556 189.5511 19.505239 47.462988 11.876492 86.212524 29.468149 115.179252 52.309366 26.977421 21.300119 46.520523 47.657416 59.735499 80.595596 13.941524 34.733059 21.001313 77.872578 21.001313 128.222313 0 39.549761-7.599072 80.609922-22.579251 122.029264-14.771425 40.926108-36.06438 80.46052-63.281255 117.526717-27.088962 36.916794-58.658981 69.436442-93.818759 96.66048-31.794124 24.591071-65.187675 43.783179-99.255585 57.020668l-211.94411 0.418532L403.554102 530.933603zM500.326123-32.409762c-23.320125 0-42.294268 18.98233-42.294268 42.302455 0 2.692319 0.284479 5.445012 0.845251 8.196683l1.480724 7.389294-2.169409 0 0 39.041178-83.751473 0.045025c-18.039865 0-32.714076 14.59951-32.714076 32.549324 0 17.97949 14.629185 32.608675 32.601512 32.608675l5.653767 0 0.01535 0.104377L458.189444 129.827249 458.189444 180.790968l-81.395822 0-2.273786 0.059352c-18.107403 0-32.79594 14.613836-32.79594 32.578999s14.629185 32.594349 32.601512 32.594349l5.467525 0 0.01535 0.074701 70.198805 0 1.196245 4.6366c0.441045 1.749854 1.166569 3.261277 2.213411 4.622274l3.365654 4.247744-90.871637 90.856287c-8.331759 8.316409-4.823865 25.399483 7.816013 38.053688 7.66661 7.673773 17.404392 12.251022 26.050306 12.251022 4.966105 0 9.109472-1.541099 11.989055-4.427846l89.562828-89.585341 83.115999 88.6132c3.829212 4.158716 9.647731 6.446829 16.394389 6.446829 9.610892 0 19.707854-4.39817 27.007097-11.756765 13.9712-14.120602 19.310811-24.276916 7.52437-37.560454l-92.090395-94.132914-0.994654-4.771677-1.02433-5.564739 6.087649-1.765203 77.266781-0.164752 1.75804-0.090051c17.994839-0.135076 32.564673-14.748912 32.564673-32.594349 0-17.830087-14.531971-32.429597-32.391734-32.549324l-4.009314-0.074701-80.415494 0 0-50.962695 82.435501 0 1.772366-0.119727c18.032702-0.135076 32.608675-14.748912 32.608675-32.578999 0-17.845437-14.531971-32.444946-32.399921-32.564673l-84.416622-0.045025 0-40.702004-0.441045-1.779529 0.029676-3.290953c0.590448-3.261277 0.912789-6.028297 0.912789-8.855692C542.621415-13.427432 523.646248-32.409762 500.326123-32.409762zM397.069411 634.175989 323.130422 745.24155l0.276293 0.972141-0.171915 3.948939c-0.61296 2.857071-1.001817 4.577249-1.001817 6.238075 0 12.011568 5.92392 22.556739 15.099906 26.880207l2.737344 2.423189c8.840342 2.093684 97.752348 22.138206 170.023348 22.482037l2.109034 0c73.019037 0 154.436348-19.102057 167.839613-22.37766l0.650823-1.541099 2.131547-1.017166c9.102309-4.322445 14.988366-14.868639 14.988366-26.850531 0-1.675152-0.418532-3.440355-0.852414-5.29561l-0.441045-1.88493 0.957815-4.457522-74.395384-110.586654L397.069411 634.174965zM510.415922 744.283736c-26.14752-0.135076-57.596789-3.096525-93.504604-8.810666l-9.491165-1.5104 23.896246-35.885302 157.52571 0 24.232914 36.363186-9.468652 1.541099c-34.149774 5.504364-64.896032 8.302083-91.39557 8.302083L510.415922 744.283736z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="wodeyouhuijuan" unicode="&#59374;" d="M1009.770667 502.464C1018.282667 505.472 1024 513.536 1024 522.602667l0 131.242667c0 52.352-42.56 94.976-94.912 94.976L94.976 748.821333c-52.352 0-94.954667-42.624-94.954667-94.976l0-131.242667c0-9.045333 5.696-17.130667 14.250667-20.138667C64.426667 484.736 98.133333 437.141333 98.133333 384c0-53.12-33.706667-100.757333-83.882667-118.506667C5.696 262.549333 0 254.421333 0 245.376l0-131.242667c0-52.330667 42.602667-94.954667 94.954667-94.954667L929.066667 19.178667c52.330667 0 94.933333 42.624 94.933333 94.954667l0 131.242667c0 9.045333-5.674667 17.130667-14.229333 20.117333-50.218667 17.749333-83.946667 65.365333-83.946667 118.506667S959.552 484.714667 1009.770667 502.464zM883.114667 384c0-66.048 38.869333-125.717333 98.154667-152.981333l0-116.885333c0-28.778667-23.402667-52.202667-52.202667-52.202667L94.954667 61.930667c-28.8 0-52.224 23.424-52.224 52.202667l0 116.885333c59.264 27.264 98.133333 86.933333 98.133333 152.981333 0 66.048-38.869333 125.738667-98.133333 152.981333l0 116.864c0 28.8 23.402667 52.224 52.224 52.224L929.066667 706.069333c28.778667 0 52.202667-23.402667 52.202667-52.224l0-116.864C921.962667 509.717333 883.114667 450.048 883.114667 384zM683.690667 503.466667l-144.682667 0 86.293333 86.208c8.384 8.362667 8.384 21.888 0 30.229333-8.341333 8.341333-21.824 8.341333-30.208 0L512 536.896l-83.008 82.986667c-8.384 8.362667-21.866667 8.362667-30.208 0-8.362667-8.362667-8.362667-21.866667 0-30.208l86.229333-86.208-144.768 0c-11.776 0-21.354667-9.557333-21.354667-21.354667 0-11.797333 9.578667-21.376 21.354667-21.376l150.4 0 0-79.893333L364.8 380.842667c-11.818667 0-21.376-9.557333-21.376-21.376 0-11.818667 9.557333-21.333333 21.376-21.333333l125.845333 0 0-174.869333c0-11.84 9.557333-21.376 21.354667-21.376 11.84 0 21.376 9.578667 21.376 21.376L533.376 338.133333l125.76 0c11.861333 0 21.418667 9.536 21.418667 21.333333s-9.536 21.376-21.376 21.376l-125.781333 0 0 79.893333 150.357333 0c11.776 0 21.312 9.6 21.312 21.376C705.045333 493.888 695.509333 503.466667 683.690667 503.466667z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="daifukuan01" unicode="&#58918;" d="M391.809105 800.640142l217.4628 0c5.718235 0 10.354835 5.102205 10.354835 11.395538l0 8.546653c0 6.293333-4.6366 11.395538-10.354835 11.395538l-217.4628 0c-5.719258 0-10.355859-5.102205-10.355859-11.395538l0-8.546653C381.453247 805.742347 386.089847 800.640142 391.809105 800.640142zM305.64877 506.253368l389.782448 0c5.718235 0 10.354835 5.102205 10.354835 11.395538l0 8.546653c0 6.293333-4.6366 11.395538-10.354835 11.395538L305.64877 537.591097c-5.719258 0-10.355859-5.102205-10.355859-11.395538l0-8.546653C295.292911 511.355573 299.929512 506.253368 305.64877 506.253368zM860.412736 300.245458 860.412736 793.414577c0 20.977777-15.429411 37.986149-34.463929 37.986149L704.581622 831.400726c-10.743692-1.198292-15.273868-14.719236-15.273868-14.719236l-38.392402-69.362764c0 0-2.835581-4.306072-4.256954-5.184069-1.219781-0.7552-4.738931-0.949628-4.738931-0.949628L357.80771 741.185029c0 0-2.674922 0.339738-3.66139 0.949628-0.724501 0.448208-2.591011 2.174526-2.591011 2.174526l-40.058344 72.372308c0 0-4.530177 13.520945-15.272845 14.719236L175.201789 831.400726c-19.033495 0-34.463929-17.007349-34.463929-37.986149l0-754.434541c0-20.9788 15.430434-37.985126 34.463929-37.985126l382.28059 0c-0.002047 0.002047-0.004093 0.004093-0.00614 0.00614 38.684044-39.760562 92.759637-64.470337 152.61691-64.470337 117.593232 0 212.923414 95.329159 212.923414 212.922391C923.016563 208.369957 899.083477 261.695466 860.412736 300.245458zM854.310761 306.081373c-0.218988 0.200568-0.432859 0.406253-0.652869 0.607844C853.878926 306.488649 854.092797 306.282964 854.310761 306.081373zM850.96455 309.097056c-0.287549 0.254803-0.573051 0.512676-0.862647 0.766456C850.391499 309.609733 850.677001 309.351859 850.96455 309.097056zM175.201789 32.332638c-3.325745 0-6.031367 2.982938-6.031367 6.647397L169.170422 793.414577c0 3.665483 2.705622 6.647397 6.031367 6.647397l112.188128 0 39.893592-72.073502 2.424212-4.380774 3.566222-3.300162c3.911076-3.618411 6.048763-4.940522 6.952342-5.499248 1.477654-0.914836 5.973038-3.696182 14.328333-4.755304l1.620917-0.205685 1.63115 0 284.11278 0 0.711198 0 0.710175 0.039909c10.194176 0.562818 15.497972 3.846608 17.225313 4.916986 3.194762 1.974981 7.598049 5.362124 13.358239 14.106276l0.668219 1.017166 0.594541 1.072425 38.22458 69.062935 112.534006 0c3.324722 0 6.031367-2.981914 6.031367-6.647397l0-469.37111c-34.530444 24.153096-76.550467 38.33305-121.886001 38.33305-1.439792 0-2.874467-0.025583-4.307096-0.055259l0 7.184633c0 6.293333-4.6366 11.395538-10.354835 11.395538L305.64877 380.902452c-5.719258 0-10.355859-5.102205-10.355859-11.395538l0-8.546653c0-6.29538 4.6366-11.396561 10.355859-11.396561l331.537905 0c1.38658 0.505513 2.781346 0.995677 4.181229 1.472538-60.281945-20.546965-108.391662-67.375503-130.688481-126.8255L305.64877 224.210737c-5.719258 0-10.355859-5.102205-10.355859-11.395538l0-8.547677c0-6.294356 4.6366-11.395538 10.355859-11.395538l195.95802 0c0.282433 1.363044 0.578168 2.720971 0.887206 4.074805-3.479241-15.273868-5.323239-31.168883-5.323239-47.495734 0-43.278689 12.924357-83.533508 35.107589-117.138884-0.004093 0.00614-0.008186 0.01228-0.01228 0.01842L175.201789 32.330592zM847.305207 312.256002c-0.26606 0.224104-0.530073 0.450255-0.797156 0.673335C846.775134 312.706257 847.039147 312.479083 847.305207 312.256002zM843.547627 315.352527c-0.221034 0.178055-0.441045 0.357134-0.661056 0.533143C843.106582 315.709661 843.326593 315.530582 843.547627 315.352527zM839.734788 318.352861c-0.163729 0.12689-0.328481 0.252757-0.493234 0.379647C839.406307 318.605617 839.571059 318.479751 839.734788 318.352861zM835.868737 321.25598c-0.088004 0.064468-0.176009 0.128937-0.264013 0.192382C835.692728 321.384917 835.780733 321.321472 835.868737 321.25598zM701.857581 362.202555c-0.303922-0.011256-0.608867-0.021489-0.912789-0.033769C701.248713 362.181065 701.553659 362.191298 701.857581 362.202555zM697.232237 361.978451c-0.343831-0.021489-0.686638-0.042979-1.030469-0.064468C696.545598 361.935472 696.888406 361.959008 697.232237 361.978451zM692.459536 361.644853c-0.172939-0.01535-0.344854-0.031722-0.517793-0.046049C692.115706 361.61313 692.287621 361.630527 692.459536 361.644853zM680.063205 360.258273c-0.394996-0.055259-0.789992-0.106424-1.183965-0.164752C679.273213 360.150826 679.668209 360.203014 680.063205 360.258273zM675.686525 359.59517c-0.532119-0.086981-1.063215-0.173962-1.594311-0.265036C674.623309 359.421208 675.154405 359.508189 675.686525 359.59517zM671.063227 358.793922c-0.568958-0.105401-1.133823-0.215918-1.701758-0.325411C669.929404 358.578004 670.495292 358.689544 671.063227 358.793922zM666.400021 357.880109c-0.522909-0.10847-1.041726-0.228197-1.561565-0.339738C665.358295 357.652935 665.877111 357.771639 666.400021 357.880109zM659.509077 356.314451c-0.653893-0.158612-1.308809-0.313132-1.960655-0.478907C658.200268 356.002342 658.856207 356.155838 659.509077 356.314451zM655.051555 355.178581c-0.727571-0.193405-1.454118-0.387833-2.177596-0.589424C653.597437 354.790748 654.323984 354.984153 655.051555 355.178581zM650.470213 353.903541c-0.7552-0.220011-1.509377-0.445138-2.260483-0.673335C648.96186 353.458403 649.715013 353.683531 650.470213 353.903541zM645.903198 352.520031c-0.799202-0.251733-1.595334-0.5137-2.390443-0.775666C644.308887 352.006332 645.103995 352.268298 645.903198 352.520031zM509.358335 220.58414c-0.049119-0.1361-0.097214-0.273223-0.145309-0.409322C509.261121 220.310917 509.309216 220.44804 509.358335 220.58414zM505.630431 209.031013c-0.027629-0.093121-0.057305-0.187265-0.083911-0.280386C505.574149 208.843748 505.602801 208.937892 505.630431 209.031013zM504.702292 205.728804c-0.140193-0.51063-0.278339-1.02126-0.414439-1.532913C504.423953 204.707544 504.562099 205.218174 504.702292 205.728804zM503.572562 201.436034c-0.156566-0.627287-0.309038-1.257643-0.460488-1.886977C503.26557 200.178391 503.414973 200.808748 503.572562 201.436034zM554.005184 4.654252c0.010233-0.011256 0.021489-0.021489 0.030699-0.032746C554.025651 4.63174 554.014394 4.642996 554.005184 4.654252zM535.081183 28.173922c0.00921-0.01228 0.01842-0.024559 0.026606-0.037862C535.098579 28.149363 535.089369 28.161642 535.081183 28.173922zM538.005792 24.066371c0.00921-0.01228 0.01842-0.023536 0.025583-0.035816C538.024212 24.041812 538.015002 24.054091 538.005792 24.066371zM541.023522 20.032498c0.00921-0.013303 0.019443-0.024559 0.028653-0.037862C541.042965 20.007939 541.032732 20.019195 541.023522 20.032498zM544.13028 16.076396c0.01228-0.01535 0.024559-0.029676 0.036839-0.046049C544.155862 16.04672 544.142559 16.061047 544.13028 16.076396zM547.332205 12.191926c0.01228-0.01535 0.024559-0.028653 0.036839-0.044002C547.357787 12.163273 547.344484 12.176576 547.332205 12.191926zM550.624181 8.384204c0.01228-0.014326 0.023536-0.026606 0.035816-0.039909C550.647717 8.357598 550.63646 8.370901 550.624181 8.384204zM838.944795 20.601456c-34.417881-34.416857-80.179111-53.371558-128.851647-53.371558-48.673559 0-94.433766 18.954701-128.851647 53.371558-34.417881 34.417881-53.372581 80.179111-53.372581 128.851647 0 48.673559 18.954701 94.433766 53.372581 128.851647s80.178087 53.372581 128.851647 53.372581c48.672536 0 94.433766-18.954701 128.851647-53.372581s53.372581-80.179111 53.372581-128.851647S873.362676 55.02036 838.944795 20.601456zM801.834596 139.991614c8.477069 0 15.349593 6.872524 15.349593 15.349593s-6.872524 15.349593-15.349593 15.349593l-59.743686 0 65.669652 85.421508c5.167696 6.721075 3.906983 16.35755-2.813069 21.524223-6.721075 5.16872-16.358573 3.906983-21.524223-2.813069l-72.494081-94.297666-72.496128 94.297666c-5.166673 6.720052-14.802124 7.981788-21.524223 2.813069-6.720052-5.166673-7.980765-14.803147-2.813069-21.524223l65.671699-85.421508-59.744709 0c-8.477069 0-15.349593-6.872524-15.349593-15.349593s6.872524-15.349593 15.349593-15.349593l75.556836 0 0-33.440623-71.920006 0c-8.477069 0-15.349593-6.872524-15.349593-15.349593s6.872524-15.349593 15.349593-15.349593l71.920006 0 0-57.341986c0-8.477069 6.872524-15.349593 15.349593-15.349593s15.349593 6.872524 15.349593 15.349593l0 57.341986 71.918983 0c8.477069 0 15.349593 6.872524 15.349593 15.349593s-6.872524 15.349593-15.349593 15.349593l-71.918983 0 0 33.440623L801.834596 139.991614z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="yiwancheng" unicode="&#58974;" d="M889.679805 348.948693c0 41.48074-27.488051 76.604702-65.056692 87.821161L824.623114 575.747115c0 47.821145-38.557154 86.729294-85.951581 86.729294l-39.310308 0-87.373976 94.53405c-3.321652 3.619434-8.553817 4.706185-13.033851 2.76702L374.667192 662.476409l-85.661985 0c-47.393403 0-85.951581-38.908148-85.951581-86.729294l0-453.629591c0-47.806819 38.557154-86.706781 85.951581-86.706781l449.666326 0c47.393403 0 85.951581 38.899962 85.951581 86.706781L824.623114 261.118322C862.190731 272.334781 889.679805 307.46079 889.679805 348.948693zM600.618317 735.0851l67.11149-72.608691L433.252495 662.476409 600.618317 735.0851zM801.478997 122.118548c0-34.932604-28.181853-63.35698-62.808488-63.35698L289.005206 58.761568c-34.626635 0-62.808488 28.424376-62.808488 63.35698L226.196719 575.747115c0 34.94693 28.181853 63.379493 62.808488 63.379493l449.666326 0c34.626635 0 62.808488-28.433586 62.808488-63.379493l0-135.267776c-0.857531 0.024559-1.716084 0.038886-2.578732 0.038886L578.36243 440.518225c-6.390547 0-11.573593-5.230118-11.573593-11.675924l0-159.799496c0-6.445806 5.184069-11.675924 11.573593-11.675924l220.537835 0c0.862647 0 1.722224 0.01535 2.578732 0.038886L801.478997 122.118548zM798.900266 280.717705 589.936023 280.717705 589.936023 417.17047l208.964242 0c37.296441 0 67.636446-30.607088 67.636446-68.221778C866.536712 311.324794 836.196707 280.717705 798.900266 280.717705z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="wodedingdan" unicode="&#58950;" d="M383 555l260 0c16.6 0 30 13.4 30 30 0 16.6-13.4 30-30 30L383 615c-16.6 0-30-13.4-30-30C353 568.4 366.4 555 383 555zM383 431l260 0c16.6 0 30 13.4 30 30 0 16.6-13.4 30-30 30L383 491c-16.6 0-30-13.4-30-30C353 444.4 366.4 431 383 431zM383 298l260 0c16.6 0 30 13.4 30 30 0 16.6-13.4 30-30 30L383 358c-16.6 0-30-13.4-30-30C353 311.4 366.4 298 383 298zM807 205.3c0.4 2.9 0.4 5.9 0 8.9L807 693l-0.5 0c-4.5 39.9-38.3 71-79.5 71L316 764c-44.2 0-80-35.8-80-80l0-600c0-41.1 31.1-75 71-79.5l0-0.5 281 0 0 0.4c4 0.7 7.8 2.2 11.1 4.3 3.5 1.3 6.8 3.3 9.7 6l188.8 172.9c3.8 3.5 6.6 7.8 8.1 12.4l1.3 0L807 205.3zM296 84 296 684c0 11 9 20 20 20l411 0c11 0 20-9 20-20l0-437L633 247c-44.2 0-80-35.8-80-80l0-103L316 64C305 64 296 73 296 84zM708.1 187 613 99.9 613 167c0 11 9 20 20 20L708.1 187z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="jifen" unicode="&#58954;" d="M801.23724 896C518.930425 896 289.23724 666.306816 289.23724 384s229.693184-512 512-512c282.311824 0 512 229.693184 512 512S1083.549065 896 801.23724 896zM801.23724-64.000939c-247.04241 0-447.995931 200.963537-447.995931 448.000939 0 247.04241 200.95352 448.000939 447.995931 448.000939S1249.23818 631.04241 1249.23818 384C1249.23818 136.962598 1048.279651-64.000939 801.23724-64.000939zM801.23724 486.167108c-22.665682 0-43.835093 2.909902-63.543293 8.725949-19.689418 5.796014-35.216825 14.408021-46.594742 25.773417l0-34.499367c0-9.338231 4.933311-17.999071 14.782402-25.975007 9.841579-7.977188 23.235392-14.292827 40.150136-18.975716 16.914744-4.659099 35.315742-6.996787 55.205498-6.996787 19.879739 0 38.290753 2.337688 55.196733 6.996787 16.914744 4.659099 30.308557 10.998528 40.1589 18.975716 9.840327 7.975936 14.773637 16.638028 14.773637 25.975007l0 34.499367c-11.369152-11.364144-26.920349-19.953613-46.61102-25.773417C845.064821 489.074505 823.894158 486.167108 801.23724 486.167108zM911.366511 364.838972c-11.369152-11.365396-26.920349-19.956117-46.61102-25.772165-19.69067-5.8173-40.860082-8.728454-63.516999-8.728454-22.665682 0-43.835093 2.909902-63.543293 8.728454-19.689418 5.816048-35.216825 14.382979-46.594742 25.748375l0-34.49561c0-9.340735 4.933311-18.000323 14.782402-25.977511 9.841579-7.974684 23.235392-14.292827 40.150136-18.975716 16.914744-4.659099 35.315742-6.976753 55.205498-6.976753 19.879739 0 38.290753 2.341444 55.196733 7.000543 16.914744 4.680384 30.308557 10.998528 40.1589 18.973212 9.840327 7.97844 14.773637 16.635524 14.773637 25.975007L911.367763 364.838972zM705.86533 538.095835c9.840327-7.999726 23.235392-14.320374 40.150136-18.979472 16.931021-4.659099 35.332019-6.976753 55.221775-6.976753 19.879739 0 38.290753 2.342696 55.196733 7.000543 16.914744 4.659099 30.308557 10.998528 40.1589 18.975716 9.840327 7.97844 14.773637 16.634272 14.773637 25.975007l0 21.514994c0 9.339483-4.932058 17.996566-14.773637 25.973755-9.850344 7.975936-23.244156 14.296584-40.1589 18.975716-16.905979 4.659099-35.316994 7.000543-55.196733 7.000543-19.889756 0-38.290753-2.341444-55.221775-7.000543-16.914744-4.679132-30.309809-10.998528-40.150136-18.975716-9.849091-7.977188-14.774889-16.634272-14.774889-25.97125l0-21.540036C691.09044 554.730107 696.016238 546.071771 705.86533 538.095835zM864.771769 416.970541c-19.706948-5.8173-40.876359-8.729706-63.534528-8.729706-22.665682 0-43.835093 2.911154-63.542041 8.729706-19.691922 5.818552-35.218077 14.404265-46.595994 25.769661l0-34.499367c0-9.339483 4.933311-17.996566 14.782402-25.973755 9.841579-7.974684 23.235392-14.294079 40.150136-18.974464 16.931021-4.659099 35.332019-7.000543 55.221775-7.000543 19.879739 0 38.281989 2.341444 55.196733 7.000543 16.913492 4.659099 30.308557 10.99978 40.1589 18.974464 9.840327 7.977188 14.774889 16.635524 14.774889 25.973755l0 34.499367C900.013636 431.374806 884.462439 422.786589 864.771769 416.970541zM801.23724 253.274784c-22.665682 0-43.835093 2.909902-63.543293 8.725949-19.689418 5.796014-35.216825 14.408021-46.594742 25.773417l0-34.499367c0-9.338231 4.933311-17.999071 14.782402-25.975007 9.841579-7.977188 23.235392-14.292827 40.150136-18.975716 16.914744-4.659099 35.315742-6.996787 55.205498-6.996787 19.879739 0 38.290753 2.337688 55.196733 6.996787 16.914744 4.659099 30.308557 10.998528 40.1589 18.975716 9.840327 7.975936 14.773637 16.638028 14.773637 25.975007l0 34.499367c-11.369152-11.364144-26.920349-19.953613-46.61102-25.773417C845.064821 256.182182 823.894158 253.274784 801.23724 253.274784zM801.23724 175.348512c-22.665682 0-43.835093 2.911154-63.542041 8.729706-19.691922 5.818552-35.218077 14.404265-46.595994 25.769661l0-34.499367c0-9.339483 4.933311-17.996566 14.782402-25.973755 9.841579-7.974684 23.235392-14.294079 40.150136-18.974464 16.931021-4.659099 35.332019-7.000543 55.221775-7.000543 19.879739 0 38.281989 2.341444 55.196733 7.000543 16.913492 4.659099 30.308557 10.99978 40.1589 18.974464 9.840327 7.977188 14.774889 16.635524 14.774889 25.973755l0 34.499367c-11.370404-11.365396-26.921601-19.953613-46.612272-25.769661C845.064821 178.259666 823.894158 175.348512 801.23724 175.348512zM801.23724 97.447282c-22.665682 0-43.835093 2.909902-63.543293 8.728454-19.689418 5.816048-35.216825 14.382979-46.594742 25.748375l0-34.49561c0-9.340735 4.933311-18.000323 14.782402-25.977511 9.841579-7.974684 23.235392-14.292827 40.150136-18.975716 16.914744-4.659099 35.315742-6.976753 55.205498-6.976753 19.879739 0 38.290753 2.341444 55.196733 7.000543 16.914744 4.680384 30.308557 10.998528 40.1589 18.973212 9.840327 7.97844 14.773637 16.635524 14.773637 25.975007l0 34.499367c-11.369152-11.365396-26.920349-19.956117-46.61102-25.772165C845.064821 100.357184 823.894158 97.447282 801.23724 97.447282zM465.847252 399.703954c-8.431704-6.829004-12.648808-14.240239-12.648808-22.234956l0-18.441065c0-7.993466 4.217104-15.407205 12.648808-22.234956 8.425443-6.849038 19.89226-12.259402 34.374156-16.248622 14.494417-3.987968 30.248456-5.972561 47.277142-5.972561 17.019921 0 32.781473 2.005879 47.255856 5.992595 14.480644 3.98922 25.94746 9.415862 34.380416 16.244866 8.425443 6.831508 12.647556 14.241491 12.647556 22.238713l0 18.419779c0 7.99597-4.223365 15.407205-12.647556 22.236208-8.432956 6.829004-19.899773 12.239368-34.380416 16.244866-14.473131 3.987968-30.235935 5.992595-47.255856 5.992595-17.028686 0-32.781473-2.004627-47.277142-5.992595C485.739512 411.943322 474.272696 406.531706 465.847252 399.703954M453.205957 255.155452 453.205957 225.620699c0-7.99597 4.224617-15.407205 12.65632-22.237461 8.425443-6.827752 19.89226-12.238116 34.374156-16.244866 14.494417-3.98922 30.248456-5.993847 47.277142-5.993847 17.019921 0 32.77396 2.004627 47.255856 5.993847 14.480644 3.987968 25.94746 9.417114 34.380416 16.244866 8.425443 6.829004 12.648808 14.242743 12.648808 22.237461l0 29.536005c-9.73515-9.730141-23.047575-17.082527-39.905974-22.062165-16.87092-4.980891-34.995202-7.47384-54.392879-7.47384-19.403937 0-37.528219 2.49295-54.400391 7.47384C476.239759 238.074178 462.946115 245.425311 453.205957 255.155452M453.205957 188.443071l0-29.532249c0-7.997222 4.224617-15.410961 12.65632-22.239965 8.425443-6.827752 19.89226-12.236864 34.374156-16.244866 14.480644-3.987968 30.234682-5.972561 47.262116-5.972561 17.019921 0 32.781473 2.004627 47.255856 5.992595 14.480644 4.00675 25.94746 9.415862 34.380416 16.243614 8.425443 6.830256 12.647556 14.242743 12.647556 22.238713l0 29.536005c-9.733897-9.730141-23.046323-17.085031-39.904722-22.063417-16.857147-4.980891-34.981429-7.472588-54.379105-7.472588-19.403937 0-37.528219 2.491697-54.401643 7.472588C476.239759 171.378073 462.946115 178.712929 453.205957 188.443071M453.205957 321.870338l0-29.536005c0-7.994718 4.224617-15.409709 12.65632-22.238713 8.425443-6.829004 19.89226-12.236864 34.374156-16.244866 14.480644-3.987968 30.234682-5.990091 47.262116-5.990091 17.019921 0 32.781473 2.000871 47.255856 5.990091 14.480644 3.987968 25.94746 9.415862 34.380416 16.244866 8.425443 6.829004 12.647556 14.243995 12.647556 22.238713L641.782378 321.870338c-9.733897-9.730141-23.046323-17.082527-39.904722-22.064669-16.857147-4.980891-34.981429-7.470084-54.379105-7.470084-19.403937 0-37.528219 2.491697-54.401643 7.470084C476.239759 304.767778 462.946115 312.140197 453.205957 321.870338M973.325886 405.062982c-8.431704-6.829004-12.648808-14.241491-12.648808-22.234956l0-18.441065c0-7.993466 4.217104-15.407205 12.648808-22.234956 8.425443-6.849038 19.89226-12.259402 34.374156-16.248622 14.494417-3.987968 30.248456-5.972561 47.277142-5.972561 17.019921 0 32.781473 2.005879 47.255856 5.992595 14.480644 3.98922 25.94746 9.415862 34.380416 16.244866 8.425443 6.831508 12.647556 14.241491 12.647556 22.238713l0 18.419779c0 7.99597-4.222112 15.407205-12.647556 22.236208-8.432956 6.829004-19.899773 12.239368-34.380416 16.244866-14.474383 3.987968-30.235935 5.992595-47.255856 5.992595-17.028686 0-32.781473-2.004627-47.277142-5.992595C993.218146 417.30235 981.751329 411.891986 973.325886 405.062982M960.684591 260.515732l0-29.536005c0-7.99597 4.223365-15.407205 12.65632-22.237461 8.425443-6.8265 19.89226-12.238116 34.374156-16.244866 14.494417-3.98922 30.248456-5.993847 47.277142-5.993847 17.019921 0 32.77396 2.004627 47.255856 5.993847 14.480644 3.987968 25.94746 9.417114 34.380416 16.244866 8.425443 6.829004 12.648808 14.242743 12.648808 22.237461l0 29.536005c-9.73515-9.730141-23.047575-17.082527-39.905974-22.062165-16.87092-4.980891-34.995202-7.47384-54.392879-7.47384-19.403937 0-37.529471 2.49295-54.400391 7.47384C983.718393 243.434457 970.424749 250.785591 960.684591 260.515732M960.684591 193.802098l0-29.532249c0-7.997222 4.223365-15.410961 12.65632-22.239965 8.425443-6.827752 19.89226-12.236864 34.374156-16.244866 14.480644-3.987968 30.234682-5.972561 47.262116-5.972561 17.019921 0 32.781473 2.004627 47.255856 5.992595 14.480644 4.00675 25.94746 9.415862 34.380416 16.243614 8.425443 6.830256 12.647556 14.242743 12.647556 22.238713l0 29.536005c-9.733897-9.730141-23.046323-17.085031-39.904722-22.063417-16.857147-4.980891-34.981429-7.472588-54.379105-7.472588-19.403937 0-37.529471 2.491697-54.401643 7.472588C983.718393 176.738353 970.424749 184.073209 960.684591 193.802098M960.684591 327.230618l0-29.536005c0-7.994718 4.223365-15.409709 12.65632-22.238713 8.425443-6.829004 19.89226-12.236864 34.374156-16.244866 14.480644-3.987968 30.234682-5.990091 47.262116-5.990091 17.019921 0 32.781473 2.000871 47.255856 5.990091 14.480644 3.987968 25.94746 9.415862 34.380416 16.244866 8.425443 6.829004 12.647556 14.243995 12.647556 22.238713l0 29.536005c-9.733897-9.730141-23.046323-17.082527-39.904722-22.064669-16.857147-4.980891-34.981429-7.470084-54.379105-7.470084-19.403937 0-37.529471 2.491697-54.401643 7.470084C983.718393 310.128058 970.424749 317.500477 960.684591 327.230618"  horiz-adv-x="1603" />
+
+    
+    <glyph glyph-name="lingjuandizhi" unicode="&#59006;" d="M943.088 555.856 526.592 868.36C516.24 876.12 504.112 880 492 880c-12.12 0-24.24-3.88-34.592-11.64L40.912 555.856C25.28 544.128 16 525.184 16 505l0-562.488C16-92.008 42.64-120 75.496-120c0 0 79.44 0 146.528 0 103.688 0 91.472 81.88 91.472 81.88L313.496 255c0 34.52 26.64 62.504 59.496 62.504l238 0c32.856 0 59.504-27.984 59.504-62.504l0-298.368c0 0-3.68-75.304 81.528-76.624 68.904 0 156.464 0 156.464 0 32.856 0 59.504 27.992 59.504 62.504L967.992 505C968 525.184 958.72 544.128 943.088 555.856z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="weibiaoti2fuzhi05" unicode="&#58914;" d="M633.6 678.4l108.8 0L512 832 281.6 678.4 384 678.4l0-275.2 249.6 0L633.6 678.4zM435.2 723.2 512 774.4l76.8-51.2L588.8 448 435.2 448 435.2 723.2zM627.2 134.4l76.8 102.4 179.2 0-64-249.6L204.8-12.8l-64 249.6 179.2 0 76.8-102.4L627.2 134.4zM838.4 614.4l-147.2 0c-12.8 0-25.6-12.8-25.6-25.6 0-12.8 12.8-25.6 25.6-25.6l108.8 0c12.8 0 19.2-6.4 25.6-19.2L876.8 320c6.4-12.8-6.4-32-25.6-32l-160 0c-6.4 0-12.8-6.4-19.2-12.8l-57.6-83.2c-6.4-6.4-12.8-12.8-19.2-12.8L435.2 179.2c-6.4 0-12.8 6.4-19.2 12.8L358.4 275.2C352 281.6 345.6 288 339.2 288L172.8 288C160 288 147.2 300.8 147.2 320l51.2 224c0 12.8 12.8 19.2 25.6 19.2l108.8 0c12.8 0 25.6 12.8 25.6 25.6 0 12.8-12.8 25.6-25.6 25.6L185.6 614.4c-12.8 0-19.2-6.4-25.6-19.2L89.6 268.8c0-6.4 0-6.4 0-12.8l76.8-300.8c0-12.8 12.8-19.2 25.6-19.2l652.8 0c12.8 0 19.2 6.4 25.6 19.2l76.8 300.8c0 6.4 0 6.4 0 12.8l-76.8 326.4C857.6 608 851.2 614.4 838.4 614.4z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="shouhuodizhi" unicode="&#58978;" d="M512.005117 895.653099c-282.287201 0-434.613492-213.591633-434.613492-396.730697 0-190.322673 196.84625-402.487817 429.855118-504.555447l4.758374-2.100848 4.758374 2.100848c232.997612 102.066607 429.844885 314.251194 429.844885 504.555447C946.607352 682.06249 794.292318 895.653099 512.005117 895.653099zM512.00307 369.313509c-108.035552 0-195.61419 87.579661-195.61419 195.61419S403.967518 760.541889 512.00307 760.541889c108.033505 0 195.61419-87.579661 195.61419-195.61419S620.037599 369.313509 512.00307 369.313509zM259.848143-88.530057a246.409 38.232 0 1 0 504.303714 0 246.409 38.232 0 1 0-504.303714 0Z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="wodeshoucang" unicode="&#59017;" d="M1019.733333 512c-8.533333 25.6-34.133333 46.933333-59.733333 51.2l-268.8 42.666667L580.266667 853.333333c-12.8 25.6-38.4 42.666667-68.266667 42.666667s-55.466667-17.066667-68.266667-42.666667L328.533333 605.866667l-264.533333-42.666667C34.133333 558.933333 12.8 541.866667 4.266667 512c-8.533333-25.6 0-55.466667 17.066666-76.8l196.266667-200.533333L170.666667-42.666667c-4.266667-29.866667 8.533333-55.466667 29.866666-72.533333 12.8-8.533333 29.866667-12.8 42.666667-12.8 12.8 0 25.6 4.266667 34.133333 8.533333l230.4 123.733334 230.4-123.733334c12.8-4.266667 25.6-8.533333 34.133334-8.533333 17.066667 0 29.866667 4.266667 42.666666 12.8 21.333333 17.066667 34.133333 46.933333 29.866667 72.533333l-46.933333 277.333334 196.266666 200.533333c29.866667 25.6 34.133333 51.2 25.6 76.8z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="ziyuan" unicode="&#58919;" d="M512 470.646154a226.855385 226.855385 0 1 1 205.193846-322.953846 36.233846 36.233846 0 1 1-65.378461 30.326154 154.781538 154.781538 0 0 0-294.99077 65.378461A154.781538 154.781538 0 0 0 512 398.572308a157.538462 157.538462 0 0 0 140.603077-90.19077 36.233846 36.233846 0 0 1 65.378461 30.326154A228.036923 228.036923 0 0 1 512 470.646154zM512 604.553846a351.704615 351.704615 0 1 1 351.310769-351.310769A351.704615 351.704615 0 0 1 512 604.553846z m279.236923-351.310769A279.236923 279.236923 0 1 0 512 532.48a279.630769 279.630769 0 0 0 279.236923-279.236923zM801.083077 866.461538H222.916923a62.227692 62.227692 0 0 1-62.227692-62.227692v-142.178461a114.215385 114.215385 0 0 1 39.384615-78.769231L250.486154 541.538462a36.233846 36.233846 0 1 1 45.686154 54.744615l-50.412308 39.384615a48.049231 48.049231 0 0 0-12.996923 24.418462V794.387692h558.473846v-132.332307a30.326154 30.326154 0 0 0-12.996923-24.418462l-50.412308-39.384615A36.233846 36.233846 0 0 1 773.513846 541.538462l50.806154 39.384615a101.612308 101.612308 0 0 1 39.384615 78.769231V804.233846A62.227692 62.227692 0 0 1 801.083077 866.461538z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="gouwuche" unicode="&#58887;" d="M289 14.8c-55.9 0-101.4 45.5-101.4 101.4 0 55.9 45.5 101.4 101.4 101.4s101.4-45.5 101.4-101.4c0-55.9-45.5-101.4-101.4-101.4z m0 161.6c-33.2 0-60.2-27-60.2-60.1 0-33.2 27-60.1 60.2-60.1s60.2 27 60.2 60.1c-0.1 33.1-27.1 60.1-60.2 60.1zM566.2 14.8c-55.9 0-101.4 45.5-101.4 101.4 0 55.9 45.5 101.4 101.4 101.4s101.4-45.5 101.4-101.4c0-55.9-45.5-101.4-101.4-101.4z m0 161.6c-33.2 0-60.2-27-60.2-60.1 0-33.2 27-60.1 60.2-60.1s60.2 27 60.2 60.1c-0.1 33.1-27.1 60.1-60.2 60.1zM648.4 255.2H198.3L86.9 645.4h567.2l45.7 107.7h163.5c40.7 0 73.8-33.4 73.8-74.5 0-41-33.1-74.3-73.8-74.3-5.1 0-47.7-0.1-70.2-0.2L648.4 255.2z m-419 41.3h391.4l144.7 348.9h13.7s77.1 0.2 84 0.2c17.9 0 32.6 14.8 32.6 33 0 18-14.9 33.2-32.6 33.2H727l-45.7-107.7H141.6l87.8-307.6z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="yiguanbigongdanshu" unicode="&#59025;" d="M576 832H256a64.19 64.19 0 0 1-64-64v-768a64.19 64.19 0 0 1 64-64h512a64.19 64.19 0 0 1 64 64V576z m94.39-687.53l-45.25-45.25L512 212.35 398.86 99.22l-45.25 45.25 113.14 113.14-113.14 113.14L398.86 416 512 302.86 625.14 416l45.25-45.25-113.14-113.14zM576 576V768l192-192z"  horiz-adv-x="1025" />
+
+    
+    <glyph glyph-name="shouhoukefu" unicode="&#58901;" d="M824.2 535.3C809 590.2 744.7 768 512.1 768c-230.8 0-297-177.8-310.2-232.7-43.5-17-104-62.4-104-151.3 0-87 60.5-136.2 102.2-155.1 5.7-34.1 22.7-109.7 96.5-155.1 53-34.1 117.3-41.6 160.8-43.5 9.5-18.9 28.4-30.3 49.2-30.3 32.2 0 56.8 24.6 56.8 56.8 0 30.3-24.6 56.8-56.8 56.8-22.7 0-41.6-13.2-51.1-34.1-37.8 1.9-90.8 9.5-134.3 35.9-70 43.5-73.8 128.6-73.8 132.4V512.6c3.8 22.7 45.4 204.3 264.8 204.3S773.3 533.4 777 512.6v-266.7c0-7.6 3.8-15.1 9.5-20.8 3.8-3.8 9.5-5.7 15.1-5.7 1.9 0 5.7 0 7.6 1.9 41.6 13.2 119.2 62.4 119.2 160.8-0.2 90.8-62.6 136.2-104.2 153.2zM198 287.5c-22.7 17-51.1 45.4-51.1 96.5s28.4 79.5 51.1 92.7v-189.2z m630 0V476.7c22.7-15.1 51.1-43.5 51.1-92.7s-28.4-79.5-51.1-96.5z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="wodeyuyue" unicode="&#58903;" d="M868.864 529.92h-808.96v-61.44h808.96v61.44zM261.632 614.912c-16.896 0-30.72 13.824-30.72 30.72V791.552c0 16.896 13.824 30.72 30.72 30.72s30.72-13.824 30.72-30.72v-145.92c0-16.896-13.824-30.72-30.72-30.72zM161.792 353.28c0 16.896 13.824 30.72 30.72 30.72h145.92c16.896 0 30.72-13.824 30.72-30.72s-13.824-30.72-30.72-30.72H192.512c-16.896 0-30.72 13.824-30.72 30.72zM747.52 292.864c16.896 0 30.72-13.824 30.72-30.72V184.32c0-16.896-13.824-30.72-30.72-30.72s-30.72 13.824-30.72 30.72v78.336c0 16.896 13.824 30.208 30.72 30.208zM858.624 180.736c0-16.896-13.824-30.72-30.72-30.72h-78.336c-16.896 0-30.72 13.824-30.72 30.72s13.824 30.72 30.72 30.72h78.336c16.896 0 30.72-13.824 30.72-30.72zM161.792 189.44c0 16.896 13.824 30.72 30.72 30.72h145.92c16.896 0 30.72-13.824 30.72-30.72s-13.824-30.72-30.72-30.72H192.512c-16.896 0-30.72 13.824-30.72 30.72zM666.112 614.912c-16.896 0-30.72 13.824-30.72 30.72V791.552c0 16.896 13.824 30.72 30.72 30.72s30.72-13.824 30.72-30.72v-145.92c0-16.896-13.824-30.72-30.72-30.72zM458.752 22.528m-30.72 0a30.72 30.72 0 1 1 61.44 0 30.72 30.72 0 1 1-61.44 0ZM752.64 354.304c93.184 0 168.96-75.776 168.96-168.96s-75.776-168.96-168.96-168.96-168.96 75.776-168.96 168.96 75.776 168.96 168.96 168.96m0 61.44c-127.488 0-230.4-102.912-230.4-230.4s102.912-230.4 230.4-230.4 230.4 102.912 230.4 230.4-102.912 230.4-230.4 230.4zM460.8 53.248H175.104c-37.376 0-68.608 30.72-68.608 68.608V647.68c0 37.376 30.72 68.608 68.608 68.608h578.048c37.376 0 68.608-30.72 68.608-68.608v-177.664h60.416V645.12c0 72.704-58.88 131.584-131.584 131.584H178.176C105.472 776.704 46.08 717.824 46.08 645.12v-520.704c0-72.704 58.88-131.584 131.584-131.584H460.8v60.416z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="buqiajuan" unicode="&#59038;" d="M941.511111 486.4l25.6 2.844444V671.288889c0 48.355556-36.977778 85.333333-85.333333 85.333333H142.222222c-48.355556 0-85.333333-36.977778-85.333333-85.333333v-184.888889l19.911111-5.688889c39.822222-14.222222 65.422222-51.2 65.422222-93.866667 0-42.666667-25.6-79.644444-65.422222-93.866666l-19.911111-5.688889v-184.888889c0-48.355556 36.977778-85.333333 85.333333-85.333333h739.555556c48.355556 0 85.333333 36.977778 85.333333 85.333333v182.044444l-25.6 2.844445c-51.2 5.688889-88.177778 48.355556-88.177778 99.555555s36.977778 93.866667 88.177778 99.555556zM910.222222 236.088889v-133.688889c0-17.066667-11.377778-28.444444-28.444444-28.444444H142.222222c-17.066667 0-28.444444 11.377778-28.444444 28.444444v145.066667c51.2 25.6 85.333333 79.644444 85.333333 139.377777s-34.133333 113.777778-85.333333 139.377778V671.288889c0 17.066667 11.377778 28.444444 28.444444 28.444444h739.555556c17.066667 0 28.444444-11.377778 28.444444-28.444444v-133.688889c-65.422222-19.911111-113.777778-79.644444-113.777778-150.755556s48.355556-130.844444 113.777778-150.755555zM696.888889 415.288889h-113.777778c-17.066667 0-28.444444-11.377778-28.444444-28.444445s11.377778-28.444444 28.444444-28.444444h113.777778c17.066667 0 28.444444 11.377778 28.444444 28.444444s-11.377778 28.444444-28.444444 28.444445zM440.888889 415.288889h-113.777778c-17.066667 0-28.444444-11.377778-28.444444-28.444445s11.377778-28.444444 28.444444-28.444444h113.777778c17.066667 0 28.444444 11.377778 28.444444 28.444444s-11.377778 28.444444-28.444444 28.444445z"  horiz-adv-x="1024" />
+
+    
+    <glyph glyph-name="kuaidi-" unicode="&#58897;" d="M292.6799 72.3c-2.32-2.57-2.41-2.77-1.81-2.13s1.1 1.29 1.66 1.93zM750.5899 54.08l0.37 0.19c-1.62-0.59-2.51-0.94-2.91-1.11l1.35 0.46zM1024.0099 154.61c-0.54 12.16-9.79 22.19-22.3 22.29l-63.15 0.51-100.62 0.81-23.06 0.19c-12 0.1-22.39-10.29-22.3-22.3 0.05-6.16 0-12.31-0.37-18.46-0.3-5.54-1.3-11.11-1.46-16.63 0.21 7.2 0 0.29-0.31-1.73-0.4-2.42-0.84-4.83-1.34-7.24-0.91-4.45-2-8.88-3.31-13.24q-1.6-5.4-3.67-10.66c-0.08-0.17-0.17-0.35-0.26-0.57q-1.26-2.72-2.65-5.37c-1.49-2.8-3.1-5.54-4.85-8.18-0.66-1-1.36-2-2.06-2.95l-0.68-0.84a80.58 80.58 0 0 0-5.6-5.94c-0.88-0.84-1.79-1.65-2.71-2.46-1.9-0.61-4.53-3.29-6.18-4.28-2-1.2-4.05-2.29-6.15-3.29l1.67 0.61c-0.68-0.25-1.36-0.52-2-0.8-1.3-0.61-3.57-1.36-2.51-0.91-1.64-0.56-3.29-1.08-5-1.54-1.84-0.49-3.69-0.93-5.55-1.3-0.61-0.12-1.21-0.22-1.81-0.32a88.6 88.6 0 0 0-14.75-0.27l-1.71 0.17a108.17 108.17 0 0 0-13.52 3.09c-1.51 0.47-3 1-4.5 1.55l0.88-0.46c-0.4 0.21-0.81 0.39-1.22 0.58l-0.24 0.09a16.3 16.3 0 0 0-2.16 1 76.59 76.59 0 0 0-8.78 5.18 7.57 7.57 0 0 0-1.27 0.9l-0.17 0.15a10.81 10.81 0 0 1-1.4 1l0.79-0.45c-0.9 0.79-1.8 1.57-2.67 2.39-2.64 2.51-4.77 5.49-7.34 8l0.92-0.91a15.4 15.4 0 0 0-1.14 1.42q-1.25 1.83-2.4 3.71a95.38 95.38 0 0 0-5 9.23c-0.24 0.49-0.46 1-0.68 1.48-0.4 1-0.81 2.06-1.18 3.1q-1.77 4.92-3.13 10t-2.36 10.18c-0.3 1.52-0.57 3-0.82 4.57l-0.21 1.34c-0.57 5.14-1 10.28-1.17 15.46a128.6 128.6 0 0 0 0.3 16.07c1.14 12-11.14 22.3-22.3 22.3H338.7299c-12.8 0-21.28-10.26-22.3-22.3-0.27-3.27-0.58-6.53-0.95-9.78-0.11-1-0.24-2-0.37-3v-0.27c-0.92-5.67-1.87-11.31-3.13-16.91a174.93 174.93 0 0 0-7.76-25.74l0.49 1c-0.27-0.57-0.52-1.16-0.77-1.74l-0.11-0.27c-0.07-0.14-0.13-0.29-0.19-0.43-0.79-1.72-1.6-3.43-2.46-5.12a115.18 115.18 0 0 0-5.47-9.6c-0.88-1.39-1.79-2.75-2.74-4.1l-0.25-0.33 0.66 0.73-0.81-0.93c-0.55-0.7-1.26-1.5-1.66-1.93-1.25-1.47-2.49-2.95-3.86-4.34q-2.79-2.83-5.83-5.39c-0.7-0.5-1.39-1-2.11-1.47-1.9-1.27-3.87-2.46-5.89-3.54-1.71-0.92-6.14-2.59-5.63-2.43a62.73 62.73 0 0 0-6.26-1.87c-1-0.24-2-0.44-3.06-0.63l2.13 0.18c-0.7-0.06-1.4-0.16-2.09-0.23h-0.42c-0.38-0.07-0.76-0.15-1.15-0.21-1.81-0.33-4.61-0.33 0.12 0.14-2.33-0.11-4.63 0-7 0-3.24 0-6.46-0.38-9.72-0.29-1.3 0-2.6 0.11-3.89 0.21l0.79-0.23a7.89 7.89 0 0 1-1.3 0.27l-0.69 0.06a7.54 7.54 0 0 0-1.47 0.28 68.25 68.25 0 0 0-9.32 2.53l-1 0.39c-1.39 0.71-2.81 1.37-4.18 2.14-1.57 0.88-3.35 1.81-5 2.87l-0.52 0.48c-0.64 0.58-1.33 1.1-2 1.67q-2 1.69-3.78 3.52c-2.13 2.11-4.09 4.36-6 6.66-1.14 1.63-2.29 3.26-3.37 4.93a130.08 130.08 0 0 0-9 16.63c0 0.1-0.1 0.22-0.15 0.34 0.12-0.31 0.24-0.63 0.37-1-0.58 1.58-1.26 3.12-1.86 4.69q-1.6 4.23-3 8.53a220.54 220.54 0 0 0-8 34c-0.1 0.62-0.19 1.23-0.28 1.84-0.14 1.22-0.29 2.43-0.41 3.65s-0.27 2.7-0.35 4.06c-0.72 12-9.63 22.3-22.3 22.3H44.6199v278l40.29 35 74.64 64.91 9.64 8.39h147.24v-105.77c0-11.66 10.26-22.84 22.3-22.3s22.3 9.8 22.3 22.3V578 718.43h602.13c8.46 0 16.94-0.15 25.4 0h1.08c11.66 0 22.84 10.25 22.3 22.29s-9.8 22.3-22.3 22.3H365.2099c-8.46 0-16.94 0.15-25.39 0h-1.09a22.62 22.62 0 0 1-22.3-22.3V601.8H163.6599a27.77 27.77 0 0 1-18.52-6.56c-1.25-1-2.45-2.12-3.67-3.19l-56.78-49.37-65.74-57.16c-4.07-3.55-8.62-6.9-12.39-10.78C-0.5401 467.43 0.0099 459.5 0.0099 450.66v-302.08a22.62 22.62 0 0 1 22.3-22.3h111.19c6.27-40.17 23.47-81.13 56.43-104.87 19.17-13.81 42.6-16.79 65.57-15.75 21.59 1 41.26 9.71 57.65 23.61 28.06 23.81 40 61 45.33 97H616.0099a203 203 0 0 1 4.53-30.87c7.22-32.51 26.22-64.35 57.24-79a109.27 109.27 0 0 1 30.75-9.69c1.45-0.21 3.89-0.54 5.53-0.75s3-0.44 4.53-0.6a80.76 80.76 0 0 1 14.75-0.22c24 1.82 46.58 10.8 64.16 27.62 27 25.86 36.7 64.08 39 100.87l41.45-0.33 100.63-0.82 23-0.18c11.78-0.09 22.95 10.33 22.43 22.31z m-810.4-95.75a17.18 17.18 0 0 0-2.56 2.08c-0.11 0.06 1.64-1.34 2.56-2.08z m55-5.51l3.2 1.13z m494 7.85l-1.31-1.08c-2.17-1.78-0.15-0.01 1.26 1.08zM678.6399 72c1.5-1.68 3.12-3.1 0 0zM235.7299 50.3h0.51c-3.89 1.12-3.87 0.73-2.67 0.38h0.12c0.66-0.2 1.32-0.27 2.04-0.38zM258.2299 50.5l-1.41-0.14 1 0.07zM689.2399 61.33c0.18-0.13 0.37-0.24 0.54-0.37 0.94-0.51 1.14-0.26-2 1.59l0.61-0.54c0.25-0.24 0.55-0.48 0.85-0.68zM304.0999 92.63l0.08 0.21c-2-4.26-1.07-2.48-0.39-1 0 0.09 0.07 0.18 0.11 0.27s0.11 0.37 0.2 0.52zM701.0099 54.64l0.34-0.12c-2.63 1.33-3.11 1.5-2.74 1.26l0.84-0.43c0.46-0.25 0.98-0.48 1.56-0.71zM989.6399 473.73H686.7899c-11.67 0-22.84-10.26-22.3-22.3s9.8-22.3 22.3-22.3h302.85c11.66 0 22.84 10.26 22.3 22.3s-9.8 22.3-22.3 22.3z"  horiz-adv-x="1024" />
+
+    
+
+
+  </font>
+</defs></svg>
diff --git a/static/iconfont/iconfont.ttf b/static/iconfont/iconfont.ttf
new file mode 100644
index 0000000..6b0942c
Binary files /dev/null and b/static/iconfont/iconfont.ttf differ
diff --git a/static/iconfont/iconfont.woff b/static/iconfont/iconfont.woff
new file mode 100644
index 0000000..298b9d3
Binary files /dev/null and b/static/iconfont/iconfont.woff differ
diff --git a/static/iconfont/iconfont.woff2 b/static/iconfont/iconfont.woff2
new file mode 100644
index 0000000..8712068
Binary files /dev/null and b/static/iconfont/iconfont.woff2 differ
diff --git a/static/logo.jpg b/static/logo.jpg
new file mode 100644
index 0000000..34a2c0d
Binary files /dev/null and b/static/logo.jpg differ
diff --git a/store/index.js b/store/index.js
new file mode 100644
index 0000000..fb88e3e
--- /dev/null
+++ b/store/index.js
@@ -0,0 +1,16 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+import appUser from './modules/appUser'
+import logo from './modules/logo'
+
+Vue.use(Vuex)
+
+const store = new Vuex.Store({
+	modules: {
+		appUser,
+		logo
+	}
+})
+
+export default store
\ No newline at end of file
diff --git a/store/modules/appUser.js b/store/modules/appUser.js
new file mode 100644
index 0000000..415fbb9
--- /dev/null
+++ b/store/modules/appUser.js
@@ -0,0 +1,115 @@
+const user = {
+	state: {
+		appUser: {
+			token: null, // 登录会话token
+			tokenHead: null, // 登录会话token头
+			openid: null, // 微信用户OPENID
+			userid: null, // 系统用户ID
+			userInfo: {}, // 用户信息
+			currentTime: null, // 当前时间
+		},
+		wxInfo: {}, // 微信信息
+		wxJssdkUser: {
+			code: null, // 微信用户code
+			openid: null, // 微信用户OPENID
+			appid: null, // 微信号APPID
+			ticket: null // ticket
+		},
+		refleshStatus: false // 刷新状态
+	},
+
+	getters: {
+		//appUser: state => state.appUser,
+		wxInfo: state => state.wxInfo,
+		userInfo: state => state.appUser.userInfo,
+		wxJssdkUser: state => state.appUser.userInfo,
+		refleshStatus: state => state.refleshStatus
+	},
+
+	mutations: {
+		SET_APP_USER: (state, appUser) => {
+			state.appUser.token = appUser.token
+			state.appUser.tokenHead = appUser.tokenHead
+			state.appUser.openid = appUser.openid
+			state.appUser.userid = appUser.userid
+			state.appUser.currentTime = appUser.currentTime
+		},
+		SET_WX_INFO: (state, wxInfo) => {
+			state.wxInfo = wxInfo
+		},
+		SET_USER_INFO: (state, userInfo) => {
+			state.appUser.userInfo = userInfo
+		},
+		SET_TOKEN: (state, token) => {
+			state.appUser.token = token
+		},
+		SET_WX_JSSDK_USER: (state, jssdkUser) => {
+			state.wxJssdkUser.code = jssdkUser.code
+			state.wxJssdkUser.openid = jssdkUser.openid
+			state.wxJssdkUser.appid = jssdkUser.appid
+			state.wxJssdkUser.ticket = jssdkUser.ticket
+		},
+		SET_REFLESH_STATUS: (state, refleshStatus) => {
+			state.refleshStatus = refleshStatus
+		}
+	},
+
+	actions: {
+		setAppUser: ({
+			commit
+		}, appUser) => {
+			commit('SET_APP_USER', appUser)
+		},
+		resetAppUser: ({
+			commit
+		}) => {
+			let appUser = {
+				token: null, // 登录会话token
+				tokenHead: null, // 登录会话token头
+				openid: null, // 微信用户OPENID
+				userid: null, // 系统用户ID
+				userInfo: {}, // 用户信息
+				currentTime: null, // 当前时间
+			}
+			commit('SET_APP_USER', appUser)
+		},
+		resetWxJssdkUser: ({
+			commit
+		}) => {
+			let wxJssdkUser = {
+				code: null, // 微信用户code
+				openid: null, // 微信用户OPENID
+				appid: null, // 微信号APPID
+				ticket: null // ticket
+			}
+			commit('SET_WX_JSSDK_USER', wxJssdkUser)
+		},
+		setWxInfo: ({
+			commit
+		}, wxInfo) => {
+			commit('SET_WX_INFO', wxInfo)
+		},
+		setUserInfo: ({
+			commit
+		}, userInfo) => {
+			commit('SET_USER_INFO', userInfo)
+		},
+		setToken: ({
+			commit
+		}, token) => {
+			commit('SET_TOKEN', token)
+		},
+		setWxJssdkUser: ({
+			commit
+		}, jssdkUser) => {
+			commit('SET_WX_JSSDK_USER', jssdkUser)
+		},
+		setRefleshStatus: ({
+			commit
+		}, refleshStatus) => {
+			commit('SET_REFLESH_STATUS', refleshStatus)
+		}
+	}
+}
+
+export default user
diff --git a/store/modules/logo.js b/store/modules/logo.js
new file mode 100644
index 0000000..9179d8d
--- /dev/null
+++ b/store/modules/logo.js
@@ -0,0 +1,78 @@
+const appContext = {
+	state: {
+		/**
+		 * 是否需要强制登录
+		 */
+		appUser: {
+			token: null, // 登录会话token
+			tokenHead: null, // 登录会话token头
+			openid: null, // 微信用户OPENID
+			userid: null, // 系统用户ID
+			userInfo: {}, // 用户信息
+			currentTime: null, // 当前时间
+		},
+		forcedLogin: false,
+		hasLogin: false,
+		userName: "", //用户账号
+		wixinInfo:{}
+	},
+	getters: {
+		appUser: state => state.appUser,
+		forcedLogin: state => state.forcedLogin,
+		hasLogin: state => state.hasLogin,
+		userName: state => state.userName,
+		wixinInfo: state => state.wixinInfo,
+	},
+	mutations: {
+		SET_APP_USER: (state, appUser) => {
+			state.appUser.token = appUser.token
+			state.appUser.tokenHead = appUser.tokenHead
+			state.appUser.openid = appUser.openid
+			state.appUser.userid = appUser.userid
+			state.appUser.currentTime = appUser.currentTime
+		},
+		SET_CURRENT_DATA: (state, forcedLogin) => {
+			state.forcedLogin = forcedLogin
+		},
+		SET_CURRENT_ENV: (state, hasLogin) => {
+			state.hasLogin = hasLogin
+		},
+		SET_CURRENT_NAME: (state, userName) => {
+			state.userName = userName
+		},
+		SET_CURRENT_INFO: (state, wixinInfo) => {
+			state.wixinInfo = wixinInfo
+		},
+		
+	},
+	actions: {
+		setAppUser: ({
+			commit
+		}, appUser) => {
+			commit('SET_APP_USER', appUser)
+		},
+		setforcedLogin: ({
+			commit
+		}, forcedLogin) => {
+			commit('SET_CURRENT_DATA', forcedLogin)
+		},
+		sethasLogin: ({
+			commit
+		}, hasLogin) => {
+			commit('SET_CURRENT_ENV', hasLogin)
+		},
+		setuserName: ({
+			commit
+		}, userName) => {
+			commit('SET_CURRENT_NAME', userName)
+		},
+		setwixinInfo: ({
+			commit
+		}, wixinInfo) => {
+			commit('SET_CURRENT_INFO', wixinInfo)
+		},
+		
+	}
+}
+
+export default appContext
diff --git a/uni.scss b/uni.scss
new file mode 100644
index 0000000..9a6702a
--- /dev/null
+++ b/uni.scss
@@ -0,0 +1,80 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+$uni-bg-color-primary: #007aff;
+$uni-bg-color-success: #4cd964;
+$uni-bg-color-warning: #f0ad4e;
+$uni-bg-color-error: #dd524d;
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:24upx;
+$uni-font-size-base:28upx;
+$uni-font-size-lg:32upx;
+
+/* 图片尺寸 */
+$uni-img-size-sm:40upx;
+$uni-img-size-base:52upx;
+$uni-img-size-lg:80upx;
+
+/* Border Radius */
+$uni-border-radius-sm: 4upx;
+$uni-border-radius-base: 6upx;
+$uni-border-radius-lg: 12upx;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 10px;
+$uni-spacing-row-base: 20upx;
+$uni-spacing-row-lg: 30upx;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 8upx;
+$uni-spacing-col-base: 16upx;
+$uni-spacing-col-lg: 24upx;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:40upx;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:36upx;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:30upx;
\ No newline at end of file
diff --git a/util/AppContext.js b/util/AppContext.js
new file mode 100644
index 0000000..ec37a39
--- /dev/null
+++ b/util/AppContext.js
@@ -0,0 +1,340 @@
+import Cache from '../cache'
+import $Qs from 'qs'
+import $Enums from './Enums'
+import $nothing from './nothing.js'
+import $store from '../store'
+import {
+	mapGetters,
+	mapActions
+} from 'vuex'
+
+const initEnv = {
+	initConfig: ({
+		store
+	}) => {},
+	initCacheData: ({
+		store
+	}) => {
+		store.dispatch('setAppUser', Cache.getSync(Cache.$Keys.app.APP_USER));
+		store.dispatch('setWxInfo', Cache.getSync(Cache.$Keys.app.WX_INFO));
+		store.dispatch('setUserInfo', Cache.getSync(Cache.$Keys.app.USER_INFO));
+	}
+}
+
+const $AppContext = {
+	_initStatus: false, // 初始化状态
+	$vm: null, // 当前页面VM对象
+	$router: null,
+	$store: null,
+	$cache: Cache,
+	$Qs,
+	$Enums,
+	/**
+	 * 导航对象(不可直接使用,使用getNavigate获取页面级导航对象)
+	 */
+	$Navigate: {
+		path: null,
+		params: null,
+		isTab: false,
+		isBack: false,
+		isCancel: false,
+		reLaunch: false,
+		from: null
+	},
+	/**
+	 * 获取当前页面导航对象
+	 */
+	getNavigate: () => Object.assign(this.$AppContext.getCurrentPage().data.$Navigate || {}, {
+		/**
+		 * 返回并且非取消(系统按键返回)
+		 */
+		isBackNoCancel: () => (this.$AppContext.getCurrentPage().data.$Navigate || {}).isBack && !(this.$AppContext.getCurrentPage()
+			.data.$Navigate || {}).isCancel
+	}),
+	/**
+	 * 获取当前页面对象
+	 */
+	getCurrentPage: () => getCurrentPages()._last(),
+	/**
+	 * 获取前一个页面对象
+	 */
+	getPreviousPage: () => getCurrentPages()[getCurrentPages().length - 2] || {},
+	/**
+	 * 获取当前页面参数
+	 */
+	getParams: () => this.$AppContext.getNavigate().params || {},
+	/**
+	 * 设置导航栏颜色
+	 */
+	setNavigationBarColor: ({
+		frontColor,
+		backgroundColor
+	} = {}) => {
+		frontColor = $nothing._ifNull(frontColor, '#ffffff')
+		backgroundColor = $nothing._ifNull(backgroundColor, '#5cadff')
+		wx.setNavigationBarColor({
+			frontColor,
+			backgroundColor
+		})
+		Cache.setSync(Cache.$Keys.app.NAVIGATION_BAR_FRONT_COLOR, frontColor)
+		Cache.setSync(Cache.$Keys.app.NAVIGATION_BAR_BACKGROUND_COLOR, backgroundColor)
+	},
+	showTabBarRedDot: (params = {}) => {
+		wx.showTabBarRedDot(params)
+	},
+	hideTabBarRedDot: (params = {}) => {
+		wx.hideTabBarRedDot(params)
+	},
+	setTabBarBadge: (params = {}) => {
+		wx.setTabBarBadge(params)
+	},
+	removeTabBarBadge: (params = {}) => {
+		wx.removeTabBarBadge(params)
+	},
+	/**
+	 * 获取缓存的导航栏颜色
+	 */
+	getCacheNavigationBarColor: () => {
+		let frontColor = Cache.getSync(Cache.$Keys.app.NAVIGATION_BAR_FRONT_COLOR)
+		let backgroundColor = Cache.getSync(Cache.$Keys.app.NAVIGATION_BAR_BACKGROUND_COLOR)
+		return {
+			frontColor,
+			backgroundColor
+		}
+	},
+	/**
+	 * main.js vue实例化的 created 中 使用 AppContext.use(vue) 初始化 $vm、$router、$store
+	 * @param vm
+	 */
+	use: (vm) => {
+		vm.$AppContext.$router = vm.$router
+		vm.$AppContext.$store = vm.$store
+		vm.$AppContext.$store.mapGetters = mapGetters
+		vm.$AppContext.$store.mapActions = mapActions
+	},
+	/**
+	 * main.js vue实例化的 created 中调用
+	 * @param vm
+	 */
+	initialize: (vm) => {
+		if (!vm.$AppContext._initStatus) {
+			vm.$AppContext._initStatus = true
+			vm.$AppContext.use(vm)
+			initEnv.initConfig({ store: vm.$AppContext.$store })
+			initEnv.initCacheData({ store: vm.$AppContext.$store })
+		}
+	},
+	checkLogin: () => {
+		if (!$store.getters.appUser.currentTime || $nothing._isNull($store.getters.appUser.token)
+			|| ($store.getters.appUser.currentTime && new Date().getTime() - $store.getters.appUser.currentTime >= 86400000)) return false
+		else return true
+	},
+	logout: (vm) => {
+		vm.$AppContext.$store.dispatch('resetAppUser')
+		vm.$AppContext.$store.dispatch('setWxInfo', {})
+		vm.$AppContext.$store.dispatch('resetAppUser')
+		Cache.removeSync(Cache.$Keys.app.APP_USER)
+		Cache.removeSync(Cache.$Keys.app.WX_INFO)
+		Cache.removeSync(Cache.$Keys.app.USER_INFO)
+	},
+	/**
+	 * 导航跳转页面
+	 * @param {*} options
+	 */
+	navigateTo: ({
+		path = null,
+		isTab = false,
+		reLaunch = false,
+		params = {},
+		onComplete = (res) => {},
+		onAbort = (res) => {},
+		onSuccess = (res) => {},
+		userCallBack = (res) => {}
+	} = {}) => {
+		this.$AppContext.$Navigate = {
+			path,
+			params,
+			isTab,
+			isBack: false,
+			isCancel: false,
+			reLaunch,
+			from: this.$AppContext.getCurrentPage().route,
+			userCallBack
+		}
+		console.log('### navigateTo: ' + this.$AppContext.$Navigate.from)
+		console.warn($nothing._copy(this.$AppContext.$Navigate))
+		this.$AppContext.$router.push({
+			path,
+			isTab,
+			reLaunch
+		}, onComplete, onAbort, onSuccess)
+	},
+	/**
+	 * 导航跳转Tab页
+	 * @param {*} options
+	 */
+	navigateToTab: ({
+		path = null,
+		reLaunch = false,
+		params = {},
+		onComplete = (res) => {},
+		onAbort = (res) => {},
+		onSuccess = (res) => {},
+		userCallBack = (res) => {}
+	} = {}) => {
+		this.$AppContext.navigateTo({
+			path,
+			isTab: true,
+			reLaunch,
+			params,
+			onComplete,
+			onAbort,
+			onSuccess,
+			userCallBack
+		})
+	},
+	/**
+	 * 导航替换
+	 * @param {*} options
+	 */
+	replaceTo: ({
+		path = null,
+		params = null,
+		onComplete = (res) => {},
+		onAbort = (res) => {},
+		onSuccess = (res) => {},
+		userCallBack = (res) => {}
+	} = {}) => {
+		this.$AppContext.$Navigate = {
+			path,
+			params,
+			isTab: false,
+			isBack: true,
+			isReplace: true,
+			isCancel: false,
+			reLaunch: false,
+			// from: this.$AppContext.getCurrentPage().route,
+			from: this.$AppContext.getPreviousPage().route,
+			userCallBack
+		}
+		console.log('### replaceTo: ' + this.$AppContext.$Navigate.from)
+		console.warn($nothing._copy(this.$AppContext.$Navigate))
+		this.$AppContext.$router.replace({
+			path
+		}, onComplete, onAbort, onSuccess)
+	},
+	/**
+	 * 导航返回
+	 * @param {*} options
+	 */
+	navigateBack: ({
+		params = null,
+		isTab = false
+	} = {}) => {
+		this.$AppContext.$Navigate = {
+			path: this.$AppContext.getPreviousPage().route,
+			params,
+			isTab,
+			isBack: true,
+			isCancel: false,
+			reLaunch: false,
+			from: getCurrentPages()[getCurrentPages().length - 3] ? getCurrentPages()[getCurrentPages().length - 3].route : null,
+			backFrom: this.$AppContext.getCurrentPage().route
+		}
+		console.log('### navigateBack: ' + this.$AppContext.$Navigate.backFrom)
+		console.warn($nothing._copy(this.$AppContext.$Navigate))
+		this.$AppContext.$router.back()
+	},
+	navigateGo: ({
+		params = null,
+		isTab = false
+	} = {}) => {
+		this.$AppContext.$Navigate = {
+			path: this.$AppContext.getPreviousPage().route,
+			params,
+			isTab,
+			isBack: true,
+			isCancel: false,
+			reLaunch: false,
+			from: getCurrentPages()[getCurrentPages().length - 3] ? getCurrentPages()[getCurrentPages().length - 3].route : null,
+			backFrom: this.$AppContext.getCurrentPage().route
+		}
+		console.log('### navigateGo: ' + this.$AppContext.$Navigate.backFrom)
+		console.warn($nothing._copy(this.$AppContext.$Navigate))
+		this.$AppContext.$router.back()
+	},
+	/**
+	 * 页面显示处理
+	 * @param vm
+	 */
+	pageOnShow: (vm) => {
+		this.$AppContext.$vm = vm
+		// 将导航对象设置到当前页对象
+		this.$AppContext.getCurrentPage().setData({
+			$Navigate: $nothing._copy(this.$AppContext.$Navigate)
+		})
+		// 还原导航对象
+		this.$AppContext.$Navigate = {
+			path: null,
+			params: null,
+			isTab: false,
+			isBack: false,
+			isCancel: false,
+			reLaunch: false,
+			from: null
+		}
+		// BACK后跳转处理
+		if (this.$AppContext.getNavigate().isBack && this.$AppContext.getNavigate().backNavigate) {
+			let backNavigate = this.$AppContext.getNavigate().backNavigate
+			if (backNavigate.type === 'BACK') {
+				this.$AppContext.navigateBack(backNavigate.options)
+			} else if (backNavigate.type === 'REPLACE') {
+				this.$AppContext.replaceTo(backNavigate.options)
+			} else if (backNavigate.type === 'TAB') {
+				this.$AppContext.navigateToTab(backNavigate.options)
+			} else {
+				this.$AppContext.navigateTo(backNavigate.options)
+			}
+		}
+	},
+	/**
+	 * 页面卸载处理
+	 */
+	pageOnUnload: ({
+		backNavigate = null,
+		params = null
+	} = {}) => {
+		// 是否取消操作(系统按键返回)
+		if (!this.$AppContext.$Navigate.isBack) {
+			this.$AppContext.$Navigate = {
+				path: this.$AppContext.getPreviousPage().route,
+				params: null,
+				isTab: false,
+				isBack: true,
+				isCancel: true,
+				reLaunch: false,
+				from: getCurrentPages()[getCurrentPages().length - 3] ? getCurrentPages()[getCurrentPages().length - 3].route : null,
+				backFrom: this.$AppContext.getCurrentPage().route
+			}
+			console.log('### sysBack: ' + this.$AppContext.$Navigate.backFrom)
+			console.warn($nothing._copy(this.$AppContext.$Navigate))
+		}
+		// 如传递参数,则进行合并
+		if (params) {
+			if (this.$AppContext.$Navigate.params) {
+				Object.assign(this.$AppContext.$Navigate.params, params)
+			} else this.$AppContext.$Navigate.params = params
+		}
+		this.$AppContext.$Navigate.backNavigate = backNavigate
+	}
+}
+
+if (typeof wx !== 'undefined' && !wx.miniProgram) {
+  // 小程序环境
+  wx.$AppContext = $AppContext
+} else {
+  window.$AppContext = $AppContext
+  Object.assign(window, $AppContext)
+}
+
+export default $AppContext
diff --git a/util/Enums.js b/util/Enums.js
new file mode 100644
index 0000000..9d130c7
--- /dev/null
+++ b/util/Enums.js
@@ -0,0 +1,80 @@
+/**
+ * 数据方向
+ */
+const DATA_DIRECTION = {
+  UP: 'UP',
+  DOWN: 'DOWN'
+}
+
+/**
+ * 数据排序
+ */
+const DATA_ORDER_BY = {
+  ASC: 'ASC',
+  DESC: 'DESC'
+}
+
+/**
+ * 字符串样式
+ */
+const StringStyle = {
+  UPPER: 'UPPER', // 大写
+  LOWER: 'LOWER'  // 小写
+}
+
+/**
+ * 数据类型
+ */
+const DataType = {
+  JSON: 'Json',
+  ARRAY: 'Array',
+  DATE: 'Date',
+  STRING: 'String',
+  NUMBER: 'Number',
+  file:'file'
+}
+
+/**
+ * HTTP请求Header类型
+ */
+const ContentType = {
+  FORM: 'application/x-www-form-urlencoded',
+  FORM_UTF8: 'application/x-www-form-urlencoded;charset=utf-8',
+  JSON: 'application/json',
+  JSON_UTF8: 'application/json;charset=utf-8',
+  MULTIPART_FORM: 'mutipart/form-data'
+}
+
+/**
+ * 订单状态
+ * 0->待付款;1->待发货;2->已发货;3->已完成;4->已关闭;5->无效订单
+ */
+const OrderStatus = {
+	UNPAY: 0,
+	UNDELIVER: 1,
+	DELIVER: 2,
+	FINISH: 3,
+	CLOSED: 4,
+	INVALID: 5
+}
+
+export default {
+  DATA_DIRECTION,
+  DATA_ORDER_BY,
+  StringStyle,
+  DataType,
+  ContentType,
+  // 公共枚举值
+  TRUE: true,
+  FALSE: false,
+  STR_TRUE: '1',
+  STR_FALSE: '0',
+  N_TRUE: 1,
+  N_FALSE: 0,
+  YES: 1,
+  NO: 0,
+  STR_YES: '1',
+  STR_NO: '0',
+  ZERO: 0,
+	OrderStatus
+}
diff --git a/util/Env.js b/util/Env.js
new file mode 100644
index 0000000..d861dce
--- /dev/null
+++ b/util/Env.js
@@ -0,0 +1,26 @@
+// 获取当前帐号信息
+const accountInfo = wx.getAccountInfoSync();
+//console.log(accountInfo)
+if(!accountInfo.miniProgram.envVersion){
+  console.error("获取运行环境失败!");
+}
+const baseApi = {
+   //开发版
+   //develop: "http://192.168.1.231",
+   //develop: "https://tprint.refinecolor.com",
+    develop: "https://tprint.colorpark.cn",
+   //体验版
+   trial: "https://tprint.refinecolor.com",
+   //trial: "https://tprint.colorpark.cn",
+   //正式版
+   release: "https://tprint.colorpark.cn",
+};
+const baseURL = baseApi[accountInfo.miniProgram.envVersion]
+
+const Env = {
+	getDevBaseURL: () => baseURL,
+	getBaseURL: () => baseURL,
+	getmalltext: () => "色彩公园代理中心",  //小程序名字
+	getAppID: () => "wx9cd3934f286f3d71",
+}
+export default Env
diff --git a/util/base.js b/util/base.js
new file mode 100644
index 0000000..031b967
--- /dev/null
+++ b/util/base.js
@@ -0,0 +1,12 @@
+export default {
+	Userres:null,//记录用户登录信息
+	terminal:3,//终端,1:平板, 2:手机,3:抖音
+	be_child:0,//子代理
+	partner_id:-1,  //默认-1
+	isLogin:false,//是否登录
+	
+	
+}
+// this.$base.Userres
+// if(this.$base.Userres.be_child == 1) return;
+// :class="be_child == 1 ? 'bg-grey' : ''"
diff --git a/util/nothing.js b/util/nothing.js
new file mode 100644
index 0000000..2784cfa
--- /dev/null
+++ b/util/nothing.js
@@ -0,0 +1,700 @@
+/**
+ * nothing.js
+ * version: v1.0.1
+ * author: dengs
+ * mail: cbtak@hotmail.com
+ * github: https://github.com/cbtak/nothing
+ * create date: 2017-6-18
+ *
+ * 说明:平时积累常用的一些系统对象扩展、功能函数集
+ * 在程序入口直接引入即可:
+ * import './utils/nothing'
+ *
+ * 浏览器环境:window.nothing 或 window.$n
+ * 小程序环境:wx.nothing 或 wx.$n
+ * import方式:import nothing from './utils/nothing'
+ *
+ * 更新日志:
+ * modify date: 【2018-10-13】更新代码风格(去除“;”号、“"”改为“'”、去除未使用的变量等...),以兼容ESlint校验
+ * modify date: 【2018-10-15】调整部分语法,以兼容小程序
+ */
+const $nt = {
+  /**
+   * 对象拷贝
+   * 示例:
+   * let a = {name:'this is a'}
+   * let b = _copy()
+   */
+  _copy: function (source) {
+    let result = source instanceof Array ? [] : {}
+    // 日期类型直接返回
+    if (source instanceof Date) {
+      return source
+    }
+    for (let key in source) {
+      result[key] = source[key] && typeof source[key] === 'object' ? $nt._copy(source[key]) : source[key]
+    }
+    return result
+  },
+  /**
+   * 验证是否空值
+   * 示例:
+   * let checkMsg = $nt._isNull(var) ? 'var is null' : 'var not null'
+   * @param {*} val
+   */
+  _isNull: function (val) {
+    return val === null || val === '' || val === undefined
+  },
+  /**
+   * 验证是否非空值
+   * 示例:
+   * let checkMsg = _isNotNull(var) ? 'var not null' : 'var is null'
+   * @param {*} val
+   */
+  _isNotNull: function (val) {
+    return val !== null && val !== '' && val !== undefined
+  },
+  /**
+   * 空值处理(类oracle nvl2)
+   * 如果val为空,则返回val1,不为空时,则验证val2是否为空,val2不为空时返回val2,否则返回val
+   * 示例:
+   * let val = _ifNull(val, 'val1', 'val2')
+   * @param {*} val
+   * @param {*} val1
+   * @param {*} val2
+   */
+  _ifNull: function (val, val1, val2) {
+    return $nt._isNull(val) ? val1 : ($nt._isNull(val2) ? val : val2)
+  },
+  /**
+   * 数值舍入处理(可指定小数位数和舍入模式)
+   * @param {*} num       要格式化的数值
+   * @param {*} precision 小数保留位数
+   * @param {*} mode      舍入模式:0:Math.round  1:Math.ceil  -1:Math.floor
+   */
+  _toFixed: function (num, precision, mode) {
+    num = Number(num)
+    precision = Number(precision || 0)
+    mode = [0, 1, -1]._contains(mode) ? mode : 0
+    // 舍入处理
+    num = $nt._caseValue(mode,
+      0, (precision ? Math.round(num * Math.pow(10, precision)) * (1 / Math.pow(10, precision)) : Math.round(num)),
+      1, (precision ? Math.ceil(num * Math.pow(10, precision)) * (1 / Math.pow(10, precision)) : Math.ceil(num)),
+      -1, (precision ? Math.floor(num * Math.pow(10, precision)) * (1 / Math.pow(10, precision)) : Math.floor(num))
+    )
+    return Number(num.toFixed(precision))
+  },
+  /**
+   * 数值格式化
+   * @param {*} num       要格式化的数值
+   * @param {*} params    参数对象
+   * 参数对象说明:
+   * num              要格式化的数值
+   * params.mode      舍入模式:0:Math.round  1:Math.ceil  -1:Math.floor
+   * params.thousands 是否显示千分位
+   * params.precision 保留小数位数
+   * 示例:
+   * _numberFormat(12806.123)                                                返回:12806
+   * _numberFormat(12806.123, {mode: 0, thousands: true, precision: 2})      返回:12,806.12
+   * _numberFormat(12806.123, {mode: 1, precision: 2})                       返回:12806.13
+   * _numberFormat(12806.126, {mode: -1, thousands: false, precision: 2})    返回:12806.12
+   */
+  _numberFormat: function (num, params) {
+    if ($nt._isNull(num)) return num
+    num = Number(num)
+    params = params || {}
+    // 舍入模式:0:Math.round  1:Math.ceil  -1:Math.floor
+    let mode = [0, 1, -1]._contains(params.mode) ? params.mode : 0
+    // 是否显示千分位
+    let thousands = $nt._isNull(params.thousands) ? false : params.thousands
+    // 显示小数位数
+    let precision = $nt._isNull(params.precision) ? 0 : params.precision
+    // 舍入处理
+    num = $nt._caseValue(mode,
+      0, (precision ? Math.round(num * Math.pow(10, precision)) * (1 / Math.pow(10, precision)) : Math.round(num)),
+      1, (precision ? Math.ceil(num * Math.pow(10, precision)) * (1 / Math.pow(10, precision)) : Math.ceil(num)),
+      -1, (precision ? Math.floor(num * Math.pow(10, precision)) * (1 / Math.pow(10, precision)) : Math.floor(num))
+    )
+    // 按小数点分割为数组
+    let tempArr = num.toString().split('.')
+    // 小数点后的数值处理
+    tempArr[1] = tempArr[1] || ''
+    if (precision) {
+      // 截去多余位数
+      tempArr[1] = tempArr[1].substr(0, precision)
+      // 小数位数处理(不够位数补0)
+      tempArr[1] = '.' + tempArr[1] + new Array(precision - tempArr[1].length + 1).join('0')
+    }
+    // 根据是否显示千分位格式化返回
+    // return (thousands ? Number(tempArr[0]).toLocaleString() : tempArr[0]) + (precision ? tempArr[1] : '')
+    return (thousands ? Number(tempArr[0]).replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') : tempArr[0]) + (precision ? tempArr[1] : '')
+  },
+  /**
+   * 获取地址栏参数
+   * 示例:
+   * let userid = _getParam('userid')
+   * @param {*} key
+   */
+  _getParam: function (key) {
+    let reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i')
+    let r = window.location.search.substr(1).match(reg)
+    return r ? unescape(r[2]) : null
+  },
+  /**
+   * 匹配函数,类似 oracle 中的 decode
+   * 说明:取第一个参数与后续偶数位置的参数进行比较,如匹配则返回当前比较的偶数位置下一个参数作为结果
+   * 如未找到匹配项目,并且参数个数大于3而且为偶数,则取最后一个参数作为默认值返回
+   * 注:参数为动态参数,参数个数最少为3,否则无意义
+   *     偶数位置被比较的参数可以为数组
+   *     比较使用 === 及 indexOf() 严格匹配值
+   * 示例:
+   * 1. _caseValue('A', 'A', value1, 'B', value2) // 返回 value1
+   * 2. _caseValue('A', 'B', value1, 'A', value2) // 返回 value2
+   * 3. _caseValue('A', 'B', value1, 'C', value2, defaultValue) // 返回 defaultValue
+   * 4. _caseValue('A', 'B', value1, ['A','C'], value2, defaultValue) // 返回 value2
+   *
+   * @param {*} args 动态参数
+   */
+  _caseValue: function (...args) {
+    if (!args || args.length < 3) {
+      return null
+    }
+    let caseKey = args[0]
+    for (let i = 1; i < args.length; i++) {
+      if ((i % 2) && i !== args.length - 1 && (args[i] === caseKey || (Array.isArray(args[i]) && args[i].indexOf(caseKey) !== -1))) {
+        return args[i + 1] === undefined ? null : args[i + 1]
+      }
+    }
+    return args.length > 3 && !(args.length % 2) ? args[args.length - 1] : null
+  },
+  /**
+   * 构建树型数据
+   * @param {*} params
+   */
+  _buildTree: function (params) {
+    if (!params.treeArray) {
+      params.treeArray = []
+    }
+    if (params.element === null) {
+      params.elementArray.forEach(function (item, index, array) {
+        if (item[params.parentKey] === params.rootParentValue) {
+          params.treeArray[params.treeArray.length] = item
+        } else {
+          $nt._buildTree({
+            element: item,
+            elementArray: params.elementArray,
+            treeArray: params.treeArray,
+            elementKey: params.elementKey,
+            parentKey: params.parentKey,
+            childKey: params.childKey,
+            rootParentValue: params.rootParentValue
+          })
+        }
+      })
+    } else {
+      params.elementArray.forEach(function (item, index, array) {
+        if (params.element[params.parentKey] === item[params.elementKey]) {
+          item[params.childKey] = item[params.childKey] || []
+          item[params.childKey][item[params.childKey].length] = params.element
+          // params.element.parentElement = item
+        }
+      })
+    }
+  },
+  /**
+   * 验证手机号码
+   * @param {*} mobile
+   */
+  _validateMobile: function (mobile) {
+    return /^[1][3,4,5,7,8][0-9]{9}$/.test(mobile)
+  },
+  /**
+   * 数值型验证
+   * @param {*} val
+   */
+  _validateNumber: function (val) {
+    return /^\d+(\.\d+)?$/.test(val)
+  },
+  /**
+   * 系统对象功能扩展
+   */
+  _extend: function () {
+    /**
+     * 字符串清除左右空格扩展
+     * 示例:
+     * let str = ' this is string '
+     * let trimStr = str._trim()
+     */
+    String.prototype._trim = function () {
+      return this.replace(/(^\s*)|(\s*$)/g, '')
+    }
+    /**
+     * 字符串替换所有
+     * 示例:
+     * let str = ' this is string '
+     * let replaceStr = str.replaceAll('i','')
+     */
+    String.prototype.replaceAll = function (s1, s2) {
+      return this.replace(new RegExp(s1, 'gm'), s2)
+    }
+    /**
+     * 字符串包含检查
+     * @param {*} str
+     */
+    String.prototype._contains = function (str) {
+      return this.indexOf(str) !== -1
+    }
+    /**
+     * 字符串转byte数组
+     */
+    String.prototype._toByte = function () {
+      let bytes = []
+      let len
+      let c
+      len = this.length
+      for (let i = 0; i < len; i++) {
+        c = this.charCodeAt(i)
+        if (c >= 0x010000 && c <= 0x10FFFF) {
+          bytes.push(((c >> 18) & 0x07) | 0xF0)
+          bytes.push(((c >> 12) & 0x3F) | 0x80)
+          bytes.push(((c >> 6) & 0x3F) | 0x80)
+          bytes.push((c & 0x3F) | 0x80)
+        } else if (c >= 0x000800 && c <= 0x00FFFF) {
+          bytes.push(((c >> 12) & 0x0F) | 0xE0)
+          bytes.push(((c >> 6) & 0x3F) | 0x80)
+          bytes.push((c & 0x3F) | 0x80)
+        } else if (c >= 0x000080 && c <= 0x0007FF) {
+          bytes.push(((c >> 6) & 0x1F) | 0xC0)
+          bytes.push((c & 0x3F) | 0x80)
+        } else {
+          bytes.push(c & 0xFF)
+        }
+      }
+      return bytes
+    }
+    /**
+     * byte数组转换字符串
+     * @param {*} bytes
+     */
+    String._fromByte = function (bytes) {
+      if (!Array.isArray(bytes)) return null
+      let str = ''
+      let _arr = bytes
+      for (let i = 0; i < _arr.length; i++) {
+        let one = _arr[i].toString(2)
+        let v = one.match(/^1+?(?=0)/)
+        if (v && one.length === 8) {
+          let bytesLength = v[0].length
+          let store = _arr[i].toString(2).slice(7 - bytesLength)
+          for (let st = 1; st < bytesLength; st++) {
+            store += _arr[st + i].toString(2).slice(2)
+          }
+          str += String.fromCharCode(parseInt(store, 2))
+          i += bytesLength - 1
+        } else {
+          str += String.fromCharCode(_arr[i])
+        }
+      }
+      return str
+    }
+    /**
+     * Number对象扩展数值格式化
+     * @param {*} params 参数对象
+     *
+     * 参数对象说明:
+     * params.mode      舍入模式:0:Math.round  1:Math.ceil  -1:Math.floor
+     * params.thousands 是否显示千分位
+     * params.precision 保留小数位数
+     * 示例:
+     * Number(12806.123)._format()                                              返回:12806
+     * Number(12806.123)._format({mode: 0, thousands: true, precision: 2})      返回:12,806.12
+     * Number(12806.123)._format({mode: 1, precision: 2})                       返回:12806.13
+     * Number(12806.126)._format({mode: -1, thousands: false, precision: 2})    返回:12806.12
+     */
+    Number.prototype._format = function (params) {
+      return $nt._numberFormat(this, params)
+    }
+    /**
+   * 数值舍入处理(可指定小数位数和舍入模式)
+   * @param {*} precision 小数保留位数
+   * @param {*} mode      舍入模式:0:Math.round  1:Math.ceil  -1:Math.floor
+   */
+    Number.prototype._toFixed = function (precision, mode) {
+      return $nt._toFixed(this, precision, mode)
+    }
+    /**
+     * 日期格式化
+     * @param {*} fmt 日期格式
+     */
+    Date.prototype._format = function (fmt) {
+      if (fmt) {
+        fmt = fmt.replace('H', 'h').replace('H', 'h')
+      }
+      let o = {
+        'M+': this.getMonth() + 1, // 月份
+        'd+': this.getDate(), // 日
+        'h+': this.getHours(), // 小时
+        'm+': this.getMinutes(), // 分
+        's+': this.getSeconds(), // 秒
+        'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
+        'S': this.getMilliseconds() // 毫秒
+      }
+      if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
+      for (let k in o) {
+        if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
+      }
+      return fmt
+    }
+    /**
+     * 日期计算
+     * @param {*} interval
+     * @param {*} number
+     */
+    Date.prototype._add = function (interval, number) {
+      // let cloneDate = JSON.parse(JSON.stringify({date : this}))
+      // let d = new Date(cloneDate.date)
+      let d = new Date(this)
+      let k = {
+        'y': 'FullYear',
+        'q': 'Month',
+        'm': 'Month',
+        'w': 'Date',
+        'd': 'Date',
+        'h': 'Hours',
+        'n': 'Minutes',
+        's': 'Seconds',
+        'ms': 'MilliSeconds'
+      }
+      let n = {
+        'q': 3,
+        'w': 7
+      }
+      interval = (interval || '').toLowerCase()
+      d['set' + k[interval]](d['get' + k[interval]]() + ((n[interval] || 1) * number))
+      return d
+    }
+    /**
+     * 日期差异
+     * @param {*} interval
+     * @param {*} objDate2
+     */
+    Date.prototype._diff = function (interval, diffDate) {
+      let d = this
+      let i = {}
+      let t = d.getTime()
+      let t2 = diffDate.getTime()
+      i['y'] = diffDate.getFullYear() - d.getFullYear()
+      i['q'] = i['y'] * 4 + Math.floor(diffDate.getMonth() / 4) - Math.floor(d.getMonth() / 4)
+      i['m'] = i['y'] * 12 + diffDate.getMonth() - d.getMonth()
+      i['ms'] = diffDate.getTime() - d.getTime()
+      i['w'] = Math.floor((t2 + 345600000) / (604800000)) - Math.floor((t + 345600000) / (604800000))
+      i['d'] = Math.floor(t2 / 86400000) - Math.floor(t / 86400000)
+      i['h'] = Math.floor(t2 / 3600000) - Math.floor(t / 3600000)
+      i['n'] = Math.floor(t2 / 60000) - Math.floor(t / 60000)
+      i['s'] = Math.floor(t2 / 1000) - Math.floor(t / 1000)
+      return i[interval]
+    }
+    /**
+     * 数组为空校验
+     * @param {*} array
+     */
+    Array._isEmpty = function (array) {
+      return !array || !array.length
+    }
+    /**
+     * 数组不为空校验
+     * @param {*} array
+     */
+    Array._isNotEmpty = function (array) {
+      return array && array.length
+    }
+    /**
+     * 数组对象扩展-为空校验
+     */
+    Array.prototype._isEmpty = function () {
+      return Array._isEmpty(this)
+    }
+    /**
+     * 数组对象扩展-不为空校验
+     */
+    Array.prototype._isNotEmpty = function () {
+      return Array._isNotEmpty(this)
+    }
+    /**
+     * 数组是否包含元素
+     * @param {*} array
+     * @param {*} element
+     */
+    Array._contains = function (array, element) {
+      return !array && array.indexOf(element) !== -1
+    }
+    /**
+     * 数组对象扩展-是否包含元素
+     * @param {*} element
+     */
+    Array.prototype._contains = function (element) {
+      return this.indexOf(element) !== -1
+    }
+    /**
+     * 数组对象扩展-添加元素(可指定位置)
+     * @param {*} item  元素
+     * @param {*} index 添加位置(可选,为空时添加到数组末尾)
+     */
+    Array.prototype._add = function (item, index) {
+      if ($nt._isNotNull(index)) {
+        this.splice(index, 0, item)
+      } else {
+        this.push(item)
+      }
+    }
+    /**
+     * 数组对象扩展-批量添加元素(可指定位置)
+     * @param {*} items  元素数组
+     * @param {*} index 添加位置(可选,为空时添加到数组末尾)
+     */
+    Array.prototype._addAll = function (items, index) {
+      this.splice($nt._ifNull(index, this.length), 0, ...items)
+    }
+    /**
+     * 数组对象扩展-添加元素到数据第一个位置
+     * @param {*} item 元素
+     */
+    Array.prototype._addFirst = function (item) {
+      this._add(item, 0)
+    }
+    /**
+     * 数组对象扩展-获取数组第一个元素
+     */
+    Array.prototype._first = function () {
+      return this[0]
+    }
+    /**
+     * 数组对象扩展-获取数组最后一个元素
+     */
+    Array.prototype._last = function () {
+      return this[this.length - 1]
+    }
+    /**
+     * 数组对象扩展-汇总数组元素(数值型有效)
+     * @param {*} beginIndex    开始位置
+     * @param {*} endIndex      结束位置
+     */
+    Array.prototype._sum = function (beginIndex, endIndex) {
+      let total = 0
+      beginIndex = $nt._isNull(beginIndex) ? 0 : beginIndex
+      endIndex = $nt._isNull(endIndex) ? this.length : endIndex
+      for (let i = 0; i < this.length; i++) {
+        if (i >= beginIndex && i < endIndex) {
+          total += Number(this[i] || 0)
+        }
+      }
+      return total
+    }
+    /**
+     * 数组对象扩展-汇总数组元素对象指定属性(数值型有效)
+     * @param {*} attribute     属性
+     * @param {*} beginIndex    开始位置
+     * @param {*} endIndex      结束位置
+     */
+    Array.prototype._sumAttr = Array.prototype._sumObjectAttr = function (attribute, beginIndex, endIndex) {
+      let total = 0
+      beginIndex = $nt._isNull(beginIndex) ? 0 : beginIndex
+      endIndex = $nt._isNull(endIndex) ? this.length : endIndex
+      for (let i = 0; i < this.length; i++) {
+        if (i >= beginIndex && i < endIndex) {
+          total += Number(this[i][attribute] || 0)
+        }
+      }
+      return total
+    }
+    /**
+     * 数组对象扩展-移除元素
+     * @param {*} element
+     */
+    // Array.prototype._remove = function (element) {
+    //   this.splice(this.findIndex(item => item === element), 1)
+    //   return this
+    // }
+    Object.defineProperty(Array.prototype, '_remove', {
+      value: function (element) {
+        return this.splice(this.findIndex(item => item === element), 1)
+      }
+    })
+    /**
+     * 数组对象扩展-批量获取属性值
+     * 示例:
+     * let jsonArray = [{a:1,b:1},{a:2,b:2},{a:3,b:3},{a:4,b:4},{a:5,b:5}]
+     * let valueArray = jsonArray._getObjectAttr('a') 或 _getObjectAttr('a')
+     * let valueArray = jsonArray._getObjectAttr('a', 1, 3) 或 _getObjectAttr('a', 1, 3)
+     * @param {*} attribute
+     * @param {*} beginIndex
+     * @param {*} endIndex
+     */
+    Array.prototype._getAttr = Array.prototype._getObjectAttr = Array.prototype._getObjectAttribute = function (attribute, beginIndex, endIndex) {
+      let valArray = []
+      beginIndex = $nt._isNull(beginIndex) ? 0 : beginIndex
+      endIndex = $nt._isNull(endIndex) ? this.length : endIndex
+      for (let i = 0; i < this.length; i++) {
+        if (i >= beginIndex && i < endIndex) {
+          let val = (typeof this[i][attribute] === 'object' && !(this[i][attribute] instanceof Date) ? $nt._copy(this[i][attribute]) : this[i][attribute]) || null
+          valArray.push(val)
+        }
+      }
+      return valArray
+    }
+    /**
+     * 数组对象扩展-批量设置属性值
+     * 示例:
+     * let jsonArray = [{a:1,b:1},{a:2,b:2},{a:3,b:3},{a:4,b:4},{a:5,b:5}]
+     * jsonArray._setObjectAttr('c', '10') 或 _setObjectAttribute('c', '10')
+     * jsonArray._setObjectAttr('c', '10', 1, 3) 或 _setObjectAttribute('c', '10', 1, 3)
+     * @param {*} attribute     属性
+     * @param {*} beginIndex    开始位置
+     * @param {*} endIndex      结束位置
+     */
+    Array.prototype._setObjectAttr = Array.prototype._setObjectAttribute = function (attribute, value, beginIndex, endIndex) {
+      beginIndex = $nt._isNull(beginIndex) ? 0 : beginIndex
+      endIndex = $nt._isNull(endIndex) ? this.length : endIndex
+      for (let i = 0; i < this.length; i++) {
+        if (i >= beginIndex && i < endIndex && typeof this[i] === 'object' && !(this[i] instanceof Date)) {
+          this[i][attribute] = value
+        }
+      }
+      return this
+    }
+    /**
+     * 数组对象扩展-批量设置对象本身属性到指定属性
+     * @param {*} sourceAttribute   源属性
+     * @param {*} targetAttribute   目标属性
+     * @param {*} beginIndex        开始位置
+     * @param {*} endIndex          结束位置
+     */
+    Array.prototype._setObjectAttrToAttr = Array.prototype._setObjectAttributeToAttribute = function (sourceAttribute, targetAttribute, beginIndex, endIndex) {
+      beginIndex = $nt._isNull(beginIndex) ? 0 : beginIndex
+      endIndex = $nt._isNull(endIndex) ? this.length : endIndex
+      for (let i = 0; i < this.length; i++) {
+        if (i >= beginIndex && i < endIndex && typeof this[i] === 'object' && !(this[i] instanceof Date)) {
+          this[i][targetAttribute] = this[i][sourceAttribute]
+        }
+      }
+      return this
+    }
+    /**
+     * JSON.__proto__._serializeArray 目前与VUE.JS不兼容,使用 JSON._serializeArray 代替
+     */
+    JSON._serializeArray = function (json) {
+      let _arr = []
+      let _toArray = function (json, jsonArray, prefix) {
+        for (let key in json) {
+          if (typeof json[key] === 'function') {
+            continue
+          }
+          let newKey = (prefix ? prefix + '.' : '') + key
+          if (typeof json[key] === 'object' && !(json[key] instanceof Array)) {
+            _toArray(json[key], jsonArray, newKey)
+          } else {
+            jsonArray[jsonArray.length] = {
+              name: newKey,
+              value: json[key]
+            }
+          }
+        }
+      }
+      _toArray(json, _arr)
+      return _arr
+    }
+    /**
+     * JSON.__proto__._propertyLength 目前与VUE.JS不兼容,使用 JSON._propertyLength 代替
+     */
+    JSON._propertyLength = function (json) {
+      let length = 0
+      let keys = []
+      for (let key in json) {
+        length++
+        keys.push(key)
+      }
+      return length
+    }
+    /**
+     * 清空JSON对象
+     * @param {*} json
+     */
+    JSON._clear = function (json) {
+      for (let key in json) {
+        delete json[key]
+      }
+    }
+    /**
+     * 移除JSON对象指定属性
+     * @param {*} json
+     * @param {*} key
+     */
+    JSON._removeKey = function (json, key) {
+      delete json[key]
+    }
+    /**
+     * 传入JSON数据对象,构建新JSON对象(attrs指定动态属性集)
+     * @param {*} json
+     * @param {*} attrs
+     */
+    JSON._new = function (json, ...attrs) {
+      let newJSON = {}
+      if (json && attrs && attrs.length) {
+        let tempJSON = $nt._copy(json)
+        for (let i = 0; i < attrs.length; i++) {
+          if (attrs[i]._contains('.')) {
+            let childAttrs = attrs[i].split('.')
+            let childJSON = newJSON[childAttrs[0]] = newJSON[childAttrs[0]] || {}
+            let tempChildJSON = tempJSON[childAttrs[0]] || {}
+            for (let ii = 1; ii < childAttrs.length; ii++) {
+              if (ii === childAttrs.length - 1) {
+                childJSON[childAttrs[ii]] =  $nt._isNotNull(tempChildJSON) ? tempChildJSON[childAttrs[ii]] : null
+              } else {
+                childJSON = childJSON[childAttrs[ii]] = childJSON[childAttrs[ii]] || {}
+                tempChildJSON = $nt._isNotNull(tempChildJSON) ? tempChildJSON[childAttrs[ii]] : null
+              }
+            }
+          } else {
+            newJSON[attrs[i]] = tempJSON[attrs[i]]
+          }
+        }
+      }
+      return newJSON
+    }
+    /**
+     * Storage 对象扩展
+     */
+    if (window && window.Storage) {
+      /**
+       * 扩展 Storage 增加setJSON方法
+       * @param {*} key
+       * @param {*} value
+       */
+      window.Storage.prototype.setJSON = function (key, value) {
+        this.setItem(key, $nt._isNotNull(value) ? JSON.stringify(value) : value)
+      }
+      /**
+       * 扩展 Storage 增加getJSON方法
+       * @param {Object} key
+       */
+      window.Storage.prototype.getJSON = function (key) {
+        let value = this.getItem(key)
+        return $nt._isNotNull(value) ? JSON.parse(value) : null
+      }
+    }
+  }
+}
+/**
+ * 执行系统对象功能扩展
+ */
+$nt._extend()
+
+if (typeof wx !== 'undefined' && !wx.miniProgram) {
+  // 小程序环境
+  wx.nothing = wx.$n = $nt
+} else {
+  window.nothing = window.$n = $nt
+  Object.assign(window, $nt)
+}
+
+export default $nt
diff --git a/util/request.js b/util/request.js
new file mode 100644
index 0000000..d276b06
--- /dev/null
+++ b/util/request.js
@@ -0,0 +1,62 @@
+const Fly = require("flyio/dist/npm/wx") 
+import Env from './Env'
+import $n from './nothing'
+import store from '../store'
+const request = new Fly
+/**
+ * 请求拦截
+ */
+request.interceptors.request.use((config, promise) => {
+   //超时设置
+   if (config._timeout) config.timeout = 60000;
+  //从环境变量中取 BASE_URL
+  if (process.env.NODE_ENV === 'development') config.baseURL = Env.getDevBaseURL()
+  else config.baseURL = Env.getBaseURL()
+  // JSON格式化,未指定时,默认true
+  //
+
+  config.parseJson = $n._isNotNull(config.parseJson) ? config.parseJson : true
+  // 如指定_token == true,则在headers中跟上相关token信息
+  // config.headers["mallTenant"] = Env.getMallTenant()
+  //uni.setStorageSync
+  
+  
+  if (config._token) config.headers['token'] =   uni.getStorageSync('token');		  //uni.get('token', result.token) //store.getters.appUser.token;
+  //console.warn('####### API Request: ', config)
+  return config
+})
+
+/**
+ * 响应拦截
+ */
+request.interceptors.response.use(
+  (response, promise) => {
+    let data = response.data || {status: false, errorMsg: '服务器未响应结果'}
+    //console.warn('####### API Response: ', data)
+    if (data.code == 401 || data.code == 403) {
+    	uni.showModal({
+    		title: '',
+    		content: '登录超时,请重新登录!',
+    		showCancel: false,
+    		success: (res) => {
+    			uni.navigateTo({ url: '/pages/login/login' })
+    		}
+    	})
+    } else return promise.resolve(data)
+  },
+  (error, promise) => {
+    //let errorMsg = $n._caseValue(error.code, 0, '网络连接异常', 1, '网络连接超时', 401, '请求服务未授权', error.message)
+    //console.error('####### API Response error: ', error)
+    if (error.status == 401) {
+			uni.showModal({
+				title: '',
+				content: '登录超时,请重新登录!',
+				showCancel: false,
+				success: (res) => {
+					uni.navigateTo({ url: '/pages/login/login' })
+				}
+			})
+		} else return promise.reject(message)
+    }
+)
+export default request
\ No newline at end of file
diff --git a/util/updata.js b/util/updata.js
new file mode 100644
index 0000000..6c6c5b5
--- /dev/null
+++ b/util/updata.js
@@ -0,0 +1,69 @@
+App({
+  onLaunch: function(options) {
+    this.autoUpdate()
+  },
+  autoUpdate: function() {
+    var self = this
+    // 获取小程序更新机制兼容
+    if (wx.canIUse('getUpdateManager')) {
+      const updateManager = wx.getUpdateManager()
+      //1. 检查小程序是否有新版本发布
+      updateManager.onCheckForUpdate(function(res) {
+        // 请求完新版本信息的回调
+        if (res.hasUpdate) {
+          //检测到新版本,需要更新,给出提示
+          wx.showModal({
+            title: '更新提示',
+            content: '检测到新版本,是否下载新版本并重启小程序?',
+            success: function(res) {
+              if (res.confirm) {
+                //2. 用户确定下载更新小程序,小程序下载及更新静默进行
+                self.downLoadAndUpdate(updateManager)
+              } else if (res.cancel) {
+                //用户点击取消按钮的处理,如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了
+                wx.showModal({
+                  title: '温馨提示~',
+                  content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~',
+                  showCancel:false,//隐藏取消按钮
+                  confirmText:"确定更新",//只保留确定更新按钮
+                  success: function(res) {
+                    if (res.confirm) {
+                      //下载新版本,并重新应用
+                      self.downLoadAndUpdate(updateManager)
+                    }
+                  }
+                })
+              }
+            }
+          })
+        }
+      })
+    } else {
+      // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
+      wx.showModal({
+        title: '提示',
+        content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
+      })
+    }
+  },
+  /**
+   * 下载小程序新版本并重启应用
+   */
+  downLoadAndUpdate: function (updateManager){
+    var self=this
+    wx.showLoading();
+    //静默下载更新小程序新版本
+    updateManager.onUpdateReady(function () {
+      wx.hideLoading()
+      //新的版本已经下载好,调用 applyUpdate 应用新版本并重启
+      updateManager.applyUpdate()
+    })
+    updateManager.onUpdateFailed(function () {
+      // 新的版本下载失败
+      wx.showModal({
+        title: '已经有新版本了哟~',
+        content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
+      })
+    })
+  }
+})
\ No newline at end of file