@conecli/cone-render 0.8.44 → 0.8.45

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 (94) hide show
  1. package/dist/api/index.ts +1 -1
  2. package/dist/assets/icon_blue_info.svg +1 -0
  3. package/dist/common/const.ts +1 -1
  4. package/dist/common/environmentType.ts +1 -1
  5. package/dist/common/index.h5.ts +1 -1
  6. package/dist/common/index.jd.ts +1 -1
  7. package/dist/common/index.ts +1 -1
  8. package/dist/common/index.weapp.ts +1 -1
  9. package/dist/common/pageType.ts +1 -1
  10. package/dist/common/sgmCustomCode.ts +1 -1
  11. package/dist/common/token/index.h5.ts +1 -1
  12. package/dist/common/token/token.jd.ts +1 -1
  13. package/dist/common/wxappApi.ts +1 -1
  14. package/dist/components/base/CommonFloorHead/index.module.scss +126 -111
  15. package/dist/components/base/CommonFloorHead/index.tsx +1 -1
  16. package/dist/components/base/CountDown/index.module.scss +49 -44
  17. package/dist/components/base/CountDown/index.tsx +1 -1
  18. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  19. package/dist/components/base/CustomVideo/common.ts +1 -0
  20. package/dist/components/base/CustomVideo/index.tsx +1 -1
  21. package/dist/components/base/Dialog/index.module.scss +11 -0
  22. package/dist/components/base/ExposureSmart/index.h5.module.scss +12 -2
  23. package/dist/components/base/ExposureSmart/index.h5.tsx +1 -1
  24. package/dist/components/base/ExposureSmart/reporter.tsx +1 -1
  25. package/dist/components/base/ItemViewExposureSmart/index.module.scss +2 -2
  26. package/dist/components/base/ItemViewExposureSmart/index.tsx +1 -1
  27. package/dist/components/base/LazyLoadImage/index.h5.module.scss +4 -0
  28. package/dist/components/base/LazyLoadImage/index.h5.tsx +1 -1
  29. package/dist/components/base/Price/Base/index.tsx +1 -1
  30. package/dist/components/base/Price/Double/index.module.scss +8 -0
  31. package/dist/components/base/Price/Double/index.tsx +1 -1
  32. package/dist/components/debug/DebugLayout/index.module.scss +67 -0
  33. package/dist/components/debug/DebugLayout/index.tsx +1 -0
  34. package/dist/components/debug/DebugLayout/utils.ts +1 -0
  35. package/dist/components/decorate/DecorateFloorModule/index.module.scss +11 -0
  36. package/dist/components/decorate/DecorateFloorModule/index.tsx +1 -1
  37. package/dist/components/decorate/EmptyFloorModule/index.tsx +1 -1
  38. package/dist/components/decorate/PlaceHolder/index.tsx +1 -1
  39. package/dist/components/floorItem.tsx +1 -1
  40. package/dist/components/floorItem.weapp.tsx +1 -1
  41. package/dist/components/isv/Floor/index.tsx +1 -1
  42. package/dist/interface/common.ts +1 -1
  43. package/dist/interface/component.ts +1 -1
  44. package/dist/interface/jumpEventReport.ts +1 -1
  45. package/dist/interface/service.ts +1 -1
  46. package/dist/jumpEventReport/base.ts +1 -1
  47. package/dist/jumpEventReport/const.ts +1 -1
  48. package/dist/jumpEventReport/index.jd.ts +1 -1
  49. package/dist/jumpEventReport/index.weapp.ts +1 -1
  50. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  51. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  52. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  53. package/dist/jumpEventReport/web/report.ts +1 -1
  54. package/dist/jumpEventReport/web.base.ts +1 -1
  55. package/dist/jumpEventReport/web.jd.ts +1 -1
  56. package/dist/jumpEventReport/web.jdb.ts +1 -1
  57. package/dist/jumpEventReport/web.jdjch.ts +1 -1
  58. package/dist/jumpEventReport/web.jxwxapp.ts +1 -1
  59. package/dist/jumpEventReport/web.pc.ts +1 -1
  60. package/dist/jumpEventReport/web.tjapp.ts +1 -1
  61. package/dist/jumpEventReport/web.tjm.ts +1 -1
  62. package/dist/jumpEventReport/web.wxapp.ts +1 -1
  63. package/dist/libs/taroAppReport.js +2 -2
  64. package/dist/modules/ContainerFloorList/index.h5.module.scss +66 -53
  65. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  66. package/dist/modules/ContainerFloorList/index.tsx +1 -1
  67. package/dist/open/api/environment.ts +1 -1
  68. package/dist/open/api/shopMember.ts +1 -1
  69. package/dist/open/api/util.ts +1 -1
  70. package/dist/sass/app.h5.scss +255 -224
  71. package/dist/sass/base.scss +183 -137
  72. package/dist/service/fetchGateway.ts +1 -1
  73. package/dist/service/fetchGateway.weapp.ts +1 -0
  74. package/dist/service/http/colorSign.ts +1 -1
  75. package/dist/service/http/const.ts +1 -1
  76. package/dist/service/http/h5Http.ts +1 -0
  77. package/dist/service/http/index.h5.ts +1 -0
  78. package/dist/service/requestServer.h5.ts +1 -0
  79. package/dist/service/requestServer.ts +1 -1
  80. package/dist/service/requestServer.weapp.ts +1 -0
  81. package/dist/utils/connectNativeJsBridge.ts +1 -1
  82. package/dist/utils/connectNativeJsBridge.weapp.ts +1 -1
  83. package/dist/utils/h5Utils.ts +1 -1
  84. package/dist/utils/index.h5.ts +1 -1
  85. package/dist/utils/index.ts +1 -1
  86. package/dist/utils/index.weapp.ts +1 -1
  87. package/dist/utils/jumpExtMapUtil.h5.ts +1 -0
  88. package/dist/utils/jumpExtMapUtil.ts +1 -0
  89. package/dist/utils/sColor.js +1 -0
  90. package/dist/utils/utils.ts +1 -1
  91. package/dist/wxapp/common/address_api/address_api_v2.js +1 -0
  92. package/dist/wxapp/common/user_info.js +1 -1
  93. package/package.json +147 -123
  94. 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
  showToast &&
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://JDCartModule/addCartUniformWithUrl?wareList=${JSON.stringify(productsAddCartList)}&businessName=storeModel`,
346
345
  routerParam: {
347
346
  wareList: productsAddCartList,
348
347
  },
