@conecli/cone-render 0.10.1-shop3.5 → 0.10.1-shop3.7

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 (38) hide show
  1. package/dist/common/const.ts +1 -1
  2. package/dist/common/index.h5.ts +1 -1
  3. package/dist/common/index.jd.ts +1 -1
  4. package/dist/common/index.ts +1 -1
  5. package/dist/common/index.weapp.ts +1 -1
  6. package/dist/components/base/CommonFloorHead/index.module.scss +126 -111
  7. package/dist/components/base/CommonFloorHead/index.tsx +1 -1
  8. package/dist/components/base/CustomScrollView/index-back.tsx +1 -0
  9. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  10. package/dist/components/base/Dialog/index.module.scss +11 -0
  11. package/dist/components/base/InViewRender/index.tsx +1 -1
  12. package/dist/components/floorItem.weapp.tsx +1 -1
  13. package/dist/interface/common.ts +1 -1
  14. package/dist/jumpEventReport/const.ts +1 -1
  15. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  16. package/dist/jumpEventReport/web.jd.ts +1 -1
  17. package/dist/libs/taroAppReport.js +2 -2
  18. package/dist/modules/ContainerFloorList/index.h5.module.scss +66 -56
  19. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  20. package/dist/modules/ContainerFloorList/index.tsx +1 -1
  21. package/dist/open/api/shopMember.ts +1 -1
  22. package/dist/open/api/util.ts +1 -1
  23. package/dist/sass/app.h5.scss +252 -224
  24. package/dist/service/fetchGateway.ts +1 -1
  25. package/dist/service/fetchGateway.weapp.ts +1 -0
  26. package/dist/service/http/colorSign.ts +1 -1
  27. package/dist/service/http/const.ts +1 -1
  28. package/dist/service/http/h5Http.ts +1 -1
  29. package/dist/service/requestServer.h5.ts +1 -1
  30. package/dist/service/requestServer.ts +1 -1
  31. package/dist/service/requestServer.weapp.ts +1 -0
  32. package/dist/utils/h5Utils.ts +1 -1
  33. package/dist/utils/index.h5.ts +1 -1
  34. package/dist/utils/index.ts +1 -1
  35. package/dist/utils/index.weapp.ts +1 -1
  36. package/dist/utils/jumpExtMapUtil.js +1 -0
  37. package/dist/utils/utils.ts +1 -1
  38. 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
  isLanguageForEn,
13
12
  isJdApp,
14
13
  isIosDevice,
15
14
  isAndroidDevice,
16
15
  showSuccessToast,
17
16
  showFailToast,
18
17
  isH5,
19
18
  isWxMinAndWxapp,
20
19
  isMin,
21
20
  isPc,
22
21
  sgmCustomReport,
23
22
  getSgmCustomCode,
24
23
  draInterfaceCustomReport,
25
24
  callRouterIOS,
26
25
  callRouterAndroid,
27
26
  cookiesStr: '',
28
27
  requestHeaderContentType: {
29
28
  jsonHeader: {
30
29
  'content-type': 'application/json;charset=utf-8',
31
30
  },
32
31
  formDataHeader: {
33
32
  'content-type': 'application/x-www-form-urlencoded',
34
33
  },
35
34
  },
36
35
  requestBaseParam: {
37
36
  data: null,
38
37
  header: {
39
38
  'content-type': 'application/json;charset=utf-8',
40
39
  },
41
40
  },
42
41
  timeOut: 7000,
43
42
  apiClientParams: {
44
43
  clientVersion:
45
44
  isJdApp && jdAppVersionStr !== '' ? jdAppVersionStr : '11.0.0',
46
45
  client: isJdApp ? (isIosDevice ? 'apple' : 'android') : isPc ? 'pc' : 'wh5',
47
46
  area: '1_72_2799_0',
48
47
  screen: `${Math.ceil(window.screen?.width * devicePixelRatio)}*${Math.ceil(
49
48
  window.screen?.height * devicePixelRatio,
50
49
  )}`,
51
50
  uuid: UUID,
52
51
  },
53
52
  public addressFetchInfo: {
54
53
  reqState: boolean
55
54
  promiseInstance: null | Promise<any>
56
55
  }
57
56
  public getPromotionConfig: {
58
57
  projectId: null | string | number
59
58
  pageId: null | string | number
60
59
  }
61
60
  public resInfo: ServiceInterFace.HttpRequestInfo
62
61
  public api: ServiceInterFace.HttpApi
63
62
  public isPageDomain: boolean
64
63
  public verifyColorList: string[]
65
64
  constructor(opt) {
66
65
  this._init()
67
66
  this.addressFetchInfo = {
68
67
  reqState: false,
69
68
  promiseInstance: null,
70
69
  }
71
70
  this.getPromotionConfig = {
72
71
  projectId: null,
73
72
  pageId: null,
74
73
  }
75
74
  this._userAreaUpdateListen()
76
75
  this.resInfo = this._getResConfig(opt)
77
76
  this.api = api
78
77
  this.isPageDomain = isH5
79
78
  ? window?.location?.hostname === PAGES_DOMAIN
80
79
  : false
81
80
  this.verifyColorList = [
82
81
  ...MobileVerifyColorList,
83
82
  ...AppVerifyColorList,
84
83
  ...JshopxVerifyColorList,
85
84
  ...BMallVerifyColorList,
86
85
  ]
87
86
  }
88
87
  _init(): void {
89
88
  httpInterceptors.forEach((item) => {
90
89
  Taro.addInterceptor((chain) => item(chain))
91
90
  })
92
91
  }
93
92
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
94
93
  return Object.assign({}, DefaultConfig, opt)
95
94
  }
96
95
 
97
96
  _userAreaUpdateListen() {
98
97
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, (area) => {
99
98
  this.updateApiClientParamsResInfo({
100
99
  area,
101
100
  })
102
101
  })
103
102
  }
104
103
  updateApiClientParamsResInfo(opt = {}) {
105
104
  this.resInfo.apiClientParams = {
106
105
  ...this.resInfo.apiClientParams,
107
106
  ...opt,
108
107
  }
109
108
  }
110
109
 
