@conecli/cone-render 0.10.1-beta.7 → 0.10.1-beta.9

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 (75) 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/index.h5.ts +1 -1
  8. package/dist/common/token/token.jd.ts +1 -1
  9. package/dist/common/wxappApi.ts +1 -1
  10. package/dist/components/base/CommonFloorHead/index.module.scss +126 -111
  11. package/dist/components/base/CommonFloorHead/index.tsx +1 -1
  12. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  13. package/dist/components/base/Dialog/index.module.scss +11 -0
  14. package/dist/components/base/ExposureSmart/index.h5.module.scss +12 -2
  15. package/dist/components/base/ExposureSmart/index.h5.tsx +1 -1
  16. package/dist/components/base/ExposureSmart/reporter.tsx +1 -1
  17. package/dist/components/base/InOrOutViewObserver/index.tsx +1 -1
  18. package/dist/components/base/InViewRender/index.weapp.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/LazyLayoutLoad/index.tsx +1 -1
  22. package/dist/components/base/LazyLayoutLoad/index.weapp.tsx +1 -1
  23. package/dist/components/base/LazyLoadImage/index.h5.module.scss +4 -8
  24. package/dist/components/base/LazyLoadImage/index.h5.tsx +1 -1
  25. package/dist/components/base/LazyLoadImage/index.tsx +1 -1
  26. package/dist/components/base/NetworkDataError/index.tsx +1 -1
  27. package/dist/components/decorate/PlaceHolder/index.tsx +1 -1
  28. package/dist/components/floorItem.jd.tsx +1 -1
  29. package/dist/components/floorItem.tsx +1 -1
  30. package/dist/components/floorItem.weapp.tsx +1 -1
  31. package/dist/interface/common.ts +1 -1
  32. package/dist/interface/component.ts +1 -1
  33. package/dist/interface/jumpEventReport.ts +1 -1
  34. package/dist/interface/service.ts +1 -1
  35. package/dist/jumpEventReport/base.ts +1 -1
  36. package/dist/jumpEventReport/const.ts +1 -1
  37. package/dist/jumpEventReport/index.weapp.ts +1 -1
  38. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  39. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  40. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  41. package/dist/jumpEventReport/web/report.ts +1 -1
  42. package/dist/jumpEventReport/web.base.ts +1 -1
  43. package/dist/jumpEventReport/web.jd.ts +1 -1
  44. package/dist/jumpEventReport/web.tjm.ts +1 -1
  45. package/dist/jumpEventReport/web.wxapp.ts +1 -1
  46. package/dist/libs/taroAppReport.js +2 -2
  47. package/dist/modules/ContainerFloorList/index.h5.module.scss +66 -53
  48. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  49. package/dist/modules/ContainerFloorList/index.tsx +1 -1
  50. package/dist/open/api/device.ts +1 -1
  51. package/dist/open/api/environment.ts +1 -1
  52. package/dist/open/api/shopMember.ts +1 -1
  53. package/dist/open/api/util.ts +1 -1
  54. package/dist/sass/app.h5.scss +255 -224
  55. package/dist/service/fetchGateway.ts +1 -1
  56. package/dist/service/fetchGateway.weapp.ts +1 -0
  57. package/dist/service/http/colorSign.ts +1 -1
  58. package/dist/service/http/const.ts +1 -1
  59. package/dist/service/http/h5Http.ts +1 -1
  60. package/dist/service/requestServer.h5.ts +1 -1
  61. package/dist/service/requestServer.ts +1 -1
  62. package/dist/service/requestServer.weapp.ts +1 -0
  63. package/dist/utils/connectNativeJsBridge.ts +1 -1
  64. package/dist/utils/h5Utils.ts +1 -1
  65. package/dist/utils/index.h5.ts +1 -1
  66. package/dist/utils/index.ts +1 -1
  67. package/dist/utils/index.weapp.ts +1 -1
  68. package/dist/utils/jumpExtMapUtil.h5.ts +1 -0
  69. package/dist/utils/jumpExtMapUtil.ts +1 -0
  70. package/dist/utils/sColor.js +1 -0
  71. package/dist/utils/taroRenderUtil.ts +1 -1
  72. package/dist/utils/utils.ts +1 -1
  73. package/dist/wxapp/common/address_api/address_api_v2.js +1 -0
  74. package/dist/wxapp/common/user_info.js +1 -1
  75. package/package.json +147 -141
@@ -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
  showSuccessToast,
674
674
  showFailToast,
675
675
  isH5,
676
676
  isWxMinAndWxapp,
677
677
  isMin,
678
678
  isPc,
679
679
  cookiesStr: '',
