@conecli/cone-render 0.10.1-shop3.9 → 0.10.1-shop3.91

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 (114) hide show
  1. package/README.md +1 -1
  2. package/dist/api/index.ts +1 -1
  3. package/dist/common/accessibility.h5.ts +1 -0
  4. package/dist/common/accessibility.ts +0 -0
  5. package/dist/common/const.ts +1 -1
  6. package/dist/common/index.h5.ts +1 -1
  7. package/dist/common/index.jd.ts +1 -1
  8. package/dist/common/index.ts +1 -1
  9. package/dist/common/index.weapp.ts +1 -1
  10. package/dist/common/jdplayerSdk.weapp.tsx +1 -0
  11. package/dist/common/jssdk.ts +1 -1
  12. package/dist/common/jssdk.weapp.ts +1 -0
  13. package/dist/common/pageType.ts +1 -1
  14. package/dist/common/token/index.h5.ts +1 -1
  15. package/dist/common/token/token.jd.ts +1 -1
  16. package/dist/common/wxappApi.ascf.ts +1 -0
  17. package/dist/common/wxappApi.ts +1 -1
  18. package/dist/components/ErrorBoundary.tsx +1 -1
  19. package/dist/components/base/CommonFloorHead/index.tsx +1 -1
  20. package/dist/components/base/CountDown/index.tsx +1 -1
  21. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  22. package/dist/components/base/CustomVideo/index.tsx +1 -1
  23. package/dist/components/base/CustomVideo/index.weapp.tsx +1 -0
  24. package/dist/components/base/ExposureSmart/index.h5.tsx +1 -1
  25. package/dist/components/base/ExposureSmart/index.tsx +1 -1
  26. package/dist/components/base/ExposureSmart/reporter.tsx +1 -1
  27. package/dist/components/base/InOrOutViewObserver/index.weapp.tsx +1 -0
  28. package/dist/components/base/ItemViewExposureSmart/index.tsx +1 -1
  29. package/dist/components/base/LazyLayoutLoad/index.tsx +1 -1
  30. package/dist/components/base/LazyLoadImage/index.h5.tsx +1 -1
  31. package/dist/components/base/MobileCommonHeader/index.tsx +1 -1
  32. package/dist/components/base/MobileCommonHeader/index.weapp.tsx +1 -0
  33. package/dist/components/base/NetworkDataError/const.ts +1 -1
  34. package/dist/components/base/NetworkDataError/index.module.scss +118 -72
  35. package/dist/components/base/NetworkDataError/index.tsx +1 -1
  36. package/dist/components/base/Price/Base/index.module.scss +12 -0
  37. package/dist/components/base/Price/Base/index.tsx +1 -1
  38. package/dist/components/base/Price/Double/index.module.scss +25 -1
  39. package/dist/components/base/Price/Double/index.tsx +1 -1
  40. package/dist/components/base/ShopLeGaoTag/index.h5.module.scss +35 -0
  41. package/dist/components/base/ShopLeGaoTag/index.h5.tsx +1 -0
  42. package/dist/components/base/ShopLeGaoTag/index.module.scss +33 -0
  43. package/dist/components/base/ShopLeGaoTag/index.tsx +1 -0
  44. package/dist/components/debug/DebugLayout/index.module.scss +2 -2
  45. package/dist/components/floorItem.tsx +1 -1
  46. package/dist/components/isv/Floor/index.tsx +1 -1
  47. package/dist/components/remoteFloorItem.tsx +1 -1
  48. package/dist/config/env.ts +1 -1
  49. package/dist/interface/common.ts +1 -1
  50. package/dist/interface/component.ts +1 -1
  51. package/dist/interface/jumpEventReport.ts +1 -1
  52. package/dist/interface/service.ts +1 -1
  53. package/dist/jumpEventReport/base.ts +1 -1
  54. package/dist/jumpEventReport/const.ts +1 -1
  55. package/dist/jumpEventReport/createReportFloorData.ts +1 -1
  56. package/dist/jumpEventReport/index.h5.ts +1 -1
  57. package/dist/jumpEventReport/index.jd.ts +1 -1
  58. package/dist/jumpEventReport/index.weapp.ts +1 -1
  59. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  60. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  61. package/dist/jumpEventReport/logEventConfig.h5.ts +1 -0
  62. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  63. package/dist/jumpEventReport/web/report.ts +1 -1
  64. package/dist/jumpEventReport/web.base.ts +1 -1
  65. package/dist/jumpEventReport/web.jd.ts +1 -1
  66. package/dist/jumpEventReport/web.pc.ts +1 -1
  67. package/dist/jumpEventReport/web.tjm.ts +1 -1
  68. package/dist/jumpEventReport/web.wxapp.ts +1 -1
  69. package/dist/language/en_US.json +309 -0
  70. package/dist/language/zh_CN.json +309 -0
  71. package/dist/language/zh_HK.json +309 -0
  72. package/dist/libs/openShopBridge.js +161 -0
  73. package/dist/libs/openShopBridge.min.js +1 -0
  74. package/dist/libs/taroAppReport.js +2 -2
  75. package/dist/modules/ContainerFloorList/index.h5.module.scss +16 -2
  76. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  77. package/dist/modules/ContainerFloorList/index.tsx +1 -1
  78. package/dist/modules/DecorateContainerFloorList/index.weapp.tsx +1 -0
  79. package/dist/open/api/environment.ts +1 -1
  80. package/dist/open/api/shopMember.ts +1 -1
  81. package/dist/open/api/shopMember.weapp.ts +1 -0
  82. package/dist/open/api/track.ts +1 -1
  83. package/dist/open/api/util.ts +1 -1
  84. package/dist/open/components/index.ts +1 -1
  85. package/dist/open/index.ts +1 -1
  86. package/dist/sass/app.h5.scss +27 -1
  87. package/dist/sass/base.scss +8 -4
  88. package/dist/service/fetchGateway.ts +1 -1
  89. package/dist/service/fetchGateway.weapp.ts +1 -1
  90. package/dist/service/fetchJsonp.weapp.ts +1 -0
  91. package/dist/service/http/const.ts +1 -1
  92. package/dist/service/http/h5Http.ts +1 -1
  93. package/dist/service/http/httpInterceptors.weapp.ts +1 -0
  94. package/dist/service/requestServer.h5.ts +1 -1
  95. package/dist/service/requestServer.ts +1 -1
  96. package/dist/service/requestServer.weapp.ts +1 -1
  97. package/dist/utils/connectNativeJsBridge.ts +1 -1
  98. package/dist/utils/h5Utils.ts +1 -1
  99. package/dist/utils/harmonyCallRouter.h5.ts +1 -0
  100. package/dist/utils/harmonyCallRouter.ts +0 -0
  101. package/dist/utils/index.h5.ts +1 -1
  102. package/dist/utils/index.ts +1 -1
  103. package/dist/utils/index.weapp.ts +1 -1
  104. package/dist/utils/jumpExtMapUtil.ts +1 -0
  105. package/dist/utils/log.ts +1 -0
  106. package/dist/utils/{sColor.js → sColor.ts} +1 -1
  107. package/dist/utils/sColor.weapp.ts +1 -0
  108. package/dist/utils/utils.ts +1 -1
  109. package/dist/wxapp/common/address_api/address_api_v2.js +1 -0
  110. package/dist/wxapp/common/user_info.js +1 -1
  111. package/package.json +162 -141
  112. package/dist/jumpEventReport/web/wqshop.report.ts +0 -1
  113. package/dist/utils/priceUtils.js +0 -1
  114. /package/dist/utils/{jumpExtMapUtil.js → jumpExtMapUtil.h5.ts} +0 -0
