jufubao-base 1.0.56 → 1.0.61-beta5

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