349
348
  callBackName: nativeAddCartCallBack,
350
349
  })
351
350
  } else if (isIosDevice) {
352
351
  callRouterIOS({
353
352
  routerURL: 'router://JDCartModule/batchAddService',
354
353
  routerParam: {
355
354
  sourceType: 'h5',
356
355
  sourceValue: '店铺批量加购',
357
356
  businessName: 'storeModel',
358
357
  isNewMode: '1',
359
358
  NotPassWebview: '1',
360
359
  products: productsAddCartList,
361
360
  },
362
361
  callBackName: nativeAddCartCallBack,
363
362
  })
364
363
  }
365
364
  } else if (isMin) {
366
365
  console.log('==========>', '京购批量加车!')
367
366
  const productsAddCartList = productIdsArr.map(skuItem => {
368
367
  return {
369
368
  skuId: skuItem,
370
369
  buyNum: addCardNum,
371
370
  }
372
371
  })
373
372
  global.wxAppBizInstance
374
373
  .addCart({ commAr: productsAddCartList })
375
374
  .then(res => {
376
375
  console.log('dealCartSuccess: ', res)
377
376
  resolve({
378
377
  ok: true,
379
378
  msg: '已加入购物车!',
380
379
  data: res,
381
380
  })
382
381
  })
383
382
  .catch(e => {
384
383
  console.log('京购小程序批量加车失败dealCartFail: ', e)
385
384
  resolve({
386
385
  ok: false,
387
386
  msg: '加购失败,请稍后重试',
388
387
  })
389
388
  })
390
389
  } else {
391
390
  console.log('==========>', 'M站批量加车!')
392
391
  return this.productAddToCart(skuIdsStr, addCardNum).then(res =>
393
392
  resolve(res),
394
393
  )
395
394
  }