@@ -1 +1 @@
1
- import Taro from '@tarojs/taro';
2
1
  APPID,
3
2
  JshopxColorFunctionIdList,
4
3
  PagesColorFunctionIdList,
5
4
  PAGES_DOMAIN,
6
5
  B2BColorFunctionIdList,
7
6
  MobileVerifyColorList,
8
7
  AppVerifyColorList,
9
8
  JshopxVerifyColorList,
10
9
  BMallVerifyColorList,
11
10
  shopMemberColorFunctionIdList,
12
11
  isLanguageForEn,
13
12
  isJdApp,
14
13
  isIosDevice,
15
14
  isAndroidDevice,
16
15
  showSuccessToast,
17
16
  showFailToast,
18
17
  isH5,
19
18
  isWxMinAndWxapp,
20
19
  isMin,
21
20
  isPc,
22
21
  cookiesStr: '',
23
22
  requestHeaderContentType: {
24
23
  jsonHeader: {
25
24
  'content-type': 'application/json;charset=utf-8',
26
25
  },
27
26
  formDataHeader: {
28
27
  'content-type': 'application/x-www-form-urlencoded',
29
28
  },
30
29
  },
31
30
  requestBaseParam: {
32
31
  data: null,
33
32
  header: {
34
33
  'content-type': 'application/json;charset=utf-8',
35
34
  },
36
35
  },
37
36
  timeOut: 7000,
