jufubao-base 1.0.145-beta11 → 1.0.145-beta13

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.145-beta11",
3
+ "version": "1.0.145-beta13",
4
4
  "private": false,
5
5
  "description": "聚福宝业务组件基础插件包",
6
6
  "main": "index.js",
@@ -0,0 +1,78 @@
1
+ 'use strict';
2
+
3
+ const ICB_SDK = require('@/common/paysdk/ICB.SDK');
4
+
5
+ class ICB {
6
+ constructor() {
7
+ this.ICB_APP = ICB_SDK;
8
+ this.fail(false)
9
+ }
10
+
11
+ /**
12
+ * @description 获取版本号
13
+ * @return {*}
14
+ */
15
+ version(){
16
+ return this.ICB_APP.elifeVer()
17
+ }
18
+
19
+ fail(notExc=true){
20
+ // if(typeof window.WebViewJavascriptBridge === "undefined"){
21
+ // console.warn('初始化工商银行e生活SDK失败');
22
+ // if(notExc) throw new Error('初始化工商银行e生活SDK失败');
23
+ // }
24
+ }
25
+
26
+ /**
27
+ * @description 获取用户登录方式
28
+ * @param callback {Function} 成功回调函数
29
+ */
30
+ login(callback){
31
+ this.fail();
32
+
33
+ this.ICB_APP.merLogin(callback)
34
+ }
35
+
36
+ /**
37
+ * @description 第三方显示或隐藏tabBar
38
+ * @param show 默认值:true
39
+ */
40
+ showBar(show = true){
41
+ this.fail();
42
+ this.ICB_APP.showToolBar(show);
43
+ }
44
+
45
+ /**
46
+ * @description 第三方返回APP
47
+ */
48
+ back(){
49
+ this.fail();
50
+ this.ICB_APP.back();
51
+ }
52
+
53
+ /**
54
+ * @description 拨打电话
55
+ * @param tel 电话号码
56
+ */
57
+ callPhone(tel){
58
+ if(!tel){
59
+ console.warn(`拨打电话号码不能为空,电话号码:${tel}`);
60
+ throw new Error('拨打电话号码不能为空');
61
+ }
62
+ this.fail();
63
+ this.ICB_APP.callPhoneNumber(tel);
64
+ }
65
+
66
+ /**
67
+ * @description 是否隐藏第三方的头
68
+ * @param show
69
+ */
70
+ showThirdNavigation(show = true){
71
+ this.fail();
72
+ if(show) this.ICB_APP.showThirdWebviewNavigation()
73
+ else this.ICB_APP.hideThirdWebviewNavigation()
74
+ }
75
+
76
+ }
77
+
78
+ module.exports = new ICB();
@@ -394,7 +394,7 @@ export default {
394
394
  flex: none;
395
395
  }
396
396
  }
