jufubao-base 1.0.116-beta12 → 1.0.116-beta14

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.116-beta12",
3
+ "version": "1.0.116-beta14",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -112,6 +112,7 @@ export default {
112
112
  isShowDiscount: "",
113
113
  number: "",
114
114
  productShowType: "",
115
+ differ: 1,
115
116
  textColor: "",
116
117
  textBgColor: "",
117
118
  isPrice: "Y",
@@ -8,99 +8,110 @@ export default {
8
8
  content: (data) => {
9
9
  return [
10
10
  {
11
- label: '背景颜色:', //label
12
- ele: 'xd-color', //package 名称
13
- valueKey: 'bgcolor', //form[valueKey]
14
- value: data.bgcolor || '', //v-model
15
- placeholder: '请输入占位框背景颜色',
16
- classNmae: 'input80', //样式名称 //input100,input80,input70,input60,input50,input40,input30,input20,
11
+ label: '是否展示原价:',
12
+ ele: 'xd-radio',
13
+ valueKey: 'isShowDiscount',
14
+ value: data.isShowDiscount || "Y",
17
15
  rules: [
18
- {
19
- required: true,
20
- message: '请输入占位框背景颜色',
21
- trigger: 'blur'
22
- },
16
+ {required: true, message: '请选择', trigger: ['blur', 'change']}
17
+ ],
18
+ list: [
19
+ {"label": "显示", "value": "Y"},
20
+ {"label": "隐藏", "value": "N"},
23
21
  ]
24
22
  },
23
+ data.isShowDiscount==='Y'&&{
24
+ label: '价差大于多少展示原价:',
25
+ ele: 'el-input',
26
+ type: 'number',
27
+ valueKey: 'differ',
28
+ value: data['differ'] || '',
29
+ placeholder: '价差',
30
+ className: 'input80',
31
+ },
25
32
  {
26
- label: '选中路径:', //label
27
- ele: 'xd-select-pages-path', //package 名称
28
- valueKey: 'select-pages-path', //form[valueKey]
29
- value: data['select-pages-path'] || {},
30
- setting: {
31
- router: XdBus.getParentApi('getPagesTree')
32
- },
33
- inline: false,
33
+ label: '场次背景图:', //label
34
+ ele: 'xd-upload', //package 名称
35
+ valueKey: 'sessionBackground', //form[valueKey]
36
+ value: data.sessionBackground || null, //v-model
37
+ defaultValue: data.sessionBackground || null, //默认图片对象
38
+ slot: true, //按钮是否使用slot
39
+ tipsformet: '上传文件格式:@imageType@,不超过@size@MB.,建议尺寸:800*800像素',
40
+ type: ['jpg', 'png', 'jpeg'],
41
+ styleType: 'one', //其值:one=>单文件上传 auth=>证件正反面上传 list=>多文件上传
42
+ uploadType: 'aliyun', //''=>API服务上传 qiniu=>七牛云OSS上传 aliyun=> 阿里云OSS上传
43
+ size: 5, //5M
44
+ action: 'aliyun',
34
45
  },
35
- data.bgcolor && {
36
- label: '高度:', //label
37
- ele: 'el-input', //package 名称
38
- type: 'number',
39
- valueKey: 'height', //form[valueKey]
40
- value: data.height || 100, //v-model
41
- placeholder: '请输入占位框高度,单位像素,默认:10px',
42
- className: 'input80', //样式名称 //input100,input80,input70,input60,input50,input40,input30,input20,
43
- rules: [
44
- {
45
- required: true,
46
- message: '请输入占位框高度',
47
- trigger: 'blur'
48
- },
49
- ]
46
+ {
47
+ ele: 'title',
48
+ label: '多场次选中效果',
49
+ size: 'small', //default/mini/small
50
+ },
51
+ {
52
+ label: '第一场背景图:', //label
53
+ ele: 'xd-upload', //package 名称
54
+ valueKey: 'firstBackground', //form[valueKey]
55
+ value: data.firstBackground || null, //v-model
56
+ defaultValue: data.firstBackground || null, //默认图片对象
57
+ slot: true, //按钮是否使用slot
58
+ tipsformet: '上传文件格式:@imageType@,不超过@size@MB.,建议尺寸:800*800像素',
59
+ type: ['jpg', 'png', 'jpeg'],
60
+ styleType: 'one', //其值:one=>单文件上传 auth=>证件正反面上传 list=>多文件上传
61
+ uploadType: 'aliyun', //''=>API服务上传 qiniu=>七牛云OSS上传 aliyun=> 阿里云OSS上传
62
+ size: 5, //5M
63
+ action: 'aliyun',
50
64
  },
51
65
  {
52
- label: '', //label
53
- ele: 'slot', //package 名称
54
- slot: 'is_reference',
66
+ label: '中间场背景图:', //label
67
+ ele: 'xd-upload', //package 名称
68
+ valueKey: 'middleBackground', //form[valueKey]
69
+ value: data.middleBackground || null, //v-model
70
+ defaultValue: data.middleBackground || null, //默认图片对象
71
+ slot: true, //按钮是否使用slot
72
+ tipsformet: '上传文件格式:@imageType@,不超过@size@MB.,建议尺寸:800*800像素',
73
+ type: ['jpg', 'png', 'jpeg'],
74
+ styleType: 'one', //其值:one=>单文件上传 auth=>证件正反面上传 list=>多文件上传
75
+ uploadType: 'aliyun', //''=>API服务上传 qiniu=>七牛云OSS上传 aliyun=> 阿里云OSS上传
76
+ size: 5, //5M
77
+ action: 'aliyun',
78
+ },
79
+ {
80
+ label: '最后场背景图:', //label
81
+ ele: 'xd-upload', //package 名称
82
+ valueKey: 'finalBackground', //form[valueKey]
83
+ value: data.finalBackground || null, //v-model
84
+ defaultValue: data.finalBackground || null, //默认图片对象
85
+ slot: true, //按钮是否使用slot
86
+ tipsformet: '上传文件格式:@imageType@,不超过@size@MB.,建议尺寸:800*800像素',
87
+ type: ['jpg', 'png', 'jpeg'],
88
+ styleType: 'one', //其值:one=>单文件上传 auth=>证件正反面上传 list=>多文件上传
89
+ uploadType: 'aliyun', //''=>API服务上传 qiniu=>七牛云OSS上传 aliyun=> 阿里云OSS上传
90
+ size: 5, //5M
91
+ action: 'aliyun',
92
+ },
93
+ {
94
+ ele: 'title',
95
+ label: '单场次选中效果',
96
+ size: 'small', //default/mini/small
97
+ },
98
+ {
99
+ label: '单场次背景图:', //label
100
+ ele: 'xd-upload', //package 名称
101
+ valueKey: 'singleBackground', //form[valueKey]
102
+ value: data.singleBackground || null, //v-model
103
+ defaultValue: data.singleBackground || null, //默认图片对象
104
+ slot: true, //按钮是否使用slot
105
+ tipsformet: '上传文件格式:@imageType@,不超过@size@MB.,建议尺寸:800*800像素',
106
+ type: ['jpg', 'png', 'jpeg'],
107
+ styleType: 'one', //其值:one=>单文件上传 auth=>证件正反面上传 list=>多文件上传
108
+ uploadType: 'aliyun', //''=>API服务上传 qiniu=>七牛云OSS上传 aliyun=> 阿里云OSS上传
109
+ size: 5, //5M
110
+ action: 'aliyun',
55
111
  },
56
112
  ].filter(i=>i)
57
113
  },
58
114
  advanced: [
59
- {
60
- label: '背景颜色:', //label
61
- ele: 'xd-color', //package 名称
62
- valueKey: 'bgcolor', //form[valueKey]
63
- value: '', //v-model
64
- placeholder: '请输入占位框背景颜色',
65
- classNmae: 'input80', //样式名称 //input100,input80,input70,input60,input50,input40,input30,input20,
66
- rules: [
67
- {
68
- required: true,
69
- message: '请输入占位框背景颜色',
70
- trigger: 'blur'
71
- },
72
- ]
73
- },
74
- {
75
- label: '选中路径:', //label
76
- ele: 'xd-select-pages-path', //package 名称
77
- valueKey: 'select-pages-path', //form[valueKey]
78
- value: null,
79
- setting: {
80
- router: XdBus.getParentApi('getPagesTree')
81
- },
82
- inline: false,
83
- },
84
- {
85
- label: '高度:', //label
86
- ele: 'el-input', //package 名称
87
- type: 'number',
88
- valueKey: 'height', //form[valueKey]
89
- value: null, //v-model
90
- placeholder: '请输入占位框高度,单位像素,默认:10px',
91
- classNmae: 'input80', //样式名称 //input100,input80,input70,input60,input50,input40,input30,input20,
92
- rules: [
93
- {
94
- required: true,
95
- message: '请输入占位框高度',
96
- trigger: 'blur'
97
- },
98
- ]
99
- },
100
- {
101
- label: '', //label
102
- ele: 'slot', //package 名称
103
- slot: 'is_reference',
104
- },
115
+
105
116
  ],
106
117
  };
@@ -2,109 +2,655 @@
2
2
  <view
3
3
  class="jfb-base-con-flash-list"
4
4
  @click="handleEditxSelect"
5
- :class="{ editx : isEditx && active }"
5
+ :class="{ editx: isEditx && active }"
6
6
  >
7
7
  <!--#ifdef H5-->
8
8
  <view
9
9
  class="jfb-base-con-flash-list__edit"
10
- :class="{ editx : isEditx && active }"
10
+ :class="{ editx: isEditx && active }"
11
11
  v-if="isEditx && active"
12
12
  >
13
- <view class="jfb-base-con-flash-list__edit-icon" @click="delEdit">删除</view>
13
+ <view class="jfb-base-con-flash-list__edit-icon" @click="delEdit"
14
+ >删除</view
15
+ >
14
16
  </view>
15
17
  <!-- #endif -->
16
18
  <view class="jfb-base-con-flash-list__body">
17
- <view>测试插件( {{containerId}} )</view>
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>
18
207
  </view>
19
208
  </view>
20
209
  </template>
21
210
 
22
211
  <script>
23
- import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
24
- import { jfbRootExec } from "@/utils/xd.event";
25
- import JfbBaseConFlashListMixin from "./JfbBaseConFlashListMixin";
26
- import { getContainerPropsValue } from "@/utils/xd.base";
27
- import componentsMixins from "@/mixins/componentsMixins";
28
- import extsMixins from "@/mixins/extsMixins";
29
- export default {
30
- name: "JfbBaseConFlashList",
31
- components: {
32
- XdFontIcon
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);
33
366
  },
34
- mixins: [
35
- componentsMixins, extsMixins, JfbBaseConFlashListMixin
36
- ],
37
- data() {
38
- return {
367
+ },
368
+ created() {
369
+ this.init(this.container);
39
370
 
40
- //todo
41
- }
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
+ });
42
390
  },