680
680
  requestHeaderContentType: {
681
681
  jsonHeader: {
682
682
  'content-type': 'application/json;charset=utf-8',
683
683
  },
684
684
  formDataHeader: {
685
685
  'content-type': 'application/x-www-form-urlencoded',
686
686
  },
687
687
  },
688
688
  requestBaseParam: {
689
689
  data: null,
690
690
  header: {
691
691
  'content-type': 'application/json;charset=utf-8',
692
692
  },
693
693
  },
694
694
  timeOut: 7000,
695
695
  apiClientParams: {
696
696
  clientVersion: '11.0.0',
697
697
  client: 'wh5',
698
698
  area: '1_72_2799_0',
699
699
  screen: `${Math.ceil(getSystemInfo?.screenWidth * devicePixelRatio)}*${Math.ceil(
700
700
  getSystemInfo?.screenHeight * devicePixelRatio,
701
701
  )}`,
702
702
  uuid: UUID,
703
703
  },
704
704
  public addressFetchInfo: {
705
705
  reqState: boolean;
706
706
  promiseInstance: null | Promise<any>;
707
707
  };
708
708
  public getPromotionConfig: {
709
709
  projectId: null | string | number;
710
710
  pageId: null | string | number;
711
711
  };
712
712
  public resInfo: ServiceInterFace.HttpRequestInfo;
713
713
  public api: ServiceInterFace.HttpApi;
714
714
  public isPageDomain: boolean;
715
715
  public verifyColorList: string[];
716
716
  constructor(opt) {
717
717
  this._init();
718
718
  this.addressFetchInfo = {
719
719
  reqState: false,
720
720
  promiseInstance: null,
721
721
  };
722
722
  this.getPromotionConfig = {
723
723
  projectId: null,
724
724
  pageId: null,
725
725
  };
726
726
  this._userAreaUpdateListen();
727
727
  this.resInfo = this._getResConfig(opt);
728
728
  this.api = api;
729
729
  this.isPageDomain = isH5 ? window?.location?.hostname === PAGES_DOMAIN : false;
730
730
  this.verifyColorList = [
731
731
  ...MobileVerifyColorList,
732
732
  ...AppVerifyColorList,
733
733
  ...JshopxVerifyColorList,
734
734
  ...BMallVerifyColorList,
735
735
  ];
736
736
  }
737
737
  _init(): void {
738
738
  httpInterceptors.forEach((item) => {
739
739
  Taro.addInterceptor((chain) => item(chain));
740
740
  });
741
741
  }
742
742
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
743
743
  return Object.assign({}, DefaultConfig, opt);
744
744
  }
745
745
 
746
746
  _userAreaUpdateListen() {
747
747
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, (areaInfo) => {
748
748
  this.updateApiClientParamsResInfo(areaInfo);
749
749
  });
750
750
  }
751
751
  updateApiClientParamsResInfo(opt = {}) {
752
752
  const { area, realTimeArea, ...others } = opt;
753
753
  this.resInfo.apiClientParams = {
754
754
  ...this.resInfo.apiClientParams,
755
755
  ...others,
756
756
  };
757
757
  area && area !== '' && (this.resInfo.apiClientParams.area = area);
758
758
  realTimeArea &&
759
759
  realTimeArea !== '' &&
760
760
  (this.resInfo.apiClientParams.realTimeArea = realTimeArea);
761
761
  }
762
762
 
763
763
  checkFunctionIdToReturnAppId(functionId) {
764
764
  if (JshopxColorFunctionIdList.includes(functionId)) {
765
765
  return APPID.JSHOPX_COLOR_APPID;
766
766
  } else if (this.isPageDomain && PagesColorFunctionIdList.includes(functionId)) {
767
767
  return APPID.PAGES_COLOR_APPID;
768
768
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
769
769
  return APPID.SHOP_MEMBER_COLOR_APPID;
770
770
  } else if (B2BColorFunctionIdList.includes(functionId)) {
771
771
  return APPID.B2B_COLOR_APPID;
772
772
  } else if (isPc) {
773
773
  return APPID.MALL_COLOR_APPID;
774
774
  } else {
775
775
  return APPID.SHOP_COLOR_APPID;
776
776
  }
777
777
  }
778
778
 