38
37
  apiClientParams: {
39
38
  appid: 'wx_mini_app',
40
39
  clientVersion: '11.0.0',
41
40
  client: 'wh5',
42
41
  area: '1_72_2799_0',
43
42
  screen: `${Math.ceil(
44
43
  getSystemInfo?.screenWidth * devicePixelRatio,
45
44
  )}*${Math.ceil(getSystemInfo?.screenHeight * devicePixelRatio)}`,
46
45
  uuid: UUID,
47
46
  loginType: '11',
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(functionId: string, bodyParams = {}, clientParams = {}): Promise<any> {
127
126
  if (functionId === 'receiveShopCoupon') {
128
127
  clientParams = Object.assign(
129
128
  {},
130
129
  {
131
130
  loginType: '1',
132
131
  loginWQBiz: WXAPP_BIZ_KEY,
133
132
  },
134
133
  clientParams,
135
134
  )
136
135
  }
137
136
  const apiClientParams = Object.assign(
138
137
  {},
139
138
  this.resInfo.apiClientParams,
140
139
  clientParams,
141
140
  )
142
141
  const isColorVerify = this.verifyColorList.includes(functionId);
143
142
  const getReqData = {
144
143
  functionId: functionId,
145
144
  body: JSON.stringify(bodyParams),
146
145
  t: Date.now(),
147
146
  ...apiClientParams,
148
147
  }
149
148
  const requestParams = {
150
149
  functionId: getReqData?.functionId,
151
150
  body: getReqData?.body,
152
151
  appid: getReqData?.appid,
153
152
  client: getReqData?.client,
154
153
  clientVersion: getReqData?.clientVersion,
155
154
  area: getReqData?.area,
156
155
  requestTimeStamp: getReqData?.t,
157
156
  }
158
157
  return http
159
158
  .request({
160
159
  url: this.api.apiFunc,
161
160
  data: getReqData,
162
161
  isColorVerify,
163
162
  })
164
163
  .then((res: ServiceInterFace.RequestPromiseRes) => {
165
164
  const { statusCode, data, status, msg } = res
166
165
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
167
166
  ok: true,
168
167
  }
169
168
  if ((statusCode === 200 || status === '0') && data) {
170
169
  changeRes = this.dealResponseFormatRes(data, getReqData)
171
170
  return changeRes
172
171
  } else {
173
172
  sgmCustomReport({
174
173
  code: getSgmCustomCode('interface_data_error'),
175
174
  msg: {
176
175
  subMsg: '接口请求异常',
177
176
  functionId,
178
177
  statusCode,
179
178
  source: 'remote',
180
179
  status,
181
180
  msg,
182
181
  requestParams,
183
182
  },
184
183
  })
185
184
  draInterfaceCustomReport({
186
185
  ...getReqData,
187
186
  ...res,
188
187
  source: 'remote',
189
188
  })
190
189
  changeRes = {
191
190
  ...data,
192
191
  statusCode,
193
192
  status,
194
193
  msg,
195
194
  ok: false,
196
195
  }
197
196
  return changeRes
198
197
  }
199
198
  })
200
199
  .catch((res) => {
201
200
  const propertyNames = Object.getOwnPropertyNames(res)
202
201
  const resObject = {}
203
202
  propertyNames.forEach((propertyName) => {
204
203
  resObject[propertyName] = res[propertyName]
205
204
  })
206
205
  sgmCustomReport({
207
206
  code: getSgmCustomCode('interface_data_error'),
208
207
  msg: {
209
208
  subMsg: '接口请求错误',
210
209
  functionId,
211
210
  source: 'remote',
212
211
  requestParams,
213
212
  catchError: resObject,
214
213
  },
215
214
  })
216
215
  draInterfaceCustomReport({
217
216
  ...getReqData,
218
217
  ...resObject,
219
218
  source: 'remote',
220
219
  })
221
220
  return {
222
221
  ...resObject,
223
222
  ok: false,
224
223
  } as ServiceInterFace.RequestResponseFormatRes
225
224
  })
226
225
  }
227
226
 
228
227
  dealResponseFormatRes(data, reqData) {
229
228
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
230
229
  ok: true,
231
230
  }
232
231
  const resCode = Object.prototype.hasOwnProperty.call(data, 'code')
233
232
  ? Number(data.code)
234
233
  : -1
235
234
  const subCode = Object.prototype.hasOwnProperty.call(data, 'subCode')
236
235
  ? Number(data.subCode)
237
236
  : -1
238
237
  if (
239
238
  data.success === true ||
240
239
  data.isSuccess ||
241
240
  resCode === 0 ||
242
241
  resCode === 200 ||
243
242
  subCode === 0
244
243
  ) {
245
244
  changeRes = {
246
245
  result: Object.prototype.hasOwnProperty.call(data, 'result')
247
246
  ? data.result
248
247
  : Object.prototype.hasOwnProperty.call(data, 'data')
249
248
  ? data.data
250
249
  : data,
251
250
  code: data.code ?? 200,
252
251
  ok: true,
253
252
  source: data,
254
253
  }
255
254
  return changeRes
256
255
  } else {
257
256
  changeRes = {
258
257
  ...data,
259
258
  ok: false,
260
259
  }
261
260
  if (reqData && resCode !== 3) {
262
261
  const getReportMsgData = reqData['hybridId']
263
262
  ? {
264
263
  subMsg: '预加载接口请求数据异常',
265
264
  hybridId: reqData?.hybridId,
266
265
  requestId: reqData?.requestId,
267
266
  param: reqData?.param,
268
267
  source: 'remote',
269
268
  }
270
269
  : {
271
270
  subMsg: '接口请求返回数据异常',
272
271
  functionId: reqData?.functionId,
273
272
  code: resCode,
274
273
  source: 'remote',
275
274
  requestParams: {
276
275
  functionId: reqData?.functionId,
277
276
  body: reqData?.body,
278
277
  appid: reqData?.appid,
279
278
  client: reqData?.client,
280
279
  clientVersion: reqData?.clientVersion,
281
280
  area: reqData?.area,
282
281
  requestTimeStamp: reqData?.t,
283
282
  },
284
283
  resData: data,
285
284
  }
286
285
  sgmCustomReport({
287
286
  code: getSgmCustomCode('interface_data_error'),
288
287
  msg: getReportMsgData,
289
288
  })
290
289
  draInterfaceCustomReport({
291
290
  ...reqData,
292
291
  ...data,
293
292
  source: 'remote',
294
293
  })
295
294
  }
296
295
  return changeRes
297
296
  }
298
297
  }
299
298
 
