jufubao-base 1.0.237-beta4 → 1.0.237-beta6

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.
Files changed (33) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseBalance/JfbBaseBalance.vue +4 -1
  3. package/src/components/JfbBaseCodeOpenVip/JfbBaseCodeOpenVip.vue +3 -3
  4. package/src/components/JfbBaseConsumpCode/JfbBaseConsumpCode.vue +13 -2
  5. package/src/components/JfbBaseFastLink/Attr.js +12 -1
  6. package/src/components/JfbBaseFastLink/JfbBaseFastLink.vue +66 -0
  7. package/src/components/JfbBaseHeaderColumn/Attr.js +75 -0
  8. package/src/components/JfbBaseHeaderColumn/JfbBaseHeaderColumn.vue +46 -2
  9. package/src/components/JfbBaseNoticeDialog/JfbBaseNoticeDialog.vue +2 -2
  10. package/src/components/JfbBaseOpenVip/Attr.js +41 -0
  11. package/src/components/JfbBaseOpenVip/JfbBaseOpenVip.vue +31 -4
  12. package/src/components/JfbBaseOpenVip/Mock.js +1 -1
  13. package/src/components/JfbBaseOpenVip/XdVipList.vue +7 -1
  14. package/src/components/JfbBaseOpenVipDetail/JfbBaseOpenVipDetail.vue +13 -4
  15. package/src/components/JfbBaseOpenVipDetail/Mock.js +13 -11
  16. package/src/components/JfbBasePay/Attr.js +40 -0
  17. package/src/components/JfbBasePay/JfbBasePay.vue +12 -4
  18. package/src/components/JfbBasePay/Mock.js +0 -9
  19. package/src/components/JfbBasePersonalData/JfbBasePersonalData.vue +1 -1
  20. package/src/components/JfbBasePointsCard/JfbBasePointsCard.vue +12 -8
  21. package/src/components/JfbBasePoster/Attr.js +1 -1
  22. package/src/components/JfbBasePosterBigSmall/JfbBasePosterBigSmall.vue +2 -2
  23. package/src/components/JfbBasePosterGroup/Attr.js +8 -0
  24. package/src/components/JfbBasePosterGroup/JfbBasePosterGroup.vue +5 -2
  25. package/src/components/JfbBaseShare/JfbBaseShare.vue +3 -1
  26. package/src/components/JfbBaseTfkSearch/ContentProduct.vue +1 -0
  27. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +4 -0
  28. package/src/components/JfbBaseTfkSearch/listMixins.js +2 -1
  29. package/src/components/JfbBaseUserInfo/Attr.js +61 -1
  30. package/src/components/JfbBaseUserInfo/JfbBaseUserInfo.vue +29 -5
  31. package/src/components/JfbBaseUserOrder/Attr.js +16 -0
  32. package/src/components/JfbBaseUserOrder/JfbBaseUserOrder.vue +11 -2
  33. package/src/components/JfbBaseWithdraw/JfbBaseWithdraw.vue +19 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-base",
3
- "version": "1.0.237-beta4",
3
+ "version": "1.0.237-beta6",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -7,7 +7,7 @@
7
7
  <!-- #endif -->
8
8
  <view class="jfb-base-balance__body">
9
9
  <view class="jfb-base-balance__body-tab">
10
- <view v-for="(item,index) in wallet_list" :key="index" @click="handleSwitchTab(item)"
10
+ <view :style="{color:wallet_type===item.wallet_type?mainColor:'#333333'}" v-for="(item,index) in wallet_list" :key="index" @click="handleSwitchTab(item)"
11
11
  class="jfb-base-balance__body-tab-item">
12
12
  {{item.show_name}}
13
13
  <view v-if="wallet_type===item.wallet_type" class="check" :style="{background: mainColor
@@ -219,6 +219,9 @@
219
219
  },
220
220
  onJfbShow(options) {
221
221
  console.log('event.onJfbShow', options)
222
+ this.method = options.method
223
+ this.getContent()
224
+ this.getDetail()
222
225
  },
