jufubao-base 1.0.118 → 1.0.119-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.
Files changed (75) hide show
  1. package/package.json +4 -3
  2. package/src/components/JfbBaseCard/Attr.js +380 -287
  3. package/src/components/JfbBaseCard/JfbBaseCard.vue +51 -2
  4. package/src/components/JfbBaseCardDetailEntry/JfbBaseCardDetailEntry.vue +0 -4
  5. package/src/components/JfbBaseConDialog/JfbBaseConDialog.vue +6 -1
  6. package/src/components/JfbBaseConFlashHome/Api.js +60 -0
  7. package/src/components/JfbBaseConFlashHome/Attr.js +129 -0
  8. package/src/components/JfbBaseConFlashHome/JfbBaseConFlashHome.vue +388 -0
  9. package/src/components/JfbBaseConFlashHome/JfbBaseConFlashHomeLess.less +80 -0
  10. package/src/components/JfbBaseConFlashHome/JfbBaseConFlashHomeMixin.js +30 -0
  11. package/src/components/JfbBaseConFlashHome/Mock.js +5 -0
  12. package/src/components/JfbBaseConFlashList/Api.js +60 -0
  13. package/src/components/JfbBaseConFlashList/Attr.js +117 -0
  14. package/src/components/JfbBaseConFlashList/JfbBaseConFlashList.vue +656 -0
  15. package/src/components/JfbBaseConFlashList/JfbBaseConFlashListLess.less +80 -0
  16. package/src/components/JfbBaseConFlashList/JfbBaseConFlashListMixin.js +30 -0
  17. package/src/components/JfbBaseConFlashList/Mock.js +5 -0
  18. package/src/components/JfbBaseConList/JfbBaseConList.vue +4 -2
  19. package/src/components/JfbBaseConPhone/Api.js +70 -0
  20. package/src/components/JfbBaseConPhone/Attr.js +10 -0
  21. package/src/components/JfbBaseConPhone/JfbBaseConPhone.vue +486 -0
  22. package/src/components/JfbBaseConPhone/JfbBaseConPhoneLess.less +80 -0
  23. package/src/components/JfbBaseConPhone/JfbBaseConPhoneMixin.js +30 -0
  24. package/src/components/JfbBaseConPhone/Mock.js +26 -0
  25. package/src/components/JfbBaseMySetting/JfbBaseMySetting.vue +2 -2
  26. package/src/components/JfbBasePhoneCollect/JfbBasePhoneCollect.vue +1 -1
  27. package/src/components/JfbBaseSaasBlessDetail/Api.js +59 -0
  28. package/src/components/JfbBaseSaasBlessDetail/Attr.js +24 -0
  29. package/src/components/JfbBaseSaasBlessDetail/JfbBaseSaasBlessDetail.vue +341 -0
  30. package/src/components/JfbBaseSaasBlessDetail/JfbBaseSaasBlessDetailLess.less +80 -0
  31. package/src/components/JfbBaseSaasBlessDetail/JfbBaseSaasBlessDetailMixin.js +30 -0
  32. package/src/components/JfbBaseSaasBlessDetail/Mock.js +5 -0
  33. package/src/components/JfbBaseSaasBlessDialog/Api.js +25 -0
  34. package/src/components/JfbBaseSaasBlessDialog/Attr.js +50 -0
  35. package/src/components/JfbBaseSaasBlessDialog/JfbBaseSaasBlessDialog.vue +309 -0
  36. package/src/components/JfbBaseSaasBlessDialog/JfbBaseSaasBlessDialogLess.less +80 -0
  37. package/src/components/JfbBaseSaasBlessDialog/JfbBaseSaasBlessDialogMixin.js +30 -0
  38. package/src/components/JfbBaseSaasBlessDialog/Mock.js +5 -0
  39. package/src/components/JfbBaseSaasBlessReceive/Api.js +25 -0
  40. package/src/components/JfbBaseSaasBlessReceive/Attr.js +24 -0
  41. package/src/components/JfbBaseSaasBlessReceive/JfbBaseSaasBlessReceive.vue +201 -0
  42. package/src/components/JfbBaseSaasBlessReceive/JfbBaseSaasBlessReceiveLess.less +80 -0
  43. package/src/components/JfbBaseSaasBlessReceive/JfbBaseSaasBlessReceiveMixin.js +30 -0
  44. package/src/components/JfbBaseSaasBlessReceive/Mock.js +5 -0
  45. package/src/components/JfbBaseSaasHome/Api.js +48 -0
  46. package/src/components/JfbBaseSaasHome/Attr.js +35 -0
  47. package/src/components/JfbBaseSaasHome/JfbBaseSaasHome.vue +402 -0
  48. package/src/components/JfbBaseSaasHome/JfbBaseSaasHomeLess.less +80 -0
  49. package/src/components/JfbBaseSaasHome/JfbBaseSaasHomeMixin.js +30 -0
  50. package/src/components/JfbBaseSaasHome/Mock.js +5 -0
  51. package/src/components/JfbBaseSaasLogin/Api.js +98 -0
  52. package/src/components/JfbBaseSaasLogin/Attr.js +59 -0
  53. package/src/components/JfbBaseSaasLogin/JfbBaseSaasLogin.vue +700 -0
  54. package/src/components/JfbBaseSaasLogin/JfbBaseSaasLoginLess.less +80 -0
  55. package/src/components/JfbBaseSaasLogin/JfbBaseSaasLoginMixin.js +30 -0
  56. package/src/components/JfbBaseSaasLogin/Mock.js +5 -0
  57. package/src/components/JfbBaseSaasLogin/saaslogin_copy.vue +410 -0
  58. package/src/components/JfbBaseSaasNewsDetail/Api.js +27 -0
  59. package/src/components/JfbBaseSaasNewsDetail/Attr.js +14 -0
  60. package/src/components/JfbBaseSaasNewsDetail/JfbBaseSaasNewsDetail.vue +144 -0
  61. package/src/components/JfbBaseSaasNewsDetail/JfbBaseSaasNewsDetailLess.less +80 -0
  62. package/src/components/JfbBaseSaasNewsDetail/JfbBaseSaasNewsDetailMixin.js +30 -0
  63. package/src/components/JfbBaseSaasNewsDetail/Mock.js +5 -0
  64. package/src/components/JfbBaseSaasNewsList/Api.js +26 -0
  65. package/src/components/JfbBaseSaasNewsList/Attr.js +24 -0
  66. package/src/components/JfbBaseSaasNewsList/JfbBaseSaasNewsList.vue +182 -0
  67. package/src/components/JfbBaseSaasNewsList/JfbBaseSaasNewsListLess.less +80 -0
  68. package/src/components/JfbBaseSaasNewsList/JfbBaseSaasNewsListMixin.js +30 -0
  69. package/src/components/JfbBaseSaasNewsList/Mock.js +5 -0
  70. package/src/components/JfbBaseSassPhoneCollect/Api.js +51 -0
  71. package/src/components/JfbBaseSassPhoneCollect/Attr.js +438 -0
  72. package/src/components/JfbBaseSassPhoneCollect/JfbBaseSassPhoneCollect.vue +266 -0
  73. package/src/components/JfbBaseSassPhoneCollect/JfbBaseSassPhoneCollectLess.less +80 -0
  74. package/src/components/JfbBaseSassPhoneCollect/JfbBaseSassPhoneCollectMixin.js +30 -0
  75. package/src/components/JfbBaseSassPhoneCollect/Mock.js +5 -0
