From 6087ba7d24f2353c2d01a5e5a384d5a20f97a19b Mon Sep 17 00:00:00 2001
From: qingyiay <2386314947@qq.com>
Date: 星期一, 15 五月 2023 08:10:53 +0800
Subject: [PATCH] 增加路线规划,样式修改

---
 pages/public-page/forward/forward.vue                                                         |  296 +++++-
 pages.json                                                                                    |   34 
 pages/public-page/faYunstatisticsDetails/faYunstatisticsDetails.vue                           |  120 +-
 pages/customer-page/customer-index/fayunPlanDetails/fayunPlanDetails.vue                      |   14 
 pages/tabbar-page/index-tabbar/index-tabbar.vue                                               |   32 
 pages/driver-page/driver-index/bill-of-lading-details/coal-pick-up-bill/coal-pick-up-bill.vue |   16 
 App.vue                                                                                       |   35 
 pages/driver-page/driver-index/driver-index.vue                                               |  163 ++-
 store/index.js                                                                                |    5 
 pages/driver-page/driver-index/bill-of-lading-details/weighingDevice/weighingDevice.vue       |   66 +
 /dev/null                                                                                     |   31 
 pages/public-page/mapRoute/mapRoute.vue                                                       |  223 +++++
 utils/qqmap-wx-jssdk.js                                                                       | 1122 ++++++++++++++++++++++++++++
 manifest.json                                                                                 |    2 
 static/image/banner/location.png                                                              |    0 
 static/image/banner/notice.png                                                                |    0 
 pages/public-page/message/message.vue                                                         |   21 
 pages/customer-page/customer-my/faYunstatistics/faYunstatistics.vue                           |  115 ++
 pages/driver-page/driver-index/bill-of-lading-details/bill-of-lading-details.vue              |   10 
 pages/customer-page/customer-index/fayunPlanDetails/fayunPlanMore/fayunPlanMore.vue           |   85 +
 20 files changed, 2,013 insertions(+), 377 deletions(-)

diff --git a/App.vue b/App.vue
index 681a4b3..697e173 100644
--- a/App.vue
+++ b/App.vue
@@ -1,19 +1,22 @@
 <script>
+import { mapState, mapMutations } from 'vuex';
 export default {
 	onShow() {},
-	methods: {}
-	// created() {
-	// 	uni.loadFontFace({
-	// 		family: 'siYuanLight', // 瀛椾綋鍚嶇О锛屽彲浠ヨ嚜瀹氫箟
-	// 		source: 'url("/utils/fonts/siyuan.OTF")', // 瀛椾綋鏂囦欢璺緞
-	// 		success() {
-	// 			console.log('瀛椾綋鍔犺浇鎴愬姛');
-	// 		},
-	// 		fail() {
-	// 			console.log('瀛椾綋鍔犺浇澶辫触');
-	// 		}
-	// 	});
-	// }
+	onHide() {
+		console.log('appvue闅愯棌鍚庡彴');
+		this.changeisconnect(false);
+		if (!this.globalisconnect) {
+			uni.switchTab({
+				url: '/pages/tabbar-page/index-tabbar/index-tabbar'
+			});
+		}
+	},
+	methods: {
+		...mapMutations(['changeisconnect'])
+	},
+	computed: {
+		...mapState(['globalisconnect'])
+	}
 };
 </script>
 
@@ -22,7 +25,7 @@
 @import '@/uni_modules/uview-ui/index.scss';
 @font-face {
 	font-family: siYuanLight;
-	src: url('https://mx.jzeg.cn:9095/appimg/fonts/siyuan.OTF');
+	src: url('https://mx.jzeg.cn:9095/appimg/fonts/siyuannormal.OTF');
 }
 @font-face {
 	font-family: weighting;
@@ -31,8 +34,4 @@
 body {
 	font-family: siYuanLight, sans-serif;
 }
-// @font-face {
-// 	font-family: 'weighting';
-// 	src: url('./utils/fonts/weighing.TTF');
-// }
 </style>
diff --git a/manifest.json b/manifest.json
index 9d4cb6c..47ae497 100644
--- a/manifest.json
+++ b/manifest.json
@@ -53,7 +53,7 @@
 		"appid": "wx4a62fc1684c429a9",
 		"permission": {
 			"scope.userFuzzyLocation": {
-				"desc": "浣犵殑浣嶇疆淇℃伅灏嗙敤浜庡皬绋嬪簭浣嶇疆鎺ュ彛鐨勬晥鏋滃睍绀�"
+				"desc": "浣犵殑浣嶇疆淇℃伅灏嗙敤浜庡皬绋嬪簭瀹氫綅"
 			}
 		},
 		"optimization": {
diff --git a/pages.json b/pages.json
index 417aa1a..a92a011 100644
--- a/pages.json
+++ b/pages.json
@@ -189,17 +189,15 @@
 				"enablePullDownRefresh": false
 			}
 
+		}, {
+			"path": "pages/customer-page/customer-my/userMange/userManageEdit/userManageEdit",
+			"style": {
+				"navigationBarTitleText": "",
+				"enablePullDownRefresh": false
+			}
+
 		}
-	    ,{
-            "path" : "pages/customer-page/customer-my/userMange/userManageEdit/userManageEdit",
-            "style" :                                                                                    
-            {
-                "navigationBarTitleText": "",
-                "enablePullDownRefresh": false
-            }
-            
-        }
-    ],
+	],
 	"subPackages": [{
 			"root": "pages/register",
 			"pages": [{
@@ -215,7 +213,8 @@
 				"path": "forward/forward",
 				"style": {
 					"navigationBarTitleText": "杞彂",
-					"enablePullDownRefresh": false
+					"enablePullDownRefresh": false,
+					"navigationStyle": "custom"
 				}
 			}, {
 				"path": "message/message",
@@ -234,11 +233,20 @@
 			}, {
 				"path": "faYunstatisticsDetails/faYunstatisticsDetails",
 				"style": {
-					"navigationBarTitleText": "",
+					"navigationBarTitleText": "鍙戣繍璇︽儏",
 					"enablePullDownRefresh": false
 				}
 
-			}]
+			}    ,{
+                    "path" : "mapRoute/mapRoute",
+                    "style" :                                                                                    
+                {
+                    "navigationBarTitleText": "",
+                    "enablePullDownRefresh": false
+                }
+                
+                }
+            ]
 		}, {
 			"root": "pages/driver-page/appointment",
 			"pages": [{
diff --git a/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanDetails.vue b/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanDetails.vue
index f3896fb..8ace7d0 100644
--- a/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanDetails.vue
+++ b/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanDetails.vue
@@ -7,7 +7,10 @@
 					<view class="top-title">鍙戣繍璁″垝璇︽儏</view>
 				</view>
 				<view class="middle-container">
-					<view class="dept-name" v-show="deptName">{{ deptName }}({{ coalName }})</view>
+					<view class="dept-name">
+						{{ deptName }}
+						<text v-show="deptName">({{ coalName }})</text>
+					</view>
 					<view class="dept-num">
 						<text
 							style="font-size: 46rpx;
@@ -54,7 +57,7 @@
 				</view>
 			</view>
 			<view class="block-top">
-				<combined-title title="鎻愮叅鍗曡鎯�"></combined-title>
+				<combined-title title="鎻愮叅鍗曞巻鍙�"></combined-title>
 				<view class="total">
 					鎬诲噣閲�
 					<text>{{ total || 0 }}</text>
@@ -64,7 +67,7 @@
 				<view class="empty-pointer" v-if="!yyDailyList">鏆傛棤鏇村鏁版嵁</view>
 				<view class="main-block">
 					<view class="main-container">
-						<view class="main-container_content" v-for="(item, index) in yyDailyList" :key="index" @click="showMore(index)">
+						<view class="main-container_content" v-for="(item, index) in yyDailyList" :key="index" @click="showMore(item)">
 							<view class="arrow-icon"><u-icon name="arrow-right" size="30" color="#999999"></u-icon></view>
 							<view class="divider"><u-divider></u-divider></view>
 							<view class="first-line">
@@ -127,9 +130,9 @@
 				delta: 1
 			});
 		},