396
395
  } else {
397
396
  resolve({
398
397
  ok: false,
399
398
  msg: '加购sku不能为空',
400
399
  })
401
400
  }
402
401
  })
403
402
  }
404
403
 
405
404
  productAddToCart(skuIdsStr, num) {
406
405
  return new Promise(resolve => {
407
406
  if (window.AddcartToolObj) {
408
407
  window.AddcartToolObj.addCart({
409
408
  skuId: skuIdsStr,
410
409
  num,
411
410
  source: 'sjdpyw',
412
411
  actId: '1',
413
412
  loginType: window?.isJingGouMiniViewState ? '11' : '2',
414
413
  sucFun(res) {
415
414
  console.log(
416
415
  'ok,接口请求成功,不一定指的加车成功,加车成功需要看返回码errId为0',
417
416
  res,
418
417
  )
419
418
  if (res.errId === '0' && res.cartJson) {
420
419
  resolve({
421
420
  ok: true,
422
421
  msg: '已加入购物车!',
423
422
  ...res,
424
423
  })
425
424
  } else {
426
425
  if (res.errId === '13') {
427
426
  global.doLogin()
428
427
  } else {
429
428
  resolve({
430
429
  ok: false,
431
430
  msg: '加购失败,请稍后重试',
432
431
  ...res,
433
432
  })
434
433
  }
435
434
  }
436
435
  },
437
436
  failFun(err) {
438
437
  console.log('fail', err)
439
438
  resolve({
440
439
  ok: false,
441
440
  msg: '加购失败,请稍后重试',
442
441
  ...err,
443
442
  })
444
443
  },
445
444
  })
446
445
  } else {
447
446
  resolve({
448
447
  ok: false,
449
448
  msg: '购物车方法检查异常',
450
449
  })
451
450
  }
452
451
  })
453
452
  }
454
453
  bMallGetUserInfo = () => {
455
454
  return getBMallUserInfo()
456
455
  }
457
456
  async bMallAddCart(params = {}) {
458
457
  return await this.gatewayReq('bmall_cartAdd', params, {
459
458
  client: 'H5',
460
459
  clientVersion: '5.5.0',
461
460
  })
462
461
  }
463
462
  async bMallChangeCart(params = {}) {
464
463
  return await this.gatewayReq('bmall_cartChange', params, {
465
464
  client: 'H5',
466
465
  clientVersion: '5.5.0',
467
466
  })
468
467
  }
469
468
  async bMallRemoveCart(params = {}) {
470
469
  return await this.gatewayReq(
471
470
  'bmall_cartRemove',
472
471
  params,
473
472
  {
474
473
  client: 'H5',
475
474
  clientVersion: '5.5.0',
476
475
  },
477
476
  )
478
477
  }
479
478
  async bMallGetOmittedProduct(params = {}) {
480
479
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
481
480
  client: 'H5',
482
481
  clientVersion: '5.5.0',
483
482
  })
484
483
  }
485
484
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
486
485
  const params = await getParams({ ...data, skuId, bMallTag, num })
487
486
  return await this.bMallAddCart(params)
488
487
  }
489
488
  async bMallGetSkuNumService(bMallTag = 1) {
490
489
  const params = await getParams({ bMallTag })
491
490
  delete params.operations
492
491
  return await this.bMallGetOmittedProduct(params)
493
492
  }
494
493
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
495
494
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
496
495
  return await this.bMallRemoveCart(params)
497
496
  }
498
497
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
499
498
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
500
499
  return await this.bMallChangeCart(params)
501
500
  }
502
501
 
503
502
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
504
503
  if (!needRequest && isH5 && window?.bMallCartData) {
505
504
  return window?.bMallCartData
506
505
  }
507
506
  const cartData = await this.bMallGetSkuNumService(bMallTag)
508
507
  let items
509
508
  if (cartData.ok && cartData.result) {
510
509
  items = cartData?.result?.items || {}
511
510
  }
512
511
  if (isH5) {
513
512
  window.bMallCartData = items
514
513
  }
515
514
  return items
516
515
  }
517
516
 
