jufubao-base 1.0.232-beta5 → 1.0.232-beta7

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 (53) hide show
  1. package/package.json +1 -1
  2. package/src/components/JfbBaseBalance/Api.js +18 -30
  3. package/src/components/JfbBaseBalance/Attr.js +292 -24
  4. package/src/components/JfbBaseBalance/JfbBaseBalance.vue +253 -32
  5. package/src/components/JfbBaseBalance/Mock.js +5 -9
  6. package/src/components/JfbBaseCodeOpenVip/Api.js +17 -39
  7. package/src/components/JfbBaseCodeOpenVip/Attr.js +19 -0
  8. package/src/components/JfbBaseCodeOpenVip/JfbBaseCodeOpenVip.vue +52 -23
  9. package/src/components/JfbBaseConsumpCode/Api.js +94 -19
  10. package/src/components/JfbBaseConsumpCode/Attr.js +13 -0
  11. package/src/components/JfbBaseConsumpCode/JfbBaseConsumpCode.vue +397 -93
  12. package/src/components/JfbBaseConsumpCode/Mock.js +18 -9
  13. package/src/components/JfbBaseOpenVip/Api.js +11 -40
  14. package/src/components/JfbBaseOpenVip/Attr.js +4 -4
  15. package/src/components/JfbBaseOpenVip/JfbBaseOpenVip.vue +68 -25
  16. package/src/components/JfbBaseOpenVip/Mock.js +16 -9
  17. package/src/components/JfbBaseOpenVip/XdVipList.vue +44 -6
  18. package/src/components/JfbBaseOpenVipDetail/Api.js +17 -39
  19. package/src/components/JfbBaseOpenVipDetail/Attr.js +16 -27
  20. package/src/components/JfbBaseOpenVipDetail/JfbBaseOpenVipDetail.vue +108 -23
  21. package/src/components/JfbBasePersonalData/Api.js +9 -41
  22. package/src/components/JfbBasePersonalData/Attr.js +1 -37
  23. package/src/components/JfbBasePersonalData/JfbBasePersonalData.vue +43 -21
  24. package/src/components/JfbBasePointsCard/Api.js +4 -44
  25. package/src/components/JfbBasePointsCard/Attr.js +8 -44
  26. package/src/components/JfbBasePointsCard/JfbBasePointsCard.vue +24 -107
  27. package/src/components/JfbBasePointsCard/Mock.js +1 -9
  28. package/src/components/JfbBasePointsDetail/Api.js +25 -0
  29. package/src/components/JfbBasePointsDetail/JfbBasePointsDetail.vue +66 -20
  30. package/src/components/JfbBasePointsDetail/Mock.js +2 -9
  31. package/src/components/JfbBaseSavingDetail/Api.js +12 -29
  32. package/src/components/JfbBaseSavingDetail/Attr.js +44 -22
  33. package/src/components/JfbBaseSavingDetail/JfbBaseSavingDetail.vue +593 -29
  34. package/src/components/JfbBaseSavingDetail/components/echarts.min.js +26 -0
  35. package/src/components/JfbBaseSavingDetail/components/echarts.vue +254 -0
  36. package/src/components/JfbBaseSavingDetail/components/wx-canvas.js +105 -0
  37. package/src/components/JfbBaseShare/Api.js +5 -43
  38. package/src/components/JfbBaseShare/JfbBaseShare.vue +13 -12
  39. package/src/components/JfbBaseTfkSearch/ContentProduct.vue +1 -20
  40. package/src/components/JfbBaseTfkSearch/JfbBaseTfkSearch.vue +5 -0
  41. package/src/components/JfbBaseUserInfo/JfbBaseUserInfo.vue +5 -1
  42. package/src/components/JfbBaseWithDrawAgain/Api.js +13 -30
  43. package/src/components/JfbBaseWithDrawAgain/Attr.js +70 -26
  44. package/src/components/JfbBaseWithDrawAgain/JfbBaseWithDrawAgain.vue +255 -32
  45. package/src/components/JfbBaseWithDrawAgain/Mock.js +6 -9
  46. package/src/components/JfbBaseWithDrawRecord/Api.js +4 -43
  47. package/src/components/JfbBaseWithDrawRecord/Attr.js +56 -25
  48. package/src/components/JfbBaseWithDrawRecord/JfbBaseWithDrawRecord.vue +157 -35
  49. package/src/components/JfbBaseWithDrawRecord/Mock.js +3 -9
  50. package/src/components/JfbBaseWithdraw/Api.js +20 -30
  51. package/src/components/JfbBaseWithdraw/Attr.js +304 -24
  52. package/src/components/JfbBaseWithdraw/JfbBaseWithdraw.vue +166 -32
  53. package/src/components/JfbBaseWithdraw/Mock.js +2 -8