779
779
  gatewayReq(functionId: string, bodyParams = {}, clientParams = {}): Promise<any> {
780
780
  if (
781
781
  functionId === 'receiveShopCoupon' &&
782
782
  ((isH5 && (window?.isJingGouMiniViewState || window?.isJingxiMiniViewState)) ||
783
783
  isWxMinAndWxapp)
784
784
  ) {
785
785
  clientParams = Object.assign(
786
786
  {},
787
787
  {
788
788
  loginType: '1',
789
789
  loginWQBiz: WXAPP_BIZ_KEY,
790
790
  },
791
791
  clientParams,
792
792
  );
793
793
  }
794
794
  const apiClientParams = Object.assign({}, this.resInfo.apiClientParams, clientParams);
795
795
  typeof apiClientParams.appid === 'undefined' &&
796
796
  (apiClientParams.appid = this.checkFunctionIdToReturnAppId(functionId));
797
797
  const isColorVerify = this.verifyColorList.includes(functionId);
798
798
  const getReqData = {
799
799
  functionId: functionId,
800
800
  body: JSON.stringify(bodyParams),
801
801
  t: Date.now(),
802
802
  ...apiClientParams,
803
803
  };
804
804
  return http
805
805
  .request({
806
806
  url: this.api.apiFunc,
807
807
  data: getReqData,
808
808
  isColorVerify,
809
809
  })
810
810
  .then((res: ServiceInterFace.RequestPromiseRes) => {
811
811
  const { statusCode, data } = res;
812
812
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
813
813
  ok: true,
814
814
  };
815
815
  if (statusCode === 200 && data) {
816
816
  const resCode = Object.prototype.hasOwnProperty.call(res.data, 'code')
817
817
  ? Number(res.data.code)
818
818
  : -1;
819
819
  const subCode = Object.prototype.hasOwnProperty.call(res.data, 'subCode')
820
820
  ? Number(res.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
  statusCode: res.statusCode,
845
845
  };
846
846
  return changeRes;
847
847
  }
848
848
  } else {
849
849
  changeRes = {
850
850
  ...data,
851
851
  ok: false,
852
852
  statusCode: res.statusCode,
853
853
  };
854
854
  return changeRes;
855
855
  }
856
856
  })
857
857
  .catch((res) => {
858
858
  return {
859
859
  ...res,
860
860
  ok: false,
861
861
  } as ServiceInterFace.RequestResponseFormatRes;
862
862
  });
863
863
  }
864
864
 
865
865
  async receiveCoupon(param = {}, clientParams) {
866
866
  const loginType = isPc ? { loginType: 3 } : {};
867
867
  return await this.gatewayReq(
868
868
  'receiveShopCoupon',
869
869
  {
870
870
  operation: '3',
871
871
  ...param,
872
872
  },
873
873
  { ...loginType, ...clientParams },
874
874
  );
875
875
  }
876
876
 
877
877
  getCustomerCenterDispatch(params = {}) {
878
878
  return this.gatewayReq('customerCenterDispatch', params, {
879
879
  clientVersion: '9.2.0',
880
880
  client: 'H5',
881
881
  uuid: 88888,
882
882
  appid: 'shopmember_m_jd_com',
883
883
  });
884
884
  }
885
885
 
886
886
  batchAddCart(...args) {
887
887
  let skuIds, num, showToast, giftCard;
888
888
  if (['number', 'string'].includes(typeof args[0])) {
889
889
  [skuIds, num = 1, showToast = true, giftCard = false] = args;
890
890
  } else if (typeof args[0] === 'object' && args[0] !== null) {
891
891
  const params = args[0];
892
892
  skuIds = params.skuIds;
893
893
  num = params.num || 1;
894
894
  showToast = params.showToast !== undefined ? params.showToast : true;
895
895
  giftCard = params.giftCard !== undefined ? params.giftCard : false;
896
896
  } else {
897
897
  console.error('batchAddCart() Invalid arguments!', args);
898
898
  const msg = isLanguageForEn ? 'Please retry later' : '加入购物车失败,请稍后重试!';
899
899
  showFailToast({
900
900
  title: msg,
901
901
  });
902
902
  return Promise.resolve({
903
903
  ok: false,
904
904
  msg,
905
905
  });
906
906
  }
907
907
  const addToWhereText = giftCard ? '购物清单' : '购物车';
908
908
  const successMsg = isLanguageForEn ? 'Success' : `加入${addToWhereText}成功`;
909
909
  const failMsg = isLanguageForEn
910
910
  ? 'Please retry later'
911
911
  : `加入${addToWhereText}失败,请稍后重试!`;
912
912
  if (skuIds) {
913
913
  return this._addShopGoodCart(`${skuIds}`, `${num}`, { giftCard })
914
914
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
915
915
  if (res?.ok) {
916
916
  if (showToast && !res?.isOpenApp)
917
917
  showSuccessToast({
918
918
  title: successMsg,
919
919
  });
920
920
  } else {
921
921
  showToast &&
922
922
  showFailToast({
923
923
  title: res?.errMsg || failMsg,
924
924
  });
925
925
  }
926
926
  return Promise.resolve(res);
927
927
  })
