@conecli/cone-render 0.9.1-shop2.12 → 0.9.1-shop2.14

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 (35) hide show
  1. package/dist/common/const.ts +1 -1
  2. package/dist/common/index.h5.ts +1 -1
  3. package/dist/common/index.weapp.ts +1 -1
  4. package/dist/common/sgmCustomCode.ts +1 -1
  5. package/dist/components/ErrorBoundary.tsx +1 -1
  6. package/dist/components/base/CustomVideo/index.tsx +1 -1
  7. package/dist/components/base/LazyLayoutLoad/index.tsx +1 -1
  8. package/dist/components/base/LazyLoadImage/index.h5.tsx +1 -1
  9. package/dist/components/base/MobileCommonHeader/index.tsx +1 -1
  10. package/dist/components/base/NetworkDataError/index.module.scss +3 -0
  11. package/dist/components/base/NetworkDataError/index.tsx +1 -1
  12. package/dist/components/remoteFloorItem.tsx +1 -1
  13. package/dist/interface/component.ts +1 -1
  14. package/dist/jumpEventReport/base.ts +1 -1
  15. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  16. package/dist/jumpEventReport/web.base.ts +1 -1
  17. package/dist/jumpEventReport/web.jd.ts +1 -1
  18. package/dist/modules/ContainerFloorList/index.h5.module.scss +1 -0
  19. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  20. package/dist/open/api/device.ts +1 -1
  21. package/dist/open/api/request.ts +1 -1
  22. package/dist/open/api/shopMember.ts +1 -1
  23. package/dist/open/api/util.ts +1 -1
  24. package/dist/open/components/index.ts +1 -1
  25. package/dist/sass/app.h5.scss +5 -0
  26. package/dist/service/requestServer.ts +1 -1
  27. package/dist/utils/connectNativeJsBridge.ts +1 -1
  28. package/dist/utils/h5Utils.ts +1 -1
  29. package/dist/utils/index.h5.ts +1 -1
  30. package/dist/utils/index.ts +1 -1
  31. package/dist/utils/index.weapp.ts +1 -1
  32. package/dist/utils/sgmCodeUtils.ts +1 -1
  33. package/dist/utils/taroRenderUtil.ts +1 -1
  34. package/dist/utils/utils.ts +1 -1
  35. package/package.json +1 -1
@@ -1 +1 @@
1
- import Taro from '@tarojs/taro'
2
1
  APPID,
3
2
  JshopxColorFunctionIdList,
4
3
  PagesColorFunctionIdList,
5
4
  PAGES_DOMAIN,
6
5
  B2BColorFunctionIdList,
7
6
  MobileVerifyColorList,
8
7
  AppVerifyColorList,
9
8
  JshopxVerifyColorList,
10
9
  BMallVerifyColorList,
11
10
  shopMemberColorFunctionIdList
12
11
  cookiesStr: '',
13
12
  requestHeaderContentType: {
14
13
  jsonHeader: {
15
14
  'content-type': 'application/json;charset=utf-8',
16
15
  },
17
16
  formDataHeader: {
18
17
  'content-type': 'application/x-www-form-urlencoded',
19
18
  },
20
19
  },
21
20
  requestBaseParam: {
22
21
  data: null,
23
22
  header: {
24
23
  'content-type': 'application/json;charset=utf-8',
25
24
  },
26
25
  },
27
26
  timeOut: 7000,
28
27
  apiClientParams: {
29
28
  clientVersion:
30
29
  isJdApp && jdAppVersionStr !== '' ? jdAppVersionStr : '11.0.0',
31
30
  client: isJdApp ? (isIosDevice ? 'apple' : 'android') : isPc ? 'pc' : 'wh5',
32
31
  area: '1_72_2799_0',
33
32
  screen: `${Math.ceil(window.screen?.width * devicePixelRatio)}*${Math.ceil(window.screen?.height * devicePixelRatio)}`,
34
33
  uuid: UUID,
35
34
  },
36
35
  public addressFetchInfo: {
37
36
  reqState: boolean
38
37
  promiseInstance: null | Promise<any>
39
38
  }
40
39
  public getPromotionConfig: {
41
40
  projectId: null | string | number
42
41
  pageId: null | string | number
43
42
  }
44
43
  public resInfo: ServiceInterFace.HttpRequestInfo
45
44
  public api: ServiceInterFace.HttpApi
