jufubao-base 1.0.400 → 1.0.401-beta1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-base",
3
- "version": "1.0.400",
3
+ "version": "1.0.401-beta1",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -51,4 +51,12 @@ module.exports = [
51
51
  },
52
52
  disabled: true,
53
53
  },
54
+ {
55
+ mapFnName: 'getListPlusCouponRights',
56
+ isRule: false,
57
+ title: '获得绑定的卡的优惠券权益列表',
58
+ path: '/card/v1/card-bind/list-plus-coupon-rights',
59
+ params: {},
60
+ disabled: true,
61
+ },
54
62
  ];
@@ -320,6 +320,17 @@ export default {
320
320
  { label: "一行滑块展示", value: "one" }
321
321
  ]
322
322
  },
323
+ {
324
+ label: "是否展示plus权益:",
325
+ ele: "xd-radio",
326
+ valueKey: "isShowPlus",
327
+ groupKey:'content',
328
+ value: data.isShowPlus || "N",
329
+ list: [
330
+ { label: "展示", value: "Y" },
331
+ { label: "隐藏", value: "N" }
332
+ ]
333
+ },
323
334
  {
324
335
  label: "二维码文案",
325
336
  ele: "el-input",
@@ -561,6 +572,68 @@ export default {
561
572
  });
562
573
  },
563
574
  },
575
+ {
576
+ ele: "title",
577
+ label: "plus权益样式配置",
578
+ size: "small",
579
+ groupKey: "style",
580
+ hidden: data.isShowPlus !== 'Y',
581
+ },
582
+ {
583
+ label: "列表项背景图:",
584
+ ele: "xd-upload",
585
+ valueKey: "plusItemBgImage",
586
+ groupKey:'style',
587
+ value: data.plusItemBgImage || {},
588
+ defaultValue: data.plusItemBgImage || null,
589
+ slot: true,
590
+ type: ['jpg', 'png', 'jpeg'],
591
+ styleType: 'one',
592
+ uploadType: 'aliyun',
593
+ size: 5,
594
+ action: 'action',
595
+ oneWidth: 375,
596
+ oneHeight: 120,
597
+ sort: true,
598
+ hidden: data.isShowPlus !== 'Y',
599
+ inline: true,
600
+ },
601
+ {
602
+ label: "套餐名称颜色:",
603
+ ele: "xd-color",
604
+ valueKey: "plusPackageNameColor",
605
+ groupKey:'style',
606
+ value: data.plusPackageNameColor || '#8C530D',
607
+ hidden: data.isShowPlus !== 'Y',
608
+ inline: true,
609
+ },
610
+ {
611
+ label: "兑换有效期颜色:",
612
+ ele: "xd-color",
613
+ valueKey: "plusValidDateColor",
614
+ groupKey:'style',
615
+ value: data.plusValidDateColor || '#A8630D',
616
+ hidden: data.isShowPlus !== 'Y',
617
+ inline: true,
618
+ },
619
+ {
620
+ label: "按钮文字颜色:",
621
+ ele: "xd-color",
622
+ valueKey: "plusBtnTextColor",
623
+ groupKey:'style',
624
+ value: data.plusBtnTextColor || '#A8630D',
625
+ hidden: data.isShowPlus !== 'Y',
626
+ inline: true,
627
+ },
628
+ {
629
+ label: "按钮背景颜色:",
630
+ ele: "xd-gradient-color",
631
+ valueKey: "plusBtnBgColor",
632
+ groupKey:'style',
633
+ value: data.plusBtnBgColor || 'linear-gradient(90deg, #FFF6E5 0%, #FEE4AA 100%)',
634
+ hidden: data.isShowPlus !== 'Y',
635
+ inline: true,
636
+ },
564
637
  ]
565
638
  },
566
639
  };
@@ -116,6 +116,14 @@
116
116
  background: tabIndex === 2 ? mainColor : '#fff',
117
117
  }"
118
118
  >优惠券</view>
119
+ <view
120
+ v-if="isShowPlus === 'Y'"
121
+ @click="tabIndex = 3"
122
+ :style="{
123
+ color: tabIndex === 3 ? '#fff' : '#B8B7BE',
124
+ background: tabIndex === 3 ? mainColor : '#fff',
125
+ }"
126
+ >plus权益</view>
119
127
  </view>
120
128
  <view class="jfb-base-card-entry__body-sub-tab" v-if="tabIndex === 1">
121
129
  <view :style="{
