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
}));