46
45
  public isPageDomain: boolean
47
46
  public verifyColorList: string[]
48
47
  constructor(opt) {
49
48
  this._init()
50
49
  this.addressFetchInfo = {
51
50
  reqState: false,
52
51
  promiseInstance: null,
53
52
  }
54
53
  this.getPromotionConfig = {
55
54
  projectId: null,
56
55
  pageId: null,
57
56
  }
58
57
  this._userAreaUpdateListen()
59
58
  this.resInfo = this._getResConfig(opt)
60
59
  this.api = api
61
60
  this.isPageDomain = isH5 ? window?.location?.hostname === PAGES_DOMAIN : false
62
61
  this.verifyColorList = [
63
62
  ...MobileVerifyColorList,
64
63
  ...AppVerifyColorList,
65
64
  ...JshopxVerifyColorList,
66
65
  ...BMallVerifyColorList,
67
66
  ]
68
67
  }
69
68
  _init(): void {
70
69
  httpInterceptors.forEach((item) => {
71
70
  Taro.addInterceptor((chain) => item(chain))
72
71
  })
73
72
  }
74
73
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
75
74
  return Object.assign({}, DefaultConfig, opt)
76
75
  }
77
76
 
78
77
  _userAreaUpdateListen() {
79
78
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, (area) => {
80
79
  this.updateApiClientParamsResInfo({
81
80
  area,
82
81
  })
83
82
  })
84
83
  }
85
84
  updateApiClientParamsResInfo(opt = {}) {
86
85
  this.resInfo.apiClientParams = {
87
86
  ...this.resInfo.apiClientParams,
88
87
  ...opt,
89
88
  }
90
89
  }
91
90
 
92
91
  checkFunctionIdToReturnAppId(functionId) {
93
92
  if (JshopxColorFunctionIdList.includes(functionId)) {
94
93
  return APPID.JSHOPX_COLOR_APPID
95
94
  } else if (
96
95
  this.isPageDomain &&
97
96
  PagesColorFunctionIdList.includes(functionId)
98
97
  ) {
99
98
  return APPID.PAGES_COLOR_APPID
100
99
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
101
100
  return APPID.SHOP_MEMBER_COLOR_APPID
102
101
  }else if (B2BColorFunctionIdList.includes(functionId)) {
103
102
  return APPID.B2B_COLOR_APPID
104
103
  } else if (isPc) {
105
104
  return APPID.MALL_COLOR_APPID
106
105
  } else {
107
106
  return APPID.SHOP_COLOR_APPID
108
107
  }
109
108
  }
110
109
 
111
110
  gatewayReq(
112
111
  functionId: string,
113
112
  bodyParams = {},
114
113
  clientParams = {},
115
114
  ): Promise<any> {
116
115
  if (
117
116
  functionId === 'receiveShopCoupon' &&
118
117
  ((isH5 && (window?.isJingGouMiniViewState || window?.isJingxiMiniViewState)) || isWxMinAndWxapp)
119
118
  ) {
120
119
  clientParams = Object.assign(
121
120
  {},
122
121
  {
123
122
  loginType: '1',
124
123
  loginWQBiz: WXAPP_BIZ_KEY,
125
124
  },
126
125
  clientParams,
127
126
  )
128
127
  }
129
128
  const apiClientParams = Object.assign(
130
129
  {},
131
130
  this.resInfo.apiClientParams,
132
131
  clientParams,
133
132
  )
134
133
  typeof apiClientParams.appid === 'undefined' && (apiClientParams.appid = this.checkFunctionIdToReturnAppId(functionId))
135
134
  const isColorVerify = this.verifyColorList.includes(functionId)
136
135
  const getReqData = {
137
136
  functionId: functionId,
138
137
  body: JSON.stringify(bodyParams),
139
138
  t: Date.now(),
140
139
  ...apiClientParams,
141
140
  }
142
141
  return http
143
142
  .request({
144
143
  url: this.api.apiFunc,
145
144
  data: getReqData,
146
145
  isColorVerify,
147
146
  })
148
147
  .then((res: ServiceInterFace.RequestPromiseRes) => {
149
148
  const { statusCode, data } = res
150
149
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
151
150
  ok: true,
152
151
  }
153
152
  if (statusCode === 200 && data) {
154
153
  const resCode = Object.prototype.hasOwnProperty.call(res.data, 'code')
155
154
  ? Number(res.data.code)
156
155
  : -1
157
156
  const subCode = Object.prototype.hasOwnProperty.call(
158
157
  res.data,
159
158
  'subCode',
160
159
  )
161
160
  ? Number(res.data.subCode)
162
161
  : -1
163
162
  if (
164
163
  data.success === true ||
165
164
  data.isSuccess ||
166
165
  resCode === 0 ||
167
166
  resCode === 200 ||
168
167
  subCode === 0
169
168
  ) {
170
169
  changeRes = {
171
170
  result: Object.prototype.hasOwnProperty.call(data, 'result')
172
171
  ? data.result
173
172
  : Object.prototype.hasOwnProperty.call(data, 'data')
174
173
  ? data.data
175
174
  : data,
176
175
  code: data.code || 200,
177
176
  ok: true,
178
177
  source: data,
179
178
  }
180
179
  return changeRes
181
180
  } else {
182
181
  changeRes = {
183
182
  ...data,
184
183
  ok: false,
185
184
  statusCode: res.statusCode,
186
185
  }
187
186
  return changeRes
188
187
  }
189
188
  } else {
190
189
  changeRes = {
191
190
  ...data,
192
191
  ok: false,
193
192
  statusCode: res.statusCode,
194
193
  }
195
194
  return changeRes
196
195
  }
197
196
  })
