From 9dfc54bf6e0fdb3c746815707487c6ae50e98905 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期二, 25 二月 2025 18:30:08 +0800
Subject: [PATCH] 更新

---
 bicycle/pages/index/index.vue |  521 ++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 350 insertions(+), 171 deletions(-)

diff --git a/bicycle/pages/index/index.vue b/bicycle/pages/index/index.vue
index 87faa72..09dfeac 100644
--- a/bicycle/pages/index/index.vue
+++ b/bicycle/pages/index/index.vue
@@ -13,10 +13,17 @@
 			</view>
 			<view class="index_box">
 				<view class="index_box_map">
-					<map class="map" scale="15" :show-location="true" :markers="markers" :latitude="latitude" :longitude="longitude" />
+					<map
+						id="mapId"
+						class="map"
+						scale="15"
+						:show-location="true"
+						:polygons="eleBusinessArea"
+						:markers="markers"
+						:latitude="latitude"
+						:longitude="longitude" />
 					<view class="index_box_map_type">
-						<view class="index_box_map_type_row active">鑷杞�</view>
-						<view class="index_box_map_type_row">鐢靛姩杞�</view>
+						<view :class="type === item.id ? 'index_box_map_type_row active' : 'index_box_map_type_row'" v-for="(item, index) in types" :key="index" @click="clickType(item.id)">{{item.name}}</view>
 					</view>
 					<view class="index_box_icon" @click="jumpMap">
 						<image src="@/static/icon/ic_fullscreen@2x.png" mode="widthFix"></image>
@@ -43,18 +50,22 @@
 						<text @click="jumpTC">鏇村浼樻儬 ></text>
 					</view>
 					<scroll-view scroll-x class="scrollView">
-						<view class="index_box_vip_row" v-for="(item, index) in 3" :key="index">
+						<view class="index_box_vip_row" v-for="(item, index) in tcList" :key="index">
 							<view class="vip1">
-								<text>鐢靛崟杞﹀勾鍗�</text>
-								<text>365</text>
+								<view class="vip1_left">
+									{{item.name || ''}}
+								</view>
+								<view class="vip1_right">
+									{{item.price || ''}}
+								</view>
 							</view>
 							<view class="vip2">
-								<text>365澶╃晠楠戯紝浜彈楠戣溅涔愯叮</text>
-								<u>楼699</u>
+								<text>{{item.descs || ''}}</text>
+								<u>楼{{item.linePrice || ''}}</u>
 							</view>
 							<view class="vip3">
-								<view class="vip3_info">浣庤嚦1鍏�/澶�</view>
-								<view class="vip3_button">璐拱</view>
+								<view class="vip3_info">浣庤嚦{{item.dayPrice}}鍏�/澶�</view>
+								<view class="vip3_button" @click="purchase(item.id)">璐拱</view>
 							</view>
 						</view>
 					</scroll-view>
@@ -222,7 +233,7 @@
 		<!-- 鑷杞�-纭缁撶畻寮规 -->
 		<u-modal :show="show7" title="鎻愮ず" content='纭缁撶畻鍚楋紵' :showCancelButton="true" cancelText="鍙栨秷" @confirm="settlement1" @cancel="show7 = false"></u-modal>
 		<!-- 骞垮憡 -->
-		<u-popup :show="show" mode="center" :closeOnClickOverlay="false" overlayStyle="z-index: 10075;" bgColor="transparent" :round="10" @close="show = false">
+		<u-popup :show="show" mode="center" :closeOnClickOverlay="false" zIndex="99999" bgColor="transparent" :round="10" @close="show = false">
 			<view class="popupbox">
 				<view class="advertisement">
 					<image :src="info.adList[0].imgfullurl" mode="widthFix"></image>
@@ -231,6 +242,9 @@
 				</image>
 			</view>
 		</u-popup>
+	
+		<!-- 鐢佃溅 -->
+		<tram ref="d_tram" @unlockDoor="refresh" />
 	</view>
 </template>
 
@@ -238,7 +252,7 @@
 	import {
 		mapState
 	} from 'vuex'
-
+	import tram from '@/components/tram/tram.vue'
 	export default {
 		data() {
 			return {
@@ -290,9 +304,27 @@
 				content: '',
 				
 				timer: null,
-				isDisabled: true
+				isDisabled: true,
+				
+				tcList: [],
+				type: 1,
+				types: [
+					{ name: '鑷杞�', id: 1 },
+					{ name: '鐢靛姩杞�', id: 2 }
+				],
+				eleBusinessArea: [
+					{
+						points: [],
+						fillColor: "#0077FF12",
+						strokeColor: "#0077FF",
+						strokeWidth: 3,
+						zIndex: 7
+					}
+				],
+				onPullDownRefresh: false
 			}
 		},
+		components: { tram },
 		computed: {
 			...mapState(['navHeight', 'statusbarHeight', 'userInfo'])
 		},
@@ -308,10 +340,56 @@
 			// 	this.carRentalCopy(decodeURIComponent(options.scene))
 			// }
 		},