111
110
  checkFunctionIdToReturnAppId(functionId) {
112
111
  if (JshopxColorFunctionIdList.includes(functionId)) {
113
112
  return APPID.JSHOPX_COLOR_APPID
114
113
  } else if (
115
114
  this.isPageDomain &&
116
115
  PagesColorFunctionIdList.includes(functionId)
117
116
  ) {
118
117
  return APPID.PAGES_COLOR_APPID
119
118
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
120
119
  return APPID.SHOP_MEMBER_COLOR_APPID
121
120
  } else if (B2BColorFunctionIdList.includes(functionId)) {
122
121
  return APPID.B2B_COLOR_APPID
123
122
  } else if (isPc) {
124
123
  return APPID.MALL_COLOR_APPID
125
124
  } else {
126
125
  return APPID.SHOP_COLOR_APPID
127
126
  }
128
127
  }
129
128
 
130
129
  gatewayReq(
131
130
  functionId: string,
132
131
  bodyParams = {},
133
132
  clientParams = {},
134
133
  ): Promise<any> {
135
134
  if (
136
135
  functionId === 'receiveShopCoupon' &&
137
136
  ((isH5 &&
138
137
  (window?.isJingGouMiniViewState || window?.isJingxiMiniViewState)) ||
139
138
  isWxMinAndWxapp)
140
139
  ) {
141
140
  clientParams = Object.assign(
142
141
  {},
143
142
  {
144
143
  loginType: '1',
145
144
  loginWQBiz: WXAPP_BIZ_KEY,
146
145
  },
147
146
  clientParams,
148
147
  )
149
148
  }
150
149
  const apiClientParams = Object.assign(
151
150
  {},
152
151
  this.resInfo.apiClientParams,
153
152
  clientParams,
154
153
  )
155
154
  typeof apiClientParams.appid === 'undefined' &&
156
155
  (apiClientParams.appid = this.checkFunctionIdToReturnAppId(functionId))
157
156
  const isColorVerify = this.verifyColorList.includes(functionId)
158
157
  const getReqData = {
159
158
  functionId: functionId,
160
159
  body: JSON.stringify(bodyParams),
161
160
  t: Date.now(),
162
161
  ...apiClientParams,
163
162
  }
164
163
  const requestParams = {
165
164
  functionId: getReqData?.functionId,
166
165
  body: getReqData?.body,
167
166
  appid: getReqData?.appid,
168
167
  client: getReqData?.client,
169
168
  clientVersion: getReqData?.clientVersion,
170
169
  area: getReqData?.area,
171
170
  requestTimeStamp: getReqData?.t,
172
171
  }
173
172
  return http
174
173
  .request({
175
174
  url: this.api.apiFunc,
176
175
  data: getReqData,
177
176
  isColorVerify,
178
177
  })
179
178
  .then((res: ServiceInterFace.RequestPromiseRes) => {
180
179
  const { statusCode, data, status, msg } = res
181
180
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
182
181
  ok: true,
183
182
  }
184
183
  if ((statusCode === 200 || status === '0') && data) {
185
184
  changeRes = this.dealResponseFormatRes(data, getReqData)
186
185
  return changeRes
187
186
  } else {
188
187
  sgmCustomReport({
189
188
  code: getSgmCustomCode('interface_data_error'),
190
189
  msg: {
191
190
  subMsg: '接口请求异常',
192
191
  functionId,
193
192
  statusCode,
194
193
  source: 'remote',
195
194
  status,
196
195
  msg,
197
196
  requestParams,
198
197
  },
199
198
  })
200
199
  draInterfaceCustomReport({
201
200
  ...getReqData,
202
201
  ...res,
203
202
  source: 'remote',
204
203
  })
205
204
  changeRes = {
206
205
  ...data,
207
206
  statusCode,
208
207
  status,
209
208
  msg,
210
209
  ok: false,
211
210
  }
212
211
  return changeRes
213
212
  }
214
213
  })
215
214
  .catch((res) => {
216
215
  const propertyNames = Object.getOwnPropertyNames(res)
217
216
  const resObject = {}
218
217
  propertyNames.forEach((propertyName) => {
219
218
  resObject[propertyName] = res[propertyName]
220
219
  })
221
220
  sgmCustomReport({
222
221
  code: getSgmCustomCode('interface_data_error'),
223
222
  msg: {
224
223
  subMsg: '接口请求错误',
225
224
  functionId,
226
225
  source: 'remote',
227
226
  requestParams,
228
227
  catchError: resObject,
229
228
  },
230
229
  })
231
230
  draInterfaceCustomReport({
232
231
  ...getReqData,
233
232
  ...resObject,
234
233
  source: 'remote',
235
234
  })
236
235
  return {
237
236
  ...resObject,
238
237
  ok: false,
239
238
  } as ServiceInterFace.RequestResponseFormatRes
240
239
  })
241
240
  }
242
241
 
243
242
  dealResponseFormatRes(data, reqData) {
244
243
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
245
244
  ok: true,
246
245
  }
247
246
  const resCode = Object.prototype.hasOwnProperty.call(data, 'code')
248
247
  ? Number(data.code)
249
248
  : -1
250
249
  const subCode = Object.prototype.hasOwnProperty.call(data, 'subCode')
251
250
  ? Number(data.subCode)
252
251
  : -1
253
252
  if (
254
253
  data.success === true ||
255
254
  data.isSuccess ||
256
255
  resCode === 0 ||
257
256
  resCode === 200 ||
258
257
  subCode === 0
259
258
  ) {
260
259
  changeRes = {
261
260
  result: Object.prototype.hasOwnProperty.call(data, 'result')
262
261
  ? data.result
263
262
  : Object.prototype.hasOwnProperty.call(data, 'data')
264
263
  ? data.data
265
264
  : data,
266
265
  code: data.code ?? 200,
267
266
  ok: true,
268
267
  source: data,
269
268
  }
270
269
  return changeRes
271
270
  } else {
272
271
  changeRes = {
273
272
  ...data,
274
273
  ok: false,
275
274
  }
276
275
  if (reqData && resCode !== 3) {
277
276
  const getReportMsgData = reqData['hybridId']
278
277
  ? {
279
278
  subMsg: '预加载接口请求数据异常',
280
279
  hybridId: reqData?.hybridId,
281
280
  requestId: reqData?.requestId,
282
281
  param: reqData?.param,
283
282
  source: 'remote',
284
283
  }
285
284
  : {
286
285
  subMsg: '接口请求返回数据异常',
287
286
  functionId: reqData?.functionId,
288
287
  code: resCode,
289
288
  source: 'remote',
290
289
  requestParams: {
291
290
  functionId: reqData?.functionId,
292
291
  body: reqData?.body,
293
292
  appid: reqData?.appid,
294
293
  client: reqData?.client,
295
294
  clientVersion: reqData?.clientVersion,
296
295
  area: reqData?.area,
297
296
  requestTimeStamp: reqData?.t,
298
297
  },
299
298
  resData: data,
300
299
  }
301
300
  sgmCustomReport({
302
301
  code: getSgmCustomCode('interface_data_error'),
303
302
  msg: getReportMsgData,
304
303
  })
305
304
  draInterfaceCustomReport({
306
305
  ...reqData,
307
306
  ...data,
308
307
  source: 'remote',
309
308
  })
310
309
  }
311
310
  return changeRes
312
311
  }