300
299
  async receiveCoupon(param = {}, clientParams) {
301
300
  console.warn('receiveCoupon 方法在微信京购小程序环境未经验证,请不要使用!');
302
301
  return await this.gatewayReq(
303
302
  'receiveShopCoupon',
304
303
  {
305
304
  operation: '3',
306
305
  ...param,
307
306
  },
308
307
  { ...clientParams },
309
308
  );
310
309
  }
311
310
 
312
311
  getCustomerCenterDispatch(params = {}) {
313
312
  return this.gatewayReq('customerCenterDispatch', params, {
314
313
  clientVersion: '9.2.0',
315
314
  client: 'H5',
316
315
  uuid: 88888,
317
316
  appid: 'shopmember_m_jd_com',
318
317
  })
319
318
  }
320
319
 
321
320
  batchAddCart(...args) {
322
321
  let skuIds, num, showToast, giftCard;
323
322
  if (['number', 'string'].includes(typeof args[0])) {
324
323
  [skuIds, num = 1, showToast = true, giftCard = false] = args;
325
324
  } else if (typeof args[0] === 'object' && args[0] !== null) {
326
325
  const params = args[0];
327
326
  skuIds = params.skuIds;
328
327
  num = params.num || 1;
329
328
  showToast = params.showToast !== undefined ? params.showToast : true;
330
329
  giftCard = params.giftCard !== undefined ? params.giftCard : false;
331
330
  } else {
332
331
  console.error('batchAddCart() Invalid arguments!', args);
333
332
  const msg = isLanguageForEn ? 'Please retry later' : '加入购物车失败,请稍后重试!';
334
333
  showFailToast({
335
334
  title: msg,
336
335
  });
337
336
  return Promise.resolve({
338
337
  ok: false,
339
338
  msg,
340
339
  });
341
340
  }
342
341
  const addToWhereText = giftCard ? '购物清单' : '购物车';
343
342
  const successMsg = isLanguageForEn ? 'Success' : `加入${addToWhereText}成功`;
344
343
  const failMsg = isLanguageForEn
345
344
  ? 'Please retry later'
346
345
  : `加入${addToWhereText}失败,请稍后重试!`;
347
346
  if (skuIds) {
348
347
  return this._addShopGoodCart(`${skuIds}`, `${num}`, { giftCard })
349
348
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
350
349
  if (res?.ok) {
351
350
  if (showToast && !res?.isOpenApp)
352
351
  showSuccessToast({
353
352
  title: successMsg,
354
353
  })
355
354
  } else {
356
355
  showToast &&
357
356
  showFailToast({
358
357
  title: res?.errMsg || failMsg,
359
358
  })
360
359
  }
361
360
  return Promise.resolve(res)
362
361
  })
363
362
  .catch((e) => {
364
363
  console.log('调用加购方法异常=======>', e)
365
364
  return Promise.resolve({
366
365
  ok: false,
367
366
  msg: failMsg,
368
367
  })
369
368
  })
370
369
  } else {
371
370
  return Promise.resolve({
372
371
  ok: false,
373
372
  msg: failMsg,
374
373
  })
375
374
  }
376
375
  }
377
376
 
378
377
  async giftCardAddCart(skuList, num) {
379
378
  return this.gatewayReq('giftCardAddCart', {
380
379
  skuList,
381
380
  num: Number(num),
382
381
  });
383
382
  }
384
383
 
385
384
  _addShopGoodCart(skuIdsStr, addCardNum = '1', { giftCard }) {
386
385
  return new Promise((resolve) => {
387
386
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(',') : []
388
387
  if (productIdsArr.length > 0) {
389
388
  if (giftCard) {
390
389
  this.giftCardAddCart(productIdsArr, addCardNum)
391
390
  .then((res) => {
392
391
  if (res?.code === '0' && res?.result?.value) {
393
392
  resolve({
394
393
  ok: true,
395
394
  })
396
395
  } else {
397
396
  resolve({
398
397
  ok: false,
399
398
  msg: '加购失败,请稍后重试',
400
399
  })
401
400
  }
402
401
  })
403
402
  .catch((e) => {
404
403
  console.error('礼品卡加车失败: ', e)
405
404
  resolve({
406
405
  ok: false,
407
406
  msg: '加购失败,请稍后重试',
408
407
  });
409
408
  });
410
409
  } else if (isJdApp) {
411
410
  console.log('==========>', 'app原生批量加车!,小程序端暂不涉及');
412
411
  } else if (isMin) {
413
412
  console.log('==========>', '京购批量加车!')
414
413
  const productsAddCartList = productIdsArr.map((skuItem) => {
415
414
  return {
416
415
  skuId: skuItem,
417
416
  buyNum: addCardNum,
418
417
  }
419
418
  })
420
419
  global.wxAppBizInstance
421
420
  .addCart({ commArr: productsAddCartList })
422
421
  .then((res) => {
423
422
  console.log('dealCartSuccess: ', res)
424
423
  resolve({
425
424
  ok: true,
426
425
  msg: '已加入购物车!',
427
426
  data: res,
428
427
  })
429
428
  })
430
429
  .catch((e) => {
431
430
  console.log('京购小程序批量加车失败dealCartFail: ', e)
432
431
  resolve({
433
432
  ok: false,
434
433
  msg: '加购失败,请稍后重试',
435
434
  })
436
435
  })
437
436
  } else {
438
437
  console.log('==========>', 'M站批量加车!')
439
438
  return this.productAddToCart(skuIdsStr, addCardNum).then((res) =>
440
439
  resolve(res),
441
440
  )
442
441
  }
443
442
  } else {
444
443
  resolve({
445
444
  ok: false,
446
445
  msg: '加购sku不能为空',
447
446
  })
448
447
  }
449
448
  })
450
449
  }