@@ -335,6 +343,35 @@
335
343
  <view v-else>暂无数据</view>
336
344
  </view>
337
345
  <!--content coupon-->
346
+ <!--content plus-->
347
+ <view v-if="tabIndex === 3 && plusList && plusList.length > 0" class="jfb-base-card-entry__body-plus">
348
+ <view class="jfb-base-card-entry__body-plus-list">
349
+ <view
350
+ class="jfb-base-card-entry__body-plus-item"
351
+ v-for="(item, idx) in plusList"
352
+ :key="idx"
353
+ @click="handlePlusClick(item)"
354
+ :style="{
355
+ backgroundImage: plusItemBgImageUrl ? 'url(' + plusItemBgImageUrl + ')' : '',
356
+ backgroundSize: '100% 100%',
357
+ }"
358
+ >
359
+ <view class="jfb-base-card-entry__body-plus-item-top">
360
+ <view class="jfb-base-card-entry__body-plus-item-name" :style="{ color: plusPackageNameColor }">{{ item.plus_product_name }}</view>
361
+ <view
362
+ class="jfb-base-card-entry__body-plus-item-btn"
363
+ :class="{ redeemed: item.button_text === '去使用' }"
364
+ :style="{
365
+ color: plusBtnTextColor,
366
+ background: item.button_text === '去使用' ? '' : plusBtnBgColor,
367
+ }"
368
+ >{{ item.button_text }}</view>
369
+ </view>
370
+ <view class="jfb-base-card-entry__body-plus-item-date" :style="{ color: plusValidDateColor }">兑换有效期:{{ item.end_time | formatTimestamp }}</view>
371
+ </view>
372
+ </view>
373
+ </view>
374
+ <!--content plus-->
338
375
  <!--no data-->
339
376
  <view v-else-if="cardList !== null && cardList.length === 0">
340
377
  <view class="jfb-base-card-entry__body-empty">
@@ -522,6 +559,14 @@ export default {
522
559
  cutstr(val){
523
560
  if(typeof val.entry_name === 'string') return val.entry_name.slice(0,4);
524
561
  return ''
562
+ },
563
+ formatTimestamp(val) {
564
+ if (!val) return '';
565
+ const date = new Date(Number(val) * 1000);
566
+ const y = date.getFullYear();
567
+ const m = String(date.getMonth() + 1).padStart(2, '0');
568
+ const d = String(date.getDate()).padStart(2, '0');
569
+ return `${y}-${m}-${d}`;
525
570
  }
526
571
  },
527
572
  watch: {
@@ -627,6 +672,14 @@ export default {
627
672
  buy_name: "",
628
673
  code_name: "",
629
674
  bussShowType: "",
675
+ isShowPlus: 'N',
676
+ plusList: [],
677
+ plusItemBgImage: {},
678
+ plusItemBgImageUrl: '',
679
+ plusPackageNameColor: '',
680
+ plusValidDateColor: '',
681
+ plusBtnTextColor: '',
682
+ plusBtnBgColor: '',
630
683
  };
631
684
  },
