jufubao-base 1.0.320-beta2 → 1.0.320-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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-base",
3
- "version": "1.0.320-beta2",
3
+ "version": "1.0.320-beta3",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -246,27 +246,6 @@ export default {
246
246
  card_number_focus: false,
247
247
  showCardTypeChoose: false,
248
248
  cardTypeList: [
249
- {
250
- card_type_name: "电影票兑换券",
251
- card_number: "923974909815654",
252
- points: "300.00",
253
- business_lines: "蛋糕、百货、提货商城、蛋糕商城。超长展示时,自动折行处理即可。",
254
- validity: "2年"
255
- },
256
- {
257
- card_type_name: "购物券",
258
- card_number: "923974909815655",
259
- points: "500.00",
260
- business_lines: "百货、提货商城、蛋糕商城。",
261
- validity: "1年"
262
- },
263
- {
264
- card_type_name: "礼品券",
265
- card_number: "923974909815656",
266
- points: "200.00",
267
- business_lines: "蛋糕、百货。",
268
- validity: "3年"
269
- }
270
249
  ], // 票券类型列表
271
250
  multiple_id: '', // 多场景ID
272
251
  multiple_scene: '', // 多场景场景
@@ -457,6 +436,15 @@ export default {
457
436
  this.showInfo = true;
458
437
  this.info = temp;
459
438
  res['site_entry_settings'] = this.filterNotSupportEntry(res['site_entry_settings']);
439
+ // 对 site_entry_settings 进行去重处理,基于 business_code
440
+ const seen = new Map();
441
+ res['site_entry_settings'] = res['site_entry_settings'].filter(item => {
442
+ if (!seen.has(item.business_code)) {
443
+ seen.set(item.business_code, true);
444
+ return true;
445
+ }
446
+ return false;
447
+ });
460
448
  this.showCardTypeChoose = res.multiple_info.is_support_multiple === 'Y';
461
449
  this.cardTypeList = res.multiple_info.multiple_list.map(item => {
462
450
  item.business_codes_name = '';
@@ -499,6 +487,15 @@ export default {
499
487
  this.showForm = false;
500
488
  this.info = temp;
501
489
  res['site_entry_settings'] = this.filterNotSupportEntry(res['site_entry_settings']);
490
+ // 对 site_entry_settings 进行去重处理,基于 business_code
491
+ const seen = new Map();
492
+ res['site_entry_settings'] = res['site_entry_settings'].filter(item => {
493
+ if (!seen.has(item.business_code)) {
494
+ seen.set(item.business_code, true);
495
+ return true;
496
+ }
497
+ return false;
498
+ });
502
499
  this.showCardTypeChoose = res.multiple_info.is_support_multiple === 'Y';
503
500
  this.cardTypeList = res.multiple_info.multiple_list.map(item => {
504
501
  item.business_codes_name = '';
@@ -122,6 +122,80 @@
122
122
  </view>
123
123
  </view>
124
124
  </view>
125
+ <xd-down-drawer
126
+ :show.sync="showCardTypeChoose"
127
+ :isBodyClose="false"
128
+ :isClose="false"
129
+ :z-index="3000"
130
+ >
131
+ <view class="jfb-base-card-info-entry__body-type-choose">
132
+ <view class="jfb-base-card-info-entry__body-type-choose-header">
133
+ <view class="jfb-base-card-info-entry__body-type-choose-title">设置票券类型</view>
134
+ <view class="jfb-base-card-info-entry__body-type-choose-notice" :style="{ color: mainColor }">
135
+ 注:票券类型一经确认,后续无法更改,请慎重选择
136
+ </view>
137
+ </view>
138
+
139
+ <!-- 可滚动的类型 item 列表 -->
140
+ <view class="jfb-base-card-info-entry__body-type-choose-scroll">
141
+ <view
142
+ v-for="(item, index) in cardTypeList"
143
+ :key="index"
144
+ >
145
+ <view
146
+ class="jfb-base-card-info-entry__body-type-choose-item"
147
+ >
148
+ <!-- 顶部区域 -->
149
+ <view class="jfb-base-card-info-entry__body-type-choose-item-header">
150
+ <view class="jfb-base-card-info-entry__body-type-choose-item-header-left">
151
+ <xd-font-icon
152
+ icon="iconkaquan"
153
+ color="#ffc65d"
154
+ size="32"
155
+ class="jfb-base-card-info-entry__body-type-choose-item-icon"
156
+ ></xd-font-icon>
157
+ <view class="jfb-base-card-info-entry__body-type-choose-item-title">{{ item.card_type_name }}</view>
158
+ </view>
159
+ <view class="jfb-base-card-info-entry__body-type-choose-item-validity">有效期: {{ item.end_time }}</view>
160
+ </view>
161
+
162
+ <!-- 中间区域 -->
163
+ <view class="jfb-base-card-info-entry__body-type-choose-item-content">
164
+ <view class="jfb-base-card-info-entry__body-type-choose-item-field">票券号: {{ item.card_number }}</view>
165
+ <view class="jfb-base-card-info-entry__body-type-choose-item-field">
166
+ <text style="color: #999">点数: </text>
167
+ <text style="color: #333; font-weight: bold">{{ $xdUniHelper.divisionFloatNumber(item.card_point, 100) }} </text>
168
+ <text style="color: #999">点</text>
169
+ </view>
170
+ </view>
171
+
172
+ <!-- 分隔线 -->
173
+ <view class="jfb-base-card-info-entry__body-type-choose-item-divider"></view>
174
+
175
+ <!-- 底部业务线描述 -->
176
+ <view class="jfb-base-card-info-entry__body-type-choose-item-business">
177
+ 业务线: {{ item.business_codes_name}}
178
+ </view>
179
+ </view>
180
+
181
+ <!-- 确认按钮 -->
182
+ <view class="jfb-base-card-info-entry__body-type-choose-item-btn-wrap">
183
+ <view class="jfb-base-card-info-entry__body-type-choose-item-btn-inner">
184
+ <xd-button
185
+ type="primary"
186
+ size="small"
187
+ radius="16"
188
+ width="240rpx"
189
+ @click="handleConfirmBind(item)"
190
+ >
191
+ 确认选择绑定
192
+ </xd-button>
193
+ </view>
194
+ </view>
195
+ </view>
196
+ </view>
197
+ </view>
198
+ </xd-down-drawer>
125
199
  </view>
126
200
  </view>
127
201
  </template>
@@ -137,6 +211,7 @@ import extsMixins from "@/mixins/extsMixins";
137
211
  import colorCardMixins from "@/mixins/colorCardMixins";
138
212
  import XdUnit from "@/components/XdUnit/XdUnit";
139
213
  import XdButton from "@/components/XdButton/XdButton";
214
+ import XdDownDrawer from "@/components/XdDownDrawer/XdDownDrawer";
140
215
 
141
216
  export default {
142
217
  name: "JfbBaseCardInfoEntry",
@@ -144,6 +219,7 @@ export default {
144
219
  XdFontIcon,
145
220
  XdUnit,
146
221
  XdButton,
222
+ XdDownDrawer
147
223
  },
148
224
  mixins: [
149
225
  componentsMixins, extsMixins, JfbBaseCardInfoEntryMixin,colorCardMixins
@@ -174,6 +250,10 @@ export default {
174
250
 
175
251
  card_password_focus: false,
176
252
  card_number_focus: false,
253
+ showCardTypeChoose: false,
254
+ cardTypeList: [], // 票券类型列表
255
+ multiple_id: '', // 多场景ID
256
+ multiple_scene: '', // 多场景场景
177
257
  };
178
258
  },
179
259
  watch: {
@@ -238,6 +318,8 @@ export default {
238
318
  data: {
239
319
  card_qrcode: this.qrcode,
240
320
  is_show_pop: "Y",
321
+ multiple_id: this.multiple_id,
322
+ multiple_scene: this.multiple_scene
241
323
  },
242
324
  })
243
325
  .then((res) => {
@@ -253,6 +335,8 @@ export default {
253
335
  card_number: this.card_number + "",
254
336
  is_show_entry_settings: "Y",
255
337
  is_show_pop: "Y",
338
+ multiple_id: this.multiple_id,
339
+ multiple_scene: this.multiple_scene
256
340
  },
257
341
  })
258
342
  .then((res) => {
@@ -296,6 +380,7 @@ export default {
296
380
  });
297
381
  },
298
382
  });
383
+ this.showCardTypeChoose = false;
299
384
  }
300
385
  },
301
386
  //卡券已被自己绑定时的弹框
@@ -366,13 +451,10 @@ export default {
366
451
  temp[key] = res[key];
367
452
  }
368
453
  });
369
-
370
454
  //过滤入口配置
371
455
  if(res && res.site_entry_settings && res.site_entry_settings.length > 0) {
372
456
  res['site_entry_settings'] = this.filterNotSupportEntry(res['site_entry_settings']);
373
457
  }
374
-
375
-
376
458
  if(res && res.site_entry_settings && res.site_entry_settings.length > 0) {
377
459
  temp.site_entry_settings = res.site_entry_settings.filter(item=>{
378
460
  item['image_url'] = getServiceUrl(item['image_url'], 'size2')
@@ -383,6 +465,27 @@ export default {
383
465
  this.headerBg = this.getCardThemes(res.card_type_name);
384
466
  this.showInfo = true;
385
467
  this.info = temp;
468
+ res['site_entry_settings'] = this.filterNotSupportEntry(res['site_entry_settings']);
469
+ // 对 site_entry_settings 进行去重处理,基于 business_code
470
+ const seen = new Map();
471
+ res['site_entry_settings'] = res['site_entry_settings'].filter(item => {
472
+ if (!seen.has(item.business_code)) {
473
+ seen.set(item.business_code, true);
474
+ return true;
475
+ }
476
+ return false;
477
+ });
478
+ this.showCardTypeChoose = res.multiple_info.is_support_multiple === 'Y';
479
+ this.cardTypeList = res.multiple_info.multiple_list.map(item => {
480
+ item.business_codes_name = '';
481
+ res.site_entry_settings.map(Sitem => {
482
+ if (item.business_codes.includes(Sitem.business_code)) {
483
+ item.business_codes_name += Sitem.entry_name + '、';
484
+ }
485
+ })
486
+ item.business_codes_name = item.business_codes_name.slice(0, -1);
487
+ return item;
488
+ })
386
489
  })
387
490
  .catch();
388
491
  }
@@ -420,12 +523,48 @@ export default {
420
523
  this.showInfo = true;
421
524
  this.showForm = false;
422
525
  this.info = temp;
526
+ res['site_entry_settings'] = this.filterNotSupportEntry(res['site_entry_settings']);
527
+ // 对 site_entry_settings 进行去重处理,基于 business_code
528
+ const seen = new Map();
529
+ res['site_entry_settings'] = res['site_entry_settings'].filter(item => {
530
+ if (!seen.has(item.business_code)) {
531
+ seen.set(item.business_code, true);
532
+ return true;
533
+ }
534
+ return false;
535
+ });
536
+ this.showCardTypeChoose = res.multiple_info.is_support_multiple === 'Y';
537
+ this.cardTypeList = res.multiple_info.multiple_list.map(item => {
538
+ item.business_codes_name = '';
539
+ res.site_entry_settings.map(Sitem => {
540
+ if (item.business_codes.includes(Sitem.business_code)) {
541
+ item.business_codes_name += Sitem.entry_name + '、';
542
+ }
543
+ })
544
+ item.business_codes_name = item.business_codes_name.slice(0, -1);
545
+ return item;
546
+ })
423
547
  })
424
548
  .catch();
425
549
  },
426
550
  isEmpty(str) {
427
551
  return str === null || str === "";
428
552
  },
553
+ handleConfirmBind(item) {
554
+ if (!item) {
555
+ this.$xdAlert({
556
+ content: "请先选择票券类型",
557
+ time: 1500,
558
+ isClose: false,
559
+ zIndex: 5000,
560
+ });
561
+ return;
562
+ }
563
+ // 处理确认绑定逻辑
564
+ this.multiple_id = item.multiple_id;
565
+ this.multiple_scene = item.multiple_scene;
566
+ this.handleToLink()
567
+ },
429
568
  handleGetInfo() {
430
569
  if (this.isEmpty(this.card_password)) {
431
570
  this.$xdAlert({
@@ -871,6 +1010,105 @@ export default {
871
1010
  font-size: unit(32, rpx);
872
1011
  }
873
1012
  }
1013
+ &-type-choose {
1014
+ background: #F8F8F8;
1015
+ display: flex;
1016
+ flex-direction: column;
1017
+ height: 100%;
1018
+
1019
+ &-header {
1020
+ padding: unit(20, rpx) unit(20, rpx) unit(24, rpx) unit(20, rpx);
1021
+ }
1022
+
1023
+ &-title {
1024
+ font-size: unit(28, rpx);
1025
+ color: #333;
1026
+ margin-bottom: unit(24, rpx);
1027
+ text-align: center;
1028
+ }
1029
+
1030
+ &-notice {
1031
+ font-size: unit(24, rpx);
1032
+ text-align: center;
1033
+ }
1034
+
1035
+ &-scroll {
1036
+ flex: 1;
1037
+ padding: 0 unit(20, rpx) 0 unit(20, rpx);
1038
+ overflow-y: auto;
1039
+ max-height: 800rpx;
1040
+ }
1041
+
1042
+ &-item {
1043
+ background: #fff;
1044
+ border-radius: unit(16, rpx);
1045
+ padding: unit(32, rpx);
1046
+ margin-bottom: unit(24, rpx);
1047
+ border: unit(2, rpx) solid #eee;
1048
+
1049
+ &-header {
1050
+ display: flex;
1051
+ align-items: center;
1052
+ justify-content: space-between;
1053
+ margin-bottom: unit(24, rpx);
1054
+ }
1055
+
1056
+ &-header-left {
1057
+ display: flex;
1058
+ align-items: center;
1059
+ flex: 1;
1060
+ }
1061
+
1062
+ &-icon {
1063
+ margin-right: unit(16, rpx);
1064
+ }
1065
+
1066
+ &-title {
1067
+ font-size: unit(28, rpx);
1068
+ color: #333;
1069
+ flex: 1;
1070
+ }
1071
+
1072
+ &-validity {
1073
+ font-size: unit(24, rpx);
1074
+ color: #999;
1075
+ }
1076
+
1077
+ &-content {
1078
+ margin-bottom: unit(24, rpx);
1079
+ }
1080
+
1081
+ &-field {
1082
+ font-size: unit(24, rpx);
1083
+ color: #333;
1084
+
1085
+ &:first-child {
1086
+ margin-bottom: unit(24, rpx);
1087
+ }
1088
+ }
1089
+
1090
+ &-divider {
1091
+ height: unit(1, rpx);
1092
+ background: #F2F2F2;
1093
+ margin-bottom: unit(24, rpx);
1094
+ }
1095
+
1096
+ &-business {
1097
+ font-size: unit(24, rpx);
1098
+ color: #999;
1099
+ line-height: unit(36, rpx);
1100
+ }
1101
+
1102
+ &-btn-wrap {
1103
+ display: flex;
1104
+ margin-bottom: unit(24, rpx);
1105
+ }
1106
+
1107
+ &-btn-inner {
1108
+ margin-left: auto;
1109
+ }
1110
+ }
1111
+ }
874
1112
  }
875
1113
  }
876
1114
  </style>
@@ -57,6 +57,80 @@
57
57
  <xd-button type="primary" width="360rpx" @click="handleToLink">立即绑定</xd-button>
58
58
  </view>
59
59
  </view>
60
+ <xd-down-drawer
61
+ :show.sync="showCardTypeChoose"
62
+ :isBodyClose="false"
63
+ :isClose="false"
64
+ :z-index="3000"
65
+ >
66
+ <view class="jfb-base-card-sweep-info__body-type-choose">
67
+ <view class="jfb-base-card-sweep-info__body-type-choose-header">
68
+ <view class="jfb-base-card-sweep-info__body-type-choose-title">设置票券类型</view>
69
+ <view class="jfb-base-card-sweep-info__body-type-choose-notice" :style="{ color: mainColor }">
70
+ 注:票券类型一经确认,后续无法更改,请慎重选择
71
+ </view>
72
+ </view>
73
+
74
+ <!-- 可滚动的类型 item 列表 -->
75
+ <view class="jfb-base-card-sweep-info__body-type-choose-scroll">
76
+ <view
77
+ v-for="(item, index) in cardTypeList"
78
+ :key="index"
79
+ >
80
+ <view
81
+ class="jfb-base-card-sweep-info__body-type-choose-item"
82
+ >
83
+ <!-- 顶部区域 -->
84
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-header">
85
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-header-left">
86
+ <xd-font-icon
87
+ icon="iconkaquan"
88
+ color="#ffc65d"
89
+ size="32"
90
+ class="jfb-base-card-sweep-info__body-type-choose-item-icon"
91
+ ></xd-font-icon>
92
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-title">{{ item.card_type_name }}</view>
93
+ </view>
94
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-validity">有效期: {{ item.end_time }}</view>
95
+ </view>
96
+
97
+ <!-- 中间区域 -->
98
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-content">
99
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-field">票券号: {{ item.card_number }}</view>
100
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-field">
101
+ <text style="color: #999">点数: </text>
102
+ <text style="color: #333; font-weight: bold">{{ $xdUniHelper.divisionFloatNumber(item.card_point, 100) }} </text>
103
+ <text style="color: #999">点</text>
104
+ </view>
105
+ </view>
106
+
107
+ <!-- 分隔线 -->
108
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-divider"></view>
109
+
110
+ <!-- 底部业务线描述 -->
111
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-business">
112
+ 业务线: {{ item.business_codes_name}}
113
+ </view>
114
+ </view>
115
+
116
+ <!-- 确认按钮 -->
117
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-btn-wrap">
118
+ <view class="jfb-base-card-sweep-info__body-type-choose-item-btn-inner">
119
+ <xd-button
120
+ type="primary"
121
+ size="small"
122
+ radius="16"
123
+ width="240rpx"
124
+ @click="handleConfirmBind(item)"
125
+ >
126
+ 确认选择绑定
127
+ </xd-button>
128
+ </view>
129
+ </view>
130
+ </view>
131
+ </view>
132
+ </view>
133
+ </xd-down-drawer>
60
134
  </view>
61
135
  </view>
62
136
  </template>
@@ -71,6 +145,7 @@ import { getContainerPropsValue } from "@/utils/xd.base";
71
145
  import componentsMixins from "@/mixins/componentsMixins";
72
146
  import extsMixins from "@/mixins/extsMixins";
73
147
  import {mapState} from "vuex";
148
+ import XdDownDrawer from "@/components/XdDownDrawer/XdDownDrawer";
74
149
 
75
150
 
76
151
  export default {
@@ -79,6 +154,7 @@ export default {
79
154
  XdFontIcon,
80
155
  XdButton,
81
156
  XdUnit,
157
+ XdDownDrawer
82
158
  },
83
159
  mixins: [componentsMixins, extsMixins, JfbBaseCardSweepInfoMixin],
84
160
  data() {
@@ -111,6 +187,11 @@ export default {
111
187
  is_show_balance: "N", //是否显示余额
112
188
  hasCon: "", //是否有优惠券
113
189
  card_number: "", //票券号码
190
+ showCardTypeChoose: false,
191
+ cardTypeList: [
192
+ ], // 票券类型列表
193
+ multiple_id: '', // 多场景ID
194
+ multiple_scene: '', // 多场景场景
114
195
  };
115
196
  },
116
197
  watch: {
@@ -218,6 +299,7 @@ export default {
218
299
 
219
300
  },
220
301
  });
302
+ this.showCardTypeChoose = false;
221
303
  }
222
304
  })