451
450
 
452
451
  productAddToCart() {
453
452
  return Promise.resolve({
454
453
  ok: false,
455
454
  msg: 'productAddToCart暂不支持小程序',
456
455
  });
457
456
  }
458
457
  bMallGetUserInfo = () => {
459
458
  return getBMallUserInfo()
460
459
  }
461
460
  async bMallAddCart(params = {}) {
462
461
  console.warn('bMallAddCart 方法在微信京购小程序环境未经验证,请不要使用!');
463
462
  return await this.gatewayReq('bmall_cartAdd', params, {
464
463
  client: 'H5',
465
464
  clientVersion: '5.5.0',
466
465
  })
467
466
  }
468
467
  async bMallChangeCart(params = {}) {
469
468
  console.warn('bMallChangeCart 方法在微信京购小程序环境未经验证,请不要使用!');
470
469
  return await this.gatewayReq('bmall_cartChange', params, {
471
470
  client: 'H5',
472
471
  clientVersion: '5.5.0',
473
472
  })
474
473
  }
475
474
  async bMallRemoveCart(params = {}) {
476
475
  console.warn('bMallRemoveCart 方法在微信京购小程序环境未经验证,请不要使用!');
477
476
  return await this.gatewayReq(
478
477
  'bmall_cartRemove',
479
478
  params,
480
479
  {
481
480
  client: 'H5',
482
481
  clientVersion: '5.5.0',
483
482
  },
484
483
  )
485
484
  }
486
485
  async bMallGetOmittedProduct(params = {}) {
487
486
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
488
487
  client: 'H5',
489
488
  clientVersion: '5.5.0',
490
489
  })
491
490
  }
492
491
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
493
492
  const params = await getParams({ ...data, skuId, bMallTag, num })
494
493
  return await this.bMallAddCart(params)
495
494
  }
496
495
  async bMallGetSkuNumService(bMallTag = 1) {
497
496
  const params = await getParams({ bMallTag })
498
497
  delete params.operations
499
498
  return await this.bMallGetOmittedProduct(params)
500
499
  }
501
500
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
502
501
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
503
502
  return await this.bMallRemoveCart(params)
504
503
  }
505
504
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
506
505
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
507
506
  return await this.bMallChangeCart(params)
508
507
  }
509
508
 
510
509
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
511
510
  if (!needRequest && isH5 && window?.bMallCartData) {
512
511
  return window?.bMallCartData
513
512
  }
514
513
  const cartData = await this.bMallGetSkuNumService(bMallTag)
515
514
  let items
516
515
  if (cartData.ok && cartData.result) {
517
516
  items = cartData?.result?.items || {}
518
517
  }
519
518
  if (isH5) {
520
519
  window.bMallCartData = items
521
520
  }
522
521
  return items
523
522
  }
524
523
 
525
524
  async bMallCartHandle(goodItem, num) {
526
525
  try {
527
526
  const {
528
527
  skuUuid,
529
528
  limitUpper,
530
529
  limitLower,
531
530
  } = goodItem
532
531
  let cartNum = Number(num)
533
532
  if (limitLower && cartNum && cartNum < limitLower) {
534
533
  cartNum = limitLower
535
534
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
536
535
  cartNum = limitUpper
537
536
  }
538
537
  if (skuUuid && cartNum > 0) {
539
538
  return this.bMallChangeCartService({
540
539
  ...goodItem,
541
540
  skuUuid,
542
541
  num: cartNum,
543
542
  })
544
543
  } else if (!skuUuid && cartNum > 0) {
545
544
  return this.bMallAddCartService({ ...goodItem, num: cartNum })
546
545
  } else if (skuUuid && !cartNum) {
547
546
  return this.bMallRemoveCartService({
548
547
  ...goodItem,
549
548
  skuUuid,
550
549
  num: cartNum,
551
550
  })
552
551
  } else {
553
552
  console.error('参数不全')
554
553
  return false
555
554
  }
556
555
  } catch (e) {
557
556
  console.error(e)
558
557
  }
559
558
  }
559
+ import Taro from '@tarojs/taro';
560
560
  APPID,
561
561
  JshopxColorFunctionIdList,
562
562
  PagesColorFunctionIdList,
563
563
  PAGES_DOMAIN,
564
564
  B2BColorFunctionIdList,
565
565
  MobileVerifyColorList,
566
566
  AppVerifyColorList,
567
567
  JshopxVerifyColorList,
568
568
  BMallVerifyColorList,
569
569
  shopMemberColorFunctionIdList,
570
570
  isLanguageForEn,
571
571
  isJdApp,
572
572
  isIosDevice,
573
573
  isAndroidDevice,
574
574
  showSuccessToast,
575
575
  showFailToast,
576
576
  isH5,
577
577
  isWxMinAndWxapp,
578
578
  isMin,
579
579
  isPc,
580
580
  cookiesStr: '',
