jufubao-base 1.0.56 → 1.0.61-beta1002

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 (32) hide show
  1. package/package.json +2 -2
  2. package/src/components/JfbBaseCardDetail/JfbBaseCardDetail.vue +19 -1
  3. package/src/components/JfbBaseCardDetailEntry/Api.js +58 -0
  4. package/src/components/JfbBaseCardDetailEntry/Attr.js +30 -0
  5. package/src/components/JfbBaseCardDetailEntry/JfbBaseCardDetailEntry.vue +920 -0
  6. package/src/components/JfbBaseCardDetailEntry/JfbBaseCardDetailEntryLess.less +80 -0
  7. package/src/components/JfbBaseCardDetailEntry/JfbBaseCardDetailEntryMixin.js +30 -0
  8. package/src/components/JfbBaseCardDetailEntry/Mock.js +106 -0
  9. package/src/components/JfbBaseCardDetailEntry/XdEditPwd.vue +299 -0
  10. package/src/components/JfbBaseCardDetailEntry/XdPwPay.vue +214 -0
  11. package/src/components/JfbBaseCardDisabledEntry/Api.js +12 -7
  12. package/src/components/JfbBaseCardDisabledEntry/JfbBaseCardDisabledEntry.vue +39 -12
  13. package/src/components/JfbBaseCardEntry/JfbBaseCardEntry.vue +37 -1
  14. package/src/components/JfbBaseCardInfoEntry/Api.js +71 -0
  15. package/src/components/JfbBaseCardInfoEntry/Attr.js +37 -0
  16. package/src/components/JfbBaseCardInfoEntry/JfbBaseCardInfoEntry.vue +768 -0
  17. package/src/components/JfbBaseCardInfoEntry/JfbBaseCardInfoEntryLess.less +80 -0
  18. package/src/components/JfbBaseCardInfoEntry/JfbBaseCardInfoEntryMixin.js +30 -0
  19. package/src/components/JfbBaseCardInfoEntry/Mock.js +122 -0
  20. package/src/components/JfbBaseCardMergeEntry/Api.js +61 -0
  21. package/src/components/JfbBaseCardMergeEntry/Attr.js +237 -0
  22. package/src/components/JfbBaseCardMergeEntry/JfbBaseCardMergeEntry.vue +443 -0
  23. package/src/components/JfbBaseCardMergeEntry/JfbBaseCardMergeEntryLess.less +80 -0
  24. package/src/components/JfbBaseCardMergeEntry/JfbBaseCardMergeEntryMixin.js +30 -0
  25. package/src/components/JfbBaseCardMergeEntry/Mock.js +32 -0
  26. package/src/components/JfbBaseCardShiftEntry/Api.js +51 -0
  27. package/src/components/JfbBaseCardShiftEntry/Attr.js +237 -0
  28. package/src/components/JfbBaseCardShiftEntry/JfbBaseCardShiftEntry.vue +593 -0
  29. package/src/components/JfbBaseCardShiftEntry/JfbBaseCardShiftEntryLess.less +80 -0
  30. package/src/components/JfbBaseCardShiftEntry/JfbBaseCardShiftEntryMixin.js +30 -0
  31. package/src/components/JfbBaseCardShiftEntry/Mock.js +5 -0
  32. package/src/mixins/colorCardMixins.js +1 -1