198
197
  .catch((res) => {
199
198
  return {
200
199
  ...res,
201
200
  ok: false,
202
201
  } as ServiceInterFace.RequestResponseFormatRes
203
202
  })
204
203
  }
205
204
 
206
205
  async receiveCoupon(param = {}, clientParams) {
207
206
  const loginType = isPc ? { loginType: 3 } : {}
208
207
  return await this.gatewayReq(
209
208
  'receiveShopCoupon',
210
209
  {
211
210
  operation: '3',
212
211
  ...param,
213
212
  },
214
213
  { ...loginType, ...clientParams },
215
214
  )
216
215
  }
217
216
 
218
217
  getCustomerCenterDispatch(params = {}) {
219
218
  return this.gatewayReq('customerCenterDispatch', params, {
220
219
  clientVersion: '9.2.0',
221
220
  client: 'H5',
222
221
  uuid: 88888,
223
222
  appid: 'shopmember_m_jd_com',
224
223
  })
225
224
  }
226
225
  bMallGetUserInfo = () => {
227
226
  return getBMallUserInfo()
228
227
  }
229
228
  async bMallAddCart(params = {}) {
230
229
  return await this.gatewayReq('bmall_cartAdd', params, {
231
230
  client: 'H5',
232
231
  clientVersion: '5.5.0'
233
232
  })
234
233
  }
235
234
  async bMallChangeCart(params = {}) {
236
235
  return await this.gatewayReq('bmall_cartChange', params, {
237
236
  client: 'H5',
238
237
  clientVersion: '5.5.0'
239
238
  })
240
239
  }
241
240
  async bMallRemoveCart(params = {}) {
242
241
  return await this.gatewayReq(
243
242
  'bmall_cartRemove',
244
243
  params,
245
244
  {
246
245
  client: 'H5',
247
246
  clientVersion: '5.5.0'
248
247
  },
249
248
  )
250
249
  }
251
250
  async bMallGetOmittedProduct(params = {}) {
252
251
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
253
252
  client: 'H5',
254
253
  clientVersion: '5.5.0'
255
254
  })
256
255
  }
257
256
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
258
257
  const params = await getParams({ ...data, skuId, bMallTag, num })
259
258
  return await this.bMallAddCart(params)
260
259
  }
261
260
  async bMallGetSkuNumService(bMallTag = 1) {
262
261
  const params = await getParams({ bMallTag })
263
262
  delete params.operations
264
263
  return await this.bMallGetOmittedProduct(params)
265
264
  }
266
265
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
267
266
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
268
267
  return await this.bMallRemoveCart(params)
269
268
  }
270
269
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
271
270
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
272
271
  return await this.bMallChangeCart(params)
273
272
  }
274
273
 
275
274
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
276
275
  if (!needRequest && isH5 && window?.bMallCartData) {
277
276
  return window?.bMallCartData
278
277
  }
279
278
  const cartData = await this.bMallGetSkuNumService(bMallTag)