43
- watch: {
44
- container(value) {
45
- this.init(value)
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;
46
433
  }
47
434
  },
48
- created() {
49
- this.init(this.container);
50
-
51
- //todo
435
+ dividePrice(num) {
436
+ return this.$xdUniHelper.divisionFloatNumber(num, 100);
52
437
  },
53
- methods: {
54
- onJfbLoad(options) {
55
-
56
- // jfbRootExec('baiduUserLogin', {
57
-
58
- // vm: this,// data: {
59
-
60
- // account: 'gaoshiyong',// password: '123456789',// type: 3,// ...options
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;
61
445
 
62
- // }
446
+ if (diff <= 0) {
447
+ //开启下一场
448
+ this.timer = null;
449
+ // this.onJfbLoad();
450
+ return;
451
+ }
63
452
 
64
- // }).then().catch()
65
- },
66
- /**
67
- * @description 监听事件变化
68
- * @param container {object} 业务组件对象自己
69
- */
70
- init(container) {
453
+ const days = Math.floor(diff / (3600 * 24));
454
+ const remainingHours = diff % (3600 * 24);
71
455
 
72
- //this.bgcolor = getContainerPropsValue(container, 'content.bgcolor', '#fff');
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");
73
463
 
74
- //this.height = getContainerPropsValue(container, 'content.height', 10);
75
- },
76
- onJfbScroll(options) {
77
- console.log('event.onJfbScroll', options)
78
- },
79
- onJfbReachBottom(options) {
80
- console.log('event.onJfbReachBottom', options)
81
- },
82
- onJfbShow(options) {
83
- console.log('event.onJfbShow', options)
84
- },
85
- onJfbHide(options) {
86
- console.log('event.onJfbHide', options)
87
- },
88
- onJfbBack(options) {
89
- console.log('event.onJfbBack', options)
90
- },
91
- onJfbUpdate(...data) {
92
- console.log('event.onJfbUpdate', data)
93
- },
94
- onJfbCustomEvent(options) {
95
- console.log('event.onJfbReachBottom', options)
96
- },
97
- }
98
- }
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
+ }
99
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
+ };
100
514
  </script>
