@conecli/cone-render 0.10.1-shop3.1 → 0.10.1-shop3.11

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