jufubao-mall 2.0.35-beta1 → 2.0.35-beta2

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,55 @@
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
+ >
112
+ <view class="shop_list-item-title">
113
+ <view class="title">
114
+ <view>{{item.resource_shop_name}}</view>
115
+ <view class="active" v-if="resource_shop_id === item.resource_shop_id">正在预览</view>
116
+ </view>
117
+ <view>
118
+ <text>详情</text>
119
+ <xd-font-icon icon="iconxiangyou_xian" color="#999" size="30" width="26" height="26"></xd-font-icon>
120
+ </view>
121
+ </view>
122
+ <view class="address" :style="{marginBottom:item['business_time_name']?'16rpx':0}">
123
+ <view>{{item.address}}</view>
124
+ <view
125
+ v-if="item.distance_conversion || item.distance"
126
+ :style="[cusStyle.distance]"
127
+ >{{item.distance_conversion || item.distance}}</view>
128
+ </view>
129
+ <view class="openTime" v-if="item['business_time_name']">营业时间:{{item['business_time_name']}}</view>
130
+ </view>
131
+ </template>
107
132
  </scroll-view>
108
133
  </template>
109
- <xd-no-data icon-type="shop" :scale-size="2" v-if="showShopList.length === 0">暂无门店信息</xd-no-data>
134
+ <xd-no-data icon-type="shop" :scale-size="2" v-if="nearbyShopList && nearbyShopList.length === 0">暂无更多门店</xd-no-data>
110
135
  </view>
111
136
  <!--shop-->
112
137
  </view>
@@ -119,7 +144,7 @@
119
144
  import XdNoData from "@/components/XdNoData/XdNoData";
120
145
  import { jfbRootExec } from "@/utils/xd.event";
121
146
  import JfbMallShopVipMixin from "./JfbMallShopVipMixin";
122
- import { getContainerPropsValue,gCPVal } from "@/utils/xd.base";
147
+ import { gCPVal } from "@/utils/xd.base";
123
148
  import componentsMixins from "@/mixins/componentsMixins";
124
149
  import getServiceUrl from "@/common/getServiceUrl";
125
150
  import CusShops from "./CusShops.vue"
@@ -128,7 +153,6 @@
128
153
  // #endif
129
154
  import { mapState } from 'vuex';
130
155
  import extsMixins from "@/mixins/extsMixins";
131
- import Color from "color"
132
156
 
133
157
 
134
158
  export default {
@@ -153,21 +177,24 @@
153
177
  next_page_token: "",
154
178
  brand_id: '',
155
179
  shop_id: '',
156
- resource_shop_id: '',
180
+ resource_shop_id: -1,
181
+ intoViewResourceShopId:'',
157
182
 
158
183
  //地图
159
- initBaidu: false,
184
+ initMapStatus: false,
160
185
  uiBaiduAk: '',
161
- mapCenter: [],
186
+ mapCenter: null,
187
+ changStatus: true,
188
+ changeLocation:null,
162
189
  mapIsExtend: true,
163
190
  marketList: [],
164
191
  myPosition: null,
165
192
  showMarkerId: "",
193
+ localImage: '',
166
194
 
167
195
  //tab
168
196
  titleList: [],
169
197
  tab: "nearby", //nearby,often
170
- oftenShopList: null,
171
198
  nearbyShopList: null,
172
199
  curShopId: '',
173
200
  toView: '',
@@ -197,11 +224,18 @@
197
224
 
198
225
  //高级
199
226
  codePath: '', //门店跳转
200
- cashierPath: '',//支持核销
201
- buyTicketPath: '',//在线选择
202
- codeAfterPath: '',//电子码
203
- hdSelfPath: '',//小时达
204
- travelfPath: '', //旅游购票
227
+ detailPath: '',//门店详情
228
+
229
+ // #ifdef MP-WEIXIN
230
+ WeiXinMap:null,
231
+ showLocation: false,
232
+ onLoadStatus: false, //小程序onload是否执行
233
+ onLocationStatus: false, //小程序首次定位成功状态
234
+ mpLocationFn:'getFuzzyLocation',
235
+ // #endif
236
+
237
+ isMoved: false, //是否已经移动过
238
+
205
239
  }
