From a59ff44b2eaa7020f0529632d9ec064c4dc38e27 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期二, 28 四月 2026 22:08:46 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/gtzxinglijicun

---
 small-program/pages/storage-point-detail/storage-point-detail.vue |  574 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 574 insertions(+), 0 deletions(-)

diff --git a/small-program/pages/storage-point-detail/storage-point-detail.vue b/small-program/pages/storage-point-detail/storage-point-detail.vue
new file mode 100644
index 0000000..8b638b3
--- /dev/null
+++ b/small-program/pages/storage-point-detail/storage-point-detail.vue
@@ -0,0 +1,574 @@
+<template>
+	<view class="storage-page">
+		<view class="content-wrap">
+				<swiper class="popup-banner-swiper" :indicator-dots="true" :autoplay="true" :interval="3000" :duration="500" :circular="true">
+					<swiper-item v-for="(item, index) in activeStore.images" :key="index">
+						<image class="popup-banner-image" :src="item" mode="aspectFill"></image>
+					</swiper-item>
+				</swiper>
+				<view class="popup-body">
+				<text class="popup-title">{{ activeStore.name ||'' }}</text>
+				<text class="popup-hours">{{ activeStore.time ||'' }}</text>
+				<text class="popup-desc" v-if="activeStore.content">{{ activeStore.content ||'' }}</text>
+				<view class="popup-address-row" @click="openNavigation">
+					<view class="popup-address">
+						<image src="/static/icon/home_ic_location3@2x.png" mode="aspectFit"></image>
+						<text>{{ activeStore.address ||'' }}</text>
+					</view>
+					<view class="popup-distance-wrap">
+						<image src="/static/icon/ic_address@2x.png" mode="aspectFit"></image>
+						<text>{{ activeStore.distanceText ||'' }}</text>
+					</view>
+				</view>
+				<view class="popup-gap"></view>
+				<view class="popup-section">
+					<text class="popup-section-title">瀵勫瓨绫诲瀷</text>
+					<text class="popup-section-text">{{ activeStore.depositTypes ||''}}</text>
+				</view>
+				<view class="popup-gap"></view>
+				<view class="popup-section no-border">
+					<text class="popup-section-title">鏀惰垂鏍囧噯</text>
+					<text class="popup-section-text">{{ activeStore.feeStandard || ''}}</text>
+				</view>
+				</view>
+			<view class="popup-footer">
+				  <view class="popup-btn ghost" @click="contactStore">鑱旂郴闂ㄥ簵</view>  
+				<view class="popup-btn primary" @click="storeLuggage">琛屾潕瀵勫瓨</view>
+			</view>
+		</view>
+		<auth-login :show="showLogin" @close="showLogin = false"></auth-login>
+	</view>
+</template>
+
+<script>
+import { mapState } from 'vuex'
+	export default {
+		data() {
+			return { 
+				id:null,
+				activeStore: {},
+				showLogin: false
+			}
+		},
+		computed: {
+			...mapState(['latitude', 'longitude', 'token'])
+		},
+		async onLoad(options) {
+			console.log(options)
+				this.id = options.id
+				this.getShopInfo()
+		}, 
+		methods: { 
+			openNavigation() {
+				if( this.activeStore && this.activeStore.id){
+					uni.openLocation({
+						latitude: this.activeStore.latitude,
+						longitude: this.activeStore.longitude,
+						name: this.activeStore.name,
+						address: this.activeStore.address,
+						scale: 18,
+						infoUrl: ''
+					})
+				}
+				
+			},
+			positioning() {
+				var that = this;
+				uni.getLocation({
+					type: 'gcj02',
+					highAccuracyExpireTime: 3000,
+					isHighAccuracy: true,
+					success: function (addr) {
+						if(!addr){
+							return
+						}
+						that.latitude=addr.latitude
+						that.longitude=addr.longitude
+					}
+				});
+			},
+			async getShopInfo() {
+				this.$u.api.getShopDetail({
+					id: this.id,
+					latitude: this.latitude,
+					longitude: this.longitude,
+				}).then(res => {
+					if (res.code === 200) {
+						this.activeStore = res.data
+					}
+				})
+			},
+			contactStore() {
+				uni.showToast({
+					title: '鑱旂郴闂ㄥ簵寰呮帴鍏�',
+					icon: 'none'
+				})
+			},
+			storeLuggage() {
+				if (!this.token) {
+					this.showLogin = true
+					return
+				}
+				uni.navigateTo({
+					url: '/pages/luggage-storage/luggage-storage'
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.storage-page {
+		position: relative;
+		min-height: 100vh;
+		background: #ffffff;
+	}
+
+	.top-fixed {
+		position: fixed;
+		left: 0;
+		top: 0;
+		width: 100%;
+		background: #ffffff;
+		z-index: 20;
+	}
+
+	.dropdown-mask {
+		position: fixed;
+		left: 0;
+		right: 0;
+		top: 184rpx;
+		bottom: 0;
+		background: rgba(0, 0, 0, 0.18);
+		z-index: 14;
+	}
+
+	.content-wrap {
+		box-sizing: border-box;
+	}
+
+	.search-row,
+	.filter-row,
+	.content-wrap {
+		position: relative;
+		z-index: 1;
+	}
+
+	.search-row {
+		display: flex;
+		align-items: center;
+		padding: 24rpx 24rpx 0;
+		gap: 18rpx;
+	}
+
+	.search-box {
+		flex: 1;
+		height: 72rpx;
+		background: #F9F9FB;
+		border-radius: 16rpx;
+		border: 1rpx solid #EEEEEE;
+		padding: 0 22rpx;
+		display: flex;
+		align-items: center;
+		gap: 14rpx;
+		image {
+			width: 32rpx;
+			height: 32rpx;
+		}
+	}
+
+	.search-input {
+		flex: 1;
+		height: 72rpx;
+		font-weight: 400;
+		font-size: 26rpx;
+		color: #111111;
+		background: transparent;
+	}
+
+	.map-entry {
+		width: 70rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		justify-content: center;
+		gap: 4rpx;
+	}
+
+	.map-icon {
+		width: 40rpx;
+		height: 40rpx;
+		border-radius: 12rpx;
+		background: rgba(255, 255, 255, 0.92);
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.map-text {
+		font-size: 22rpx;
+		line-height: 1;
+		color: #6a7485;
+	}
+
+	.filter-row {
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		padding: 22rpx 30rpx 20rpx;
+		background: #ffffff;
+	}
+
+	.dropdown-panel {
+		position: absolute;
+		left: 0;
+		right: 0;
+		top: 184rpx;
+		padding: 10rpx 0 18rpx;
+		background: #ffffff;
+		box-shadow: 0 12rpx 32rpx rgba(0, 0, 0, 0.08);
+		z-index: 21;
+	}
+
+	.dropdown-option {
+		height: 76rpx;
+		padding: 0 30rpx;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		font-size: 28rpx;
+		color: #555555;
+		box-sizing: border-box;
+	}
+
+	.dropdown-option.active {
+		color: #2f86f6;
+		font-weight: 500;
+	}
+
+	.filter-item {
+		display: flex;
+		align-items: center;
+		gap: 8rpx;
+		font-weight: 400;
+		font-size: 28rpx;
+		color: #777777;
+	}
+	
+	.filter-item image {
+		width: 20rpx;
+		height: 20rpx;
+	}
+
+	.filter-item.active {
+		color: #222222;
+	}
+
+	.card-list {
+		padding: 30rpx;
+		box-sizing: border-box;
+	}
+
+	.map-panel {
+		position: relative;
+		height: calc(100vh - 184rpx);
+	}
+
+	.store-map {
+		width: 100%;
+		height: 100%;
+	}
+
+	.location-btn {
+		position: absolute;
+		right: 24rpx;
+		bottom: 32rpx;
+		width: 72rpx;
+		height: 72rpx;
+		border-radius: 16rpx;
+		background: #ffffff;
+		box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.12);
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		z-index: 2;
+	}
+
+	.store-popup-mask {
+		position: fixed;
+		left: 0;
+		right: 0;
+		top: 0;
+		bottom: 0;
+		background: rgba(0, 0, 0, 0.36);
+		z-index: 998;
+	}
+
+	.store-popup {
+		position: fixed;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		height: 80vh;
+		background: #ffffff;
+		border-radius: 28rpx 28rpx 0 0;
+		z-index: 999;
+		overflow: hidden;
+		animation: popup-slide-up 0.25s ease-out;
+	}
+
+	.popup-scroll {
+		position: relative;
+		height: calc(80vh - 132rpx);
+	}
+
+	.popup-close {
+		position: absolute;
+		right: 24rpx;
+		top: 24rpx;
+		width: 56rpx;
+		height: 56rpx;
+		border-radius: 28rpx;
+		background: rgba(255, 255, 255, 0.92);
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		z-index: 2;
+	}
+
+	.popup-banner-swiper {
+		width: 100%;
+		height: 422rpx;
+	}
+
+	.popup-banner-image {
+		width: 100%;
+		height: 100%;
+		object-fit: cover;
+	}
+
+	.popup-body {
+		padding: 24rpx 30rpx 0;
+		box-sizing: border-box;
+		padding-bottom: 32rpx;
+	}
+
+	.popup-gap {
+		width: 100%;
+		height: 20rpx;
+		background: #f7f7f7;
+	}
+
+	.popup-title {
+		display: block;
+		font-size: 40rpx;
+		font-weight: 600;
+		line-height: 1.35;
+		color: #222222;
+	}
+
+	.popup-hours {
+		display: inline-block;
+		margin-top: 18rpx;
+		padding: 10rpx 16rpx;
+		border-radius: 8rpx;
+		background: #f5f7fb;
+		font-size: 24rpx;
+		color: #8c939f;
+	}
+
+	.popup-desc {
+		display: block;
+		margin-top: 24rpx;
+		font-size: 28rpx;
+		line-height: 1.7;
+		color: #444444;
+	}
+
+	.popup-address-row {
+		padding: 24rpx 0;
+		border-top: 1rpx solid #ededed;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		gap: 20rpx;
+		margin-top: 20rpx;
+	}
+
+	.popup-address {
+		flex: 1;
+		min-width: 0;
+		display: flex;
+		align-items: center;
+		font-size: 26rpx;
+		color: #8c939f;
+		image {
+			width: 26rpx;
+			height: 26rpx;
+			margin-right: 8rpx;
+		}
+		text {
+			overflow: hidden;
+			text-overflow: ellipsis;
+			white-space: nowrap;
+		}
+	}
+
+	.popup-distance-wrap {
+		flex-shrink: 0;
+		height: 52rpx;
+		display: flex;
+		align-items: center;
+		font-size: 28rpx;
+		color: #555555;
+		image {
+			width: 48rpx;
+			height: 48rpx;
+			margin-right: 12rpx;
+		}
+	}
+
+	.popup-section {
+		padding: 28rpx 0;
+		border-bottom: 1rpx solid #ededed;
+	}
+
+	.popup-section.no-border {
+		border-bottom: none;
+		padding-bottom: 10rpx;
+	}
+
+	.popup-section-title {
+		display: block;
+		margin-bottom: 20rpx;
+		font-size: 34rpx;
+		font-weight: 600;
+		color: #222222;
+	}
+
+	.popup-section-text {
+		display: block;
+		font-size: 28rpx;
+		line-height: 1.8;
+		color: #4a4a4a;
+	}
+
+	.popup-footer {
+		padding: 24rpx 30rpx calc(24rpx + env(safe-area-inset-bottom));
+		display: flex;
+		gap: 18rpx;
+	}
+
+	.popup-btn {
+		flex: 1;
+		height: 84rpx;
+		border-radius: 42rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: 32rpx;
+		font-weight: 600;
+	}
+
+	.popup-btn.ghost {
+		border: 2rpx solid #23a7f6;
+		color: #23a7f6;
+		background: #eff9ff;
+	}
+
+	.popup-btn.primary {
+		background: linear-gradient(90deg, #24b2ff 0%, #1d9ff3 100%);
+		color: #ffffff;
+	}
+
+	@keyframes popup-slide-up {
+		from {
+			transform: translateY(100%);
+			opacity: 0;
+		}
+		to {
+			transform: translateY(0);
+			opacity: 1;
+		}
+	}
+
+	.point-card {
+		display: flex;
+		gap: 22rpx;
+		padding: 30rpx;
+		box-sizing: border-box;
+		margin-bottom: 18rpx;
+		border-radius: 24rpx;
+		background: #F6F9FF;
+		box-shadow: 0 10rpx 30rpx rgba(38, 44, 56, 0.05);
+	}
+
+	.thumb {
+		position: relative;
+		flex-shrink: 0;
+		width: 140rpx;
+		height: 140rpx;
+		border-radius: 8rpx;
+		overflow: hidden;
+	}
+
+	.thumb image {
+		width: 100%;
+	}
+
+	.point-main {
+		flex: 1;
+		min-width: 0;
+	}
+
+	.point-head {
+		display: flex;
+		align-items: flex-start;
+		justify-content: space-between;
+		gap: 12rpx;
+	}
+
+	.point-name {
+		flex: 1;
+		line-height: 1.35;
+		font-weight: 600;
+		font-size: 30rpx;
+		color: #222222;
+	}
+
+	.point-distance {
+		flex-shrink: 0;
+		font-size: 24rpx;
+		line-height: 1.4;
+		color: #8C939F;
+	}
+
+	.point-address {
+		margin-top: 10rpx;
+		display: flex;
+		align-items: center;
+		gap: 6rpx;
+		font-weight: 400;
+		font-size: 24rpx;
+		color: #6C717A;
+	}
+	
+	.point-address image {
+		width: 24rpx;
+		height: 24rpx;
+		margin-right: 4rpx;
+	}
+
+	.point-time {
+		display: block;
+		margin-top: 20rpx;
+		line-height: 1.5;
+		font-weight: 400;
+		font-size: 24rpx;
+		color: #8C939F;
+	}
+</style>

--
Gitblit v1.9.3