632
685
  created() {
@@ -690,11 +743,18 @@ export default {
690
743
  let bussShowType = getContainerPropsValue(container, "content.bussShowType", "one");
691
744
  if(this.isPreview) {
692
745
  this.tabIndex = this.isShowCoupon==='Y'?2:1;
693
- if(this.bussShowType !== bussShowType){
694
- this.clearDefault();
695
- this.cardPageNum = 0;
696
- this.onJfbLoad(this.options);
697
- }
746
+ }
747
+ this.isShowPlus = getContainerPropsValue(container, "content.isShowPlus", "N");
748
+ let plusItemBgImage = getContainerPropsValue(container, "content.plusItemBgImage", '');
749
+ this.plusItemBgImageUrl = plusItemBgImage ? getServiceUrl(plusItemBgImage.url) : '';
750
+ this.plusPackageNameColor = getContainerPropsValue(container, "content.plusPackageNameColor", '#8C530D');
751
+ this.plusValidDateColor = getContainerPropsValue(container, "content.plusValidDateColor", '#A8630D');
752
+ this.plusBtnTextColor = getContainerPropsValue(container, "content.plusBtnTextColor", '#A8630D');
753
+ this.plusBtnBgColor = getContainerPropsValue(container, "content.plusBtnBgColor", 'linear-gradient(90deg, #FFF6E5 0%, #FEE4AA 100%)');
754
+ if(this.bussShowType !== bussShowType){
755
+ this.clearDefault();
756
+ this.cardPageNum = 0;
757
+ this.onJfbLoad(this.options);
698
758
  }
699
759
  this.bussShowType = bussShowType;
700
760
  },
@@ -788,7 +848,8 @@ export default {
788
848
  * @param item
789
849
  * @param entry
790
850
  */
791
- handleBindLogin(item , entry) {
851
+ handleBindLogin(item, entry) {
852
+ debugger
792
853
  //卡券登录
793
854
  if (this.tabIndex === 1 || this.tabIndex === 2) {
794
855
  if (item["is_valid"] !== "Y") {
@@ -915,8 +976,10 @@ export default {
915
976
  this.getContent();
916
977
  if(this.tabIndex===1) {
917
978
  this.getCardList(options);
918
- } else {
979
+ } else if(this.tabIndex===2) {
919
980
  this.getCouponList(options);
981
+ } else if(this.tabIndex===3) {
982
+ this.getPlusList(options);
920
983
  }
921
984
  },
922
985
 
@@ -948,6 +1011,51 @@ export default {
948
1011
 
949
1012
  },
950
1013
 
1014
+ getPlusList(options) {
1015
+ this.$xdShowLoading({});
1016
+ let params = {}
1017
+ if(this.entryGroupId) params['group_id'] = this.entryGroupId;
1018
+ jfbRootExec("getListPlusCouponRights", {
1019
+ vm: this,
1020
+ data: params
1021
+ })
1022
+ .then((res) => {
1023
+ this.loadingCardList = false;
1024
+ //过滤入口配置
1025
+ res['site_entry_settings'] = this.filterNotSupportEntry(res['site_entry_settings']);
1026
+ let newList = this.$xdUniHelper.cloneDeep(res.list || []);
1027
+ this.plusList = this.getCardGroupItem(newList, res['site_entry_settings']);
1028
+ this.$xdHideLoading();
1029
+ })
1030
+ .catch(() => {
1031
+ this.loadingCardList = false;
1032
+ this.$xdHideLoading();
1033
+ });
1034
+ },
1035
+
1036
+ handlePlusClick(item) {
1037
+ if (!item.entries || item.entries.length === 0) return;
1038
+ let entry = item.entries[0];
1039
+ let redirectData = entry.redirect_data;
1040
+ let site_path = redirectData.path;
1041
+ jfbRootExec("getBaseByIdCardDetail", {
1042
+ vm: this,
1043
+ data: {
1044
+ card_number: item.card_number
1045
+ }
1046
+ }).then(res => {
1047
+ let code_content = this.getParams(res.card_qrcode, "code_content")
1048
+ let sitePath = `${site_path}?ecode=${Base64.encodeURI(code_content)}`;
1049
+ sitePath = `${sitePath}&is_return_is_used=Y`
1050
+ let sitePathPre = sitePath.split("?")[0];
1051
+ let sitePathAfter = sitePath.split("?")[1];
1052
+ sitePath = `${sitePathPre}?ecode-params=${Base64.encodeURI(sitePathAfter)}`;
1053
+ this.$xdUniHelper.redirectTo({
1054
+ url: sitePath,
1055
+ });
1056
+ })
1057
+ },
1058
+
951
1059
  getCardList(options) {
952
1060
  let params = {is_all: 'Y', is_show_entry_settings: 'Y', show_type: 'normal'};
953
1061
  if(options['jfb_business_code']) {
@@ -1188,6 +1296,64 @@ export default {
1188
1296
  }
1189
1297
  }
1190
1298
 
1299
+ .jfb-base-card-entry__body-plus {
1300
+ padding: 0 0 30rpx;
1301
+
1302
+ &-header {
1303
+ font-size: 28rpx;
1304
+ color: #666;
1305
+ margin-bottom: 20rpx;
1306
+
1307
+ &-num {
1308
+ color: #333;
1309
+ font-weight: 700;
1310
+ font-size: 32rpx;
1311
+ }
1312
+ }
1313
+
1314
+ &-list {
1315
+ display: flex;
1316
+ flex-direction: column;
1317
+ gap: 24rpx;
1318
+ }
1319
+
1320
+ &-item {
1321
+ padding: 30rpx 40rpx;
1322
+ background: #fff;
1323
+ border-radius: 16rpx;
1324
+ box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06);
1325
+
1326
+ &-top {
1327
+ display: flex;
1328
+ align-items: center;
1329
+ justify-content: space-between;
1330
+ }
1331
+
1332
+ &-name {
1333
+ font-size: 32rpx;
1334
+ font-weight: 500;
1335
+ color: #8C530D;
1336
+ }
1337
+
1338
+ &-date {
1339
+ font-size: 28rpx;
1340
+ color: #A8630D;
1341
+ margin-top: 72rpx;
1342
+ }
1343
+
1344
+ &-btn {
1345
+ flex-shrink: 0;
1346
+ margin-left: 20rpx;
1347
+ padding: 12rpx 36rpx;
1348
+ font-size: 32rpx;
1349
+ color: #A8630D;
1350
+ border-radius: 54rpx;
1351
+ text-align: center;
1352
+ background: linear-gradient(90deg, #FFF6E5 0%, #FEE4AA 100%);
1353
+ }
1354
+ }
1355
+ }
1356
+
1191
1357
  .card-list {
1192
1358
  overflow: hidden;
1193
1359
  border-radius: unit(16, rpx);
@@ -281,4 +281,5 @@ module.exports = {
281
281
  "card_expire_in": 56760,
282
282
  "request_id": "8fde2506c426a55d"
283
283
  },
284
+ getListPlusCouponRights:{ "total_size": 1, "list": [{ "card_number": "101001000141415", "card_type_name": "聚福宝福卡(点12位)", "plus_product_id": 60038520, "plus_product_name": "体验卡7天", "start_time": 1754841600, "end_time": 1800547199, "exchange_expire_time": 1800547099, "exchange_status": "N", "exchange_status_name": "未兑换", "business_codes": ["market", "cake"], "exchange_card_numbers": "", "exchange_time": 0, "button_text": "去兑换" }], "request_id": "f2043ea4806956cb" }
284
285
  }
@@ -330,6 +330,15 @@
330
330
  <text>{{ codeRefreshMinute }}分{{ codeRefreshSecond }}秒后自动刷新</text>
331
331
  <xd-font-icon icon="iconmian-loading" size="24" color="#999"></xd-font-icon>
332
332
  </view>
333
+ <!-- 预约按钮 -->
334
+ <view v-if="info.codes[0].reservation_buttons && info.codes[0].reservation_buttons.length > 0" class="jfb-base-order-detail__body-reserve">
335
+ <view
336
+ v-for="(btn, idx) in info.codes[0].reservation_buttons"
337
+ :key="idx"
338
+ class="jfb-base-order-detail__body-reserve-btn"
339
+ @click="handleReservationJump(btn.url)"
340
+ >{{ btn.name }}</view>
341
+ </view>
333
342
  </view>
334
343
  <!--单条条形码或者二维码-->
335
344
  <!--其他情况显示-->
@@ -497,6 +506,15 @@
497
506
  <text>{{ codeRefreshMinute }}分{{ codeRefreshSecond }}秒后自动刷新</text>
498
507
  <xd-font-icon icon="iconmian-loading" size="24" color="#999"></xd-font-icon>
499
508
  </view>
509
+ <!-- 预约按钮 -->
510
+ <view v-if="item.reservation_buttons && item.reservation_buttons.length > 0" class="jfb-base-order-detail__body-reserve">
511
+ <view
512
+ v-for="(btn, idx) in item.reservation_buttons"
513
+ :key="idx"
514
+ class="jfb-base-order-detail__body-reserve-btn"
515
+ @click="handleReservationJump(btn.url)"
516
+ >{{ btn.name }}</view>
517
+ </view>
500
518
  </view>
501
519
  </view>
502
520
  <!--其他情况显示-->
@@ -1761,6 +1779,18 @@ export default {
1761
1779
  });
1762
1780
  }
1763
1781
  },
1782
+ handleReservationJump(url) {
1783
+ let reg = /^(http:\/\/|https:\/\/|\/\/)+.+$/;
1784
+ if (reg.test(url)) {
1785
+ this.$xdUniHelper.redirectTo({
1786
+ url: url,
1787
+ });
1788
+ } else {
1789
+ this.$xdAlert({
1790
+ content: "访问路径格式错误!",
1791
+ });
1792
+ }
1793
+ },
1764
1794
  handleToPay(item) {
1765
1795
  //餐饮固定逻辑
1766
1796
  if (this.$configProject.type === "food") {
@@ -2849,6 +2879,22 @@ export default {
2849
2879
  color: #999;
2850
2880
  }
2851
2881
 
2882
+ &-reserve {
2883
+ display: flex;
2884
+ flex-wrap: wrap;
2885
+ gap: 16rpx;
2886
+ margin-top: 20rpx;
2887
+ }
2888
+
2889
+ &-reserve-btn {
2890
+ flex: 1;
2891
+ min-width: 0;
2892
+ text-align: center;
2893
+ font-size: 28rpx;
2894
+ color: #2A82E4;
2895
+ text-decoration: underline;
2896
+ }
2897
+
2852
2898
  }
2853
2899
  .ticket_method_msg {
2854
2900
  background-color: #FFEAE6;
@@ -141,6 +141,15 @@
141
141
  <text>{{ codeRefreshMinute }}分{{ codeRefreshSecond }}秒后自动刷新</text>
142
142
  <xd-font-icon icon="iconmian-loading" size="24" color="#999"></xd-font-icon>
143
143
  </view>
144
+ <!-- 预约按钮 -->
145
+ <view v-if="info.codes[0].reservation_buttons && info.codes[0].reservation_buttons.length > 0" class="jfb-base-success__body-reserve">
146
+ <view
147
+ v-for="(btn, idx) in info.codes[0].reservation_buttons"
148
+ :key="idx"
149
+ class="jfb-base-success__body-reserve-btn"
150
+ @click="handleReservationJump(btn.url)"
151
+ >{{ btn.name }}</view>
152
+ </view>
144
153
  </view>
145
154
  <view v-else>
146
155
  <view
@@ -317,6 +326,15 @@
317
326
  <text>{{ codeRefreshMinute }}分{{ codeRefreshSecond }}秒后自动刷新</text>
318
327
  <xd-font-icon icon="iconmian-loading" size="24" color="#999"></xd-font-icon>
319
328
  </view>
329
+ <!-- 预约按钮 -->
330
+ <view v-if="item.reservation_buttons && item.reservation_buttons.length > 0" class="jfb-base-success__body-reserve">
331
+ <view
332
+ v-for="(btn, idx) in item.reservation_buttons"
333
+ :key="idx"
334
+ class="jfb-base-success__body-reserve-btn"
335
+ @click="handleToLink(btn.url)"
336
+ >{{ btn.name }}</view>
337
+ </view>
320
338
  </view>
321
339
  </view>
322
340
  </view>
@@ -551,6 +569,20 @@ export default {
551
569
  }
552
570
  },
553
571
 
572
+ handleReservationJump(url) {
573
+ if (this.$configProject.isPreview) return;
574
+ let reg = /^(http:\/\/|https:\/\/|\/\/)+.+$/;
575
+ if (reg.test(url)) {
576
+ this.$xdUniHelper.redirectTo({
577
+ url: url,
578
+ });
579
+ } else {
580
+ this.$xdAlert({
581
+ content: "访问路径格式错误!",
582
+ });
583
+ }
584
+ },
585
+
554
586
  /**
555
587
  * @description 监听事件变化
556
588
  * @param value {object} 业务组件对象自己
@@ -1007,6 +1039,21 @@ export default {
1007
1039
  }
1008
1040
  }
1009
1041
  }
1042
+ &-reserve {
1043
+ display: flex;
1044
+ flex-wrap: wrap;
1045
+ gap: 16rpx;
1046
+ margin-top: 20rpx;
1047
+
1048
+ &-btn {
1049
+ flex: 1;
1050
+ min-width: 0;
1051
+ text-align: center;
1052
+ font-size: 28rpx;
1053
+ color: #2A82E4;
1054
+ text-decoration: underline;
1055
+ }
1056
+ }
1010
1057
  &-cashier {
1011
1058
  &-code {
1012
1059
  font-size: unit(32, rpx);
@@ -1,22 +0,0 @@
1
- 'use strict';
2
-
3
- /**
4
- * @description 第三方库
5
- * @param threePackagePath {String} 第三方库所在项目路径存放路径路
6
- * @param packname {String} 包名字
7
- * @returns {string|*}
8
- */
9
- const getPackagePath = (threePackagePath, packname = 'gxd-commands-bussiness')=>{
10
- if(packname === 'gxd-commands-bussiness') {
11
- return `/Users/shiyonggao/home/root/Base-Jufubao/xd-commands-bussiness/${threePackagePath}`;
12
- }
13
-
14
- if (packname === 'gxd-uni-library-editx') {
15
- return `/Users/shiyonggao/home/root/Base-Jufubao/xd-uni-library-editx/${threePackagePath}`;
16
- }
17
-
18
- };
19
-
20
- module.exports = {
21
- getPackagePath
22
- }