581
581
  requestHeaderContentType: {
582
582
  jsonHeader: {
583
583
  'content-type': 'application/json;charset=utf-8',
584
584
  },
585
585
  formDataHeader: {
586
586
  'content-type': 'application/x-www-form-urlencoded',
587
587
  },
588
588
  },
589
589
  requestBaseParam: {
590
590
  data: null,
591
591
  header: {
592
592
  'content-type': 'application/json;charset=utf-8',
593
593
  },
594
594
  },
595
595
  timeOut: 7000,
596
596
  apiClientParams: {
597
597
  appid: 'wx_mini_app',
598
598
  clientVersion: '11.0.0',
599
599
  client: 'wh5',
600
600
  area: '1_72_2799_0',
601
601
  screen: `${Math.ceil(
602
602
  getSystemInfo?.screenWidth * devicePixelRatio,
603
603
  )}*${Math.ceil(getSystemInfo?.screenHeight * devicePixelRatio)}`,
604
604
  uuid: UUID,
605
605
  loginType: '11',
606
606
  },
607
607
  public addressFetchInfo: {
608
608
  reqState: boolean
609
609
  promiseInstance: null | Promise<any>
610
610
  }
611
611
  public getPromotionConfig: {
612
612
  projectId: null | string | number
613
613
  pageId: null | string | number
614
614
  }
615
615
  public resInfo: ServiceInterFace.HttpRequestInfo
616
616
  public api: ServiceInterFace.HttpApi
617
617
  public isPageDomain: boolean
618
618
  public verifyColorList: string[]
619
619
  constructor(opt) {
620
620
  this._init()
621
621
  this.addressFetchInfo = {
622
622
  reqState: false,
623
623
  promiseInstance: null,
624
624
  }
625
625
  this.getPromotionConfig = {
626
626
  projectId: null,
627
627
  pageId: null,
628
628
  }
629
629
  this._userAreaUpdateListen()
630
630
  this.resInfo = this._getResConfig(opt)
631
631
  this.api = api
632
632
  this.isPageDomain = isH5
633
633
  ? window?.location?.hostname === PAGES_DOMAIN
634
634
  : false
635
635
  this.verifyColorList = [
636
636
  ...MobileVerifyColorList,
637
637
  ...AppVerifyColorList,
638
638
  ...JshopxVerifyColorList,
639
639
  ...BMallVerifyColorList,
640
640
  ]
641
641
  }
642
642
  _init(): void {
643
643
  httpInterceptors.forEach((item) => {
644
644
  Taro.addInterceptor((chain) => item(chain))
645
645
  })
646
646
  }
647
647
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
648
648
  return Object.assign({}, DefaultConfig, opt)
649
649
  }
650
650
 
651
651
  _userAreaUpdateListen() {
652
652
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, (areaInfo) => {
653
653
  this.updateApiClientParamsResInfo(areaInfo);
654
654
  });
655
655
  }
656
656
  updateApiClientParamsResInfo(opt = {}) {
657
657
  const { area, realTimeArea, ...others } = opt;
658
658
  this.resInfo.apiClientParams = {
659
659
  ...this.resInfo.apiClientParams,
660
660
  ...others,
661
661
  };
662
662
  area && area !== '' && (this.resInfo.apiClientParams.area = area);
663
663
  realTimeArea &&
664
664
  realTimeArea !== '' &&
665
665
  (this.resInfo.apiClientParams.realTimeArea = realTimeArea);
666
666
  }
667
667
 
668
668
  checkFunctionIdToReturnAppId(functionId) {
669
669
  if (JshopxColorFunctionIdList.includes(functionId)) {
670
670
  return APPID.JSHOPX_COLOR_APPID
671
671
  } else if (
672
672
  this.isPageDomain &&
673
673
  PagesColorFunctionIdList.includes(functionId)
674
674
  ) {
675
675
  return APPID.PAGES_COLOR_APPID
676
676
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
677
677
  return APPID.SHOP_MEMBER_COLOR_APPID
678
678
  } else if (B2BColorFunctionIdList.includes(functionId)) {
679
679
  return APPID.B2B_COLOR_APPID
680
680
  } else if (isPc) {
681
681
  return APPID.MALL_COLOR_APPID
682
682
  } else {
683
683
  return APPID.SHOP_COLOR_APPID
684
684
  }
685
685
  }
686
686
 
