jufubao-base 1.0.168 → 1.0.169-beta10

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 (41) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseLogin/Attr.js +1147 -510
  3. package/src/components/JfbBaseLogin/JfbBaseLogin.vue +364 -63
  4. package/src/components/JfbBaseMapSearch/MapSearchMp.vue +1 -1
  5. package/src/components/JfbBaseOrderDetail/Api.js +12 -7
  6. package/src/components/JfbBaseOrderDetail/Attr.js +28 -14
  7. package/src/components/JfbBaseOrderDetail/JfbBaseOrderDetail.vue +68 -18
  8. package/src/components/JfbBaseOrderDetail/Mock.js +3 -1
  9. package/src/components/JfbBaseTfkCardBind/Api.js +49 -30
  10. package/src/components/JfbBaseTfkCardBind/Attr.js +635 -38
  11. package/src/components/JfbBaseTfkCardBind/JfbBaseTfkCardBind.vue +617 -22
  12. package/src/components/JfbBaseTfkCardBind/Mock.js +19 -9
  13. package/src/components/JfbBaseTfkCardDetail/Api.js +19 -32
  14. package/src/components/JfbBaseTfkCardDetail/Attr.js +692 -33
  15. package/src/components/JfbBaseTfkCardDetail/JfbBaseTfkCardDetail.vue +630 -23
  16. package/src/components/JfbBaseTfkCardDetail/Mock.js +151 -11
  17. package/src/components/JfbBaseTfkCardLogin/Api.js +19 -34
  18. package/src/components/JfbBaseTfkCardLogin/Attr.js +898 -33
  19. package/src/components/JfbBaseTfkCardLogin/JfbBaseTfkCardLogin.vue +741 -17
  20. package/src/components/JfbBaseTfkCardLogin/Mock.js +677 -11
  21. package/src/components/JfbBaseTfkCardLogin/XdCouponItem.vue +271 -0
  22. package/src/components/JfbBaseTfkSearch/AllList.vue +232 -0
  23. package/src/components/JfbBaseTfkSearch/Api.js +11 -42
  24. package/src/components/JfbBaseTfkSearch/Attr.js +225 -33
  25. package/src/components/JfbBaseTfkSearch/ContentCinema.vue +157 -0
  26. package/src/components/JfbBaseTfkSearch/ContentFilm.vue +179 -0
  27. package/src/components/JfbBaseTfkSearch/ContentProduct.vue +308 -0
  28. package/src/components/JfbBaseTfkSearch/ContentShop.vue +184 -0
  29. package/src/components/JfbBaseTfkSearch/CusAttr.js +213 -0
  30. package/src/components/JfbBaseTfkSearch/CustomList.vue +402 -0
  31. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +230 -26
  32. package/src/components/JfbBaseTfkSearch/Mock.js +90 -11
  33. package/src/components/JfbBaseTfkSearch/SkeletonCinema.vue +45 -0
  34. package/src/components/JfbBaseTfkSearch/SkeletonFilm.vue +109 -0
  35. package/src/components/JfbBaseTfkSearch/SkeletonProduct.vue +246 -0
  36. package/src/components/JfbBaseTfkSearch/SkeletonShop.vue +81 -0
  37. package/src/components/JfbBaseTfkSearch/handleKeyword.js +24 -0
  38. package/src/components/JfbBaseTfkSearch/listMixins.js +153 -0
  39. package/src/components/JfbBaseTfkSearch/search.js +293 -0
  40. package/src/mixins/colorCardMixins.js +71 -9
  41. package/src/mixins/componentsMixins.js +346 -23
@@ -13,31 +13,451 @@
13
13
  <view class="jfb-base-tfk-card-login__edit-icon" @click="delEdit">删除</view>
14
14
  </view>
15
15
  <!-- #endif -->