-		showMore(index) {
+		showMore(item) {
 			uni.navigateTo({
-				url: `/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanMore/fayunPlanMore?orderPlanId=${this.orderPlanId}&index=${index}`
+				url: `/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanMore/fayunPlanMore?orderPlanId=${this.orderPlanId}&id=${item.id}`
 			});
 		},
 		init() {
@@ -214,6 +217,7 @@
 			position: relative;
 			top: vww(54);
 			.dept-name {
+				min-width: 100rpx;
 				font-size: 32rpx;
 				font-weight: normal;
 				color: #ffffff;
diff --git a/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanMore/fayunPlanMore.vue b/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanMore/fayunPlanMore.vue
index b4388cb..bd64aac 100644
--- a/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanMore/fayunPlanMore.vue
+++ b/pages/customer-page/customer-index/fayunPlanDetails/fayunPlanMore/fayunPlanMore.vue
@@ -23,25 +23,25 @@
 				<view class="body-container">
 					<view class="container-block">
 						<view class="">鐨噸</view>
-						<view class="">{{ yyDailyList.skin || '' }}</view>
+						<view class="">{{ yyDailyList.skin || 0 }}</view>
 					</view>
 				</view>
 				<view class="body-container">
 					<view class="container-block">
 						<view class="">姣涢噸</view>
-						<view class="">{{ yyDailyList.hair || '' }}</view>
+						<view class="">{{ yyDailyList.hair || 0 }}</view>
 					</view>
 				</view>
 				<view class="body-container">
 					<view class="container-block">
 						<view class="">鍑�閲�</view>
-						<view class="">{{ yyDailyList.clean || '' }}</view>
+						<view class="">{{ yyDailyList.clean || 0 }}</view>
 					</view>
 				</view>
 				<view class="body-container">
 					<view class="container-block">
 						<view class="">璁㈠崟鍓╀綑閲�</view>
-						<view class="">{{ yyDailyList.allowance || '' }}</view>
+						<view class="">{{ yyDailyList.allowance || 0 }}</view>
 					</view>
 				</view>
 				<view class="body-container">
@@ -57,6 +57,27 @@
 					</view>
 				</view>
 			</view>
+			<view class="origin-info" v-if="yyDailyList.orderType == '澶栬喘' || yyDailyList.orderType == '鍐呰喘' || yyDailyList.orderType == '杞嚭'">
+				<combined-title title="鍘熷彂淇℃伅"></combined-title>
+				<view class="body-container">
+					<view class="container-block">
+						<view class="">鐨噸</view>
+						<view class="">{{ yyDailyList.skinTwo || 0 }}</view>
+					</view>
+				</view>
+				<view class="body-container">
+					<view class="container-block">
+						<view class="">姣涢噸</view>
+						<view class="">{{ yyDailyList.hairTwo || 0 }}</view>
+					</view>
+				</view>
+				<view class="body-container">
+					<view class="container-block">
+						<view class="">鍑�閲�</view>
+						<view class="">{{ yyDailyList.cleanTwo || 0 }}</view>
+					</view>
+				</view>
+			</view>
 		</view>
 	</view>
 </template>
@@ -69,15 +90,14 @@
 		combinedTitle
 	},
 	onLoad(params) {
-		this.orderPlanId = params.orderPlanId;
-		this.index = params.index;
+		this.id = params.id;
 	},
 	onShow() {
 		this.GetOrderPlanDetail();
 	},
 	data() {
 		return {
-			orderPlanId: '',
+			id: '',
 			yyDailyList: {},
 			orderPlanDetail: {},
 			coalStatus: ['棰嗗彇', '棰勭害', '绛惧埌', '鍏ュ満', '绉扮毊', '绉版瘺', '绂诲満', '鍏ョ鎴�', '鍑虹鎴�', '鍏ョ叅浠�', '鍑虹叅浠�', '鏀剧┖', '浣滃簾', '鍏ュ満鐢宠', '杩涘叆鍦洪櫌'],
@@ -89,10 +109,10 @@
 			uni.showLoading({
 				title: '鍔犺浇涓�...'
 			});
-			this.$reqGet('xiangqingList', { orderPlanId: this.orderPlanId }).then(res => {
+			this.$reqGet('getTakeCoal', { takeCoalId: this.id }).then(res => {
 				if (res.code == 0) {
 					this.orderPlanDetail = res.data;
-					this.yyDailyList = res.data.yyDailyList.filter((v, i) => i == this.index)[0];
+					this.yyDailyList = res.data;
 					console.log(this.yyDailyList);
 					uni.hideLoading();
 				} else {
@@ -113,7 +133,9 @@
 .main {
 	width: 100%;
 	margin-top: vww(10);
-	@include flex justify-content: center;
+	color: #303030;
+	@include flex;
+	flex-direction: column;
 	.main-body {
 		width: 690rpx;
 		height: 1062rpx;
@@ -123,6 +145,7 @@
 		@include flex flex-direction: column;
 		align-items: flex-start;
 		.body-container {
+			color: #303030;
 			width: 100%;
 			height: vww(56);
 			border-bottom: vww(1) solid #d6d6d6;
@@ -138,27 +161,27 @@
 			border-bottom: none;
 		}
 	}
-}
-.uni-table {
-	.uni-table-tr {
-		padding: 0;
-		border: vww(1) solid #c6c6c6;
-		.uni-table-th {
-			font-size: vww(14);
-			height: vww(30);
-			line-height: vww(30);
-			padding: vww(5) vww(10);
-			color: #111111;
-			font-weight: 500;
-			background: #e2e2e2;
-		}
-		.uni-table-td {
-			font-size: vww(14);
-			font-weight: 400;
-			height: vww(30);
-			line-height: vww(30);
-			padding: vww(5) vww(10);
-			color: #111111;
+	.origin-info {
+		width: 690rpx;
+		min-height: 300rpx;
+		margin-top: 20rpx;
+		margin-bottom: 20rpx;
+		background: #ffffff;
+		box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12);
+		border-radius: 20rpx;
+		@include flex;
+		flex-direction: column;
+		align-items: flex-start;
+		.body-container {
+			width: 100%;
+			height: vww(56);
+			border-bottom: vww(1) solid #d6d6d6;
+			@include flex;
+			justify-content: center;
+			.container-block {
+				width: 94%;
+				@include flex;
+			}
 		}
 	}
 }
diff --git a/pages/customer-page/customer-my/faYunstatistics/faYunstatistics.vue b/pages/customer-page/customer-my/faYunstatistics/faYunstatistics.vue
index 786fab1..da4f78a 100644
--- a/pages/customer-page/customer-my/faYunstatistics/faYunstatistics.vue
+++ b/pages/customer-page/customer-my/faYunstatistics/faYunstatistics.vue
@@ -40,7 +40,19 @@
 						</view>
 						<view class="card-main" v-for="(value, i) in item.taskCoalList" :key="i" @click="faYunDetail(value.id)">
 							<view class="first-line">
-								<view class="dispatch-receive">
+								<view class="main-information">
+									<view class="sign">瑁�</view>
+									<view class="filedname">
+										<text v-if="value.orderType == '澶栭攢' || value.orderType == '鍐呴攢' || value.orderType == '杞嚭'">{{ value.deptName.slice(0, 16) }}</text>
+										<text v-else-if="value.orderType == '澶栬喘' || value.orderType == '鍐呰喘' || value.orderType == '杞叆'">
+											{{ value.customerName.slice(0, 16) }}
+										</text>
+										<text v-show="value.deptName.length >= 15 || value.customerName.length >= 15">...</text>
+									</view>
+								</view>
+								<view class="main-divider"></view>
+								<view class="point-number">{{ value.clean.toFixed(2) || 0 }}</view>
+								<!-- <view class="dispatch-receive">
 									<view v-if="value.orderType == '澶栭攢' || value.orderType == '鍐呴攢' || value.orderType == '杞嚭'" class="container">
 										<view class="dispatch">{{ value.deptName }}</view>
 										<view class="receive-icon"></view>
@@ -51,8 +63,22 @@
 										<view class="receive-icon"></view>
 										<view class="receive">{{ value.deptName }}</view>
 									</view>
+								</view> -->
+								<!-- <view class="point-number">{{ value.clean.toFixed(2) || 0 }}</view> -->
+							</view>
+							<view class="first-extra">
+								<view class="main-information">
+									<view class="sign">鍗�</view>
+									<view class="filedname">
+										<text v-if="value.orderType == '澶栭攢' || value.orderType == '鍐呴攢' || value.orderType == '杞嚭'">
+											{{ value.customerName.slice(0, 16) }}
+										</text>
+										<text v-else-if="value.orderType == '澶栬喘' || value.orderType == '鍐呰喘' || value.orderType == '杞叆'">
+											{{ value.deptName.slice(0, 16) }}
+										</text>
+										<text v-show="value.customerName.length >= 15 || value.deptName.length >= 15">...</text>
+									</view>
 								</view>
-								<view class="point-number">{{ value.clean.toFixed(2) || 0 }}</view>
 							</view>
 							<view class="second-line">
 								<view class="coal-name">
@@ -600,6 +626,13 @@
 	justify-content: space-between;
 	align-items: center;
 }
+@mixin firstLine {
+	width: 80%;
+	height: vww(68);
+	margin: vww(10) vww(16) 0 0;
+	display: flex;
+	justify-content: space-between;
+}
 ::v-deep .toggle-button .u-button {
 	width: vww(40);
 }
@@ -752,7 +785,7 @@
 				}
 				.card-main {
 					width: 100%;
-					height: vww(120);
+					height: vww(150);
 					border-bottom: vww(1) solid #d6d6d6;
 					margin-top: vww(12);
 					padding-bottom: vww(12);
@@ -760,45 +793,71 @@
 					@include flex flex-direction: column;
 					align-items: flex-start;
 					.first-line {
-						width: 94%;
+						width: 80%;
 						height: vww(32);
 						color: #303030;
 						display: flex;
 						justify-content: space-between;
 						align-items: center;
-						.dispatch-receive {
-							width: 90%;
+						.main-information {
+							width: 88%;
+							height: vww(28);
 							display: flex;
-							justify-content: space-between;
+							justify-content: flex-start;
 							align-items: center;
-							margin-right: vww(12);
-							.container {
-								width: 100%;
-								display: flex;
-								justify-content: space-between;
-								align-items: center;
+							.sign {
+								width: vww(28);
+								height: vww(28);
+								line-height: vww(28);
+								text-align: center;
+								background: url('https://mx.jzeg.cn:9095/appimg/image/banner/blueblock.png') no-repeat;
+								background-size: contain;
+								font-size: 30rpx;
+								font-weight: 400;
+								color: #ffffff;
+								margin-right: vww(20);
 							}
-							.receive-icon {
-								width: 62rpx;
-								height: 14rpx;
-								border-bottom: 3px solid #275fa5;
-								position: relative;
-								&:after {
-									content: '';
-									position: absolute;
-									width: 3px;
-									height: 10px;
-									background-color: #275fa5;
-									right: 0;
-									transform: rotate(-45deg);
-								}
-							}
+						}
+						.main-divider {
+							width: 548rpx;
+							height: 1rpx;
+							background: #e3e3e3;
+							position: absolute;
+							top: 80rpx;
+							left: vww(50);
 						}
 						.point-number {
 							width: 20%;
 							font-size: 40rpx;
 							font-weight: 400;
 							color: #f81414;
+							position: absolute;
+							right: -10rpx;
+							display: flex;
+							flex-wrap: wrap;
+						}
+					}
+					.first-extra {
+						@include firstLine;
+						height: vww(32);
+						.main-information {
+							width: 100%;
+							height: vww(28);
+							display: flex;
+							justify-content: flex-start;
+							align-items: center;
+							.sign {
+								width: vww(28);
+								height: vww(28);
+								line-height: vww(28);
+								text-align: center;
+								background: url('https://mx.jzeg.cn:9095/appimg/image/banner/redblock.png') no-repeat;
+								background-size: contain;
+								font-size: 30rpx;
+								font-weight: 400;
+								color: #ffffff;
+								margin-right: vww(20);
+							}
 						}
 					}
 					.second-line {
diff --git a/pages/driver-page/driver-index/bill-of-lading-details/bill-of-lading-details.vue b/pages/driver-page/driver-index/bill-of-lading-details/bill-of-lading-details.vue
index 5700c82..253db2c 100644
--- a/pages/driver-page/driver-index/bill-of-lading-details/bill-of-lading-details.vue
+++ b/pages/driver-page/driver-index/bill-of-lading-details/bill-of-lading-details.vue
@@ -19,7 +19,7 @@
 							style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/statusbutton.png') no-repeat;
 										background-size: cover;"
 						>
-							{{ coalStatus[coalDetailsData.status] }}
+							{{ coalStatus[coalDetailsData.status] || '' }}
 						</view>
 					</view>
 					<view class="time">
@@ -27,7 +27,7 @@
 						<view class="send-date">{{ coalDetailsData.sendDate }}</view>
 					</view>
 					<view class="coal-code">鎻愮叅鍗曠紪鍙�:&nbsp;&nbsp;{{ coalDetailsData.code || '' }}</view>
-					<view class="order-code">璁㈠崟缂栧彿:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ coalDetailsData.orderCode || '' }}</view>
+					<view class="order-code">璁㈠崟缂栧彿:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{ coalDetailsData.orderCode || '' }}</view>
 					<view class="weigh-item">
 						<view class="item">
 							<view class="concrete" style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/skin.png') no-repeat;background-size: cover;">鐨�</view>
@@ -58,7 +58,7 @@
 					<u-button text="鍏ュ満鐢宠" type="primary" plain @click="rcsqClick" shape="circle"></u-button>
 				</view>
 				<view class="bottom-button">
-					<u-button text="鏀剧┖" type="primary" plain @click="evacuation" throttleTime="500" shape="circle"></u-button>
+					<u-button text="鏀剧┖" type="primary" plain @click="evacuation" throttleTime="500" shape="circle" :disabled="!isEvacuation"></u-button>
 					<u-button text="鍛煎彨瀹㈡湇" type="primary" plain @click="callCustomerService" shape="circle"></u-button>
 				</view>
 			</view>
@@ -163,6 +163,10 @@
 			let date = time.getDate();
 			date = date < 10 ? '0' + date : date;
 			return `${year}-${month}-${date}`;
+		},
+		//
+		isEvacuation() {
+			return this.coalDetailsData.hair == 0 || this.coalDetailsData.skin == 0;
 		}
 	},
 	methods: {
diff --git a/pages/driver-page/driver-index/bill-of-lading-details/coal-pick-up-bill/coal-pick-up-bill.vue b/pages/driver-page/driver-index/bill-of-lading-details/coal-pick-up-bill/coal-pick-up-bill.vue
index e0b8b83..dc142ea 100644
--- a/pages/driver-page/driver-index/bill-of-lading-details/coal-pick-up-bill/coal-pick-up-bill.vue
+++ b/pages/driver-page/driver-index/bill-of-lading-details/coal-pick-up-bill/coal-pick-up-bill.vue
@@ -75,39 +75,43 @@
 			color: #896227;
 		}
 		&-coalTwo {
+			width: 84%;
 			margin-top: 20%;
+			margin: 20% auto 0;
 			font-size: vww(20);
 			font-weight: 700;
 			text-align: center;
 			color: #2e363f;
 			view:nth-child(2) {
 				margin-top: vww(15);
-				font-size: 40px;
+				font-size: 30px;
 			}
 			view:nth-child(3) {
 				margin-top: vww(15);
-				font-size: 40px;
+				font-size: 30px;
 			}
 			view:nth-child(4) {
 				margin-top: vww(15);
-				font-size: 40px;
+				font-size: 30px;
 			}
 		}
 		&-coalThree {
-			margin-top: vww(46);
+			margin-top: vww(15);
 			font-size: vww(18);
 			font-weight: 700;
 			text-align: center;
 			color: #2e363f;
 			view:nth-child(2) {
-				margin-top: vww(8);
+				margin-top: vww(15);
 			}
 		}
 		&-coalFour {
 			display: flex;
 			justify-content: center;
 			align-items: center;
-			margin-top: vww(78);
+			position: absolute;
+			bottom: 161rpx;
+			left: 42.5%;
 			image {
 				width: vww(52);
 				height: vww(52);
diff --git a/pages/driver-page/driver-index/bill-of-lading-details/weighingDevice/weighingDevice.vue b/pages/driver-page/driver-index/bill-of-lading-details/weighingDevice/weighingDevice.vue
index 0515852..138a077 100644
--- a/pages/driver-page/driver-index/bill-of-lading-details/weighingDevice/weighingDevice.vue
+++ b/pages/driver-page/driver-index/bill-of-lading-details/weighingDevice/weighingDevice.vue
@@ -39,21 +39,35 @@
 				<view class="first-line"><combined-title title="鍘熷彂淇℃伅"></combined-title></view>
 				<view class="second-line">
 					<view class="label-text" :class="{ focusClass: isfocus1 }">鐨噸</view>
-					<view class="input-container" :class="{ inputClass: isfocus1 }">
-						<u--input placeholder="璇疯緭鍏ョ毊閲�" border="surround" v-model="weighData.coalContactSkin" @focus="inputFocus(1)" @blur="inputBlur"></u--input>
+					<view class="input-container" :class="{ inputClass: isfocus1, disabledClass: isInputOrigin }">
+						<u--input
+							placeholder="璇疯緭鍏ョ毊閲�"
+							border="surround"
+							v-model="weighData.coalContactSkin"
+							@focus="inputFocus(1)"
+							@blur="inputBlur"
+							:disabled="isInputOrigin"
+						></u--input>
 					</view>
 					<view class="unit" :class="{ focusClass: isfocus1 }">鍚�</view>
 				</view>
 				<view class="second-line">
 					<view class="label-text" :class="{ focusClass: isfocus2 }">姣涢噸</view>
-					<view class="input-container" :class="{ inputClass: isfocus2 }">
-						<u--input placeholder="璇疯緭鍏ユ瘺閲�" border="surround" v-model="weighData.coalContactHair" @focus="inputFocus(2)" @blur="inputBlur"></u--input>
+					<view class="input-container" :class="{ inputClass: isfocus2, disabledClass: isInputOrigin }">
+						<u--input
+							placeholder="璇疯緭鍏ユ瘺閲�"
+							border="surround"
+							v-model="weighData.coalContactHair"
+							@focus="inputFocus(2)"
+							@blur="inputBlur"
+							:disabled="isInputOrigin"
+						></u--input>
 					</view>
 					<view class="unit" :class="{ focusClass: isfocus2 }">鍚�</view>
 				</view>
 				<view class="second-line">
 					<view class="label-text">鍑�閲�</view>
-					<view class="input-container"><u--input placeholder="璇疯緭鍏ュ噣閲�" border="surround" v-model="coalContactClean"></u--input></view>
+					<view class="input-container"><u--input placeholder="鍑�閲�" border="surround" v-model="coalContactClean" :disabled="isInputOrigin"></u--input></view>
 					<view class="unit">鍚�</view>
 				</view>
 			</view>
@@ -75,7 +89,7 @@
 				</view>
 			</view>
 		</view>
-		<view v-else style="width: 100%;height: vww(20);"></view>
+		<view v-else style="width: 100%;height: 40rpx;"></view>
 		<view class="bottom-block">
 			<view class="block-main">
 				<view class="main-information">
@@ -119,14 +133,14 @@
 			<u-button
 				type="primary"
 				text="纭畾绉伴噸"
-				:disabled="realTimeWeigh == 0 || globalinfraredStatus || isweigh"
+				:disabled="realTimeWeigh == 0 || globalinfraredStatus || isweigh || isInputOrigin"
 				:loading="isConfirmWeighLoading"
 				loadingText="纭"
 				@click="confirmWeigh"
 			></u-button>
-			<u-button type="primary" text="杩斿洖鍔犲噺鍚�" :disabled="addAndSubtractCoalDisabled" @click="addAndSubtractCoal" class="jiajian"></u-button>
+			<u-button type="primary" text="杩斿洖鍔犲噺鍚�" :disabled="addAndSubtractCoalDisabled" @click="addAndSubtractCoal" class="jiajian" v-if="outBuy"></u-button>
 		</view>
-		<view class="four" v-if="weighList.orderType !== '澶栬喘'">濡傛偍闇�瑕佽皟鏁磋杞借揣鍝佸惃鏁帮紝璇风偣鍑昏繑鍥炲姞鍑忓惃</view>
+		<!-- <view class="four" v-if="weighList.orderType !== '澶栬喘'">濡傛偍闇�瑕佽皟鏁磋杞借揣鍝佸惃鏁帮紝璇风偣鍑昏繑鍥炲姞鍑忓惃</view> -->
 		<!-- 鏀剧┖寮圭獥 -->
 		<view class="evacuationModal">
 			<u-modal
@@ -179,6 +193,8 @@
 				coalContactHair: 0,
 				coalContactSkin: 0
 			},
+			// 鏄惁濉啓鍘熷彂淇℃伅
+			isInputOrigin: false,
 			takeCoalId: null,
 			weighHouseCode: '',
 			isConfirmWeighLoading: false, //纭畾绉伴噸鎸夐挳
@@ -207,7 +223,9 @@
 			coalContactSkin: '',
 			// 鑱氱劍鏃舵敼鍙樻牱寮�
 			isfocus1: false,
-			isfocus2: false
+			isfocus2: false,
+			// 澶栬喘绗竴娆$О姣涢噸涓嶉渶瑕佸姞鍑忓惃
+			outBuy: true
 		};
 	},
 	watch: {
@@ -239,11 +257,11 @@
 		// 鐩戝惉閲嶉噺鍙樺寲
 		globalweigh: {
 			handler(v) {
-				// this.weighData.weigh = this.realTimeWeigh = v;
-				// console.log(this.realTimeWeigh, '鐪熷疄閲嶉噺鏀瑰彉浜�');
-				setTimeout(() => {
-					this.weighData.weigh = this.realTimeWeigh = v;
-				}, 0);
+				this.weighData.weigh = this.realTimeWeigh = v;
+				console.log(this.realTimeWeigh, '鐪熷疄閲嶉噺鏀瑰彉浜�');
+				// setTimeout(() => {
+				// 	this.weighData.weigh = this.realTimeWeigh = v;
+				// }, 0);
 			},
 			deep: true,
 			immediate: true
@@ -299,8 +317,16 @@
 					this.weighData.carNo = res.data.carNo;
 					this.weighData.tmCode = res.data.code;
 					this.weighData.filedId = res.data.filedId;
-					if (this.weighList.orderType == '澶栬喘' && this.weighList.hair == 0) {
+					this.weighData.coalContactHair = res.data.hairTwo ? res.data.hairTwo : 0;
+					this.weighData.coalContactSkin = res.data.skinTwo ? res.data.skinTwo : 0;
+					if (this.weighList.orderType == '澶栬喘') {
 						this.firstHairCustomernameShow = true;
+						if (this.weighList.hair == 0) {
+							this.outBuy = false;
+						}
+					}
+					if (this.weighData.coalContactHair > 0 && this.weighData.coalContactSkin > 0) {
+						this.isInputOrigin = true;
 					}
 				}
 			});
@@ -493,6 +519,9 @@
 					box-shadow: 0rpx 5rpx 13rpx 0rpx rgba(73, 95, 252, 0.6) !important;
 					border-radius: 12rpx !important;
 				}
+				.isInputOrigin {
+					background-color: #f4f4fc;
+				}
 				.input-container {
 					border: 2px solid #c5c5c5;
 					box-shadow: 0rpx 5rpx 13rpx 0rpx #c5c5c5;
@@ -593,8 +622,9 @@
 		}
 	}
 	.four {
-		margin: vww(10) auto;
-		flex: 0.5;
+		width: 100%;
+		margin-top: vww(5);
+		text-align: center;
 	}
 }
 .secondary-confirmation__main {
diff --git a/pages/driver-page/driver-index/driver-index.vue b/pages/driver-page/driver-index/driver-index.vue
index 498ea06..12a9ef6 100644
--- a/pages/driver-page/driver-index/driver-index.vue
+++ b/pages/driver-page/driver-index/driver-index.vue
@@ -2,41 +2,39 @@
 	<view class="">
 		<view class="driver-index">
 			<view class="driver-index-body">
-				<!-- <combined-title title="寰呴鍙�"></combined-title> -->
-				<!-- <u-empty
-					mode="data"
-					icon="http://cdn.uviewui.com/uview/empty/data.png"
-					textSize="30"
-					iconSize="1000"
-					v-if="driverBillOfLoadingData.list1 ? (driverBillOfLoadingData.list1.length == 0 ? true : false) : true"
-				></u-empty> -->
-
 				<!-- 寰呴鍙栨彁鐓ゅ崟 -->
 				<view class="wait-collection" style="background: url('https://mx.jzeg.cn:9095/appimg/image/banner/diverbanner.png') no-repeat;background-size:contain"></view>
 				<view class="collection-form">
 					<view class="collection-form-item" v-for="(item, index) in driverBillOfLoadingData.list1" :key="index">
 						<view class="first-line">
-							<view class="dispatch-receive">
-								<view v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'" class="container">
-									<view class="dispatch">{{ item.deptName || '' }}</view>
-									<view class="receive-icon"></view>
-									<view class="receive">{{ item.customerNameCopy || '' }}}</view>
-								</view>
-								<view v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'" class="container">
-									<view class="dispatch">{{ item.customerNameCopy || '' }}</view>
-									<view class="receive-icon"></view>
-									<view class="receive">{{ item.deptName || '' }}}</view>
+							<view class="main-information">
+								<view class="sign">瑁�</view>
+								<view class="filedname">
+									<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.deptName.slice(0, 16) }}</text>
+									<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">
+										{{ item.customerNameCopy.slice(0, 16) }}
+									</text>
+									<text v-show="item.deptName.length >= 15 || item.customerNameCopy.length >= 15">...</text>
 								</view>
 							</view>
