Commit 173319b810adcf638c79f34a1333dc5d38fa36be

Authored by pengye
1 parent 72b8e951

免费券详情 加预定包间按钮、商家详情

@@ -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 }