223
226
  onJfbHide(options) {
224
227
  console.log('event.onJfbHide', options)
@@ -26,7 +26,7 @@
26
26
  <xd-content-xss :html="description"></xd-content-xss>
27
27
  </view>
28
28
  </view>
29
- <view class="fixed_bottom" :style="[fixed_bottom]">
29
+ <view class="fixed_bottom" :style="fixed_bottom">
30
30
  <xd-button type="primary" width="600rpx" @click="searchCode">查询</xd-button>
31
31
  <view class="plus_privacy">开通视为同意 <text @click.stop="handlePrivacy('privacy_service')"></text>《共享PLUS会员用户协议》</view>
32
32
  </view>
@@ -38,7 +38,7 @@
38
38
  <xd-list-item label="套餐期限" paddingLR="40rpx">{{ vipInfo.life_cycle_label }}</xd-list-item>
39
39
  <xd-list-item label="套餐金额" paddingLR="40rpx">¥{{ $xdUniHelper.divisionFloatNumber(vipInfo.sale_price, 100) }}</xd-list-item>
40
40
  </view>
41
- <view class="fixed_bottom" :style="[fixed_bottom]">
41
+ <view class="fixed_bottom" :style="fixed_bottom">
42
42
  <xd-button type="primary" width="600rpx" @click="p_createVipOrder">立即兑换</xd-button>
43
43
  <view class="plus_privacy">开通视为同意 <text @click.stop="handlePrivacy('privacy_service')"></text>《共享PLUS会员用户协议》</view>
44
44
  </view>
@@ -90,7 +90,7 @@
90
90
  }
91
91
  },
92
92
  fixed_bottom() {
93
- return this.fixedStyle({paddingBottom: 36, zIndex: 111})
93
+ return this.fixedStyle({ height: 36, zIndex: 111})
94
94
  },
95
95
  },
96
96
  watch: {
@@ -79,7 +79,7 @@
79
79
 
80
80
  </view>
81
81
  </view>
82
- <XdDialog :show.sync="showDialog" :showClose="false" :showTitle="false">
82
+ <XdDialog :show.sync="showDialog" :showClose="false" :showTitle="true">
83
83
  <view class="dialog-title" slot="title">门店确认</view>
84
84
  <view class="dialog-content">
85
85
  <view>当前门店:<span :style="{color:mainColor}">{{shopName}}</span></view>
@@ -192,6 +192,8 @@
192
192
  }
193
193
  },
194
194
  created() {
195
+ console.log(this.siteInfo,'configProject');
196
+
195
197
  this.init(this.container);
196
198
  },