206
240
  },
207
241
  computed: {
@@ -209,86 +243,20 @@
209
243
  stateCity: state => state.cityLocation.city,
210
244
  stateLocation: state => state.cityLocation.location || {}
211
245
  }),
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
- },
246
+
280
247
  bodyStyleComp(){
281
248
  return {
282
249
  height: this.layoutInfo.bodyMinHeightRpx + 'rpx',
283
250
  '--main-color': this.tabStyle.actColor,
284
- '--main-alpha-color': this.$colorChange(this.mainColor).alpha(0.1).toString()
251
+ '--main-alpha-color': this.$colorChange(this.mainColor).alpha(0.01).toString(),
252
+ '--main-alpha5-color': this.$colorChange(this.mainColor).alpha(0.2).toString()
285
253
  }
286
254
  },
287
255
  contStyleComp(){
288
256
  let height = this.layoutInfo.bodyMinHeightRpx - 72;
289
257
  //大于一个标签显示标签
290
258
  if(this.titleList.length > 1) height = height - 100;
291
- if(this.mapIsExtend) height = height - 400;
259
+ if(this.mapIsExtend) height = height - 500;
292
260
  height = height - this.getPMValue(this.bodyPadding, 'TB', 0);
293
261
  return {
294
262
  height: height + 'rpx',
@@ -302,252 +270,42 @@
302
270
  if (JSON.stringify(value) === JSON.stringify(oldValue)) return;
303
271
  if (this.$configProject['isPreview']) this.init(value)
304
272
  },
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
- },
273
+
316
274
  stateCity(n, o) {
317
275
  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
- }
276
+ this.clearList();
277
+ this.getNearbyShop();
324
278
  }
325
279
  },
280
+ onLoadStatus(){
281
+ if(this.onLoadStatus && this.onLocationStatus) this.getNearbyShop()
282
+ },
283
+ onLocationStatus(){
284
+ if(this.onLoadStatus && this.onLocationStatus) this.getNearbyShop()
285
+ }
326
286
  },
327
287
  created() {
328
288
  this.init(this.container);
289
+
329
290
  },
291
+ mounted() {
292
+ this.$nextTick(()=>{
293
+ this.isEmptySetMapCenter();
294
+ })
295
+ },
296
+
330
297
  methods: {
331
298
  onJfbLoad(options) {
332
299
  this.setNameSpace(options, false);
333
300
  this.uiBaiduAk = this.baiduAk || this.$settings.baiduAk;
334
- this.myPosition = {
335
- lng: this.stateLocation.longitude,
336
- lat: this.stateLocation.latitude,
337
- }
338
301
  if(options.shop_id) this.shop_id = options.shop_id;
339
302
  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
- }
303
+ if(options.resource_shop_id) this.resource_shop_id = Number(options.resource_shop_id);
304
+ if(this.$configProject['isPreview'] && this.resource_shop_id === -1 ) this.resource_shop_id = 3513711;
305
+ this.onLoadStatus = true;
375
306
  },
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
-
419
- if (this.page_token === '1') this.oftenShopList = list
420
- else this.oftenShopList = this.oftenShopList.concat(list);
421
-
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
307
 
