jufubao-mall 2.0.35-beta1 → 2.0.35-beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,60 +9,59 @@
9
9
  <!-- #endif -->
10
10
  <view class="jfb-mall-shop-vip__body">
11
11
  <view class="outer-box" :style="[bodyStyleComp]">
12
- <!--tab-->
12
+ <!--map-->
13
13
  <view
14
- class="shop_tabs"
15
- :style="[tabsStyleComp]"
16
- v-if="titleList.length > 1"
14
+ class="shop_map"
15
+ v-if="initMapStatus"
17
16
  >
18
17
  <view
19
- class="tab_item"
20
- v-for="(item,index) in titleList"
21
- :key="index"
22
- :class="{short: tabLayout === 'v2'}"
23
- @click="tab=item.value"
24
- :style="[tab === item.value?tabActItemStyleComp:tabItemStyleComp]"
18
+ class="mpa_wrap"
19
+ :class="{close: !mapIsExtend}"
25
20
  >
26
- <text>{{item.label}}</text>
27
- <text v-if="titleList.length > 1 && tab === item.value && ['v1', 'v2'].includes(tabLayout)" class="lineX"></text>
28
- </view>
29
- </view>
30
- <!--tab-->
31
- <!--map-->
32
- <view class="shop_map" v-if="initBaidu">
33
- <view class="mpa_wrap" :class="{close: !mapIsExtend}">
21
+ <!--地图定位指示图标-->
22
+ <view class="map-center" v-if="localImage">
23
+ <image :src="localImage"></image>
24
+ </view>
25
+ <!--地图定位指示图标-->
34
26
  <!--#ifdef H5-->
35
27
  <xd-baidu-map
36
- v-if="initBaidu"
37
- :myPosition="myPosition"
28
+ v-if="initMapStatus && uiBaiduAk"
38
29
  :markets="marketList"
39
30
  :ak="uiBaiduAk"
40
31
  :center="mapCenter"
41
- @onChose="handleChoseShop"
32
+ @on-show-marker="(item)=>{handleShowMarker(item,true)}"
33
+ @on-close-marker="(item)=>{handleShowMarker(item,false)}"
34
+ @regionchange="handleRegionChange"
35
+ @init="handleH5Init"
36
+ @on-detail="handleToEvent"
42
37
  ></xd-baidu-map>
43
38
  <!--#endif-->
44
39
  <!-- #ifdef MP-WEIXIN -->
45
40
  <map
41
+ v-if="mapCenter !== null"
42
+ id="WeiXinMap"
43
+ :show-location="showLocation"
46
44
  style="width:100%;height: 100%;"
47
- show-location
48
45
  :longitude="mapCenter.longitude"
49
46
  :latitude="mapCenter.latitude"
50
47
  :markers="marketList"
51
48
  @markertap="handleMarketTap"
49
+ @regionchange="handleRegionChange"
52
50
  >
53
51
  <cover-view
54
52
  class="cover_view"
55
53
  slot="callout"
56
54
  >
57
55
  <cover-view
58
- v-for="(item,index) in marketList"
59
- :key="index"
56
+ v-for="(item) in marketList"
57
+ :key="item.id"
60
58
  :marker-id="item.id"
61
59
  style="background: rgba(0,0,0,.8);border-radius: 6px;padding: 8px 12px;color: #fff;"
62
60
  :style="{display: item.id === showMarkerId ? 'block' : 'none'}"
63
61
  >{{ item.title }}</cover-view>
64
62
  </cover-view>
65
63
  </map>
64
+ <view class="weiXinLocation" v-if="mpLocationFn === 'getLocation'" @click="handleWXLocation">定位</view>
66
65
  <!-- #endif -->
67
66
  </view>
68
67
  <view
@@ -84,29 +83,56 @@
84
83
  </view>
85
84
  <!--map-->
86
85
  <!--shop-->
87
- <view v-if="showShopList" class="shop_list" :style="[contStyleComp]">
88
- <template v-if="showShopList.length">
89
- <scroll-view
90
- scroll-y
91
- :scroll-top="scrollTop"
92
- class="scroll_y"
93
- >
94
- <cus-shops
95
- layout="v1"
96
- :select-id="selectIds"
97
- :is-show-btn="fastEntryStatus"
98
- :content="cusContent"
99
- :cus-style="cusStyle"
100
- :list="showShopList"
101
- :main-color="mainColor"
102
- :sub-main-color="subMainColor"
103
- :names="cusNames"
104
- :entry="cusEntry"
105
- @on-event="handleToEvent"
106
- ></cus-shops>
86
+ <view class="shop_list" :style="[contStyleComp]">
87
+ <template v-if="nearbyShopList === null || (nearbyShopList && nearbyShopList.length > 0)">
88
+ <scroll-view scroll-y class="scroll_y" :scroll-into-view="intoViewResourceShopId" scroll-with-animation>
89
+ <template v-if="nearbyShopList === null">
90
+ <view class="shop_list-ske" :id="i" v-for="i in 6" :key="i" :style="[cusStyle.item]">
91
+ <view class="shop_list-ske-title">
92
+ <view></view>
93
+ <view></view>
94
+ </view>
95
+ <view class="shop_list-ske-address">
96
+ <view></view>
97
+ <view></view>
98
+ </view>
99
+ <view class="shop_list-ske-time"></view>
100
+ </view>
101
+ </template>
102
+ <template v-else-if="nearbyShopList.length >0">
103
+ <view
104
+ :style="[cusStyle.item]"
105
+
106
+ class="shop_list-item"
107
+ :class='[{"shop_list-item-act":resource_shop_id === item.resource_shop_id}]'
108
+ v-for="item in nearbyShopList"
109
+ :key="item.key"
110
+ :id="`scroll-${item.resource_shop_id}`"
111
+ @click="handleToEvent(item, 'shop')"
112
+ >
113
+ <view class="shop_list-item-title">
114
+ <view class="title">
115
+ <view>{{item.resource_shop_name}}</view>
116
+ <view class="active" v-if="resource_shop_id === item.resource_shop_id">正在预览</view>
117
+ </view>
118
+ <view @click="handleToEvent(item, 'detail')">
119
+ <text>详情</text>
120
+ <xd-font-icon icon="iconxiangyou_xian" color="#999" size="30" width="26" height="26"></xd-font-icon>
121
+ </view>
122
+ </view>
123
+ <view class="address" :style="{marginBottom:item['business_time_name']?'16rpx':0}">
124
+ <view>{{item.address}}</view>
125
+ <view
126
+ v-if="item.distance_conversion || item.distance"
127
+ :style="[cusStyle.distance]"
128
+ >{{item.distance_conversion || item.distance}}</view>
129
+ </view>
130
+ <view class="openTime" v-if="item['business_time_name']">营业时间:{{item['business_time_name']}}</view>
131
+ </view>
132
+ </template>
107
133
  </scroll-view>