@@ -0,0 +1,656 @@
1
+ <template>
2
+ <view
3
+ class="jfb-base-con-flash-list"
4
+ @click="handleEditxSelect"
5
+ :class="{ editx: isEditx && active }"
6
+ >
7
+ <!--#ifdef H5-->
8
+ <view
9
+ class="jfb-base-con-flash-list__edit"
10
+ :class="{ editx: isEditx && active }"
11
+ v-if="isEditx && active"
12
+ >
13
+ <view class="jfb-base-con-flash-list__edit-icon" @click="delEdit"
14
+ >删除</view
15
+ >
16
+ </view>
17
+ <!-- #endif -->
18
+ <view class="jfb-base-con-flash-list__body">
19
+ <image
20
+ :style="{
21
+ backgroundImage: `url(${background})`,
22
+ backgroundSize: '100% 100%',
23
+ display: 'block',
24
+ }"
25
+ class="jfb-base-con-flash-list__body-banner"
26
+ ></image>
27
+ <!-- 多场次tab start -->
28
+ <scroll-view
29
+ v-if="sessionList.length > 1"
30
+ :style="{
31
+ backgroundImage: `url(${sessionBackground})`,
32
+ backgroundSize: '100% 100%',
33
+ position: positionType,
34
+ top: top,
35
+ zIndex: 2000,
36
+ }"
37
+ scroll-x="true"
38
+ >
39
+ <!-- 这里放置你需要横向滑动的内容 -->
40
+ <view class="jfb-base-con-flash-list__body-scroll">
41
+ <view
42
+ :style="{
43
+ backgroundImage:
44
+ activeIndex === index && index === 0
45
+ ? `url(${firstBackground})`
46
+ : activeIndex === index && index === sessionList.length - 1
47
+ ? `url(${finalBackground})`
48
+ : activeIndex === index
49
+ ? `url(${middleBackground})`
50
+ : 'none',
51
+ backgroundSize: '100% 100%',
52
+ width: index === 0 ? '28%' : '25%',
53
+ textAlign: index === 0 ? 'left' : 'center',
54
+ }"
55
+ class="jfb-base-con-flash-list__body-scroll-item"
56
+ v-for="(item, index) in sessionList"
57
+ :key="index"
58
+ @click="handleSelectSession(index, item)"
59
+ >
60
+ <view
61
+ class="jfb-base-con-flash-list__body-scroll-item-ready"
62
+ v-if="!item.isStart"
63
+ >
64
+ <view
65
+ :style="{ color: activeIndex === index ? '#333' : '#fff' }"
66
+ >{{ item.start_name }}</view
67
+ >
68
+ <view
69
+ :style="{
70
+ color: activeIndex === index ? mainColor : '#fff',
71
+ fontWeight: activeIndex === index ? 700 : 400,
72
+ }"
73
+ >即将开抢</view
74
+ >
75
+ </view>
76
+ <view
77
+ class="jfb-base-con-flash-list__body-scroll-item-ready"
78
+ v-else
79
+ >
80
+ <view style="text-align: left; padding-left: 10rpx">
81
+ <text
82
+ :style="{
83
+ background: activeIndex === index ? '#1a1a1a' : '#fff',
84
+ color: activeIndex === index ? '#fff' : mainColor,
85
+ }"
86
+ >{{ hours }}</text
87
+ ><text
88
+ :style="{
89
+ color: activeIndex === index ? '#1a1a1a' : '#fff',
90
+ }"
91
+ >:</text
92
+ >
93
+ <text
94
+ :style="{
95
+ background: activeIndex === index ? '#1a1a1a' : '#fff',
96
+ color: activeIndex === index ? '#fff' : mainColor,
97
+ }"
98
+ >{{ minutes }}</text
99
+ >
100
+ <text
101
+ :style="{
102
+ color: activeIndex === index ? '#1a1a1a' : '#fff',
103
+ }"
104
+ >:</text
105
+ >
106
+ <text
107
+ :style="{
108
+ background: activeIndex === index ? '#1a1a1a' : '#fff',
109
+ color: activeIndex === index ? '#fff' : mainColor,
110
+ }"
111
+ >{{ seconds }}</text
112
+ >
113
+ </view>
114
+ <view
115
+ :style="{
116
+ color: activeIndex === index ? mainColor : '#fff',
117
+ fontWeight: activeIndex === index ? 700 : 400,
118
+ textAlign: 'left',
119
+ paddingLeft: '10rpx',
120
+ }"
121
+ >{{ item.start_name }}点场</view
122
+ >
123
+ </view>
124
+ </view>
125
+ </view>
126
+ </scroll-view>
127
+ <!-- 多场次tab end -->
128
+ <!-- 单场次 start -->
129
+ <view
130
+ class="jfb-base-con-flash-list__body-single"
131
+ :style="{
132
+ backgroundImage: `url(${singleBackground})`,
133
+ backgroundSize: '100% 100%',
134
+ position: positionType,
135
+ top: top,
136
+ zIndex: 2000,
137
+ }"
138
+ v-else
139
+ >
140
+ <view
141
+ v-if="!sessionList[0].isStart"
142
+ class="jfb-base-con-flash-list__body-single-date"
143
+ >
144
+ <view> 3月8日 14:00 </view>
145
+ <view> 即将开抢 </view>
146
+ </view>
147
+ <view class="jfb-base-con-flash-list__body-single-date" v-else>
148
+ <view> 00:00:00 </view>
149
+ <view> 疯抢中... </view>
150
+ </view>
151
+ <view class="jfb-base-con-flash-list__body-single-cutdown">
152
+ 距结束
153
+ <text :style="{ color: mainColor }">3</text>天
154
+ <text :style="{ color: mainColor }">12</text>:
155
+ <text :style="{ color: mainColor }">48</text>:
156
+ <text :style="{ color: mainColor }">56</text>
157
+ </view>
158
+ </view>
159
+ <!-- 单场次 end -->
160
+
161
+ <view
162
+ :style="{ height: fixedHeightTop }"
163
+ v-if="positionType === 'fixed'"
164
+ ></view>
165
+ <view class="jfb-base-con-flash-list__body-product">
166
+ <view
167
+ v-for="(item, index) in productList"
168
+ :key="index"
169
+ class="jfb-base-con-flash-list__body-product-item"
170
+ >
171
+ <view
172
+ v-if="!item.num"
173
+ class="jfb-base-con-flash-list__body-product-item-mask"
174
+ ></view>
175
+ <image :src="item.img"></image>
176
+ <view class="jfb-base-con-flash-list__body-product-item-info">
177
+ <view class="jfb-base-con-flash-list__body-product-item-info-name">
178
+ {{ item.name }}
179
+ </view>
180
+ <view class="prod_price">
181
+ <xd-unit
182
+ :price="item.sale_price"
183
+ :isOld="false"
184
+ color="#000000"
185
+ :iconSize="0.28"
186
+ :fontSize="48"
187
+ />
188
+ <!-- todo -->
189
+ <view
190
+ v-if="isShowDiscount === 'Y' && checkDiscountPrice(item)"
191
+ class="prod_oldPrice"
192
+ >原价:{{ dividePrice(item.market_price) }}</view
193
+ >
194
+ </view>
195
+ <view class="jfb-base-con-flash-list__body-product-item-info-tag">
196
+ <view :style="{ background: mainColor }">限时秒杀</view>
197
+ <XdFontIcon
198
+ v-if="showFlash"
199
+ :color="mainColor"
200
+ icon="icontop"
201
+ size="50"
202
+ ></XdFontIcon>
203
+ </view>
204
+ </view>
205
+ </view>
206
+ </view>
207
+ </view>
208
+ </view>
209
+ </template>
210
+
211
+ <script>
212
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
213
+ import { jfbRootExec } from "@/utils/xd.event";
214
+ import JfbBaseConFlashListMixin from "./JfbBaseConFlashListMixin";
215
+ import { getContainerPropsValue } from "@/utils/xd.base";
216
+ import componentsMixins from "@/mixins/componentsMixins";
217
+ import extsMixins from "@/mixins/extsMixins";
218
+ import getServiceUrl from "@/common/getServiceUrl";
219
+ import XdUnit from "@/components/XdUnit/XdUnit";
220
+
221
+ export default {
222
+ name: "JfbBaseConFlashList",
223
+ components: {
224
+ XdFontIcon,
225
+ XdUnit,
226
+ },
227
+ mixins: [componentsMixins, extsMixins, JfbBaseConFlashListMixin],
228
+ data() {
229
+ return {
230
+ background:
231
+ "https://img.js.design/assets/img/65eaab794acd2620e01cc8e8.png#24f148138043dd336055d304f1486411",
232
+ sessionBackground: "",
233
+ firstBackground: "",
234
+ middleBackground: "",
235
+ finalBackground: "",
236
+ singleBackground: "",
237
+ activeIndex: 0,
238
+ sessionList: [
239
+ {
240
+ start: 1710153161,
241
+ end: 1710160361,
242
+ isStart: true,
243
+ start_name: "12:00",
244
+ },
245
+ {
246
+ start: 1710153161,
247
+ end: 1710160361,
248
+ isStart: false,
249
+ start_name: "14:00",
250
+ },
251
+ {
252
+ start: 1710153161,
253
+ end: 1710160361,
254
+ isStart: false,
255
+ start_name: "16:00",
256
+ },
257
+ {
258
+ start: 1710153161,
259
+ end: 1710160361,
260
+ isStart: false,
261
+ start_name: "18:00",
262
+ },
263
+ {
264
+ start: 1710153161,
265
+ end: 1710160361,
266
+ isStart: false,
267
+ start_name: "18:00",
268
+ },
269
+ ],
270
+ days: "00",
271
+ hours: "00",
272
+ minutes: "00",
273
+ seconds: "00",
274
+ isShowDiscount: "",
275
+ differ: 1,
276
+ showFlash: true,
277
+ productList: [
278
+ {
279
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
280
+ name: "方家铺子中宁四星红枸杞250g烦都烦死大喊大叫开始",
281
+ market_price: 1200,
282
+ sale_price: 1000,
283
+ num: 1,
284
+ },
285
+ {
286
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
287
+ name: "方家铺子中宁四星红枸杞250g",
288
+ market_price: 1200,
289
+ sale_price: 1000,
290
+ num: 0,
291
+ },
292
+ {
293
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
294
+ name: "方家铺子中宁四星红枸杞250g",
295
+ market_price: 1200,
296
+ sale_price: 1000,
297
+ num: 1,
298
+ },
299
+ {
300
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
301
+ name: "方家铺子中宁四星红枸杞250g",
302
+ market_price: 1200,
303
+ sale_price: 1000,
304
+ num: 1,
305
+ },
306
+ {
307
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
308
+ name: "方家铺子中宁四星红枸杞250g",
309
+ market_price: 1200,
310
+ sale_price: 1000,
311
+ num: 1,
312
+ },
313
+ {
314
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
315
+ name: "方家铺子中宁四星红枸杞250g",
316
+ market_price: 1200,
317
+ sale_price: 1000,
318
+ num: 1,
319
+ },
320
+ {
321
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
322
+ name: "方家铺子中宁四星红枸杞250g",
323
+ market_price: 1200,
324
+ sale_price: 1000,
325
+ num: 1,
326
+ },
327
+ {
328
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
329
+ name: "方家铺子中宁四星红枸杞250g",
330
+ market_price: 1200,
331
+ sale_price: 1000,
332
+ },
333
+ {
334
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
335
+ name: "方家铺子中宁四星红枸杞250g",
336
+ market_price: 1200,
337
+ sale_price: 1000,
338
+ },
339
+ {
340
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
341
+ name: "方家铺子中宁四星红枸杞250g",
342
+ market_price: 1200,
343
+ sale_price: 1000,
344
+ num: 1,
345
+ },
346
+ {
347
+ img: "https://img.js.design/assets/img/6487c11d31971ab22c07c220.png#dfe2fe09e053ed42de4af607382569ac",
348
+ name: "方家铺子中宁四星红枸杞250g",
349
+ market_price: 1200,
350
+ sale_price: 1000,
351
+ num: 1,
352
+ },
353
+ ],
354
+ hasNext: true,
355
+ next_page_token: "",
356
+ page_size: 10,
357
+ page_token: 1,
358
+ positionType: "relative",
359
+ top: "-20rpx",
360
+ fixedHeightTop: "0rpx",
361
+ };
362
+ },
363
+ watch: {
364
+ container(value) {
365
+ this.init(value);
366
+ },
367
+ },
368
+ created() {
369
+ this.init(this.container);
370
+
371
+ //todo
372
+ },
373
+ destroyed() {
374
+ if (this.timeer) {
375
+ clearTimeout(this.timeer);
376
+ }
377
+ },
378
+ methods: {
379
+ onJfbLoad(options) {
380
+ this.fixedHeightTop = "100rpx";
381
+
382
+ this.sessionList.map((item) => {
383
+ if (item.isStart) {
384
+ this.cutTime(item.end);
385
+ this.timmer = setInterval(() => {
386
+ this.cutTime(item.end);
387
+ }, 1000);
388
+ }
389
+ });
390
+ },
391
+ /**
392
+ * @description 监听事件变化
393
+ * @param container {object} 业务组件对象自己
394
+ */
395
+ init(container) {
396
+ this.sessionBackground = getServiceUrl(
397
+ getContainerPropsValue(container, "content.sessionBackground", "none")
398
+ .url
399
+ );
400
+ this.firstBackground = getServiceUrl(
401
+ getContainerPropsValue(container, "content.firstBackground", "none").url
402
+ );
403
+ this.middleBackground = getServiceUrl(
404
+ getContainerPropsValue(container, "content.middleBackground", "none")
405
+ .url
406
+ );
407
+ this.finalBackground = getServiceUrl(
408
+ getContainerPropsValue(container, "content.finalBackground", "none").url
409
+ );
410
+ this.singleBackground = getServiceUrl(
411
+ getContainerPropsValue(container, "content.singleBackground", "none")
412
+ .url
413
+ );
414
+ this.differ = getContainerPropsValue(container, "content.differ", 1);
415
+ this.isShowDiscount = getContainerPropsValue(
416
+ container,
417
+ "content.isShowDiscount",
418
+ "Y"
419
+ );
420
+ },
421
+ checkDiscountPrice(item) {
422
+ if (this.isShowDiscount === "Y") {
423
+ let price = item.market_price - item.sale_price;
424
+ console.log(
425
+ item.market_price,
426
+ item.sale_price,
427
+ this.$xdUniHelper.divisionFloatNumber(price, 100),
428
+ this.differ,
429
+ this.$xdUniHelper.divisionFloatNumber(price, 100) > this.differ,
430
+ "hhhhhh"
431
+ );
432
+ return this.$xdUniHelper.divisionFloatNumber(price, 100) > this.differ;
433
+ }
434
+ },
435
+ dividePrice(num) {
436
+ return this.$xdUniHelper.divisionFloatNumber(num, 100);
437
+ },
438
+ handleSelectSession(index, item) {
439
+ this.showFlash = item.isStart;
440
+ this.activeIndex = index;
441
+ },
442
+ cutTime(end) {
443
+ const now = Math.floor(Date.now() / 1000); // 获取当前时间戳
444
+ const diff = end - now;
445
+
446
+ if (diff <= 0) {
447
+ //开启下一场
448
+ this.timer = null;
449
+ // this.onJfbLoad();
450
+ return;
451
+ }
452
+
453
+ const days = Math.floor(diff / (3600 * 24));
454
+ const remainingHours = diff % (3600 * 24);
455
+
456
+ this.hours = String(Math.floor(remainingHours / 3600)).padStart(2, "0");
457
+ this.minutes = String(Math.floor((remainingHours % 3600) / 60)).padStart(
458
+ 2,
459
+ "0"
460
+ );
461
+ this.seconds = String(Math.floor(remainingHours % 60)).padStart(2, "0");
462
+ this.days = String(days).padStart(2, "0");
463
+
464
+ console.log(this.days, this.hours, this.minutes, this.seconds, "倒计时");
465
+ },
466
+ getList() {
467
+ let list = [];
468
+ if (this.page_token === 1) {
469
+ this.productList = list;
470
+ } else {
471
+ this.productList = this.productList.concat(list);
472
+ }
473
+ this.hasNext = res.next_page_token !== "";
474
+ this.next_page_token = res.next_page_token;
475
+ },
476
+ onJfbScroll(options) {
477
+ //滑动展示背景
478
+ // console.log(this.isPreview, "this.isPreview");
479
+ // if (this.isPreview) return;
480
+ console.log(options.e.scrollTop, "options.e.scrollTop");
481
+ if (options.e.scrollTop >= "160") {
482
+ this.positionType = "fixed";
483
+ this.top = this.layoutInfo.top + "rpx";
484
+ return;
485
+ }
486
+
487
+ // if (options.e.scrollTop === 0) {
488
+ this.positionType = "relative";
489
+ this.top = "-20rpx";
490
+ // return;
491
+ // }
492
+ },
493
+ onJfbReachBottom(options) {
494
+ console.log("1111");
495
+ if (this.hasNext) {
496
+ this.page_token = this.next_page_token;
497
+ this.getList();
498
+ }
499
+ },
500
+ onJfbUnload() {
501
+ if (this.timeer) {
502
+ clearTimeout(this.timeer);
503
+ }
504
+ },
505
+ onJfbBack(options) {
506
+ if (this.timeer) {
507
+ clearTimeout(this.timeer);
508
+ }
509
+ if (this.$configProject.isPreview) return;
510
+ this.$xdUniHelper.navigateBack();
511
+ },
512
+ },
513
+ };
514
+ </script>
515
+
516
+ <style scoped lang="less">
517
+ @import "./JfbBaseConFlashListLess.less";
518
+
519
+ .jfb-base-con-flash-list {
520
+ &__body {
521
+ position: relative;
522
+ &-banner {
523
+ width: 100%;
524
+ height: 360rpx;
525
+ }
526
+ &-scroll {
527
+ white-space: nowrap;
528
+ width: 100%;
529
+ height: 100rpx;
530
+ &-item {
531
+ display: inline-block;
532
+ text-align: center;
533
+ width: 25%;
534
+ height: 100%;
535
+
536
+ &-ready {
537
+ color: #fff;
538
+ & > view:first-child {
539
+ font-size: 40rpx;
540
+ font-weight: 500;
541
+ text-align: center;
542
+ & > text {
543
+ width: 28rpx;
544
+ height: 28rpx;
545
+ border-radius: 4rpx;
546
+ font-size: 28rpx;
547
+ padding: 0rpx 2rpx;
548
+ }
549
+ }
550
+ & > view:nth-child(2) {
551
+ font-size: 24rpx;
552
+ text-align: center;
553
+ }
554
+ }
555
+ }
556
+ }
557
+ &-product {
558
+ margin: 34rpx 20rpx;
559
+ &-item {
560
+ margin-bottom: 24rpx;
561
+ display: flex;
562
+ align-items: center;
563
+ background: #fff;
564
+ border-radius: 16rpx;
565
+ padding: 20rpx 20rpx 20rpx 10rpx;
566
+ position: relative;
567
+ &-mask {
568
+ position: absolute;
569
+ top: 0;
570
+ bottom: 0;
571
+ left: 0;
572
+ right: 0;
573
+ background: rgba(255, 255, 255, 0.5);
574
+ border-radius: 16rpx;
575
+ z-index: 2;
576
+ }
577
+ image {
578
+ width: 220rpx;
579
+ height: 220rpx;
580
+ border-radius: 16rpx;
581
+ }
582
+ &-info {
583
+ flex: 1;
584
+ display: flex;
585
+ flex-direction: column;
586
+ justify-content: space-between;
587
+ margin-left: 20rpx;
588
+ &-name {
589
+ font-weight: 500;
590
+ font-size: 32rpx;
591
+ }
592
+ &-tag {
593
+ display: flex;
594
+ justify-content: space-between;
595
+ align-items: center;
596
+ & > view:first-child {
597
+ font-size: 24rpx;
598
+ text-align: center;
599
+ border-radius: 8rpx;
600
+ padding: 8rpx 16rpx 8rpx 16rpx;
601
+ color: #fff;
602
+ }
603
+ }
604
+ }
605
+ }
606
+ }
607
+ &-single {
608
+ height: 160rpx;
609
+ display: flex;
610
+ justify-content: space-around;
611
+ align-items: center;
612
+ color: #fff;
613
+ width: 100%;
614
+ &-date {
615
+ text-align: center;
616
+ & > view:first-child {
617
+ font-size: 48rpx;
618
+ font-weight: 700;
619
+ }
620
+ & > view:nth-child(2) {
621
+ font-size: 28rpx;
622
+ }
623
+ }
624
+ &-cutdown {
625
+ position: relative;
626
+ top: 20%;
627
+ font-size: 24rpx;
628
+ & > text {
629
+ display: inline-block;
630
+ width: 40rpx;
631
+ height: 40rpx;
632
+ border-radius: 4rpx;
633
+ background: rgba(255, 255, 255, 1);
634
+ text-align: center;
635
+ vertical-align: middle;
636
+ margin: 0 10rpx;
637
+ }
638
+ }
639
+ }
640
+ .prod_price {
641
+ display: flex;
642
+ align-items: center;
643
+ margin-top: 18rpx;
644
+ width: 100%;
645
+ justify-content: flex-start;
646
+
647
+ .prod_oldPrice {
648
+ font-size: 22rpx;
649
+ text-decoration: line-through;
650
+ color: #888888;
651
+ margin-left: 10rpx;
652
+ }
653
+ }
654
+ }
655
+ }
656
+ </style>