313
312
  }
314
313
 
315
314
  async receiveCoupon(param = {}, clientParams) {
316
315
  const loginType = isPc ? { loginType: 3 } : {}
317
316
  return await this.gatewayReq(
318
317
  'receiveShopCoupon',
319
318
  {
320
319
  operation: '3',
321
320
  ...param,
322
321
  },
323
322
  { ...loginType, ...clientParams },
324
323
  )
325
324
  }
326
325
 
327
326
  getCustomerCenterDispatch(params = {}) {
328
327
  return this.gatewayReq('customerCenterDispatch', params, {
329
328
  clientVersion: '9.2.0',
330
329
  client: 'H5',
331
330
  uuid: 88888,
332
331
  appid: 'shopmember_m_jd_com',
333
332
  })
334
333
  }
335
334
 
336
335
  batchAddCart(...args) {
337
336
  let skuIds, num, showToast, giftCard
338
337
  if (['number', 'string'].includes(typeof args[0])) {
339
338
  ;[skuIds, num = 1, showToast = true, giftCard = false] = args
340
339
  } else if (typeof args[0] === 'object' && args[0] !== null) {
341
340
  const params = args[0]
342
341
  skuIds = params.skuIds
343
342
  num = params.num || 1
344
343
  showToast = params.showToast !== undefined ? params.showToast : true
345
344
  giftCard = params.giftCard !== undefined ? params.giftCard : false
346
345
  } else {
347
346
  console.error('batchAddCart() Invalid arguments!', args)
348
347
  const msg = isLanguageForEn
349
348
  ? 'Please retry later'
350
349
  : '加入购物车失败,请稍后重试!'
351
350
  showFailToast({
352
351
  title: msg,
353
352
  })
354
353
  return Promise.resolve({
355
354
  ok: false,
356
355
  msg,
357
356
  })
358
357
  }
359
358
  const addToWhereText = giftCard ? '购物清单' : '购物车'
360
359
  const successMsg = isLanguageForEn ? 'Success' : `加入${addToWhereText}成功`
361
360
  const failMsg = isLanguageForEn
362
361
  ? 'Please retry later'
363
362
  : `加入${addToWhereText}失败,请稍后重试!`
364
363
  if (skuIds) {
365
364
  return this._addShopGoodCart(`${skuIds}`, `${num}`, { giftCard })
366
365
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
367
366
  if (res?.ok) {
368
367
  if (showToast && !res?.isOpenApp)
369
368
  showSuccessToast({
370
369
  title: successMsg,
371
370
  })
372
371
  } else {
373
372
  showToast &&
374
373
  showFailToast({
375
374
  title: res?.errMsg || failMsg,
376
375
  })
377
376
  }
378
377
  return Promise.resolve(res)
379
378
  })
380
379
  .catch((e) => {
381
380
  console.log('调用加购方法异常=======>', e)
382
381
  return Promise.resolve({
383
382
  ok: false,
384
383
  msg: failMsg,
385
384
  })
386
385
  })
387
386
  } else {
388
387
  return Promise.resolve({
389
388
  ok: false,
390
389
  msg: failMsg,
391
390
  })
392
391
  }
393
392
  }
394
393
 
395
394
  async giftCardAddCart(skuList, num) {
396
395
  const loginType = isPc ? { loginType: 3 } : {}
397
396
  return this.gatewayReq(
398
397
  'giftCardAddCart',
399
398
  {
400
399
  skuList,
401
400
  num: Number(num),
402
401
  },
403
402
  { ...loginType },
404
403
  )
405
404
  }
406
405
 