518
517
  async bMallCartHandle(goodItem, num) {
519
518
  try {
520
519
  const {
521
520
  skuUuid,
522
521
  limitUpper,
523
522
  limitLower,
524
523
  } = goodItem
525
524
  let cartNum = Number(num)
526
525
  if (limitLower && cartNum && cartNum < limitLower) {
527
526
  cartNum = limitLower
528
527
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
529
528
  cartNum = limitUpper
530
529
  }
531
530
  if (skuUuid && cartNum > 0) {
532
531
  return this.bMallChangeCartService({
533
532
  ...goodItem,
534
533
  skuUuid,
535
534
  num: cartNum,
536
535
  })
537
536
  } else if (!skuUuid && cartNum > 0) {
538
537
  return this.bMallAddCartService({ ...goodItem, num: cartNum })
539
538
  } else if (skuUuid && !cartNum) {
540
539
  return this.bMallRemoveCartService({
541
540
  ...goodItem,
542
541
  skuUuid,
543
542
  num: cartNum,
544
543
  })
545
544
  } else {
546
545
  console.error('参数不全')
547
546
  return false
548
547
  }
549
548
  } catch (e) {
550
549
  console.error(e)
551
550
  }
552
551
  }
552
+ import Taro from '@tarojs/taro';
553
553
  APPID,
554
554
  JshopxColorFunctionIdList,
555
555
  PagesColorFunctionIdList,
556
556
  PAGES_DOMAIN,
557
557
  B2BColorFunctionIdList,
558
558
  MobileVerifyColorList,
559
559
  AppVerifyColorList,
560
560
  JshopxVerifyColorList,
561
561
  BMallVerifyColorList,
562
562
  shopMemberColorFunctionIdList,
563
563
  isLanguageForEn,
564
564
  isJdApp,
565
565
  showSuccessToast,
566
566
  showFailToast,
567
567
  isH5,
568
568
  isWxMinAndWxapp,
569
569
  isMin,
570
570
  isPc,
571
571
  cookiesStr: '',
572
572
  requestHeaderContentType: {
573
573
  jsonHeader: {
574
574
  'content-type': 'application/json;charset=utf-8',
575
575
  },
576
576
  formDataHeader: {
577
577
  'content-type': 'application/x-www-form-urlencoded',
578
578
  },
579
579
  },
580
580
  requestBaseParam: {
581
581
  data: null,
582
582
  header: {
583
583
  'content-type': 'application/json;charset=utf-8',
584
584
  },
585
585
  },
586
586
  timeOut: 7000,
587
587
  apiClientParams: {
588
588
  clientVersion: '11.0.0',
589
589
  client: 'wh5',
590
590
  area: '1_72_2799_0',
591
591
  screen: `${Math.ceil(getSystemInfo?.screenWidth * devicePixelRatio)}*${Math.ceil(
592
592
  getSystemInfo?.screenHeight * devicePixelRatio,
593
593
  )}`,
594
594
  uuid: UUID,
595
595
  },
596
596
  public addressFetchInfo: {
597
597
  reqState: boolean;
598
598
  promiseInstance: null | Promise<any>;
599
599
  };
600
600
  public getPromotionConfig: {
601
601
  projectId: null | string | number;
602
602
  pageId: null | string | number;
603
603
  };
604
604
  public resInfo: ServiceInterFace.HttpRequestInfo;
605
605
  public api: ServiceInterFace.HttpApi;
606
606
  public isPageDomain: boolean;
607
607
  public verifyColorList: string[];
608
608
  constructor(opt) {
609
609
  this._init();
610
610
  this.addressFetchInfo = {
611
611
  reqState: false,
612
612
  promiseInstance: null,
613
613
  };
614
614
  this.getPromotionConfig = {
615
615
  projectId: null,
616
616
  pageId: null,
617
617
  };
618
618
  this._userAreaUpdateListen();
619
619
  this.resInfo = this._getResConfig(opt);
620
620
  this.api = api;
621
621
  this.isPageDomain = isH5 ? window?.location?.hostname === PAGES_DOMAIN : false;
622
622
  this.verifyColorList = [
623
623
  ...MobileVerifyColorList,
624
624
  ...AppVerifyColorList,
625
625
  ...JshopxVerifyColorList,
626
626
  ...BMallVerifyColorList,
627
627
  ];
628
628
  }