280
279
  let items
281
280
  if (cartData.ok && cartData.result) {
282
281
  items = cartData?.result?.items || {}
283
282
  }
284
283
  if (isH5) {
285
284
  window.bMallCartData = items
286
285
  }
287
286
  return items
288
287
  }
289
288
 
290
289
  async bMallCartHandle(goodItem, num) {
291
290
  try {
292
291
  const {
293
292
  skuUuid,
294
293
  limitUpper,
295
294
  limitLower,
296
295
  } = goodItem
297
296
  let cartNum = Number(num)
298
297
  if (limitLower && cartNum && cartNum < limitLower) {
299
298
  cartNum = limitLower
300
299
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
301
300
  cartNum = limitUpper
302
301
  }
303
302
  if (skuUuid && cartNum > 0) {
304
303
  return this.bMallChangeCartService({
305
304
  ...goodItem,
306
305
  skuUuid,
307
306
  num: cartNum,
308
307
  })
309
308
  } else if (!skuUuid && cartNum > 0) {
310
309
  return this.bMallAddCartService({ ...goodItem, num: cartNum })
311
310
  } else if (skuUuid && !cartNum) {
312
311
  return this.bMallRemoveCartService({
313
312
  ...goodItem,
314
313
  skuUuid,
315
314
  num: cartNum,
316
315
  })
317
316
  } else {
318
317
  console.error('参数不全')
319
318
  return false
320
319
  }
321
320
  } catch (e) {
322
321
  console.error(e)
323
322
  }
324
323
  }
324
+ import Taro from '@tarojs/taro'
325
325
  APPID,
326
326
  JshopxColorFunctionIdList,
327
327
  PagesColorFunctionIdList,
328
328
  PAGES_DOMAIN,
329
329
  B2BColorFunctionIdList,
330
330
  MobileVerifyColorList,
331
331
  AppVerifyColorList,
332
332
  JshopxVerifyColorList,
333
333
  BMallVerifyColorList,
334
334
  shopMemberColorFunctionIdList,
335
335
  isJdApp,
336
336
  isIosDevice,
337
337
  isAndroidDevice,
338
338
  showSuccessToast,
339
339
  showFailToast,
340
340
  isH5,
341
341
  isWxMinAndWxapp,
342
342
  isMin,
343
343
  isPc,
344
344
  callRouterIOS,
345
345
  callRouterAndroid,
346
346
  cookiesStr: '',
347
347
  requestHeaderContentType: {
348
348
  jsonHeader: {
349
349
  'content-type': 'application/json;charset=utf-8',
350
350
  },
351
351
  formDataHeader: {
352
352
  'content-type': 'application/x-www-form-urlencoded',
353
353
  },
354
354
  },
355
355
  requestBaseParam: {
356
356
  data: null,
357
357
  header: {
358
358
  'content-type': 'application/json;charset=utf-8',
359
359
  },
360
360
  },
361
361
  timeOut: 7000,
362
362
  apiClientParams: {
363
363
  clientVersion:
364
364
  isJdApp && jdAppVersionStr !== '' ? jdAppVersionStr : '11.0.0',
365
365
  client: isJdApp ? (isIosDevice ? 'apple' : 'android') : isPc ? 'pc' : 'wh5',
366
366
  area: '1_72_2799_0',
367
367
  screen: `${Math.ceil(window.screen?.width * devicePixelRatio)}*${Math.ceil(
368
368
  window.screen?.height * devicePixelRatio,
369
369
  )}`,
370
370
  uuid: UUID,
371
371
  },
372
372
  public addressFetchInfo: {
373
373
  reqState: boolean
374
374
  promiseInstance: null | Promise<any>
375
375
  }
376
376
  public getPromotionConfig: {
377
377
  projectId: null | string | number
378
378
  pageId: null | string | number
379
379
  }
380
380
  public resInfo: ServiceInterFace.HttpRequestInfo
381
381
  public api: ServiceInterFace.HttpApi
382
382
  public isPageDomain: boolean
383
383
  public verifyColorList: string[]