407
406
  _addShopGoodCart(skuIdsStr, addCardNum = '1', { giftCard }) {
408
407
  return new Promise((resolve) => {
409
408
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(',') : []
410
409
  if (productIdsArr.length > 0) {
411
410
  if (giftCard) {
412
411
  this.giftCardAddCart(productIdsArr, addCardNum)
413
412
  .then((res) => {
414
413
  if (res?.code === '0' && res?.result?.value) {
415
414
  resolve({
416
415
  ok: true,
417
416
  })
418
417
  } else {
419
418
  resolve({
420
419
  ok: false,
421
420
  msg: '加购失败,请稍后重试',
422
421
  })
423
422
  }
424
423
  })
425
424
  .catch((e) => {
426
425
  console.error('礼品卡加车失败: ', e)
427
426
  resolve({
428
427
  ok: false,
429
428
  msg: '加购失败,请稍后重试',
430
429
  })
431
430
  })
432
431
  } else if (isJdApp) {
433
432
  console.log('==========>', '原生批量加车!')
434
433
  const nativeAddCartCallBack = `nativeBatchAddCart${Date.now()}`
435
434
  if (!window[nativeAddCartCallBack]) {
436
435
  window[nativeAddCartCallBack] = (res) => {
437
436
  const getMessageJsonData =
438
437
  typeof res === 'string' ? JSON.parse(res) : res
439
438
  console.info(
440
439
  '获取批量加车原始数据',
441
440
  res,
442
441
  '====转换后的json数据为===',
443
442
  getMessageJsonData,
444
443
  )
445
444
  try {
446
445
  if (isAndroidDevice) {
447
446
  getMessageJsonData?.status === '0'
448
447
  ? resolve({
449
448
  ok: true,
450
449
  msg: '已加入购物车!',
451
450
  })
452
451
  : resolve({
453
452
  ok: false,
454
453
  msg: '加购失败,请稍后重试',
455
454
  })
456
455
  } else if (isIosDevice) {
457
456
  getMessageJsonData?.status === '0' &&
458
457
  getMessageJsonData?.data?.code === 0
459
458
  ? resolve({
460
459
  ok: true,
461
460
  msg: '已加入购物车!',
462
461
  })
463
462
  : resolve({
464
463
  ok: false,
465
464
  msg: '批量加车失败,请稍后重试',
466
465
  })
467
466
  } else {
468
467
  resolve({
469
468
  ok: false,
470
469
  msg: '加购失败,请稍后重试',
471
470
  })
472
471
  }
473
472
  } catch (e) {
474
473
  resolve({
475
474
  ok: false,
476
475
  msg: '加购失败,请稍后重试',
477
476
  })
478
477
  console.warn('批量加车转换数据异常', e)
479
478
  }
480
479
  window[nativeAddCartCallBack] = null
481
480
  }
482
481
  }
483
482
  const productsAddCartList = productIdsArr.map((skuItem) => {
484
483
  return isAndroidDevice
485
484
  ? {
486
485
  sku: skuItem,
487
486
  num: addCardNum,
488
487
  }
489
488
  : {
490
489
  productCode: skuItem,
491
490
  buyCount: addCardNum,
492
491
  }
493
492
  })
494
493
  if (isAndroidDevice) {
495
494
  const androidProductsStr = JSON.stringify(productsAddCartList)
496
495
  callRouterAndroid({
497
496
  routerURL: `router://JDCartModule/addCartUniformWithUrl?wareList=${androidProductsStr}&businessName=storeModel`,
498
497
  routerParam: {
499
498
  wareList: productsAddCartList,
500
499
  },
501
500
  callBackName: nativeAddCartCallBack,
502
501
  })
503
502
  } else if (isIosDevice) {
504
503
  if (isLowAppVer) {
505
504
  const lowVersionAppList = productIdsArr.map((skuItem) => {
506
505
  return {
507
506
  sku: skuItem,
508
507
  num: addCardNum,
509
508
  }
510
509
  })
511
510
  const lowVersionAppListStr = JSON.stringify(lowVersionAppList)
512
511
  const url = `openApp.jdMobile://virtual?params={"category":"jump","des":"updateCartNum","sourceValue":"店铺批量加购","sourceType":"h5","businessName":"storeModel","wareList":${lowVersionAppListStr}}`
513
512
  jump.side.jdJumpToWeb(url, {})
514
513
  resolve({
515
514
  ok: true,
516
515
  isOpenApp: true,
517
516
  msg: '加购完成, 加购结果请点击购物车确认',
518
517
  })
519
518
  } else {
520
519
  callRouterIOS({
521
520
  routerURL: 'router://JDCartModule/batchAddService',
522
521
  routerParam: {
523
522
  sourceType: 'h5',
524
523
  sourceValue: '店铺批量加购',
525
524
  businessName: 'storeModel',
526
525
  isNewMode: '1',
527
526
  NotPassWebview: '1',
528
527
  products: productsAddCartList,
529
528
  },
530
529
  callBackName: nativeAddCartCallBack,
531
530
  })
532
531
  }
533
532
  }
534
533
  } else if (isMin) {
535
534
  console.log('==========>', '京购批量加车!')
536
535
  const productsAddCartList = productIdsArr.map((skuItem) => {
537
536
  return {
538
537
  skuId: skuItem,
539
538
  buyNum: addCardNum,
540
539
  }
541
540
  })
542
541
  global.wxAppBizInstance
543
542
  .addCart({ commArr: productsAddCartList })
544
543
  .then((res) => {
545
544
  console.log('dealCartSuccess: ', res)
546
545
  resolve({
547
546
  ok: true,
548
547
  msg: '已加入购物车!',
549
548
  data: res,
550
549
  })
551
550
  })
552
551
  .catch((e) => {
553
552
  console.log('京购小程序批量加车失败dealCartFail: ', e)
554
553
  resolve({
555
554
  ok: false,
556
555
  msg: '加购失败,请稍后重试',
557
556
  })
558
557
  })
559
558
  } else {
560
559
  console.log('==========>', 'M站批量加车!')
561
560
  return this.productAddToCart(skuIdsStr, addCardNum).then((res) =>
562
561
  resolve(res),
563
562
  )
564
563
  }
565
564
  } else {
566
565
  resolve({
567
566
  ok: false,
568
567
  msg: '加购sku不能为空',
569
568
  })
570
569
  }
571
570
  })
572
571
  }
573
572
 
574
573
  productAddToCart(skuIdsStr, num) {
575
574
  return new Promise((resolve) => {
576
575
  if (window.AddcartToolObj) {
577
576
  window.AddcartToolObj.addCart({
578
577
  skuId: skuIdsStr,
579
578
  num,
580
579
  source: 'sjdpyw',
581
580
  actId: '1',
582
581
  loginType: window?.isJingGouMiniViewState ? '11' : '2',
583
582
  sucFun(res) {
584
583
  console.log(
585
584
  'ok,接口请求成功,不一定指的加车成功,加车成功需要看返回码errId为0',
586
585
  res,
587
586
  )
588
587
  if (res.errId === '0' && res.cartJson) {
589
588
  resolve({
590
589
  ok: true,
591
590
  msg: '已加入购物车!',
592
591
  ...res,
593
592
  })
594
593
  } else {
595
594
  if (res.errId === '13') {
596
595
  global.doLogin()
597
596
  } else {
598
597
  resolve({
599
598
  ok: false,
600
599
  msg: '加购失败,请稍后重试',
601
600
  ...res,
602
601
  })
603
602
  }
604
603
  }
605
604
  },
606
605
  failFun(err) {
607
606
  console.log('fail', err)
608
607
  resolve({
609
608
  ok: false,
610
609
  msg: '加购失败,请稍后重试',
611
610
  ...err,
612
611
  })
613
612
  },
614
613
  })
615
614
  } else {
616
615
  resolve({
617
616
  ok: false,
618
617
  msg: '购物车方法检查异常',
619
618
  })
620
619
  }
621
620
  })
622
621
  }
623
622
  bMallGetUserInfo = () => {
624
623
  return getBMallUserInfo()
625
624
  }
626
625
  async bMallAddCart(params = {}) {
627
626
  return await this.gatewayReq('bmall_cartAdd', params, {
628
627
  client: 'H5',
629
628
  clientVersion: '5.5.0',
630
629
  })
631
630
  }