197
199
  methods: {
@@ -725,11 +727,12 @@
725
727
  .jfb-base-consump-code {
726
728
  &__body {
727
729
  .content-box {
728
- margin: 158rpx 30rpx 0 30rpx;
730
+ margin: 0 30rpx 0 30rpx;
729
731
  background-color: #fff;
730
732
  padding: 81rpx 32rpx 32rpx 32rpx;
731
733
  border-radius: 24rpx;
732
734
  position: relative;
735
+ top: 158rpx;
733
736
  display: flex;
734
737
  flex-direction: column;
735
738
  align-items: center;
@@ -886,16 +889,19 @@
886
889
  &-item {
887
890
  display: flex;
888
891
  margin-top: 60rpx;
892
+ align-items: baseline;
889
893
 
890
894
  &-label {
891
895
  color: #999999;
892
896
  font-size: 30rpx;
893
897
  margin-right: 64rpx;
898
+ flex-shrink: 0;
894
899
  }
895
900
 
896
901
  &-tags {
897
902
  display: flex;
898
903
  align-items: flex-start;
904
+ flex-wrap: wrap;
899
905
 
900
906
  &>view {
901
907
  margin-right: 32rpx;
@@ -904,6 +910,11 @@
904
910
  padding: 16rpx 24rpx;
905
911
  border: 2rpx solid #EEEEEE;
906
912
  color: #CCCCCC;
913
+ margin-bottom: 18rpx;
914
+ }
915
+
916
+ &>view:last-child {
917
+ margin-bottom: 0;
907
918
  }
908
919
 
909
920
  }
@@ -24,7 +24,8 @@ export default {
24
24
  multiple: false,
25
25
  className: 'input80',
26
26
  list: [
27
- {label: '平铺', value: 'noraml'},
27
+ {label: '垂直', value: 'noraml'},
28
+ {label: '水平', value: 'horizontal'},
28
29
  {label: '悬浮', value: 'fixed'},
29
30
  ],
30
31
  inline: false,
@@ -53,6 +54,16 @@ export default {
53
54
  placeholder: '请输入自定义名称',
54
55
  className: 'input80',
55
56
  },
57
+ {
58
+ label: '自定义服务名称:',
59
+ ele: 'el-input',
60
+ type: 'text',
61
+ groupKey:'content',
62
+ valueKey: 'customName',
63
+ value: data['customName']? data['customName']: '我的服务',
64
+ placeholder: '请输入自定义服务名称',
65
+ className: 'input80',
66
+ },
56
67
  {
57
68
  label: '背景颜色:',
58
69
  ele: 'xd-color',
@@ -56,6 +56,22 @@
56
56
  :layoutInfo="layoutInfo"
57
57
  ></xd-fast-nav>
58
58
  </template>
59
+ <template v-if="is_layout === 'horizontal'">
60
+ <view :style="[horizontalStyle]">
61
+ <view class="x-line"></view>
62
+ <view class="fast-link__horizontal-title">{{customName}}</view>
63
+ <view class="fast-link__horizontal" v-if="list.length > 0">
64
+ <view :style="[horizontalItemStyle]" class="fast-link__horizontal-item" v-for="item in list" :key="item.key" @click="handleClick(item)">
65
+ <view class="fast-link__horizontal-item-icon" v-if="item.icon">
66
+ <xd-font-icon :color="iconColor" :size="item.size" :icon="item.icon"></xd-font-icon>
67
+ </view>
68
+ <view class="fast-link__horizontal-item-text" :style="{color: color, fontSize: fontSize + 'rpx'}">
69
+ <view>{{item.name}}</view>
70
+ </view>
71
+ </view>
72
+ </view>
73
+ </view>
74
+ </template>
59
75
  </view>
60
76
  </view>
61
77
  </template>
@@ -107,6 +123,8 @@
107
123
  margin: {},
108
124
  padding:{},
109
125
  rowSpacing: 20, //间距
126
+
127
+ customName: '我的服务'
110
128
  }
111
129
  },
112
130
  watch: {
@@ -117,6 +135,22 @@
117
135
  },
118
136
 
119
137
  computed: {
138
+ horizontalStyle(){
139
+ let border = 0;
140
+ if (this.is_border === 'Y') border = `${this.is_border_w}rpx solid ${this.is_border_c}`;
141
+ return {
142
+ margin: this.getMarginAndPadding(this.margin, 20),
143
+ padding:this.getMarginAndPadding(this.padding, 20),
144
+ border,
145
+ background: this.backgroundColor,
146
+ borderRadius: this.radius + 'rpx',
147
+ }
148
+ },
149
+ horizontalItemStyle(){
150
+ return {
151
+ marginBottom: this.rowSpacing + 'rpx',
152
+ }
153
+ },
120
154
  bodyStyle(){
121
155
  let margin = `${this.checkValue(this.margin.top, 20)}rpx`;
122
156
  margin = `${margin} ${this.checkValue(this.margin.right, 20)}rpx`;
@@ -199,6 +233,7 @@
199
233
  this.subColor = getContainerPropsValue(container, 'content.textSubColor', '#000');
200
234
  this.fontSubSize = getContainerPropsValue(container, 'content.fontSubSize', 24);
201
235
  this.isNotExpand = getContainerPropsValue(container, 'content.isNotExpand', 'Y');
236
+ this.customName = getContainerPropsValue(container, 'content.customName', '我的服务');
202
237
  if(this.is_layout === 'fixed') {
203
238
  this.listNave = this.list.map(item=>{
204
239
  let {appValue,path} = item.path
@@ -228,6 +263,14 @@
228
263
  return index < 3
229
264
  });
230
265
 
266
+ } else if(this.is_layout === 'horizontal'){
267
+ const remainder = this.list.length % 4;
268
+ if (remainder !== 0) {
269
+ const needed = 4 - remainder;
270
+ for (let i = 0; i < needed; i++) {
271
+ this.list.push({}); // 或者你可以插入其他默认值
272
+ }
273
+ }
231
274
  }
232
275
  },
233
276
  }
@@ -285,6 +328,29 @@
285
328
  align-items: center;
286
329
  }
287
330
  }
331
+ &__horizontal {
332
+ display: flex;
333
+ justify-content: space-around;
334
+ flex-wrap: wrap;
335
+ &-title {
336
+ color: #000000;
337
+ font-size: 26rpx;
338
+ font-weight: 500;
339
+ margin-bottom: 43rpx;
340
+ padding-left: 36rpx;
341
+ }
342
+ &-item {
343
+ display: flex;
344
+ flex-direction: column;
345
+ justify-content: center;
346
+ align-items: center;
347
+ box-sizing: border-box;
348
+ width: 25%;
349
+ &-icon {
350
+ margin-bottom: 22rpx;
351
+ }
352
+ }
353
+ }
288
354
  }
289
355
 
290
356
  </style>
@@ -312,6 +312,28 @@ export default {
312
312
  groupKey:'style',
313
313
  hidden: true,
314
314
  },
315
+ {
316
+ label: "是否展示二维码",
317
+ ele: "xd-radio",
318
+ valueKey: "showQrcode",
319
+ value: data.showQrcode || "N",
320
+ list: [
321
+ {label: "不显示", value: "N"},
322
+ {label: "显示", value: "Y"}
323
+ ],
324
+ groupKey:'content',
325
+ },
326
+ {
327
+ label: "是否展示扫一扫",
328
+ ele: "xd-radio",
329
+ valueKey: "showScan",
330
+ value: data.showScan || "N",
331
+ list: [
332
+ {label: "不显示", value: "N"},
333
+ {label: "显示", value: "Y"}
334
+ ],
335
+ groupKey:'content',
336
+ },
315
337
  {
316
338
  label: "是否展示快捷入口",
317
339
  ele: "xd-radio",
@@ -368,6 +390,33 @@ export default {
368
390
  placeholder: '请选择快捷入口背景颜色',
369
391
  classNmae: 'input80',
370
392
  },
393
+ data.showQrcode === 'Y' && {
394
+ ele: 'title',
395
+ label: '二维码样式设置',
396
+ size: 'small',
397
+ groupKey:'style',
398
+ },
399
+ data.showQrcode === 'Y' && {
400
+ label: "二维码大小:",
401
+ ele: "el-input",
402
+ valueKey: "qrcodeSize",
403
+ value: data.qrcodeSize || 32,
404
+ type: "number",
405
+ groupKey: "style",
406
+ },
407
+ data.showScan === 'Y' && {
408
+ ele: "title",
409
+ label: "扫一扫样式设置",
410
+ size: "small",
411
+ groupKey: "style",
412
+ },
413
+ data.showScan === 'Y' && {
414
+ label: "扫一扫图标颜色:",
415
+ ele: 'xd-color',
416
+ valueKey: "scanIconColor",
417
+ value: data.scanIconColor || '',
418
+ groupKey:'style',
419
+ },
371
420
  {
372
421
  label: '是否有边框:',
373
422
  ele: 'xd-radio',
@@ -441,6 +490,32 @@ export default {
441
490
  notice:'<div><span style="color:red">客服类型</span>不需要配置</div>',
442
491
  inline: false,
443
492
  },
493
+ {
494
+ label: '二维码跳转链接:',
495
+ ele: 'xd-select-pages-path',
496
+ valueKey: 'qrcodePath',
497
+ groupKey:'advanced',
498
+ placeholder: '选择二维码跳转链接',
499
+ value: data['qrcodePath'] || null,
500
+ setting: {
501
+ router: XdBus.getParentApi('getPagesTree'),
502
+ },
503
+ inline: false,
504
+ hidden: data.showQrcode === 'N'
505
+ },
506
+ {
507
+ label: "扫一扫跳转链接:",
508
+ ele: 'xd-select-pages-path',
509
+ valueKey: "scanPath",
510
+ groupKey:'advanced',
511
+ placeholder: '选择扫一扫跳转链接',
512
+ value: data['scanPath'] || null,
513
+ setting: {
514
+ router: XdBus.getParentApi('getPagesTree'),
515
+ },
516
+ inline: false,
517
+ hidden: data.showScan === 'N'
518
+ },
444
519
  {
445
520
  label: '',
446
521
  ele: 'slot',
@@ -66,6 +66,9 @@
66
66
  :key="showLocationKey"
67
67
  ></xd-city-show-api>
68
68
  </view>
69
+ <view v-if="showScan==='Y'" class="scan_in" @click="handleScanClick">
70
+ <xd-font-icon :size="32" :color="scanIconColor" icon="iconsaoma1"></xd-font-icon>
71
+ </view>
69
72
  <xd-font-icon v-if="searchIconPosition==='left'" :icon="icon" :color="iconColor" size="32"/>
70
73
  <input
71
74
  v-if="useSearch==='Y'"
@@ -84,6 +87,9 @@
84
87
  @click.stop="doSearch"
85
88
  >{{searchBtnText || '搜索'}}</view>
86
89
  </view>
90
+ <view v-if="showQrcode==='Y'" class="qr_code" @click="handleQrCodeClick">
91
+ <xd-font-icon :size="qrcodeSize" icon="iconerweima"></xd-font-icon>
92
+ </view>
87
93
  <view v-if="showSearchBtn==='Y' && searchBtnPosition==='out'"
88
94
  class="search_btn_out"
89
95
  :style="[searchBtnStyle]"
@@ -212,6 +218,12 @@
212
218
  searchBoxRadius: 30,
213
219
  bottomBorder: "",
214
220
  inputBorder: "",
221
+ showQrcode: "",
222
+ qrcodeSize: 32,
223
+ qrcodePath: "",
224
+ showScan: "",
225
+ scanIconColor: "",
226
+ scanPath: "",
215
227
  }
216
228
  },
217
229
  watch: {
@@ -243,8 +255,10 @@
243
255
  this.useSearch = getContainerPropsValue(container, "content.useSearch", "Y");
244
256
  this.searchPagePath = getContainerPropsValue(container, "content.searchPagePath", {value:""}).value;
245
257
  this.choseCityPath = getContainerPropsValue(container, "content.choseCityPath", {value:""}).value;
246
-
247
-
258
+ this.showQrcode = getContainerPropsValue(container, "content.showQrcode", "");
259
+ this.qrcodeSize = getContainerPropsValue(container, "content.qrcodeSize", 32);
260
+ this.showScan = getContainerPropsValue(container, "content.showScan", "");
261
+ this.scanIconColor = getContainerPropsValue(container, "content.scanIconColor", "#333");
248
262
  //基础
249
263
  this.backgroundColor = getContainerPropsValue(container, "content.backgroundColor", '#fff');
250
264
  this.icon = getContainerPropsValue(container, "content.icon", 'iconsousuo_mian');
@@ -282,6 +296,8 @@
282
296
  this.showQuickEntry = getContainerPropsValue(container, 'content.showQuickEntry', "N");
283
297
  this.quickEntryType = getContainerPropsValue(container, 'content.quickEntryType', "");
284
298
  this.quickEntryPath = getContainerPropsValue(container, 'content.quickEntryPath', {value:""}).value;
299
+ this.qrcodePath = getContainerPropsValue(container, 'content.qrcodePath', {value:""}).value;
300
+ this.scanPath = getContainerPropsValue(container, 'content.scanPath', {value:""}).value;
285
301
 
286
302
  let name , logo, platform_logo;
287
303
  if (this.projectAttr['site_name']) name = this.projectAttr['site_name'];
@@ -320,6 +336,16 @@
320
336
  })
321
337
  }
322
338
  },