+							<view class="main-divider"></view>
 							<view class="point-number">
 								<text class="residue">{{ item.carNum - item.taskNum }}</text>
 								<text>/{{ item.carNum }}</text>
 							</view>
 						</view>
+						<view class="first-extra">
+							<view class="main-information">
+								<view class="sign">鍗�</view>
+								<view class="filedname">
+									<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.customerNameCopy.slice(0, 16) }}</text>
+									<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">{{ item.deptName.slice(0, 16) }}</text>
+									<text v-show="item.customerNameCopy.length >= 15 || item.deptName.length >= 15">...</text>
+								</view>
+							</view>
+						</view>
 						<view class="second-line">
 							<view class="coal-name">{{ item.coalName }}</view>
-							<!-- <view class="black-block"><view class="black-bar"></view></view>
-							<view class="coal-type">{{ item.orderType }}</view> -->
 						</view>
 						<view class="third-line">
 							<view class="time-icon"><u-icon name="clock" color="#515151" size="40"></u-icon></view>
@@ -67,12 +65,15 @@
 								<view class="main-information">
 									<view class="sign">瑁�</view>
 									<view class="filedname">
-										<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.deptName }}</text>
-										<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">{{ item.customerName }}</text>
+										<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.deptName.slice(0, 16) }}</text>
+										<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">
+											{{ item.customerName.slice(0, 16) }}
+										</text>
+										<text v-show="item.deptName.length >= 15 || item.customerName.length >= 15">...</text>
 									</view>
 								</view>
 								<view class="main-divider"></view>
-								<view class="map-icon">
+								<view class="map-icon" @click.stop="skipMap(item)">
 									<view><u-icon name="map" color="#4978F0" size="40"></u-icon></view>
 								</view>
 							</view>
@@ -80,11 +81,12 @@
 								<view class="main-information">
 									<view class="sign">鍗�</view>
 									<view class="filedname">
-										<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.customerName }}</text>
-										<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">{{ item.deptName }}</text>
+										<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.customerName.slice(0, 16) }}</text>
+										<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">{{ item.deptName.slice(0, 16) }}</text>
+										<text v-show="item.deptName.length >= 15 || item.customerName.length >= 15">...</text>
 									</view>
 								</view>
-								<view class="map-icon">
+								<view class="map-icon" @click.stop="skipMap(item)">
 									<view><u-icon name="map" color="#4978F0" size="40"></u-icon></view>
 								</view>
 							</view>
@@ -119,12 +121,15 @@
 								<view class="main-information">
 									<view class="sign">瑁�</view>
 									<view class="filedname">
-										<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.deptName }}</text>
-										<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">{{ item.customerName }}</text>
+										<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.deptName.slice(0, 16) }}</text>
+										<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">
+											{{ item.customerName.slice(0, 16) }}
+										</text>
+										<text v-show="item.deptName.length >= 15 || item.customerName.length >= 15">...</text>
 									</view>
 								</view>
 								<view class="main-divider"></view>
-								<view class="map-icon">
+								<view class="map-icon" @click.stop="skipMap(item)">
 									<view><u-icon name="map" color="#4978F0" size="40"></u-icon></view>
 								</view>
 							</view>
@@ -132,11 +137,12 @@
 								<view class="main-information">
 									<view class="sign">鍗�</view>
 									<view class="filedname">
-										<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.customerName }}</text>
-										<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">{{ item.deptName }}</text>
+										<text v-if="item.orderType == '澶栭攢' || item.orderType == '鍐呴攢' || item.orderType == '杞嚭'">{{ item.customerName.slice(0, 16) }}</text>
+										<text v-else-if="item.orderType == '澶栬喘' || item.orderType == '鍐呰喘' || item.orderType == '杞叆'">{{ item.deptName.slice(0, 16) }}</text>
+										<text v-show="item.deptName.length >= 15 || item.customerName.length >= 15">...</text>
 									</view>
 								</view>
-								<view class="map-icon">
+								<view class="map-icon" @click.stop="skipMap(item)">
 									<view><u-icon name="map" color="#4978F0" size="40"></u-icon></view>
 								</view>
 							</view>
@@ -192,17 +198,21 @@
 			qiangDanOrderPlanId: null,
 			fleetId: '',
 			xsUserId: '',