108
134
  </template>
109
- <xd-no-data icon-type="shop" :scale-size="2" v-if="showShopList.length === 0">暂无门店信息</xd-no-data>
135
+ <xd-no-data icon-type="shop" :scale-size="2" v-if="nearbyShopList && nearbyShopList.length === 0">暂无更多门店</xd-no-data>
110
136
  </view>
111
137
  <!--shop-->
112
138
  </view>
@@ -119,7 +145,7 @@
119
145
  import XdNoData from "@/components/XdNoData/XdNoData";
120
146
  import { jfbRootExec } from "@/utils/xd.event";
121
147
  import JfbMallShopVipMixin from "./JfbMallShopVipMixin";
122
- import { getContainerPropsValue,gCPVal } from "@/utils/xd.base";
148
+ import { gCPVal } from "@/utils/xd.base";
123
149
  import componentsMixins from "@/mixins/componentsMixins";
124
150
  import getServiceUrl from "@/common/getServiceUrl";
125
151
  import CusShops from "./CusShops.vue"
@@ -128,7 +154,6 @@
128
154
  // #endif
129
155
  import { mapState } from 'vuex';
130
156
  import extsMixins from "@/mixins/extsMixins";
131
- import Color from "color"
132
157
 
133
158
 
134
159
  export default {
@@ -153,21 +178,24 @@
153
178
  next_page_token: "",
154
179
  brand_id: '',
155
180
  shop_id: '',
156
- resource_shop_id: '',
181
+ resource_shop_id: -1,
182
+ intoViewResourceShopId:'',
157
183
 
158
184
  //地图
159
- initBaidu: false,
185
+ initMapStatus: false,
160
186
  uiBaiduAk: '',
161
- mapCenter: [],
187
+ mapCenter: null,
188
+ changStatus: true,
189
+ changeLocation:null,
162
190
  mapIsExtend: true,
163
191
  marketList: [],
164
192
  myPosition: null,
165
193
  showMarkerId: "",
194
+ localImage: '',
166
195
 
167
196
  //tab
168
197
  titleList: [],
169
198
  tab: "nearby", //nearby,often
170
- oftenShopList: null,
171
199
  nearbyShopList: null,
172
200
  curShopId: '',
173
201
  toView: '',
@@ -197,11 +225,18 @@
197
225
 
198
226
  //高级
199
227
  codePath: '', //门店跳转
200
- cashierPath: '',//支持核销
201
- buyTicketPath: '',//在线选择
202
- codeAfterPath: '',//电子码
203
- hdSelfPath: '',//小时达
204
- travelfPath: '', //旅游购票
228
+ detailPath: '',//门店详情
229
+
230
+ // #ifdef MP-WEIXIN
231
+ WeiXinMap:null,
232
+ showLocation: false,
233
+ onLoadStatus: false, //小程序onload是否执行
234
+ onLocationStatus: false, //小程序首次定位成功状态
235
+ mpLocationFn:'getFuzzyLocation',
236
+ // #endif
237
+
238
+ isMoved: false, //是否已经移动过
239
+
205
240
  }
206
241
  },
207
242
  computed: {
@@ -209,86 +244,20 @@
209
244
  stateCity: state => state.cityLocation.city,
210
245
  stateLocation: state => state.cityLocation.location || {}
211
246
  }),
212
- selectIds(){
213
- let id = '';
214
- if(!id && this.resource_shop_id) id = this.resource_shop_id;
215
- if(!id&& this.brand_id) id = this.brand_id;
216
- if(!id && this.shop_id) id = this.shop_id;
217
- return id;
218
- },
219
- tabActItemStyleComp(){
220
- if(this.titleList.length === 1) return {
221
- color: this.tabStyle.color,
222
- fontSize: this.tabStyle.fontSize + 'rpx',
223
- fontWeight: this.tabStyle.fontWeight,
224
- };
225
- let backgroundColor = '';
226
- let color = this.mainColor;
227
- let marginRight = 0;
228
- if(this.tabLayout === 'v3') {
229
- if( this.tabStyle.actBgColor) backgroundColor = this.tabStyle.actBgColor;
230
- else backgroundColor = this.mainColor;
231
- if( this.tabStyle.actColor) color = this.tabStyle.actColor;
232
- else color = '#fff';
233
- marginRight = '20rpx';
234
- }
235
- return {
236
- marginRight,
237
- color: this.tabStyle.actColor,
238
- fontSize: this.tabStyle.actFontSize + 'rpx',
239
- fontWeight: this.tabStyle.actFontWeight,
240
- backgroundColor: backgroundColor,
241
- }
242
- },
243
- tabItemStyleComp(){
244
- if(this.titleList.length === 1) return {
245
- color: this.tabStyle.color,
246
- fontSize: this.tabStyle.fontSize + 'rpx',
247
- fontWeight: this.tabStyle.fontWeight,
248
- };
249
- let backgroundColor = '';
250
- let marginRight = 0;
251
- if(this.tabLayout === 'v3') {
252
- backgroundColor = this.tabStyle.bgColor;
253
- marginRight = '20rpx';
254
- }
255
- return {
256
- marginRight,
257
- color: this.tabStyle.color,
258
- fontSize: this.tabStyle.fontSize + 'rpx',
259
- fontWeight: this.tabStyle.fontWeight,
260
- backgroundColor: backgroundColor,
261
- }
262
- },
263
- tabsStyleComp() {
264
- let padding = '0 24rpx', height = '100rpx';
265
- if(this.tabLayout === 'v3') {
266
- padding = '20rpx 24rpx'
267
- if(this.titleList.length === 1) padding = '16rpx 0'
268
- height = '60rpx';
269
- }
270
- return {
271
- padding,
272
- height,
273
- lineHeight: height,
274
- backgroundColor: this.tabBgColor,
275
- }
276
- },
277
- showShopList(){
278
- return this.tab === 'nearby' ? this.nearbyShopList : this.oftenShopList
279
- },
247
+
280
248
  bodyStyleComp(){
281
249
  return {
282
250
  height: this.layoutInfo.bodyMinHeightRpx + 'rpx',
283
251
  '--main-color': this.tabStyle.actColor,
284
- '--main-alpha-color': this.$colorChange(this.mainColor).alpha(0.1).toString()
252
+ '--main-alpha-color': this.$colorChange(this.mainColor).alpha(0.01).toString(),
253
+ '--main-alpha5-color': this.$colorChange(this.mainColor).alpha(0.2).toString()
285
254
  }
286
255
  },