384
384
  constructor(opt) {
385
385
  this._init()
386
386
  this.addressFetchInfo = {
387
387
  reqState: false,
388
388
  promiseInstance: null,
389
389
  }
390
390
  this.getPromotionConfig = {
391
391
  projectId: null,
392
392
  pageId: null,
393
393
  }
394
394
  this._userAreaUpdateListen()
395
395
  this.resInfo = this._getResConfig(opt)
396
396
  this.api = api
397
397
  this.isPageDomain = isH5
398
398
  ? window?.location?.hostname === PAGES_DOMAIN
399
399
  : false
400
400
  this.verifyColorList = [
401
401
  ...MobileVerifyColorList,
402
402
  ...AppVerifyColorList,
403
403
  ...JshopxVerifyColorList,
404
404
  ...BMallVerifyColorList,
405
405
  ]
406
406
  }
407
407
  _init(): void {
408
408
  httpInterceptors.forEach(item => {
409
409
  Taro.addInterceptor(chain => item(chain))
410
410
  })
411
411
  }
412
412
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
413
413
  return Object.assign({}, DefaultConfig, opt)
414
414
  }
415
415
 
416
416
  _userAreaUpdateListen() {
417
417
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, area => {
418
418
  this.updateApiClientParamsResInfo({
419
419
  area,
420
420
  })
421
421
  })
422
422
  }
423
423
  updateApiClientParamsResInfo(opt = {}) {
424
424
  this.resInfo.apiClientParams = {
425
425
  ...this.resInfo.apiClientParams,
426
426
  ...opt,
427
427
  }
428
428
  }
429
429
 
430
430
  checkFunctionIdToReturnAppId(functionId) {
431
431
  if (JshopxColorFunctionIdList.includes(functionId)) {
432
432
  return APPID.JSHOPX_COLOR_APPID
433
433
  } else if (
434
434
  this.isPageDomain &&
435
435
  PagesColorFunctionIdList.includes(functionId)
436
436
  ) {
437
437
  return APPID.PAGES_COLOR_APPID
438
438
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
439
439
  return APPID.SHOP_MEMBER_COLOR_APPID
440
440
  } else if (B2BColorFunctionIdList.includes(functionId)) {
441
441
  return APPID.B2B_COLOR_APPID
442
442
  } else if (isPc) {
443
443
  return APPID.MALL_COLOR_APPID
444
444
  } else {
445
445
  return APPID.SHOP_COLOR_APPID
446
446
  }
447
447
  }
448
448
 
449
449
  gatewayReq(
450
450
  functionId: string,
451
451
  bodyParams = {},
452
452
  clientParams = {},
453
453
  ): Promise<any> {
454
454
  if (
455
455
  functionId === 'receiveShopCoupon' &&
456
456
  ((isH5 &&
457
457
  (window?.isJingGouMiniViewState || window?.isJingxiMiniViewState)) ||
458
458
  isWxMinAndWxapp)
459
459
  ) {
460
460
  clientParams = Object.assign(
461
461
  {},
462
462
  {
463
463
  loginType: '1',
464
464
  loginWQBiz: WXAPP_BIZ_KEY,
465
465
  },
466
466
  clientParams,
467
467
  )
468
468
  }
469
469
  const apiClientParams = Object.assign(
470
470
  {},
471
471
  this.resInfo.apiClientParams,
472
472
  clientParams,
473
473
  )
474
474
  typeof apiClientParams.appid === 'undefined' &&
475
475
  (apiClientParams.appid = this.checkFunctionIdToReturnAppId(functionId))
476
476
  const isColorVerify = this.verifyColorList.includes(functionId)
477
477
  const getReqData = {
478
478
  functionId: functionId,
479
479
  body: JSON.stringify(bodyParams),
480
480
  t: Date.now(),
481
481
  ...apiClientParams,
482
482
  }
483
483
  return http
484
484
  .request({
485
485
  url: this.api.apiFunc,
486
486
  data: getReqData,
487
487
  isColorVerify,
488
488
  })
489
489
  .then((res: ServiceInterFace.RequestPromiseRes) => {
490
490
  const { statusCode, data } = res
491
491
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
492
492
  ok: true,
493
493
  }
494
494
  if (statusCode === 200 && data) {
495
495
  const resCode = Object.prototype.hasOwnProperty.call(res.data, 'code')
496
496
  ? Number(res.data.code)
497
497
  : -1
498
498
  const subCode = Object.prototype.hasOwnProperty.call(
499
499
  res.data,
500
500
  'subCode',
501
501
  )
502
502
  ? Number(res.data.subCode)
503
503
  : -1
504
504
  if (
505
505
  data.success === true ||
506
506
  data.isSuccess ||
507
507
  resCode === 0 ||
508
508
  resCode === 200 ||
509
509
  subCode === 0
510
510
  ) {
511
511
  changeRes = {
512
512
  result: Object.prototype.hasOwnProperty.call(data, 'result')
513
513
  ? data.result
514
514
  : Object.prototype.hasOwnProperty.call(data, 'data')
515
515
  ? data.data
516
516
  : data,
517
517
  code: data.code || 200,
518
518
  ok: true,
519
519
  source: data,
520
520
  }
521
521
  return changeRes
522
522
  } else {
523
523
  changeRes = {
524
524
  ...data,
525
525
  ok: false,
526
526
  statusCode: res.statusCode,
527
527
  }
528
528
  return changeRes
529
529
  }
530
530
  } else {
531
531
  changeRes = {
532
532
  ...data,
533
533
  ok: false,
534
534
  statusCode: res.statusCode,
535
535
  }
536
536
  return changeRes
537
537
  }
538
538
  })
