@conecli/cone-render 0.10.1-beta.5 → 0.10.1-beta.6

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