+		onPullDownRefresh() {
+			this.onPullDownRefresh = true
+			this.refresh()
+		},
+		onShow() {
+			this.refresh()
+		},
 		onPageScroll(e) {
 			this.top = e.scrollTop
 		},
 		methods: {
+			clickcontrol(){
+				let mapObjs = uni.createMapContext('mapId', this)
+				mapObjs.moveToLocation({
+					complete: res => {
+						console.log('绉诲姩瀹屾垚:', res)
+					}
+				})
+			},
+			async getEleBikeList() {
+				let res = await this.$u.api.eleBikeList({})
+				if (res.code === 200) {
+					this.markers = []
+					res.data.forEach((item, index) => {
+						this.markers.push({
+							id: index,
+							width: 40,
+							height: 40,
+							latitude: item.latitude,
+							longitude: item.longitude,
+							title: item.name,
+							iconPath: '/static/icon/ic_bike@2x.png'
+						})
+					})
+					this.clickcontrol()
+				}
+			},
+			clickType(id) {
+				this.type = id
+				if (id === 1) {
+					this.getSite()
+				} else {
+					this.getEleBikeList()
+				}
+			},
+			purchase(id) {
+				uni.navigateTo({
+					url: `/pages/packageDetails/packageDetails?id=${id}`
+				});
+			},
 			jumpTC() {
 				uni.navigateTo({
 					url: '/pages/setMenu/setMenu'
@@ -386,7 +464,7 @@
 			},
 			jumpMap() {
 				uni.navigateTo({
-					url: '/pages/maps/maps'
+					url: `/pages/maps/maps?type=${this.type}`
 				});
 			},
 			// 璁′环瑙勫垯
@@ -412,6 +490,7 @@
 									addr: item.addr
 								})
 							})
+							this.clickcontrol()
 						}
 					})
 			},
@@ -529,7 +608,6 @@
 										},
 										fail(err) {
 											that.disable = false
-											console.log(err)
 										}
 									})
 								}