632
631
  async bMallChangeCart(params = {}) {
633
632
  return await this.gatewayReq('bmall_cartChange', params, {
634
633
  client: 'H5',
635
634
  clientVersion: '5.5.0',
636
635
  })
637
636
  }
638
637
  async bMallRemoveCart(params = {}) {
639
638
  return await this.gatewayReq(
640
639
  'bmall_cartRemove',
641
640
  params,
642
641
  {
643
642
  client: 'H5',
644
643
  clientVersion: '5.5.0',
645
644
  },
646
645
  )
647
646
  }
648
647
  async bMallGetOmittedProduct(params = {}) {
649
648
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
650
649
  client: 'H5',
651
650
  clientVersion: '5.5.0',
652
651
  })
653
652
  }
654
653
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
655
654
  const params = await getParams({ ...data, skuId, bMallTag, num })
656
655
  return await this.bMallAddCart(params)
657
656
  }
658
657
  async bMallGetSkuNumService(bMallTag = 1) {
659
658
  const params = await getParams({ bMallTag })
660
659
  delete params.operations
661
660
  return await this.bMallGetOmittedProduct(params)
662
661
  }
663
662
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
664
663
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
665
664
  return await this.bMallRemoveCart(params)
666
665
  }
667
666
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
668
667
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
669
668
  return await this.bMallChangeCart(params)
670
669
  }
671
670
 
672
671
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
673
672
  if (!needRequest && isH5 && window?.bMallCartData) {
674
673
  return window?.bMallCartData
675
674
  }
676
675
  const cartData = await this.bMallGetSkuNumService(bMallTag)
677
676
  let items
678
677
  if (cartData.ok && cartData.result) {
679
678
  items = cartData?.result?.items || {}
680
679
  }
681
680
  if (isH5) {
682
681
  window.bMallCartData = items
683
682
  }
684
683
  return items
685
684
  }
686
685
 
687
686
  async bMallCartHandle(goodItem, num) {
688
687
  try {
689
688
  const {
690
689
  skuUuid,
691
690
  limitUpper,
692
691
  limitLower,
693
692
  } = goodItem
694
693
  let cartNum = Number(num)
695
694
  if (limitLower && cartNum && cartNum < limitLower) {
696
695
  cartNum = limitLower
697
696
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
698
697
  cartNum = limitUpper
699
698
  }
700
699
  if (skuUuid && cartNum > 0) {
701
700
  return this.bMallChangeCartService({
702
701
  ...goodItem,
703
702
  skuUuid,
704
703
  num: cartNum,
705
704
  })
706
705
  } else if (!skuUuid && cartNum > 0) {
707
706
  return this.bMallAddCartService({ ...goodItem, num: cartNum })
708
707
  } else if (skuUuid && !cartNum) {
709
708
  return this.bMallRemoveCartService({
710
709
  ...goodItem,
711
710
  skuUuid,
712
711
  num: cartNum,
713
712
  })
714
713
  } else {
715
714
  console.error('参数不全')
716
715
  return false
717
716
  }
718
717
  } catch (e) {
719
718
  console.error(e)
720
719
  }
721
720
  }
721
+ import Taro from '@tarojs/taro';
722
722
  APPID,
723
723
  JshopxColorFunctionIdList,
724
724
  PagesColorFunctionIdList,
725
725
  PAGES_DOMAIN,
726
726
  B2BColorFunctionIdList,
727
727
  MobileVerifyColorList,
728
728
  AppVerifyColorList,
729
729
  JshopxVerifyColorList,
730
730
  BMallVerifyColorList,
731
731
  shopMemberColorFunctionIdList,
732
732
  isLanguageForEn,
733
733
  isJdApp,
734
734
  isIosDevice,
735
735
  isAndroidDevice,
736
736
  showSuccessToast,
737
737
  showFailToast,
738
738
  isH5,
739
739
  isWxMinAndWxapp,
740
740
  isMin,
741
741
  isPc,
742
742
  cookiesStr: '',
743
743
  requestHeaderContentType: {
744
744
  jsonHeader: {
745
745
  'content-type': 'application/json;charset=utf-8',
746
746
  },
747
747
  formDataHeader: {
748
748
  'content-type': 'application/x-www-form-urlencoded',
749
749
  },
750
750
  },
751
751
  requestBaseParam: {
752
752
  data: null,
753
753
  header: {
754
754
  'content-type': 'application/json;charset=utf-8',
755
755
  },
756
756
  },
757
757
  timeOut: 7000,
758
758
  apiClientParams: {
759
759
  appid: 'wx_mini_app',
760
760
  clientVersion: '11.0.0',
761
761
  client: 'wh5',
762
762
  area: '1_72_2799_0',
763
763
  screen: `${Math.ceil(
764
764
  getSystemInfo?.screenWidth * devicePixelRatio,
765
765
  )}*${Math.ceil(getSystemInfo?.screenHeight * devicePixelRatio)}`,
766
766
  uuid: UUID,
767
767
  loginType: '11',
768
768
  },
769
769
  public addressFetchInfo: {
770
770
  reqState: boolean
771
771
  promiseInstance: null | Promise<any>
772
772
  }
773
773
  public getPromotionConfig: {
774
774
  projectId: null | string | number
775
775
  pageId: null | string | number
776
776
  }
777
777
  public resInfo: ServiceInterFace.HttpRequestInfo
778
778
  public api: ServiceInterFace.HttpApi
779
779
  public isPageDomain: boolean
780
780
  public verifyColorList: string[]
781
781
  constructor(opt) {
782
782
  this._init()
783
783
  this.addressFetchInfo = {
784
784
  reqState: false,
785
785
  promiseInstance: null,
786
786
  }
787
787
  this.getPromotionConfig = {
788
788
  projectId: null,
789
789
  pageId: null,
790
790
  }
791
791
  this._userAreaUpdateListen()
792
792
  this.resInfo = this._getResConfig(opt)
793
793
  this.api = api
794
794
  this.isPageDomain = isH5
795
795
  ? window?.location?.hostname === PAGES_DOMAIN
796
796
  : false
797
797
  this.verifyColorList = [
798
798
  ...MobileVerifyColorList,
799
799
  ...AppVerifyColorList,
800
800
  ...JshopxVerifyColorList,
801
801
  ...BMallVerifyColorList,
802
802
  ]
803
803
  }