928
928
  .catch((e) => {
929
929
  console.log('调用加购方法异常=======>', e);
930
930
  return Promise.resolve({
931
931
  ok: false,
932
932
  msg: failMsg,
933
933
  });
934
934
  });
935
935
  } else {
936
936
  return Promise.resolve({
937
937
  ok: false,
938
938
  msg: failMsg,
939
939
  });
940
940
  }
941
941
  }
942
942
 
943
943
  async giftCardAddCart(skuList, num) {
944
944
  const loginType = isPc ? { loginType: 3 } : {};
945
945
  return this.gatewayReq(
946
946
  'giftCardAddCart',
947
947
  {
948
948
  skuList,
949
949
  num: Number(num),
950
950
  },
951
951
  { ...loginType },
952
952
  );
953
953
  }
954
954
 
955
955
  _addShopGoodCart(skuIdsStr, addCardNum = '1', { giftCard }) {
956
956
  return new Promise((resolve) => {
957
957
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(',') : [];
958
958
  if (productIdsArr.length > 0) {
959
959
  if (giftCard) {
960
960
  this.giftCardAddCart(productIdsArr, addCardNum)
961
961
  .then((res) => {
962
962
  if (res?.code === '0' && res?.result?.value) {
963
963
  resolve({
964
964
  ok: true,
965
965
  });
966
966
  } else {
967
967
  resolve({
968
968
  ok: false,
969
969
  msg: '加购失败,请稍后重试',
970
970
  });
971
971
  }
972
972
  })
973
973
  .catch((e) => {
974
974
  console.error('礼品卡加车失败: ', e);
975
975
  resolve({
976
976
  ok: false,
977
977
  msg: '加购失败,请稍后重试',
978
978
  });
979
979
  });
980
980
  } else if (isJdApp) {
981
981
  console.log('==========>', 'app原生批量加车!,小程序端暂不涉及');
982
982
  } else if (isMin) {
983
983
  console.log('==========>', '京购批量加车!');
984
984
  const productsAddCartList = productIdsArr.map((skuItem) => {
985
985
  return {
986
986
  skuId: skuItem,
987
987
  buyNum: addCardNum,
988
988
  };
989
989
  });
990
990
  global.wxAppBizInstance
991
991
  .addCart({ commArr: productsAddCartList })
992
992
  .then((res) => {
993
993
  console.log('dealCartSuccess: ', res);
994
994
  resolve({
995
995
  ok: true,
996
996
  msg: '已加入购物车!',
997
997
  data: res,
998
998
  });
999
999
  })
1000
1000
  .catch((e) => {
1001
1001
  console.log('京购小程序批量加车失败dealCartFail: ', e);
1002
1002
  resolve({
1003
1003
  ok: false,
1004
1004
  msg: '加购失败,请稍后重试',
1005
1005
  });
1006
1006
  });
1007
1007
  } else {
1008
1008
  console.log('==========>', 'M站批量加车!');
1009
1009
  return this.productAddToCart(skuIdsStr, addCardNum).then((res) => resolve(res));
1010
1010
  }
1011
1011
  } else {
1012
1012
  resolve({
1013
1013
  ok: false,
1014
1014
  msg: '加购sku不能为空',
1015
1015
  });
1016
1016
  }
1017
1017
  });
1018
1018
  }
1019
1019
 
1020
1020
  productAddToCart(skuIdsStr, num) {
1021
1021
  return new Promise((resolve) => {
1022
1022
  if (window.AddcartToolObj) {
1023
1023
  window.AddcartToolObj.addCart({
1024
1024
  skuId: skuIdsStr,
1025
1025
  num,
1026
1026
  source: 'sjdpyw',
1027
1027
  actId: '1',
1028
1028
  loginType: window?.isJingGouMiniViewState ? '11' : '2',
1029
1029
  sucFun(res) {
1030
1030
  console.log('ok,接口请求成功,不一定指的加车成功,加车成功需要看返回码errId为0', res);
1031
1031
  if (res.errId === '0' && res.cartJson) {
1032
1032
  resolve({
1033
1033
  ok: true,
1034
1034
  msg: '已加入购物车!',
1035
1035
  ...res,
1036
1036
  });
1037
1037
  } else {
1038
1038
  if (res.errId === '13') {
1039
1039
  global.doLogin();
1040
1040
  } else {
1041
1041
  resolve({
1042
1042
  ok: false,
1043
1043
  msg: '加购失败,请稍后重试',
1044
1044
  ...res,
1045
1045
  });
1046
1046
  }
1047
1047
  }
1048
1048
  },
1049
1049
  failFun(err) {
1050
1050
  console.log('fail', err);
1051
1051
  resolve({
1052
1052
  ok: false,
1053
1053
  msg: '加购失败,请稍后重试',
1054
1054
  ...err,
1055
1055
  });
1056
1056
  },
1057
1057
  });
1058
1058
  } else {
1059
1059
  resolve({
1060
1060
  ok: false,
1061
1061
  msg: '购物车方法检查异常',
1062
1062
  });
1063
1063
  }
1064
1064
  });
1065
1065
  }