223
305
  .catch();
@@ -227,6 +309,21 @@ export default {
227
309
  this.backUrl = getContainerPropsValue( this.container, "content.back_url", { value: "" }).value;
228
310
  this.back_detail_url = getContainerPropsValue( this.container, "content.back_detail_url", { value: "" }).value;
229
311
  this.is_show_balance = getContainerPropsValue(this.container, 'content.is_show_balance', "N");
312
+ },
313
+ handleConfirmBind(item) {
314
+ if (!item) {
315
+ this.$xdAlert({
316
+ content: "请先选择票券类型",
317
+ time: 1500,
318
+ isClose: false,
319
+ zIndex: 5000,
320
+ });
321
+ return;
322
+ }
323
+ // 处理确认绑定逻辑
324
+ this.multiple_id = item.multiple_id;
325
+ this.multiple_scene = item.multiple_scene;
326
+ this.handleToLink()
230
327
  },
231
328
  onJfbLoad(options) {
232
329
  this.pa = options.pa;
@@ -249,6 +346,7 @@ export default {
249
346
  vm: this,
250
347
  data: {
251
348
  card_qrcode: this.pa,
349
+ is_show_entry_settings:"Y"
252
350
  },
253
351
  })
254
352
  .then((res) => {
@@ -267,6 +365,27 @@ export default {
267
365
  }
268
366
  });
269
367
  this.info = temp;
368
+ res['site_entry_settings'] = this.filterNotSupportEntry(res['site_entry_settings']);
369
+ // 对 site_entry_settings 进行去重处理,基于 business_code
370
+ const seen = new Map();
371
+ res['site_entry_settings'] = res['site_entry_settings'].filter(item => {
372
+ if (!seen.has(item.business_code)) {
373
+ seen.set(item.business_code, true);
374
+ return true;
375
+ }
376
+ return false;
377
+ });
378
+ this.showCardTypeChoose = res.multiple_info.is_support_multiple === 'Y';
379
+ this.cardTypeList = res.multiple_info.multiple_list.map(item => {
380
+ item.business_codes_name = '';
381
+ res.site_entry_settings.map(Sitem => {
382
+ if (item.business_codes.includes(Sitem.business_code)) {
383
+ item.business_codes_name += Sitem.entry_name + '、';
384
+ }
385
+ })
386
+ item.business_codes_name = item.business_codes_name.slice(0, -1);
387
+ return item;
388
+ })
270
389
  })
271
390
  .catch(e=>{
272
391
  console.error(e);