16
- <view class="jfb-base-tfk-card-login__body">
17
- <view>测试插件( {{containerId}} )</view>
16
+ <view class="jfb-base-tfk-card-login__body" :style="{
17
+ '--card-list-margin': ($rpxNum * cardItemMargin) + 'px',
18
+ }">
19
+ <view class="menu_wrap" :style="menuBoxStyle">
20
+ <view class="menu_list">
21
+ <view class="menu_item"
22
+ :style="{
23
+ marginRight: menuItemMargin + 'px'
24
+ }"
25
+ @click="changeMenu('card')"
26
+ >
27
+ <view class="menu_item_inner"
28
+ :style="[menuType === 'card' ? menuItemActiveStyle : menuItemStyle, menuItemBoxStyle]">我的票券包</view>
29
+ </view>
30
+ <view class="menu_item" @click="changeMenu('coupon')">
31
+ <view class="menu_item_inner"
32
+ :style="[menuType === 'coupon' ? menuItemActiveStyle : menuItemStyle, menuItemBoxStyle]">我的优惠券</view>
33
+ </view>
34
+ </view>
35
+ <view class="bind_card" :style="bindCardBoxStyle" @click="toBindCard">
36
+ <xd-font-icon :icon="bindCardIcon.icon"
37
+ :color="bindCardIcon.color"
38
+ :size="bindCardIcon.size"
39
+ ></xd-font-icon>
40
+ <view v-if="bindCardText" :style="getBindCardTextStyle">{{ bindCardText }}</view>
41
+ </view>
42
+ </view>
43
+ <view class="JfbBaseNotice">
44
+ <!--notice-->
45
+ <view class="jfb-base-tfk-card-login__body-line" v-if="!notice"></view>
46
+ <view class="jfb-base-tfk-card-login__body-notice" :style="noticeWrapBoxStyle" v-if="notice">
47
+ <view
48
+ class="jfb-base-tfk-card-login__body-notice-in"
49
+ :style="noticeBoxStyle"
50
+ >
51
+ <xd-notice-bar
52
+ style="width: 100%"
53
+ :color="noticeFont.color"
54
+ :showIcon="true"
55
+ :scrollable="true"
56
+ :speed="20"
57
+ :fontSize="noticeFont.size"
58
+ :height="70"
59
+ :is-no-bgc="false"
60
+ >
61
+ <template>
62
+ <view v-html="notice"></view>
63
+ </template>
64
+ </xd-notice-bar>
65
+ </view>
66
+ </view>
67
+ <view class="jfb-base-tfk-card-login__body-notice" :style="noticeWrapBoxStyle" v-if="noticeStatus && isPreview && notice === ''">
68
+ <view
69
+ class="jfb-base-tfk-card-login__body-notice-in"
70
+ :style="[noticeBoxStyle, {
71
+ textAlign: 'center',
72
+ color: dangerColor,
73
+ fontSize: 26 + 'rpx',
74
+ }]">该组件未配置数据,因此改模块在正式环境将不显示</view>
75
+ </view>
76
+ <!--notice end-->
77
+ </view>
78
+ <view class="card_list_wrap" :style="listBoxStyle">
79
+
80
+ <!-- 我的票券包- 已绑票券 -->
81
+ <template v-if="menuType === 'card'">
82
+ <view v-if="loadingList">
83
+ <view class="bind_list skeleton-wrap">
84
+ <view class="bind_item" v-for="i in 5" :key="i" :style="cardItemBoxStyle">
85
+ <view>
86
+ <view class="bind_point"></view>
87
+ <view class="bind_deduct"></view>
88
+ </view>
89
+ <view>
90
+ <view class="bind_number"></view>
91
+ <view class="bind_time"></view>
92
+ </view>
93
+ <view class="bind_type"></view>
94
+ <view class="bind_btn"></view>
95
+ </view>
96
+ </view>
97
+ </view>
98
+ <view v-else>
99
+ <view v-if="cardList.length" class="bind_list">
100
+ <view class="bind_item" v-for="(item, i) in cardList" :key="i"
101
+ :style="cardItemBoxStyle" @click="toCardDetail(item)">
102
+ <view>
103
+ <view class="bind_point">
104
+ <xd-unit
105
+ :unitFontSize="24"
106
+ :fontSize="48"
107
+ :price="item.card_point"
108
+ :isOld="false"
109
+ :unit="item.unit || ''"
110
+ :colorNew="'#333333'"
111
+ ></xd-unit>
112
+ </view>
113
+ <view v-if="item.other_card_point && item.card_point_type !== 1" class="bind_deduct">
114
+ 兑换其他商品可抵:{{ item.other_card_point }}
115
+ </view>
116
+ </view>
117
+ <view>
118
+ <view class="bind_number">{{ item.card_number }}</view>
119
+ <view class="bind_time">{{ item.end_time }}到期</view>
120
+ </view>
121
+ <view class="bind_type" :style="{
122
+ top: cardPadding.top + 'rpx',
123
+ right: cardPadding.right + 'rpx',
124
+ }">
125
+ <view>{{ item.card_type_name }}</view>
126
+ <view v-if="item.is_exchange === 'Y'">(可转票券)</view>
127
+ </view>
128
+ <view class="bind_btn"
129
+ :style="[{
130
+ right: cardPadding.right + 'rpx',
131
+ bottom: cardPadding.bottom + 'rpx',
132
+ borderRadius: cardBtnRadius + 'rpx',
133
+ padding: bindCardBtnPadding,
134
+ minWidth: cardBtnMinWidth + 'rpx',
135
+ }, item.is_login === 'Y' ? bindCardActiveStyle : bindCardBtnStyle]"
136
+ @click.stop="doCardLogin(item)"
137
+ >{{ item.is_login === 'Y' ? '已登录' : '登录'}}</view>
138
+ </view>
139
+ <view v-if="!hasCardList" class="no_more_card" @click="toDisableUrl">没有更多券了,查看失效的票券 ></view>
140
+ </view>
141
+ <view v-else>
142
+ 暂无数据
143
+ </view>
144
+ </view>
145
+ </template>
146
+
147
+ <!-- 优惠券 -->
148
+ <template v-else >
149
+ <view v-if="couponList.length" class="coupon_list">
150
+ <xd-coupon-item v-for="(item, i) in couponList" :key="i"
151
+ :couponRadius="couponRadius"
152
+ :couponImageUrl="couponImageUrl"
153
+ :couponTitleBgColor="couponTitleBgColor"
154
+ :couponUseBtnPadding="couponUseBtnPadding"
155
+ :couponBtnRadius="couponBtnRadius"
156
+ :couponBtnTextStyle="couponBtnTextStyle"
157
+ :couponLeftBgColor="couponLeftBgColor"
158
+ :item="item"
159
+ @useCoupon="doCardLogin(item)"
160
+ ></xd-coupon-item>
161
+ <view v-if="!hasCouponList" class="no_more_card" @click="toDisableUrl">没有更多券了,查看失效的票券 ></view>
162
+ </view>
163
+ <view v-else>
164
+ 暂无数据
165
+ </view>
166
+
167
+ </template>
168
+ </view>
169
+
18
170
  </view>