@@ -577,6 +655,8 @@
 			},
 			// 鎵爜绉熻溅
 			async carRental() {
+				var that = this;
+				// 鍒锋柊棣栭〉淇℃伅
 				await this.refresh()
 				// 鍒ゆ柇鏈夋病鏈変氦鎶奸噾
 				if (this.info.depositStatus === 0) {
@@ -586,65 +666,79 @@
 					uni.showToast({ title: '缁撶畻鐢宠鎻愪氦鎴愬姛锛岃鑰愬績绛夊緟閫�娆撅紒', icon: 'none', duration: 2000 });
 					return;
 				}
-				var that = this;
-				if (!that.disable) {
-					that.disable = true
-					// 鎵爜瑙i攣楠戣
-					uni.scanCode({
-						success: async function(result) {
-							let text = decodeURIComponent(result.path)
-							text = text.substring(text.lastIndexOf('?') + 7, text.length)
-							// 鎵撳紑寮�閿佸脊妗�
-							that.show5 = true
-							// 璋冪敤寮�閿佹帴鍙�
-							let res = await that.$u.api.openLock({
-								code: text
-							})
-							if (res.code === 200) {
-								that.disable = false
-								that.show6 = false
+				// 鑷杞�
+				if (this.type === 1) {
+					if (!that.disable) {
+						that.disable = true
+						// 鎵爜瑙i攣楠戣
+						uni.scanCode({
+							success: async function(result) {
+								let text = decodeURIComponent(result.path)
+								text = text.substring(text.lastIndexOf('?') + 7, text.length)
+								// 鎵撳紑寮�閿佸脊妗�
 								that.show5 = true
-								// 寰幆娆℃暟
-								var num = 1
-								// 寰幆鏌ョ湅瑙i攣缁撴灉
-								let timer = setInterval(async () => {
-									num += 1
-									let res1 = await that.$u.api.refreshLock({
-										id: res.data.id
-									})
-									// 寮�閿佹垚鍔�
-									if (res1.data.status === 1) {
-										that.refresh()
-										clearInterval(timer)
-										that.show5 = false
-										setTimeout(() => {
-											that.show2 = true
-										}, 500)
-									}
-									// 寮�閿佸け璐�
-									if (res1.data.status === 3) {
-										that.refresh()
-										clearInterval(timer)
-										that.show5 = false
-										uni.showToast({ title: '寮�閿佸け璐�', icon: 'error', duration: 2000 });
-									}
-									// 寮�閿佽秴鏃�
-									if (num === 180) {
-										that.refresh()
-										clearInterval(timer)
-										that.show5 = false
-										uni.showToast({ title: '寮�閿佽秴鏃�', icon: 'error', duration: 2000 });
-									}
-								}, 1000)
-							} else {
-								that.show5 = false
+								// 璋冪敤寮�閿佹帴鍙�
+								let res = await that.$u.api.openLock({
+									code: text
+								})
+								if (res.code === 200) {
+									that.disable = false
+									that.show6 = false
+									that.show5 = true
+									// 寰幆娆℃暟
+									var num = 1
+									// 寰幆鏌ョ湅瑙i攣缁撴灉
+									let timer = setInterval(async () => {
+										num += 1
+										let res1 = await that.$u.api.refreshLock({
+											id: res.data.id
+										})
+										// 寮�閿佹垚鍔�
+										if (res1.data.status === 1) {
+											that.refresh()
+											clearInterval(timer)
+											that.show5 = false
+											setTimeout(() => {
+												that.show2 = true
+											}, 500)
+										}
+										// 寮�閿佸け璐�
+										if (res1.data.status === 3) {
+											that.refresh()
+											clearInterval(timer)
+											that.show5 = false
+											uni.showToast({ title: '寮�閿佸け璐�', icon: 'error', duration: 2000 });
+										}
+										// 寮�閿佽秴鏃�
+										if (num === 180) {
+											that.refresh()
+											clearInterval(timer)
+											that.show5 = false
+											uni.showToast({ title: '寮�閿佽秴鏃�', icon: 'error', duration: 2000 });
+										}
+									}, 1000)
+								} else {
+									that.show5 = false
+									that.disable = false
+								}
+							},
+							fail() {
 								that.disable = false
 							}
-						},
-						fail() {
-							that.disable = false
+						});
+					}
+				} else {
+					uni.scanCode({
+						success: async function(result) {
+							let res = await that.$u.api.getBikeChargingRule({
+								code: result.result
+							})
+							if (res.code === 200) {
+								that.$refs.d_tram.info = res.data
+								that.$refs.d_tram.d_show1 = true
+							}
 						}
-					});
+					})
 				}
 			},
 			// 鑾峰彇缁忕含搴�
@@ -775,58 +869,79 @@
 			},
 			// 鑾峰彇棣栭〉淇℃伅
 			getHomeInfo() {
+				var that = this
 				this.$u.api.home()
-					.then(res => {
+					.then(async res => {
 						if (res.code === 200) {
 							this.info = res.data
 							// 鏄惁寮瑰嚭骞垮憡鍥�
-							if (res.data.adList.length > 0) {
+							if (res.data.adList.length > 0 && !res.data.memberRidesResponse) {
 								this.show = true
 							}
-							// 瑙i攣涓�
-							if (res.data.rideStatus === 0) {
-								this.show5 = true
-								// 寰幆娆℃暟
-								var num = 1
-								// 寰幆鏌ョ湅瑙i攣缁撴灉
-								let timer = setInterval(async () => {
-									num += 1
-									let res1 = await this.$u.api.refreshLock({
-										id: res.data.memberRidesResponse.rideId
-									})
-									// 寮�閿佹垚鍔�
-									if (res1.data.status === 1) {
-										clearInterval(timer)
-										this.show5 = false
-										setTimeout(() => {
-											this.show2 = true
-										}, 500)
-									}
-									// 寮�閿佸け璐�
-									if (res1.data.status === 3) {
-										clearInterval(timer)
-										this.show5 = false
-										uni.showToast({ title: '寮�閿佸け璐�', icon: 'error', duration: 2000 });
-									}
-									// 寮�閿佽秴鏃�
-									if (num === 180) {
-										clearInterval(timer)
-										this.show5 = false
-										uni.showToast({ title: '寮�閿佽秴鏃�', icon: 'error', duration: 2000 });
-									}
-								}, 1000)
-							}
-							// 楠戣涓�
-							if (res.data.rideStatus === 1) {
-								this.show2 = true
-								this.refreshStatus()
-							}
-							if (res.data.rideStatus === 5) {
-								this.show5 = true
-							}
-							if (res.data.rideStatus === 2) {
-								this.show6 = true
-								this.refreshStatus()
+							// 鑷杞�
+							if (res.data.memberRidesResponse && res.data.memberRidesResponse.ridesType === 0) {
+								this.type = 1
+								// 瑙i攣涓�
+								if (res.data.rideStatus === 0) {
+									this.show5 = true
+									// 寰幆娆℃暟
+									var num = 1
+									// 寰幆鏌ョ湅瑙i攣缁撴灉
+									let timer = setInterval(async () => {
+										num += 1
+										let res1 = await this.$u.api.refreshLock({
+											id: res.data.memberRidesResponse.rideId
+										})
+										// 寮�閿佹垚鍔�
+										if (res1.data.status === 1) {
+											clearInterval(timer)
+											this.show5 = false
+											setTimeout(() => {
+												this.show2 = true
+											}, 500)
+										}
+										// 寮�閿佸け璐�
+										if (res1.data.status === 3) {
+											clearInterval(timer)
+											this.show5 = false
+											uni.showToast({ title: '寮�閿佸け璐�', icon: 'error', duration: 2000 });
+										}
+										// 寮�閿佽秴鏃�
+										if (num === 180) {
+											clearInterval(timer)
+											this.show5 = false
+											uni.showToast({ title: '寮�閿佽秴鏃�', icon: 'error', duration: 2000 });
+										}
+									}, 1000)
+								}
+								// 楠戣涓�
+								if (res.data.rideStatus === 1) {
+									this.show2 = true
+									this.refreshStatus()
+								}
+								if (res.data.rideStatus === 5) {
+									this.show5 = true
+								}
+								if (res.data.rideStatus === 2) {
+									this.show6 = true
+									this.refreshStatus()
+								}
+							} else if (res.data.memberRidesResponse && res.data.memberRidesResponse.ridesType === 1) {
+								this.type = 2
+								that.$refs.d_tram.info = {
+									...res.data.memberRidesResponse.discountMember,
+									...res.data.memberRidesResponse,
+									deposit: res.data.deposit,
+									goodsOrderId: res.data.goodsOrderId
+								}
+								// 楠戣涓�
+								if (res.data.rideStatus === 1) {
+									that.$refs.d_tram.d_show3 = true
+								}
+								// 涓存椂閿佽溅
+								if (res.data.rideStatus === 4) {
+									that.$refs.d_tram.d_show4 = true
+								}
 							}
 							// 鏄惁钀ヤ笟
 							if (res.data.isBusiness === 0) {
@@ -841,6 +956,14 @@
 								this.content = res.data.stopServeTips
 								this.show4 = true
 							}
+							this.tcList = res.data.discountList
+							let arr = JSON.parse(res.data.eleBusinessArea)
+							this.eleBusinessArea[0].points = arr.map(item => {
+								return {
+									latitude: item.lat,
+									longitude: item.lng
+								}
+							})
 						}
 					})
 			},
@@ -848,50 +971,93 @@
 			refresh() {
 				this.$u.api.home()
 					.then(res => {
+						uni.stopPullDownRefresh()
 						if (res.code === 200) {
 							this.info = res.data
-							// 瑙i攣涓�
-							if (res.data.rideStatus === 0) {
-								this.show5 = true
-								// 寰幆娆℃暟
-								var num = 1
-								// 寰幆鏌ョ湅瑙i攣缁撴灉
-								let timer = setInterval(async () => {
-									num += 1
-									let res1 = await this.$u.api.refreshLock({
-										id: res.data.memberRidesResponse.rideId
-									})
-									// 寮�閿佹垚鍔�
-									if (res1.data.status === 1) {
-										clearInterval(timer)
-										this.show5 = false
-										setTimeout(() => {
-											this.show2 = true
-										}, 500)
-									}
-									// 寮�閿佸け璐�
-									if (res1.data.status === 3) {
-										clearInterval(timer)
-										this.show5 = false
-										uni.showToast({ title: '寮�閿佸け璐�', icon: 'error', duration: 2000 });
-									}
-									// 寮�閿佽秴鏃�
-									if (num === 180) {
-										clearInterval(timer)
-										this.show5 = false
-										uni.showToast({ title: '寮�閿佽秴鏃�', icon: 'error', duration: 2000 });
-									}
-								}, 1000)
+							// 鏈煡鍒伴獞琛岃鍗�
+							if (!res.data.memberRidesResponse && this.onPullDownRefresh) {
+								this.show1 = false
+								this.show2 = false
+								this.show3 = false
+								this.show4 = false
+								this.show5 = false
+								this.show6 = false
+								this.show7 = false
+								
+								that.$refs.d_tram.d_show = false
+								that.$refs.d_tram.d_show1 = false
+								that.$refs.d_tram.d_show2 = false
+								that.$refs.d_tram.d_show3 = false
+								that.$refs.d_tram.d_show4 = false
+								that.$refs.d_tram.d_show5 = false
+								that.$refs.d_tram.d_show6 = false
+								that.$refs.d_tram.d_show7 = false
+								that.$refs.d_tram.d_show8 = false
+								that.$refs.d_tram.d_show9 = false
+								this.onPullDownRefresh = false
+								return
 							}
-							if (res.data.rideStatus === 1) {
-								this.show2 = true
-								this.refreshStatus()
-							}
-							if (res.data.rideStatus === 5) {
-								this.show5 = true
-							}
-							if (res.data.rideStatus === 2) {
-								this.show6 = true
+							// 鑷杞�
+							if (res.data.memberRidesResponse.ridesType === 0) {
+								// 瑙i攣涓�
+								if (res.data.rideStatus === 0) {
+									this.show5 = true
+									// 寰幆娆℃暟
+									var num = 1
+									// 寰幆鏌ョ湅瑙i攣缁撴灉
+									let timer = setInterval(async () => {
+										num += 1
+										let res1 = await this.$u.api.refreshLock({
+											id: res.data.memberRidesResponse.rideId
+										})
+										// 寮�閿佹垚鍔�
+										if (res1.data.status === 1) {
+											clearInterval(timer)
+											this.show5 = false
+											setTimeout(() => {
+												this.show2 = true
+											}, 500)
+										}
+										// 寮�閿佸け璐�
+										if (res1.data.status === 3) {
+											clearInterval(timer)
+											this.show5 = false
+											uni.showToast({ title: '寮�閿佸け璐�', icon: 'error', duration: 2000 });
+										}
+										// 寮�閿佽秴鏃�
+										if (num === 180) {
+											clearInterval(timer)
+											this.show5 = false
+											uni.showToast({ title: '寮�閿佽秴鏃�', icon: 'error', duration: 2000 });
+										}
+									}, 1000)
+								}
+								if (res.data.rideStatus === 1) {
+									this.show2 = true
+									this.refreshStatus()
+								}
+								if (res.data.rideStatus === 5) {
+									this.show5 = true
+								}
+								if (res.data.rideStatus === 2) {
+									this.show6 = true
+								}
+							} else if (res.data.memberRidesResponse.ridesType === 1) {
+								this.type = 2
+								this.$refs.d_tram.info = {
+									...res.data.memberRidesResponse.discountMember,
+									...res.data.memberRidesResponse,
+									deposit: res.data.deposit,
+									goodsOrderId: res.data.goodsOrderId
+								}
+								// 楠戣涓�
+								if (res.data.rideStatus === 1) {
+									this.$refs.d_tram.d_show3 = true
+								}
+								// 涓存椂閿佽溅
+								if (res.data.rideStatus === 4) {
+									this.$refs.d_tram.d_show4 = true
+								}
 							}
 						}
 					})
@@ -1134,22 +1300,29 @@
 								display: flex;
 								align-items: center;
 								justify-content: space-between;
-								text {
-									&:nth-child(1) {
-										font-weight: 500;
-										font-size: 32rpx;
-										color: #303030;
-									}
-									&:nth-child(2) {
+								.vip1_left {
+									flex: 1;
+									font-weight: 500;
+									font-size: 32rpx;
+									color: #303030;
+									white-space: nowrap;
+									overflow: hidden;
+									text-overflow: ellipsis;
+								}
+								.vip1_right {
+									flex-shrink: 0;
+									margin-left: 30rpx;
+									font-weight: 400;
+									font-size: 40rpx;
+									color: #FF5A31;
+									white-space: nowrap;
+									overflow: hidden;
+									text-overflow: ellipsis;
+									&:before {
+										content: '锟�';
 										font-weight: 400;
-										font-size: 40rpx;
+										font-size: 26rpx;
 										color: #FF5A31;
-										&:before {
-											content: '锟�';
-											font-weight: 400;
-											font-size: 26rpx;
-											color: #FF5A31;
-										}
 									}
 								}
 							}
@@ -1161,14 +1334,20 @@
 								margin-top: 10rpx;
 								margin-bottom: 16rpx;
 								text {
+									flex: 1;
+									white-space: nowrap;
+									overflow: hidden;
+									text-overflow: ellipsis;
 									font-weight: 400;
 									font-size: 26rpx;
 									color: #777777;
 								}
 								u {
+									flex-shrink: 0;
 									font-weight: 400;
 									font-size: 24rpx;
 									color: #999999;
+									text-decoration: line-through;
 								}
 							}
 							.vip3 {

--
Gitblit v1.9.3