@@ -0,0 +1,920 @@
1
+ <template>
2
+ <view
3
+ class="jfb-base-card-detail-entry"
4
+ @click="handleEditxSelect"
5
+ :class="{ editx: isEditx && active }"
6
+ >
7
+ <!--#ifdef H5-->
8
+ <view
9
+ class="jfb-base-card-detail-entry__edit"
10
+ :class="{ editx: isEditx && active }"
11
+ v-if="isEditx && active"
12
+ >
13
+ <view class="jfb-base-card-detail-entry__edit-icon" @click="delEdit"
14
+ >删除</view
15
+ >
16
+ </view>
17
+ <!-- #endif -->
18
+ <view class="jfb-base-card-detail-entry__body" v-if="info!==null">
19
+ <view class="card-list" :style="{
20
+ background: headerBg['color'],
21
+ backgroundSize: '100%'
22
+ }">
23
+ <view class="card-list-warp" :style="{backgroundImage: `url(${headerBg['image']})`}">
24
+ <view class="card-list__title"><view>{{info['card_type_name']}}</view></view>
25
+ <div class="card-list__content">
26
+ <view>
27
+ <text>券号:</text>
28
+ <text>{{info.card_number}}</text>
29
+ </view>
30
+ </div>
31
+ <view class="card-list__date">
32
+ <text>有效期:</text>
33
+ <text>{{info.end_time}}</text>
34
+ </view>
35
+ <view class="card-list__yue">
36
+ <text>余额:</text>
37
+ <text>{{info.card_point}} {{ info.unit }}</text>
38
+ </view>
39
+ <view class="card-list__other" v-if="info.other_card_point && info.card_point_type === 2">
40
+ <view><text>购买其他物品可抵:</text><text>{{info.other_card_point}} {{ info.unit }}</text></view>
41
+ </view>
42
+ </view>
43
+ </view>
44
+ <view class="jfb-base-card-detail-entry__body-qrcode">
45
+ <view>
46
+ <view>
47
+ <image mode="aspectFit" :src="info.barcode"></image>
48
+ </view>
49
+ </view>
50
+ <view style="position: relative">
51
+ <image
52
+ :style="{width: '300rpx', height: '300rpx'}"
53
+ :src="info.card_qrcode"
54
+ ></image>
55
+ <image v-if="isBrandLogo" class="logo-icon" :src="brandLogo"></image>
56
+ </view>
57
+ <view :style="{marginTop: '20rpx'}" v-if="timeStr">消费二维码,有效期为{{ info["card_qrcode_expire"] / 60 }}分钟</view>
58
+ <view v-if="timeStr">距离刷新还有{{ timeStr }}</view>
59
+ </view>
60
+ <view
61
+ v-if="info.site_entry_settings&&info.site_entry_settings.length>0"
62
+ class="jfb-base-card-detail-entry__body-business"
63
+ >
64
+ <view
65
+ class="jfb-base-card-detail-entry__body-business-title"
66
+ >
67
+ 进入业务板块
68
+ </view>
69
+ <view style="display:flex;align-content:center;justify-content:center">
70
+ <view class="jfb-base-card-detail-entry__body-business-content">
71
+ <view
72
+ class="jfb-base-card-detail-entry__body-business-content-item"
73
+ @click="handleBindLogin(item)"
74
+ v-for="(item,index) in info.site_entry_settings"
75
+ :key="index">
76
+ <view><image :src="item.image_url"></image></view>
77
+ <view>{{item.entry_name}}</view>
78
+ </view>
79
+ </view>
80
+ </view>
81
+ </view>
82
+ <view :style="{height: '100rpx'}"></view>
83
+ <!-- 靠底支付 -->
84
+ <view class="fixe_bottom" :style="prod_bottom">
85
+ <!-- <xd-button
86
+ size="small"
87
+ type="primary">
88
+ 消费记录
89
+ </xd-button> -->
90
+ <xd-button
91
+ v-if="info.is_exchange==='Y'"
92
+ @click="handleToShift"
93
+ size="small"
94
+ type="primary">
95
+ 券转换
96
+ </xd-button>
97
+ <xd-button
98
+ v-if="isShowUnbind"
99
+ @click="handleUnBindCard"
100
+ size="small"
101
+ type="primary">
102
+ 解除绑定
103
+ </xd-button>
104
+ </view>
105
+ </view>
106
+ </view>
107
+ </template>
108
+
109
+ <script>
110
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
111
+ import { jfbRootExec } from "@/utils/xd.event";
112
+ import JfbBaseCardDetailEntryMixin from "./JfbBaseCardDetailEntryMixin";
113
+ import { getContainerPropsValue } from "@/utils/xd.base";
114
+ import componentsMixins from "@/mixins/componentsMixins";
115
+ import extsMixins from "@/mixins/extsMixins";
116
+ import colorCardMixins from "@/mixins/colorCardMixins";
117
+ import getServiceUrl from "@/common/getServiceUrl";
118
+ import { mapState } from "vuex";
119
+ import { Base64 } from "js-base64";
120
+ import XdPwPay from "./XdPwPay";
121
+ import XdEditPwd from "./XdEditPwd";
122
+ import XdUnit from "@/components/XdUnit/XdUnit";
123
+ import XdButton from '@/components/XdButton/XdButton'
124
+ export default {
125
+ name: "JfbBaseCardDetailEntry",
126
+ components: {
127
+ XdFontIcon,
128
+ XdPwPay,
129
+ XdEditPwd,
130
+ XdUnit,
131
+ XdButton
132
+ },
133
+ mixins: [
134
+ componentsMixins,extsMixins,JfbBaseCardDetailEntryMixin,colorCardMixins,
135
+ ],
136
+ data() {
137
+ return {
138
+ userInfo: null, //用户信息(暂时不可用)
139
+
140
+ info: null,
141
+ timeStr: "",
142
+ timeer: null,
143
+ date: 2, //时间底数
144
+ time: 2, //时间幂指数
145
+ refrushTimeer: null,
146
+ maxTime: 30, //最大执行时间幂指数
147
+ editShow: false,
148
+ pwdTitle: "",
149
+ editPhone: "",
150
+ editTitle: "",
151
+ show: false,
152
+ textList: [],
153
+ password: "",
154
+ card_number: "",
155
+ stopTimer: false, //停止轮询
156
+ download: "",
157
+ qrcode: "",
158
+ backUrl: "",
159
+ shift_url: "",
160
+
161
+ //品牌logo
162
+ brandLogo:
163
+ "data:image/png;base64,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",
164
+ isBrandLogo: false,
165
+
166
+ isShowUnbind: false, //是否启动绑定按钮
167
+ headerBg: {},
168
+ };
169
+ },
170
+ watch: {
171
+ container(value) {
172
+ this.init(value);
173
+ },
174
+ },
175
+ computed: {
176
+ ...mapState(["brandInfo"]),
177
+ jfbAuthorize: (state) => state.jfbAuthorize,
178
+ prod_bottom() {
179
+ return this.fixedStyle({height: 0, zIndex: 111});
180
+ },
181
+ },
182
+ created() {},
183
+ methods: {
184
+ onJfbLoad(options) {
185
+ console.log(options,'optionsoptionsoptionsoptions');
186
+ if (options["x-params"]) {
187
+ try {
188
+ let params = JSON.parse(Base64.decode(options["x-params"]));
189
+ this.brandLogo = params["qrcode_logo"];
190
+ } catch (e) {
191
+ console.warn(options["x-params"]);
192
+ }
193
+ }
194
+
195
+ this.$nextTick(() => {
196
+ this.card_number = options.card_number;
197
+ this.init();
198
+
199
+ // if (card_number) {
200
+ // this.card_number = card_number;
201
+ // if (this.brandInfo['is_enable_pay_password'] === 'N') {
202
+ // this.init();
203
+ // } else if (this.brandInfo['is_enable_pay_password'] === 'Y' && this.userInfo['has_user_set_password'] === 'N') {
204
+ // this.editShow = true
205
+ // this.pwdTitle = '您还未设置支付密码,请设置您的平台支付密码'
206
+ // } else if (this.brandInfo['is_enable_pay_password'] === 'Y' && this.userInfo['has_user_set_password'] === 'Y') {
207
+ // this.show = true
208
+ // this.textList = [
209
+ // {
210
+ // label: '查看卡详情',
211
+ // },
212
+ // {
213
+ // label: '请输入支付密码',
214
+ // }
215
+ // ]
216
+ // }
217
+ // this.first = true;
218
+ // } else {
219
+ // setTimeout(() => {
220
+ // this.$xdUniHelper.navigateTo({
221
+ // url: `/pages/index/index`
222
+ // }, false)
223
+ // }, 2000)
224
+ // }
225
+ });
226
+ },
227
+ /**
228
+ * @description 监听事件变化
229
+ * @param container {object} 业务组件对象自己
230
+ */
231
+ init() {
232
+ this.detail();
233
+ this.refrush();
234
+ if(this.$configProject.isPreview) {
235
+ this.timeStr = "01分19秒"
236
+ }
237
+ this.backUrl = getContainerPropsValue( this.container, "content.back_url", { value: "" }).value;
238
+ this.shift_url = getContainerPropsValue( this.container, "content.shift_url", { value: "" }).value;
239
+ },
240
+ /**
241
+ * @description 获取卡详情
242
+ */
243
+ detail() {
244
+ jfbRootExec("getBaseByIdCardDetailEntry", {
245
+ vm: this,
246
+ data: {
247
+ card_number: this.card_number,
248
+ is_show_entry_settings: "Y",
249
+ },
250
+ })
251
+ .then((res) => {
252
+ if (res && res.card_point) {
253
+ res["card_point"] = this.$xdUniHelper.divisionFloatNumber(
254
+ res.card_point,
255
+ 100
256
+ );
257
+ }
258
+ if (res && res.card_point) {
259
+ res["other_card_point"] = this.$xdUniHelper.divisionFloatNumber(
260
+ res.other_card_point,
261
+ 100
262
+ );
263
+ }
264
+ if(res && res.site_entry_settings && res.site_entry_settings.length>0) {
265
+ res.site_entry_settings = res.site_entry_settings.map(item=>{
266
+ item['image_url'] = getServiceUrl(item['image_url'])
267
+ return item
268
+ })
269
+ }
270
+ this.info = res;
271
+ if(!this.$configProject.isPreview) {
272
+ this.setInval(this.info.card_qrcode_expire);
273
+ }
274
+ this.show = false;
275
+ console.log(this.getCardThemes(res.card_type_name),'this.getCardThemes(res.card_type_name)');
276
+ this.headerBg = this.getCardThemes(res.card_type_name);
277
+
278
+ //显示按钮
279
+ if (res["is_show_qrcode_logo"] === "Y") {
280
+ this.isBrandLogo = true;
281
+ }
282
+
283
+ this.isShowUnbind =
284
+ res["is_can_unbind"] === "Y" || res["is_can_unbind"] === undefined;
285
+ })
286
+ .catch((err) => {
287
+ // this.$refs["pwPay"].clearPwd();
288
+ });
289
+ },
290
+ refrush() {
291
+ if (this.stopTimer) return;
292
+ if (this.time >= this.maxTime) {
293
+ clearTimeout(this.refrushTimeer);
294
+ console.log("refrushTimeer.end");
295
+ return;
296
+ }
297
+ this.time++;
298
+ let time =
299
+ this.time >= 5 ? 32 * 1000 : Math.pow(this.date, this.time) * 1000;
300
+ this.refrushTimeer = setTimeout(() => {
301
+ jfbRootExec("getCardYueEntry", {
302
+ vm: this,
303
+ data: {
304
+ card_number: this.card_number,
305
+ },
306
+ })
307
+ .then((res) => {
308
+ //res[4]['value'] = this.$xdUniHelper.random(20,30);
309
+ let refrushInfo = this.$xdUniHelper.cloneDeep(this.info);
310
+ if (res && res !== null && Object.keys(res).length > 0) {
311
+ if (res.card_point) {
312
+ refrushInfo.card_point = this.$xdUniHelper.divisionFloatNumber(
313
+ res.card_point,
314
+ 100
315
+ );
316
+ }
317
+ if (res.other_card_point) {
318
+ refrushInfo.other_card_point =
319
+ this.$xdUniHelper.divisionFloatNumber(
320
+ res.other_card_point,
321
+ 100
322
+ );
323
+ }
324
+ }
325
+
326
+ this.info = refrushInfo;
327
+ this.refrush();
328
+ this.show = false;
329
+ })
330
+ .catch();
331
+ }, time);
332
+ },
333
+ /**
334
+ * @description 已绑定卡登录
335
+ * @param item
336
+ */
337
+ handleBindLogin(entry) {
338
+ //卡券登陆
339
+ this.$xdShowLoading({});
340
+ jfbRootExec("detailLoginEntryCardBind", {
341
+ vm: this,
342
+ data: { card_number: this.info["card_number"] },
343
+ })
344
+ .then((res) => {
345
+ this.$xdHideLoading();
346
+ //#ifdef MP-WEIXIN
347
+ if (this.jfbAuthorize !== null) {
348
+ this.jfbAuthorize.setToken("card", res["card_token"], {
349
+ expires: res["card_expire_in"] / 60 / 60,
350
+ });
351
+ this.handleToApp(entry);
352
+ }
353
+ //#endif
354
+ if (this.$configProject.isPreview) {
355
+ console.log("handleBindLogin", "预览模式不跳转", this.inCallback);
356
+ }
357
+
358
+ else {
359
+ this.handleToApp(entry);
360
+ }
361
+ })
362
+ .catch((res) => {
363
+ this.$xdHideLoading();
364
+ });
365
+ },
366
+ toApp(url){
367
+ this.$xdUniHelper.redirectTo({
368
+ url
369
+ })
370
+ },
371
+ handleToApp(entry){
372
+ let item, redirectUrl;
373
+ try{
374
+ item = JSON.parse(entry['redirect_data']);
375
+ }catch (e) {
376
+ return;
377
+ }
378
+ const {dir, path, host} = item;
379
+ let nsp = Base64.encodeURI(JSON.stringify({business_code: entry['business_code']}));
380
+
381
+ //外站配置地址
382
+ if (entry.redirect_type === 'URL') {
383
+ if (item['path'].indexOf('?') === -1) {
384
+ redirectUrl = `${item['path']}?x-common=${nsp}&vs=${new Date().getTime()}`
385
+ } else redirectUrl = `${item['path']}&x-common=${nsp}&vs=${new Date().getTime()}`;
386
+ this.toApp(redirectUrl);
387
+ return;
388
+ }
389
+
390
+ //站内转换
391
+ let jumpUrl = item.path;
392
+ //#ifdef H5
393
+ jumpUrl = `//${host}/${dir}${path}`;
394
+ //#endif
395
+
396
+ if (item['fixed_business_code'] === '') {
397
+ redirectUrl = `${jumpUrl}?x-common=${nsp}&vs=${new Date().getTime()}`
398
+ }
399
+ else {
400
+ redirectUrl = `${jumpUrl}?x-common=${nsp}&vs=${new Date().getTime()}`
401
+ }
402
+ this.toApp(redirectUrl);
403
+ },
404
+ handleOnClose() {
405
+ this.editShow = false;
406
+ },
407
+ handlePwdOnSubmit(val) {
408
+ this.password = val;
409
+ this.init();
410
+ },
411
+
412
+ handleOnForget() {
413
+ this.editShow = true;
414
+ this.editTitle = "请验证您的手机并修改支付密码";
415
+ },
416
+
417
+ handlePwdClose() {
418
+ this.$helper.navigateBack();
419
+ },
420
+ handleUnBindCard() {
421
+ this.$xdConfirm({
422
+ $vm: this,
423
+ content: "您确定要解除绑定票券吗",
424
+ title: "系统提示",
425
+ width: "80%",
426
+ isTitle: true,
427
+ zIndex: 2000,
428
+ vm: this,
429
+ success: (res) => {
430
+ if (res.confirm) {
431
+ this.timeStr = ""
432
+ clearTimeout(this.timeer);
433
+ clearTimeout(this.refrushTimeer);
434
+ this.stopTimer = true;
435
+ jfbRootExec("deleteCardUnbindEntry", {
436
+ vm: this,
437
+ data: {
438
+ card_number: this.card_number + "",
439
+ },
440
+ })
441
+ .then((res) => {
442
+ this.$xdAlert({
443
+ content: "解绑成功",
444
+ close: () => {
445
+ this.$xdUniHelper.redirectTo({
446
+ url: this.backUrl || this.settings.index,
447
+ });
448
+ },
449
+ });
450
+ })
451
+ .catch((err) => {
452
+ console.log(err, "err");
453
+ this.stopTimer = false;
454
+ });
455
+ }
456
+ },
457
+ });
458
+ },
459
+ setInval(time) {
460
+ console.log("pppppp", time);
461
+ this.timeer = setInterval(() => {
462
+ if (time === 0) {
463
+ this.timeStr = "00分00秒";
464
+ clearInterval(this.timeer);
465
+ if (!this.stopTimer) this.detail();
466
+ } else {
467
+ time--;
468
+ let f = Math.floor(time / 60);
469
+ f = f < 10 ? "0" + f : f;
470
+ let m = time % 60;
471
+ m = m < 10 ? "0" + m : m;
472
+ this.timeStr = `${f}分${m}秒`;
473
+ }
474
+ }, 1000);
475
+ },
476
+ handleToShift() {
477
+ this.$xdUniHelper.navigateTo({
478
+ url: `${this.shift_url}?card_number=${this.info["card_number"]}`,
479
+ });
480
+ },
481
+ onJfbBack(options) {
482
+ if (this.timeer) {
483
+ clearTimeout(this.timeer);
484
+ }
485
+ if (this.refrushTimeer) {
486
+ clearTimeout(this.refrushTimeer);
487
+ }
488
+ this.$xdUniHelper.navigateBack();
489
+ },
490
+ onJfbUnload() {
491
+ this.timeStr = ""
492
+ if (this.timeer) {
493
+ clearTimeout(this.timeer);
494
+ }
495
+ if (this.refrushTimeer) {
496
+ clearTimeout(this.refrushTimeer);
497
+ }
498
+ },
499
+ onJfbScroll(options) {
500
+ console.log("event.onJfbScroll", options);
501
+ },
502
+ onJfbReachBottom(options) {
503
+ console.log("event.onJfbReachBottom", options);
504
+ },
505
+ onJfbShow(options) {
506
+ console.log("event.onJfbShow", options);
507
+ this.onJfbLoad(options)
508
+ // if (this.first) {
509
+ // if (this.brandInfo["is_enable_pay_password"] === "N") {
510
+ // this.init();
511
+ // } else if (
512
+ // this.brandInfo["is_enable_pay_password"] === "Y" &&
513
+ // this.userInfo["has_user_set_password"] === "N"
514
+ // ) {
515
+ // this.editShow = true;
516
+ // this.pwdTitle = "您还未设置支付密码,请设置您的平台支付密码";
517
+ // } else if (
518
+ // this.brandInfo["is_enable_pay_password"] === "Y" &&
519
+ // this.userInfo["has_user_set_password"] === "Y"
520
+ // ) {
521
+ // this.show = true;
522
+ // this.textList = [
523
+ // {
524
+ // label: "查看卡详情",
525
+ // },
526
+ // {
527
+ // label: "请输入支付密码",
528
+ // },
529
+ // ];
530
+ // }
531
+ // }
532
+ },
533
+ onJfbHide(options) {
534
+ this.timeStr = ""
535
+ if (this.timeer) {
536
+ clearTimeout(this.timeer);
537
+ }
538
+ if (this.refrushTimeer) {
539
+ clearTimeout(this.refrushTimeer);
540
+ }
541
+ },
542
+ onJfbBack(options) {
543
+ console.log("event.onJfbBack", options);
544
+ },
545
+ onJfbUpdate(...data) {
546
+ console.log("event.onJfbUpdate", data);
547
+ },
548
+ onJfbCustomEvent(options) {
549
+ console.log("event.onJfbReachBottom", options);
550
+ },
551
+ },
552
+ };
553
+ </script>
554
+
555
+ <style scoped lang="less">
556
+ @import "./JfbBaseCardDetailEntryLess.less";
557
+
558
+ .jfb-base-card-detail-entry {
559
+ &__body {
560
+ color: #333;
561
+ .logo-icon {
562
+ width: unit(100, rpx) !important;
563
+ height: unit(100, rpx) !important;
564
+ position: absolute;
565
+ top: 50%;
566
+ left: 50%;
567
+ transform: translate(-50rpx, -50rpx);
568
+ }
569
+ padding: unit(26, rpx);
570
+ .card-list {
571
+ overflow: hidden;
572
+ border-radius: unit(16, rpx);
573
+ margin-bottom: unit(30, rpx);
574
+
575
+ &:last-child {
576
+ margin-bottom: 0;
577
+ }
578
+
579
+
580
+ &__title {
581
+ height: unit(56, rpx);
582
+ display: flex;
583
+ justify-content: flex-start;
584
+ align-items: center;
585
+
586
+ & > view {
587
+ padding: 0 unit(80, rpx);
588
+ font-size: unit(24, rpx);
589
+ line-height: unit(56, rpx);
590
+ background: rgba(102, 102, 102, 0.4);
591
+ color: #fff;
592
+ border-radius: 0 0 unit(16, rpx) 0;
593
+ }
594
+
595
+ }
596
+
597
+ &__content {
598
+ padding: unit(10, rpx) unit(40, rpx) 0;
599
+ height: unit(86, rpx);
600
+ display: flex;
601
+ justify-content: space-between;
602
+ align-items: center;
603
+
604
+ & > view:first-child {
605
+ font-size: unit(36, rpx);
606
+ line-height: unit(86, rpx);
607
+ color: #fff;
608
+ font-weight: 700;
609
+ }
610
+
611
+ & > view:nth-child(2) {
612
+ font-size: unit(24, rpx);
613
+ display: flex;
614
+ justify-content: space-between;
615
+ align-items: center;
616
+ flex-flow: wrap;
617
+ flex-direction: column;
618
+ color: #fff;
619
+ }
620
+ }
621
+
622
+ &__date {
623
+ padding: 0 unit(40, rpx);
624
+ font-size: unit(28, rpx);
625
+ line-height: unit(32, rpx);
626
+ color: #fff;
627
+ }
628
+
629
+ &__yue {
630
+ padding: unit(10, rpx) unit(40, rpx) 0;
631
+ font-size: unit(28, rpx);
632
+ line-height: unit(32, rpx);
633
+ color: #fff;
634
+
635
+ & > text:nth-child(2) {
636
+ font-weight: 700;
637
+ }
638
+ }
639
+
640
+ &__other {
641
+ display: flex;
642
+ justify-content: flex-start;
643
+ align-items: center;
644
+ padding: unit(20, rpx) unit(40, rpx) 0;
645
+ margin-top: unit(0, rpx);
646
+
647
+ & > view {
648
+ border-radius:unit(8, rpx);
649
+ background: rgba(255, 255, 255, 0.2);
650
+ height: unit(48, rpx);
651
+ line-height: unit(48, rpx);
652
+ display: flex;
653
+ justify-content: flex-start;
654
+ align-items: center;
655
+ font-weight: 400;
656
+ font-size: unit(24, rpx);
657
+ padding: 0 unit(20, rpx);
658
+ color: #fff;
659
+ }
660
+
661
+
662
+ }
663
+
664
+ &__nodata {
665
+ padding: unit(20, rpx) unit(40, rpx) 0;
666
+ margin-top: unit(0, rpx);
667
+ color: #fff;
668
+ font-size: unit(28, rpx);
669
+ }
670
+
671
+ &__entry {
672
+ padding: unit(20, rpx) unit(40, rpx) 0;
673
+ & > view {
674
+ line-height: unit(64, rpx);
675
+ text-align: center;
676
+ font-size: unit(26, rpx);
677
+ border-radius: unit(32, rpx);
678
+ background: rgba(255, 255, 255, 1);
679
+ box-shadow: 0 unit(4, rpx) unit(8, rpx) rgba(156, 62, 0, 0.11);
680
+ font-weight: 500;
681
+ }
682
+ }
683
+
684
+ &__entrys {
685
+ margin: unit(20, rpx) unit(20, rpx) 0;
686
+ padding: unit(30, rpx);
687
+ border-radius: unit(16, rpx);
688
+ background: rgba(255, 255, 255, 1);
689
+ box-shadow: 0 unit(4, rpx) unit(8, rpx) rgba(156, 62, 0, 0.11);
690
+
691
+ &-title {
692
+ display: flex;
693
+ justify-content: space-between;
694
+ align-items: center;
695
+
696
+
697
+ & > view:first-child {
698
+ font-size: unit(28, rpx);
699
+ font-weight: 500;
700
+ flex: 1;
701
+ }
702
+
703
+ & > view:nth-child(2) {
704
+ display: flex;
705
+ justify-content: flex-start;
706
+ align-items: center;
707
+ flex-shrink: 0;
708
+ font-size: unit(20, rpx);
709
+ color: #999;
710
+ }
711
+ }
712
+
713
+ &-scroll {
714
+
715
+ }
716
+
717
+ &-item {
718
+ display: flex;
719
+ justify-content: flex-start;
720
+ align-items: center;
721
+ flex-flow: nowrap;
722
+ margin-left: unit(-14, rpx);
723
+ padding-top: unit(20, rpx);
724
+
725
+ & > view {
726
+ width: unit(120, rpx);
727
+ margin-right: unit(10, rpx);
728
+ flex-shrink: 0;
729
+ display: flex;
730
+ justify-content: center;
731
+ flex-direction: column;
732
+ align-items: center;
733
+
734
+ & > view:first-child {
735
+ width: unit(76, rpx);
736
+ height: unit(76, rpx);
737
+ overflow: hidden;
738
+
739
+ & > image {
740
+ height: 100%;
741
+ width: 100%;
742
+ }
743
+ }
744
+
745
+ & > view:nth-child(2) {
746
+ margin-top: unit(10, rpx);
747
+ font-size: unit(24, rpx);
748
+ line-height: unit(36, rpx);
749
+ margin-bottom: unit(10, rpx);
750
+ }
751
+
752
+ & > view:nth-child(3) {
753
+ display: flex;
754
+ justify-content: flex-start;
755
+ align-items: center;
756
+ flex-shrink: 0;
757
+ font-size: unit(20, rpx);
758
+ color: #999;
759
+ }
760
+
761
+ &:last-child {
762
+ margin-right: 0;
763
+ }
764
+
765
+ }
766
+
767
+
768
+ }
769
+ }
770
+
771
+ &-warp {
772
+ width: unit(700, rpx);
773
+ min-height: unit(290, rpx);
774
+ position: relative;
775
+ border-radius: unit(16, rpx);
776
+ background-size: 100%;
777
+ padding-bottom: unit(20, rpx);
778
+ }
779
+ }
780
+
781
+ &-qrcode {
782
+ text-align: center;
783
+ font-size: @xd-font-size-base;
784
+ line-height: unit(36, rpx);
785
+ background: #fff;
786
+ border-radius: unit(16,rpx);
787
+ margin-top: unit(24, rpx);
788
+ padding: unit(20,rpx) unit(70,rpx) unit(70,rpx) unit(70,rpx);
789
+ color: #000;
790
+
791
+ & > view {
792
+ // margin-bottom: unit(20, rpx);
793
+
794
+ & > view {
795
+ margin-bottom: 0;
796
+ }
797
+ }
798
+
799
+ & > view:nth-child(1) {
800
+ display: flex;
801
+ justify-content: center;
802
+ align-items: center;
803
+ box-sizing: border-box;
804
+ height: unit(200, rpx);
805
+ width: 100%;
806
+ margin-top: unit(20, rpx);
807
+
808
+ & > view {
809
+ width: 100%;
810
+ height: unit(200, rpx);
811
+ padding: unit(10, rpx);
812
+ display: flex;
813
+ justify-content: center;
814
+ align-items: center;
815
+
816
+ & > image {
817
+ max-width: 100%;
818
+ max-height: unit(200, rpx);
819
+ }
820
+ }
821
+ }
822
+
823
+ & > view:nth-child(2) {
824
+ display: flex;
825
+ justify-content: center;
826
+ align-items: center;
827
+ padding: unit(20, rpx);
828
+
829
+ & > view {
830
+ width: unit(450, rpx);
831
+ height: unit(450, rpx);
832
+ padding: unit(10, rpx);
833
+
834
+ & > image {
835
+ width: unit(450, rpx);
836
+ height: unit(450, rpx);
837
+ }
838
+ }
839
+ }
840
+ }
841
+
842
+ &-business {
843
+ background: #fff;
844
+ border-radius: unit(16,rpx);
845
+ margin-top: unit(24,rpx);
846
+
847
+ &-title {
848
+ font-size: unit(28,rpx);
849
+ font-weight: 500;
850
+ text-align: center;
851
+ padding: unit(28,rpx);
852
+ }
853
+
854
+ &-content {
855
+ display: flex;
856
+ justify-content: flex-start;
857
+ align-items: center;
858
+ flex-flow: wrap;
859
+ padding-left: unit(30, rpx);
860
+
861
+ & > view {
862
+ width: unit(120, rpx);
863
+ margin-right: unit(10, rpx);
864
+ flex-shrink: 0;
865
+ display: flex;
866
+ justify-content: center;
867
+ flex-direction: column;
868
+ align-items: center;
869
+
870
+ & > view:first-child {
871
+ width: unit(76, rpx);
872
+ height: unit(76, rpx);
873
+ overflow: hidden;
874
+
875
+ & > image {
876
+ height: 100%;
877
+ width: 100%;
878
+ }
879
+ }
880
+
881
+ & > view:nth-child(2) {
882
+ margin-top: unit(10, rpx);
883
+ font-size: unit(24, rpx);
884
+ line-height: unit(36, rpx);
885
+ margin-bottom: unit(10, rpx);
886
+ }
887
+
888
+ & > view:nth-child(3) {
889
+ display: flex;
890
+ justify-content: flex-start;
891
+ align-items: center;
892
+ flex-shrink: 0;
893
+ font-size: unit(20, rpx);
894
+ color: #999;
895
+ }
896
+
897
+ &:last-child {
898
+ margin-right: 0;
899
+ }
900
+ }
901
+ }
902
+ }
903
+
904
+ .fixe_bottom{
905
+ display: flex;
906
+ align-items: center;
907
+ justify-content: space-between;
908
+ height: unit(100, rpx);
909
+ padding: 0 unit(40, rpx);
910
+ background: #FFF;
911
+ box-shadow: 0 0 unit(16, rpx) rgba(0,0,0,.05);
912
+ .flex_l{
913
+ display: flex;
914
+ align-items: center;
915
+ font-size: unit(32,rpx);
916
+ }
917
+ }
918
+ }
919
+ }
920
+ </style>