804
804
  _init(): void {
805
805
  httpInterceptors.forEach((item) => {
806
806
  Taro.addInterceptor((chain) => item(chain))
807
807
  })
808
808
  }
809
809
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
810
810
  return Object.assign({}, DefaultConfig, opt)
811
811
  }
812
812
 
813
813
  _userAreaUpdateListen() {
814
814
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, (area) => {
815
815
  this.updateApiClientParamsResInfo({
816
816
  area,
817
817
  })
818
818
  })
819
819
  }
820
820
  updateApiClientParamsResInfo(opt = {}) {
821
821
  this.resInfo.apiClientParams = {
822
822
  ...this.resInfo.apiClientParams,
823
823
  ...opt,
824
824
  }
825
825
  }
826
826
 
827
827
  checkFunctionIdToReturnAppId(functionId) {
828
828
  if (JshopxColorFunctionIdList.includes(functionId)) {
829
829
  return APPID.JSHOPX_COLOR_APPID
830
830
  } else if (
831
831
  this.isPageDomain &&
832
832
  PagesColorFunctionIdList.includes(functionId)
833
833
  ) {
834
834
  return APPID.PAGES_COLOR_APPID
835
835
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
836
836
  return APPID.SHOP_MEMBER_COLOR_APPID
837
837
  } else if (B2BColorFunctionIdList.includes(functionId)) {
838
838
  return APPID.B2B_COLOR_APPID
839
839
  } else if (isPc) {
840
840
  return APPID.MALL_COLOR_APPID
841
841
  } else {
842
842
  return APPID.SHOP_COLOR_APPID
843
843
  }
844
844
  }
845
845
 
846
846
  gatewayReq(functionId: string, bodyParams = {}, clientParams = {}): Promise<any> {
847
847
  if (functionId === 'receiveShopCoupon') {
848
848
  clientParams = Object.assign(
849
849
  {},
850
850
  {
851
851
  loginType: '1',
852
852
  loginWQBiz: WXAPP_BIZ_KEY,
853
853
  },
854
854
  clientParams,
855
855
  )
856
856
  }
857
857
  const apiClientParams = Object.assign(
858
858
  {},
859
859
  this.resInfo.apiClientParams,
860
860
  clientParams,
861
861
  )
862
862
  const isColorVerify = this.verifyColorList.includes(functionId);
863
863
  const getReqData = {
864
864
  functionId: functionId,
865
865
  body: JSON.stringify(bodyParams),
866
866
  t: Date.now(),
867
867
  ...apiClientParams,
868
868
  }
869
869
  const requestParams = {
870
870
  functionId: getReqData?.functionId,
871
871
  body: getReqData?.body,
872
872
  appid: getReqData?.appid,
873
873
  client: getReqData?.client,
874
874
  clientVersion: getReqData?.clientVersion,
875
875
  area: getReqData?.area,
876
876
  requestTimeStamp: getReqData?.t,
877
877
  }
878
878
  return http
879
879
  .request({
880
880
  url: this.api.apiFunc,
881
881
  data: getReqData,
882
882
  isColorVerify,
883
883
  })
884
884
  .then((res: ServiceInterFace.RequestPromiseRes) => {
885
885
  const { statusCode, data, status, msg } = res
886
886
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
887
887
  ok: true,
888
888
  }
889
889
  if ((statusCode === 200 || status === '0') && data) {
890
890
  changeRes = this.dealResponseFormatRes(data, getReqData)
891
891
  return changeRes
892
892
  } else {
893
893
  sgmCustomReport({
894
894
  code: getSgmCustomCode('interface_data_error'),
895
895
  msg: {
896
896
  subMsg: '接口请求异常',
897
897
  functionId,
898
898
  statusCode,
899
899
  source: 'remote',
900
900
  status,
901
901
  msg,
902
902
  requestParams,
903
903
  },
904
904
  })
905
905
  draInterfaceCustomReport({
906
906
  ...getReqData,
907
907
  ...res,
908
908
  source: 'remote',
909
909
  })
910
910
  changeRes = {
911
911
  ...data,
912
912
  statusCode,
913
913
  status,
914
914
  msg,
915
915
  ok: false,
916
916
  }
917
917
  return changeRes
918
918
  }
919
919
  })
920
920
  .catch((res) => {
921
921
  const propertyNames = Object.getOwnPropertyNames(res)
922
922
  const resObject = {}
923
923
  propertyNames.forEach((propertyName) => {
924
924
  resObject[propertyName] = res[propertyName]
925
925
  })
926
926
  sgmCustomReport({
927
927
  code: getSgmCustomCode('interface_data_error'),
928
928
  msg: {
929
929
  subMsg: '接口请求错误',
930
930
  functionId,
931
931
  source: 'remote',
932
932
  requestParams,
933
933
  catchError: resObject,
934
934
  },
935
935
  })
936
936
  draInterfaceCustomReport({
937
937
  ...getReqData,
938
938
  ...resObject,
939
939
  source: 'remote',
940
940
  })
941
941
  return {
942
942
  ...resObject,
943
943
  ok: false,
944
944
  } as ServiceInterFace.RequestResponseFormatRes
945
945
  })
946
946
  }
947
947
 
948
948
  dealResponseFormatRes(data, reqData) {
949
949
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
950
950
  ok: true,
951
951
  }
952
952
  const resCode = Object.prototype.hasOwnProperty.call(data, 'code')
953
953
  ? Number(data.code)
954
954
  : -1
955
955
  const subCode = Object.prototype.hasOwnProperty.call(data, 'subCode')
956
956
  ? Number(data.subCode)
957
957
  : -1