629
629
  _init(): void {
630
630
  httpInterceptors.forEach((item) => {
631
631
  Taro.addInterceptor((chain) => item(chain));
632
632
  });
633
633
  }
634
634
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
635
635
  return Object.assign({}, DefaultConfig, opt);
636
636
  }
637
637
 
638
638
  _userAreaUpdateListen() {
639
639
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, (areaInfo) => {
640
640
  this.updateApiClientParamsResInfo(areaInfo);
641
641
  });
642
642
  }
643
643
  updateApiClientParamsResInfo(opt = {}) {
644
644
  const { area, realTimeArea, ...others } = opt;
645
645
  this.resInfo.apiClientParams = {
646
646
  ...this.resInfo.apiClientParams,
647
647
  ...others,
648
648
  };
649
649
  area && area !== '' && (this.resInfo.apiClientParams.area = area);
650
650
  realTimeArea &&
651
651
  realTimeArea !== '' &&
652
652
  (this.resInfo.apiClientParams.realTimeArea = realTimeArea);
653
653
  }
654
654
 
655
655
  checkFunctionIdToReturnAppId(functionId) {
656
656
  if (JshopxColorFunctionIdList.includes(functionId)) {
657
657
  return APPID.JSHOPX_COLOR_APPID;
658
658
  } else if (this.isPageDomain && PagesColorFunctionIdList.includes(functionId)) {
659
659
  return APPID.PAGES_COLOR_APPID;
660
660
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
661
661
  return APPID.SHOP_MEMBER_COLOR_APPID;
662
662
  } else if (B2BColorFunctionIdList.includes(functionId)) {
663
663
  return APPID.B2B_COLOR_APPID;
664
664
  } else if (isPc) {
665
665
  return APPID.MALL_COLOR_APPID;
666
666
  } else {
667
667
  return APPID.SHOP_COLOR_APPID;
668
668
  }
669
669
  }
670
670
 
671
671
  gatewayReq(functionId: string, bodyParams = {}, clientParams = {}): Promise<any> {
672
672
  if (
673
673
  functionId === 'receiveShopCoupon' &&
674
674
  ((isH5 && (window?.isJingGouMiniViewState || window?.isJingxiMiniViewState)) ||
675
675
  isWxMinAndWxapp)
676
676
  ) {
677
677
  clientParams = Object.assign(
678
678
  {},
679
679
  {
680
680
  loginType: '1',
681
681
  loginWQBiz: WXAPP_BIZ_KEY,
682
682
  },
683
683
  clientParams,
684
684
  );
685
685
  }
686
686
  const apiClientParams = Object.assign({}, this.resInfo.apiClientParams, clientParams);
687
687
  typeof apiClientParams.appid === 'undefined' &&
688
688
  (apiClientParams.appid = this.checkFunctionIdToReturnAppId(functionId));
689
689
  const isColorVerify = this.verifyColorList.includes(functionId);
690
690
  const getReqData = {
691
691
  functionId: functionId,
692
692
  body: JSON.stringify(bodyParams),
693
693
  t: Date.now(),
694
694
  ...apiClientParams,
695
695
  };
696
696
  return http
697
697
  .request({
698
698
  url: this.api.apiFunc,
699
699
  data: getReqData,
700
700
  isColorVerify,
701
701
  })
702
702
  .then((res: ServiceInterFace.RequestPromiseRes) => {
703
703
  const { statusCode, data } = res;
704
704
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
705
705
  ok: true,
706
706
  };
707
707
  if (statusCode === 200 && data) {
708
708
  const resCode = Object.prototype.hasOwnProperty.call(res.data, 'code')
709
709
  ? Number(res.data.code)
710
710
  : -1;
711
711
  const subCode = Object.prototype.hasOwnProperty.call(res.data, 'subCode')
712
712
  ? Number(res.data.subCode)
713
713
  : -1;
714
714
  if (
715
715
  data.success === true ||
716
716
  data.isSuccess ||
717
717
  resCode === 0 ||
718
718
  resCode === 200 ||
719
719
  subCode === 0
720
720
  ) {
721
721
  changeRes = {
722
722
  result: Object.prototype.hasOwnProperty.call(data, 'result')
723
723
  ? data.result
724
724
  : Object.prototype.hasOwnProperty.call(data, 'data')
725
725
  ? data.data
726
726
  : data,
727
727
  code: data.code || 200,
728
728
  ok: true,
729
729
  source: data,
730
730
  };
731
731
  return changeRes;
732
732
  } else {
733
733
  changeRes = {
734
734
  ...data,
735
735
  ok: false,
736
736
  statusCode: res.statusCode,
737
737
  };
738
738
  return changeRes;
739
739
  }
740
740
  } else {
741
741
  changeRes = {
742
742
  ...data,
743
743
  ok: false,
744
744
  statusCode: res.statusCode,
745
745
  };
746
746
  return changeRes;
747
747
  }
748
748
  })