687
687
  gatewayReq(functionId: string, bodyParams = {}, clientParams = {}): Promise<any> {
688
688
  if (functionId === 'receiveShopCoupon') {
689
689
  clientParams = Object.assign(
690
690
  {},
691
691
  {
692
692
  loginType: '1',
693
693
  loginWQBiz: WXAPP_BIZ_KEY,
694
694
  },
695
695
  clientParams,
696
696
  )
697
697
  }
698
698
  const apiClientParams = Object.assign(
699
699
  {},
700
700
  this.resInfo.apiClientParams,
701
701
  clientParams,
702
702
  )
703
703
  const isColorVerify = this.verifyColorList.includes(functionId);
704
704
  const getReqData = {
705
705
  functionId: functionId,
706
706
  body: JSON.stringify(bodyParams),
707
707
  t: Date.now(),
708
708
  ...apiClientParams,
709
709
  }
710
710
  const requestParams = {
711
711
  functionId: getReqData?.functionId,
712
712
  body: getReqData?.body,
713
713
  appid: getReqData?.appid,
714
714
  client: getReqData?.client,
715
715
  clientVersion: getReqData?.clientVersion,
716
716
  area: getReqData?.area,
717
717
  requestTimeStamp: getReqData?.t,
718
718
  }
719
719
  return http
720
720
  .request({
721
721
  url: this.api.apiFunc,
722
722
  data: getReqData,
723
723
  isColorVerify,
724
724
  })
725
725
  .then((res: ServiceInterFace.RequestPromiseRes) => {
726
726
  const { statusCode, data, status, msg } = res
727
727
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
728
728
  ok: true,
729
729
  }
730
730
  if ((statusCode === 200 || status === '0') && data) {
731
731
  changeRes = this.dealResponseFormatRes(data, getReqData)
732
732
  return changeRes
733
733
  } else {
734
734
  changeRes = {
735
735
  ...data,
736
736
  statusCode,
737
737
  status,
738
738
  msg,
739
739
  ok: false,
740
740
  }
741
741
  return changeRes
742
742
  }
743
743
  })
744
744
  .catch((res) => {
745
745
  const propertyNames = Object.getOwnPropertyNames(res)
746
746
  const resObject = {}
747
747
  propertyNames.forEach((propertyName) => {
748
748
  resObject[propertyName] = res[propertyName]
749
749
  })
750
750
  return {
751
751
  ...resObject,
752
752
  ok: false,
753
753
  } as ServiceInterFace.RequestResponseFormatRes
754
754
  })
755
755
  }
756
756
 
757
757
  dealResponseFormatRes(data, reqData) {
758
758
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
759
759
  ok: true,
760
760
  }
761
761
  const resCode = Object.prototype.hasOwnProperty.call(data, 'code')
762
762
  ? Number(data.code)
763
763
  : -1
764
764
  const subCode = Object.prototype.hasOwnProperty.call(data, 'subCode')
765
765
  ? Number(data.subCode)
766
766
  : -1
767
767
  if (
768
768
  data.success === true ||
769
769
  data.isSuccess ||
770
770
  resCode === 0 ||
771
771
  resCode === 200 ||
772
772
  subCode === 0
773
773
  ) {
774
774
  changeRes = {
775
775
  result: Object.prototype.hasOwnProperty.call(data, 'result')
776
776
  ? data.result
777
777
  : Object.prototype.hasOwnProperty.call(data, 'data')
778
778
  ? data.data
779
779
  : data,
780
780
  code: data.code ?? 200,
781
781
  ok: true,
782
782
  source: data,
783
783
  }
784
784
  return changeRes
785
785
  } else {
786
786
  changeRes = {
787
787
  ...data,
788
788
  ok: false,
789
789
  }
790
790
  if (reqData && resCode !== 3) {
791
791
  const getReportMsgData = reqData['hybridId']
792
792
  ? {
793
793
  subMsg: '预加载接口请求数据异常',
794
794
  hybridId: reqData?.hybridId,
795
795
  requestId: reqData?.requestId,
796
796
  param: reqData?.param,
797
797
  source: 'remote',
798
798
  }
799
799
  : {
800
800
  subMsg: '接口请求返回数据异常',
801
801
  functionId: reqData?.functionId,
802
802
  code: resCode,
803
803
  source: 'remote',
804
804
  requestParams: {
805
805
  functionId: reqData?.functionId,
806
806
  body: reqData?.body,
807
807
  appid: reqData?.appid,
808
808
  client: reqData?.client,
809
809
  clientVersion: reqData?.clientVersion,
810
810
  area: reqData?.area,
811
811
  requestTimeStamp: reqData?.t,
812
812
  },
813
813
  resData: data,
814
814
  }
815
815
 
816
816
  }
817
817
  return changeRes
818
818
  }
819
819
  }
820
820
 
821
821
  async receiveCoupon(param = {}, clientParams) {
822
822
  console.warn('receiveCoupon 方法在微信京购小程序环境未经验证,请不要使用!');
823
823
  return await this.gatewayReq(
824
824
  'receiveShopCoupon',
825
825
  {
826
826
  operation: '3',
827
827
  ...param,
828
828
  },
829
829
  { ...clientParams },
830
830
  );
831
831
  }
832
832
 
833
833
  getCustomerCenterDispatch(params = {}) {
834
834
  return this.gatewayReq('customerCenterDispatch', params, {
835
835
  clientVersion: '9.2.0',
836
836
  client: 'H5',
837
837
  uuid: 88888,
838
838
  appid: 'shopmember_m_jd_com',
839
839
  })
840
840
  }
841
841
 