-			customerId: '',
-			// 闆嗘垚楂樺痉鍦板浘
-			amapPlugin: null,
-			key: 'e3106700a6225e6a25727d3a41fa54c5',
-			addressName: ''
+			customerId: ''
 		};
 	},
 	onShow() {
 		this.init();
 	},
 	methods: {
+		// 璺宠浆鍦板浘
+		skipMap(val) {
+			uni.navigateTo({
+				url: `/pages/public-page/mapRoute/mapRoute?customerId=${val.customerId}&filedId=${val.filedId}&orderType=${val.orderType}${
+					val.toFiledId ? `&toFiledId=${val.toFiledId}` : ''
+				}`
+			});
+		},
 		init() {
 			this.qiangDanList();
 		},
@@ -362,7 +372,7 @@
 			top: vww(-120);
 			.collection-form-item {
 				width: vww(345);
-				height: vww(150);
+				height: vww(185);
 				margin-top: vww(5);
 				background: #ffffff;
 				box-shadow: 4rpx 6rpx 25rpx 0rpx rgba(73, 120, 240, 0.15);
@@ -377,38 +387,39 @@
 					margin: vww(18) vww(16) 0 vww(16);
 					display: flex;
 					justify-content: space-between;
-					.dispatch-receive {
-						width: 70%;
+					.main-information {
+						width: 88%;
+						height: vww(28);
 						display: flex;
-						justify-content: space-between;
+						justify-content: flex-start;
 						align-items: center;
-						.container {
-							width: 100%;
-							display: flex;
-							justify-content: space-between;
-							align-items: center;
-						}
-						.receive-icon {
-							width: 62rpx;
-							height: 14rpx;
-							border-bottom: 3px solid #275fa5;
-							position: relative;
-							&:after {
-								content: '';
-								position: absolute;
-								width: 3px;
-								height: 10px;
-								background-color: #275fa5;
-								right: 0;
-								transform: rotate(-45deg);
-							}
+						.sign {
+							width: vww(28);
+							height: vww(28);
+							line-height: vww(28);
+							text-align: center;
+							background: url('https://mx.jzeg.cn:9095/appimg/image/banner/blueblock.png') no-repeat;
+							background-size: contain;
+							font-size: 30rpx;
+							font-weight: 400;
+							color: #ffffff;
+							margin-right: vww(20);
 						}
 					}
+					.main-divider {
+						width: 548rpx;
+						height: 1rpx;
+						background: #e3e3e3;
+						position: absolute;
+						top: 115rpx;
+						left: vww(50);
+					}
 					.point-number {
+						position: absolute;
+						right: 0;
 						width: 15%;
 						text {
 							font-size: 24rpx;
-
 							font-weight: 400;
 							color: #c78a64;
 						}
@@ -416,6 +427,28 @@
 							font-size: 40rpx;
 							font-weight: 400;
 							color: #f81414;
+						}
+					}
+				}
+				.first-extra {
+					@include firstLine;
+					.main-information {
+						width: 100%;
+						height: vww(28);
+						display: flex;
+						justify-content: flex-start;
+						align-items: center;
+						.sign {
+							width: vww(28);
+							height: vww(28);
+							line-height: vww(28);
+							text-align: center;
+							background: url('https://mx.jzeg.cn:9095/appimg/image/banner/redblock.png') no-repeat;
+							background-size: contain;
+							font-size: 30rpx;
+							font-weight: 400;
+							color: #ffffff;
+							margin-right: vww(20);
 						}
 					}
 				}
@@ -441,7 +474,6 @@
 						min-width: vww(50);
 						height: 30rpx;
 						font-size: 30rpx;
-
 						font-weight: 300;
 						color: #515151;
 						position: relative;
@@ -549,7 +581,8 @@
 					}
 				}
 				.second-line {
-					@include firstLine margin: 0;
+					@include firstLine;
+					margin: 0;
 					margin-left: vww(16);
 					.main-information {
 						width: 100%;
diff --git a/pages/public-page/faYunstatisticsDetails/faYunstatisticsDetails.vue b/pages/public-page/faYunstatisticsDetails/faYunstatisticsDetails.vue
index a1e3497..2f19646 100644
--- a/pages/public-page/faYunstatisticsDetails/faYunstatisticsDetails.vue
+++ b/pages/public-page/faYunstatisticsDetails/faYunstatisticsDetails.vue
@@ -57,59 +57,37 @@
 					</view>
 				</view>
 			</view>
+			<view class="origin-info" v-if="faYunDetailobj.orderType == '澶栬喘' || faYunDetailobj.orderType == '鍐呰喘' || faYunDetailobj.orderType == '杞嚭'">
+				<combined-title title="鍘熷彂淇℃伅"></combined-title>
+				<view class="body-container">
+					<view class="container-block">
+						<view class="">鐨噸</view>
+						<view class="">{{ faYunDetailobj.skinTwo || 0 }}</view>
+					</view>
+				</view>
+				<view class="body-container">
+					<view class="container-block">
+						<view class="">姣涢噸</view>
+						<view class="">{{ faYunDetailobj.hairTwo || 0 }}</view>
+					</view>
+				</view>
+				<view class="body-container">
+					<view class="container-block">
+						<view class="">鍑�閲�</view>
+						<view class="">{{ faYunDetailobj.cleanTwo || 0 }}</view>
+					</view>
+				</view>
+			</view>
 		</view>
 	</view>
-	<!-- <view>
-		<combined-title title="鍙戣繍璇︽儏"></combined-title>
-		<view class="compDetails">
-			<uni-table border stripe emptyText="鏆傛棤鏇村鏁版嵁">
-				<uni-tr>
-					<uni-th align="left">鎻愮叅鍗曠紪鍙�</uni-th>
-					<uni-td align="left">{{ faYunDetailobj.code || '' }}</uni-td>
-				</uni-tr>
-				<uni-tr>
-					<uni-th align="left">鎻愮叅鍗曠姸鎬�</uni-th>
-					<uni-td align="left">{{ coalStatus[faYunDetailobj.status] }}</uni-td>
-				</uni-tr>
-				<uni-tr>
-					<uni-th align="left">杞︾墝鍙�</uni-th>
-					<uni-td align="left">{{ faYunDetailobj.carNo || '' }}</uni-td>
-				</uni-tr>
-				<uni-tr>
-					<uni-th align="left">鍏ュ満鏃堕棿</uni-th>
-					<uni-td align="left">{{ faYunDetailobj.inTime || '' }}</uni-td>
-				</uni-tr>
-				<uni-tr>
-					<uni-th align="left">鍑哄満鏃堕棿</uni-th>
-					<uni-td align="left">{{ faYunDetailobj.outTime || '' }}</uni-td>
-				</uni-tr>
-				<uni-tr>
-					<uni-th align="left">鐨噸</uni-th>
-					<uni-td align="left">{{ faYunDetailobj.skin || 0 }}</uni-td>
-				</uni-tr>
-				<uni-tr>
-					<uni-th align="left">姣涢噸</uni-th>
-					<uni-td align="left">{{ faYunDetailobj.hair || 0 }}</uni-td>
-				</uni-tr>
-				<uni-tr>
-					<uni-th align="left">鍑�閲�</uni-th>
-					<uni-td align="left">{{ faYunDetailobj.clean || 0 }}</uni-td>
-				</uni-tr>
-				<uni-tr>
-					<uni-th align="left">璁㈠崟缂栧彿</uni-th>
-					<uni-td align="left">{{ faYunDetailobj.orderCode || '' }}</uni-td>
-				</uni-tr>
-				<uni-tr>
-					<uni-th align="left">璁㈠崟鍓╀綑閲�</uni-th>
-					<uni-td align="left">{{ faYunDetailobj.allowance || 0 }}</uni-td>
-				</uni-tr>
-			</uni-table>
-		</view>
-	</view> -->
 </template>
 
 <script>
+import combinedTitle from '@/components/combined-title/combined-title.vue';
 export default {
+	components: {
+		combinedTitle
+	},
 	data() {
 		return {
 			id: '',
@@ -142,14 +120,16 @@
 .main {
 	width: 100%;
 	margin-top: vww(10);
-	@include flex justify-content: center;
+	@include flex;
+	flex-direction: column;
 	.main-body {
 		width: 690rpx;
 		height: 1062rpx;
 		background: #ffffff;
 		box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12);
 		border-radius: 20rpx;
-		@include flex flex-direction: column;
+		@include flex;
+		flex-direction: column;
 		align-items: flex-start;
 		.body-container {
 			width: 100%;
@@ -167,27 +147,27 @@
 			border-bottom: none;
 		}
 	}
-}
-.uni-table {
-	.uni-table-tr {
-		padding: 0;
-		border: vww(1) solid #c6c6c6;
-		.uni-table-th {
-			font-size: vww(14);
-			height: vww(30);
-			line-height: vww(30);
-			padding: vww(5) vww(10);
-			color: #111111;
-			font-weight: 500;
-			background: #e2e2e2;
-		}
-		.uni-table-td {
-			font-size: vww(14);
-			font-weight: 400;
-			height: vww(30);
-			line-height: vww(30);
-			padding: vww(5) vww(10);
-			color: #111111;
+	.origin-info {
+		width: 690rpx;
+		min-height: 300rpx;
+		margin-top: 20rpx;
+		margin-bottom: 20rpx;
+		background: #ffffff;
+		box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12);
+		border-radius: 20rpx;
+		@include flex;
+		flex-direction: column;
+		align-items: flex-start;
+		.body-container {
+			width: 100%;
+			height: vww(56);
+			border-bottom: vww(1) solid #d6d6d6;
+			@include flex;
+			justify-content: center;
+			.container-block {
+				width: 94%;
+				@include flex;
+			}
 		}
 	}
 }
diff --git a/pages/public-page/forward/forward.vue b/pages/public-page/forward/forward.vue
index 40d8611..e3a5c3e 100644
--- a/pages/public-page/forward/forward.vue
+++ b/pages/public-page/forward/forward.vue
@@ -1,37 +1,59 @@
 <template>
 	<!-- 杞彂 -->
 	<view class="forward">
-		<view v-if="roleType == 1"><u-notice-bar :text="text" :fontSize="30" mode="link"></u-notice-bar></view>
-		<view v-else-if="roleType == 2"><u-notice-bar :text="text1" :fontSize="30" mode="link"></u-notice-bar></view>
-		<view class="forward-card" v-for="(val, index) in jhOrderPlanForwardList" :key="index">
-			<u--form labelPosition="top" :model="forwardForm" ref="form1">
-				<u-form-item label="杞彂瀵硅薄" labelWidth="20%" ref="item1" @click="forwardObjectClick(index)">
-					<u--input v-model="val.name" placeholder="鐐瑰嚮閫夋嫨杞彂瀵硅薄" :readonly="true"></u--input>
-				</u-form-item>
-				<u-form-item label="杈撳叆鏁伴噺" labelWidth="20%" ref="item1">
-					<view class="forward-card-amount">
-						<view class="forward-card-amount-input">
-							<u--input
-								v-model="val.carNum"
-								placeholder="璇疯緭鍏ヨ浆鍙戞暟閲�"
-								@input="debouncecarNumInput(index, val.carNum)"
-								@blur="blurInput(index, val.carNum)"
-							></u--input>
-						</view>
-						<u-checkbox-group v-model="val.checkboxValue1" placement="column" @change="v => checkboxChange(v, index, val)">
-							<u-checkbox :customStyle="{ marginBottom: '8px' }" size="30" labelSize="30" label="鍏ㄩ儴杞彂" name="鍏ㄩ儴杞彂" :disabled="val.ischecked"></u-checkbox>
-						</u-checkbox-group>
-					</view>
-				</u-form-item>
-				<u-form-item><u-button text="鍒犻櫎鏈粍" :hairline="false" type="error" @click="deleteGroup(index, val)"></u-button></u-form-item>
-			</u--form>
+		<view class="forward-banner">
+			<view class="banner-block">
+				<view class="arrow-left" @click="back"><u-icon name="arrow-left" size="40" color="#ffffff"></u-icon></view>
+				<view class="forward-text">杞彂</view>
+			</view>
+		</view>
+		<view v-if="roleType == 1" class="notice-bar">
+			<u-notice-bar :text="text" :fontSize="30"></u-notice-bar>
+			<view class="notice-icon" style="background: url('../../../static/image/banner/notice.png') no-repeat;background-size: cover; width: 42rpx;height: 42rpx;"></view>
+		</view>
+		<view v-else-if="roleType == 2" class="notice-bar"><u-notice-bar :text="text1" :fontSize="30"></u-notice-bar></view>
+		<view class="card-main">
+			<view class="card-block">
+				<view class="forward-card" v-for="(val, index) in jhOrderPlanForwardList" :key="index">
+					<u-swipe-action>
+						<u-swipe-action-item :options="options1" @click="deleteGroup(index, val)">
+							<view class="card-content">
+								<u--form labelPosition="left" :model="forwardForm" ref="form1">
+									<u-form-item label="杞彂瀵硅薄" labelWidth="21%" ref="item1" @click="forwardObjectClick(index)">
+										<u--input v-model="val.name" placeholder="鐐瑰嚮閫夋嫨杞彂瀵硅薄" :readonly="true" border="bottom"></u--input>
+									</u-form-item>
+									<u-form-item label="杈撳叆鏁伴噺" ref="item2" labelWidth="21%">
+										<view class="forward-card-amount">
+											<view class="forward-card-amount-input">
+												<u--input
+													v-model="val.carNum"
+													placeholder="璇疯緭鍏ヨ浆鍙戞暟閲�"
+													@input="debouncecarNumInput(index, val.carNum)"
+													@blur="blurInput(index, val.carNum)"
+													border="bottom"
+												></u--input>
+											</view>
+											<u-checkbox-group v-model="val.checkboxValue1" placement="column" @change="v => checkboxChange(v, index, val)">
+												<u-checkbox size="30" shape="circle" labelSize="30" label="鍏ㄩ儴杞彂" name="鍏ㄩ儴杞彂" :disabled="val.ischecked"></u-checkbox>
+											</u-checkbox-group>
+										</view>
+									</u-form-item>
+									<!-- <u-form-item><u-button text="鍒犻櫎鏈粍" :hairline="false" type="error" @click="deleteGroup(index, val)"></u-button></u-form-item> -->
+								</u--form>
+							</view>
+						</u-swipe-action-item>
+					</u-swipe-action>
+				</view>
+			</view>
+		</view>
+
+		<view class="utils-buttonGroup">
+			<!-- 娣诲姞鎸夐挳 -->
+			<view class="AdddBtn"><u-button text="娣诲姞" :hairline="false" @click.stop="addForm" :disabled="whetherClick"></u-button></view>
+			<!-- 鎻愪氦鎸夐挳 -->
+			<view class="forwardBtn"><u-button text="鎻愪氦" :hairline="false" type="warning" @click.stop="submitForm" :disabled="whetherClick1"></u-button></view>
 		</view>
 		<!-- 澧炲姞鎸夐挳 -->
-		<view class="AdddBtn">
-			<u-button text="娣诲姞" :hairline="false" type="primary" :customStyle="{ marginBottom: '8px' }" @click="addForm" :disabled="whetherClick"></u-button>
-		</view>
-		<!-- 鎸夐挳 -->
-		<view class="forwardBtn"><u-button text="鎻愪氦" :hairline="false" type="warning" @click="submitForm" :disabled="whetherClick1"></u-button></view>
 
 		<!-- 閫夋嫨璐т唬鎴栬溅闃熷脊鍑烘 -->
 		<view class="selectHuoDaiOrFleet-container">
@@ -146,7 +168,16 @@
 			// 涓汉杞彂鏁版嵁
 			personalForward: {},
 			whetherClick: false,
-			whetherClick1: false
+			whetherClick1: false,
+			// 婊戝姩鍗曞厓鏍奸厤缃�
+			options1: [
+				{
+					text: '鍒犻櫎',
+					style: {
+						backgroundColor: '#FB0101'
+					}
+				}
+			]
 		};
 	},
 	onShow() {
@@ -168,6 +199,12 @@
 		}
 	},
 	methods: {
+		// 杩斿洖涓婁竴椤�
+		back() {
+			uni.navigateBack({
+				delta: 1
+			});
+		},
 		init() {
 			switch (this.roleType) {
 				case 1:
@@ -235,7 +272,7 @@
 					this.calculate(this.jhOrderPlanForwardList);
 				}
 				if (this.roleType == 2) {
-					this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.forwardSurplus, this.jhOrderPlanForwardList[index].carNum);
+					this.jhOrderPlanForwardList[index].carNum = this.allrelay(this.carNumSurplusHuodai, this.jhOrderPlanForwardList[index].carNum);
 					this.calculate(this.jhOrderPlanForwardList);
 				}
 				// 閫夋嫨涓�涓悗鍏朵綑绂佹澶嶉��
@@ -319,15 +356,26 @@
 					this.whetherClick1 = true;
 				}
 			}
-			return total;
+			if (this.roleType == 2) {
+				if (this.carNum >= total) {
+					this.carNumSurplusHuodai = this.carNum - total;
+					this.whetherClick = false;
+					this.whetherClick1 = false;
+				} else {
+					this.carNumSurplusHuodai = 0;
+					this.$u.toast('鍓╀綑鎻愮叅鍗曟暟閲忎笉瓒�');
+					this.whetherClick = true;
+					this.whetherClick1 = true;
+				}
+			}
 		},
 		debouncecarNumInput(index, value) {
 			let time;
 			let that = this;
+			that.$set(that.jhOrderPlanForwardList[index], 'carNum', Number(value));
 			return (function() {
 				if (!time) {
 					time = setTimeout(() => {
-						that.$set(that.jhOrderPlanForwardList[index], 'carNum', Number(value));
 						that.calculate(that.jhOrderPlanForwardList);
 						time = null;
 					}, 800);
@@ -368,7 +416,7 @@
 		// 鍒犻櫎涓�缁勮〃鍗�
 		deleteGroup(index, v) {
 			let tempcarNum = v.carNum;
-			if (v.id && this.jhOrderPlanForwardList[index].carNum !== tempcarNum) {
+			if (v.id) {
 				this.$reqPost('deleteForward', { id: v.id }, 'params').then(res => {
 					if (res.code === 0) {
 						this.jhOrderPlanForwardList.splice(index, 1);
@@ -433,33 +481,125 @@
 </script>
 
 <style lang="scss" scoped>
-::v-deep.forward {
-	width: 90%;
-	margin: 0 auto;
-
-	// 鍗$墖
-	.forward-card {
-		margin-top: vww(10);
-		.notice-bar {
-			width: 100%;
-			height: vww(24);
+@mixin flex {
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+}
+/deep/ .u-notice-bar {
+	background: rgba(255, 255, 255, 0.3) !important;
+	box-shadow: 0rpx 0rpx 5rpx 0rpx rgba(27, 103, 255, 0);
+	border-radius: 28rpx;
+	.u-notice__content {
+		text {
+			text-shadow: 3rpx 3rpx 8rpx #4784fe;
+			font-size: 24rpx;
+			color: #fd1446 !important;
+			font-weight: 400;
 		}
-		.u-form {
-			.u-form-item {
-				.u-form-item__body {
-					.u-form-item__body__right {
-						.u-form-item__body__right__content {
-							.u-form-item__body__right__content__slot {
-								.forward-card-amount {
-									display: flex;
-									justify-content: space-between;
-									align-items: flex-end;
-									.forward-card-amount-input {
-										width: vww(245);
+	}
+}
+/deep/ .u-input {
+	border-bottom: 1px solid #c4c4c4;
+	width: 458rpx;
+}
+::v-deep.forward {
+	width: 100%;
+	margin: 0 auto;
+	.forward-banner {
+		width: 100%;
+		height: 430rpx;
+		background: linear-gradient(0deg, #ffffff 0%, #0055fe 100%);
+		@include flex;
+		justify-content: flex-start;
+		overflow: hidden;
+		.banner-block {
+			width: 50%;
+			@include flex;
+			position: relative;
+			top: -75rpx;
+			left: 32rpx;
+			.forward-text {
+				width: 80rpx;
+				font-size: 40rpx;
+				font-weight: 400;
+				color: #ffffff;
+				line-height: 69rpx;
+			}
+		}
+	}
+	.notice-bar {
+		width: 688rpx;
+		height: 56rpx;
+		margin: 0 auto;
+		position: relative;
+		top: -200rpx;
+		background: transparent;
+		.notice-icon {
+			position: absolute;
+			top: 21rpx;
+			left: 7rpx;
+		}
+	}
+	.card-main {
+		width: 100%;
+		@include flex;
+		justify-content: center;
+		position: relative;
+		top: -100rpx;
+		.card-block {
+			width: 690rpx;
+			@include flex;
+			flex-direction: column;
+			.forward-card {
+				margin-top: vww(10);
+				width: 690rpx;
+				height: 275rpx;
+				background: #ffffff;
+				box-shadow: 4rpx 6rpx 25rpx 0rpx rgba(73, 120, 240, 0.15);
+				border-radius: 20rpx;
+				.card-content {
+					width: 612rpx;
+					margin-left: 48rpx;
+					margin-top: 24rpx;
+					// margin: 56rpx 30rpx 70rpx 48rpx;
+					.u-form {
+						.u-form-item {
+							.u-form-item__body {
+								.u-form-item__body__left {
+									.u-form-item__body__left__content {
+										.u-form-item__body__left__content__label {
+											font-weight: 400 !important;
+											color: #898989 !important;
+											font-size: 30rpx !important;
+										}
 									}
 								}
-								.u-input {
-									border: 1px solid #dddddd;
+								.u-form-item__body__right {
+									.u-form-item__body__right__content {
+										.u-form-item__body__right__content__slot {
+											.forward-card-amount {
+												display: flex;
+												justify-content: space-between;
+												align-items: flex-end;
+												.forward-card-amount-input {
+													.u-input {
+														width: 263rpx;
+													}
+												}
+												.u-checkbox-group {
+													position: relative;
+													top: vww(8);
+													left: vww(4);
+													.u-checkbox {
+														.u-checkbox__icon-wrap {
+															border-color: rgba(42, 97, 255, 1) !important;
+														}
+													}
+												}
+											}
+										}
+									}
 								}
 							}
 						}
@@ -467,21 +607,41 @@
 				}
 			}
 		}
-		.forward-card-amount {
-			display: flex;
+	}
+	.utils-buttonGroup {
+		width: 610rpx;
+		@include flex;
+		position: fixed;
+		bottom: vww(50);
+		left: vww(25);
+		z-index: 2;
+		.AdddBtn,
+		.forwardBtn {
+			width: 290rpx;
+		}
+		.AdddBtn {
+			.u-button {
+				height: 74rpx;
+				border: 1px solid #3b56eb;
+				border-radius: 37rpx 37rpx 37rpx 37rpx;
+				background: transparent;
+				color: #3b56eb;
+			}
+		}
+		.forwardBtn {
+			.u-button {
+				height: 74rpx;
+				color: #ffffff;
+				background: rgba(73, 123, 251, 1);
+				border: 0;
+				border-radius: 37rpx 37rpx 37rpx 37rpx;
+			}
 		}
 	}
-
-	.forwardBtn {
-		width: 100%;
-		// position: fixed;
-		bottom: vww(50);
-	}
-
 	.selectHuoDaiOrFleet-container {
 		.u-popup {
 			.u-transition {
-				height: 95%;
+				height: 80%;
 
 				.u-popup__content {
 					overflow: scroll !important;
diff --git a/pages/public-page/mapRoute/mapRoute.vue b/pages/public-page/mapRoute/mapRoute.vue
new file mode 100644
index 0000000..f686e1c
--- /dev/null
+++ b/pages/public-page/mapRoute/mapRoute.vue
@@ -0,0 +1,223 @@
+<template>
+	<view>
+		<view class="page-body" style="margin-top: 4rpx;">
+			<view class="page-section page-section-gap">
+				<map style="width: 100%; height: 600px;" :latitude="latitude" :longitude="longitude" :markers="markers" :polyline="polyline"></map>
+			</view>
+		</view>
+		<view class="tip">
+			<view class="first">
+				閫氳璺濈
+				<text>{{ distance || '' }}Km</text>
+			</view>
+			<view class="first">
+				棰勮鍒拌揪鏃堕棿
+				<text>{{ duration || '' }}</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	data() {
+		return {
+			latitude: 38.04606544104117,
+			longitude: 114.48735479816793,
+			customerId: '',
+			filedId: '',
+			orderType: '',
+			toFiledId: '',
+			// 璧风偣缁忕含搴�
+			originlongitude: 39.909,
+			originlatitude: 116.39742,
+			// 缁堢偣
+			finishlongitude: null,
+			finishlatitude: null,
+			markers: [
+				{
+					latitude: null,
+					longitude: null,
+					iconPath: '../../../static/image/banner/location.png',
+					width: 23,
+					height: 33,
+					id: 0,
+					callout: {
+						content: '璧风偣', //鏂囨湰
+						color: '#ffffff', //鏂囧瓧棰滆壊
+						fontSize: 14, //鏂囨湰澶у皬
+						borderRadius: 15, //杈规鍦嗚
+						borderWidth: '10',
+						bgColor: '#e51860', //鑳屾櫙棰滆壊
+						display: 'ALWAYS' //甯告樉
+					}
+				},
+				{
+					latitude: null,
+					longitude: null,
+					iconPath: '../../../static/image/banner/location.png',
+					width: 23,
+					height: 33,
+					id: 1,
+					callout: {
+						content: '缁堢偣', //鏂囨湰
+						color: '#ffffff', //鏂囧瓧棰滆壊
+						fontSize: 14, //鏂囨湰澶у皬
+						borderRadius: 15, //杈规鍦嗚
+						borderWidth: '10',
+						bgColor: '#e51860', //鑳屾櫙棰滆壊
+						display: 'ALWAYS' //甯告樉
+					}
+				}
+			],
+			polyline: [
+				{
+					// 姣忎釜鐐圭殑缁忕含搴�
+					points: [{ latitude: 38.04606544104117, longitude: 114.48735479816793 }, { latitude: 38.049531, longitude: 114.53521899999998 }],
+					// 棰滆壊
+					color: '#0091ff',
+					// 瀹藉害
+					width: 10
+				}
+			],
+			distance: null,
+			duration: null
+		};
+	},
+	methods: {
+		getLocation() {
+			uni.showLoading({
+				title: '鍔犺浇涓��'
+			});
+			let QQMapWX = require('../../../utils/qqmap-wx-jssdk.js');
+			let qqmapsdk = new QQMapWX({
+				key: 'HTNBZ-LZGRQ-YDB5S-B4KAS-KLHJH-GHBUE' // 蹇呭~
+			});
+			const params = this.toFiledId ? { toFiledId: this.toFiledId } : { customerId: this.customerId, filedId: this.filedId };
+			this.$reqGet('getAppLocation', params).then(res => {
+				console.log(res, '鑵捐缁忕含搴�');
+				let _this = this;
+				let fromLocation;
+				let toLocation;
+				if (_this.orderType == '澶栬喘' || _this.orderType == '澶栭攢') {
+					_this.$set(_this.markers[0], 'longitude', res.data.customerLongitude);
+					_this.$set(_this.markers[0], 'latitude', res.data.customerLatitude);
+					fromLocation = {
+						longitude: res.data.customerLongitude,
+						latitude: res.data.customerLatitude
+					};
+					_this.$set(_this.markers[1], 'longitude', res.data.filedLongitude);
+					_this.$set(_this.markers[1], 'latitude', res.data.filedLatitude);
+					toLocation = {
+						longitude: res.data.filedLongitude,
+						latitude: res.data.filedLatitude
+					};
+				} else if (_this.orderType == '鍐呰喘' || _this.orderType == '鍐呴攢') {
+					_this.$set(_this.markers[0], 'longitude', res.data.filedLongitude);
+					_this.$set(_this.markers[0], 'latitude', res.data.filedLatitude);
+					fromLocation = {
+						longitude: res.data.filedLongitude,
+						latitude: res.data.filedLatitude
+					};
+					_this.$set(_this.markers[1], 'longitude', res.data.customerLongitude);
+					_this.$set(_this.markers[1], 'latitude', res.data.customerLatitude);
+					toLocation = {
+						longitude: res.data.customerLongitude,
+						latitude: res.data.customerLatitude
+					};
+				}
+				//璋冪敤璺濈璁$畻鎺ュ彛
+				qqmapsdk.direction({
+					mode: 'driving',
+					//from鍙傛暟涓嶅~榛樿褰撳墠鍦板潃
+					from: fromLocation,
+					to: toLocation,
+					success: function(res) {
+						console.log(res);
+						let ret = res;
+						let coors = ret.result.routes[0].polyline,
+							pl = [];
+						//鍧愭爣瑙e帇锛堣繑鍥炵殑鐐逛覆鍧愭爣锛岄�氳繃鍓嶅悜宸垎杩涜鍘嬬缉锛�
+						let kr = 1000000;
+						for (let i = 2; i < coors.length; i++) {
+							coors[i] = Number(coors[i - 2]) + Number(coors[i]) / kr;
+						}
+						//灏嗚В鍘嬪悗鐨勫潗鏍囨斁鍏ョ偣涓叉暟缁刾l涓�
+						for (let i = 0; i < coors.length; i += 2) {
+							pl.push({ latitude: coors[i], longitude: coors[i + 1] });
+						}
+						console.log(pl);
+						//璁剧疆polyline灞炴�э紝灏嗚矾绾挎樉绀哄嚭鏉�,灏嗚В鍘嬪潗鏍囩涓�涓暟鎹綔涓鸿捣鐐�
+						_this.longitude = pl[0].longitude;
+						_this.latitude = pl[0].latitude;
+						_this.polyline = [
+							{
+								points: pl,
+								color: '#FF0000DD',
+								width: 4,
+								arrowLine: true
+							}
+						];
+					},
+					fail: function(error) {
+						console.error(error);
+					},
+					complete: function(res) {
+						console.log(res);
+						uni.hideLoading();
+						_this.distance = res.result.routes[0].distance;
+						_this.distance = (_this.distance / 1000).toFixed(2);
+						_this.duration = _this.handleTime(res.result.routes[0].duration);
+					}
+				});
+			});
+		},
+		//
+		handleTime(time) {
+			let now = new Date(); // 鑾峰彇褰撳墠鏃堕棿
+			now.setMinutes(now.getMinutes() + time);
+			let hours = now
+				.getHours()
+				.toString()
+				.padStart(2, '0');
+			let minutes = now
+				.getMinutes()
+				.toString()
+				.padStart(2, '0');
+			return hours + ':' + minutes;
+		}
+	},
+	onLoad(params) {
+		this.customerId = params.customerId;
+		this.filedId = params.filedId;
+		this.orderType = params.orderType;
+		if (params.toFiledId) {
+			this.toFiledId = params.toFiledId;
+		}
+	},
+	onShow() {
+		if (this.orderType !== '杞叆' || this.orderType !== '杞嚭') {
+			this.getLocation();
+		} else {
+		}
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+.tip {
+	margin-top: 60rpx;
+	width: 94%;
+	height: 40rpx;
+	font-size: 40rpx;
+	display: flex;
+	justify-content: space-around;
+	.first {
+		color: #c78a64;
+		text {
+			font-size: 45rpx;
+			color: #f81414;
+		}
+	}
+}
+</style>
diff --git a/pages/public-page/message/message.vue b/pages/public-page/message/message.vue
index 21bebd4..592a6e4 100644
--- a/pages/public-page/message/message.vue
+++ b/pages/public-page/message/message.vue
@@ -63,10 +63,31 @@
 				if (res.code == 0) {
 					uni.hideLoading();
 					this.total = res.data.total;
+					const regex = /<[^>]*>([^<]*)<\/[^>]*>/g;
+
+					const solveHandle = v => {
+						const regex = /<[^>]*>([^<]*)<\/[^>]*>/g;
+						let result = v.replace(regex, (match, p1) => {
+							return p1.length > 8 ? p1.slice(0, 8) + '...' : p1;
+						});
+						return result;
+					};
 					if (this.pageNum > 1) {
 						this.messageList = this.messageList.concat(res.data.records);
+						this.messageList = this.messageList.map(v => {
+							return {
+								...v,
+								content: solveHandle(v.content)
+							};
+						});
 					} else if (this.pageNum == 1) {
 						this.messageList = res.data.records;
+						this.messageList = this.messageList.map(v => {
+							return {
+								...v,
+								content: solveHandle(v.content)
+							};
+						});
 					}
 				} else {
 					this.$u.toast('鍔犺浇澶辫触');
diff --git a/pages/tabbar-page/index-tabbar/index-tabbar.vue b/pages/tabbar-page/index-tabbar/index-tabbar.vue
index da810e4..b15ebb7 100644
--- a/pages/tabbar-page/index-tabbar/index-tabbar.vue
+++ b/pages/tabbar-page/index-tabbar/index-tabbar.vue
@@ -40,7 +40,10 @@
 		freightForwarderIndex
 	},
 	computed: {
-		...mapState(['globalweighHouseCode', 'globalweigh'])
+		...mapState(['globalweighHouseCode', 'globalweigh', 'globalisconnect'])
+	},
+	watch: {
+		globalisconnect(v, oldv) {}
 	},
 	//棣栭〉涓嬫媺鍒锋柊
 	onPullDownRefresh() {
@@ -111,18 +114,6 @@
 				console.log('寮�鍚弻浜洪�氳瘽鎴愬姛Complete');
 			}
 		});
-		let amap = require('../../../utils/amap-wx.130.js');
-		let amapPlugin = new amap.AMapWX({
-			key: 'e3106700a6225e6a25727d3a41fa54c5'
-		});
-		amapPlugin.getRegeo({
-			success: data => {
-				console.log(data, '鑾峰彇浣嶇疆');
-			},
-			fail: info => {
-				console.log(info, '閿欒淇℃伅');
-			}
-		});
 	},
 	data() {
 		return {
@@ -134,15 +125,12 @@
 			messagePushShow: false,
 			messageList: {},
 			isconnect: false,
-			dotShow: false,
-			amapPlugin: null,
-			key: 'e3106700a6225e6a25727d3a41fa54c5',
-			addressName: ''
+			dotShow: false
 		};
 	},
 	onShow() {
 		this.init();
-		if (!this.isconnect) {
+		if (!this.globalisconnect || !this.isconnect) {
 			this.initWebsocket();
 		}
 		this.userAuthorization();
@@ -150,7 +138,10 @@
 	},
 	onHide() {
 		console.log('椤甸潰闅愯棌');
-		if (!this.isconnect) {
+		// this.isconnect = false;
+		// this.changeisconnect(false);
+		// socket.close();
+		if (!this.globalisconnect || !this.isconnect) {
 			this.initWebsocket();
 		}
 	},
@@ -160,7 +151,7 @@
 		clearInterval(this.intervalId);
 	},
 	methods: {
-		...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus']),
+		...mapMutations(['pushMessage', 'changeWeigh', 'changeinfraredStatus', 'changeisconnect']),
 		messagePage() {
 			uni.navigateTo({
 				url: '/pages/public-page/message/message'
@@ -239,6 +230,7 @@
 				complete: res => {
 					console.log(res, 'socket缁撴灉');
 					if (res.errMsg == 'connectSocket:ok') {
+						this.changeisconnect(true);
 						this.isconnect = true;
 					}
 				}
diff --git a/static/image/banner/location.png b/static/image/banner/location.png
new file mode 100644
index 0000000..75704ef
--- /dev/null
+++ b/static/image/banner/location.png
Binary files differ
diff --git a/static/image/banner/notice.png b/static/image/banner/notice.png
new file mode 100644
index 0000000..e5b497f
--- /dev/null
+++ b/static/image/banner/notice.png
Binary files differ
diff --git a/store/index.js b/store/index.js
index f6dcee1..77612ae 100644
--- a/store/index.js
+++ b/store/index.js
@@ -71,6 +71,7 @@
 			weight: '',
 			userId: ''
 		},
+		globalisconnect: false
 	},
 	mutations: {
 		lengthchange(state, payload) {
@@ -110,6 +111,10 @@
 		},
 		changeuserInfo(state, payload) {
 			state.globaluserInfo = payload
+		},
+		// 鏀圭増鍏ㄥ眬websocket鐘舵��
+		changeisconnect(state, payload) {
+			state.globalisconnect = payload
 		}
 	}
 })
diff --git a/utils/amap-wx.130.js b/utils/amap-wx.130.js
deleted file mode 100644
index 718d6ef..0000000
--- a/utils/amap-wx.130.js
+++ /dev/null
@@ -1,31 +0,0 @@
-function AMapWX(a){this.key=a.key;this.requestConfig={key:a.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};this.MeRequestConfig={key:a.key,serviceName:"https://restapi.amap.com/rest/me"}}
-AMapWX.prototype.getWxLocation=function(a,b){wx.getLocation({type:"gcj02",success:function(c){c=c.longitude+","+c.latitude;wx.setStorage({key:"userLocation",data:c});b(c)},fail:function(c){wx.getStorage({key:"userLocation",success:function(d){d.data&&b(d.data)}});a.fail({errCode:"0",errMsg:c.errMsg||""})}})};
-AMapWX.prototype.getMEKeywordsSearch=function(a){if(!a.options)return a.fail({errCode:"0",errMsg:"\u7f3a\u5c11\u5fc5\u8981\u53c2\u6570"});var b=a.options,c=this.MeRequestConfig,d={key:c.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};b.layerId&&(d.layerId=b.layerId);b.keywords&&(d.keywords=b.keywords);b.city&&(d.city=b.city);b.filter&&(d.filter=b.filter);b.sortrule&&(d.sortrule=b.sortrule);b.pageNum&&(d.pageNum=b.pageNum);b.pageSize&&(d.pageSize=b.pageSize);b.sig&&(d.sig=
-b.sig);wx.request({url:c.serviceName+"/cpoint/datasearch/local",data:d,method:"GET",header:{"content-type":"application/json"},success:function(e){(e=e.data)&&e.status&&"1"===e.status&&0===e.code?a.success(e.data):a.fail({errCode:"0",errMsg:e})},fail:function(e){a.fail({errCode:"0",errMsg:e.errMsg||""})}})};
-AMapWX.prototype.getMEIdSearch=function(a){if(!a.options)return a.fail({errCode:"0",errMsg:"\u7f3a\u5c11\u5fc5\u8981\u53c2\u6570"});var b=a.options,c=this.MeRequestConfig,d={key:c.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};b.layerId&&(d.layerId=b.layerId);b.id&&(d.id=b.id);b.sig&&(d.sig=b.sig);wx.request({url:c.serviceName+"/cpoint/datasearch/id",data:d,method:"GET",header:{"content-type":"application/json"},success:function(e){(e=e.data)&&e.status&&"1"===e.status&&
-0===e.code?a.success(e.data):a.fail({errCode:"0",errMsg:e})},fail:function(e){a.fail({errCode:"0",errMsg:e.errMsg||""})}})};
-AMapWX.prototype.getMEPolygonSearch=function(a){if(!a.options)return a.fail({errCode:"0",errMsg:"\u7f3a\u5c11\u5fc5\u8981\u53c2\u6570"});var b=a.options,c=this.MeRequestConfig,d={key:c.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};b.layerId&&(d.layerId=b.layerId);b.keywords&&(d.keywords=b.keywords);b.polygon&&(d.polygon=b.polygon);b.filter&&(d.filter=b.filter);b.sortrule&&(d.sortrule=b.sortrule);b.pageNum&&(d.pageNum=b.pageNum);b.pageSize&&(d.pageSize=b.pageSize);
-b.sig&&(d.sig=b.sig);wx.request({url:c.serviceName+"/cpoint/datasearch/polygon",data:d,method:"GET",header:{"content-type":"application/json"},success:function(e){(e=e.data)&&e.status&&"1"===e.status&&0===e.code?a.success(e.data):a.fail({errCode:"0",errMsg:e})},fail:function(e){a.fail({errCode:"0",errMsg:e.errMsg||""})}})};
-AMapWX.prototype.getMEaroundSearch=function(a){if(!a.options)return a.fail({errCode:"0",errMsg:"\u7f3a\u5c11\u5fc5\u8981\u53c2\u6570"});var b=a.options,c=this.MeRequestConfig,d={key:c.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"};b.layerId&&(d.layerId=b.layerId);b.keywords&&(d.keywords=b.keywords);b.center&&(d.center=b.center);b.radius&&(d.radius=b.radius);b.filter&&(d.filter=b.filter);b.sortrule&&(d.sortrule=b.sortrule);b.pageNum&&(d.pageNum=b.pageNum);b.pageSize&&
-(d.pageSize=b.pageSize);b.sig&&(d.sig=b.sig);wx.request({url:c.serviceName+"/cpoint/datasearch/around",data:d,method:"GET",header:{"content-type":"application/json"},success:function(e){(e=e.data)&&e.status&&"1"===e.status&&0===e.code?a.success(e.data):a.fail({errCode:"0",errMsg:e})},fail:function(e){a.fail({errCode:"0",errMsg:e.errMsg||""})}})};
-AMapWX.prototype.getGeo=function(a){var b=this.requestConfig,c=a.options;b={key:this.key,extensions:"all",s:b.s,platform:b.platform,appname:this.key,sdkversion:b.sdkversion,logversion:b.logversion};c.address&&(b.address=c.address);c.city&&(b.city=c.city);c.batch&&(b.batch=c.batch);c.sig&&(b.sig=c.sig);wx.request({url:"https://restapi.amap.com/v3/geocode/geo",data:b,method:"GET",header:{"content-type":"application/json"},success:function(d){(d=d.data)&&d.status&&"1"===d.status?a.success(d):a.fail({errCode:"0",
-errMsg:d})},fail:function(d){a.fail({errCode:"0",errMsg:d.errMsg||""})}})};
-AMapWX.prototype.getRegeo=function(a){function b(d){var e=c.requestConfig;wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:c.key,location:d,extensions:"all",s:e.s,platform:e.platform,appname:c.key,sdkversion:e.sdkversion,logversion:e.logversion},method:"GET",header:{"content-type":"application/json"},success:function(g){if(g.data.status&&"1"==g.data.status){g=g.data.regeocode;var h=g.addressComponent,f=[],k=g.roads[0].name+"\u9644\u8fd1",m=d.split(",")[0],n=d.split(",")[1];if(g.pois&&
-g.pois[0]){k=g.pois[0].name+"\u9644\u8fd1";var l=g.pois[0].location;l&&(m=parseFloat(l.split(",")[0]),n=parseFloat(l.split(",")[1]))}h.provice&&f.push(h.provice);h.city&&f.push(h.city);h.district&&f.push(h.district);h.streetNumber&&h.streetNumber.street&&h.streetNumber.number?(f.push(h.streetNumber.street),f.push(h.streetNumber.number)):f.push(g.roads[0].name);f=f.join("");a.success([{iconPath:a.iconPath,width:a.iconWidth,height:a.iconHeight,name:f,desc:k,longitude:m,latitude:n,id:0,regeocodeData:g}])}else a.fail({errCode:g.data.infocode,
-errMsg:g.data.info})},fail:function(g){a.fail({errCode:"0",errMsg:g.errMsg||""})}})}var c=this;a.location?b(a.location):c.getWxLocation(a,function(d){b(d)})};
-AMapWX.prototype.getWeather=function(a){function b(g){var h="base";a.type&&"forecast"==a.type&&(h="all");wx.request({url:"https://restapi.amap.com/v3/weather/weatherInfo",data:{key:d.key,city:g,extensions:h,s:e.s,platform:e.platform,appname:d.key,sdkversion:e.sdkversion,logversion:e.logversion},method:"GET",header:{"content-type":"application/json"},success:function(f){if(f.data.status&&"1"==f.data.status)if(f.data.lives){if((f=f.data.lives)&&0<f.length){f=f[0];var k={city:{text:"\u57ce\u5e02",data:f.city},
-weather:{text:"\u5929\u6c14",data:f.weather},temperature:{text:"\u6e29\u5ea6",data:f.temperature},winddirection:{text:"\u98ce\u5411",data:f.winddirection+"\u98ce"},windpower:{text:"\u98ce\u529b",data:f.windpower+"\u7ea7"},humidity:{text:"\u6e7f\u5ea6",data:f.humidity+"%"}};k.liveData=f;a.success(k)}}else f.data.forecasts&&f.data.forecasts[0]&&a.success({forecast:f.data.forecasts[0]});else a.fail({errCode:f.data.infocode,errMsg:f.data.info})},fail:function(f){a.fail({errCode:"0",errMsg:f.errMsg||""})}})}
-function c(g){wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:d.key,location:g,extensions:"all",s:e.s,platform:e.platform,appname:d.key,sdkversion:e.sdkversion,logversion:e.logversion},method:"GET",header:{"content-type":"application/json"},success:function(h){if(h.data.status&&"1"==h.data.status){h=h.data.regeocode;if(h.addressComponent)var f=h.addressComponent.adcode;else h.aois&&0<h.aois.length&&(f=h.aois[0].adcode);b(f)}else a.fail({errCode:h.data.infocode,errMsg:h.data.info})},
-fail:function(h){a.fail({errCode:"0",errMsg:h.errMsg||""})}})}var d=this,e=d.requestConfig;a.city?b(a.city):d.getWxLocation(a,function(g){c(g)})};
-AMapWX.prototype.getPoiAround=function(a){function b(e){e={key:c.key,location:e,s:d.s,platform:d.platform,appname:c.key,sdkversion:d.sdkversion,logversion:d.logversion};a.querytypes&&(e.types=a.querytypes);a.querykeywords&&(e.keywords=a.querykeywords);wx.request({url:"https://restapi.amap.com/v3/place/around",data:e,method:"GET",header:{"content-type":"application/json"},success:function(g){if(g.data.status&&"1"==g.data.status){if((g=g.data)&&g.pois){for(var h=[],f=0;f<g.pois.length;f++){var k=0==
-f?a.iconPathSelected:a.iconPath;h.push({latitude:parseFloat(g.pois[f].location.split(",")[1]),longitude:parseFloat(g.pois[f].location.split(",")[0]),iconPath:k,width:22,height:32,id:f,name:g.pois[f].name,address:g.pois[f].address})}a.success({markers:h,poisData:g.pois})}}else a.fail({errCode:g.data.infocode,errMsg:g.data.info})},fail:function(g){a.fail({errCode:"0",errMsg:g.errMsg||""})}})}var c=this,d=c.requestConfig;a.location?b(a.location):c.getWxLocation(a,function(e){b(e)})};
-AMapWX.prototype.getStaticmap=function(a){function b(e){c.push("location="+e);a.zoom&&c.push("zoom="+a.zoom);a.size&&c.push("size="+a.size);a.scale&&c.push("scale="+a.scale);a.markers&&c.push("markers="+a.markers);a.labels&&c.push("labels="+a.labels);a.paths&&c.push("paths="+a.paths);a.traffic&&c.push("traffic="+a.traffic);e="https://restapi.amap.com/v3/staticmap?"+c.join("&");a.success({url:e})}var c=[];c.push("key="+this.key);var d=this.requestConfig;c.push("s="+d.s);c.push("platform="+d.platform);
-c.push("appname="+d.appname);c.push("sdkversion="+d.sdkversion);c.push("logversion="+d.logversion);a.location?b(a.location):this.getWxLocation(a,function(e){b(e)})};
-AMapWX.prototype.getInputtips=function(a){var b=Object.assign({},this.requestConfig);a.location&&(b.location=a.location);a.keywords&&(b.keywords=a.keywords);a.type&&(b.type=a.type);a.city&&(b.city=a.city);a.citylimit&&(b.citylimit=a.citylimit);wx.request({url:"https://restapi.amap.com/v3/assistant/inputtips",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.tips&&a.success({tips:c.data.tips})},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||
-""})}})};
-AMapWX.prototype.getDrivingRoute=function(a){var b=Object.assign({},this.requestConfig);a.origin&&(b.origin=a.origin);a.destination&&(b.destination=a.destination);a.strategy&&(b.strategy=a.strategy);a.waypoints&&(b.waypoints=a.waypoints);a.avoidpolygons&&(b.avoidpolygons=a.avoidpolygons);a.avoidroad&&(b.avoidroad=a.avoidroad);wx.request({url:"https://restapi.amap.com/v3/direction/driving",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.route&&a.success({paths:c.data.route.paths,
-taxi_cost:c.data.route.taxi_cost||""})},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||""})}})};
-AMapWX.prototype.getWalkingRoute=function(a){var b=Object.assign({},this.requestConfig);a.origin&&(b.origin=a.origin);a.destination&&(b.destination=a.destination);wx.request({url:"https://restapi.amap.com/v3/direction/walking",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.route&&a.success({paths:c.data.route.paths})},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||""})}})};
-AMapWX.prototype.getTransitRoute=function(a){var b=Object.assign({},this.requestConfig);a.origin&&(b.origin=a.origin);a.destination&&(b.destination=a.destination);a.strategy&&(b.strategy=a.strategy);a.city&&(b.city=a.city);a.cityd&&(b.cityd=a.cityd);wx.request({url:"https://restapi.amap.com/v3/direction/transit/integrated",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.route&&(c=c.data.route,a.success({distance:c.distance||"",taxi_cost:c.taxi_cost||
-"",transits:c.transits}))},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||""})}})};
-AMapWX.prototype.getRidingRoute=function(a){var b=Object.assign({},this.requestConfig);a.origin&&(b.origin=a.origin);a.destination&&(b.destination=a.destination);wx.request({url:"https://restapi.amap.com/v3/direction/riding",data:b,method:"GET",header:{"content-type":"application/json"},success:function(c){c&&c.data&&c.data.route&&a.success({paths:c.data.route.paths})},fail:function(c){a.fail({errCode:"0",errMsg:c.errMsg||""})}})};module.exports.AMapWX=AMapWX;
\ No newline at end of file
diff --git a/utils/qqmap-wx-jssdk.js b/utils/qqmap-wx-jssdk.js
new file mode 100644
index 0000000..595b65b
--- /dev/null
+++ b/utils/qqmap-wx-jssdk.js
@@ -0,0 +1,1122 @@
+/**
+ * 寰俊灏忕▼搴廕avaScriptSDK
+ * 
+ * @version 1.2
+ * @date 2019-03-06
+ */
+
+var ERROR_CONF = {
+    KEY_ERR: 311,
+    KEY_ERR_MSG: 'key鏍煎紡閿欒',
+    PARAM_ERR: 310,
+    PARAM_ERR_MSG: '璇锋眰鍙傛暟淇℃伅鏈夎',
+    SYSTEM_ERR: 600,
+    SYSTEM_ERR_MSG: '绯荤粺閿欒',
+    WX_ERR_CODE: 1000,
+    WX_OK_CODE: 200
+};
+var BASE_URL = 'https://apis.map.qq.com/ws/';
+var URL_SEARCH = BASE_URL + 'place/v1/search';
+var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion';
+var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/';
+var URL_CITY_LIST = BASE_URL + 'district/v1/list';
+var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren';
+var URL_DISTANCE = BASE_URL + 'distance/v1/';
+var URL_DIRECTION = BASE_URL + 'direction/v1/';
+var MODE = {
+  driving: 'driving',
+  transit: 'transit'
+};
+var EARTH_RADIUS = 6378136.49;
+var Utils = {
+  /**
+  * md5鍔犲瘑鏂规硶
+  * 鐗堟潈鎵�鏈壜�2011 Sebastian Tschan锛宧ttps锛�//blueimp.net
+  */
+  safeAdd(x, y) {
+    var lsw = (x & 0xffff) + (y & 0xffff);
+    var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+    return (msw << 16) | (lsw & 0xffff);
+  },
+  bitRotateLeft(num, cnt) {
+    return (num << cnt) | (num >>> (32 - cnt));
+  },
+  md5cmn(q, a, b, x, s, t) {
+    return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b);
+  },
+  md5ff(a, b, c, d, x, s, t) {
+    return this.md5cmn((b & c) | (~b & d), a, b, x, s, t);
+  },
+  md5gg(a, b, c, d, x, s, t) {
+    return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t);
+  },
+  md5hh(a, b, c, d, x, s, t) {
+    return this.md5cmn(b ^ c ^ d, a, b, x, s, t);
+  },
+  md5ii(a, b, c, d, x, s, t) {
+    return this.md5cmn(c ^ (b | ~d), a, b, x, s, t);
+  },
+  binlMD5(x, len) {
+    /* append padding */
+    x[len >> 5] |= 0x80 << (len % 32);
+    x[((len + 64) >>> 9 << 4) + 14] = len;
+
+    var i;
+    var olda;
+    var oldb;
+    var oldc;
+    var oldd;
+    var a = 1732584193;
+    var b = -271733879;
+    var c = -1732584194;
+    var d = 271733878;
+
+    for (i = 0; i < x.length; i += 16) {
+      olda = a;
+      oldb = b;
+      oldc = c;
+      oldd = d;
+
+      a = this.md5ff(a, b, c, d, x[i], 7, -680876936);
+      d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586);
+      c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819);
+      b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
+      a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897);
+      d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
+      c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
+      b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983);
+      a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
+      d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
+      c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063);
+      b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
+      a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
+      d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101);
+      c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
+      b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
+
+      a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510);
+      d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
+      c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713);
+      b = this.md5gg(b, c, d, a, x[i], 20, -373897302);
+      a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691);
+      d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083);
+      c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335);
+      b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848);
+      a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438);
+      d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
+      c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961);
+      b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
+      a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
+      d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784);
+      c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
+      b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
+
+      a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558);
+      d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
+      c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
+      b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556);
+      a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
+      d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
+      c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632);
+      b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
+      a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174);
+      d = this.md5hh(d, a, b, c, x[i], 11, -358537222);
+      c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979);
+      b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189);
+      a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487);
+      d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835);
+      c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520);
+      b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651);
+
+      a = this.md5ii(a, b, c, d, x[i], 6, -198630844);
+      d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
+      c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
+      b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055);
+      a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
+      d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
+      c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523);
+      b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
+      a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
+      d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744);
+      c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
+      b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
+      a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070);
+      d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
+      c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259);
+      b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551);
+
+      a = this.safeAdd(a, olda);
+      b = this.safeAdd(b, oldb);
+      c = this.safeAdd(c, oldc);
+      d = this.safeAdd(d, oldd);
+    }
+    return [a, b, c, d];
+  },
+  binl2rstr(input) {
+    var i;
+    var output = '';
+    var length32 = input.length * 32;
+    for (i = 0; i < length32; i += 8) {
+      output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);
+    }
+    return output;
+  },
+  rstr2binl(input) {
+    var i;
+    var output = [];
+    output[(input.length >> 2) - 1] = undefined;
+    for (i = 0; i < output.length; i += 1) {
+      output[i] = 0;
+    }
+    var length8 = input.length * 8;
+    for (i = 0; i < length8; i += 8) {
+      output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);
+    }
+    return output;
+  },
+  rstrMD5(s) {
+    return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8));
+  },
+  rstrHMACMD5(key, data) {
+    var i;
+    var bkey = this.rstr2binl(key);
+    var ipad = [];
+    var opad = [];
+    var hash;
+    ipad[15] = opad[15] = undefined;
+    if (bkey.length > 16) {
+      bkey = this.binlMD5(bkey, key.length * 8);
+    }
+    for (i = 0; i < 16; i += 1) {
+      ipad[i] = bkey[i] ^ 0x36363636;
+      opad[i] = bkey[i] ^ 0x5c5c5c5c;
+    }
+    hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8);
+    return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128));
+  },
+  rstr2hex(input) {
+    var hexTab = '0123456789abcdef';
+    var output = '';
+    var x;
+    var i;
+    for (i = 0; i < input.length; i += 1) {
+      x = input.charCodeAt(i);
+      output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);
+    }
+    return output;
+  },
+  str2rstrUTF8(input) {
+    return unescape(encodeURIComponent(input));
+  },
+  rawMD5(s) {
+    return this.rstrMD5(this.str2rstrUTF8(s));
+  },
+  hexMD5(s) {
+    return this.rstr2hex(this.rawMD5(s));
+  },
+  rawHMACMD5(k, d) {
+    return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d));
+  },
+  hexHMACMD5(k, d) {
+    return this.rstr2hex(this.rawHMACMD5(k, d));
+  },
+
+  md5(string, key, raw) {
+    if (!key) {
+      if (!raw) {
+        return this.hexMD5(string);
+      }
+      return this.rawMD5(string);
+    }
+    if (!raw) {
+      return this.hexHMACMD5(key, string);
+    }
+    return this.rawHMACMD5(key, string);
+  },
+  /**
+   * 寰楀埌md5鍔犲瘑鍚庣殑sig鍙傛暟
+   * @param {Object} requestParam 鎺ュ彛鍙傛暟
+   * @param {String} sk绛惧悕瀛楃涓�
+   * @param {String} featrue 鏂规硶鍚�
+   * @return 杩斿洖鍔犲瘑鍚庣殑sig鍙傛暟
+   */
+  getSig(requestParam, sk, feature, mode) {
+    var sig = null;
+    var requestArr = [];
+    Object.keys(requestParam).sort().forEach(function(key){
+      requestArr.push(key + '=' + requestParam[key]);
+    });
+    if (feature == 'search') {
+      sig = '/ws/place/v1/search?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'suggest') {
+      sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'reverseGeocoder') {
+      sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'geocoder') {
+      sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'getCityList') {
+      sig = '/ws/district/v1/list?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'getDistrictByCityId') {
+      sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'calculateDistance') {
+      sig = '/ws/distance/v1/?' + requestArr.join('&') + sk;
+    }
+    if (feature == 'direction') {
+      sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk;
+    }
+    sig = this.md5(sig);
+    return sig;
+  },
+    /**
+     * 寰楀埌缁堢偣query瀛楃涓�
+     * @param {Array|String} 妫�绱㈡暟鎹�
+     */
+    location2query(data) {
+        if (typeof data == 'string') {
+            return data;
+        }
+        var query = '';
+        for (var i = 0; i < data.length; i++) {
+            var d = data[i];
+            if (!!query) {
+                query += ';';
+            }
+            if (d.location) {
+                query = query + d.location.lat + ',' + d.location.lng;
+            }
+            if (d.latitude && d.longitude) {
+                query = query + d.latitude + ',' + d.longitude;
+            }
+        }
+        return query;
+    },
+
+    /**
+     * 璁$畻瑙掑害
+     */
+    rad(d) {
+      return d * Math.PI / 180.0;
+    },  
+    /**
+     * 澶勭悊缁堢偣location鏁扮粍
+     * @return 杩斿洖缁堢偣鏁扮粍
+     */
+    getEndLocation(location){
+      var to = location.split(';');
+      var endLocation = [];
+      for (var i = 0; i < to.length; i++) {
+        endLocation.push({
+          lat: parseFloat(to[i].split(',')[0]),
+          lng: parseFloat(to[i].split(',')[1])
+        })
+      }
+      return endLocation;
+    },
+
+    /**
+     * 璁$畻涓ょ偣闂寸洿绾胯窛绂�
+     * @param a 琛ㄧず绾害宸�
+     * @param b 琛ㄧず缁忓害宸�
+     * @return 杩斿洖鐨勬槸璺濈锛屽崟浣峬
+     */
+    getDistance(latFrom, lngFrom, latTo, lngTo) {
+      var radLatFrom = this.rad(latFrom);
+      var radLatTo = this.rad(latTo);
+      var a = radLatFrom - radLatTo;
+      var b = this.rad(lngFrom) - this.rad(lngTo);
+      var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2)));
+      distance = distance * EARTH_RADIUS;
+      distance = Math.round(distance * 10000) / 10000;
+      return parseFloat(distance.toFixed(0));
+    },
+    /**
+     * 浣跨敤寰俊鎺ュ彛杩涜瀹氫綅
+     */
+    getWXLocation(success, fail, complete) {
+        wx.getLocation({
+            type: 'gcj02',
+            success: success,
+            fail: fail,
+            complete: complete
+        });
+    },
+
+    /**
+     * 鑾峰彇location鍙傛暟
+     */
+    getLocationParam(location) {
+        if (typeof location == 'string') {
+            var locationArr = location.split(',');
+            if (locationArr.length === 2) {
+                location = {
+                    latitude: location.split(',')[0],
+                    longitude: location.split(',')[1]
+                };
+            } else {
+                location = {};
+            }
+        }
+        return location;
+    },
+
+    /**
+     * 鍥炶皟鍑芥暟榛樿澶勭悊
+     */
+    polyfillParam(param) {
+        param.success = param.success || function () { };
+        param.fail = param.fail || function () { };
+        param.complete = param.complete || function () { };
+    },
+
+    /**
+     * 楠岃瘉param瀵瑰簲鐨刱ey鍊兼槸鍚︿负绌�
+     * 
+     * @param {Object} param 鎺ュ彛鍙傛暟
+     * @param {String} key 瀵瑰簲鍙傛暟鐨刱ey
+     */
+    checkParamKeyEmpty(param, key) {
+        if (!param[key]) {
+            var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'鍙傛暟鏍煎紡鏈夎');
+            param.fail(errconf);
+            param.complete(errconf);
+            return true;
+        }
+        return false;
+    },
+
+    /**
+     * 楠岃瘉鍙傛暟涓槸鍚﹀瓨鍦ㄦ绱㈣瘝keyword
+     * 
+     * @param {Object} param 鎺ュ彛鍙傛暟
+     */
+    checkKeyword(param){
+        return !this.checkParamKeyEmpty(param, 'keyword');
+    },
+
+    /**
+     * 楠岃瘉location鍊�
+     * 
+     * @param {Object} param 鎺ュ彛鍙傛暟
+     */
+    checkLocation(param) {
+        var location = this.getLocationParam(param.location);
+        if (!location || !location.latitude || !location.longitude) {
+            var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location鍙傛暟鏍煎紡鏈夎');
+            param.fail(errconf);
+            param.complete(errconf);
+            return false;
+        }
+        return true;
+    },
+
+    /**
+     * 鏋勯�犻敊璇暟鎹粨鏋�
+     * @param {Number} errCode 閿欒鐮�
+     * @param {Number} errMsg 閿欒鎻忚堪
+     */
+    buildErrorConfig(errCode, errMsg) {
+        return {
+            status: errCode,
+            message: errMsg
+        };
+    },
+
+    /**
+     * 
+     * 鏁版嵁澶勭悊鍑芥暟
+     * 鏍规嵁浼犲叆鍙傛暟涓嶅悓澶勭悊涓嶅悓鏁版嵁
+     * @param {String} feature 鍔熻兘鍚嶇О
+     * search 鍦扮偣鎼滅储
+     * suggest鍏抽敭璇嶆彁绀�
+     * reverseGeocoder閫嗗湴鍧�瑙f瀽
+     * geocoder鍦板潃瑙f瀽
+     * getCityList鑾峰彇鍩庡競鍒楄〃锛氱埗闆�
+     * getDistrictByCityId鑾峰彇鍖哄幙鍒楄〃锛氬瓙闆�
+     * calculateDistance璺濈璁$畻
+     * @param {Object} param 鎺ュ彛鍙傛暟
+     * @param {Object} data 鏁版嵁
+     */
+    handleData(param,data,feature){
+      if (feature == 'search') {
+        var searchResult = data.data;
+        var searchSimplify = [];
+        for (var i = 0; i < searchResult.length; i++) {
+          searchSimplify.push({
+            id: searchResult[i].id || null,
+            title: searchResult[i].title || null,
+            latitude: searchResult[i].location && searchResult[i].location.lat || null,
+            longitude: searchResult[i].location && searchResult[i].location.lng || null,
+            address: searchResult[i].address || null,
+            category: searchResult[i].category || null,
+            tel: searchResult[i].tel || null,
+            adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null,
+            city: searchResult[i].ad_info && searchResult[i].ad_info.city || null,
+            district: searchResult[i].ad_info && searchResult[i].ad_info.district || null,
+            province: searchResult[i].ad_info && searchResult[i].ad_info.province || null
+          })
+        }
+        param.success(data, {
+          searchResult: searchResult,
+          searchSimplify: searchSimplify
+        })
+      } else if (feature == 'suggest') {
+        var suggestResult = data.data;
+        var suggestSimplify = [];
+        for (var i = 0; i < suggestResult.length; i++) {
+          suggestSimplify.push({
+            adcode: suggestResult[i].adcode || null,
+            address: suggestResult[i].address || null,
+            category: suggestResult[i].category || null,
+            city: suggestResult[i].city || null,
+            district: suggestResult[i].district || null,
+            id: suggestResult[i].id || null,
+            latitude: suggestResult[i].location && suggestResult[i].location.lat || null,
+            longitude: suggestResult[i].location && suggestResult[i].location.lng || null,
+            province: suggestResult[i].province || null,
+            title: suggestResult[i].title || null,
+            type: suggestResult[i].type || null
+          })
+        }
+        param.success(data, {
+          suggestResult: suggestResult,
+          suggestSimplify: suggestSimplify
+          })
+      } else if (feature == 'reverseGeocoder') {
+        var reverseGeocoderResult = data.result;
+        var reverseGeocoderSimplify = {
+          address: reverseGeocoderResult.address || null,
+          latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null,
+          longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null,
+          adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null,
+          city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null,
+          district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null,
+          nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null,
+          province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null,
+          street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null,
+          street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null,
+          recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null,
+          rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null
+        };
+        if (reverseGeocoderResult.pois) {//鍒ゆ柇鏄惁杩斿洖鍛ㄨ竟poi
+          var pois = reverseGeocoderResult.pois;
+          var poisSimplify = [];
+          for (var i = 0;i < pois.length;i++) {
+            poisSimplify.push({
+              id: pois[i].id || null,
+              title: pois[i].title || null,
+              latitude: pois[i].location && pois[i].location.lat || null,
+              longitude: pois[i].location && pois[i].location.lng || null,
+              address: pois[i].address || null,
+              category: pois[i].category || null,
+              adcode: pois[i].ad_info && pois[i].ad_info.adcode || null,
+              city: pois[i].ad_info && pois[i].ad_info.city || null,
+              district: pois[i].ad_info && pois[i].ad_info.district || null,
+              province: pois[i].ad_info && pois[i].ad_info.province || null
+            })
+          }
+          param.success(data,{
+            reverseGeocoderResult: reverseGeocoderResult,
+            reverseGeocoderSimplify: reverseGeocoderSimplify,
+            pois: pois,
+            poisSimplify: poisSimplify
+          })
+        } else {
+          param.success(data, {
+            reverseGeocoderResult: reverseGeocoderResult,
+            reverseGeocoderSimplify: reverseGeocoderSimplify
+          })
+        }
+      } else if (feature == 'geocoder') {
+        var geocoderResult = data.result;
+        var geocoderSimplify = {
+          title: geocoderResult.title || null,
+          latitude: geocoderResult.location && geocoderResult.location.lat || null,
+          longitude: geocoderResult.location && geocoderResult.location.lng || null,
+          adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null,
+          province: geocoderResult.address_components && geocoderResult.address_components.province || null,
+          city: geocoderResult.address_components && geocoderResult.address_components.city || null,
+          district: geocoderResult.address_components && geocoderResult.address_components.district || null,
+          street: geocoderResult.address_components && geocoderResult.address_components.street || null,
+          street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null,
+          level: geocoderResult.level || null
+        };
+        param.success(data,{
+          geocoderResult: geocoderResult,
+          geocoderSimplify: geocoderSimplify
+        });
+      } else if (feature == 'getCityList') {
+        var provinceResult = data.result[0];
+        var cityResult = data.result[1];
+        var districtResult = data.result[2];
+        param.success(data,{
+          provinceResult: provinceResult,
+          cityResult: cityResult,
+          districtResult: districtResult
+        });
+      } else if (feature == 'getDistrictByCityId') {
+        var districtByCity = data.result[0];
+        param.success(data, districtByCity);
+      } else if (feature == 'calculateDistance') {
+        var calculateDistanceResult = data.result.elements;  
+        var distance = [];
+        for (var i = 0; i < calculateDistanceResult.length; i++){
+          distance.push(calculateDistanceResult[i].distance);
+        }   
+        param.success(data, {
+          calculateDistanceResult: calculateDistanceResult,
+          distance: distance
+          });
+      } else if (feature == 'direction') {
+        var direction = data.result.routes;
+        param.success(data,direction);
+      } else {
+        param.success(data);
+      }
+    },
+
+    /**
+     * 鏋勯�犲井淇¤姹傚弬鏁帮紝鍏叡灞炴�у鐞�
+     * 
+     * @param {Object} param 鎺ュ彛鍙傛暟
+     * @param {Object} param 閰嶇疆椤�
+     * @param {String} feature 鏂规硶鍚�
+     */
+    buildWxRequestConfig(param, options, feature) {
+        var that = this;
+        options.header = { "content-type": "application/json" };
+        options.method = 'GET';
+        options.success = function (res) {
+            var data = res.data;
+            if (data.status === 0) {
+              that.handleData(param, data, feature);
+            } else {
+                param.fail(data);
+            }
+        };
+        options.fail = function (res) {
+            res.statusCode = ERROR_CONF.WX_ERR_CODE;
+            param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+        };
+        options.complete = function (res) {
+            var statusCode = +res.statusCode;
+            switch(statusCode) {
+                case ERROR_CONF.WX_ERR_CODE: {
+                    param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+                    break;
+                }
+                case ERROR_CONF.WX_OK_CODE: {
+                    var data = res.data;
+                    if (data.status === 0) {
+                        param.complete(data);
+                    } else {
+                        param.complete(that.buildErrorConfig(data.status, data.message));
+                    }
+                    break;
+                }
+                default:{
+                    param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG));
+                }
+
+            }
+        };
+        return options;
+    },
+
+    /**
+     * 澶勭悊鐢ㄦ埛鍙傛暟鏄惁浼犲叆鍧愭爣杩涜涓嶅悓鐨勫鐞�
+     */
+    locationProcess(param, locationsuccess, locationfail, locationcomplete) {
+        var that = this;
+        locationfail = locationfail || function (res) {
+            res.statusCode = ERROR_CONF.WX_ERR_CODE;
+            param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+        };
+        locationcomplete = locationcomplete || function (res) {
+            if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {
+                param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));
+            }
+        };
+        if (!param.location) {
+            that.getWXLocation(locationsuccess, locationfail, locationcomplete);
+        } else if (that.checkLocation(param)) {
+            var location = Utils.getLocationParam(param.location);
+            locationsuccess(location);
+        }
+    }
+};
+
+
+class QQMapWX {
+
+    /**
+     * 鏋勯�犲嚱鏁�
+     * 
+     * @param {Object} options 鎺ュ彛鍙傛暟,key 涓哄繀閫夊弬鏁�
+     */
+    constructor(options) {
+        if (!options.key) {
+            throw Error('key鍊间笉鑳戒负绌�');
+        }
+        this.key = options.key;
+    };
+
+    /**
+     * POI鍛ㄨ竟妫�绱�
+     *
+     * @param {Object} options 鎺ュ彛鍙傛暟瀵硅薄
+     * 
+     * 鍙傛暟瀵硅薄缁撴瀯鍙互鍙傝��
+     * @see http://lbs.qq.com/webservice_v1/guide-search.html
+     */
+    search(options) {
+        var that = this;
+        options = options || {};
+
+        Utils.polyfillParam(options);
+
+        if (!Utils.checkKeyword(options)) {
+            return;
+        }
+
+        var requestParam = {
+            keyword: options.keyword,
+            orderby: options.orderby || '_distance',
+            page_size: options.page_size || 10,
+            page_index: options.page_index || 1,
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.address_format) {
+            requestParam.address_format = options.address_format;
+        }
+
+        if (options.filter) {
+            requestParam.filter = options.filter;
+        }
+
+        var distance = options.distance || "1000";
+        var auto_extend = options.auto_extend || 1;
+        var region = null;
+        var rectangle = null;
+
+        //鍒ゆ柇鍩庡競闄愬畾鍙傛暟
+        if (options.region) {
+          region = options.region;
+        }
+
+        //鐭╁舰闄愬畾鍧愭爣(鏆傛椂鍙敮鎸佸瓧绗︿覆鏍煎紡)
+        if (options.rectangle) {
+          rectangle = options.rectangle;
+        }
+
+        var locationsuccess = function (result) {        
+          if (region && !rectangle) {
+            //鍩庡競闄愬畾鍙傛暟鎷兼帴
+            requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")";
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');
+            }
+          } else if (rectangle && !region) {
+            //鐭╁舰鎼滅储
+            requestParam.boundary = "rectangle(" + rectangle + ")";
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');
+            }
+            } else {
+              requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")";
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');
+            }
+            }            
+            wx.request(Utils.buildWxRequestConfig(options, {
+                url: URL_SEARCH,
+                data: requestParam
+            }, 'search'));
+        };
+        Utils.locationProcess(options, locationsuccess);
+    };
+
+    /**
+     * sug妯$硦妫�绱�
+     *
+     * @param {Object} options 鎺ュ彛鍙傛暟瀵硅薄
+     * 
+     * 鍙傛暟瀵硅薄缁撴瀯鍙互鍙傝��
+     * http://lbs.qq.com/webservice_v1/guide-suggestion.html
+     */
+    getSuggestion(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (!Utils.checkKeyword(options)) {
+            return;
+        }
+
+        var requestParam = {
+            keyword: options.keyword,
+            region: options.region || '鍏ㄥ浗',
+            region_fix: options.region_fix || 0,
+            policy: options.policy || 0,
+            page_size: options.page_size || 10,//鎺у埗鏄剧ず鏉℃暟
+            page_index: options.page_index || 1,//鎺у埗椤垫暟
+            get_subpois : options.get_subpois || 0,//杩斿洖瀛愬湴鐐�
+            output: 'json',
+            key: that.key
+        };
+        //闀垮湴鍧�
+        if (options.address_format) {
+          requestParam.address_format = options.address_format;
+        }
+        //杩囨护
+        if (options.filter) {
+          requestParam.filter = options.filter;
+        }
+        //鎺掑簭
+        if (options.location) {
+          var locationsuccess = function (result) {
+            requestParam.location = result.latitude + ',' + result.longitude;
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest');
+            }
+            wx.request(Utils.buildWxRequestConfig(options, {
+              url: URL_SUGGESTION,
+              data: requestParam
+            }, "suggest"));      
+          };
+          Utils.locationProcess(options, locationsuccess);
+        } else {
+          if (options.sig) {
+            requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest');
+          }
+          wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_SUGGESTION,
+            data: requestParam
+          }, "suggest"));      
+        }        
+    };
+
+    /**
+     * 閫嗗湴鍧�瑙f瀽
+     *
+     * @param {Object} options 鎺ュ彛鍙傛暟瀵硅薄
+     * 
+     * 璇锋眰鍙傛暟缁撴瀯鍙互鍙傝��
+     * http://lbs.qq.com/webservice_v1/guide-gcoder.html
+     */
+    reverseGeocoder(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+        var requestParam = {
+            coord_type: options.coord_type || 5,
+            get_poi: options.get_poi || 0,
+            output: 'json',
+            key: that.key
+        };
+        if (options.poi_options) {
+            requestParam.poi_options = options.poi_options
+        }
+
+        var locationsuccess = function (result) {
+            requestParam.location = result.latitude + ',' + result.longitude;
+          if (options.sig) {
+            requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder');
+          }
+            wx.request(Utils.buildWxRequestConfig(options, {
+                url: URL_GET_GEOCODER,
+                data: requestParam
+            }, 'reverseGeocoder'));
+        };
+        Utils.locationProcess(options, locationsuccess);
+    };
+
+    /**
+     * 鍦板潃瑙f瀽
+     *
+     * @param {Object} options 鎺ュ彛鍙傛暟瀵硅薄
+     * 
+     * 璇锋眰鍙傛暟缁撴瀯鍙互鍙傝��
+     * http://lbs.qq.com/webservice_v1/guide-geocoder.html
+     */
+    geocoder(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (Utils.checkParamKeyEmpty(options, 'address')) {
+            return;
+        }
+
+        var requestParam = {
+            address: options.address,
+            output: 'json',
+            key: that.key
+        };
+
+        //鍩庡競闄愬畾
+        if (options.region) {
+          requestParam.region = options.region;
+        }
+
+        if (options.sig) {
+          requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder');
+        }
+
+        wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_GET_GEOCODER,
+            data: requestParam
+        },'geocoder'));
+    };
+
+
+    /**
+     * 鑾峰彇鍩庡競鍒楄〃
+     *
+     * @param {Object} options 鎺ュ彛鍙傛暟瀵硅薄
+     * 
+     * 璇锋眰鍙傛暟缁撴瀯鍙互鍙傝��
+     * http://lbs.qq.com/webservice_v1/guide-region.html
+     */
+    getCityList(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+        var requestParam = {
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.sig) {
+          requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList');
+        }
+
+        wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_CITY_LIST,
+            data: requestParam
+        },'getCityList'));
+    };
+
+    /**
+     * 鑾峰彇瀵瑰簲鍩庡競ID鐨勫尯鍘垮垪琛�
+     *
+     * @param {Object} options 鎺ュ彛鍙傛暟瀵硅薄
+     * 
+     * 璇锋眰鍙傛暟缁撴瀯鍙互鍙傝��
+     * http://lbs.qq.com/webservice_v1/guide-region.html
+     */
+    getDistrictByCityId(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (Utils.checkParamKeyEmpty(options, 'id')) {
+            return;
+        }
+
+        var requestParam = {
+            id: options.id || '',
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.sig) {
+          requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId');
+        }
+
+        wx.request(Utils.buildWxRequestConfig(options, {
+            url: URL_AREA_LIST,
+            data: requestParam
+        },'getDistrictByCityId'));
+    };
+
+    /**
+     * 鐢ㄤ簬鍗曡捣鐐瑰埌澶氱粓鐐圭殑璺嚎璺濈(闈炵洿绾胯窛绂�)璁$畻锛�
+     * 鏀寔涓ょ璺濈璁$畻鏂瑰紡锛氭琛屽拰椹捐溅銆�
+     * 璧风偣鍒扮粓鐐规渶澶ч檺鍒剁洿绾胯窛绂�10鍏噷銆�
+     *
+     * 鏂板鐩寸嚎璺濈璁$畻銆�
+     * 
+     * @param {Object} options 鎺ュ彛鍙傛暟瀵硅薄
+     * 
+     * 璇锋眰鍙傛暟缁撴瀯鍙互鍙傝��
+     * http://lbs.qq.com/webservice_v1/guide-distance.html
+     */
+    calculateDistance(options) {
+        var that = this;
+        options = options || {};
+        Utils.polyfillParam(options);
+
+        if (Utils.checkParamKeyEmpty(options, 'to')) {
+            return;
+        }
+
+        var requestParam = {
+            mode: options.mode || 'walking',
+            to: Utils.location2query(options.to),
+            output: 'json',
+            key: that.key
+        };
+
+        if (options.from) {
+          options.location = options.from;
+        }
+
+        //璁$畻鐩寸嚎璺濈
+        if(requestParam.mode == 'straight'){        
+          var locationsuccess = function (result) {
+            var locationTo = Utils.getEndLocation(requestParam.to);//澶勭悊缁堢偣鍧愭爣
+            var data = {
+              message:"query ok",
+              result:{
+                elements:[]
+              },
+              status:0
+            };
+            for (var i = 0; i < locationTo.length; i++) {
+              data.result.elements.push({//灏嗗潗鏍囧瓨鍏�
+                distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng),
+                duration:0,
+                from:{
+                  lat: result.latitude,
+                  lng:result.longitude
+                },
+                to:{
+                  lat: locationTo[i].lat,
+                  lng: locationTo[i].lng
+                }
+              });            
+            }
+            var calculateResult = data.result.elements;
+            var distanceResult = [];
+            for (var i = 0; i < calculateResult.length; i++) {
+              distanceResult.push(calculateResult[i].distance);
+            }  
+            return options.success(data,{
+              calculateResult: calculateResult,
+              distanceResult: distanceResult
+            });
+          };
+          
+          Utils.locationProcess(options, locationsuccess);
+        } else {
+          var locationsuccess = function (result) {
+            requestParam.from = result.latitude + ',' + result.longitude;
+            if (options.sig) {
+              requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance');
+            }
+            wx.request(Utils.buildWxRequestConfig(options, {
+              url: URL_DISTANCE,
+              data: requestParam
+            },'calculateDistance'));
+          };
+
+          Utils.locationProcess(options, locationsuccess);
+        }      
+    };
+
+  /**
+   * 璺嚎瑙勫垝锛�
+   * 
+   * @param {Object} options 鎺ュ彛鍙傛暟瀵硅薄
+   * 
+   * 璇锋眰鍙傛暟缁撴瀯鍙互鍙傝��
+   * https://lbs.qq.com/webservice_v1/guide-road.html
+   */
+  direction(options) {
+    var that = this;
+    options = options || {};
+    Utils.polyfillParam(options);
+
+    if (Utils.checkParamKeyEmpty(options, 'to')) {
+      return;
+    }
+
+    var requestParam = {
+      output: 'json',
+      key: that.key
+    };
+
+    //to鏍煎紡澶勭悊
+    if (typeof options.to == 'string') {
+      requestParam.to = options.to;
+    } else {
+      requestParam.to = options.to.latitude + ',' + options.to.longitude;
+    }
+    //鍒濆鍖栧眬閮ㄨ姹傚煙鍚�
+    var SET_URL_DIRECTION = null;
+    //璁剧疆榛樿mode灞炴��
+    options.mode = options.mode || MODE.driving;
+
+    //璁剧疆璇锋眰鍩熷悕
+    SET_URL_DIRECTION = URL_DIRECTION + options.mode;
+
+    if (options.from) {
+      options.location = options.from;
+    }
+
+    if (options.mode == MODE.driving) {
+      if (options.from_poi) {
+        requestParam.from_poi = options.from_poi;
+      }
+      if (options.heading) {
+        requestParam.heading = options.heading;
+      }
+      if (options.speed) {
+        requestParam.speed = options.speed;
+      }
+      if (options.accuracy) {
+        requestParam.accuracy = options.accuracy;
+      }
+      if (options.road_type) {
+        requestParam.road_type = options.road_type;
+      }
+      if (options.to_poi) {
+        requestParam.to_poi = options.to_poi;
+      }
+      if (options.from_track) {
+        requestParam.from_track = options.from_track;
+      }
+      if (options.waypoints) {
+        requestParam.waypoints = options.waypoints;
+      }
+      if (options.policy) {
+        requestParam.policy = options.policy;
+      }
+      if (options.plate_number) {
+        requestParam.plate_number = options.plate_number;
+      }
+    }
+
+    if (options.mode == MODE.transit) {
+      if (options.departure_time) {
+        requestParam.departure_time = options.departure_time;
+      }
+      if (options.policy) {
+        requestParam.policy = options.policy;
+      }
+    } 
+
+    var locationsuccess = function (result) {
+      requestParam.from = result.latitude + ',' + result.longitude;
+      if (options.sig) {
+        requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction',options.mode);
+      }
+      wx.request(Utils.buildWxRequestConfig(options, {
+        url: SET_URL_DIRECTION,
+        data: requestParam
+      }, 'direction'));
+    };
+
+    Utils.locationProcess(options, locationsuccess);
+  }
+};
+
+module.exports = QQMapWX;
\ No newline at end of file

--
Gitblit v1.9.1