749
749
  .catch((res) => {
750
750
  return {
751
751
  ...res,
752
752
  ok: false,
753
753
  } as ServiceInterFace.RequestResponseFormatRes;
754
754
  });
755
755
  }
756
756
 
757
757
  async receiveCoupon(param = {}, clientParams) {
758
758
  const loginType = isPc ? { loginType: 3 } : {};
759
759
  return await this.gatewayReq(
760
760
  'receiveShopCoupon',
761
761
  {
762
762
  operation: '3',
763
763
  ...param,
764
764
  },
765
765
  { ...loginType, ...clientParams },
766
766
  );
767
767
  }
768
768
 
769
769
  getCustomerCenterDispatch(params = {}) {
770
770
  return this.gatewayReq('customerCenterDispatch', params, {
771
771
  clientVersion: '9.2.0',
772
772
  client: 'H5',
773
773
  uuid: 88888,
774
774
  appid: 'shopmember_m_jd_com',
775
775
  });
776
776
  }
777
777
 
778
778
  batchAddCart(...args) {
779
779
  let skuIds, num, showToast, giftCard;
780
780
  if (['number', 'string'].includes(typeof args[0])) {
781
781
  [skuIds, num = 1, showToast = true, giftCard = false] = args;
782
782
  } else if (typeof args[0] === 'object' && args[0] !== null) {
783
783
  const params = args[0];
784
784
  skuIds = params.skuIds;
785
785
  num = params.num || 1;
786
786
  showToast = params.showToast !== undefined ? params.showToast : true;
787
787
  giftCard = params.giftCard !== undefined ? params.giftCard : false;
788
788
  } else {
789
789
  console.error('batchAddCart() Invalid arguments!', args);
790
790
  const msg = isLanguageForEn ? 'Please retry later' : '加入购物车失败,请稍后重试!';
791
791
  showFailToast({
792
792
  title: msg,
793
793
  });
794
794
  return Promise.resolve({
795
795
  ok: false,
796
796
  msg,
797
797
  });
798
798
  }
799
799
  const addToWhereText = giftCard ? '购物清单' : '购物车';
800
800
  const successMsg = isLanguageForEn ? 'Success' : `加入${addToWhereText}成功`;
801
801
  const failMsg = isLanguageForEn
802
802
  ? 'Please retry later'
803
803
  : `加入${addToWhereText}失败,请稍后重试!`;
804
804
  if (skuIds) {
805
805
  return this._addShopGoodCart(`${skuIds}`, `${num}`, { giftCard })
806
806
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
807
807
  if (res?.ok) {
808
808
  if (showToast && !res?.isOpenApp)
809
809
  showSuccessToast({
810
810
  title: successMsg,
811
811
  });
812
812
  } else {
813
813
  showToast &&
814
814
  showFailToast({
815
815
  title: res?.errMsg || failMsg,
816
816
  });
817
817
  }
818
818
  return Promise.resolve(res);
819
819
  })
820
820
  .catch((e) => {
821
821
  console.log('调用加购方法异常=======>', e);
822
822
  return Promise.resolve({
823
823
  ok: false,
824
824
  msg: failMsg,
825
825
  });
826
826
  });