101
515
 
102
516
  <style scoped lang="less">
103
- @import "./JfbBaseConFlashListLess.less";
517
+ @import "./JfbBaseConFlashListLess.less";
104
518
 
105
- .jfb-base-con-flash-list {
106
- &__body{
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%;
107
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
+ }
108
653
  }
109
654
  }
655
+ }
110
656
  </style>
@@ -17,14 +17,24 @@
17
17
  minHeight: layoutInfo.bodyMinHeightRpx + 'rpx'
18
18
  }">
19
19
  <view class="setting_list">
20
- <xd-list-item label="已绑实体卡是否失效" :showRight="!showSwitch" listIcon="icongongxiang"
20
+ <xd-list-item label="已绑实体卡是否失效" :showRight="!showSwitch"
21
21
  paddingLR="50rpx" paddingTB="32rpx"
22
+ style="margin-bottom: 8rpx;"
22
23
  @click="handleToShowSwitch"
23
24
  >
24
25
  <view v-if="!showSwitch">去配置</view>
25
- <xd-switch v-else :checked="cardChecked" size="small" @change="handleCardChecked"></xd-switch>
26
+ <view v-else class="switch_wrap">
27
+ <view :style="{
28
+ color: cardChecked ? mainColor : '#666666'
29
+ }">{{ cardChecked ? "开启" : "关闭" }}</view>
30
+ <xd-switch :checked="cardChecked" size="small" @change="handleCardChecked"></xd-switch>
31
+ </view>
26
32
  </xd-list-item>