1066
1066
  bMallGetUserInfo = () => {
1067
1067
  return getBMallUserInfo();
1068
1068
  };
1069
1069
  async bMallAddCart(params = {}) {
1070
1070
  return await this.gatewayReq('bmall_cartAdd', params, {
1071
1071
  client: 'H5',
1072
1072
  clientVersion: '5.5.0',
1073
1073
  });
1074
1074
  }
1075
1075
  async bMallChangeCart(params = {}) {
1076
1076
  return await this.gatewayReq('bmall_cartChange', params, {
1077
1077
  client: 'H5',
1078
1078
  clientVersion: '5.5.0',
1079
1079
  });
1080
1080
  }
1081
1081
  async bMallRemoveCart(params = {}) {
1082
1082
  return await this.gatewayReq(
1083
1083
  'bmall_cartRemove',
1084
1084
  params,
1085
1085
  {
1086
1086
  client: 'H5',
1087
1087
  clientVersion: '5.5.0',
1088
1088
  },
1089
1089
  );
1090
1090
  }
1091
1091
  async bMallGetOmittedProduct(params = {}) {
1092
1092
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
1093
1093
  client: 'H5',
1094
1094
  clientVersion: '5.5.0',
1095
1095
  });
1096
1096
  }
1097
1097
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
1098
1098
  const params = await getParams({ ...data, skuId, bMallTag, num });
1099
1099
  return await this.bMallAddCart(params);
1100
1100
  }
1101
1101
  async bMallGetSkuNumService(bMallTag = 1) {
1102
1102
  const params = await getParams({ bMallTag });
1103
1103
  delete params.operations;
1104
1104
  return await this.bMallGetOmittedProduct(params);
1105
1105
  }
1106
1106
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
1107
1107
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid });
1108
1108
  return await this.bMallRemoveCart(params);
1109
1109
  }
1110
1110
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
1111
1111
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid });
1112
1112
  return await this.bMallChangeCart(params);
1113
1113
  }
1114
1114
 
1115
1115
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
1116
1116
  if (!needRequest && isH5 && window?.bMallCartData) {
1117
1117
  return window?.bMallCartData;
1118
1118
  }
1119
1119
  const cartData = await this.bMallGetSkuNumService(bMallTag);
1120
1120
  let items;
1121
1121
  if (cartData.ok && cartData.result) {
1122
1122
  items = cartData?.result?.items || {};
1123
1123
  }
1124
1124
  if (isH5) {
1125
1125
  window.bMallCartData = items;
1126
1126
  }
1127
1127
  return items;
1128
1128
  }
1129
1129
 
1130
1130
  async bMallCartHandle(goodItem, num) {
1131
1131
  try {
1132
1132
  const {
1133
1133
  skuUuid,
1134
1134
  limitUpper,
1135
1135
  limitLower,
1136
1136
  } = goodItem;
1137
1137
  let cartNum = Number(num);
1138
1138
  if (limitLower && cartNum && cartNum < limitLower) {
1139
1139
  cartNum = limitLower;
1140
1140
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
1141
1141
  cartNum = limitUpper;
1142
1142
  }
1143
1143
  if (skuUuid && cartNum > 0) {
1144
1144
  return this.bMallChangeCartService({
1145
1145
  ...goodItem,
1146
1146
  skuUuid,
1147
1147
  num: cartNum,
1148
1148
  });
1149
1149
  } else if (!skuUuid && cartNum > 0) {
1150
1150
  return this.bMallAddCartService({ ...goodItem, num: cartNum });
1151
1151
  } else if (skuUuid && !cartNum) {
1152
1152
  return this.bMallRemoveCartService({
1153
1153
  ...goodItem,
1154
1154
  skuUuid,
1155
1155
  num: cartNum,
1156
1156
  });
1157
1157
  } else {
1158
1158
  console.error('参数不全');
1159
1159
  return false;
1160
1160
  }
1161
1161
  } catch (e) {
1162
1162
  console.error(e);
1163
1163
  }
1164
1164
  }