jufubao-base 1.0.76 → 1.0.77-beta2

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.
@@ -4,6 +4,32 @@ export default {
4
4
  style: [],
5
5
  advanced: [],
6
6
  content: [
7
+ {
8
+ label: 'LOGO文字颜色:',
9
+ ele: 'xd-color',
10
+ valueKey: 'logoTextColor',
11
+ value: '',
12
+ placeholder: '请输入LOGO文字颜色',
13
+ classNmae: 'input80',
14
+ },
15
+ {
16
+ label: '是否使用体验码功能:',
17
+ ele: 'xd-radio',
18
+ valueKey: 'isPreview',
19
+ value: 'N',
20
+ placeholder: '请选择是否使用体验码功能',
21
+ multiple: false,
22
+ className: 'input80',
23
+ list: [
24
+ {label: '是', value: 'Y'},
25
+ {label: '否', value: 'N'},
26
+ ]
27
+ },
28
+ {
29
+ ele: 'title',
30
+ label: '页面连接设置',
31
+ size: 'small',
32
+ },
7
33
  {
8
34
  label: '快速授权失败访问地址:', //label
9
35
  ele: 'xd-select-pages-path', //package 名称
@@ -60,12 +86,9 @@ export default {
60
86
  inline: false,
61
87
  },
62
88
  {
63
- label: 'logo文字颜色:',
64
- ele: 'xd-color',
65
- valueKey: 'logoTextColor',
66
- value: '',
67
- placeholder: '请输入logo文字颜色',
68
- classNmae: 'input80',
89
+ ele: 'title',
90
+ label: '服务设置',
91
+ size: 'small',
69
92
  },
70
93
  {
71
94
  label: '隐私政策:',
@@ -170,6 +170,24 @@
170
170
  >忘记密码</view
171
171
  >
172
172
  </view>
173
+ <view class="bottom_btn" :style="prod_bottom" v-if="isPreview === 'Y'">
174
+ <view @click="dialogPreview = true" :style="{
175
+ color: mainColor,
176
+ border: `1px solid ${mainColor}`
177
+ }">进入体验 ></view>
178
+ </view>
179
+ <xd-dailog
180
+ v-if="dialogPreview"
181
+ title="体验码"
182
+ :show.sync="dialogPreview"
183
+ :cancel="false"
184
+ confirm-text="进入体验模式"
185
+ @onBtn="handlePreview"
186
+ >
187
+ <view class="preview-login">
188
+ <input v-model="previewAccout" type="text" class="preview-login-input" placeholder="请输入体验码">
189
+ </view>
190
+ </xd-dailog>
173
191
  </view>
174
192
  </view>
175
193
  </template>
@@ -187,6 +205,7 @@ import XdFormCheckbox from "@/components/XdFormCheckbox/XdFormCheckbox";
187
205
  import XdFormInput from "@/components/XdFormInput/XdFormInput";
188
206
  import XdForm from "@/components/XdForm/XdForm";
189
207
  import XdFormItem from "@/components/XdFormItem/XdFormItem";
208
+ import XdDailog from "@/components/XdDailog/XdDailog.vue";
190
209
  import { Base64 } from "js-base64";
191
210
  import { mapState } from "vuex";
192
211
  import getServiceUrl from "@/common/getServiceUrl";
@@ -208,15 +227,19 @@ export default {
208
227
  XdFormInput,
209
228
  XdForm,
210
229
  XdFormItem,
230
+ XdDailog
211
231
  },
212
232
  mixins: [componentsMixins, extsMixins, JfbBaseLoginMixin, privacyMixins],
213
233
  data() {
214
234
  return {
235
+ //体验模式
236
+ dialogPreview: false,
237
+ previewAccout: '',
238
+
215
239
  showStep: 1,
216
240
  panel_1_checked: "",
217
241
  panel_2_checked: "",
218
242
  password: "",
219
- //todo
220
243
  accountLoginType: "phone", //phone: 验证码登录 pwd: 密码登录
221
244
  accountForm: {
222
245
  phone_number: "", //15801505541
@@ -255,6 +278,7 @@ export default {
255
278
  logo: "",
256
279
  partnerName: "",
257
280
  logoTextColor: "",
281
+ isPreview:'N', //是否启用体验码模式
258
282
  };
259
283
  },
260
284
  computed: {
@@ -265,6 +289,9 @@ export default {
265
289
  panelTwoIsChecked() {
266
290
  return this.panel_2_checked.includes(1);
267
291
  },
292
+ prod_bottom() {
293
+ return this.fixedStyle({ height: 0, zIndex: 111 });
294
+ },
268
295
  },
269
296
  watch: {
270
297
  container(value) {
@@ -296,16 +323,46 @@ export default {
296
323
  url: `/pages/content/content?${params}`
297
324
  })
298
325
  },
299
-
300
-
326
+
327
+ loginPreview(experience_code){
328
+ return new Promise((resolve,reject)=>{
329
+ jfbRootExec("loginExperience", {
330
+ vm: this,
331
+ data: {experience_code},
332
+ }).then(res=>{
333
+ resolve(res)
334
+ }).catch(err=>{
335
+ reject(err)
336
+ })
337
+ })
338
+ },
339
+
340
+ async handlePreview(){
341
+ if(!this.previewAccout) {
342
+ this.$xdAlert({
343
+ content: '请输入体验码',
344
+ type:'error'
345
+ });
346
+ return;
347
+ }
348
+ this.$xdShowLoading({});
349
+ try{
350
+ const res = await this.loginPreview(this.previewAccout);
351
+ if(res) this.jfbAuthorize.setAllToken(res);
352
+ this.toHomeAfterLogin();
353
+ this.$xdHideLoading();
354
+ }catch (e){
355
+ this.$xdHideLoading();
356
+ }
357
+ },
358
+
359
+
301
360
  onJfbLoad(options) {
302
361
  this.redirect_url = options.redirect_url ? Base64.decode(options.redirect_url): '';
303
362
  // #ifdef MP-WEIXIN
304
363
  this.authWxMpListProviders();
305
364
  // #endif
306
-
307
365
  this.$xdLog.setProject('JfbBaseLogin', 'JfbBaseLogin.onJfbLoad.start')
308
-
309
366
  // #ifdef H5
310
367
  try{
311
368
  this.authH5ListProviders();
@@ -313,7 +370,6 @@ export default {
313
370
  this.$xdLog.setProject('JfbBaseLogin', 'JfbBaseLogin.onJfbLoad.error');
314
371
  this.$xdLog.setARMSError(error);
315
372
  }
316
-
317
373
  //#endif
318
374
 
319
375
  // if (options.isDebug === "1") {
@@ -354,7 +410,7 @@ export default {
354
410
  this.phone_number_collect_url = getContainerPropsValue(value, "content.phone_number_collect_url", {value: ''}).value;
355
411
  this.forget_pwd_url = getContainerPropsValue(value, "content.forget_pwd_url", {value: ''}).value;
356
412
  this.error_callback_url = getContainerPropsValue(value, "content.error_url", {value: ''}).value;
357
-
413
+ this.isPreview = getContainerPropsValue(value, "content.isPreview", 'N');
358
414
  },
359
415
 
360
416
  /**
@@ -464,22 +520,22 @@ export default {
464
520
  "62fde99f2583a19c58fd937b",
465
521
  "62fde9432583a19c58fd937a",
466
522
  ];
467
-
523
+
468
524
  let { redirect_url, callback_url } = this;
469
-
525
+
470
526
  //不同项目直接域名替换
471
527
  if (/^(@site_domain@).+$/.test(redirect_url)) {
472
528
  redirect_url = redirect_url.replace(/@site_domain@/, location.origin)
473
529
  }
474
-
530
+
475
531
  try {
476
532
  let redirectURL = new URL(redirect_url);
477
533
  redirect_url = redirectURL.href;
478
534
  } catch (e) {
479
535
  redirect_url = location.origin + this.base + redirect_url;
480
536
  }
481
-
482
-
537
+
538
+
483
539
  let params = {
484
540
  providers: providers.join(","),
485
541
  callback_url: redirect_url,
@@ -487,9 +543,9 @@ export default {
487
543
  phone_number_collect_url: location.origin + this.base + this.phone_number_collect_url,
488
544
  error_callback_url: location.origin + this.base + this.error_callback_url,
489
545
  };
490
-
546
+
491
547
  this.$xdLog.setProject('JfbBaseLogin', 'JfbBaseLogin.onJfbLoad.loading..');
492
-
548
+
493
549
  jfbRootExec("listSiteProvider", {
494
550
  vm: this,
495
551
  data: params,
@@ -701,7 +757,7 @@ export default {
701
757
  margin-left: unit(20,rpx) !important;
702
758
  }
703
759
  }
704
-
760
+
705
761
  .form-group {
706
762
  padding: 40rpx 70rpx;
707
763
  }
@@ -851,4 +907,45 @@ export default {
851
907
  .login-pub {
852
908
  margin-top: unit(40, rpx);
853
909
  }
910
+ .bottom_btn {
911
+ position: fixed;
912
+ width: 100%;
913
+ display:flex;
914
+ justify-content: center;
915
+ align-items: center;
916
+ height: unit(100, rpx);
917
+ background: #ffffff;
918
+
919
+ & > view {
920
+ height: unit(44, rpx);
921
+ line-height: unit(44, rpx);
922
+ width: unit(150, rpx);
923
+ text-align: center;
924
+ cursor: pointer;
925
+ font-size: unit(24, rpx);
926
+ border-radius: unit(12, rpx);
927
+ }
928
+ }
929
+
930
+ .preview-login {
931
+ padding: unit(40, rpx) 0;
932
+
933
+ &-input {
934
+ height: unit(70, rpx);
935
+ border-radius: unit(12, rpx);
936
+ padding: 0 unit(20, rpx);
937
+ text-align: left;
938
+ border: 1px solid #eee;
939
+ background: #F7F7F7;
940
+ color: #666;
941
+ transition: box-shadow 0.5s;
942
+ box-shadow: 0 0 0 rgba(0,0,0,0);
943
+
944
+ &:hover {
945
+ box-shadow: 0 0 unit(10, rpx) rgba(0,0,0,.1);
946
+ }
947
+ }
948
+ }
949
+
950
+
854
951
  </style>
@@ -26,130 +26,161 @@
26
26
  show-footer-line
27
27
  @onTab="handleChange"
28
28
  ></xd-tab>
29
- <view
30
- v-if="orderList && orderList.length > 0"
31
- class="jfb-base-order-list__body-order"
32
- :style="{ padding: outMargin }"
33
- >
34
- <view
35
- @click="handleToLink(detailPath, item)"
36
- class="jfb-base-order-list__body-order-item"
37
- v-for="item in orderList"
38
- :key="item.main_order_id"
39
- :style="{
40
- background: backgroundColor,
41
- border: borderBox,
42
- borderRadius: radius + 'rpx',
43
- boxShadow: shadowBox,
44
- marginBottom: padding + 'rpx',
45
- }"
29
+ <view v-if="loadingList" class="jfb-base-order-list__body-order skeleton-wrap">
30
+ <view class="jfb-base-order-list__body-order-item"
31
+ v-for="i in 5" :key="i"
46
32
  >
47
- <view class="jfb-base-order-list__body-order-item-biz">
48
- <xd-font-icon
49
- v-if="item.biz_code_icon"
50
- :icon="item.biz_code_icon"
51
- :size="item['biz_code_icon_size']"
52
- ></xd-font-icon>
53
- <view :class="{ marginLeft: item.biz_code_icon }">{{
54
- item.biz_code_name
55
- }}</view>
56
- </view>
33
+ <view class="jfb-base-order-list__body-order-item-biz"><view></view></view>
57
34
  <view class="jfb-base-order-list__body-order-item-title">
58
- <view>订单编号:{{ item.main_order_id }}</view>
59
- <view
60
- :style="{color:item.status.status_type !== 'error' ? mainColor : '#999999',}"
61
- >{{ item.status.status_name }}</view>
35
+ <view></view>
36
+ <view></view>
62
37
  </view>
63
38
  <view class="order-list">
64
39
  <view
65
- class="jfb-base-order-list__body-order-item-content"
66
- v-for="(Sitem, Sindex) in item.products"
67
- :key="Sitem.product_id + Sindex"
68
- v-if="(item['isOpen'] === false && Sindex < showLen) || item['isOpen']">
69
- <image
70
- :src="Sitem.product_thumb"
71
- style="background: #ffffff"
72
- mode="aspectFit"
73
- ></image>
40
+ class="jfb-base-order-list__body-order-item-content">
41
+ <image></image>
74
42
  <view class="jfb-base-order-list__body-order-item-content-info">
75
- <view
76
- class="jfb-base-order-list__body-order-item-content-info-name"
77
- >{{ Sitem.product_name }}</view
78
- >
79
- <view
80
- v-if="Sitem.product_sku_name"
81
- class="jfb-base-order-list__body-order-item-content-info-skuname"
82
- >规格:{{ Sitem.product_sku_name }}</view
83
- >
84
- <view
85
- class="jfb-base-order-list__body-order-item-content-info-price"
86
- >
87
- <view :style="{ fontSize: '32rpx', color: mainColor }">
88
- <xd-unit
89
- :isOld="false"
90
- :price="Sitem.sale_price"
91
- :color="mainColor"
92
- :fontSize="32"
93
- v-if="item.biz_code !== 'gift'"
94
- ></xd-unit>
95
- </view>
96
- <view class="info-price">
97
- <text>X</text>
98
- <text>{{ Sitem.product_num }}</text>
99
- </view>
43
+ <view class="jfb-base-order-list__body-order-item-content-info-name"></view>
44
+ <view class="jfb-base-order-list__body-order-item-content-info-price">
45
+ <view></view>
46
+ <view class="info-price"></view>
100
47
  </view>
101
48
  </view>
102
49
  </view>
103
- <view
104
- class="order-list-icon"
105
- :style="{ bottom: item['isOpen'] ? '-30rpx' : '-54rpx' }"
106
- v-if="item.products.length > showLen"
107
- @click.stop="item['isOpen'] = !item['isOpen']"
108
- >
109
- <view :style="{ background: backgroundColor }">
110
- <xd-font-icon
111
- color="#666"
112
- :icon="item['isOpen'] ? 'iconshang_up' : 'iconxia_down'"
113
- size="24"
114
- ></xd-font-icon>
115
- </view>
116
- </view>
117
50
  </view>
118
51
  <view class="jfb-base-order-list__body-order-item-bottom">
119
- <view>下单时间:{{ item.created_time_text }}</view>
120
- <view v-if="item.biz_code !== 'gift'">
121
- <text>合计:</text>
122
- <xd-unit
123
- :isOld="false"
124
- :price="item.total_amount"
125
- :color="mainColor"
126
- :fontSize="28"
127
- ></xd-unit>
128
- </view>
52
+ <view></view>
53
+ <view></view>
129
54
  </view>
55
+ </view>
56
+ </view>
57
+ <template v-else>
58
+ <view
59
+ v-if="orderList && orderList.length > 0"
60
+ class="jfb-base-order-list__body-order"
61
+ :style="{ padding: outMargin }"
62
+ >
130
63
  <view
131
- class="jfb-base-order-list__body-order-item-pay"
132
- v-if="item.buttons.length"
64
+ @click="handleToLink(detailPath, item)"
65
+ class="jfb-base-order-list__body-order-item"
66
+ v-for="item in orderList"
67
+ :key="item.main_order_id"
68
+ :style="{
69
+ background: backgroundColor,
70
+ border: borderBox,
71
+ borderRadius: radius + 'rpx',
72
+ boxShadow: shadowBox,
73
+ marginBottom: padding + 'rpx',
74
+ }"
133
75
  >
134
- <view v-for="(btn,index) in item.buttons" :key="btn.action+index">
135
- <xd-button
136
- :type="getBtnType(btn.action)"
137
- size="mini"
138
- @click="handleBtnEvent(btn.action, item)"
139
- >{{ btn.text }}
140
- </xd-button>
76
+ <view class="jfb-base-order-list__body-order-item-biz">
77
+ <xd-font-icon
78
+ v-if="item.biz_code_icon"
79
+ :icon="item.biz_code_icon"
80
+ :size="item['biz_code_icon_size']"
81
+ ></xd-font-icon>
82
+ <view :class="{ marginLeft: item.biz_code_icon }">{{
83
+ item.biz_code_name
84
+ }}</view>
85
+ </view>
86
+ <view class="jfb-base-order-list__body-order-item-title">
87
+ <view>订单编号:{{ item.main_order_id }}</view>
88
+ <view
89
+ :style="{color:item.status.status_type !== 'error' ? mainColor : '#999999',}"
90
+ >{{ item.status.status_name }}</view>
91
+ </view>
92
+ <view class="order-list">
93
+ <view
94
+ class="jfb-base-order-list__body-order-item-content"
95
+ v-for="(Sitem, Sindex) in item.products"
96
+ :key="Sitem.product_id + Sindex"
97
+ v-if="(item['isOpen'] === false && Sindex < showLen) || item['isOpen']">
98
+ <image
99
+ :src="Sitem.product_thumb"
100
+ style="background: #ffffff"
101
+ mode="aspectFit"
102
+ ></image>
103
+ <view class="jfb-base-order-list__body-order-item-content-info">
104
+ <view
105
+ class="jfb-base-order-list__body-order-item-content-info-name"
106
+ >{{ Sitem.product_name }}</view
107
+ >
108
+ <view
109
+ v-if="Sitem.product_sku_name"
110
+ class="jfb-base-order-list__body-order-item-content-info-skuname"
111
+ >规格:{{ Sitem.product_sku_name }}</view
112
+ >
113
+ <view
114
+ class="jfb-base-order-list__body-order-item-content-info-price"
115
+ >
116
+ <view :style="{ fontSize: '32rpx', color: mainColor }">
117
+ <xd-unit
118
+ :isOld="false"
119
+ :price="Sitem.sale_price"
120
+ :color="mainColor"
121
+ :fontSize="32"
122
+ v-if="item.biz_code !== 'gift'"
123
+ ></xd-unit>
124
+ </view>
125
+ <view class="info-price">
126
+ <text>X</text>
127
+ <text>{{ Sitem.product_num }}</text>
128
+ </view>
129
+ </view>
130
+ </view>
131
+ </view>
132
+ <view
133
+ class="order-list-icon"
134
+ :style="{ bottom: item['isOpen'] ? '-30rpx' : '-54rpx' }"
135
+ v-if="item.products.length > showLen"
136
+ @click.stop="item['isOpen'] = !item['isOpen']"
137
+ >
138
+ <view :style="{ background: backgroundColor }">
139
+ <xd-font-icon
140
+ color="#666"
141
+ :icon="item['isOpen'] ? 'iconshang_up' : 'iconxia_down'"
142
+ size="24"
143
+ ></xd-font-icon>
144
+ </view>
145
+ </view>
146
+ </view>
147
+ <view class="jfb-base-order-list__body-order-item-bottom">
148
+ <view>下单时间:{{ item.created_time_text }}</view>
149
+ <view v-if="item.biz_code !== 'gift'">
150
+ <text>合计:</text>
151
+ <xd-unit
152
+ :isOld="false"
153
+ :price="item.total_amount"
154
+ :color="mainColor"
155
+ :fontSize="28"
156
+ ></xd-unit>
157
+ </view>
158
+ </view>
159
+ <view
160
+ class="jfb-base-order-list__body-order-item-pay"
161
+ v-if="item.buttons.length"
162
+ >
163
+ <view v-for="(btn,index) in item.buttons" :key="btn.action+index">
164
+ <xd-button
165
+ :type="getBtnType(btn.action)"
166
+ size="mini"
167
+ @click="handleBtnEvent(btn.action, item)"
168
+ >{{ btn.text }}
169
+ </xd-button>
170
+ </view>
141
171
  </view>
142
172
  </view>
143
173
  </view>
144
- </view>
145
- <view v-else class="jfb-base-order-list__body-no">
146
- <xd-font-icon
147
- size="120"
148
- color="#ccc"
149
- icon="iconzanwudingdan"
150
- ></xd-font-icon>
151
- <view>暂无订单</view>
152
- </view>
174
+ <view v-else class="jfb-base-order-list__body-no">
175
+ <xd-font-icon
176
+ size="120"
177
+ color="#ccc"
178
+ icon="iconzanwudingdan"
179
+ ></xd-font-icon>
180
+ <view>暂无订单</view>
181
+ </view>
182
+ </template>
183
+
153
184
  </view>
154
185
  </view>
155
186
  </template>
@@ -189,6 +220,7 @@ export default {
189
220
  payPath: "",
190
221
  status: null, //全部、已完成、已取消
191
222
  initStatus: false,
223
+ loadingList: false,
192
224
 
193
225
  //基础
194
226
  radius: 0,
@@ -387,6 +419,7 @@ export default {
387
419
  this.$xdShowLoading({});
388
420
  let tab = "all";
389
421
  if (status) tab = this.tabList[this.tabIndex].status;
422
+ this.loadingList = true;
390
423
  jfbRootExec("getBaseOrderList", {
391
424
  vm: this,
392
425
  data: {
@@ -396,6 +429,7 @@ export default {
396
429
  },
397
430
  })
398
431
  .then((res) => {
432
+ this.loadingList = false;
399
433
  this.$xdHideLoading();
400
434
  console.log(res.list, "list");
401
435
  let list = res.list.map((item) => {
@@ -496,6 +530,12 @@ export default {
496
530
  }
497
531
  &-order {
498
532
  &-item {
533
+ .skeleton-wrap & {
534
+ background-color: #FFFFFF;
535
+ border: 1px solid #EEEEEE;
536
+ border-radius: 10rpx;
537
+ margin: 20rpx;
538
+ }
499
539
  &-biz {
500
540
  color: #333333;
501
541
  font-size: unit(28, rpx);
@@ -504,6 +544,12 @@ export default {
504
544
  border-bottom: unit(2, rpx) solid #eee;
505
545
  display: flex;
506
546
  align-items: center;
547
+
548
+ & > view{
549
+ .skeleton-wrap &{
550
+ .skeleton-item(100rpx, 28rpx);
551
+ }
552
+ }
507
553
  }
508
554
 
509
555
  &-title {
@@ -517,9 +563,15 @@ export default {
517
563
 
518
564
  & > view:first-child {
519
565
  color: #333;
566
+ .skeleton-wrap &{
567
+ .skeleton-item(300rpx, 28rpx);
568
+ }
520
569
  }
521
570
 
522
571
  & > view:nth-child(2) {
572
+ .skeleton-wrap &{
573
+ .skeleton-item(100rpx, 28rpx);
574
+ }
523
575
  }
524
576
  }
525
577
 
@@ -534,6 +586,9 @@ export default {
534
586
  height: unit(160, rpx);
535
587
  border-radius: unit(8, rpx);
536
588
  flex-shrink: 0;
589
+ .skeleton-wrap &{
590
+ .skeleton-item(160rpx, 160rpx);
591
+ }
537
592
  }
538
593
 
539
594
  &-info {
@@ -549,6 +604,10 @@ export default {
549
604
  font-weight: 500;
550
605
  .uni-max-cut(1, 64);
551
606
  line-height: unit(64, rpx);
607
+
608
+ .skeleton-wrap &{
609
+ .skeleton-item(160rpx, 48rpx);
610
+ }
552
611
  }
553
612
 
554
613
  &-skuname {
@@ -573,6 +632,10 @@ export default {
573
632
  display: flex;
574
633
  justify-content: space-between;
575
634
  align-items: center;
635
+ .skeleton-wrap &{
636
+ .skeleton-item(100%, 32rpx);
637
+ margin-top: 20rpx;
638
+ }
576
639
  }
577
640
  }
578
641
  }
@@ -588,6 +651,9 @@ export default {
588
651
 
589
652
  & > view:first-child {
590
653
  color: #999;
654
+ .skeleton-wrap &{
655
+ .skeleton-item(300rpx, 28rpx);
656
+ }
591
657
  }
592
658
 
593
659
  & > view:nth-child(2) {
@@ -596,6 +662,9 @@ export default {
596
662
  & > view {
597
663
  margin-left: unit(10, rpx);
598
664
  }
665
+ .skeleton-wrap &{
666
+ .skeleton-item(300rpx, 28rpx);
667
+ }
599
668
  }
600
669
  }
601
670
 
@@ -116,7 +116,7 @@
116
116
  mixins: [componentsMixins,extsMixins,JfbBasePosterMixin],
117
117
  data() {
118
118
  return {
119
- selfMask: true,
119
+ selfMask: false,
120
120
  params: {},
121
121
 
122
122
  //Swiper 配置