27
- <xd-list-item :showRight="!phone_number" label="绑定手机号" listIcon="iconshouji01"
33
+ <view class="switch_tip">
34
+ <xd-font-icon size="24" icon="iconmingchengtubiao" style="margin-right: 8rpx;"></xd-font-icon>
35
+ <view>当卡被绑定后,实体卡的卡密与二维码都失效</view>
36
+ </view>
37
+ <xd-list-item :showRight="!phone_number" label="绑定手机号"
28
38
  paddingLR="50rpx" paddingTB="32rpx"
29
39
  @click="handleToBind"
30
40
  >
@@ -201,6 +211,17 @@
201
211
  border-radius: 20rpx;
202
212
  }
203
213
  }
214
+ .switch_wrap{
215
+ display: flex;
216
+ align-items: center;
217
+ }
218
+ .switch_tip{
219
+ display: flex;
220
+ font-size: 24rpx;
221
+ color: #BBBBBB;
222
+ align-items: center;
223
+ padding-left: 80rpx;
224
+ }
204
225
  .fixed_bottom{
205
226
  position: absolute;
206
227
  width: 600rpx;
@@ -3,7 +3,6 @@
3
3
  :class="'size_'+size"
4
4
  :style="{
5
5
  borderTop: showBottom ? '1px solid #eee':'none',
6
- marginTop: showBottom? paddingTB: 0,
7
6
  paddingLeft: paddingLR,
8
7
  paddingRight: paddingLR,
9
8
  paddingTop: paddingTB,
@@ -284,13 +284,16 @@
284
284
  class="jfb-base-order-detail__body-card jfb-base-order-detail__body-cashier"
285
285
  >
286
286
  <view class="jfb-base-order-detail__body-cashier-text">{{info.codes[0].show_type === "qrcode" ? "二维码" : "条形码" }}</view>
287
- <image
288
- :style="{
289
- height: info.codes[0].show_type === 'qrcode' ? '50vw' : '25vw',
290
- width: info.codes[0].show_type === 'qrcode' ? '50vw' : '85vw',
291
- }"
292
- :src="info.codes[0].code_url"
293
- ></image>
287
+ <view style="position: relative">
288
+ <image
289
+ :style="{
290
+ height: info.codes[0].show_type === 'qrcode' ? '50vw' : '25vw',
291
+ width: info.codes[0].show_type === 'qrcode' ? '50vw' : '85vw',
292
+ }"
293
+ :src="info.codes[0].code_url"
294
+ ></image>
295
+ <image v-if="info.codes[0].logo&&info.codes[0].show_type === 'qrcode'" class="logo-icon" :src="info.codes[0].logo"></image>
296
+ </view>
294
297
  <view class="jfb-base-order-detail__body-cashier-text">