827
827
  } else {
828
828
  return Promise.resolve({
829
829
  ok: false,
830
830
  msg: failMsg,
831
831
  });
832
832
  }
833
833
  }
834
834
 
835
835
  async giftCardAddCart(skuList, num) {
836
836
  const loginType = isPc ? { loginType: 3 } : {};
837
837
  return this.gatewayReq(
838
838
  'giftCardAddCart',
839
839
  {
840
840
  skuList,
841
841
  num: Number(num),
842
842
  },
843
843
  { ...loginType },
844
844
  );
845
845
  }
846
846
 
847
847
  _addShopGoodCart(skuIdsStr, addCardNum = '1', { giftCard }) {
848
848
  return new Promise((resolve) => {
849
849
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(',') : [];
850
850
  if (productIdsArr.length > 0) {
851
851
  if (giftCard) {
852
852
  this.giftCardAddCart(productIdsArr, addCardNum)
853
853
  .then((res) => {
854
854
  if (res?.code === '0' && res?.result?.value) {
855
855
  resolve({
856
856
  ok: true,
857
857
  });
858
858
  } else {
859
859
  resolve({
860
860
  ok: false,
861
861
  msg: '加购失败,请稍后重试',
862
862
  });
863
863
  }
864
864
  })
865
865
  .catch((e) => {
866
866
  console.error('礼品卡加车失败: ', e);
867
867
  resolve({
868
868
  ok: false,
869
869
  msg: '加购失败,请稍后重试',
870
870
  });
871
871
  });
872
872
  } else if (isJdApp) {
873
873
  console.log('==========>', 'app原生批量加车!,小程序端暂不涉及');
874
874
  } else if (isMin) {
875
875
  console.log('==========>', '京购批量加车!');
876
876
  const productsAddCartList = productIdsArr.map((skuItem) => {
877
877
  return {
878
878
  skuId: skuItem,
879
879
  buyNum: addCardNum,
880
880
  };
881
881
  });
882
882
  global.wxAppBizInstance
883
883
  .addCart({ commArr: productsAddCartList })
884
884
  .then((res) => {
885
885
  console.log('dealCartSuccess: ', res);
886
886
  resolve({
887
887
  ok: true,
888
888
  msg: '已加入购物车!',
889
889
  data: res,
890
890
  });
891
891
  })
892
892
  .catch((e) => {
893
893
  console.log('京购小程序批量加车失败dealCartFail: ', e);
894
894
  resolve({
895
895
  ok: false,
896
896
  msg: '加购失败,请稍后重试',
897
897
  });
898
898
  });
899
899
  } else {
900
900
  console.log('==========>', 'M站批量加车!');
901
901
  return this.productAddToCart(skuIdsStr, addCardNum).then((res) => resolve(res));
902
902
  }
903
903
  } else {
904
904
  resolve({
905
905
  ok: false,
906
906
  msg: '加购sku不能为空',
907
907
  });
908
908
  }
909
909
  });
910
910
  }
911
911
 
912
912
  productAddToCart(skuIdsStr, num) {
913
913
  return new Promise((resolve) => {
914
914
  if (window.AddcartToolObj) {
915
915
  window.AddcartToolObj.addCart({
916
916
  skuId: skuIdsStr,
917
917
  num,
918
918
  source: 'sjdpyw',
919
919
  actId: '1',
920
920
  loginType: window?.isJingGouMiniViewState ? '11' : '2',
921
921
  sucFun(res) {
922
922
  console.log('ok,接口请求成功,不一定指的加车成功,加车成功需要看返回码errId为0', res);
923
923
  if (res.errId === '0' && res.cartJson) {
924
924
  resolve({
925
925
  ok: true,
926
926
  msg: '已加入购物车!',
927
927
  ...res,
928
928
  });
929
929
  } else {
930
930
  if (res.errId === '13') {
931
931
  global.doLogin();
932
932
  } else {
933
933
  resolve({
934
934
  ok: false,
935
935
  msg: '加购失败,请稍后重试',
936
936
  ...res,
937
937
  });
938
938
  }
939
939
  }
940
940
  },
941
941
  failFun(err) {
942
942
  console.log('fail', err);
943
943
  resolve({
944
944
  ok: false,
945
945
  msg: '加购失败,请稍后重试',
946
946
  ...err,
947
947
  });
948
948
  },
949
949
  });
950
950
  } else {
951
951
  resolve({
952
952
  ok: false,
953
953
  msg: '购物车方法检查异常',
954
954
  });
955
955
  }
956
956
  });
957
957
  }