339
+ handleQrCodeClick(){
340
+ this.$xdUniHelper.navigateTo({
341
+ url: this.qrcodePath
342
+ })
343
+ },
344
+ handleScanClick(){
345
+ this.$xdUniHelper.navigateTo({
346
+ url: this.scanPath
347
+ })
348
+ },
323
349
 
324
350
  /***
325
351
  * @description 定位完成事件
@@ -477,6 +503,20 @@
477
503
  padding: 0;
478
504
  }
479
505
  }
506
+ .scan_in{
507
+ position: relative;
508
+ padding-right: 28rpx;
509
+ margin-right: 20rpx;
510
+ &::before{
511
+ content: " ";
512
+ position: absolute;
513
+ width: 2rpx;
514
+ height: 100%;
515
+ background-color: #CCCCCC;
516
+ right: -0rpx;
517
+ top: 0rpx;
518
+ }
519
+ }
480
520
  .search_input{
481
521
  flex: 1;
482
522
  text-align: left;
@@ -510,6 +550,10 @@
510
550
  align-items: center;
511
551
  justify-content: center;
512
552
  }
553
+
554
+ .qr_code{
555
+ margin-left: 16rpx;
556
+ }
513
557
  }
514
558
  }
515
559
  }
@@ -139,7 +139,7 @@ export default {
139
139
  this.contentList = res.list
140
140
  this.currentImage = getServiceUrl(
141
141
  this.contentList[0].image_url,
142
- "size3"
142
+ "size8"
143
143
  );
144
144
  this.currentLinkUrl = this.getLinkUrl(
145
145
  this.contentList[0].redirect_data
@@ -216,7 +216,7 @@ export default {
216
216
  );
217
217
  this.currentImage = getServiceUrl(
218
218
  this.contentList[this.currentIndex].image_url,
219
- "size3"
219
+ "size8"
220
220
  );
221
221
  },
222
222
  handleToLink() {
@@ -7,6 +7,17 @@ export default {
7
7
  style: [],
8
8
  content: (data) => {
9
9
  return [
10
+ {
11
+ label: "是否展示兑换码",
12
+ ele: "xd-radio",
13
+ valueKey: 'showExchangeCode',
14
+ value: data.showExchangeCode || "Y",
15
+ groupKey: "content",
16
+ list: [
17
+ {label: "展示", value: "Y"},
18
+ {label: "不展示", value: "N"},
19
+ ]
20
+ },
10
21
  {
11
22
  label: '共享PLUS会员用户协议:',
12
23
  ele: 'xd-site-news',
@@ -251,6 +262,9 @@ export default {
251
262
  action: 'action',
252
263
  sort: true,
253
264
  maxlen: 100,
265
+ rules: [
266
+ {required: true, message: '请添加背景图', trigger: 'change'},
267
+ ],
254
268
  },
255
269
  {
256
270
  label: '4大特权图片:',
@@ -271,6 +285,9 @@ export default {
271
285
  action: 'action',
272
286
  sort: true,
273
287
  maxlen: 100,
288
+ rules: [
289
+ {required: true, message: '请添加特权图片', trigger: 'change'},
290
+ ],
274
291
  },
275
292
  {
276
293
  label: '会员详情路径:',
@@ -284,6 +301,30 @@ export default {
284
301
  },
285
302
  inline: false,
286
303
  },
304
+ {
305
+ label: '兑换码详情路径:',
306
+ ele: 'xd-select-pages-path',
307
+ valueKey: 'exchangeCodePath',
308
+ groupKey:'advanced',
309
+ placeholder: '请选择兑换码详情路径',
310
+ value: data['exchangeCodePath'] || null,
311
+ setting: {
312
+ router: XdBus.getParentApi('getPagesTree'),
313
+ },
314
+ inline: false,
315
+ },
316
+ {
317
+ label: '省钱明细页面路径:',
318
+ ele: 'xd-select-pages-path',
319
+ valueKey: 'moneyDetailPath',
320
+ groupKey:'advanced',
321
+ placeholder: '请选择省钱明细页面路径',
322
+ value: data['moneyDetailPath'] || null,
323
+ setting: {
324
+ router: XdBus.getParentApi('getPagesTree'),
325
+ },
326
+ inline: false,
327
+ },
287
328
  ].filter(i=>i)
288
329
  },
289
330
  advanced: [],
@@ -26,7 +26,7 @@
26
26
  <view v-else class="vip_level">普通用户</view>
27
27
  </view>
28
28
  <view class="u_sub">
29
- <view v-if="isVip" style="color:#999999;">已省{{ $xdUniHelper.divisionFloatNumber(save_amount, 100) }}</view>
29
+ <view v-if="isVip" style="color:#999999;" @click="handleToDetail">已省{{ $xdUniHelper.divisionFloatNumber(save_amount, 100) }}</view>
30
30
  <view v-else style="color:#333333;">{{ uInfo.phone_number }}</view>
31
31
  </view>
32
32
  </view>
@@ -75,14 +75,14 @@
75
75
  </view> -->
76
76
  </view>
77
77
 
78
- <xd-vip-list v-if="!isVip" :list="vipCardList"
78
+ <xd-vip-list v-if="!isVip" :list="showVipCardList"
79
79
  @handlePrivacy="handlePrivacy"
80
80
  @toVipDetail="toVipDetail"
81
81
  ></xd-vip-list>
82
82
 
83
83
  <xd-down-drawer :show.sync="showDrawer" height="480rpx">
84
84
  <view class="drawer_title">立即续费</view>
85
- <xd-vip-list :list="vipCardList"
85
+ <xd-vip-list :list="showVipCardList"
86
86
  @handlePrivacy="handlePrivacy"
87
87
  @toVipDetail="toVipDetail"
88
88
  ></xd-vip-list>
@@ -126,10 +126,18 @@
126
126
  vip_expire_time: "",
127
127
 
128
128
  siteLogo: "",
129
+ exchangeCodeVip: {
130
+ product_name: "兑换码",
131
+ sale_price: 0,
132
+ vip_card_id: -1
133
+ },
129
134
  //todo
130
135
  vipDetailPath: "",
131
136
  bannerBgImg: "",
132
137
  specialImage: "",
138
+ showExchangeCode: "",
139
+ exchangeCodePath: "",
140
+ moneyDetailPath: "",
133
141
  }
134
142
  },
135
143
  computed: {
@@ -141,6 +149,9 @@
141
149
  },
142
150
  isVip(){
143
151
  return this.uInfo.user_level === 'VIP';
152
+ },
153
+ showVipCardList(){
154
+ return this.showExchangeCode === 'Y' ? [this.exchangeCodeVip, ...this.vipCardList] : [...this.vipCardList]
144
155
  }
145
156
  },
146
157
  watch: {
@@ -168,6 +179,9 @@
168
179
  this.vipDetailPath = getContainerPropsValue(container, 'content.vipDetailPath', {value: "/system/system/vipdetail"}).value;
169
180
  this.bannerBgImg = getServiceUrl(getContainerPropsValue(container, 'content.bannerBgImg', {url: ""}).url);
170
181
  this.specialImage = getServiceUrl(getContainerPropsValue(container, 'content.specialImage', {url: ""}).url);
182
+ this.exchangeCodePath = getContainerPropsValue(container, 'content.exchangeCodePath', {value: ""}).value;
183
+ this.showExchangeCode = getContainerPropsValue(container, 'content.showExchangeCode', '');
184
+ this.moneyDetailPath = getContainerPropsValue(container, 'content.moneyDetailPath', {value: ""}).value;
171
185
  },
172
186
  p_getBaseUserInfo(){
173
187
  jfbRootExec("getOpenBaseUserInfo", {
@@ -194,6 +208,11 @@
194
208
  this.vipCardList = res.list;
195
209
  })
196
210
  },
211
+ handleToDetail(){
212
+ this.$xdUniHelper.navigateTo({
213
+ url: this.moneyDetailPath
214
+ })
215
+ },
197
216
  handlePrivacy(code){
198
217
  let params = `page_id=${this.pageAttr["page_id"]}`;
199
218
  params = `${params}&container_id=${this.containerId}${code}`;
@@ -202,6 +221,12 @@
202
221
  })
203
222
  },
204
223
  toVipDetail(vip_card_id){
224
+ if(vip_card_id === -1){
225
+ this.$xdUniHelper.navigateTo({
226
+ url: this.exchangeCodePath
227
+ })
228
+ return;
229
+ }
205
230
  this.$xdUniHelper.navigateTo({
206
231
  url: `${this.vipDetailPath}?vip_card_id=${vip_card_id}`
207
232
  })
@@ -213,7 +238,8 @@
213
238
  console.log('event.onJfbReachBottom', options)
214
239
  },
215
240
  onJfbShow(options) {
216
- console.log('event.onJfbShow', options)
241
+ // console.log('event.onJfbShow', options)
242
+ this.onJfbLoad(options)
217
243
  },
218
244
  onJfbHide(options) {
219
245
  console.log('event.onJfbHide', options)
@@ -300,6 +326,7 @@
300
326
  height: 184rpx;
301
327
  margin: auto;
302
328
  border-radius: 24rpx;
329
+ background-color: #E8A841;
303
330
  // background: linear-gradient(90deg, #E8A841 0%, #FAD48E 100%);
304
331
  background-size: 100% 100%;
305
332
  background-repeat: no-repeat;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  module.exports = {
4
- getOpenBaseUserInfo: {"user_name":"","user_code":"Uf4zx6EPfV","nickname":"未来~","real_name":"","head_url":"https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/Q0j4TwGTfTJsajZzh53IB56crRSdmKvRbjT4V1Ha8v5uCOkASbWS0GibgLeic8OKBzAwUyBa3vZGhjwmd6RfpG9g\/132","province_code":"","city_code":"","province_name":"","city_name":"","sex":"","sex_name":"未知","birthday_date":"","phone_number":"13611111111","show_user_name":"未来~","user_level":"VIP","vip_expire_time":1745026677,"request_id":"250e5709e6c95066"},
4
+ getOpenBaseUserInfo: {"user_name":"","user_code":"Uf4zx6EPfV","nickname":"未来~","real_name":"","head_url":"https:\/\/thirdwx.qlogo.cn\/mmopen\/vi_32\/Q0j4TwGTfTJsajZzh53IB56crRSdmKvRbjT4V1Ha8v5uCOkASbWS0GibgLeic8OKBzAwUyBa3vZGhjwmd6RfpG9g\/132","province_code":"","city_code":"","province_name":"","city_name":"","sex":"","sex_name":"未知","birthday_date":"","phone_number":"13611111111","show_user_name":"未来~","user_level":"","vip_expire_time":1745026677,"request_id":"250e5709e6c95066"},
5
5
  getVipList: {"total_size":3,"next_page_token":"","list":[{"vip_card_id":3,"product_id":60038520,"product_name":"体验卡","sale_price":200,"vip_card_icon":""},{"vip_card_id":2,"product_id":60038519,"product_name":"月卡","sale_price":2678,"vip_card_icon":""},{"vip_card_id":1,"product_id":60038515,"product_name":"测1","sale_price":20085,"vip_card_icon":""}],"request_id":"6b4aef5e06411d8a"},
6
6
  getVipMoneySaving: { "save_amount": 100 , "request_id": "6b4aef5e06411d8a" }
7
7
  }
@@ -10,7 +10,13 @@
10
10
  </view>
11
11
  </view>
12
12
  <view class="vip_pay">
13
- <view class="pay_btn" @click="toVipDetail">立即支付 <xd-unit style="margin-left: 16rpx;" :price="curVipCard.sale_price" :isOld="false" colorNew="#FFFFFF"></xd-unit></view>
13
+ <view class="pay_btn" @click="toVipDetail">
14
+ <template v-if="vip_card_id===-1">0元开通</template>
15
+ <template v-else>
16
+ 立即支付 ¥{{ $xdUniHelper.divisionFloatNumber(curVipCard.sale_price, 100) }}
17
+ {{ curVipCard.vip_card_life_cycle_unit ? '/'+curVipCard.vip_card_life_cycle_unit:'' }}
18
+ </template>
19
+ </view>
14
20
  <view class="vip_tip">开通视为同意<text @click.stop="handlePrivacy('privacy_service')">《共享PLUS会员用户协议》</text></view>
15
21
  </view>
16
22
  </view>