295
298
  {{ info.codes[0].can_read_code }}
296
299
  </view>
@@ -751,7 +754,17 @@
751
754
  height: showType === 'qrcode' ? '70vw' : '35vw',
752
755
  }"
753
756
  >
754
- <image mode="aspectFit" :src="codeSrc"></image>
757
+ <view style="position: relative">
758
+ <image :src="codeSrc" mode="aspectFit"></image>
759
+ <image v-if="logo&&showType === 'qrcode'" :src="logo" style="
760
+ width: 100rpx;
761
+ height: 100rpx;
762
+ position: absolute;
763
+ top: 50%;
764
+ left: 50%;
765
+ transform: translate(-50rpx, -50rpx);">
766
+ </image>
767
+ </view>
755
768
  </view>
756
769
  </xd-dailog>
757
770
  </view>
@@ -828,6 +841,7 @@ export default {
828
841
  bottom: 0,
829
842
  },
830
843
  is_hot: "Y",
844
+ logo: ""
831
845
  };
832
846
  },
833
847
  watch: {
@@ -980,6 +994,9 @@ export default {
980
994
  res.codes =
981
995
  res.codes &&
982
996
  res.codes.map((item) => {
997
+ if(item.logo) {
998
+ item.logo = getServiceUrl(item.logo)
999
+ }
983
1000
  if (item.show_type === "qrcode" || item.show_type === "barcode") {
984
1001
  let reg = /^(http:\/\/|https:\/\/|\/\/)+.+$/;
985
1002
  item.code_url = reg.test(item.code_url)? item.code_url:`${this.brandInfo['api_host']}${item.code_url}`
@@ -1125,6 +1142,7 @@ export default {
1125
1142
  handleShowCode(item) {
1126
1143
  this.codeSrc = item.code_url;
1127
1144
  this.showType = item.show_type;
1145
+ this.logo = item.logo;
1128
1146
  console.log(this.codeSrc, "this.codeSrc");
1129
1147
  this.showCode = true;
1130
1148
  },
@@ -1257,6 +1275,13 @@ export default {
1257
1275
  .jfb-base-order-detail {
1258
1276
  &__body {
1259
1277
  color: #333;
1278
+ .logo-icon {
1279
+ width: unit(100, rpx) !important;
1280
+ height: unit(100, rpx) !important;
1281
+ position: absolute;
1282
+ top: 50%;
1283
+ transform: translate(-50rpx, -50rpx);
1284
+ }
1260
1285
  &-show {
1261
1286
  display: flex;
1262
1287
  justify-content: center;
@@ -88,13 +88,16 @@
88
88
  >
89
89
  <view class="jfb-base-success__body-cashier-text"
90
90
  >{{info.codes[0].show_type === "qrcode" ? "二维码" : "条形码" }}</view>
91
- <image
92
- :style="{
93
- height: info.codes[0].show_type === 'qrcode' ? '50vw' : '25vw',
94
- width: info.codes[0].show_type === 'qrcode' ? '50vw' : '85vw',
95
- }"
96
- :src="info.codes[0].code_url"
97
- ></image>
91
+ <view style="position: relative">
92
+ <image
93
+ :style="{
94
+ height: info.codes[0].show_type === 'qrcode' ? '50vw' : '25vw',
95
+ width: info.codes[0].show_type === 'qrcode' ? '50vw' : '85vw',
96
+ }"
97
+ :src="info.codes[0].code_url"
98
+ ></image>
99
+ <image v-if="info.codes[0].logo&&info.codes[0].show_type === 'qrcode'" class="logo-icon" :src="info.codes[0].logo"></image>
100
+ </view>
98
101
  <view class="jfb-base-success__body-cashier-text">
99
102
  {{ info.codes[0].can_read_code }}
100
103
  </view>
@@ -309,7 +312,17 @@
309
312
  class="jfb-base-success__body-dialog"
310
313
  :style="{ height: showType === 'qrcode' ? '70vw' : '35vw' }"
311
314
  >
312
- <image :src="codeSrc" mode="aspectFit"></image>
315
+ <view style="position: relative">
316
+ <image :src="codeSrc" mode="aspectFit"></image>
317
+ <image v-if="logo&&showType === 'qrcode'" :src="logo" style="
318
+ width: 100rpx;
319
+ height: 100rpx;
320
+ position: absolute;
321
+ top: 50%;
322
+ left: 50%;
323
+ transform: translate(-50rpx, -50rpx);">
324
+ </image>
325
+ </view>
313
326
  </view>
314
327
  </xd-dailog>
315
328
  </view>
@@ -386,6 +399,7 @@ export default {
386
399
 
387
400
  showCode: false,
388
401
  codeSrc: "",
402
+ logo: "",
389
403
  ...styleForm.getDataItem(),
390
404
  };
391
405
  },
@@ -417,6 +431,7 @@ export default {
417
431
  handleShowCode(item) {
418
432
  this.codeSrc = item.code_url;
419
433
  this.showType = item.show_type;
434
+ this.logo = item.logo;
420
435
  this.showCode = true;
421
436
  },
422
437
  /**
@@ -545,6 +560,9 @@ export default {
545
560
  info.codes =
546
561
  info.codes &&
547
562
  info.codes.map((item) => {
563
+ if(item.logo) {
564
+ item.logo = getServiceUrl(item.logo)
565
+ }
548
566
  if (item.show_type === "qrcode" || item.show_type === "barcode") {
549
567
  let reg = /^(http:\/\/|https:\/\/|\/\/)+.+$/;
550
568
  if (!reg.test(item.code_url)) item.code_url = `${this.brandInfo["api_host"]}${item.code_url}`;
@@ -672,6 +690,13 @@ export default {
672
690
 
673
691
  .jfb-base-success {
674
692
  &__body {
693
+ .logo-icon {
694
+ width: unit(100, rpx) !important;
695
+ height: unit(100, rpx) !important;
696
+ position: absolute;
697
+ top: 50%;
698
+ transform: translate(-50rpx, -50rpx);
699
+ }
675
700
  &-card {
676
701
  padding: unit(30, rpx);
677
702
  }