539
539
  .catch(res => {
540
540
  return {
541
541
  ...res,
542
542
  ok: false,
543
543
  } as ServiceInterFace.RequestResponseFormatRes
544
544
  })
545
545
  }
546
546
 
547
547
  async receiveCoupon(param = {}, clientParams) {
548
548
  const loginType = isPc ? { loginType: 3 } : {}
549
549
  return await this.gatewayReq(
550
550
  'receiveShopCoupon',
551
551
  {
552
552
  operation: '3',
553
553
  ...param,
554
554
  },
555
555
  { ...loginType, ...clientParams },
556
556
  )
557
557
  }
558
558
 
559
559
  getCustomerCenterDispatch(params = {}) {
560
560
  return this.gatewayReq('customerCenterDispatch', params, {
561
561
  clientVersion: '9.2.0',
562
562
  client: 'H5',
563
563
  uuid: 88888,
564
564
  appid: 'shopmember_m_jd_com',
565
565
  })
566
566
  }
567
567
 
568
568
  batchAddCart(skuIdsStr, num = 1, showToast = true) {
569
569
  if (skuIdsStr) {
570
570
  return this._addShopGoodCart(`${skuIdsStr}`, `${num}`)
571
571
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
572
572
  if (res?.ok) {
573
573
  showToast &&
574
574
  showSuccessToast({
575
575
  title: '已加入购物车!',
576
576
  })
577
577
  } else {
578
578
  showToast &&
579
579
  showFailToast({
580
580
  title: res?.errMsg || '加购失败,请稍后再试',
581
581
  })
582
582
  }
583
583
  return Promise.resolve(res)
584
584
  })
585
585
  .catch(e => {
586
586
  console.log('调用加购方法异常=======>', e)
587
587
  return Promise.resolve({
588
588
  ok: false,
589
589
  msg: '加购失败,请稍后重试',
590
590
  })
591
591
  })
592
592
  } else {
593
593
  return Promise.resolve({
594
594
  ok: false,
595
595
  msg: '加购失败,请稍后重试',
596
596
  })
597
597
  }
598
598
  }
599
599
 
