diff --git a/miniprogram/pages/points/order/index.js b/miniprogram/pages/points/order/index.js index c924fde5..d8a6f9e5 100644 --- a/miniprogram/pages/points/order/index.js +++ b/miniprogram/pages/points/order/index.js @@ -158,5 +158,38 @@ Page({ goToMall() { wx.switchTab({ url: '/pages/points/mall/index' }) + }, + + // 导航到门店 + navigateToStore() { + const order = this.data.currentOrder + if (!order) return + + const lat = order.storeLatitude != null ? parseFloat(order.storeLatitude) : null + const lng = order.storeLongitude != null ? parseFloat(order.storeLongitude) : null + const name = order.storeName || '领取门店' + const address = order.storeAddress || '' + + if (lat != null && lng != null && !isNaN(lat) && !isNaN(lng)) { + wx.openLocation({ + latitude: lat, + longitude: lng, + name: name, + address: address, + scale: 18 + }) + } else { + // 无经纬度时,复制地址到剪贴板 + if (address) { + wx.setClipboardData({ + data: `${name} ${address}`.trim(), + success: () => { + wx.showToast({ title: '地址已复制,可在地图应用中粘贴搜索', icon: 'none', duration: 2500 }) + } + }) + } else { + wx.showToast({ title: '该门店暂无位置信息', icon: 'none' }) + } + } } }) diff --git a/miniprogram/pages/points/order/index.wxml b/miniprogram/pages/points/order/index.wxml index b76e6db2..087e7b71 100644 --- a/miniprogram/pages/points/order/index.wxml +++ b/miniprogram/pages/points/order/index.wxml @@ -153,6 +153,11 @@ 门店地址 {{currentOrder.storeAddress}} + + + 导航到门店 + + diff --git a/miniprogram/pages/points/order/index.wxss b/miniprogram/pages/points/order/index.wxss index cb104900..cb307cbf 100644 --- a/miniprogram/pages/points/order/index.wxss +++ b/miniprogram/pages/points/order/index.wxss @@ -511,3 +511,29 @@ .detail-value.status-completed { color: var(--accent); } + +/* 导航到门店按钮 */ +.navigate-btn-wrap { + margin-top: 16rpx; +} + +.navigate-btn { + display: flex; + align-items: center; + justify-content: center; + padding: 20rpx 32rpx; + background: var(--primary-gradient); + border-radius: var(--radius-full); + box-shadow: var(--shadow-primary); + transition: all 0.3s ease; +} + +.navigate-btn:active { + transform: scale(0.98); +} + +.navigate-btn-text { + font-size: 28rpx; + font-weight: 600; + color: #fff; +} diff --git a/server/src/controllers/pointsController.js b/server/src/controllers/pointsController.js index 7659d7dc..38da3432 100644 --- a/server/src/controllers/pointsController.js +++ b/server/src/controllers/pointsController.js @@ -265,6 +265,8 @@ class PointsController { storeName: order.store?.name, storeAddress: order.store?.address, storeContact: order.store?.contact, + storeLatitude: order.store?.latitude, + storeLongitude: order.store?.longitude, createdAt: order.created_at, verifiedAt: order.verified_at }));