@@ -12,50 +12,77 @@
12
12
  }">
13
13
  <view class="content-box">
14
14
  <view class="logo-box">
15
- <image src="https://img.js.design/assets/img/67e9ea4307c4c2e467435b30.jpeg#d0969ce63b2aef1069a03e984e9acd13"
16
- class="logo"></image>
15
+ <image :src="userInfo['head_url']" class="logo"></image>
17
16
  </view>
18
- <view v-if="!showMask&&showDialog">
17
+ <view v-if="isFlow">
19
18
  <view @click="handleToShop" class="shop">
20
- <view>门店名称</view>
19
+ <view>{{shopName}}</view>
21
20
  <XdFontIcon size="20" icon="iconxiangyou_xian"></XdFontIcon>
22
21
  </view>
23
- <image mode="aspectFit" class="bar-code"
24
- src="http://www.expba.com/cgi-bin/GInfo.dll?MfcISAPICommand=BarCode&ccode=464564655&ih=60&ntype=10"></image>
25
- <view class="bar-code-text">N328490214783094723</view>
26
- <image mode="aspectFit" class="qrcode"
27
- src="">
28
- </image>
29
- <view class="code-refresh">{{expiration_sec_str}}后自动更新</view>
30
- <view class="vip">
31
- <view class="vip-title">
32
- <view class="vip-title-left">PLUS会员专享</view>
33
- <view class="vip-title-right">
34
- <text>8</text>折
22
+ <view class="verification-item">
23
+ <view class="verification-item-label">提货标签</view>
24
+ <view class="verification-item-tags">
25
+ <view :style="{color:tag_id===item.value?mainColor:'',borderColor: tag_id===item.value?mainColor:''}"
26
+ v-for="(item,index) in settle_tag_list" :key="index" @click="handlerTagRadio(item)">{{item.label}}
35
27
  </view>
36
28
  </view>
37
- <view class="vip-open" @click="handleToOpen">
38
- <xd-font-icon color="#FCBF28" size="20" icon="iconjinhangzhong"></xd-font-icon>
39
- <text>立即开通</text>
40
- <xd-font-icon size="20" icon="iconxiangyou_xian"></xd-font-icon>
29
+ <view class="nodata" v-if="settle_tag_list_status">结算标签为空,请联系店员设置后重试</view>
30
+ </view>
31
+ <view class="verification-item">
32
+ <view class="verification-item-label">提货点数</view>
33
+ <view class="verification-item-input">
34
+ <input v-model="total_price" @input="(value)=>handlerPrice(value)" type="text">
35
+ <xd-number v-if="curTag.is_static_price" class="xd-number" :min="1" :max="999" v-model="num"
36
+ @change="handleNumberChange"></xd-number>
37
+ <view :style="{color:mainColor}" class="tip">*提货点数请咨询店员,提货成功后无法退换</view>
41
38
  </view>
42
39
  </view>
40
+ <XdButton v-if="btnDisabled" style="margin-top: 200rpx" width="260rpx" type="primary" disabled>下一步</XdButton>
41
+ <XdButton v-else style="margin-top: 200rpx" width="260rpx" type="primary" @click="toPayOrder">下一步</XdButton>
43
42
  </view>