600
600
  _addShopGoodCart(skuIdsStr, addCardNum = '1') {
601
601
  return new Promise(resolve => {
602
602
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(',') : []
603
603
  if (productIdsArr.length > 0) {
604
604
  if (isJdApp) {
605
605
  console.log('==========>', '原生批量加车!')
606
606
  const nativeAddCartCallBack = `nativeBatchAddCart${Date.now()}`
607
607
  if (!window[nativeAddCartCallBack]) {
608
608
  window[nativeAddCartCallBack] = res => {
609
609
  const getMessageJsonData =
610
610
  typeof res === 'string' ? JSON.parse(res) : res
611
611
  console.info(
612
612
  '获取批量加车原始数据',
613
613
  res,
614
614
  '====转换后的json数据为===',
615
615
  getMessageJsonData,
616
616
  )
617
617
  try {
618
618
  if (isAndroidDevice) {
619
619
  getMessageJsonData?.status === '0'
620
620
  ? resolve({
621
621
  ok: true,
622
622
  msg: '已加入购物车!',
623
623
  })
624
624
  : resolve({
625
625
  ok: false,
626
626
  msg: '加购失败,请稍后重试',
627
627
  })
628
628
  } else if (isIosDevice) {
629
629
  getMessageJsonData?.status === '0' &&
630
630
  getMessageJsonData?.data?.code === 0
631
631
  ? resolve({
632
632
  ok: true,
633
633
  msg: '已加入购物车!',
634
634
  })
635
635
  : resolve({
636
636
  ok: false,
637
637
  msg: '批量加车失败,请稍后重试',
638
638
  })
639
639
  } else {
640
640
  resolve({
641
641
  ok: false,
642
642
  msg: '加购失败,请稍后重试',
643
643
  })
644
644
  }
645
645
  } catch (e) {
646
646
  resolve({
647
647
  ok: false,
648
648
  msg: '加购失败,请稍后重试',
649
649
  })
650
650
  console.warn('批量加车转换数据异常', e)
651
651
  }
652
652
  window[nativeAddCartCallBack] = null
653
653
  }
654
654
  }
655
655
  const productsAddCartList = productIdsArr.map(skuItem => {
656
656
  return isAndroidDevice
657
657
  ? {
658
658
  sku: skuItem,
659
659
  num: addCardNum,
660
660
  }
661
661
  : {
662
662
  productCode: skuItem,
663
663
  buyCount: addCardNum,
664
664
  }
665
665
  })
666
666
  if (isAndroidDevice) {
667
667
  callRouterAndroid({
668
668
  routerURL: `router://JDCartModule/addCartUniformWithUrl?wareList=${JSON.stringify(productsAddCartList)}&businessName=storeModel`,
669
669
  routerParam: {
670
670
  wareList: productsAddCartList,
671
671
  },
672
672
  callBackName: nativeAddCartCallBack,
673
673
  })
674
674
  } else if (isIosDevice) {
675
675
  callRouterIOS({
676
676
  routerURL: 'router://JDCartModule/batchAddService',
677
677
  routerParam: {
678
678
  sourceType: 'h5',
679
679
  sourceValue: '店铺批量加购',
680
680
  businessName: 'storeModel',
681
681
  isNewMode: '1',
682
682
  NotPassWebview: '1',
683
683
  products: productsAddCartList,
684
684
  },
685
685
  callBackName: nativeAddCartCallBack,
686
686
  })
687
687
  }
688
688
  } else if (isMin) {
689
689
  console.log('==========>', '京购批量加车!')
690
690
  const productsAddCartList = productIdsArr.map(skuItem => {
691
691
  return {
692
692
  skuId: skuItem,
693
693
  buyNum: addCardNum,
694
694
  }
695
695
  })
696
696
  global.wxAppBizInstance
697
697
  .addCart({ commAr: productsAddCartList })
698
698
  .then(res => {
699
699
  console.log('dealCartSuccess: ', res)
700
700
  resolve({
701
701
  ok: true,
702
702
  msg: '已加入购物车!',
703
703
  data: res,
704
704
  })
705
705
  })
706
706
  .catch(e => {
707
707
  console.log('京购小程序批量加车失败dealCartFail: ', e)
708
708
  resolve({
709
709
  ok: false,
710
710
  msg: '加购失败,请稍后重试',
711
711
  })
712
712
  })
713
713
  } else {
714
714
  console.log('==========>', 'M站批量加车!')
715
715
  return this.productAddToCart(skuIdsStr, addCardNum).then(res =>
716
716
  resolve(res),
717
717
  )
718
718
  }
719
719
  } else {
720
720
  resolve({
721
721
  ok: false,
722
722
  msg: '加购sku不能为空',
723
723
  })
724
724
  }
725
725
  })
726
726
  }
727
727
 