287
256
  contStyleComp(){
288
257
  let height = this.layoutInfo.bodyMinHeightRpx - 72;
289
258
  //大于一个标签显示标签
290
259
  if(this.titleList.length > 1) height = height - 100;
291
- if(this.mapIsExtend) height = height - 400;
260
+ if(this.mapIsExtend) height = height - 500;
292
261
  height = height - this.getPMValue(this.bodyPadding, 'TB', 0);
293
262
  return {
294
263
  height: height + 'rpx',
@@ -302,252 +271,42 @@
302
271
  if (JSON.stringify(value) === JSON.stringify(oldValue)) return;
303
272
  if (this.$configProject['isPreview']) this.init(value)
304
273
  },
305
- tab(value) {
306
- this.hasNext = true;
307
- this.page_token = '1';
308
- this.next_page_token = ''
309
- this.marketList = []
310
- if (value === 'nearby') {
311
- this.getNearbyShop();
312
- } else {
313
- this.getOftenShop();
314
- }
315
- },
274
+
316
275
  stateCity(n, o) {
317
276
  if (n && JSON.stringify(n) !== JSON.stringify(o)) {
318
- console.warn('stateCity');
319
- if (this.tab === 'nearby') {
320
- this.getNearbyShop();
321
- } else {
322
- this.getOftenShop();
323
- }
277
+ this.clearList();
278
+ this.getNearbyShop();
324
279
  }
325
280
  },
281
+ onLoadStatus(){
282
+ if(this.onLoadStatus && this.onLocationStatus) this.getNearbyShop()
283
+ },
284
+ onLocationStatus(){
285
+ if(this.onLoadStatus && this.onLocationStatus) this.getNearbyShop()
286
+ }
326
287
  },
327
288
  created() {
328
289
  this.init(this.container);
290
+
329
291
  },