397
- & > :last-child{
397
+ & > view:last-child{
398
398
  .skeleton-wrap &{
399
399
  .skeleton-item(300rpx);
400
400
  }
@@ -18,7 +18,7 @@
18
18
  <!-- #endif -->
19
19
  <view class="jfb-base-card__body">
20
20
  <view class="jfb-base-card__body-cut">
21
- <template v-if="isWx">
21
+ <template v-if="isQrCode">
22
22
  <view
23
23
  class="jfb-base-card__body-cut-item"
24
24
  @click="handleScan"
@@ -226,10 +226,11 @@ import JfbBaseCardMixin from "./JfbBaseCardMixin";
226
226
  import componentsMixins from "@/mixins/componentsMixins";
227
227
  import extsMixins from "@/mixins/extsMixins";
228
228
  import { mapState, mapActions } from "vuex";
229
- import { getContainerPropsValue, isWechat } from "@/utils/xd.base";
229
+ import { getContainerPropsValue, isWechat,isQrCode } from "@/utils/xd.base";
230
230
  import XdNoticeBar from "@/components/XdNoticeBar/XdNoticeBar";
231
231
  import { Base64 } from "js-base64";
232
232
  const Color = require("color");
233
+
233
234
  export default {
234
235
  name: "JfbBaseCard",
235
236
  components: {
@@ -293,7 +294,7 @@ export default {
293
294
  isPreview: false,
294
295
  noticeStatus: false,
295
296
 
296
- isWx: true,
297
+ isQrCode: true,
297
298
  cutIndex: 1,
298
299
  tabIndex: 1,
299
300
  offsetIndex:0,//第几页
@@ -340,10 +341,9 @@ export default {
340
341
  this.init(this.container);
341
342
  this.noticeBackgroundColor = Color(this.warningColor).alpha(0.2).toString();
342
343
  this.isPreview = this.$configProject.isPreview;
344
+ this.isQrCode = isQrCode(this);
343
345
 
344
346
  //#ifdef H5
345
- this.isWx = this.isPreview || isWechat();
346
-
347
347
  if (!this.$configProject.isPreview) {
348
348
  jfbRootExec("getH5WxAuthorize", {
349
349
  vm: this,
@@ -442,7 +442,7 @@ export default {
442
442
  uni.scanCode({
443
443
  scanType: ["qrCode"],
444
444
  success: (res) => {
445
- let path = this.getUrlCallback(`${this.confirmUrl}?qrcode=${encodeURIComponent(res.resultStr)}`)
445
+ let path = this.getUrlCallback(`${this.confirmUrl}?qrcode=${encodeURIComponent(res.result)}`)
446
446
  this.$xdUniHelper.navigateTo({
447
447
  url: path,
448
448
  });
@@ -21,6 +21,7 @@
21
21
  <view
22
22
  class="scan_icon"
23
23
  @click="doScanCode"
24
+ v-if="isQrCode"
24
25
  >
25
26
  <xd-font-icon icon="iconsaoma1"></xd-font-icon>
26
27
  </view>
@@ -58,7 +59,7 @@
58
59
  import XdButton from "@/components/XdButton/XdButton"
59
60
  import { jfbRootExec } from "@/utils/xd.event";
60
61
  import JfbBaseCardBindV2Mixin from "./JfbBaseCardBindV2Mixin";
61
- import { getContainerPropsValue } from "@/utils/xd.base";
62
+ import { getContainerPropsValue,isQrCode } from "@/utils/xd.base";
62
63
  import componentsMixins from "@/mixins/componentsMixins";
63
64
  import extsMixins from "@/mixins/extsMixins";
64
65
  import { mapState } from "vuex"
@@ -91,6 +92,7 @@
91
92
  validImageAPIUrl: "",
92
93
  backUrl: "",
93
94
  inCallbackUrlOrg:'',//是否带有回调地址
95
+ isQrCode: false,
94
96
  }
95
97
  },
96
98
  watch: {
@@ -99,6 +101,7 @@
99
101
  }
100
102
  },
101
103
  created() {
104
+ this.isQrCode = isQrCode(this)
102
105
  this.init(this.container);
103
106
  this.validImageAPIUrl = this.brandInfo['api_host'] + '/common/v1/valid_code/image/show'
104
107
 
@@ -176,7 +179,6 @@
176
179
  success: res => {
177
180
  let result = res.resultStr;
178
181
  this.cardForm.card_qrcode = result;
179
-
180
182
  jfbRootExec("qrCardBind", {
181
183
  vm: this,
182
184
  data: {
@@ -18,7 +18,7 @@
18
18
  <!-- #endif -->
19
19
  <view class="jfb-base-card-entry__body">
20
20
  <view class="jfb-base-card-entry__body-cut">
21
- <template v-if="isWx">
21
+ <template v-if="isQrCode">
22
22
  <view
23
23
  class="jfb-base-card-entry__body-cut-item"
24
24
  @click="handleScan"
@@ -383,7 +383,7 @@ import extsMixins from "@/mixins/extsMixins";
383
383
  import colorCardMixins from "@/mixins/colorCardMixins";
384
384
  import cardListMixins from "@/mixins/cardListMixins";
385
385
  import { mapState, mapActions } from "vuex";
386
- import { getContainerPropsValue, isWechat } from "@/utils/xd.base";
386
+ import { getContainerPropsValue, isWechat,isQrCode } from "@/utils/xd.base";
387
387
  import XdNoticeBar from "@/components/XdNoticeBar/XdNoticeBar";
388
388
  import { Base64 } from "js-base64";
389
389
  const Color = require("color");
@@ -434,7 +434,6 @@ export default {
434
434
  noticeStatus: false,
435
435
  loadingCardList: true,
436
436
 
437
- isWx: true,
438
437
  cutIndex: 1,
439
438
  tabIndex: 1,
440
439
  isBack: null, //是否使用返回键
@@ -454,6 +453,7 @@ export default {
454
453
  showDisabled: 'Y',
455
454
  showCardList: false,
456
455
  showIndex:false,
456
+ isQrCode: false,
457
457
 
458
458
  //活动
459
459
  dialogEvent: false,
@@ -466,7 +466,7 @@ export default {
466
466
  this.isPreview = this.$configProject.isPreview;
467
467
 
468
468
  //#ifdef H5
469
- this.isWx = this.isPreview || isWechat();
469
+ this.isQrCode = isQrCode(this);
470
470
  if (!this.$configProject.isPreview) {
471
471
  jfbRootExec("getH5WxAuthorize", {
472
472
  vm: this,
@@ -171,7 +171,7 @@ export default {
171
171
  return this.fixedStyle({ height: 0, zIndex: 111 });
172
172
  },
173
173
  isShowBalance(){
174
- if(this.info.is_expired === "Y"){
174
+ if(this.info && this.info.is_expired === "Y"){
175
175
  return this.is_show_balance === "Y";
176
176
  }
177
177
  return true;
@@ -492,6 +492,7 @@ export default {
492
492
  height: unit(320, rpx);
493
493
  display: flex;
494
494
  align-items: center;
495
+ justify-content: center;
495
496
  }
496
497
  }
497
498
  }
@@ -23,6 +23,18 @@ module.exports = [
23
23
  phone_number_collect_url: ['收集手机号地址', 'String', '是'],
24
24
  }
25
25
  },
26
+ {
27
+ mapFnName: 'userBaseLoginIcb',
28
+ title: '工行e生活登录',
29
+ path: '/passport/v1/user/login-icbc',
30
+ isRule: false,
31
+ data: {
32
+ encrypted_params: ['用户登录信息', 'String', '必选'],
33
+ provider_id: ['登录方式id', 'Number', '必选'],
34
+ },
35
+ isConsole: true,
36
+ disabled: true,
37
+ },
26
38
  {
27
39
  mapFnName: 'phoneLogin',
28
40
  title: "手机号登录",
@@ -539,6 +539,18 @@ export default {
539
539
  },
540
540
  inline: false,
541
541
  },
542
-
542
+ {
543
+ label: '小程序手机号授权登录地址:', //label
544
+ ele: 'xd-select-pages-path', //package 名称
545
+ valueKey: 'mpAuthPhoneUrl', //form[valueKey]
546
+ groupKey: 'advanced',
547
+ placeholder: '请选择跳转地址',
548
+ value: null,
549
+ setting: {
550
+ router: XdBus.getParentApi('getPagesTree'),
551
+ },
552
+ notice: "首次快捷登录,将自动跳转至该地址",
553
+ inline: false,
554
+ },
543
555
  ]
544
556
  }
@@ -30,8 +30,7 @@
30
30
  type="primary"
31
31
  radius="20rpx"
32
32
  @click="doLoginAuth"
33
- >快捷登录</xd-button
34
- >
33
+ >{{h5FastLoginName}}</xd-button>
35
34
  <!-- #endif -->
36
35
  <!--#ifdef MP-->
37
36
  <xd-button
@@ -50,8 +49,7 @@
50
49
  type="primary"
51
50
  radius="20rpx"
52
51
  @click="doLoginAccount"
53
- >账号登录
54
- </xd-button>
52
+ >账号登录</xd-button>
55
53
  </view>
56
54
 
57
55
  <view class="protocol">
@@ -98,7 +96,7 @@
98
96
  :border="true"
99
97
  paddingBetween="40"
100
98
  >
101
- <xd-form-item class="form-item" label="手机号" content-align="left">
99
+ <xd-form-item class="form-item" label="手机号" :labelWidth="160" content-align="left">
102
100
  <xd-form-input
103
101
  v-model="accountForm.phone_number"
104
102
  placeholder="请输入11位手机号"
@@ -107,6 +105,7 @@
107
105
  <xd-form-item
108
106
  v-if="accountLoginType === 'phone'"
109
107
  label="验证码"
108
+ :labelWidth="160"
110
109
  content-align="left"
111
110
  >
112
111
  <view class="flex align-center">
@@ -125,6 +124,7 @@
125
124
  <xd-form-item
126
125
  v-if="accountLoginType === 'pwd'"
127
126
  label="密码"
127
+ :labelWidth="160"
128
128
  content-align="left"
129
129
  >
130
130
  <xd-form-input
@@ -217,6 +217,7 @@ import {
217
217
  getAllPath,
218
218
  getDomainAllPath,
219
219
  getLocalJumpOutSiteCallbackUrl,
220
+ isThirdLogin
220
221
  } from "@/utils/xd.base";
221
222
 
222
223
  export default {
@@ -236,6 +237,7 @@ export default {
236
237
  //体验模式
237
238
  dialogPreview: false,
238
239
  previewAccout: '',
240
+ h5FastLoginName:'快捷登录',
239
241
 
240
242
  showStep: 1,
241
243
  panel_1_checked: "",
@@ -283,10 +285,11 @@ export default {
283
285
  isDebugPreview: false,
284
286
 
285
287
  isFastLoginStatus: false,
288
+ mpAuthPhoneUrl: "",
286
289
  };
287
290
  },
288
291
  computed: {
289
- ...mapState(["jfbAuthorize","siteInfo"]),
292
+ ...mapState(["jfbAuthorize","siteInfo",'loginParams']),
290
293
  panelIsChecked() {
291
294
  return this.panel_1_checked.includes(1);
292
295
  },
@@ -316,7 +319,7 @@ export default {
316
319
  this.init(this.container);
317
320
  this.base = this.jfbAuthorize.getBasePath(this);
318
321
  this.site_logo = getServiceUrl(this.projectAttr["site_logo"]);
319
- this.$xdLog.setProject('JfbBaseLogin', 'JfbBaseLogin.create.done')
322
+ this.$xdLog.setProject('JfbBaseLogin', 'JfbBaseLogin.create.done');
320
323
  },
321
324
 
322
325
  methods: {
@@ -362,35 +365,20 @@ export default {
362
365
 
363
366
 
364
367
  onJfbLoad(options) {
368
+ this.$xdLog.setProject('JfbBaseLogin', 'JfbBaseLogin.onJfbLoad.start')
365
369
  this.redirect_url = options.redirect_url ? Base64.decode(options.redirect_url): '';
366
370
  this.isDebugPreview = options['x-test'] === 'jfb-tiyan';
367
371
  // #ifdef MP-WEIXIN
368
372
  this.authWxMpListProviders();
369
373
  // #endif
370
- this.$xdLog.setProject('JfbBaseLogin', 'JfbBaseLogin.onJfbLoad.start')
374
+
371
375
  // #ifdef H5
372
- try{
373
- this.authH5ListProviders();
374
- }catch (error) {
376
+ try{ this.authH5ListProviders();}
377
+ catch (error) {
375
378
  this.$xdLog.setProject('JfbBaseLogin', 'JfbBaseLogin.onJfbLoad.error');
376
379
  this.$xdLog.setARMSError(error);
377
380
  }
378
381
  //#endif
379
-
380
- // if (options.isDebug === "1") {
381
- // getAllPath(this, "main/play/index");
382
- // getDomainAllPath(this, "main/play/index");
383
- // getLocalJumpOutSiteCallbackUrl(
384
- // this,
385
- // { customParams: 1 },
386
- // false,
387
- // "main/play/index"
388
- // );
389
- //
390
- // getAllPath(this);
391
- // getDomainAllPath(this);
392
- // getLocalJumpOutSiteCallbackUrl(this, { customParams: 1 }, false);
393
- // }
394
382
  },
395
383
 
396
384
  /**
@@ -415,6 +403,7 @@ export default {
415
403
  this.phone_number_collect_url = getContainerPropsValue(value, "content.phone_number_collect_url", {value: ''}).value;
416
404
  this.forget_pwd_url = getContainerPropsValue(value, "content.forget_pwd_url", {value: ''}).value;
417
405
  this.error_callback_url = getContainerPropsValue(value, "content.error_url", {value: ''}).value;
406
+ this.mpAuthPhoneUrl = getContainerPropsValue(value, "content.mpAuthPhoneUrl", {value: '/system/login/wxauthorize'}).value;
418
407
  this.isPreview = getContainerPropsValue(value, "content.isPreview", 'N');
419
408
  },
420
409
 
@@ -425,6 +414,11 @@ export default {
425
414
  if (res.quick_enabled) {
426
415
  this.hasAuthLogin = true;
427
416
  this.quickLogin = res.quick;
417
+
418
+ //工行处理
419
+ if(this.quickLogin.login_platform_code === 'icbc') {
420
+ this.h5FastLoginName = '工银e生活登录'
421
+ }
428
422
  }
429
423
  if (res.others.length > 0) {
430
424
  this.hasAccountLogin = true;
@@ -482,23 +476,31 @@ export default {
482
476
  },
483
477
  })
484
478
  .then((res) => {
479
+ let { redirect_url, callback_url } = this;
480
+ if (redirect_url)
481
+ redirect_url = redirect_url;
482
+ let url = Base64.encodeURI(
483
+ redirect_url || callback_url || this.settings.index
484
+ );
485
485
  //需要授权操作
486
486
  if (res.auth_code) {
487
- let { redirect_url, callback_url } = this;
488
- if (redirect_url)
489
- redirect_url = redirect_url;
490
- let url = Base64.encodeURI(
491
- redirect_url || callback_url || this.settings.index
492
- );
493
487
  this.$xdUniHelper.navigateTo({
494
- url: `/system/login/wxauthorize?auth_code=${res.auth_code}&provider_id=${this.quickLogin.provider_id}&url=${url}`,
488
+ url: `${this.mpAuthPhoneUrl}?auth_code=${res.auth_code}&provider_id=${this.quickLogin.provider_id}&url=${url}`,
495
489
  });
496
490
  }
497
491
  //无需授权直接进行登录
498
492
  else {
493
+
499
494
  if (this.jfbAuthorize !== null) {
500
495
  this.jfbAuthorize.setAllToken(res["login_info"], () => {
501
- this.toHomeAfterLogin();
496
+ //需要收集手机号码
497
+ if(res.is_collect_phone_number === 'Y'){
498
+ this.$xdUniHelper.navigateTo({
499
+ url: `${this.mpAuthPhoneUrl}?provider_id=${this.quickLogin.provider_id}&url=${url}`,
500
+ });
501
+ }else{
502
+ this.toHomeAfterLogin();
503
+ }
502
504
  });
503
505
  }
504
506
  }
@@ -550,12 +552,12 @@ export default {
550
552
  };
551
553
 
552
554
  this.$xdLog.setProject('JfbBaseLogin', 'JfbBaseLogin.onJfbLoad.loading..');
553
-
554
555
  jfbRootExec("listSiteProvider", {
555
556
  vm: this,
556
557
  data: params,
557
558
  })
558
559
  .then((res) => {
560
+ console.log('listSiteProvider',res)
559
561
  this.handleAuthResult(res);
560
562
  })
561
563
  .catch((error) => {
@@ -603,12 +605,59 @@ export default {
603
605
  setAccountLoginType(type) {
604
606
  this.accountLoginType = type;
605
607
  },
608
+
609
+ /**
610
+ * @description 工行e生活处理
611
+ */
612
+ icbcLogin(){
613
+ //无三方用户登录信息
614
+ if(!this.loginParams) {
615
+ this.status = false;
616
+ console.warn(`无三方用户登录信息`);
617
+ throw new Error('无三方用户登录信息');
618
+ }
619
+
620
+ console.warn(`LoginParams.use: ${this.loginParams}`)
621
+ this.$xdShowLoading({});
622
+ jfbRootExec("userBaseLoginIcb", {
623
+ vm: this,
624
+ data:{
625
+ encrypted_params: this.loginParams,
626
+ provider_id: this.quickLogin.provider_id
627
+ },
628
+ })
629
+ .then(res=>{
630
+ this.$xdHideLoading();
631
+ this.$xdUniHelper.redirectTo({
632
+ url: this.redirect_url || this.$settings.index,
633
+ },false, true);
634
+ })
635
+ .catch(err=>{
636
+ this.$xdHideLoading();
637
+ console.error(err);
638
+ })
639
+ },
640
+
606
641
  //h5授权登录
607
642
  doLoginAuth() {
608
643
  if(this.isFastLoginStatus) return;
609
644
  this.isFastLoginStatus = true;
610
- const { provider_id, login_platform_code, is_redirect, redirect_url } = this.quickLogin;
611
- location.href = redirect_url;
645
+
646
+ //工行处理
647
+ if(this.quickLogin && this.quickLogin.login_platform_code === 'icbc'){
648
+ window['ICBC_SDK']['merLogin']((res)=>{
649
+ console.log('ICBC_SDK',res);
650
+ this.icbcLogin(res)
651
+ })
652
+ return;
653
+ }
654
+
655
+ //跳转到第三方进行授权
656
+ if(this.quickLogin.is_redirect === 'Y') {
657
+ const { redirect_url } = this.quickLogin;
658
+ location.href = redirect_url;
659
+ }
660
+
612
661
  },
613
662
 
614
663
  //小程序授权登录
@@ -707,6 +756,7 @@ export default {
707
756
  });
708
757
  }
709
758
  },
759
+
710
760
  toHomeAfterLogin() {
711
761
  let { redirect_url, callback_url } = this;
712
762
  if (redirect_url) redirect_url = redirect_url;
@@ -767,7 +817,7 @@ export default {
767
817
  padding: 40rpx 70rpx;
768
818
  }
769
819
  .form-item {
770
- /deep/ .uni-forms-item {
820
+ ::v-deep .uni-forms-item {
771
821
  padding-left: unit(30rpx) !important;
772
822
  }
773
823
  }
@@ -777,6 +827,12 @@ export default {
777
827
  margin-right: unit(20,rpx);
778
828
  }
779
829
  .panel-login-auth {
830
+ /deep/ .uni-forms-item__label {
831
+ .label-text {
832
+ font-size: 26rpx;
833
+ color: #a6a6a6;
834
+ }
835
+ }
780
836
  .logo-wrap {
781
837
  text-align: center;
782
838
  margin: unit(165,rpx) 0;
@@ -239,8 +239,8 @@
239
239
  :key="Dindex"
240
240
  class="jfb-base-order-detail__body-delivery-bottom-item"
241
241
  >
242
- <view :style="{width: '130rpx'}">
243
- <text v-html="Ditem.label"></text>
242
+ <view style="width: 130rpx;display: flex;">
243
+ <view v-html="Ditem.label"></view>
244
244
  <text v-if="Ditem.label">:</text>
245
245
  </view>
246
246
  <view v-html="Ditem.value"></view>
@@ -563,10 +563,10 @@
563
563
  class="jfb-base-order-detail__body-order"
564
564
  >
565
565
  <view :style="{ fontWeight: item.style }">
566
- <view
567
- ><text v-html="item.label"></text
568
- ><text v-if="item.label">:</text></view
569
- >
566
+ <view style="display: flex;">
567
+ <view v-html="item.label"></view>
568
+ <text v-if="item.label">:</text>
569
+ </view>
570
570
  <view v-html="item.value"></view>
571
571
  </view>
572
572
  <view
@@ -96,7 +96,7 @@
96
96
  <view
97
97
  class="jfb-base-order-list__body-order-item-content"
98
98
  v-for="(Sitem, Sindex) in item.products"
99
- :key="getKey(Sitem.product_id,Sindex)"
99
+ :key="Sitem.key"
100
100
  v-if="(item['isOpen'] === false && Sindex < showLen) || item['isOpen']">
101
101
  <image
102
102
  :src="Sitem.product_thumb"
@@ -175,7 +175,7 @@
175
175
  class="jfb-base-order-list__body-order-item-pay"
176
176
  v-if="item.buttons.length"
177
177
  >
178
- <view v-for="(btn,index) in item.buttons" :key="btn.action+index">
178
+ <view v-for="(btn,index) in item.buttons" :key="btn.key">
179
179
  <xd-button
180
180
  :type="getBtnType(btn.action)"
181
181
  size="mini"
@@ -457,12 +457,17 @@ export default {
457
457
  console.log(res.list, "list");
458
458
  let list = res.list.map((item) => {
459
459
  item["isOpen"] = false;
460
- item.products = item.products.map((prod) => {
460
+ item.products = item.products.map((prod, i) => {
461
+ prod['key'] = prod.product_id + i;
461
462
  prod["product_thumb"] = prod.product_thumb
462
463
  ? getServiceUrl(prod.product_thumb)
463
464
  : "";
464
465
  return prod;
465
466
  });
467
+ item.buttons = item.buttons.map((btn, i) => {
468
+ btn["key"] = btn.action + i;
469
+ return btn;
470
+ })
466
471
  item["created_time_text"] = this.$xdUniHelper.getDate(
467
472
  item["created_time"] * 1000
468
473
  ).fullTime;
@@ -23,7 +23,7 @@
23
23
  borderRadius: bgRadius + 'rpx'
24
24
  }"
25
25
  >
26
- <four-screen :config="getConfig" :content="info"></four-screen>
26
+ <four-screen style="width: 100%;" :config="getConfig" :content="info"></four-screen>
27
27
  </view>
28
28
 
29
29
  </view>
@@ -17,16 +17,24 @@
17
17
  </view>
18
18
  <!-- #endif -->
19
19
  <view class="jfb-base-search__body" :style="{height:layoutInfo.bodyMinHeightRpx+'rpx'}" v-if="layoutInfo!==null">
20
+ <!--#ifdef H5-->
20
21
  <xd-baidu-search
21
22
  @onSelect="handleSelect"
22
23
  ></xd-baidu-search>
24
+ <!-- #endif -->
25
+
26
+ <!-- #ifdef MP-WEIXIN -->
27
+ base Search
28
+ <!-- #endif -->
23
29
  </view>
24
30
  </view>
25
31
  </template>
26
32
 
27
33
  <script>
28
34
  import XdFontIcon from "@/components/XdFontIcon/XdFontIcon";
35
+ // #ifdef H5
29
36
  import XdBaiduSearch from "./XdBaiduSearch";
37
+ // #endif
30
38
  import {jfbRootExec} from "@/utils/xd.event";
31
39
  import JfbBaseSearchMixin from "./JfbBaseSearchMixin";
32
40
  import componentsMixins from "@/mixins/componentsMixins";
@@ -37,7 +45,9 @@
37
45
  name: "JfbBaseSearch",
38
46
  components: {
39
47
  XdFontIcon,
40
- XdBaiduSearch
48
+ // #ifdef H5
49
+ XdBaiduSearch,
50
+ // #endif
41
51
  },
42
52
  mixins: [componentsMixins,extsMixins,JfbBaseSearchMixin],
43
53
  data() {
@@ -18,6 +18,19 @@ module.exports = [
18
18
  isConsole: true,
19
19
  disable: true,
20
20
  },
21
+ {
22
+ mapFnName: 'userPhoneCollect',
23
+ title: "收集手机号",
24
+ path: "/passport/v1/user/collect-phone-number",
25
+ isRule: false,
26
+ data: {
27
+ phone_number: ['手机号', 'String', null], //手机号
28
+ verification_code: ['手机验证码', 'String', null],
29
+ provider_id: ['登录方式id', 'Number', '必选'],
30
+ },
31
+ isConsole: true,
32
+ disable: true,
33
+ },
21
34
  {
22
35
  mapFnName: "getContentInfo",
23
36
  title: "获取内容列表",
@@ -19,6 +19,26 @@ export default {
19
19
  placeholder: '请选择文字颜色',
20
20
  classNmae: 'input80',
21
21
  },
22
+ {
23
+ abel: '授权收集手机号按钮文案:',
24
+ ele: 'el-input',
25
+ type: 'text',
26
+ valueKey: 'btnCollectPhoneText',
27
+ groupKey:'content',
28
+ value: data.btnCollectPhoneText || "授权手机号",
29
+ placeholder: '请输入授权收集手机号按钮文案',
30
+ className: 'input80',
31
+ },
32
+ {
33
+ abel: '授权登录按钮文案:',
34
+ ele: 'el-input',
35
+ type: 'text',
36
+ valueKey: 'btnLoginText',
37
+ groupKey:'content',
38
+ value: data.btnLoginText || "微信授权登录",
39
+ placeholder: '请输入授权按钮文案',
40
+ className: 'input80',
41
+ },
22
42
  {
23
43
  label: '授权按钮下面文案:',
24
44
  ele: 'el-input',
@@ -24,6 +24,7 @@
24
24
  }"
25
25
  >
26
26
  </view>
27
+ <view v-if="!auth_code" class="app-body__jump" @click="doJump">跳过</view>
27
28
  <view class="app-body__bottom">
28
29
  <view class="app-body__bottom-btn">
29
30
  <button
@@ -35,7 +36,7 @@
35
36
  boxShadow: '0 5rpx 10rpx ' + mainColor
36
37
  }"
37
38
  @getphonenumber="decryptPhoneNumber"
38
- >微信授权登录</button>
39
+ >{{ authBtnText }}</button>
39
40
  <button
40
41
  v-else
41
42
  @click="decryptPhoneNumber()"
@@ -43,7 +44,7 @@
43
44
  background: mainColor,
44
45
  boxShadow: '0 5rpx 10rpx ' + mainColor
45
46
  }"
46
- >微信授权登录</button>
47
+ >{{ authBtnText }}</button>
47
48
  </view>
48
49
  <view class="app-body__bottom-tips" v-if="notice" v-html="notice" :style="{color: textColor}"></view>
49
50
  <view class="app-body__bottom-policy">
@@ -87,7 +88,7 @@
87
88
  return {
88
89
  isPreview: false,
89
90
  selectPolicy: false,
90
- auth_code: null,
91
+ auth_code: null, //有值说明未关联
91
92
  provider_id:null,
92
93
  nextUrl: null,
93
94
  showDialog: false,
@@ -98,11 +99,16 @@
98
99
  //面板
99
100
  bgImage: '', //背景图片
100
101
  notice: '', //授权按钮下面文案
101
- textColor: '#fff'
102
+ textColor: '#fff',
103
+ btnLoginText: "", //授权按钮文案
104
+ btnCollectPhoneText: "", //授权收集手机号按钮文案
102
105
  }
103
106
  },
104
107
  computed:{
105
108
  ...mapState(['jfbAuthorize']),
109
+ authBtnText(){
110
+ return this.auth_code ? this.btnLoginText : this.btnCollectPhoneText;
111
+ }
106
112
  },
107
113
  watch: {
108
114
  container(value) {
@@ -127,6 +133,14 @@
127
133
  this.selectPolicy = !this.selectPolicy;
128
134
  },
129
135
 
136
+ doJump(){
137
+ if(!this.auth_code){
138
+ this.$xdUniHelper.redirectTo({
139
+ url: this.nextUrl
140
+ })
141
+ }
142
+ },
143
+
130
144
  decryptPhoneNumber(e) {
131
145
  if (e === undefined) {
132
146
  this.$xdConfirm({
@@ -146,6 +160,18 @@
146
160
  let {iv, encryptedData} = e.detail;
147
161
  let raw_data = JSON.stringify({iv, encryptedData});
148
162
 
163
+ //auth_code 临时授权码,走授权登录。 否则走授权收集手机号
164
+ if(this.auth_code){
165
+ this.p_userPhoneWxLogin(raw_data)
166
+ }else{
167
+ this.p_userPhoneCollect(raw_data)
168
+ }
169
+ },
170
+
171
+ /**
172
+ * @description 授权登录
173
+ */
174
+ p_userPhoneWxLogin(raw_data){
149
175
  jfbRootExec("userPhoneWxLogin", {
150
176
  vm: this,
151
177
  data: {
@@ -183,9 +209,30 @@
183
209
  zIndex: this.isPreview ? 2000 : 1400
184
210
  });
185
211
  })
186
-
187
212
  },
188
213
 
214
+ /**
215
+ * @description 授权收集手机号
216
+ */
217
+ p_userPhoneCollect(raw_data){
218
+ uni.login({
219
+ provider: "weixin",
220
+ success: (loginRes) => {
221
+ jfbRootExec("userPhoneCollect", {
222
+ vm: this,
223
+ data: {
224
+ raw_data,
225
+ third_auth_code: loginRes.code,
226
+ provider_id: this.provider_id,
227
+ }
228
+ }).then(res => {
229
+ this.$xdUniHelper.redirectTo({
230
+ url: this.nextUrl
231
+ })
232
+ })
233
+ }
234
+ })
235
+ },
189
236
 
190
237
  /**
191
238
  * @description 监听事件变化
@@ -195,6 +242,8 @@
195
242
  let bgImage = getContainerPropsValue(container, 'content.bgImage', {});
196
243
  if(bgImage.url) this.bgImage = getServiceUrl(bgImage.url);
197
244
  this.notice = getContainerPropsValue(container, 'content.notice', '');
245
+ this.btnLoginText = getContainerPropsValue(container, 'content.btnLoginText', '微信授权登录');
246
+ this.btnCollectPhoneText = getContainerPropsValue(container, 'content.btnCollectPhoneText', '获取手机号');
198
247
  this.textColor = getContainerPropsValue(container, 'content.textColor', '#fff');
199
248
  },
200
249
 
@@ -242,6 +291,12 @@
242
291
 
243
292
  }
244
293
 
294
+ &__jump {
295
+ position: absolute;
296
+ top: 40rpx;
297
+ right: 40rpx;
298
+ }
299
+
245
300
  &__bottom {
246
301
  position: absolute;
247
302
  bottom: unit(80, rpx);