958
958
  if (
959
959
  data.success === true ||
960
960
  data.isSuccess ||
961
961
  resCode === 0 ||
962
962
  resCode === 200 ||
963
963
  subCode === 0
964
964
  ) {
965
965
  changeRes = {
966
966
  result: Object.prototype.hasOwnProperty.call(data, 'result')
967
967
  ? data.result
968
968
  : Object.prototype.hasOwnProperty.call(data, 'data')
969
969
  ? data.data
970
970
  : data,
971
971
  code: data.code ?? 200,
972
972
  ok: true,
973
973
  source: data,
974
974
  }
975
975
  return changeRes
976
976
  } else {
977
977
  changeRes = {
978
978
  ...data,
979
979
  ok: false,
980
980
  }
981
981
  if (reqData && resCode !== 3) {
982
982
  const getReportMsgData = reqData['hybridId']
983
983
  ? {
984
984
  subMsg: '预加载接口请求数据异常',
985
985
  hybridId: reqData?.hybridId,
986
986
  requestId: reqData?.requestId,
987
987
  param: reqData?.param,
988
988
  source: 'remote',
989
989
  }
990
990
  : {
991
991
  subMsg: '接口请求返回数据异常',
992
992
  functionId: reqData?.functionId,
993
993
  code: resCode,
994
994
  source: 'remote',
995
995
  requestParams: {
996
996
  functionId: reqData?.functionId,
997
997
  body: reqData?.body,
998
998
  appid: reqData?.appid,
999
999
  client: reqData?.client,
1000
1000
  clientVersion: reqData?.clientVersion,
1001
1001
  area: reqData?.area,
1002
1002
  requestTimeStamp: reqData?.t,
1003
1003
  },
1004
1004
  resData: data,
1005
1005
  }
1006
1006
  sgmCustomReport({
1007
1007
  code: getSgmCustomCode('interface_data_error'),
1008
1008
  msg: getReportMsgData,
1009
1009
  })
1010
1010
  draInterfaceCustomReport({
1011
1011
  ...reqData,
1012
1012
  ...data,
1013
1013
  source: 'remote',
1014
1014
  })
1015
1015
  }
1016
1016
  return changeRes
1017
1017
  }
1018
1018
  }
1019
1019
 
1020
1020
  async receiveCoupon(param = {}, clientParams) {
1021
1021
  console.warn('receiveCoupon 方法在微信京购小程序环境未经验证,请不要使用!');
1022
1022
  return await this.gatewayReq(
1023
1023
  'receiveShopCoupon',
1024
1024
  {
1025
1025
  operation: '3',
1026
1026
  ...param,
1027
1027
  },
1028
1028
  { ...clientParams },
1029
1029
  );
1030
1030
  }
1031
1031
 
1032
1032
  getCustomerCenterDispatch(params = {}) {
1033
1033
  return this.gatewayReq('customerCenterDispatch', params, {
1034
1034
  clientVersion: '9.2.0',
1035
1035
  client: 'H5',
1036
1036
  uuid: 88888,
1037
1037
  appid: 'shopmember_m_jd_com',
1038
1038
  })
1039
1039
  }
1040
1040
 
1041
1041
  batchAddCart(...args) {
1042
1042
  let skuIds, num, showToast, giftCard;
1043
1043
  if (['number', 'string'].includes(typeof args[0])) {
1044
1044
  [skuIds, num = 1, showToast = true, giftCard = false] = args;
1045
1045
  } else if (typeof args[0] === 'object' && args[0] !== null) {
1046
1046
  const params = args[0];
1047
1047
  skuIds = params.skuIds;
1048
1048
  num = params.num || 1;
1049
1049
  showToast = params.showToast !== undefined ? params.showToast : true;
1050
1050
  giftCard = params.giftCard !== undefined ? params.giftCard : false;
1051
1051
  } else {
1052
1052
  console.error('batchAddCart() Invalid arguments!', args);
1053
1053
  const msg = isLanguageForEn ? 'Please retry later' : '加入购物车失败,请稍后重试!';
1054
1054
  showFailToast({
1055
1055
  title: msg,
1056
1056
  });
1057
1057
  return Promise.resolve({
1058
1058
  ok: false,
1059
1059
  msg,
1060
1060
  });
1061
1061
  }
1062
1062
  const addToWhereText = giftCard ? '购物清单' : '购物车';
1063
1063
  const successMsg = isLanguageForEn ? 'Success' : `加入${addToWhereText}成功`;
1064
1064
  const failMsg = isLanguageForEn
1065
1065
  ? 'Please retry later'
1066
1066
  : `加入${addToWhereText}失败,请稍后重试!`;
1067
1067
  if (skuIds) {
1068
1068
  return this._addShopGoodCart(`${skuIds}`, `${num}`, { giftCard })
1069
1069
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
1070
1070
  if (res?.ok) {
1071
1071
  if (showToast && !res?.isOpenApp)
1072
1072
  showSuccessToast({
1073
1073
  title: successMsg,
1074
1074
  })
1075
1075
  } else {
1076
1076
  showToast &&
1077
1077
  showFailToast({
1078
1078
  title: res?.errMsg || failMsg,
1079
1079
  })
1080
1080
  }
1081
1081
  return Promise.resolve(res)
1082
1082
  })
1083
1083
  .catch((e) => {
1084
1084
  console.log('调用加购方法异常=======>', e)
1085
1085
  return Promise.resolve({
1086
1086
  ok: false,
1087
1087
  msg: failMsg,
1088
1088
  })
1089
1089
  })
1090
1090
  } else {
1091
1091
  return Promise.resolve({
1092
1092
  ok: false,
1093
1093
  msg: failMsg,
1094
1094
  })
1095
1095
  }
1096
1096
  }
1097
1097
 
1098
1098
  async giftCardAddCart(skuList, num) {
1099
1099
  return this.gatewayReq('giftCardAddCart', {
1100
1100
  skuList,
1101
1101
  num: Number(num),
1102
1102
  });
1103
1103
  }
1104
1104
 