728
728
  productAddToCart(skuIdsStr, num) {
729
729
  return new Promise(resolve => {
730
730
  if (window.AddcartToolObj) {
731
731
  window.AddcartToolObj.addCart({
732
732
  skuId: skuIdsStr,
733
733
  num,
734
734
  source: 'sjdpyw',
735
735
  actId: '1',
736
736
  loginType: window?.isJingGouMiniViewState ? '11' : '2',
737
737
  sucFun(res) {
738
738
  console.log(
739
739
  'ok,接口请求成功,不一定指的加车成功,加车成功需要看返回码errId为0',
740
740
  res,
741
741
  )
742
742
  if (res.errId === '0' && res.cartJson) {
743
743
  resolve({
744
744
  ok: true,
745
745
  msg: '已加入购物车!',
746
746
  ...res,
747
747
  })
748
748
  } else {
749
749
  if (res.errId === '13') {
750
750
  global.doLogin()
751
751
  } else {
752
752
  resolve({
753
753
  ok: false,
754
754
  msg: '加购失败,请稍后重试',
755
755
  ...res,
756
756
  })
757
757
  }
758
758
  }
759
759
  },
760
760
  failFun(err) {
761
761
  console.log('fail', err)
762
762
  resolve({
763
763
  ok: false,
764
764
  msg: '加购失败,请稍后重试',
765
765
  ...err,
766
766
  })
767
767
  },
768
768
  })
769
769
  } else {
770
770
  resolve({
771
771
  ok: false,
772
772
  msg: '购物车方法检查异常',
773
773
  })
774
774
  }
775
775
  })
776
776
  }
777
777
  bMallGetUserInfo = () => {
778
778
  return getBMallUserInfo()
779
779
  }
780
780
  async bMallAddCart(params = {}) {
781
781
  return await this.gatewayReq('bmall_cartAdd', params, {
782
782
  client: 'H5',
783
783
  clientVersion: '5.5.0',
784
784
  })
785
785
  }
786
786
  async bMallChangeCart(params = {}) {
787
787
  return await this.gatewayReq('bmall_cartChange', params, {
788
788
  client: 'H5',
789
789
  clientVersion: '5.5.0',
790
790
  })
791
791
  }
792
792
  async bMallRemoveCart(params = {}) {
793
793
  return await this.gatewayReq(
794
794
  'bmall_cartRemove',
795
795
  params,
796
796
  {
797
797
  client: 'H5',
798
798
  clientVersion: '5.5.0',
799
799
  },
800
800
  )
801
801
  }
802
802
  async bMallGetOmittedProduct(params = {}) {
803
803
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
804
804
  client: 'H5',
805
805
  clientVersion: '5.5.0',
806
806
  })
807
807
  }
808
808
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
809
809
  const params = await getParams({ ...data, skuId, bMallTag, num })
810
810
  return await this.bMallAddCart(params)
811
811
  }
812
812
  async bMallGetSkuNumService(bMallTag = 1) {
813
813
  const params = await getParams({ bMallTag })
814
814
  delete params.operations
815
815
  return await this.bMallGetOmittedProduct(params)
816
816
  }
817
817
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
818
818
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
819
819
  return await this.bMallRemoveCart(params)
820
820
  }
821
821
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
822
822
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
823
823
  return await this.bMallChangeCart(params)
824
824
  }
825
825
 
826
826
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
827
827
  if (!needRequest && isH5 && window?.bMallCartData) {
828
828
  return window?.bMallCartData
829
829
  }
830
830
  const cartData = await this.bMallGetSkuNumService(bMallTag)
831
831
  let items
832
832
  if (cartData.ok && cartData.result) {
833
833
  items = cartData?.result?.items || {}
834
834
  }
835
835
  if (isH5) {
836
836
  window.bMallCartData = items
837
837
  }
838
838
  return items
839
839
  }
840
840
 
841
841
  async bMallCartHandle(goodItem, num) {
842
842
  try {
843
843
  const {
844
844
  skuUuid,
845
845
  limitUpper,
846
846
  limitLower,
847
847
  } = goodItem
848
848
  let cartNum = Number(num)
849
849
  if (limitLower && cartNum && cartNum < limitLower) {
850
850
  cartNum = limitLower
851
851
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
852
852
  cartNum = limitUpper
853
853
  }
854
854
  if (skuUuid && cartNum > 0) {
855
855
  return this.bMallChangeCartService({
856
856
  ...goodItem,
857
857
  skuUuid,
858
858
  num: cartNum,
859
859
  })
860
860
  } else if (!skuUuid && cartNum > 0) {
861
861
  return this.bMallAddCartService({ ...goodItem, num: cartNum })
862
862
  } else if (skuUuid && !cartNum) {
863
863
  return this.bMallRemoveCartService({
864
864
  ...goodItem,
865
865
  skuUuid,
866
866
  num: cartNum,
867
867
  })
868
868
  } else {
869
869
  console.error('参数不全')
870
870
  return false
871
871
  }
872
872
  } catch (e) {
873
873
  console.error(e)
874
874
  }
875
875
  }