842
842
  batchAddCart(...args) {
843
843
  let skuIds, num, showToast, giftCard;
844
844
  if (['number', 'string'].includes(typeof args[0])) {
845
845
  [skuIds, num = 1, showToast = true, giftCard = false] = args;
846
846
  } else if (typeof args[0] === 'object' && args[0] !== null) {
847
847
  const params = args[0];
848
848
  skuIds = params.skuIds;
849
849
  num = params.num || 1;
850
850
  showToast = params.showToast !== undefined ? params.showToast : true;
851
851
  giftCard = params.giftCard !== undefined ? params.giftCard : false;
852
852
  } else {
853
853
  console.error('batchAddCart() Invalid arguments!', args);
854
854
  const msg = isLanguageForEn ? 'Please retry later' : '加入购物车失败,请稍后重试!';
855
855
  showFailToast({
856
856
  title: msg,
857
857
  });
858
858
  return Promise.resolve({
859
859
  ok: false,
860
860
  msg,
861
861
  });
862
862
  }
863
863
  const addToWhereText = giftCard ? '购物清单' : '购物车';
864
864
  const successMsg = isLanguageForEn ? 'Success' : `加入${addToWhereText}成功`;
865
865
  const failMsg = isLanguageForEn
866
866
  ? 'Please retry later'
867
867
  : `加入${addToWhereText}失败,请稍后重试!`;
868
868
  if (skuIds) {
869
869
  return this._addShopGoodCart(`${skuIds}`, `${num}`, { giftCard })
870
870
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
871
871
  if (res?.ok) {
872
872
  if (showToast && !res?.isOpenApp)
873
873
  showSuccessToast({
874
874
  title: successMsg,
875
875
  });
876
876
  } else {
877
877
  showToast &&
878
878
  showFailToast({
879
879
  title: res?.errMsg || failMsg,
880
880
  });
881
881
  }
882
882
  return Promise.resolve(res)
883
883
  })
884
884
  .catch((e) => {
885
885
  console.log('调用加购方法异常=======>', e)
886
886
  return Promise.resolve({
887
887
  ok: false,
888
888
  msg: failMsg,
889
889
  });
890
890
  });
891
891
  } else {
892
892
  return Promise.resolve({
893
893
  ok: false,
894
894
  msg: failMsg,
895
895
  });
896
896
  }
897
897
  }
898
898
 
899
899
  async giftCardAddCart(skuList, num) {
900
900
  const loginType = isPc ? { loginType: 3 } : {};
901
901
  return this.gatewayReq(
902
902
  'giftCardAddCart',
903
903
  {
904
904
  skuList,
905
905
  num: Number(num),
906
906
  },
907
907
  { ...loginType },
908
908
  );
909
909
  }
910
910
 
911
911
  _addShopGoodCart(skuIdsStr, addCardNum = '1', { giftCard }) {
912
912
  return new Promise((resolve) => {
913
913
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(',') : []
914
914
  if (productIdsArr.length > 0) {
915
915
  if (giftCard) {
916
916
  this.giftCardAddCart(productIdsArr, addCardNum)
917
917
  .then((res) => {
918
918
  if (res?.code === '0' && res?.result?.value) {
919
919
  resolve({
920
920
  ok: true,
921
921
  });
922
922
  } else {
923
923
  resolve({
924
924
  ok: false,
925
925
  msg: '加购失败,请稍后重试',
926
926
  });
927
927
  }
928
928
  })
929
929
  .catch((e) => {
930
930
  console.error('礼品卡加车失败: ', e);
931
931
  resolve({
932
932
  ok: false,
933
933
  msg: '加购失败,请稍后重试',
934
934
  });
935
935
  });
936
936
  } else if (isJdApp) {
937
937
  console.log('==========>', 'app原生批量加车!,小程序端暂不涉及');
938
938
  } else if (isMin) {
939
939
  console.log('==========>', '京购批量加车!')
940
940
  const productsAddCartList = productIdsArr.map((skuItem) => {
941
941
  return {
942
942
  skuId: skuItem,
943
943
  buyNum: addCardNum,
944
944
  }
945
945
  })
946
946
  global.wxAppBizInstance
947
947
  .addCart({ commArr: productsAddCartList })
948
948
  .then((res) => {
949
949
  console.log('dealCartSuccess: ', res)
950
950
  resolve({
951
951
  ok: true,
952
952
  msg: '已加入购物车!',
953
953
  data: res,
954
954
  })
955
955
  })
956
956
  .catch((e) => {
957
957
  console.log('京购小程序批量加车失败dealCartFail: ', e)
958
958
  resolve({
959
959
  ok: false,
960
960
  msg: '加购失败,请稍后重试',
961
961
  })
962
962
  })
963
963
  } else {
964
964
  console.log('==========>', 'M站批量加车!')
965
965
  return this.productAddToCart(skuIdsStr, addCardNum).then((res) =>
966
966
  resolve(res),
967
967
  )
968
968
  }
969
969
  } else {
970
970
  resolve({
971
971
  ok: false,
972
972
  msg: '加购sku不能为空',
973
973
  })
974
974
  }
975
975
  })
976
976
  }
977
977
 
978
978
  productAddToCart() {
979
979
  return Promise.resolve({
980
980
  ok: false,
981
981
  msg: 'productAddToCart暂不支持小程序',
982
982
  });
983
983
  }
984
984
  bMallGetUserInfo(){
985
985
  return Promise.resolve({
986
986
  ok: false,
987
987
  msg: 'productAddToCart暂不支持小程序',
988
988
  });
989
989
  }
990
990
  bMallGetSkuNumApi(){
991
991
  return Promise.resolve({
992
992
  ok: false,
993
993
  msg: 'productAddToCart暂不支持小程序',
994
994
  });
995
995
  }
996
996
  bMallCartHandle(){
997
997
  return Promise.resolve({
998
998
  ok: false,
999
999
  msg: 'productAddToCart暂不支持小程序',
1000
1000
  });
1001
1001
  }