958
958
  bMallGetUserInfo = () => {
959
959
  return getBMallUserInfo();
960
960
  };
961
961
  async bMallAddCart(params = {}) {
962
962
  return await this.gatewayReq('bmall_cartAdd', params, {
963
963
  client: 'H5',
964
964
  clientVersion: '5.5.0',
965
965
  });
966
966
  }
967
967
  async bMallChangeCart(params = {}) {
968
968
  return await this.gatewayReq('bmall_cartChange', params, {
969
969
  client: 'H5',
970
970
  clientVersion: '5.5.0',
971
971
  });
972
972
  }
973
973
  async bMallRemoveCart(params = {}) {
974
974
  return await this.gatewayReq(
975
975
  'bmall_cartRemove',
976
976
  params,
977
977
  {
978
978
  client: 'H5',
979
979
  clientVersion: '5.5.0',
980
980
  },
981
981
  );
982
982
  }
983
983
  async bMallGetOmittedProduct(params = {}) {
984
984
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
985
985
  client: 'H5',
986
986
  clientVersion: '5.5.0',
987
987
  });
988
988
  }
989
989
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
990
990
  const params = await getParams({ ...data, skuId, bMallTag, num });
991
991
  return await this.bMallAddCart(params);
992
992
  }
993
993
  async bMallGetSkuNumService(bMallTag = 1) {
994
994
  const params = await getParams({ bMallTag });
995
995
  delete params.operations;
996
996
  return await this.bMallGetOmittedProduct(params);
997
997
  }
998
998
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
999
999
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid });
1000
1000
  return await this.bMallRemoveCart(params);
1001
1001
  }
1002
1002
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
1003
1003
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid });
1004
1004
  return await this.bMallChangeCart(params);
1005
1005
  }
1006
1006
 
1007
1007
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
1008
1008
  if (!needRequest && isH5 && window?.bMallCartData) {
1009
1009
  return window?.bMallCartData;
1010
1010
  }
1011
1011
  const cartData = await this.bMallGetSkuNumService(bMallTag);
1012
1012
  let items;
1013
1013
  if (cartData.ok && cartData.result) {
1014
1014
  items = cartData?.result?.items || {};
1015
1015
  }
1016
1016
  if (isH5) {
1017
1017
  window.bMallCartData = items;
1018
1018
  }
1019
1019
  return items;
1020
1020
  }
1021
1021
 
1022
1022
  async bMallCartHandle(goodItem, num) {
1023
1023
  try {
1024
1024
  const {
1025
1025
  skuUuid,
1026
1026
  limitUpper,
1027
1027
  limitLower,
1028
1028
  } = goodItem;
1029
1029
  let cartNum = Number(num);
1030
1030
  if (limitLower && cartNum && cartNum < limitLower) {
1031
1031
  cartNum = limitLower;
1032
1032
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
1033
1033
  cartNum = limitUpper;
1034
1034
  }
1035
1035
  if (skuUuid && cartNum > 0) {
1036
1036
  return this.bMallChangeCartService({
1037
1037
  ...goodItem,
1038
1038
  skuUuid,
1039
1039
  num: cartNum,
1040
1040
  });
1041
1041
  } else if (!skuUuid && cartNum > 0) {
1042
1042
  return this.bMallAddCartService({ ...goodItem, num: cartNum });
1043
1043
  } else if (skuUuid && !cartNum) {
1044
1044
  return this.bMallRemoveCartService({
1045
1045
  ...goodItem,
1046
1046
  skuUuid,
1047
1047
  num: cartNum,
1048
1048
  });
1049
1049
  } else {
1050
1050
  console.error('参数不全');
1051
1051
  return false;
1052
1052
  }
1053
1053
  } catch (e) {
1054
1054
  console.error(e);
1055
1055
  }
1056
1056
  }