44
- <view class="mask-box" v-else>
45
- <view class="mask">
46
- <view class="mask-title">为了给您提供更好的服务需要获取您的位置信息</view>
47
- <view class="mask-open">
48
- PLUS会员专享 <span :style="{color:mainColor,marginLeft:'8rpx'}">8</span>折 <span @click="handleToOpen"
49
- :style="{color:mainColor,marginLeft:'15rpx'}">立即开通</span>
43
+ <view v-else>
44
+ <view v-if="!showMask">
45
+ <view @click="handleToShop" class="shop">
46
+ <view>{{shopName}}</view>
47
+ <XdFontIcon size="20" icon="iconxiangyou_xian"></XdFontIcon>
48
+ </view>
49
+ <image mode="aspectFit" class="bar-code" :src="barcode_url">
50
+ </image>
51
+ <view class="bar-code-text">{{barCode}}</view>
52
+ <image mode="aspectFit" class="qrcode" :src="code_url">
53
+ </image>
54
+ <view class="code-refresh">{{expiration_sec_str}}后自动更新</view>
55
+ <view class="vip" v-if="plusDiscount">
56
+ <view class="vip-title">
57
+ <view class="vip-title-left">PLUS会员专享</view>
58
+ <view class="vip-title-right">
59
+ <text>{{plusDiscount/1000}}</text>折
60
+ </view>
61
+ </view>
62
+ <view class="vip-open" @click="handleToOpen">
63
+ <xd-font-icon color="#FCBF28" size="20" icon="iconjinhangzhong"></xd-font-icon>
64
+ <text>立即开通</text>
65
+ <xd-font-icon size="20" icon="iconxiangyou_xian"></xd-font-icon>
66
+ </view>
67
+ </view>
68
+ </view>
69
+ <view class="mask-box" v-else>
70
+ <view class="mask">
71
+ <view class="mask-title">{{tip}}</view>
72
+ <!-- <view class="mask-open">
73
+ PLUS会员专享 <span :style="{color:mainColor,marginLeft:'8rpx'}">8</span>折 <span @click="handleToOpen"
74
+ :style="{color:mainColor,marginLeft:'15rpx'}">立即开通</span>
75
+ </view> -->
50
76
  </view>
51
77
  </view>
52
78
  </view>
79
+
53
80
  </view>
54
81
  </view>
55
82
  <XdDialog :show.sync="showDialog" :showClose="false" :showTitle="false">
56
83
  <view class="dialog-title" slot="title">门店确认</view>
57
84
  <view class="dialog-content">
58
- <view>当前门店:<span :style="{color:mainColor}">xxxxxxx门店</span></view>
85
+ <view>当前门店:<span :style="{color:mainColor}">{{shopName}}</span></view>
59
86
  <view>请确认您是否在当前门店中</view>
60
87
  </view>
61
88
  <view class="dialog-btns" slot="btn">
@@ -72,6 +99,7 @@
72
99
  import XdButton from "@/components/XdButton/XdButton";
73
100
  import { jfbRootExec } from "@/utils/xd.event";
74
101
  import JfbBaseConsumpCodeMixin from "./JfbBaseConsumpCodeMixin";
102
+ import getServiceUrl from "@/common/getServiceUrl";
75
103
  import { getContainerPropsValue } from "@/utils/xd.base";
76
104
  import componentsMixins from "@/mixins/componentsMixins";
77
105
  import extsMixins from "@/mixins/extsMixins";
@@ -92,17 +120,33 @@
92
120
  openPath: "",
93
121
  shopPath: "",
94
122
  successPath: "",
123
+ cashPayPath: "",
95
124
  showDialog: false,
96
- showMask: false,
125
+ showMask: true,
97
126
  shop_id: '',
98
127
  secondTimer: null,
99
128
  expiration_sec: '',
100
129
  code_url: '',
130
+ barcode_url: '',
131
+ barCode: '',
101
132
  statusTimer: null,
102
133
  validTimer: null,
103
134
  payChannels: [],
104
135
  channel_provider_id: "",
105
- options: {}
136
+ options: {},
137
+ canEdit: true,
138
+ settle_tag_list: [],
139
+ settle_tag_list_status: false,
140
+ tag_id: "",
141
+ price: "",
142
+ total_price: "",
143
+ num: 1,
144
+ tip: '',
145
+ shopName: '',
146
+ isFlow: false,
147
+ xnamespace: '',
148
+ plusDiscount: 0,
149
+ userInfo: {}
106
150
  }
107
151
  },
108
152
  watch: {
@@ -131,28 +175,61 @@
131
175
  let sec = second % 60;
132
176
  return `${min}分${sec}秒`;
133
177
  },
178
+ curTag() {
179
+ return this.settle_tag_list.find(item => item.value === this.tag_id) || {}
180
+ },
181
+ curTagPrice() {
182
+ const curTag = this.curTag;
183
+ if (this.$xdUniHelper.isEmpty(curTag)) return 0;
184
+ if (curTag.is_static_price) {
185
+ return curTag.price_yuan;
186
+ } else {
187
+ return this.total_price;
188
+ }
189
+ },
190
+ btnDisabled() {
191
+ return this.total_price === '' || !this.tag_id;
192
+ }
134
193
  },