459
- //设置数据
460
- if (this.page_token === '1') this.nearbyShopList = list
461
- else this.nearbyShopList = this.nearbyShopList.concat(list);
462
308
 
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
309
  /**
552
310
  * @description 监听事件变化
553
311
  * @param container {object} 业务组件对象自己
@@ -555,19 +313,19 @@
555
313
  init(container) {
556
314
  this.xnamespace = gCPVal(container, 'xnamespace', this.projectAttr.business_code||this.xnamespace);
557
315
  this.serverType = gCPVal(container, 'serverType', [['SELL']]);
558
- this.showOftenTab = gCPVal(container, 'showOftenTab', 'N');
316
+ this.showOftenTab = 'N' //todo gCPVal(container, 'showOftenTab', 'N');
559
317
  if(this.showOftenTab === 'N') this.titleList = [{label: '附近门店', value: 'nearby'}];
560
318
  if(this.showOftenTab === 'Y') this.titleList = [{label: '附近门店', value: 'nearby'},{label: '常用门店', value: 'often'}];
561
319
  this.shopListStyle = gCPVal(container, 'shopListStyle', 'v1');
562
320
  this.fastEntryStatus = gCPVal(container, 'fastEntryStatus', 'N') === 'Y';
563
321
  let fastEntry = gCPVal(container, 'fastEntry', []).filter(item=>{
564
- return item.check === true
322
+ return true;//item.check === true
565
323
  });
566
324
  let cusNames = {};
567
325
  let cusEntry = {};
568
326
  if(this.fastEntryStatus) {
569
327
  for(let i = 0; i< fastEntry.length ;i++) {
570
- if(fastEntry[i].input) cusNames[fastEntry[i].value] = fastEntry[i].input
328
+ if(fastEntry[i].input) cusNames[fastEntry[i].value] = fastEntry[i].input
571
329
  cusEntry[fastEntry[i].value] = fastEntry[i].check;
572
330
  }
573
331
  }
@@ -598,8 +356,8 @@
598
356
 
599
357
  //style
600
358
  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, });
359
+ let shopStyle = `{"cardItemSpace":16,"margin":{"bottom":16,"left":16,"right":16,"top":16},"backgroundColor":"rgba(245, 245, 245, 1)"}`;
360
+ 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
361
  this.contentBgColor = gCPVal(container,'contentBgColor', '#f8f8f8', {sKey:'contentBgColorStatus',fields:['contentBgColor']});
604
362
  this.tabLayout = gCPVal(container,'tabLayout', 'v1')
605
363
 
@@ -629,8 +387,8 @@
629
387
  let cardItemShadow = gCPVal(container, 'cardItemShadow', [this.gStyleValue.shadow, {color:'',width:'0',}],{isShadow: true});
630
388
  let cardItemBorder = gCPVal(container, 'cardItemBorder', [{color: '#f8f8f8',width: 0,style: 'solid'},{color: '#f8f8f8',width: 0,style: 'solid'}],{isBorder: true});
631
389
  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});
390
+ let cardItemBgColor = gCPVal(container,'cardItemBgColor', '#fff', {sKey:'cardItemBgColorStatus',fields:['cardItemBgColor']});
391
+ let itemPadding = gCPVal(container,'itemPadding', [{top:32,left:32, right:32, bottom:32},20], {sKey:'itemPaddingStatus',fields:['itemPadding'],isPMR: true});
634
392
  let cardImageBorder = gCPVal(container, 'cardImageBorder', [{color: '#f8f8f8',width: 0,style: 'solid'},{color: '#f8f8f8',width: '2rpx',style: 'solid'}],{isBorder: true});
635
393
  let itemImageRadius = gCPVal(container,'itemImageRadius', [this.gStyleValue.radius/2, 0], {sKey:'itemImageRadiusStatus',fields:['itemImageRadius']})||0;
636
394
  this.cusStyle = {
@@ -654,68 +412,344 @@
654
412
 
655
413
  //高级
656
414
  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;
415
+ this.detailPath = gCPVal(container, 'detailPath', { value: "" }).value;
662
416
 
663
417
  //关闭显示附近门店
664
418
  if(this.showOftenTab === 'N') this.tab = 'nearby';
419
+ this.initMapStatus = true;
665
420
 
666
421
  },
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
422
 
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
+ //==map===========
425
+ // #ifdef MP-WEIXIN
426
+ /**
427
+ * @description 火星转百度坐标
428
+ * @param lng
429
+ * @param lat
430
+ * @returns {{latitude: *, longitude: *}}
431
+ */
432
+ gcj02toBaidu({longitude, latitude}) {
433
+ let x_PI = 3.14159265358979324 * 3000.0 / 180.0;
434
+ let PI = 3.1415926535897932384626;
435
+ let a = 6378245.0;
436
+ let ee = 0.00669342162296594323;
437
+ latitude = +latitude;
438
+ longitude = +longitude;
439
+ let z = Math.sqrt(longitude * longitude + latitude * latitude) + 0.00002 * Math.sin(latitude * x_PI);
440
+ let theta = Math.atan2(latitude, longitude) + 0.000003 * Math.cos(longitude * x_PI);
441
+ let bd_lng = z * Math.cos(theta) + 0.0065;
442
+ let bd_lat = z * Math.sin(theta) + 0.006;
443
+ return {longitude: bd_lng, latitude:bd_lat}
444
+ },
445
+
446
+ handleWXLocation(){
447
+ this.localImage = '';
448
+ this.showMarkerId = '';
449
+ this.showLocation = true;
450
+ this.WeiXinMap.moveToLocation({
451
+ success:(res)=>{
452
+ this.showLocation = false;
453
+ },
454
+ fail:()=>{}
455
+ })
456
+ },
457
+
458
+ getMYWeiXinPoint(){
459
+ const myPoint = this.$xdUniHelper.cloneDeep(this.mapCenter);
460
+ return {
461
+ platform: "MP",
462
+ longitude: myPoint.longitude,
463
+ latitude: myPoint.latitude,
464
+ lng: myPoint.longitude,
465
+ lat: myPoint.latitude,
466
+ id: 1999999999,
467
+ width: 30,
468
+ height: 30,
469
+ iconPath:'https://img.jufubao.cn/common/local.png?x-oss-process=style/size3',
470
+ mpaKey: this.$xdUniHelper.randomChar(20)
471
+ }
472
+ },
473
+
474
+ setWeiXinMarkerList(list){
475
+ let location = [this.getMYWeiXinPoint()];
476
+ if(this.isMoved) location = []
477
+ this.marketList = location.concat(list.map(item => {
478
+ let point = this.baiduTogcj(item.longitude, item.latitude);
479
+ return {
480
+ platform: "MP",
481
+ longitude: point[0],
482
+ latitude: point[1],
483
+ lng: item.longitude,
484
+ lat: item.latitude,
485
+ id: item.resource_shop_id,
486
+ title: item.resource_shop_name,
487
+ width: 30,
488
+ height: 30,
489
+ iconPath: item.shop_icon,
490
+ mpaKey: this.$xdUniHelper.randomChar(20),
491
+ customCallout: {
492
+ anchorX: 0.5,
493
+ anchorY: 0.5,
494
+ display: 'ALWAYS',
495
+ }
496
+ }
497
+ }))
498
+ },
499
+
500
+ handleMarketTap(e){
501
+ this.showMarkerId = e.markerId;
502
+ },
503
+
504
+ // #endif
505
+ // #ifdef H5
506
+ handleH5Init(){
507
+ this.getNearbyShop();
508
+ },
509
+
510
+ handleShowMarker(item,status){
511
+ if(status) {
512
+ this.localImage = '';
513
+ this.resource_shop_id = item.id;
514
+ setTimeout(()=>{
515
+ this.intoViewResourceShopId = `scroll-${item.id}`;
516
+ },50)
517
+
680
518
  }
519
+ else this.localImage = getServiceUrl('/common/localdone.png');
520
+ },
521
+ // #endif
522
+
681
523
 
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]}`);
524
+ handleRegionChange(e){
525
+ console.log('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);
695
602
  })
603
+ this.onLocationStatus = true;
696
604
  }
697
- this.$xdUniHelper.redirectTo({
698
- url: this.isCallback + `?${parmas.join('&')}`
699
- },false,true)
700
- return
605
+ })
606
+ // #endif
607
+ }
608
+ },
609
+
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)]});
614
+ }
615
+ // #endif
616
+ this.page_token = '1';
617
+ this.nearbyShopList = null;
618
+ this.intoViewResourceShopId = '';
619
+ this.marketList = [];
620
+ },
621
+ //==map===========
622
+
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
+ },
647
+
648
+ getNearbyShop() {
649
+ let data = {
650
+ city_code: this.stateCity.city_code,
651
+ ...this.getParams()
652
+ }
653
+ this.$xdShowLoading({});
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,
701
709
  }
710
+ })
711
+ // #endif
712
+ // #ifdef MP-WEIXIN
713
+ this.setWeiXinMarkerList(list);
714
+ // #endif
715
+ },
716
+ switchMapExtend(isExtend){
717
+ this.mapIsExtend = isExtend;
718
+ },
702
719
 
703
- //其他情况
704
- url = this.codePath;
720
+
721
+ //==点击事件===========
722
+ /**
723
+ * @description
724
+ * @param item
725
+ * @param type detail|shop
726
+ * @param isMap
727
+ */
728
+ handleToEvent({item,type,isMap=false}) {
729
+ let curShop = {};
730
+ if(isMap) curShop = this.nearbyShopList.filter(it=>it.resource_shop_id === item.id)[0];
731
+ else curShop = this.$xdUniHelper.cloneDeep(item);
732
+
733
+ let parmas = [];
734
+ let url = ''
735
+ if(curShop.resource_shop_id) parmas.push(`resource_shop_id=${curShop.resource_shop_id}`);
736
+ if(curShop.brand_id) parmas.push(`brand_id=${curShop.brand_id}`);
737
+ if(curShop.consume_mode) parmas.push(`consume_mode=${curShop.consume_mode.join(',')}`);
738
+ if(curShop.shop_id) parmas.push(`shop_id=${curShop.shop_id}`);
739
+
740
+ //详情增加扩张参数
741
+ if(curShop.exts_params && type === 'detail'){
742
+ parmas.push(`exts_params=${curShop.exts_params}`);
743
+ parmas.push(`resource_shop=${Base64.encodeURI(JSON.stringify({shop_id: curShop.shop_id,resource_shop_id: curShop.resource_shop_id }))}`);
705
744
  }
706
745
 
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;
746
+ //去门店
747
+ if(type === 'shop') url = this.codePath;
717
748
 
718
- if(!url) throw new Error(`${type} => 未设置访问地址`);
749
+ //去详情
750
+ if(type === 'detail') url = this.detailPath;
751
+
752
+ if(!url) throw new Error(`${type} => 未设置访问地址,参数:${parmas.join('&')}`);
719
753
 
720
754
 
721
755
  //预览模式
@@ -729,31 +763,21 @@
729
763
  url: `${url}?${parmas.join('&')}`
730
764
  })
731
765
  },
732
-
733
766
  //==点击事件===========
734
767
 
768
+
735
769
  onJfbScroll(options) {
736
770
 
737
771
  },
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
- },
772
+
748
773
  onJfbCustomEvent({ action, data }) {
749
774
  if (action === 'baseHeader@search') {
750
775
  this.keyword = data;
751
- this.page_token = '1';
752
- if (this.tab === 'nearby') {
753
- this.getNearbyShop()
754
- } else {
755
- this.getOftenShop()
756
- }
776
+ this.clearList();
777
+ this.getNearbyShop()
778
+ }
779
+ if(action === 'baseHeader@focus'){
780
+ this.switchMapExtend(false)
757
781
  }
758
782
  },
759
783
  }
@@ -773,9 +797,10 @@
773
797
  font-size: unit(28, rpx);
774
798
 
775
799
  .mpa_wrap {
776
- height: 400rpx;
800
+ height: 500rpx;
777
801
  background: #fff;
778
802
  transition: all .3s ease-in-out;
803
+ position: relative;
779
804
 
780
805
  /deep/ .xd-baidu__content {
781
806
  position: relative;
@@ -784,6 +809,24 @@
784
809
  }
785
810
  &.close{
786
811
  height: 0;
812
+ position: relative;
813
+ z-index: 0;
814
+ overflow: hidden;
815
+ }
816
+ }
817
+
818
+ .map-center {
819
+ position: absolute;
820
+ width: 90rpx;
821
+ height: 90rpx;
822
+ top: 49%;
823
+ left: 50%;
824
+ transform: translate(-50%,-50%);
825
+ z-index: 3500;
826
+
827
+ & image {
828
+ width: 100%;
829
+ height: 100%;
787
830
  }
788
831
  }
789
832
 
@@ -792,7 +835,10 @@
792
835
  line-height: unit(30, rpx);
793
836
  padding-bottom: unit(10, rpx);
794
837
  }
838
+
795
839
  .map_expend{
840
+ position: relative;
841
+ z-index: 1;
796
842
  display: flex;
797
843
  justify-content: center;
798
844
  align-items: center;
@@ -801,40 +847,143 @@
801
847
  }
802
848
  }
803
849
 
804
- .shop_tabs {
805
- display: flex;
806
- background: #fff;
807
- border-bottom: 1px solid #f8f8f8;
850
+ .shop_list {
851
+ flex: 1;
852
+ .scroll_y{
853
+ height: 100%;
854
+ }
808
855
 
856
+ &-ske {
857
+ &-title {
858
+ display: flex;
859
+ justify-content: space-between;
860
+ align-content: center;
861
+ margin-bottom: 16rpx;
809
862
 
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%);
863
+ & > view:first-child {
864
+ .skeleton-item(100%, 46rpx);
865
+ }
866
+
867
+ & > view:last-child {
868
+ flex-shrink: 0;
869
+ .skeleton-item(120rpx, 30rpx);
870
+ margin-left: 32rpx;
871
+ }
872
+ }
873
+ &-address {
874
+ display: flex;
875
+ justify-content: space-between;
876
+ align-content: center;
877
+ margin-bottom: 16rpx;
878
+
879
+ & > view:first-child {
880
+ .skeleton-item(70%, 36rpx);
881
+ }
882
+
883
+ & > view:last-child {
884
+ flex-shrink: 0;
885
+ .skeleton-item(100rpx, 28rpx);
886
+ }
887
+ }
888
+ &-time {
889
+ .skeleton-item(30%, 28rpx);
827
890
  }
828
891
  }
829
- }
830
892
 
831
- .shop_list {
832
- flex: 1;
833
- .scroll_y{
834
- height: 100%;
893
+ &-item {
894
+ box-sizing: border-box;
895
+ &-act {
896
+ background-color: var(--main-alpha-color)!important;
897
+ border:1px solid var(--main-alpha5-color)!important;
898
+ }
899
+
900
+ &-title {
901
+ display: flex;
902
+ justify-content: space-between;
903
+ align-items: center;
904
+ margin-bottom: 16rpx;
905
+ & > .title {
906
+ width: calc(100% - 140rpx);
907
+ flex-shrink: 0;
908
+ display: flex;
909
+ justify-content: flex-start;
910
+ align-items: center;
911
+ font-size: 32rpx;
912
+ line-height: 44rpx;
913
+ color: #333;
914
+ font-weight: 400;
915
+
916
+ & > view:first-child {
917
+ .uni-one-cut(44);
918
+
919
+ }
920
+
921
+ & > view:nth-child(2) {
922
+ flex-shrink: 0;
923
+ line-height: 44rpx;
924
+ font-size: 24rpx;
925
+ border-radius: 8rpx;
926
+ border:1px solid var(--main-alpha5-color)!important;
927
+ padding: 0 16rpx;
928
+ margin-left: 16rpx;
929
+ color: var(--main-color);
930
+ }
931
+ }
932
+
933
+ & > view:last-child {
934
+ flex-shrink: 0;
935
+ margin-left: 48rpx;
936
+ font-size: 24rpx;
937
+ color: #999;
938
+ display: flex;
939
+ align-items: center;
940
+ justify-content: flex-end;
941
+ & > text {
942
+ margin-right: 10rpx;
943
+ }
944
+ }
945
+ }
946
+
947
+ & > .address {
948
+ color: #999;
949
+ font-size: 24rpx;
950
+ line-height: 36rpx;
951
+ margin-bottom: 16rpx;
952
+ display: flex;
953
+ justify-content: flex-start;
954
+ align-content: center;
955
+
956
+ & > view:first-child {
957
+ .uni-one-cut(36);
958
+ flex: 1;
959
+
960
+ }
961
+ & > view:nth-child(2) {
962
+ flex-shrink: 0;
963
+ margin-left: 32rpx;
964
+ }
965
+ }
966
+
967
+ & > .openTime {
968
+ color: #999;
969
+ font-size: 24rpx;
970
+ line-height: 36rpx;
971
+ }
835
972
  }
836
973
  }
837
974
 
838
975
  }
976
+
977
+ .weiXinLocation {
978
+ right: 20rpx;
979
+ bottom: 20rpx;
980
+ font-size: 20rpx;
981
+ position: absolute;
982
+ width: 60rpx;
983
+ height: 60rpx;
984
+ background-color: #fff;
985
+ border: 1px solid #ccc;
986
+ border-radius: 8rpx;
987
+ }
839
988
  }
840
989
  </style>