292
+ mounted() {
293
+ this.$nextTick(()=>{
294
+ this.isEmptySetMapCenter();
295
+ })
296
+ },
297
+
330
298
  methods: {
331
299
  onJfbLoad(options) {
332
300
  this.setNameSpace(options, false);
333
301
  this.uiBaiduAk = this.baiduAk || this.$settings.baiduAk;
334
- this.myPosition = {
335
- lng: this.stateLocation.longitude,
336
- lat: this.stateLocation.latitude,
337
- }
338
302
  if(options.shop_id) this.shop_id = options.shop_id;
339
303
  if(options.brand_id) this.brand_id = options.brand_id;
340
- if(options.resource_shop_id) this.resource_shop_id = options.resource_shop_id;
341
- if(options.callback) {
342
- try{
343
- let callback = Base64.decode(options.callback);
344
- let page = this.$xdUniHelper.parseURL(callback);
345
- if(page.params && page.params.resource_shop_id) delete page.params.resource_shop_id;
346
-
347
- //相同应用
348
- if(page.path.indexOf(`/${this.projectAttr['deploy_dir']}/`) === 0) {
349
- callback = page.path.replace(`/${this.projectAttr['deploy_dir']}/`,'/');
350
- }
351
- //不同应用
352
- else {
353
- // #ifdef H5
354
- callback = `//${this.projectAttr['host']}${page.path}`;
355
- // #endif
356
-
357
- //#ifdef MP-WEIXIN
358
- //todo
359
- // #endif
360
- }
361
- //设置参数
362
- if(page.params) this.callbackParams = page.params
363
- this.isCallback = callback;
364
- }
365
- catch (e){
366
- console.error(e);
367
- }
368
- }
369
-
370
- if (this.tab === 'nearby') {
371
- this.getNearbyShop();
372
- } else {
373
- this.getOftenShop();
374
- }
304
+ if(options.resource_shop_id) this.resource_shop_id = Number(options.resource_shop_id);
305
+ if(this.$configProject['isPreview'] && this.resource_shop_id === -1 ) this.resource_shop_id = 3513711;
306
+ this.onLoadStatus = true;
375
307
  },
376
- getParams(){
377
- let params = {
378
- latitude: this.stateLocation.latitude + '',
379
- longitude: this.stateLocation.longitude + '',
380
- page_size: 20,
381
- page_token: this.page_token + '',
382
- keyword: this.keyword,
383
- xnamespace: this.xnamespace,
384
- consume_mode: this.serverType.join(','),
385
- }
386
- if(this.brand_id) params['brand_id'] = this.brand_id;
387
- if(this.keyword) params['keyword'] = this.keyword
388
- return params
389
- },
390
- isEmptySetMapCenter(){
391
- if(this.stateLocation.latitude && this.stateLocation.longitude) {
392
- // #ifdef H5
393
- this.mapCenter = {
394
- lng: this.stateLocation.longitude,
395
- lat: this.stateLocation.latitude
396
- }
397
- // #endif
398
- // #ifdef MP-WEIXIN
399
- this.mapCenter = this.stateLocation;
400
- // #endif
401
- }
402
- },
403
- getOftenShop() {
404
- jfbRootExec("getOftenVipShopList", {
405
- vm: this,
406
- data: this.getParams(),
407
- }).then(res => {
408
- let list = res.list.map(item => {
409
- item.shop_icon = getServiceUrl(item['shop_pic'] || item['shop_icon'])
410
- return item
411
- });
412
-
413
- //todo 目前返回第一屏数据(如果下拉数据需要改造)
414
- if(res.list.length > 0) {
415
- this.setMarketList(list);
416
- this.mapCenter = this.marketList[0];
417
- }
418
308
 
419
- if (this.page_token === '1') this.oftenShopList = list
420
- else this.oftenShopList = this.oftenShopList.concat(list);
421
309
 
422
- //数据为空处理
423
- if(this.oftenShopList.length === 0) {
424
- this.isEmptySetMapCenter();
425
- }
426
-
427
- this.next_page_token = res.next_page_token
428
- this.hasNext = res.next_page_token !== "";
429
- }).catch(err=>{
430
- console.error(err)
431
- this.oftenShopList = []
432
- })
433
- },
434
- getNearbyShop(centerPosition) {
435
- let data = {
436
- city_code: this.stateCity.city_code,
437
- ...this.getParams()
438
- }
439
- if(centerPosition) data = Object.assign(data, centerPosition)
440
- jfbRootExec("getNearbyVipShopList", {
441
- vm: this,
442
- data: data
443
- }).then(res => {
444
-
445
- let list = res.list.map(item => {
446
- item.shop_icon = getServiceUrl(item.shop_icon)
447
- return item
448
- })
449
-
450
- //todo 目前返回第一屏数据(如果下拉数据需要改造)
451
- if(res.list.length > 0) {
452
- //设置地图mark标签
453
- this.setMarketList(list);
454
-
455
- //设置原点
456
- if(!centerPosition)this.mapCenter = this.marketList[0];
457
- }
458
-
459
- //设置数据
460
- if (this.page_token === '1') this.nearbyShopList = list
461
- else this.nearbyShopList = this.nearbyShopList.concat(list);
462
-
463
- //数据为空
464
- if(this.nearbyShopList.length === 0) {
465
- this.isEmptySetMapCenter()
466
- }
467
-
468
- this.hasNext = res.next_page_token !== "";
469
- this.next_page_token = res.next_page_token;
470
- this.initBaidu = true;
471
- }).catch(err=>{
472
- console.error(err)
473
- this.nearbyShopList = []
474
- })
475
- },
476
- setMarketList(list){
477
- // #ifdef H5
478
- this.marketList = list.map(item => {
479
- return {
480
- platform: "H5",
481
- lng: item.longitude,
482
- lat: item.latitude,
483
- icon: {
484
- url: item.shop_icon,
485
- size: {width: 30, height: 30},
486
- opts: {imageSize: {width: 30, height: 30}}
487
- },
488
- title: item.resource_shop_name,
489
- id: item.resource_shop_id,
490
- }
491
- })
492
- // #endif
493
- // #ifdef MP-WEIXIN
494
- this.marketList = list.map(item => {
495
- let point = this.baiduTogcj(item.longitude, item.latitude);
496
- return {
497
- platform: "MP",
498
- longitude: point[0],
499
- latitude: point[1],
500
- lng: item.longitude,
501
- lat: item.latitude,
502
- id: item.resource_shop_id,
503
- title: item.resource_shop_name,
504
- width: 30,
505
- height: 30,
506
- iconPath: item.shop_icon,
507
- customCallout: {
508
- anchorX: 0.5,
509
- anchorY: 0.5,
510
- display: 'ALWAYS',
511
- }
512
- }
513
- })
514
- // #endif
515
- },
516
- switchMapExtend(isExtend){
517
- this.mapIsExtend = isExtend;
518
- },
519
- handleMarketTap(e){
520
- this.showMarkerId = e.markerId;
521
- let curShop = this.marketList.find(item => item.id === e.markerId);
522
- this.handleChoseShop(curShop);
523
- },
524
- handleChoseShop(shop){
525
- this.toView = 'shop_item_' + shop.id;
526
- this.curShopId = shop.id;
527
- if(shop.platform === 'H5'){
528
- this.mapCenter = {
529
- lng: shop.lng,
530
- lat: shop.lat
531
- };
532
- }
533
- else{
534
- this.mapCenter = {
535
- longitude: shop.longitude,
536
- latitude: shop.latitude
537
- }
538
- }
539
- this.page_token = '1';
540
- let data = {
541
- center_latitude: shop.lat || shop.latitude,
542
- center_longitude: shop.lng || shop.longitude
543
- }
544
- if (this.tab === 'nearby') {
545
- this.getNearbyShop(data)
546
- } else {
547
- this.getOftenShop(data)
548
- }
549
- this.scrollTop = 0;
550
- },
551
310
  /**
552
311
  * @description 监听事件变化
553
312
  * @param container {object} 业务组件对象自己
@@ -555,19 +314,19 @@
555
314
  init(container) {
556
315
  this.xnamespace = gCPVal(container, 'xnamespace', this.projectAttr.business_code||this.xnamespace);
557
316
  this.serverType = gCPVal(container, 'serverType', [['SELL']]);
558
- this.showOftenTab = gCPVal(container, 'showOftenTab', 'N');
317
+ this.showOftenTab = 'N' //todo gCPVal(container, 'showOftenTab', 'N');
559
318
  if(this.showOftenTab === 'N') this.titleList = [{label: '附近门店', value: 'nearby'}];
560
319
  if(this.showOftenTab === 'Y') this.titleList = [{label: '附近门店', value: 'nearby'},{label: '常用门店', value: 'often'}];
561
320
  this.shopListStyle = gCPVal(container, 'shopListStyle', 'v1');
562
321
  this.fastEntryStatus = gCPVal(container, 'fastEntryStatus', 'N') === 'Y';
563
322
  let fastEntry = gCPVal(container, 'fastEntry', []).filter(item=>{
564
- return item.check === true
323
+ return true;//item.check === true
565
324
  });
566
325
  let cusNames = {};
567
326
  let cusEntry = {};
568
327
  if(this.fastEntryStatus) {
569
328
  for(let i = 0; i< fastEntry.length ;i++) {
570
- if(fastEntry[i].input) cusNames[fastEntry[i].value] = fastEntry[i].input
329
+ if(fastEntry[i].input) cusNames[fastEntry[i].value] = fastEntry[i].input
571
330
  cusEntry[fastEntry[i].value] = fastEntry[i].check;
572
331
  }
573
332
  }
@@ -598,8 +357,8 @@
598
357
 
599
358
  //style
600
359
  let sValue = `{"cardItemSpace":16,"margin":{"bottom":16,"left":0,"right":0,"top":16},"backgroundColor":"rgba(245, 245, 245, 1)"}`
601
- let shopStyle = this.getRelationStatus(container,'shopStyle', { cardItemSpaceStatus:['cardItemSpace'],bodyPaddingStatus:['bodyPadding']}, sValue);
602
- this.bodyPadding = gCPVal(container,'bodyPadding', [{ bottom:0,left:16, right:16,top:16}, 20], {sKey:'bodyPaddingStatus',fields:['bodyPadding'],cusFields: ['shopStyle','margin',shopStyle],isPMR: true, });
360
+ let shopStyle = `{"cardItemSpace":16,"margin":{"bottom":16,"left":16,"right":16,"top":16},"backgroundColor":"rgba(245, 245, 245, 1)"}`;
361
+ this.bodyPadding = gCPVal(container,'bodyPadding', [{ bottom:0,left:16, right:16,top:16}, 20], {sKey:'bodyPaddingStatus',fields:['bodyPadding'],cusFields: ['shopStyle','margin', shopStyle ],isPMR: true, });
603
362
  this.contentBgColor = gCPVal(container,'contentBgColor', '#f8f8f8', {sKey:'contentBgColorStatus',fields:['contentBgColor']});
604
363
  this.tabLayout = gCPVal(container,'tabLayout', 'v1')
605
364
 
@@ -629,8 +388,8 @@
629
388
  let cardItemShadow = gCPVal(container, 'cardItemShadow', [this.gStyleValue.shadow, {color:'',width:'0',}],{isShadow: true});
630
389
  let cardItemBorder = gCPVal(container, 'cardItemBorder', [{color: '#f8f8f8',width: 0,style: 'solid'},{color: '#f8f8f8',width: 0,style: 'solid'}],{isBorder: true});
631
390
  let distanceColor = gCPVal(container,'distanceColor', '#999999', {sKey:'distanceColorStatus',fields:['distanceColor']});
632
- let cardItemBgColor = gCPVal(container,'cardItemBgColor', '', {sKey:'cardItemBgColorStatus',fields:['cardItemBgColor']});
633
- let itemPadding = gCPVal(container,'itemPadding', [{top:16,left:16, right:16, bottom:16},20], {sKey:'itemPaddingStatus',fields:['itemPadding'],isPMR: true});
391
+ let cardItemBgColor = gCPVal(container,'cardItemBgColor', '#fff', {sKey:'cardItemBgColorStatus',fields:['cardItemBgColor']});
392
+ let itemPadding = gCPVal(container,'itemPadding', [{top:32,left:32, right:32, bottom:32},20], {sKey:'itemPaddingStatus',fields:['itemPadding'],isPMR: true});
634
393
  let cardImageBorder = gCPVal(container, 'cardImageBorder', [{color: '#f8f8f8',width: 0,style: 'solid'},{color: '#f8f8f8',width: '2rpx',style: 'solid'}],{isBorder: true});
635
394
  let itemImageRadius = gCPVal(container,'itemImageRadius', [this.gStyleValue.radius/2, 0], {sKey:'itemImageRadiusStatus',fields:['itemImageRadius']})||0;
636
395
  this.cusStyle = {
@@ -654,69 +413,330 @@
654
413
 
655
414
  //高级
656
415
  this.codePath = gCPVal(container, 'codePath', { value: "" }).value;
657
- this.cashierPath = gCPVal(container, 'cashierPath', { value: "" }).value;
658
- this.buyTicketPath = gCPVal(container, 'buyTicketPath', { value: "" }).value;
659
- this.codeAfterPath = gCPVal(container, 'codeAfterPath', { value: "" }).value;
660
- this.hdSelfPath = gCPVal(container, 'hdSelfPath', { value: "" }).value;
661
- this.travelfPath = gCPVal(container, 'travelfPath', { value: "" }).value;
416
+ this.detailPath = gCPVal(container, 'detailPath', { value: "" }).value;
662
417
 
663
418
  //关闭显示附近门店
664
419
  if(this.showOftenTab === 'N') this.tab = 'nearby';
420
+ this.initMapStatus = true;
665
421
 
666
422
  },
667
- //==点击事件===========
668
- handleToEvent({item,type}) {
669
- let parmas = [];
670
- let url = ''
671
- if(item.resource_shop_id) parmas.push(`resource_shop_id=${item.resource_shop_id}`);
672
- if(item.brand_id) parmas.push(`brand_id=${item.brand_id}`);
673
- if(item.consume_mode) parmas.push(`consume_mode=${item.consume_mode.join(',')}`);
674
- if(item.shop_id) parmas.push(`shop_id=${item.shop_id}`);
675
-
676
- //详情增加扩张参数
677
- if(item.exts_params && type === 'DL'){
678
- parmas.push(`exts_params=${item.exts_params}`);
679
- parmas.push(`resource_shop=${Base64.encodeURI(JSON.stringify({shop_id: item.shop_id,resource_shop_id: item.resource_shop_id }))}`);
423
+
424
+
425
+ //==map===========
426
+ // #ifdef MP-WEIXIN
427
+ /**
428
+ * @description 火星转百度坐标
429
+ * @param lng
430
+ * @param lat
431
+ * @returns {{latitude: *, longitude: *}}
432
+ */
433
+ gcj02toBaidu({longitude, latitude}) {
434
+ let x_PI = 3.14159265358979324 * 3000.0 / 180.0;
435
+ let PI = 3.1415926535897932384626;
436
+ let a = 6378245.0;
437
+ let ee = 0.00669342162296594323;
438
+ latitude = +latitude;
439
+ longitude = +longitude;
440
+ let z = Math.sqrt(longitude * longitude + latitude * latitude) + 0.00002 * Math.sin(latitude * x_PI);
441
+ let theta = Math.atan2(latitude, longitude) + 0.000003 * Math.cos(longitude * x_PI);
442
+ let bd_lng = z * Math.cos(theta) + 0.0065;
443
+ let bd_lat = z * Math.sin(theta) + 0.006;
444
+ return {longitude: bd_lng, latitude:bd_lat}
445
+ },
446
+
447
+ handleWXLocation(){
448
+ this.localImage = '';
449
+ this.showMarkerId = '';
450
+ this.showLocation = true;
451
+ this.WeiXinMap.moveToLocation({
452
+ success:(res)=>{
453
+ this.showLocation = false;
454
+ },
455
+ fail:()=>{}
456
+ })
457
+ },
458
+
459
+ getMYWeiXinPoint(){
460
+ const myPoint = this.$xdUniHelper.cloneDeep(this.mapCenter);
461
+ return {
462
+ platform: "MP",
463
+ longitude: myPoint.longitude,
464
+ latitude: myPoint.latitude,
465
+ lng: myPoint.longitude,
466
+ lat: myPoint.latitude,
467
+ id: 1999999999,
468
+ width: 30,
469
+ height: 30,
470
+ iconPath:'https://img.jufubao.cn/common/local.png?x-oss-process=style/size3',
471
+ mpaKey: this.$xdUniHelper.randomChar(20)
680
472
  }
473
+ },
681
474
 
682
- //在线选择,电子码传惨处理
683
- if(['SEAT','CODE'].includes(type)) parmas = [`cinema_id=${item.resource_shop_id}`]
684
- if(['TRAVEL'].includes(type)) parmas = [`shop_id=${item.resource_shop_id}`]
685
-
686
- //点击详情地址
687
- if(type === 'DL') {
688
- //有回调地址处理
689
- if(this.isCallback) {
690
- parmas = []
691
- if(item.resource_shop_id) parmas.push(`resource_shop_id=${item.resource_shop_id}`);
692
- if(!this.$xdUniHelper.isEmpty(this.callbackParams)) {
693
- Object.keys(this.callbackParams).map(it=>{
694
- parmas.push(`${it}=${this.callbackParams[it]}`);
695
- })
475
+ setWeiXinMarkerList(list){
476
+ let location = [this.getMYWeiXinPoint()];
477
+ if(this.isMoved) location = []
478
+ this.marketList = location.concat(list.map(item => {
479
+ let point = this.baiduTogcj(item.longitude, item.latitude);
480
+ return {
481
+ platform: "MP",
482
+ longitude: point[0],
483
+ latitude: point[1],
484
+ lng: item.longitude,
485
+ lat: item.latitude,
486
+ id: item.resource_shop_id,
487
+ title: item.resource_shop_name,
488
+ width: 30,
489
+ height: 30,
490
+ iconPath: item.shop_icon,
491
+ mpaKey: this.$xdUniHelper.randomChar(20),
492
+ customCallout: {
493
+ anchorX: 0.5,
494
+ anchorY: 0.5,
495
+ display: 'ALWAYS',
696
496
  }
697
- this.$xdUniHelper.redirectTo({
698
- url: this.isCallback + `?${parmas.join('&')}`
699
- },false,true)
700
- return
701
497
  }
498
+ }))
499
+ },
500
+
501
+ handleMarketTap(e){
502
+ this.showMarkerId = e.markerId;
503
+ },
504
+
505
+ // #endif
506
+ // #ifdef H5
507
+ handleH5Init(){
508
+ this.getNearbyShop();
509
+ },
510
+
511
+ handleShowMarker(item,status){
512
+ if(status) {
513
+ this.localImage = '';
514
+ this.resource_shop_id = item.id;
515
+ setTimeout(()=>{
516
+ this.intoViewResourceShopId = `scroll-${item.id}`;
517
+ },50)
518
+
519
+ }
520
+ else this.localImage = getServiceUrl('/common/localdone.png');
521
+ },
522
+ // #endif
523
+
524
+
525
+ handleRegionChange(e){
526
+ //重新定位
527
+ if(['location','update'].includes(e.causedBy)){
528
+ this.localImage = '';
529
+ if(e.type === 'end') {
530
+ // #ifdef H5
531
+ this.changeLocation = this.$xdUniHelper.cloneDeep(e.detail.point);
532
+ // #endif
533
+ // #ifdef MP-WEIXIN
534
+ this.WeiXinMap.addMarkers({markers:[this.getMYWeiXinPoint()]});
535
+ if(!this.onLocationStatus) {
536
+ this.onLocationStatus = true;
537
+ }
538
+ this.changeLocation = this.gcj02toBaidu(e.detail.centerLocation ||e.detail.point);
539
+ // #endif
540
+
541
+ this.clearList();
542
+ this.getNearbyShop();
543
+ }
544
+ return
545
+ }
546
+
547
+ //拖拽与缩放操作开始
548
+ // #ifdef MP-WEIXIN
549
+ this.WeiXinMap.removeMarkers({markerIds:[1999999999]})
550
+ // #endif
551
+ if(e.type === 'begin') this.localImage = getServiceUrl('/common/localmove.png?v=1');
552
+
553
+ //拖拽与缩放操作结束
554
+ else if(e.type === 'end') {
555
+ this.isMoved = true;
556
+ this.localImage = getServiceUrl('/common/localdone.png');
557
+ // #ifdef H5
558
+ this.changeLocation = this.$xdUniHelper.cloneDeep(e.detail.point);
559
+ // #endif
560
+ // #ifdef MP-WEIXIN
561
+ this.changeLocation = this.gcj02toBaidu(e.detail.centerLocation ||e.detail.point);
562
+ // #endif
563
+
564
+ this.clearList();
565
+ this.getNearbyShop();
566
+ }
567
+ },
568
+
569
+ isEmptySetMapCenter(){
570
+ if(this.stateLocation.latitude && this.stateLocation.longitude) {
571
+ // #ifdef H5
572
+ this.mapCenter = {
573
+ lng: this.stateLocation.longitude,
574
+ lat: this.stateLocation.latitude
575
+ }
576
+ // #endif
577
+ // #ifdef MP-WEIXIN
578
+ let [longitude,latitude] = this.baiduTogcj(this.stateLocation.longitude,this.stateLocation.latitude);
579
+ this.mapCenter = {longitude,latitude};
580
+ this.$nextTick(()=>{
581
+ this.WeiXinMap = uni.createMapContext('WeiXinMap', this);
582
+ })
583
+ // #endif
584
+ this.onLocationStatus = true;
585
+ }
586
+ else {
587
+ this.mpLocationFn = 'getFuzzyLocation';
588
+ if(this.$configProject['privacy_interface_list']) {
589
+ this.$configProject['privacy_interface_list'].map(item=>{
590
+ if(item['api_name'] === 'wx.getLocation') {
591
+ this.mpLocationFn = 'getLocation';
592
+ }
593
+ })
594
+ }
595
+ // #ifdef MP-WEIXIN
596
+ wx[this.mpLocationFn]({
597
+ type:'wgs84',
598
+ success:({latitude,longitude})=>{
599
+ this.mapCenter = {latitude,longitude};
600
+ this.$nextTick(()=>{
601
+ this.WeiXinMap = uni.createMapContext('WeiXinMap', this);
602
+ })
603
+ this.onLocationStatus = true;
604
+ }
605
+ })
606
+ // #endif
607
+ }
608
+ },
702
609
 
703
- //其他情况
704
- url = this.codePath;
610
+ clearList(){
611
+ // #ifdef MP-WEIXIN
612
+ if(this.nearbyShopList && this.nearbyShopList.length > 0) {
613
+ this.WeiXinMap.removeMarkers({markerIds:[this.nearbyShopList.map(item => item.resource_shop_id)]});
705
614
  }
615
+ // #endif
616
+ this.page_token = '1';
617
+ this.nearbyShopList = null;
618
+ this.intoViewResourceShopId = '';
619
+ this.marketList = [];
620
+ },
621
+ //==map===========
706
622
 
707
- //支持核销
708
- if(type === 'SELL') url = this.cashierPath;
709
- //在线选择
710
- if(type === 'SEAT') url = this.buyTicketPath;
711
- //电子码
712
- if(type === 'CODE') url = this.codeAfterPath;
713
- //小时达
714
- if(type === 'HDSELF') url = this.hdSelfPath;
715
- //旅游购票
716
- if(type === 'TRAVEL') url = this.travelfPath;
623
+ getParams(){
624
+ let latitude = '', longitude = '';
625
+ console.log('handleRegionChange',this.stateLocation, this.changeLocation);
626
+ if(this.stateLocation && !this.$xdUniHelper.isEmpty(this.stateLocation)) {
627
+ if(this.stateLocation.longitude) longitude = this.stateLocation.longitude + '';
628
+ if(this.stateLocation.latitude) latitude = this.stateLocation.latitude + '';
629
+ }
630
+ if(this.changeLocation && !this.$xdUniHelper.isEmpty(this.changeLocation)) {
631
+ if(this.changeLocation.longitude) longitude = this.changeLocation.longitude + '';
632
+ if(this.changeLocation.latitude) latitude = this.changeLocation.latitude + '';
633
+ }
634
+ let params = {
635
+ latitude,
636
+ longitude,
637
+ page_size: 20,
638
+ page_token: this.page_token + '',
639
+ keyword: this.keyword,
640
+ xnamespace: this.xnamespace,
641
+ consume_mode: this.serverType.join(','),
642
+ }
643
+ if(this.brand_id) params['brand_ids'] = this.brand_id;
644
+ if(this.keyword) params['keyword'] = this.keyword
645
+ return params
646
+ },
717
647
 
718
- if(!url) throw new Error(`${type} => 未设置访问地址`);
648
+ getNearbyShop() {
649
+ let data = {
650
+ city_code: this.stateCity.city_code,
651
+ ...this.getParams()
652
+ }
653
+ this.$xdShowLoading({});
719
654
 
655
+ jfbRootExec("getNearbyVipShopList", {
656
+ vm: this,
657
+ data: data
658
+ }).then(res => {
659
+
660
+ let list = res.list.map(item => {
661
+ item.shop_icon = getServiceUrl(item.shop_icon);
662
+ item['key'] = this.$xdUniHelper.randomChar(20);
663
+ return item
664
+ });
665
+
666
+ let nearbyShopList = [];
667
+ if(this.page_token === '1') nearbyShopList = this.$xdUniHelper.cloneDeep(list);
668
+ else nearbyShopList = this.$xdUniHelper.cloneDeep(this.nearbyShopList).concat(list);
669
+
670
+ //设置标签
671
+ this.setMarketList(nearbyShopList);
672
+
673
+ this.nearbyShopList = this.$xdUniHelper.cloneDeep(nearbyShopList);
674
+
675
+ this.hasNext = res.next_page_token !== "";
676
+ this.next_page_token = res.next_page_token;
677
+
678
+ setTimeout(()=>{
679
+ console.log('setMarketList.setTimeout',nearbyShopList);
680
+ this.intoViewResourceShopId = `scroll-${this.resource_shop_id}`
681
+ },200);
682
+
683
+ console.log('setMarketList.getNearbyVipShopList',nearbyShopList);
684
+
685
+ this.$xdHideLoading();
686
+ }).catch(err=>{
687
+ this.$xdHideLoading();
688
+ console.log(err)
689
+ //this.nearbyShopList = this.$xdUniHelper.cloneDeep(this.nearbyShopList).concat([]);
690
+ //this.setMarketList(this.nearbyShopList);
691
+ })
692
+ },
693
+ setMarketList(list){
694
+ console.log('setMarketList',list);
695
+ // #ifdef H5
696
+ this.marketList = list.map(item => {
697
+ return {
698
+ platform: "H5",
699
+ lng: item.longitude,
700
+ lat: item.latitude,
701
+ address: item.address,
702
+ icon: {
703
+ url: item.shop_icon,
704
+ size: {width: 30, height: 30},
705
+ opts: {imageSize: {width: 30, height: 30}}
706
+ },
707
+ title: item.resource_shop_name,
708
+ id: item.resource_shop_id,
709
+ }
710
+ })
711
+ // #endif
712
+ // #ifdef MP-WEIXIN
713
+ this.setWeiXinMarkerList(list);
714
+ // #endif
715
+ },
716
+ switchMapExtend(isExtend){
717
+ this.mapIsExtend = isExtend;
718
+ },
719
+
720
+
721
+ //==点击事件===========
722
+ /**
723
+ * @description
724
+ * @param item
725
+ * @param type detail|shop
726
+ */
727
+ handleToEvent(item,type) {
728
+ debugger
729
+ let parmas = [];
730
+ let url = ''
731
+ if(item['resource_shop_id']) parmas.push(`resource_shop_id=${item['resource_shop_id']}`)
732
+
733
+ //去门店
734
+ if(type === 'shop') url = this.codePath;
735
+
736
+ //去详情
737
+ if(type === 'detail') url = this.detailPath;
738
+
739
+ if(!url) throw new Error(`${type} => 未设置访问地址,参数:${parmas.join('&')}`);
720
740
 
721
741
  //预览模式
722
742
  if(this.$configProject['isPreview']) {
@@ -729,31 +749,21 @@
729
749
  url: `${url}?${parmas.join('&')}`
730
750
  })
731
751
  },
732
-
733
752
  //==点击事件===========
734
753
 
754
+
735
755
  onJfbScroll(options) {
736
756
 
737
757
  },
738
- onJfbReachBottom(options) {
739
- // if (this.hasNext) {
740
- // this.page_token = this.next_page_token;
741
- // if (this.tab === 'nearby') {
742
- // this.getNearbyShop()
743
- // } else {
744
- // this.getOftenShop()
745
- // }
746
- // }
747
- },
758
+
748
759
  onJfbCustomEvent({ action, data }) {
749
760
  if (action === 'baseHeader@search') {
750
761
  this.keyword = data;
751
- this.page_token = '1';
752
- if (this.tab === 'nearby') {
753
- this.getNearbyShop()
754
- } else {
755
- this.getOftenShop()
756
- }
762
+ this.clearList();
763
+ this.getNearbyShop()
764
+ }
765
+ if(action === 'baseHeader@focus'){
766
+ this.switchMapExtend(false)
757
767
  }
758
768
  },
759
769
  }
@@ -771,11 +781,12 @@
771
781
  .shop_map {
772
782
  background: #fff;
773
783
  font-size: unit(28, rpx);
774
-
775
784
  .mpa_wrap {
776
- height: 400rpx;
785
+ padding: 20rpx;
786
+ height: 460rpx;
777
787
  background: #fff;
778
788
  transition: all .3s ease-in-out;
789
+ position: relative;
779
790
 
780
791
  /deep/ .xd-baidu__content {
781
792
  position: relative;
@@ -784,6 +795,25 @@
784
795
  }
785
796
  &.close{
786
797
  height: 0;
798
+ position: relative;
799
+ z-index: 0;
800
+ padding: 0;
801
+ overflow: hidden;
802
+ }
803
+ }
804
+
805
+ .map-center {
806
+ position: absolute;
807
+ width: 90rpx;
808
+ height: 90rpx;
809
+ top: 49%;
810
+ left: 50%;
811
+ transform: translate(-50%,-50%);
812
+ z-index: 3500;
813
+
814
+ & image {
815
+ width: 100%;
816
+ height: 100%;
787
817
  }
788
818
  }
789
819
 
@@ -792,7 +822,10 @@
792
822
  line-height: unit(30, rpx);
793
823
  padding-bottom: unit(10, rpx);
794
824
  }
825
+
795
826
  .map_expend{
827
+ position: relative;
828
+ z-index: 1;
796
829
  display: flex;
797
830
  justify-content: center;
798
831
  align-items: center;
@@ -801,40 +834,143 @@
801
834
  }
802
835
  }
803
836
 
804
- .shop_tabs {
805
- display: flex;
806
- background: #fff;
807
- border-bottom: 1px solid #f8f8f8;
837
+ .shop_list {
838
+ flex: 1;
839
+ .scroll_y{
840
+ height: 100%;
841
+ }
808
842
 
843
+ &-ske {
844
+ &-title {
845
+ display: flex;
846
+ justify-content: space-between;
847
+ align-content: center;
848
+ margin-bottom: 16rpx;
809
849
 
810
- .tab_item {
811
- font-size: 32rpx;
812
- color: #333;
813
- font-weight: 400;
814
- padding: 0 24rpx;
815
- position: relative;
816
- border-radius: 60rpx;
817
-
818
- & .lineX {
819
- position: absolute;
820
- bottom: 14rpx;
821
- height: 6rpx;
822
- background-color: var(--main-color);
823
- border-radius: 6rpx;
824
- width: 64rpx;
825
- left: 50%;
826
- transform: translateX(-50%);
850
+ & > view:first-child {
851
+ .skeleton-item(100%, 46rpx);
852
+ }
853
+
854
+ & > view:last-child {
855
+ flex-shrink: 0;
856
+ .skeleton-item(120rpx, 30rpx);
857
+ margin-left: 32rpx;
858
+ }
859
+ }
860
+ &-address {
861
+ display: flex;
862
+ justify-content: space-between;
863
+ align-content: center;
864
+ margin-bottom: 16rpx;
865
+
866
+ & > view:first-child {
867
+ .skeleton-item(70%, 36rpx);
868
+ }
869
+
870
+ & > view:last-child {
871
+ flex-shrink: 0;
872
+ .skeleton-item(100rpx, 28rpx);
873
+ }
874
+ }
875
+ &-time {
876
+ .skeleton-item(30%, 28rpx);
827
877
  }
828
878
  }
829
- }
830
879
 
831
- .shop_list {
832
- flex: 1;
833
- .scroll_y{
834
- height: 100%;
880
+ &-item {
881
+ box-sizing: border-box;
882
+ &-act {
883
+ background-color: var(--main-alpha-color)!important;
884
+ border:1px solid var(--main-alpha5-color)!important;
885
+ }
886
+
887
+ &-title {
888
+ display: flex;
889
+ justify-content: space-between;
890
+ align-items: center;
891
+ margin-bottom: 16rpx;
892
+ & > .title {
893
+ width: calc(100% - 140rpx);
894
+ flex-shrink: 0;
895
+ display: flex;
896
+ justify-content: flex-start;
897
+ align-items: center;
898
+ font-size: 32rpx;
899
+ line-height: 44rpx;
900
+ color: #333;
901
+ font-weight: 400;
902
+
903
+ & > view:first-child {
904
+ .uni-one-cut(44);
905
+
906
+ }
907
+
908
+ & > view:nth-child(2) {
909
+ flex-shrink: 0;
910
+ line-height: 44rpx;
911
+ font-size: 24rpx;
912
+ border-radius: 8rpx;
913
+ border:1px solid var(--main-alpha5-color)!important;
914
+ padding: 0 16rpx;
915
+ margin-left: 16rpx;
916
+ color: var(--main-color);
917
+ }
918
+ }
919
+
920
+ & > view:last-child {
921
+ flex-shrink: 0;
922
+ margin-left: 48rpx;
923
+ font-size: 24rpx;
924
+ color: #999;
925
+ display: flex;
926
+ align-items: center;
927
+ justify-content: flex-end;
928
+ & > text {
929
+ margin-right: 10rpx;
930
+ }
931
+ }
932
+ }
933
+
934
+ & > .address {
935
+ color: #999;
936
+ font-size: 24rpx;
937
+ line-height: 36rpx;
938
+ margin-bottom: 16rpx;
939
+ display: flex;
940
+ justify-content: flex-start;
941
+ align-content: center;
942
+
943
+ & > view:first-child {
944
+ .uni-one-cut(36);
945
+ flex: 1;
946
+
947
+ }
948
+ & > view:nth-child(2) {
949
+ flex-shrink: 0;
950
+ margin-left: 32rpx;
951
+ }
952
+ }
953
+
954
+ & > .openTime {
955
+ color: #999;
956
+ font-size: 24rpx;
957
+ line-height: 36rpx;
958
+ }
835
959
  }
836
960
  }
837
961
 
838
962
  }
963
+
964
+ .weiXinLocation {
965
+ right: 20rpx;
966
+ bottom: 20rpx;
967
+ font-size: 20rpx;
968
+ position: absolute;
969
+ width: 60rpx;
970
+ height: 60rpx;
971
+ background-color: #fff;
972
+ border: 1px solid #ccc;
973
+ border-radius: 8rpx;
974
+ }
839
975
  }
840
976
  </style>