135
194
  created() {
136
195
  this.init(this.container);
137
196
  },
138
197
  methods: {
139
- onJfbLoad(options) {
198
+ async onJfbLoad(options) {
199
+ this.xnamespace = this.projectAttr.business_code
200
+ this.getUserInfo()
140
201
  this.options = options
141
202
  if (!this.isPreview) {
142
203
  if (Object.keys(this.stateLocation).length === 0) {
204
+ this.tip = '为了给您提供更好的服务需要获取您的位置信息'
143
205
  this.showMask = true;
144
206
  this.showDialog = false;
145
207
  return
146
208
  }
147
209
  }
148
- this.shop_id = options.shop_id;
149
- if (this.shop_id) {
150
- this.showDialog = false;
151
- //todo 通过shop_id获取数据
152
- this.p_getAsyncStep();
153
- this.p_getListUserPayChannel();
210
+ if (!this.options.shop_id) {
211
+ jfbRootExec("getConsumpShopList", {
212
+ vm: this,
213
+ data: {
214
+ city_code: this.stateCity.city_code,
215
+ consume_mode: 'SELL',
216
+ latitude: this.stateLocation.latitude + '',
217
+ longitude: this.stateLocation.longitude + '',
218
+ },
219
+ }).then(res => {
220
+ if (res && res.list.length > 0) {
221
+ this.shop_id = res.list[0].shop_id;
222
+ this.shopName = res.list[0].resource_shop_name;
223
+ this.showMask = true;
224
+ this.showDialog = true;
225
+ } else {
226
+ this.tip = '您的附近暂时没有支持的店铺'
227
+ this.showDialog = false;
228
+ }
229
+ })
154
230
  } else {
155
- this.showDialog = true;
231
+ this.shop_id = this.options.shop_id;
232
+ this.p_getAsyncStep();
156
233
  }
157
234
  },
158
235
  /**
@@ -175,14 +252,27 @@
175
252
  "content.successPath",
176
253
  { value: "" }
177
254
  ).value;
255
+ this.cashPayPath = getContainerPropsValue(container, 'content.cash_pay_path', { value: "" }
256
+ ).value;
257
+ },
258
+ getUserInfo() {
259
+ jfbRootExec("getConsumpBaseUserInfo", {
260
+ vm: this,
261
+ data: {},
262
+ }).then(res => {
263
+ this.userInfo = res || {};
264
+ })
178
265
  },
179
266
  async p_getAsyncStep() {
180
267
  await this.p_getQuickPayQRCode();
181
- this.p_getQRCodeStatus();
268
+ if (!this.isFlow) {
269
+ this.p_getQRCodeStatus();
270
+ this.p_getListUserPayChannel();
271
+ }
182
272
  },
183
273
  p_getListUserPayChannel() {
184
274
  const { pay_channels } = this.projectAttr;
185
- jfbRootExec("getListUserPayChannel", {
275
+ jfbRootExec("getConsumpListUserPayChannel", {
186
276
  vm: this,
187
277
  data: {
188
278
  providers: pay_channels && pay_channels.join(","),
@@ -195,30 +285,45 @@
195
285
  },
196
286
  p_getQuickPayQRCode() {
197
287
  return new Promise((resolve, reject) => {
198
- // this.$xdShowLoading({});
199
- jfbRootExec("getQuickPayQRCode", {
288
+ this.$xdShowLoading({});
289
+ jfbRootExec("getConsumpCode", {
200
290
  vm: this,
201
291
  data: {
202
292
  shop_id: this.shop_id,
203
- temp_order_id: this.temp_order_id
293
+ temp_order_id: this.temp_order_id,
204
294
  }
205
295
  }).then(res => {
206
- // this.$xdHideLoading();
207
- this.temp_order_id = res.temp_order_id;
208
-
209
- let code_url = this.brandInfo['api_host'] + res.code_url;
210
- if (this.isPreview) code_url = res.code_url;
211
- this.code_url = code_url;
212
- this.expiration_sec = res.expiration_sec;
213
- clearInterval(this.secondTimer);
214
- this.secondTimer = setInterval(() => {
215
- this.expiration_sec--;
216
- if (this.expiration_sec <= 0) {
217
- clearInterval(this.secondTimer);
218
- this.p_getQuickPayQRCode();
219
- }
220
- }, 1000);
221
- resolve();
296
+ this.$xdHideLoading();
297
+ this.plusDiscount = res.plus_discount
298
+ if (res.is_st_flow === 'Y') {
299
+ //水牌
300
+ this.isFlow = true
301
+ this.shopName = res.shop_name;
302
+ this.getSettleTagList()
303
+ } else {
304
+ // 消费码
305
+ this.temp_order_id = res.temp_order_id;
306
+ let code_url = this.brandInfo['api_host'] + res.code_url;
307
+ let barcode_url = this.brandInfo['api_host'] + res.barcode_url;
308
+ if (this.isPreview) code_url = res.code_url;
309
+ if (this.isPreview) barcode_url = res.barcode_url;
310
+ this.code_url = code_url;
311
+ this.barcode_url = barcode_url;
312
+ this.barCode = res.payment_code
313
+ this.expiration_sec = res.expiration_sec;
314
+ this.showMask = false;
315
+ this.shopName = res.shop_name;
316
+ clearInterval(this.secondTimer);
317
+ this.secondTimer = setInterval(() => {
318
+ this.expiration_sec--;
319
+ if (this.expiration_sec <= 0) {
320
+ clearInterval(this.secondTimer);
321
+ this.p_getQuickPayQRCode();
322
+ }
323
+ }, 1000);
324
+ resolve();
325
+ }
326
+
222
327
  }).catch(err => {
223
328
  console.error(err);
224
329
  reject(err);
@@ -226,7 +331,7 @@
226
331
  })
227
332
  },
228
333
  p_getQRCodeStatus() {
229
- jfbRootExec("getQRCodeStatus", {
334
+ jfbRootExec("getConsumpCodeScanStatus", {
230
335
  vm: this,
231
336
  data: {
232
337
  temp_order_id: this.temp_order_id,
@@ -265,7 +370,7 @@
265
370
  })
266
371
  },
267
372
  p_createOrder() {
268
- jfbRootExec("batchUseCardCreated", {
373
+ jfbRootExec("batchConsumpUseCardCreated", {
269
374
  vm: this,
270
375
  data: {
271
376
  temp_order_id: this.temp_order_id,
@@ -279,7 +384,7 @@
279
384
  })
280
385
  },
281
386
  p_getOrderStatus() {
282
- jfbRootExec("getAsyncSubmitStatus", {
387
+ jfbRootExec("getConsumpAsyncSubmitStatus", {
283
388
  vm: this,
284
389
  data: {
285
390
  request_order_id: this.request_order_id
@@ -371,6 +476,131 @@
371
476
  if (this.validTimer) clearInterval(this.validTimer)
372
477
  this.p_getAsyncStep();
373
478
  },
479
+ getSettleTagList() {
480
+ this.$xdShowLoading({});
481
+
482
+ jfbRootExec("getConsumpSettleMainInfo", {
483
+ vm: this,
484
+ data: {
485
+ shop_id: this.shop_id,
486
+ }
487
+ }).then(res => {
488
+ this.$xdHideLoading();
489
+ const { settle_tag_list } = res;
490
+ this.settle_tag_list = settle_tag_list;
491
+ if (settle_tag_list.length > 0) {
492
+ this.handlerTagRadio(settle_tag_list[0]);
493
+ this.settle_tag_list_status = false;
494
+ }
495
+ else this.settle_tag_list_status = true;
496
+ }).catch(err => {
497
+ this.$xdHideLoading();
498
+ this.$xdLog.catch(error)
499
+ })
500
+ },
501
+ toPayOrder(options = {}) {
502
+ let { tag_id, total_price, curTag, num = 1, shop_id } = this;
503
+ let err_tip = "";
504
+ if (!curTag.is_static_price) this.price = total_price;
505
+ if (curTag.is_static_price) {
506
+ if (total_price > 10000) {
507
+ err_tip = '金额不能超过10000'
508
+ }
509
+ }
510
+ let price = this.price;
511
+ if (!price) err_tip = "请填写正确的提货金额";
512
+ if (!tag_id) err_tip = "请选择结算标签";
513
+ if (err_tip) {
514
+ uni.showToast({
515
+ title: err_tip,
516
+ icon: 'none'
517
+ });
518
+ return false;
519
+ }
520
+ if (this.total_price == 0) {
521
+ uni.showToast(
522
+ {
523
+ title: '核销金额不能为0',
524
+ icon: 'none'
525
+ }
526
+ )
527
+ return
528
+ }
529
+ jfbRootExec("addConsumpCashierTempOrderData", {
530
+ vm: this,
531
+ data: {
532
+ shop_id: this.shop_id,
533
+ settle_tag_id: this.tag_id,
534
+ num: this.num,
535
+ settle_tag_price: this.curTagPrice,
536
+ total_price: this.total_price,
537
+ ...options
538
+ }
539
+ })
540
+ .then(res => {
541
+ if (res.confirm_notice) {
542
+ return this.useCardPop(res).then(data => {
543
+ if (data == 2) {
544
+ this.toPayOrder({
545
+ is_ignore_unique_check: "Y"
546
+ })
547
+ }
548
+ })
549
+ } else {
550
+ this.price = "";
551
+ let params = {
552
+ ...this.options,
553
+ price: price,
554
+ num: num,
555
+ tag: tag_id,
556
+ shop_id: shop_id,
557
+ cart_order_id: res.cart_order_id
558
+ };
559
+ params = this.$xdUniHelper.jsonToParams(params)
560
+ this.$xdUniHelper.navigateTo({
561
+ url: this.cashPayPath + `?${params}`
562
+ })
563
+ }
564
+ })
565
+ .catch(error => {
566
+ console.error(error);
567
+ })
568
+ },
569
+ //选卡弹出项
570
+ useCardPop(data) {
571
+ return new Promise((resolve, reject) => {
572
+ uni.showModal({
573
+ title: '提示',
574
+ content: data.msg,
575
+ // confirmText: data.confirm_text,
576
+ // cancelText: data.cancel_text,
577
+ success: function (res) {
578
+ if (res.confirm) {
579
+ resolve(2);
580
+ } else if (res.cancel) {
581
+ resolve();
582
+ }
583
+ },
584
+ fail: function (res) {
585
+ reject(res);
586
+ }
587
+ });
588
+ })
589
+ },
590
+ handlerPrice(e) {
591
+ this.$nextTick(() => {
592
+ this.total_price = e.detail.value.replace(/^\D*([0-9]\d*\.?\d{0,2})?.*$/, '$1');
593
+ if (this.total_price > 10000) {
594
+ this.total_price = 10000
595
+ uni.showToast(
596
+ {
597
+ title: '核销金额不能超过10000',
598
+ icon: 'none'
599
+ }
600
+ )
601
+ }
602
+ })
603
+ },
374
604
  handleThirdPay(pay_order_id, main_order_id) {
375
605
  let { login_providers = [] } = this.projectAttr;
376
606
  let data = {
@@ -387,7 +617,7 @@
387
617
  data['pay_success_url'] += this.successPath + `?order_id=${main_order_id}`;
388
618
  }
389
619
 
390
- jfbRootExec("setThirdPlace", {
620
+ jfbRootExec("setConsumpThirdPlace", {
391
621
  vm: this,
392
622
  data,
393
623
  })
@@ -396,7 +626,7 @@
396
626
  const { channel_data } = res;
397
627
  const paySignData = JSON.parse(Base64.decode(channel_data));
398
628
  this.openTemplatePay(paySignData, (ps) => {
399
- jfbRootExec("updatePay", {
629
+ jfbRootExec("updateConsumpPay", {
400
630
  vm: this,
401
631
  data: {
402
632
  main_order_id: main_order_id,
@@ -432,21 +662,36 @@
432
662
  });
433
663
  },
434
664
  handleConfirm() {
435
- //todo 经纬度获取第一个门店
436
665
  this.showDialog = false;
437
666
  this.p_getAsyncStep();
438
667
  },
668
+ handlerTagRadio(item) {
669
+ this.tag_id = item.value;
670
+ this.canEdit = !item.is_static_price;
671
+ this.num = 1;
672
+ if (item.is_static_price) {
673
+ this.total_price = item.price_yuan
674
+ this.price = item.price_yuan
675
+ } else {
676
+ this.total_price = "";
677
+ this.price = "";
678
+ }
679
+ },
680
+ handleNumberChange(num) {
681
+ let curTag = this.curTag;
682
+ this.total_price = this.$xdUniHelper.multiplyFloatNumber(curTag.price_yuan, num);
683
+ },
439
684
  onJfbUnload(options) {
440
685
  console.log('event.onJfbUnload', options)
441
- if(this.secondTimer) clearInterval(this.secondTimer);
442
- if(this.statusTimer) clearTimeout(this.statusTimer);
443
- if(this.orderTimer) clearTimeout(this.orderTimer);
686
+ if (this.secondTimer) clearInterval(this.secondTimer);
687
+ if (this.statusTimer) clearTimeout(this.statusTimer);
688
+ if (this.orderTimer) clearTimeout(this.orderTimer);
444
689
  },
445
690
  onJfbBack(options) {
446
691
  console.log('event.onJfbBack', options)
447
- if(this.secondTimer) clearInterval(this.secondTimer);
448
- if(this.statusTimer) clearTimeout(this.statusTimer);
449
- if(this.orderTimer) clearTimeout(this.orderTimer);
692
+ if (this.secondTimer) clearInterval(this.secondTimer);
693
+ if (this.statusTimer) clearTimeout(this.statusTimer);
694
+ if (this.orderTimer) clearTimeout(this.orderTimer);
450
695
  },
451
696
  onJfbScroll(options) {
452
697
  console.log('event.onJfbScroll', options)
@@ -459,6 +704,9 @@
459
704
  },
460
705
  onJfbHide(options) {
461
706
  console.log('event.onJfbHide', options)
707
+ if (this.secondTimer) clearInterval(this.secondTimer);
708
+ if (this.statusTimer) clearTimeout(this.statusTimer);
709
+ if (this.orderTimer) clearTimeout(this.orderTimer);
462
710
  },
463
711
  onJfbUpdate(...data) {
464
712
  console.log('event.onJfbUpdate', data)
@@ -477,9 +725,9 @@
477
725
  .jfb-base-consump-code {
478
726
  &__body {
479
727
  .content-box {
480
- margin: 180rpx 30rpx 0 30rpx;
728
+ margin: 158rpx 30rpx 0 30rpx;
481
729
  background-color: #fff;
482
- padding: 90rpx 40rpx 60rpx 40rpx;
730
+ padding: 81rpx 32rpx 32rpx 32rpx;
483
731
  border-radius: 24rpx;
484
732
  position: relative;
485
733
  display: flex;
@@ -488,11 +736,11 @@
488
736
  justify-content: center;
489
737
 
490
738
  .logo-box {
491
- width: 130rpx;
492
- height: 130rpx;
739
+ width: 154rpx;
740
+ height: 154rpx;
493
741
  background-color: #fff;
494
742
  position: absolute;
495
- top: -65rpx;
743
+ top: -100rpx;
496
744
  left: 50%;
497
745
  transform: translate(-50%, 0);
498
746
  display: flex;
@@ -501,8 +749,8 @@
501
749
  border-radius: 50%;
502
750
 
503
751
  .logo {
504
- width: 120rpx;
505
- height: 120rpx;
752
+ width: 144rpx;
753
+ height: 144rpx;
506
754
  border-radius: 50%;
507
755
  }
508
756
  }
@@ -511,10 +759,10 @@
511
759
 
512
760
  .shop {
513
761
  border: 2rpx solid #E6E6E6;
514
- padding: 32rpx 40rpx;
762
+ padding: 30rpx 40rpx;
515
763
  border-radius: 24rpx;
516
764
  color: #fff;
517
- font-size: 28rpx;
765
+ font-size: 26rpx;
518
766
  display: flex;
519
767
  justify-content: space-between;
520
768
  align-items: center;
@@ -526,7 +774,7 @@
526
774
  .bar-code {
527
775
  height: 120rpx;
528
776
  width: 600rpx;
529
- margin: 40rpx 0 16rpx 0;
777
+ margin: 38rpx 0 0 0;
530
778
 
531
779
  &-text {
532
780
  color: #999999;
@@ -536,19 +784,23 @@
536
784
  }
537
785
 
538
786
  .qrcode {
539
- width: 300rpx;
540
- height: 300rpx;
541
- margin: 50rpx 0 20rpx 0;
787
+ width: 272rpx;
788
+ height: 272rpx;
789
+ margin: 54rpx auto 18rpx auto;
790
+ display: flex;
791
+ justify-content: center;
792
+ align-items: center;
793
+
542
794
  }
543
795
 
544
796
  .code-refresh {
545
797
  color: #999;
546
798
  font-size: 24rpx;
547
- margin-bottom: 40rpx;
799
+ margin-bottom: 36rpx;
548
800
  border-bottom: 2rpx dashed #E5E5E5;
549
801
  width: 95%;
550
802
  text-align: center;
551
- padding-bottom: 40rpx;
803
+ padding-bottom: 36rpx;
552
804
  }
553
805
 
554
806
  .vip {
@@ -565,9 +817,9 @@
565
817
  &-left {
566
818
  background: linear-gradient(90deg, #665646 0%, #473D34 52.05%, #2B2623 100%);
567
819
  color: #EFD5C3;
568
- font-size: 24rpx;
820
+ font-size: 22rpx;
569
821
  border-radius: 74rpx 0rpx 0rpx 74rpx;
570
- padding: 20rpx 20rpx 20rpx 24rpx;
822
+ padding: 18rpx 18rpx 18rpx 22rpx;
571
823
  display: flex;
572
824
  align-items: center;
573
825
  justify-content: center;
@@ -576,16 +828,16 @@
576
828
  &-right {
577
829
  background: linear-gradient(270deg, #FCD6B8 0%, #FCEDD7 100%);
578
830
  border-radius: 0px 80rpx 80rpx 0px;
579
- padding: 6rpx 36rpx;
580
- font-size: 24rpx;
831
+ padding: 5rpx 32rpx;
832
+ font-size: 22rpx;
581
833
  display: flex;
582
834
  align-items: center;
583
835
  justify-content: center;
584
836
 
585
- &>span {
837
+ &>text {
586
838
  color: #D10300;
587
839
  font-weight: 700;
588
- font-size: 48rpx;
840
+ font-size: 43rpx;
589
841
  margin-right: 5rpx;
590
842
  }
591
843
  }
@@ -597,7 +849,7 @@
597
849
  font-size: 28rpx;
598
850
  align-items: center;
599
851
 
600
- &>span {
852
+ &>text {
601
853
  margin: 0 8rpx;
602
854
  }
603
855
  }
@@ -614,7 +866,7 @@
614
866
  align-items: center;
615
867
  justify-content: center;
616
868
  background: url('https://img-b.jufubao.cn/uploads/20250407/11e6e600ab4395c44d42489bc7b25034.jpg') no-repeat;
617
- background-size: contain;
869
+ background-size: 100% 100%;
618
870
 
619
871
  &-title {
620
872
  font-size: 26rpx;
@@ -629,6 +881,58 @@
629
881
  }
630
882
  }
631
883
  }
884
+
885
+ .verification {
886
+ &-item {
887
+ display: flex;
888
+ margin-top: 60rpx;
889
+
890
+ &-label {
891
+ color: #999999;
892
+ font-size: 30rpx;
893
+ margin-right: 64rpx;
894
+ }
895
+
896
+ &-tags {
897
+ display: flex;
898
+ align-items: flex-start;
899
+
900
+ &>view {
901
+ margin-right: 32rpx;
902
+ font-size: 28rpx;
903
+ border-radius: 12rpx;
904
+ padding: 16rpx 24rpx;
905
+ border: 2rpx solid #EEEEEE;
906
+ color: #CCCCCC;
907
+ }
908
+
909
+ }
910
+
911
+ &-input {
912
+ display: flex;
913
+ flex-direction: column;
914
+ text-align: center;
915
+ font-size: 28rpx;
916
+
917
+ &>input {
918
+ border-radius: 10rpx;
919
+ border: 2rpx solid #EEEEEE;
920
+ padding: 20rpx 24rpx;
921
+ }
922
+
923
+ .tip {
924
+ font-size: 18rpx;
925
+ margin-top: 12rpx;
926
+ }
927
+ }
928
+ }
929
+ }
930
+
931
+ .nodata {
932
+ color: #f00;
933
+ line-height: unit(68, rpx);
934
+ font-size: unit(28, rpx);
935
+ }
632
936
  }
633
937
 
634
938
  .dialog-title {