Showing
3 changed files
with
170 additions
and
6 deletions
| @@ -12,9 +12,11 @@ Page({ | @@ -12,9 +12,11 @@ Page({ | ||
| 12 | detail: {}, | 12 | detail: {}, |
| 13 | exp_date: {}, | 13 | exp_date: {}, |
| 14 | resultCoupon: '', //0未领取 1已领取 | 14 | resultCoupon: '', //0未领取 1已领取 |
| 15 | + seller: {}, | ||
| 16 | + distance: '', | ||
| 15 | }, | 17 | }, |
| 16 | myModal: '', | 18 | myModal: '', |
| 17 | - myToast :'', | 19 | + myToast:'', |
| 18 | /** | 20 | /** |
| 19 | * 生命周期函数--监听页面加载 | 21 | * 生命周期函数--监听页面加载 |
| 20 | */ | 22 | */ |
| @@ -95,7 +97,7 @@ Page({ | @@ -95,7 +97,7 @@ Page({ | ||
| 95 | // 领券 | 97 | // 领券 |
| 96 | getActivityCouponFun(type){ | 98 | getActivityCouponFun(type){ |
| 97 | let detail = this.data.detail | 99 | let detail = this.data.detail |
| 98 | - detail.name = this.data.sellername; | 100 | + detail.name = this.data.seller.sellername; |
| 99 | detail.oid = this.data.opt.oid; | 101 | detail.oid = this.data.opt.oid; |
| 100 | App.Activity.SetActivityAsReserve({ | 102 | App.Activity.SetActivityAsReserve({ |
| 101 | aid: this.data.opt.id, | 103 | aid: this.data.opt.id, |
| @@ -153,11 +155,60 @@ Page({ | @@ -153,11 +155,60 @@ Page({ | ||
| 153 | }, | 155 | }, |
| 154 | // 获取店铺名称 | 156 | // 获取店铺名称 |
| 155 | getSellerDetail() { | 157 | getSellerDetail() { |
| 158 | + let that = this; | ||
| 156 | App.Customer.GetSellerDetail({ | 159 | App.Customer.GetSellerDetail({ |
| 157 | sid: this.data.opt.sid | 160 | sid: this.data.opt.sid |
| 158 | }).then(res => { | 161 | }).then(res => { |
| 162 | + let data = res.data; | ||
| 163 | + let cateStr = [] | ||
| 164 | + if (data.cate && data.cate.length > 0) { | ||
| 165 | + data.cate.some(cate => { | ||
| 166 | + cateStr.push(cate); | ||
| 167 | + if (cateStr.length > 2) { | ||
| 168 | + return true | ||
| 169 | + } | ||
| 170 | + }) | ||
| 171 | + cateStr = cateStr.join('/') | ||
| 172 | + } | ||
| 173 | + let latitude = ''; | ||
| 174 | + let longitude = ''; | ||
| 175 | + let distance = ''; | ||
| 176 | + let seller = { | ||
| 177 | + cateStr, | ||
| 178 | + sellername: data.sellername, | ||
| 179 | + is_online_reserve: data.is_online_reserve, | ||
| 180 | + seller_image: data.seller_image, | ||
| 181 | + } | ||
| 182 | + wx.getLocation({ | ||
| 183 | + type: 'wgs84', // 返回可以用于 wx.openLocation 的经纬度 | ||
| 184 | + success: function (res) { | ||
| 185 | + latitude = res.latitude; // 纬度 | ||
| 186 | + longitude = res.longitude; // 经度 | ||
| 187 | + console.log(`当前的纬度: ${latitude}, 当前的经度: ${longitude}`); | ||
| 188 | + if (latitude && longitude) { | ||
| 189 | + distance = that.getDistance(latitude, longitude, data.lat, data.long); | ||
| 190 | + distance = parseInt(distance) | ||
| 191 | + if (distance > 1000) { | ||
| 192 | + distance = (distance / 1000).toFixed(2) + 'km' | ||
| 193 | + } else { | ||
| 194 | + distance += 'm'; | ||
| 195 | + } | ||
| 196 | + that.setData({ | ||
| 197 | + distance | ||
| 198 | + }) | ||
| 199 | + } | ||
| 200 | + }, | ||
| 201 | + fail: function (err) { | ||
| 202 | + console.error('获取位置失败:', err); | ||
| 203 | + } | ||
| 204 | + }); | ||
| 205 | + console.log({ | ||
| 206 | + ...seller | ||
| 207 | + }); | ||
| 159 | this.setData({ | 208 | this.setData({ |
| 160 | - sellername: res.data.sellername | 209 | + seller: { |
| 210 | + ...seller | ||
| 211 | + } | ||
| 161 | }) | 212 | }) |
| 162 | }) | 213 | }) |
| 163 | }, | 214 | }, |
| @@ -214,7 +265,7 @@ Page({ | @@ -214,7 +265,7 @@ Page({ | ||
| 214 | path += '&activity_id='+detail.activity_id | 265 | path += '&activity_id='+detail.activity_id |
| 215 | } | 266 | } |
| 216 | return { | 267 | return { |
| 217 | - title: `送你${this.data.sellername}${detail.price}元代金券,点击查看详情,领取到卡包吧!`, | 268 | + title: `送你${this.data.seller.sellername}${detail.price}元代金券,点击查看详情,领取到卡包吧!`, |
| 218 | path, | 269 | path, |
| 219 | imageUrl: 'https://nosqn.colorcun.com/share_money.png', | 270 | imageUrl: 'https://nosqn.colorcun.com/share_money.png', |
| 220 | } | 271 | } |
| @@ -243,7 +294,22 @@ Page({ | @@ -243,7 +294,22 @@ Page({ | ||
| 243 | this.getSellerDetail(); | 294 | this.getSellerDetail(); |
| 244 | this.getCoupon() | 295 | this.getCoupon() |
| 245 | }, | 296 | }, |
| 246 | - | 297 | + // 计算2点之间的距离 |
| 298 | + getDistance(lat1, lon1, lat2, lon2) { | ||
| 299 | + const R = 6371e3; // 地球半径(米) | ||
| 300 | + // 将经纬度转换为弧度 | ||
| 301 | + const φ1 = lat1 * Math.PI / 180; // 纬度1 | ||
| 302 | + const φ2 = lat2 * Math.PI / 180; // 纬度2 | ||
| 303 | + const Δφ = (lat2 - lat1) * Math.PI / 180; // 纬度差 | ||
| 304 | + const Δλ = (lon2 - lon1) * Math.PI / 180; // 经度差 | ||
| 305 | + // Haversine 公式 | ||
| 306 | + const a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) + | ||
| 307 | + Math.cos(φ1) * Math.cos(φ2) * | ||
| 308 | + Math.sin(Δλ / 2) * Math.sin(Δλ / 2); | ||
| 309 | + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); | ||
| 310 | + const distance = R * c; // 计算距离(米) | ||
| 311 | + return distance; // 返回距离 | ||
| 312 | + }, | ||
| 247 | /** | 313 | /** |
| 248 | * 生命周期函数--监听页面显示 | 314 | * 生命周期函数--监听页面显示 |
| 249 | */ | 315 | */ |
| @@ -72,6 +72,26 @@ | @@ -72,6 +72,26 @@ | ||
| 72 | <view class="info font24r">{{detail.explain}}</view> | 72 | <view class="info font24r">{{detail.explain}}</view> |
| 73 | </view> | 73 | </view> |
| 74 | </view> | 74 | </view> |
| 75 | +<view class="seller_data"> | ||
| 76 | + <image src="{{seller.seller_image}}" mode="aspectFill"/> | ||
| 77 | + <view class="seller_box"> | ||
| 78 | + <view class="infos"> | ||
| 79 | + <view class="info_name font32r">{{seller.sellername}}</view> | ||
| 80 | + <!-- <view class="park font24r">可停车</view> --> | ||
| 81 | + </view> | ||
| 82 | + <view class="infos"> | ||
| 83 | + <view class="dish font24r">{{seller.cateStr}}</view> | ||
| 84 | + <view class="aa font24r" wx:if="{{seller.average && seller.average>0}}">人均¥{{seller.average}}</view> | ||
| 85 | + <text class="font24r">{{distance}}</text> | ||
| 86 | + </view> | ||
| 87 | + <!-- <view class="bottom_btns"> | ||
| 88 | + <view class="book font24r">朋友订过</view> | ||
| 89 | + <view class="book font24r">我订过</view> | ||
| 90 | + <view class="book font24r">我去过</view> | ||
| 91 | + <view class="book font24r">我有券</view> | ||
| 92 | + </view> --> | ||
| 93 | + </view> | ||
| 94 | +</view> | ||
| 75 | <view class="bottom_box_wrap"> | 95 | <view class="bottom_box_wrap"> |
| 76 | <view class="bottom_box"> | 96 | <view class="bottom_box"> |
| 77 | <view class="font24r">温馨提示:</view> | 97 | <view class="font24r">温馨提示:</view> |
| @@ -88,6 +108,9 @@ | @@ -88,6 +108,9 @@ | ||
| 88 | <text class="font24r">分享</text> | 108 | <text class="font24r">分享</text> |
| 89 | </button> | 109 | </button> |
| 90 | <view class="btns"> | 110 | <view class="btns"> |
| 111 | + <view class="btn1 font36r" wx:if="{{seller.is_online_reserve == '1'}}"> | ||
| 112 | + <navigator url="/pages/reserve/reserve?id={{opt.sid}}&activeTab=reserve" class="book-item-font second-book-button flex-cc font30r" style="position: relative;">预订包间</navigator> | ||
| 113 | + </view> | ||
| 91 | <view wx:if="{{resultCoupon == '0' && detail.grant_last>0}}" class="btn font36r" bindtap="submitOrder">领取到卡包</view> | 114 | <view wx:if="{{resultCoupon == '0' && detail.grant_last>0}}" class="btn font36r" bindtap="submitOrder">领取到卡包</view> |
| 92 | </view> | 115 | </view> |
| 93 | </view> | 116 | </view> |
| @@ -165,13 +165,25 @@ page { | @@ -165,13 +165,25 @@ page { | ||
| 165 | 165 | ||
| 166 | .btn { | 166 | .btn { |
| 167 | color: #fff; | 167 | color: #fff; |
| 168 | - padding: 0 60rpx; | 168 | + padding: 0 40rpx; |
| 169 | height: 80rpx; | 169 | height: 80rpx; |
| 170 | line-height: 80rpx; | 170 | line-height: 80rpx; |
| 171 | border-radius: 40rpx; | 171 | border-radius: 40rpx; |
| 172 | + font-weight: 600; | ||
| 173 | + margin-left: 20rpx; | ||
| 172 | background: linear-gradient(90.98deg, #f41919 0.25%, #ff7426 120.07%); | 174 | background: linear-gradient(90.98deg, #f41919 0.25%, #ff7426 120.07%); |
| 173 | } | 175 | } |
| 174 | 176 | ||
| 177 | +.btn1 { | ||
| 178 | + font-weight: 600; | ||
| 179 | + padding: 0 40rpx; | ||
| 180 | + height: 80rpx; | ||
| 181 | + line-height: 80rpx; | ||
| 182 | + border-radius: 40rpx; | ||
| 183 | + color: #fb4e21; | ||
| 184 | + border: 2rpx solid #fb4e21; | ||
| 185 | +} | ||
| 186 | + | ||
| 175 | #myModal .titleModal { | 187 | #myModal .titleModal { |
| 176 | margin-top: 80%; | 188 | margin-top: 80%; |
| 177 | width: 100%; | 189 | width: 100%; |
| @@ -233,4 +245,67 @@ page { | @@ -233,4 +245,67 @@ page { | ||
| 233 | border: 4rpx solid #fff; | 245 | border: 4rpx solid #fff; |
| 234 | padding: 12rpx 0; | 246 | padding: 12rpx 0; |
| 235 | margin: 80rpx auto 20rpx auto; | 247 | margin: 80rpx auto 20rpx auto; |
| 248 | +} | ||
| 249 | + | ||
| 250 | +.seller_data { | ||
| 251 | + display: flex; | ||
| 252 | + justify-content: space-between; | ||
| 253 | + padding: 16rpx 24rpx; | ||
| 254 | + background: #fff; | ||
| 255 | + margin: 20rpx; | ||
| 256 | + border-radius: 16rpx; | ||
| 257 | +} | ||
| 258 | + | ||
| 259 | +.seller_data image { | ||
| 260 | + width: 200rpx; | ||
| 261 | + height: 200rpx; | ||
| 262 | + border-radius: 10rpx; | ||
| 263 | +} | ||
| 264 | + | ||
| 265 | +.seller_box { | ||
| 266 | + margin-left: 16rpx; | ||
| 267 | + flex: 1; | ||
| 268 | + position: relative; | ||
| 269 | +} | ||
| 270 | + | ||
| 271 | +.infos { | ||
| 272 | + display: flex; | ||
| 273 | + justify-content: space-between; | ||
| 274 | + margin: 8rpx 0; | ||
| 275 | + color: #696969; | ||
| 276 | +} | ||
| 277 | + | ||
| 278 | +.park { | ||
| 279 | + background: #FFEEDF; | ||
| 280 | + color: #B56737; | ||
| 281 | + padding: 8rpx 12rpx 0 12rpx; | ||
| 282 | + border-radius: 4rpx; | ||
| 283 | + height: 30rpx; | ||
| 284 | + line-height: 30rpx; | ||
| 285 | + flex-shrink: 0; | ||
| 286 | +} | ||
| 287 | + | ||
| 288 | +.info_name { | ||
| 289 | + color: #000; | ||
| 290 | + overflow: hidden; | ||
| 291 | + word-break: break-all; | ||
| 292 | + text-overflow: ellipsis; | ||
| 293 | + display: -webkit-box; | ||
| 294 | + -webkit-box-orient: vertical; | ||
| 295 | + -webkit-line-clamp: 1; | ||
| 296 | + font-weight: 600; | ||
| 297 | +} | ||
| 298 | + | ||
| 299 | +.bottom_btns { | ||
| 300 | + display: flex; | ||
| 301 | + position: absolute; | ||
| 302 | + bottom: 0; | ||
| 303 | +} | ||
| 304 | + | ||
| 305 | +.book { | ||
| 306 | + margin-right: 8rpx; | ||
| 307 | + padding: 4rpx 12rpx; | ||
| 308 | + background: #FFE8D7; | ||
| 309 | + color: #fb4e21; | ||
| 310 | + border-radius: 4rpx; | ||
| 236 | } | 311 | } |
-
Please register or login to post a comment