19
171
  </view>
20
172
  </template>
21
173
 
22
174
  <script>
23
175
  import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
176
+ import XdUnit from "@/components/XdUnit/XdUnit";
24
177
  import { jfbRootExec } from "@/utils/xd.event";
25
178
  import JfbBaseTfkCardLoginMixin from "./JfbBaseTfkCardLoginMixin";
26
179
  import { getContainerPropsValue } from "@/utils/xd.base";
27
180
  import componentsMixins from "@/mixins/componentsMixins";
28
181
  import extsMixins from "@/mixins/extsMixins";
182
+ import getServiceUrl from '@/common/getServiceUrl'
183
+ import XdNoticeBar from "@/components/XdNoticeBar/XdNoticeBar";
184
+ import XdCouponItem from "./XdCouponItem";
185
+ import Color from "color"
186
+ import { mapState, mapActions } from "vuex";
29
187
  export default {
30
188
  name: "JfbBaseTfkCardLogin",
31
189
  components: {
32
- XdFontIcon
190
+ XdFontIcon,
191
+ XdNoticeBar,
192
+ XdCouponItem,
193
+ XdUnit
33
194
  },
34
195
  mixins: [
35
196
  componentsMixins, extsMixins, JfbBaseTfkCardLoginMixin
36
197
  ],
37
198
  data() {
38
199
  return {
200
+ menuType: "card", // card, coupon
201
+ loadingList: true,
202
+ cardList: [],
203
+ couponList: [],
204
+ hasCardList: false,
205
+ hasCouponList: false,
206
+
207
+ inCallbackUrlOrg:'',//是否带有回调地址
208
+ inCallback: null, //内部跳转地址
209
+ allEntryPath: "", //综合福利入口页
210
+ cardDetailPath: "", //我的票券包详情页
211
+ disabledPath: "", //禁用票券包详情页
212
+
213
+ options: {},
214
+ showDisabled: 'Y',
39
215
 
40
216
  //todo
217
+ previewCurrent: "",
218
+ isPreview: false,
219
+ notice: "",
220
+ noticeStatus: false,
221
+ noticeBackgroundColor: "",
222
+ cardBindPath: "",
223
+ menuPadding: {},
224
+ menuBtnPadding: {},
225
+ menuItemMargin: 40,
226
+ menuBorderWidth: 1,
227
+ menuTabColor: {},
228
+ bindCardIcon: {},
229
+ cardImageUrl: "",
230
+ couponImageUrl: "",
231
+ cardPadding: {},
232
+ cardRadius: 0,
233
+ couponRadius: 0,
234
+ cardListPadding: {},
235
+ cardItemMargin: 20,
236
+ couponTitleBgColor: "",
237
+ cardBtnTextStyle: {}, //我的票券包登录按钮文字背景色设置
238
+ cardBtnRadius: 16,
239
+ cardBtnPadding: {},
240
+ couponBtnTextStyle: {}, //优惠券包登录按钮文字背景色设置
241
+ couponUseBtnPadding: {},
242
+ couponBtnRadius: 16,
243
+ couponLeftBgColor: "",
244
+ noticeBgColor: "",
245
+ noticeMargin: {},
246
+ noticePadding: {},
247
+ noticeFont: {},
248
+ bindCardText: "",
249
+ bindCardTextStyle: {},
250
+ bindCardShowType: "",
251
+ bindCardBtnRadius: 16,
252
+ cardBorder: {},
253
+ cardShadow: {},
254
+ cardImageMode: "",
255
+ entryGroupId: "",
256
+ cardHeight: 270,
257
+ cardBtnMinWidth: 100,
258
+ }
259
+ },
260
+ computed: {
261
+ ...mapState({
262
+ jwxSDK: (state) => state.jwxSDK,
263
+ jfbAuthorize: (state) => state.jfbAuthorize,
264
+ }),
265
+ menuBoxStyle(){
266
+ let padding = `${this.checkValue(this.menuPadding.top, 20)}rpx`;
267
+ padding = `${padding} ${this.checkValue(this.menuPadding.right, 20)}rpx`;
268
+ padding = `${padding} ${this.checkValue(this.menuPadding.bottom, 20)}rpx`;
269
+ padding = `${padding} ${this.checkValue(this.menuPadding.left, 20)}rpx`;
270
+
271
+ return this.styleObjectToString({
272
+ // background: this.formBgColor,
273
+ padding: padding,
274
+ })
275
+ },
276
+ menuItemBoxStyle(){
277
+ let padding = `${this.checkValue(this.menuBtnPadding.top, 20)}rpx`;
278
+ padding = `${padding} ${this.checkValue(this.menuBtnPadding.right, 20)}rpx`;
279
+ padding = `${padding} ${this.checkValue(this.menuBtnPadding.bottom, 20)}rpx`;
280
+ padding = `${padding} ${this.checkValue(this.menuBtnPadding.left, 20)}rpx`;
281
+ return this.styleObjectToString({
282
+ padding
283
+ })
284
+ },
285
+ menuItemStyle(){
286
+ let styleObj = {
287
+ color: this.menuTabColor['color'] || '#333',
288
+ background: this.menuTabColor['bgColor'] || '#fff',
289
+ fontSize: this.menuTabColor['fontSize'] || '30rpx',
290
+ fontWeight: this.menuTabColor['fontWeight'] || 'normal',
291
+ borderWidth: this.menuBorderWidth + 'px',
292
+ }
293
+
294
+ return this.styleObjectToString(styleObj)
295
+ },
296
+ menuItemActiveStyle(){
297
+ let defaultTextColor = '#ff5a39';
298
+ let styleActiveObj = {
299
+ color: this.menuTabColor['actColor'] || defaultTextColor,
300
+ background: this.menuTabColor['actBgColor'] || '#fff',
301
+ fontSize: this.menuTabColor['actFontSize'] || '30rpx',
302
+ fontWeight: this.menuTabColor['actFontWeight'] || 'normal',
303
+ borderBottom: `${this.menuBorderWidth}px solid ${this.menuTabColor['actColor'] || defaultTextColor}`
304
+ }
305
+ return this.styleObjectToString(styleActiveObj)
306
+ },
307
+ bindCardBtnPadding(){
308
+ let padding = `${this.checkValue(this.cardBtnPadding.top, 20)}rpx`;
309
+ padding = `${padding} ${this.checkValue(this.cardBtnPadding.right, 20)}rpx`;
310
+ padding = `${padding} ${this.checkValue(this.cardBtnPadding.bottom, 20)}rpx`;
311
+ padding = `${padding} ${this.checkValue(this.cardBtnPadding.left, 20)}rpx`;
312
+ return padding;
313
+ },
314
+ bindCardBtnStyle(){
315
+ let styleObj = {
316
+ color: this.cardBtnTextStyle['color'] || '#333',
317
+ background: this.cardBtnTextStyle['bgColor'] || '#fff',
318
+ fontSize: this.cardBtnTextStyle['fontSize'] || '30rpx',
319
+ fontWeight: this.cardBtnTextStyle['fontWeight'] || 'normal',
320
+ }
321
+ return this.styleObjectToString(styleObj)
322
+ },
323
+ bindCardActiveStyle(){
324
+ let defaultTextColor = '#ff5a39';
325
+ let styleActiveObj = {
326
+ color: this.cardBtnTextStyle['actColor'] || defaultTextColor,
327
+ background: this.cardBtnTextStyle['actBgColor'] || '#fff',
328
+ fontSize: this.cardBtnTextStyle['actFontSize'] || '30rpx',
329
+ fontWeight: this.cardBtnTextStyle['actFontWeight'] || 'normal',
330
+ }
331
+ return this.styleObjectToString(styleActiveObj)
332
+ },
333
+ couponBtnPadding(){
334
+ let padding = `${this.checkValue(this.couponUseBtnPadding.top, 20)}rpx`;
335
+ padding = `${padding} ${this.checkValue(this.couponUseBtnPadding.right, 20)}rpx`;
336
+ padding = `${padding} ${this.checkValue(this.couponUseBtnPadding.bottom, 20)}rpx`;
337
+ padding = `${padding} ${this.checkValue(this.couponUseBtnPadding.left, 20)}rpx`;
338
+ return padding;
339
+ },
340
+ couponBtnStyle(){
341
+ let styleObj = {
342
+ color: this.couponBtnTextStyle['color'] || '#333',
343
+ background: this.couponBtnTextStyle['bgColor'] || '#fff',
344
+ fontSize: this.couponBtnTextStyle['fontSize'] || '30rpx',
345
+ fontWeight: this.couponBtnTextStyle['fontWeight'] || 'normal',
346
+ }
347
+ return this.styleObjectToString(styleObj)
348
+ },
349
+ bindCardBoxStyle(){
350
+ return this.styleObjectToString({
351
+ border: `1px solid ${this.bindCardShowType == 'button' ? this.bindCardTextStyle.color : 'transparent'}`,
352
+ borderRadius: this.bindCardBtnRadius + 'rpx',
353
+ })
354
+ },
355
+ getBindCardTextStyle(){
356
+ let styleObj = {
357
+ color: this.bindCardTextStyle['color'] || '#333',
358
+ fontSize: this.bindCardTextStyle['fontSize'] || '30rpx',
359
+ fontWeight: this.bindCardTextStyle['fontWeight'] || 'normal',
360
+ marginLeft: this.bindCardIcon.icon ? '10rpx' : 0,
361
+ }
362
+ return this.styleObjectToString(styleObj)
363
+ },
364
+ getCardBgImage(){
365
+ let bg = '';
366
+ if(this.$xdUniHelper.checkVarType(this.cardImageUrl) === 'object'
367
+ || this.$xdUniHelper.checkVarType(this.cardImageUrl) === 'array'
368
+ ) {
369
+ if(!this.$xdUniHelper.isEmpty(this.cardImageUrl)) {
370
+ return getServiceUrl(this.cardImageUrl.url)
371
+ }
372
+ }
373
+ return bg
374
+ },
375
+ cardItemBoxStyle(){
376
+ let image = {};
377
+ let border = "none";
378
+ let boxShadow = "none";
379
+ if(this.cardBorder && this.cardBorder.type === 'Y'){
380
+ let { width, color } = this.cardBorder.value;
381
+ border = `${width}rpx solid ${color}`;
382
+ }
383
+ if(this.cardShadow && this.cardShadow.type === 'Y'){
384
+ let { width, color } = this.cardShadow.value;
385
+ boxShadow = `0 0 ${width}rpx ${color}`;
386
+ }
387
+ if(this.cardImageUrl) image = {
388
+ backgroundImage: `url(${this.getCardBgImage})`,
389
+ backgroundSize: '100%',
390
+ backgroundRepeat: 'no-repeat',
391
+ }
392
+ if(this.cardImageMode) image['backgroundSize'] = this.cardImageMode;
393
+
394
+ let padding = `${this.checkValue(this.cardPadding.top, 20)}rpx`;
395
+ padding = `${padding} ${this.checkValue(this.cardPadding.right, 20)}rpx`;
396
+ padding = `${padding} ${this.checkValue(this.cardPadding.bottom, 20)}rpx`;
397
+ padding = `${padding} ${this.checkValue(this.cardPadding.left, 20)}rpx`;
398
+ return this.styleObjectToString({
399
+ ...image,
400
+ padding: padding,
401
+ borderRadius: this.cardRadius + 'rpx',
402
+ border: border,
403
+ boxShadow: boxShadow,
404
+ height: this.cardHeight + 'rpx',
405
+ })
406
+ },
407
+ listBoxStyle(){
408
+ let padding = `${this.checkValue(this.cardListPadding.top, 20)}rpx`;
409
+ padding = `${padding} ${this.checkValue(this.cardListPadding.right, 20)}rpx`;
410
+ padding = `${padding} ${this.checkValue(this.cardListPadding.bottom, 20)}rpx`;
411
+ padding = `${padding} ${this.checkValue(this.cardListPadding.left, 20)}rpx`;
412
+
413
+ return this.styleObjectToString({
414
+ padding: padding,
415
+ })
416
+ },
417
+ getCouponBgImage(){
418
+ let bg = '';
419
+ if(this.$xdUniHelper.checkVarType(this.couponImageUrl) === 'object'
420
+ || this.$xdUniHelper.checkVarType(this.couponImageUrl) === 'array'
421
+ ) {
422
+ if(!this.$xdUniHelper.isEmpty(this.couponImageUrl)) {
423
+ return getServiceUrl(this.couponImageUrl.url)
424
+ }
425
+ }
426
+ return bg
427
+ },
428
+ couponRightItemBoxStyle(){
429
+ let image = {};
430
+ if(this.cardImageUrl) image = {
431
+ backgroundImage: `url(${this.getCouponBgImage})`,
432
+ backgroundSize: '100%',
433
+ backgroundRepeat: 'no-repeat',
434
+ }
435
+ return this.styleObjectToString(image)
436
+ },
437
+ couponItemBoxStyle(){
438
+ return this.styleObjectToString({
439
+ borderRadius: this.couponRadius + 'rpx',
440
+ })
441
+ },
442
+ noticeWrapBoxStyle(){
443
+ let padding = `${this.checkValue(this.noticeMargin.top, 20)}rpx`;
444
+ padding = `${padding} ${this.checkValue(this.noticeMargin.right, 20)}rpx`;
445
+ padding = `${padding} ${this.checkValue(this.noticeMargin.bottom, 20)}rpx`;
446
+ padding = `${padding} ${this.checkValue(this.noticeMargin.left, 20)}rpx`;
447
+
448
+ return this.styleObjectToString({
449
+ padding: padding,
450
+ })
451
+ },
452
+ noticeBoxStyle(){
453
+ let padding = `${this.checkValue(this.noticePadding.top, 20)}rpx`;
454
+ padding = `${padding} ${this.checkValue(this.noticePadding.right, 20)}rpx`;
455
+ padding = `${padding} ${this.checkValue(this.noticePadding.bottom, 20)}rpx`;
456
+ padding = `${padding} ${this.checkValue(this.noticePadding.left, 20)}rpx`;
457
+ return this.styleObjectToString({
458
+ padding: padding,
459
+ background: this.noticeBgColor
460
+ })
41
461
  }
42
462
  },
43
463
  watch: {
@@ -48,34 +468,202 @@
48
468
  },
49
469
  created() {
50
470
  this.init(this.container);
51
-
471
+ this.isPreview = this.$configProject.isPreview;
472
+ this.noticeBackgroundColor = Color(this.warningColor).alpha(0.2).toString();
52
473
  //todo
53
474
  },
54
475
  methods: {
55
476
  onJfbLoad(options) {
477
+ this.options = options;
478
+ let { inCallback } = options;
479
+ if(!inCallback) this.$storage.remove("inCallback"); //作为入口
480
+ else {
481
+ this.$storage.set("inCallback", inCallback);
482
+ try{
483
+ inCallback = Base64.decode(inCallback);
484
+ this.inCallbackUrlOrg = options.inCallback;
485
+ }catch (e){
486
+ inCallback = null;
487
+ }
488
+ }
489
+ //登录成功调整地址优先级
490
+ this.inCallback = inCallback || this.allEntryPath || this.settings.index;
56
491
 
57
- // jfbRootExec('baiduUserLogin', {
58
-
59
- // vm: this,// data: {
60
-
61
- // account: 'gaoshiyong',// password: '123456789',// type: 3,// ...options
62
-
63
- // }
64
-
65
- // }).then().catch()
492
+ this.getCardList();
493
+ this.getContent();
66
494
  },
67
495
  /**
68
496
  * @description 监听事件变化
69
497
  * @param container {object} 业务组件对象自己
70
498
  */
71
- init(container) {
499
+ init(value) {
500
+ this.previewCurrent = getContainerPropsValue(value, "content.previewCurrent", 'card');
501
+ this.cardBindPath = getContainerPropsValue(value, "content.cardBindPath", {value: ""}).value;
502
+ this.menuPadding = getContainerPropsValue(value, "content.menuPadding", {top: 20, left: 20, right: 20, bottom: 20});
503
+ this.menuBtnPadding = getContainerPropsValue(value, "content.menuBtnPadding", {top: 20, left: 20, right: 20, bottom: 20});
504
+ this.menuItemMargin = getContainerPropsValue(value, "content.menuItemMargin", 40);
505
+ this.menuTabColor = getContainerPropsValue(value, "content.menuTabColor", {});
506
+ this.menuBorderWidth = getContainerPropsValue(value, "content.menuBorderWidth", 1);
507
+ this.bindCardIcon = getContainerPropsValue(value, "content.bindCardIcon", {});
508
+ this.cardImageUrl = getContainerPropsValue(value, "content.cardImageUrl", "");
509
+ this.couponImageUrl = getContainerPropsValue(value, "content.couponImageUrl", "");
510
+ this.cardPadding = getContainerPropsValue(value, "content.cardPadding", {top: 20, left: 20, right: 20, bottom: 20});
511
+ this.cardRadius = getContainerPropsValue(value, "content.cardRadius", 16);
512
+ this.couponRadius = getContainerPropsValue(value, "content.couponRadius", 16);
513
+ this.cardListPadding = getContainerPropsValue(value, "content.cardListPadding", {});
514
+ this.cardItemMargin = getContainerPropsValue(value, "content.cardItemMargin", 20);
515
+ this.couponTitleBgColor = getContainerPropsValue(value, "content.couponTitleBgColor", {});
516
+ this.cardBtnTextStyle = getContainerPropsValue(value, "content.cardBtnTextStyle", {});
517
+ this.cardBtnRadius = getContainerPropsValue(value, "content.cardBtnRadius", 16);
518
+ this.cardBtnPadding = getContainerPropsValue(value, "content.cardBtnPadding", {top: 20, left: 20, right: 20, bottom: 20});
519
+ this.couponBtnTextStyle = getContainerPropsValue(value, "content.couponBtnTextStyle", {});
520
+ this.couponUseBtnPadding = getContainerPropsValue(value, "content.couponUseBtnPadding", {top: 20, left: 20, right: 20, bottom: 20});
521
+ this.couponBtnRadius = getContainerPropsValue(value, "content.couponBtnRadius", 16);
522
+ this.couponLeftBgColor = getContainerPropsValue(value, "content.couponLeftBgColor", "");
523
+ this.noticeBgColor = getContainerPropsValue(value, "content.noticeBgColor", "");
524
+ this.noticeMargin = getContainerPropsValue(value, "content.noticeMargin", {top: 20, left: 20, right: 20, bottom: 20});
525
+ this.noticePadding = getContainerPropsValue(value, "content.noticePadding", {top: 20, left: 20, right: 20, bottom: 20});
526
+ this.noticeFont = getContainerPropsValue(value, "content.noticeFont", {});
527
+ this.bindCardText = getContainerPropsValue(value, "content.bindCardText", "");
528
+ this.bindCardTextStyle = getContainerPropsValue(value, "content.bindCardTextStyle", {});
529
+ this.bindCardShowType = getContainerPropsValue(value, "content.bindCardShowType", 'text');
530
+ this.bindCardBtnRadius = getContainerPropsValue(value, "content.bindCardBtnRadius", 16);
531
+ this.cardBorder = getContainerPropsValue(value, "content.cardBorder", {});
532
+ this.cardShadow = getContainerPropsValue(value, "content.cardShadow", {});
533
+ this.cardImageMode = getContainerPropsValue(value, "content.cardImageMode", '');
534
+ this.allEntryPath = getContainerPropsValue(value, "content.allEntryPath", {value: ""}).value;
535
+ this.cardDetailPath = getContainerPropsValue(value, "content.cardDetailPath", {value: ""}).value;
536
+ // this.entryGroupId = getContainerPropsValue(value,"content.entryGroupId","default");
537
+ this.cardHeight = getContainerPropsValue(value, "content.cardHeight", 270);
538
+ this.cardBtnMinWidth = getContainerPropsValue(value, "content.cardBtnMinWidth", 100);
539
+ this.disabledPath = getContainerPropsValue(value, "content.disabledPath", {value: ""}).value;
72
540
 
73
- //this.bgcolor = getContainerPropsValue(container, 'content.bgcolor', '#fff');
541
+ console.log(this.cardShadow, 'cardShadow')
542
+ if(this.bindCardTextStyle && !this.bindCardTextStyle.color){
543
+ this.bindCardTextStyle.color = this.mainColor;
544
+ }
545
+ if(this.bindCardIcon && !this.bindCardIcon.color){
546
+ this.bindCardIcon.color = this.mainColor;
547
+ }
548
+ if(this.menuTabColor && !this.menuTabColor.actColor){
549
+ this.menuTabColor.actColor = this.mainColor;
550
+ }
551
+ if(this.cardBtnTextStyle){
552
+ if(!this.cardBtnTextStyle.actBgColor){
553
+ this.cardBtnTextStyle.actBgColor = this.mainColor;
554
+ }
555
+ if(!this.cardBtnTextStyle.bgColor){
556
+ this.cardBtnTextStyle.bgColor = this.mainColor;
557
+ }
558
+ }
74
559
 
75
- //this.height = getContainerPropsValue(container, 'content.height', 10);
560
+ if(this.$configProject.isPreview){
561
+ this.menuType = this.previewCurrent;
562
+ this.getCardList();
563
+ }
564
+ },
565
+ toCardDetail(item){
566
+ this.$xdUniHelper.navigateTo({
567
+ url: this.cardDetailPath + `?card_number=${item["card_number"]}`
568
+ },false)
569
+ },
570
+ doCardLogin(item){
571
+ this.$xdShowLoading({});
572
+ jfbRootExec("loginTfkCardBind", {
573
+ vm: this,
574
+ data: {
575
+ card_number: item["card_number"]
576
+ }
577
+ }).then(res => {
578
+ this.$xdHideLoading();
579
+ //#ifdef MP-WEIXIN
580
+ if (this.jfbAuthorize !== null) {
581
+ this.jfbAuthorize.setCardToken(res);
582
+ }
583
+ //#endif
584
+
585
+ if (this.$configProject.isPreview) {
586
+ console.log("handleBindLogin", "预览模式不跳转", this.inCallback);
587
+ } else {
588
+ this.$xdUniHelper.redirectTo({
589
+ url: this.inCallback,
590
+ });
591
+ }
592
+ }).catch((res) => {
593
+ this.$xdHideLoading();
594
+ });
595
+ },
596
+ changeMenu(menu){
597
+ this.menuType = menu;
598
+ this.getCardList();
599
+ },
600
+ getCardList(){
601
+ let show_type = this.menuType === 'coupon' ? 'coupon' : 'normal';
602
+ let params = {show_type};
603
+
604
+ // let params = {is_all: 'Y', is_show_entry_settings: 'Y'};
605
+ // if(options['jfb_business_code']) {
606
+ // params['card_business_code'] = options['jfb_business_code'];
607
+ // }
608
+ // if(this.entryGroupId) params['group_id'] = this.entryGroupId;
609
+ this.$xdShowLoading({});
610
+ jfbRootExec("getTfkListCardBind", {
611
+ vm: this,
612
+ data: params,
613
+ }).then(res => {
614
+ this.loadingList = false;
615
+ this.$xdHideLoading();
616
+ this.showDisabled = res.is_show_invalid_card_entrance;
617
+
618
+ let list = res.list.map(item => {
619
+ item.other_card_point = item.other_card_point ? this.$xdUniHelper.divisionFloatNumber(item.other_card_point, 100) : 0
620
+ return item;
621
+ })
622
+ if(show_type === 'coupon'){
623
+ if(this.$configProject.isPreview){
624
+ list = list.filter(item => item.consume_type == 2)
625
+ }
626
+ this.couponList = list;
627
+ }
628
+ if(show_type === 'normal'){
629
+ this.cardList = list;
630
+ }
631
+ })
632
+ .catch(() => this.$xdHideLoading());
633
+ },
634
+ toBindCard(){
635
+ this.$xdUniHelper.navigateTo({
636
+ url: this.cardBindPath
637
+ })
638
+ },
639
+ getContent() {
640
+ jfbRootExec("getListBaseNewsContent", {
641
+ vm: this,
642
+ data: {
643
+ page_id: this.pageAttr["page_id"], //页面ID
644
+ container_id: this.containerId, //组件ID
645
+ limit: 1,
646
+ },
647
+ })
648
+ .then((res) => {
649
+ if (res.list.length > 0) {
650
+ if(res.list && res.list.length > 0) {
651
+ this.notice = this.$xdUniHelper.filterHtml(res.list[0].content);
652
+ }
653
+ this.noticeStatus = true;
654
+ }
655
+ })
656
+ .catch((error) => {
657
+ console.error(error);
658
+ });
659
+ },
660
+ toDisableUrl(){
661
+ this.$xdUniHelper.navigateTo({
662
+ url: this.disabledPath
663
+ })
76
664
  },
77
665
  onJfbScroll(options) {
78
- console.log('event.onJfbScroll', options)
666
+ // console.log('event.onJfbScroll', options)
79
667
  },
80
668
  onJfbReachBottom(options) {
81
669
  console.log('event.onJfbReachBottom', options)
@@ -105,7 +693,143 @@
105
693
 
106
694
  .jfb-base-tfk-card-login {
107
695
  &__body{
696
+ .menu_wrap{
697
+ display: flex;
698
+ justify-content: space-between;
699
+ align-items: center;
700
+ background-color: #FFFFFF;
701
+ .menu_list{
702
+ display: flex;
703
+ align-items: center;
704
+ .menu_item_inner{
705
+ border-bottom: 1px solid transparent;
706
+ }
707
+ }
708
+ .bind_card{
709
+ display: flex;
710
+ align-items: center;
711
+ padding: 8rpx 20rpx;
712
+ border-radius: 16rpx;
713
+ }
714
+ }
715
+ &-notice {
716
+ width: 100%;
717
+ box-sizing: border-box;
718
+ &-in {
719
+ display: flex;
720
+ overflow: hidden;
721
+ align-items: center;
722
+ box-sizing: border-box;
723
+ }
108
724
 
725
+ }
726
+ .card_list_wrap{
727
+ padding: 0 20rpx;
728
+ .bind_list{
729
+ &.skeleton-wrap{
730
+ .bind_item{
731
+ .bind_point{
732
+ .skeleton-item(120rpx, 40rpx);
733
+ }
734
+ .bind_deduct{
735
+ .skeleton-item(350rpx, 48rpx);
736
+ padding: 0;
737
+ }
738
+ .bind_number{
739
+ .skeleton-item(250rpx, 28rpx);
740
+ }
741
+ .bind_time{
742
+ .skeleton-item(180rpx, 24rpx);
743
+ }
744
+ .bind_type{
745
+ .skeleton-item(150rpx, 66rpx);
746
+ }
747
+ .bind_btn{
748
+ .skeleton-item(180rpx, 64rpx);
749
+ padding: 0;
750
+ }
751
+ }
752
+ }
753
+ .bind_item{
754
+ padding: 32rpx;
755
+ background: #fff;
756
+ border-radius: 16rpx;
757
+ box-sizing: border-box;
758
+ margin: var(--card-list-margin) 0;
759
+ position: relative;
760
+ display: flex;
761
+ flex-direction: column;
762
+ justify-content: space-between;
763
+ .bind_point{
764
+ color: #333333;
765
+ font-size: 48rpx;
766
+ ::v-deep .xd-unit{
767
+ height: auto !important;
768
+ font-weight: bold;
769
+ align-items: flex-end;
770
+ .xd-unit__unit{
771
+ line-height: 1.7 !important;
772
+ }
773
+ }
774
+ }
775
+ .bind_deduct{
776
+ font-size: 28rpx;
777
+ color: #999;
778
+ background: rgba(51, 51, 51, 0.05);
779
+ display: inline-block;
780
+ padding: 4rpx 20rpx;
781
+ margin-top: 12rpx;
782
+ }
783
+ .bind_number{
784
+ font-size: 28rpx;
785
+ color: #999;
786
+ margin-top: 20rpx;
787
+ font-weight: 500;
788
+ }
789
+ .bind_time{
790
+ font-size: 24rpx;
791
+ color: #999;
792
+ margin-top: 16rpx;
793
+ font-weight: 500;
794
+ line-height: 1;
795
+ }
796
+ .bind_type{
797
+ font-size: 28rpx;
798
+ color: #333333;
799
+ position: absolute;
800
+ top: 32rpx;
801
+ right: 32rpx;
802
+ text-align: center;
803
+ font-size: 24rpx;
804
+ font-weight: 400;
805
+ }
806
+ .bind_btn{
807
+ font-size: 28rpx;
808
+ color: #999;
809
+ position: absolute;
810
+ bottom: 32rpx;
811
+ right: 32rpx;
812
+ background: #ddd;
813
+ padding: 16rpx 60rpx;
814
+ border-radius: 12rpx;
815
+ display: flex;
816
+ align-items: center;
817
+ justify-content: center;
818
+ }
819
+ }
820
+ }
821
+ .coupon_list{
822
+ ::v-deep .xd-coupon_item{
823
+ margin: var(--card-list-margin) 0;
824
+ }
825
+ }
826
+ .no_more_card{
827
+ text-align: center;
828
+ padding: 20rpx 0;
829
+ color: #CCCCCC;
830
+ font-size: 28rpx;
831
+ }
832
+ }
109
833
  }
110
834
  }
111
835
  </style>