1105
1105
  _addShopGoodCart(skuIdsStr, addCardNum = '1', { giftCard }) {
1106
1106
  return new Promise((resolve) => {
1107
1107
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(',') : []
1108
1108
  if (productIdsArr.length > 0) {
1109
1109
  if (giftCard) {
1110
1110
  this.giftCardAddCart(productIdsArr, addCardNum)
1111
1111
  .then((res) => {
1112
1112
  if (res?.code === '0' && res?.result?.value) {
1113
1113
  resolve({
1114
1114
  ok: true,
1115
1115
  })
1116
1116
  } else {
1117
1117
  resolve({
1118
1118
  ok: false,
1119
1119
  msg: '加购失败,请稍后重试',
1120
1120
  })
1121
1121
  }
1122
1122
  })
1123
1123
  .catch((e) => {
1124
1124
  console.error('礼品卡加车失败: ', e)
1125
1125
  resolve({
1126
1126
  ok: false,
1127
1127
  msg: '加购失败,请稍后重试',
1128
1128
  });
1129
1129
  });
1130
1130
  } else if (isJdApp) {
1131
1131
  console.log('==========>', 'app原生批量加车!,小程序端暂不涉及');
1132
1132
  } else if (isMin) {
1133
1133
  console.log('==========>', '京购批量加车!')
1134
1134
  const productsAddCartList = productIdsArr.map((skuItem) => {
1135
1135
  return {
1136
1136
  skuId: skuItem,
1137
1137
  buyNum: addCardNum,
1138
1138
  }
1139
1139
  })
1140
1140
  global.wxAppBizInstance
1141
1141
  .addCart({ commArr: productsAddCartList })
1142
1142
  .then((res) => {
1143
1143
  console.log('dealCartSuccess: ', res)
1144
1144
  resolve({
1145
1145
  ok: true,
1146
1146
  msg: '已加入购物车!',
1147
1147
  data: res,
1148
1148
  })
1149
1149
  })
1150
1150
  .catch((e) => {
1151
1151
  console.log('京购小程序批量加车失败dealCartFail: ', e)
1152
1152
  resolve({
1153
1153
  ok: false,
1154
1154
  msg: '加购失败,请稍后重试',
1155
1155
  })
1156
1156
  })
1157
1157
  } else {
1158
1158
  console.log('==========>', 'M站批量加车!')
1159
1159
  return this.productAddToCart(skuIdsStr, addCardNum).then((res) =>
1160
1160
  resolve(res),
1161
1161
  )
1162
1162
  }
1163
1163
  } else {
1164
1164
  resolve({
1165
1165
  ok: false,
1166
1166
  msg: '加购sku不能为空',
1167
1167
  })
1168
1168
  }
1169
1169
  })
1170
1170
  }
1171
1171
 
1172
1172
  productAddToCart() {
1173
1173
  return Promise.resolve({
1174
1174
  ok: false,
1175
1175
  msg: 'productAddToCart暂不支持小程序',
1176
1176
  });
1177
1177
  }
1178
1178
  bMallGetUserInfo = () => {
1179
1179
  return getBMallUserInfo()
1180
1180
  }
1181
1181
  async bMallAddCart(params = {}) {
1182
1182
  console.warn('bMallAddCart 方法在微信京购小程序环境未经验证,请不要使用!');
1183
1183
  return await this.gatewayReq('bmall_cartAdd', params, {
1184
1184
  client: 'H5',
1185
1185
  clientVersion: '5.5.0',
1186
1186
  })
1187
1187
  }
1188
1188
  async bMallChangeCart(params = {}) {
1189
1189
  console.warn('bMallChangeCart 方法在微信京购小程序环境未经验证,请不要使用!');
1190
1190
  return await this.gatewayReq('bmall_cartChange', params, {
1191
1191
  client: 'H5',
1192
1192
  clientVersion: '5.5.0',
1193
1193
  })
1194
1194
  }
1195
1195
  async bMallRemoveCart(params = {}) {
1196
1196
  console.warn('bMallRemoveCart 方法在微信京购小程序环境未经验证,请不要使用!');
1197
1197
  return await this.gatewayReq(
1198
1198
  'bmall_cartRemove',
1199
1199
  params,
1200
1200
  {
1201
1201
  client: 'H5',
1202
1202
  clientVersion: '5.5.0',
1203
1203
  },
1204
1204
  )
1205
1205
  }
1206
1206
  async bMallGetOmittedProduct(params = {}) {
1207
1207
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
1208
1208
  client: 'H5',
1209
1209
  clientVersion: '5.5.0',
1210
1210
  })
1211
1211
  }
1212
1212
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
1213
1213
  const params = await getParams({ ...data, skuId, bMallTag, num })
1214
1214
  return await this.bMallAddCart(params)
1215
1215
  }
1216
1216
  async bMallGetSkuNumService(bMallTag = 1) {
1217
1217
  const params = await getParams({ bMallTag })
1218
1218
  delete params.operations
1219
1219
  return await this.bMallGetOmittedProduct(params)
1220
1220
  }
1221
1221
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
1222
1222
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
1223
1223
  return await this.bMallRemoveCart(params)
1224
1224
  }
1225
1225
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
1226
1226
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
1227
1227
  return await this.bMallChangeCart(params)
1228
1228
  }
1229
1229
 
1230
1230
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
1231
1231
  if (!needRequest && isH5 && window?.bMallCartData) {
1232
1232
  return window?.bMallCartData
1233
1233
  }
1234
1234
  const cartData = await this.bMallGetSkuNumService(bMallTag)
1235
1235
  let items
1236
1236
  if (cartData.ok && cartData.result) {
1237
1237
  items = cartData?.result?.items || {}
1238
1238
  }
1239
1239
  if (isH5) {
1240
1240
  window.bMallCartData = items
1241
1241
  }
1242
1242
  return items
1243
1243
  }
1244
1244
 
1245
1245
  async bMallCartHandle(goodItem, num) {
1246
1246
  try {
1247
1247
  const {
1248
1248
  skuUuid,
1249
1249
  limitUpper,
1250
1250
  limitLower,
1251
1251
  } = goodItem
1252
1252
  let cartNum = Number(num)
1253
1253
  if (limitLower && cartNum && cartNum < limitLower) {
1254
1254
  cartNum = limitLower
1255
1255
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
1256
1256
  cartNum = limitUpper
1257
1257
  }
1258
1258
  if (skuUuid && cartNum > 0) {
1259
1259
  return this.bMallChangeCartService({
1260
1260
  ...goodItem,
1261
1261
  skuUuid,
1262
1262
  num: cartNum,
1263
1263
  })
1264
1264
  } else if (!skuUuid && cartNum > 0) {
1265
1265
  return this.bMallAddCartService({ ...goodItem, num: cartNum })
1266
1266
  } else if (skuUuid && !cartNum) {
1267
1267
  return this.bMallRemoveCartService({
1268
1268
  ...goodItem,
1269
1269
  skuUuid,
1270
1270
  num: cartNum,
1271
1271
  })
1272
1272
  } else {
1273
1273
  console.error('参数不全')
1274
1274
  return false
1275
1275
  }
1276
1276
  } catch (e) {
1277
1277
  console.error(e)
1278
1278
  }
1279
1279
  }