@conecli/cone-render 0.10.1-shop-beta.21 → 0.10.1-shop-beta.22

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.
@@ -1 +1 @@
1
- import global from '../common';
2
1
  BUSINESS_TYPE,
3
2
  SHOP_MENU_ID_TYPE,
4
3
  SHOP_MENU_ID_NAME,
5
4
  SECTION_HOME_TAB_TYPE,
6
5
  SECTION_HOME_TAB_NAME_TYPE,
7
6
  objectToUrlEncode,
8
7
  parseQueryUrlString,
9
8
  filterUrlQueryData,
10
9
  isJdAndHarmonyDevice,
11
10
  showNormalToast,
12
11
  routerInfo: {
13
12
  params: {},
14
13
  },
15
14
  nativeEvent: null,
16
15
  jumpConfig: {
17
16
  venderId: null,
18
17
  shopId: null,
19
18
  sourceValue: '',
20
19
  sourceType: 'M-H5',
21
20
  activityType: 'shopx',
22
21
  moduleId: 'none',
23
22
  entrance: 'none',
24
23
  },
25
24
  logPageParamStr: '',
26
25
  public logPageId: string;
27
26
  public jumpConfig: JumpEventReportInterFace.JumpH5ReportConfig;
28
27
  getConfig(opt) {
29
28
  return Object.assign(this, {}, defaultConfig, opt);
30
29
  }
31
30
  updateInfo(routerInfo, logPname = LogPnameInfo.HOME, pageId = LogPageIdInfo.APP) {
32
31
  this.routerInfo = routerInfo;
33
32
  this.logPname = logPname;
34
33
  this.jumpConfig = Object.assign(
35
34
  {},
36
35
  this.jumpConfig,
37
36
  filterUrlQueryData(routerInfo?.params || {}),
38
37
  );
39
38
  this.logPageId = pageId;
40
39
  }
41
40
 
42
41
  reportInfoPv(
43
42
  pageId = LogPageIdInfo.APP,
44
43
  opt: {
45
44
  pageParam?: any;
46
45
  } = {},
47
46
  ) {
48
47
  const { pageParam, ...otherOpts } = opt;
49
48
  const pageParamStr = typeof pageParam === 'object' ? JSON.stringify(pageParam) : pageParam;
50
49
  this.logPageParamStr = pageParamStr ? pageParamStr : JSON.stringify(this.jumpConfig);
51
50
  return reportPV({
52
51
  pageId,
53
52
  pageParam: this.logPageParamStr,
54
53
  ...otherOpts,
55
54
  });
56
55
  }
57
56
 
58
57
  jdJumpToProduct(skuIds, logEventInfo) {
59
58
  skuIds = skuIds.toString().trim();
60
59
  const getSkuId = skuIds.indexOf(',') !== -1 ? skuIds.split(',')[0] : skuIds;
61
60
  const { jingxiSdx, ...otherLogInfo } = logEventInfo;
62
61
  if (jingxiSdx) {
63
62
  this.jdNavigateToNative(
64
63
  `${this.jumpWebUrl.detail}${getSkuId}.html?sdx=${jingxiSdx}`,
65
64
  otherLogInfo,
66
65
  );
67
66
  } else {
68
67
  this.jdNavigateToNative(`${this.jumpWebUrl.detail}${getSkuId}.html`, logEventInfo);
69
68
  }
70
69
  }
71
70
 
72
71
  jdJumpSkuInfoToProduct(skuInfo: any = {}, logEventInfo) {
73
72
  const getSkuId = skuInfo?.skuId;
74
73
  this.jdJumpToProduct(getSkuId, logEventInfo);
75
74
  }
76
75
 
77
76
  jdJumpToRankList(contentId: string | number, rankType = 10, logEventInfo) {
78
77
  const rankUrl = `${this.jumpWebUrl.rank}?contentId=${contentId}&sku=&rankType=${rankType}&fromName=dcpws&hideAd=1`;
79
78
  this.jdNavigateToNative(rankUrl, {
80
79
  contentId,
81
80
  ...logEventInfo,
82
81
  });
83
82
  }
84
83
 
85
84
  jdJumpToShopCategory(shopInfo) {
86
85
  this.jdNavigateToNative(
87
86
  `${this.jumpWebUrl.shopHome}?${objectToUrlEncode(
88
87
  this.getShopIdOrVenderIdParams(shopInfo),
89
88
  )}&tabActive=classify`,
90
89
  {
91
90
  ...shopInfo,
92
91
  },
93
92
  );
94
93
  }
95
94
 
96
95
  jdJumpToShopHome(shopInfo: JumpEventReportInterFace.ShopIdsInfo = {}) {
97
96
  const getInfo = Object.assign(
98
97
  {},
99
98
  {
100
99
  shopId: global.info.queryInfo.shopId,
101
100
  venderId: global.info.queryInfo.venderId,
102
101
  },
103
102
  shopInfo,
104
103
  );
105
104
  this.jdNavigateToNative(
106
105
  `${this.jumpWebUrl.mshop}?${objectToUrlEncode(this.getShopIdOrVenderIdParams(getInfo))}`,
107
106
  {
108
107
  ...getInfo,
109
108
  },
110
109
  );
111
110
  }
112
111
 
113
112
  jdJumpToShopLight(shopInfo) {
114
113
  this.jdNavigateToNative(
115
114
  `${this.jumpWebUrl.shopLight}?${objectToUrlEncode(this.getShopIdOrVenderIdParams(shopInfo))}`,
116
115
  {
117
116
  ...shopInfo,
118
117
  },
119
118
  );
120
119
  }
121
120
 
122
121
  jdJumpToShopMember(shopInfo) {
123
122
  const getShopInfo = this.getShopIdOrVenderIdParams(shopInfo);
124
123
  const memberHomeUrl =
125
124
  window?.shopGlobalSwitch?.openNewMemberEntry === 'true'
126
125
  ? this.jumpWebUrl.memberHome
127
126
  : this.jumpWebUrl.shopMember;
128
127
  this.jdJumpToWeb(
129
128
  `${memberHomeUrl}?${objectToUrlEncode(getShopInfo)}&venderType=1&channel=406`,
130
129
  shopInfo,
131
130
  );
132
131
  }
133
132
 
134
133
  jdJumpToShopMemberCard(shopInfo) {
135
134
  const { logEventInfo } = shopInfo;
136
135
  const getShopInfo = this.getShopIdOrVenderIdParams(shopInfo);
137
136
  this.jdJumpToWeb(
138
137
  `${this.jumpWebUrl.shopMember}?${objectToUrlEncode(getShopInfo)}`,
139
138
  logEventInfo,
140
139
  );
141
140
  }
142
141
 
143
142
  jdJumpToTotalPromotion(shopInfo) {
144
143
  const { url, logEventInfo } = shopInfo;
145
144
  if (this.isOpenJdAppUrl(url)) {
146
145
  const getOpenAppParams: any = this.jdOpenAppParams(url);
147
146
  if (getOpenAppParams) {
148
147
  if (getOpenAppParams?.activityId) {
149
148
  this.jdJumpToWeb(
150
149
  `${this.jumpWebUrl.totalPromotion}?activity_id=${getOpenAppParams?.activityId}`,
151
150
  shopInfo,
152
151
  );
153
152
  }
154
153
  }
155
154
  } else {
156
155
  this.jdJumpToWeb(url, logEventInfo);
157
156
  }
158
157
  }
159
158
 
160
159
  jdJumpToDongDongChat(paramInfo) {
161
160
  const getInfo = Object.assign(
162
161
  {},
163
162
  {
164
163
  venderId: global.info.queryInfo.venderId,
165
164
  },
166
165
  paramInfo,
167
166
  );
168
167
  const { venderId = '1', entry = 'm_shop', ...otherInfo } = getInfo;
169
168
  const dongdongUrl = `${this.jumpWebUrl.dongDongChat}?venderId=${venderId}&entry=${entry}&sceneval=2`;
170
169
  this.jdJumpToWeb(dongdongUrl, otherInfo);
171
170
  }
172
171
 
173
172
  jdJumpToShopDetail(shopInfo) {
174
173
  const getInfo = Object.assign(
175
174
  {},
176
175
  {
177
176
  shopId: global.info.queryInfo.shopId,
178
177
  venderId: global.info.queryInfo.venderId,
179
178
  },
180
179
  shopInfo,
181
180
  );
182
181
  const getShopInfo = this.getShopIdOrVenderIdParams(getInfo);
183
182
  this.jdJumpToWeb(`${this.jumpWebUrl.shopIntroduce}?${objectToUrlEncode(getShopInfo)}`, getInfo);
184
183
  }
185
184
 
186
185
  jdJumpToShopSearch(shopInfo) {
187
186
  const getInfo = Object.assign(
188
187
  {},
189
188
  {
190
189
  shopId: global.info.queryInfo.shopId,
191
190
  venderId: global.info.queryInfo.venderId,
192
191
  },
193
192
  shopInfo,
194
193
  );
195
194
  const {
196
195
  shopId,
197
196
  categoryId,
198
197
  keyword,
199
198
  pageId,
200
199
  description,
201
200
  shopName,
202
201
  keyWord,
203
202
  seller_actId,
204
203
  seller_actType,
205
204
  } = getInfo;
206
205
  const cateId = categoryId
207
206
  ? `&cateId=${typeof categoryId === 'string' ? categoryId?.trim() : categoryId}`
208
207
  : '';
209
208
  const addKeyWord = keyword || keyWord ? `&keyword=${keyword || keyWord}` : '';
210
209
  const addPageId = pageId ? `&pageId=${pageId}` : '';
211
210
  const searchDes = description ? `&description=${description}` : '';
212
211
  const shopNameDes = shopName ? `&shopName=${shopName}` : '';
213
212
  const searchType = categoryId ? 5 : keyword || keyWord ? 4 : 3;
214
213
  const activityId = seller_actId ? `&activityId=${seller_actId}` : '';
215
214
  const activityType = seller_actType ? `&activityType=${seller_actType}` : '';
216
215
  this.jdJumpToWeb(
217
216
  `${this.jumpWebUrl.shopSearch}?shopId=${shopId}&searchType=${searchType}${cateId}${addKeyWord}${addPageId}${searchDes}${shopNameDes}${activityId}${activityType}`,
218
217
  getInfo,
219
218
  );
220
219
  }
221
220
 
222
221
  jdJumpToWeb(
223
222
  url,
224
223
  logEventInfo,
225
224
  successBack?: Function | undefined,
226
225
  failBack?: Function | undefined,
227
226
  ) {
228
227
  console.log('web.base.ts - jdJumpToWeb');
229
228
  this.jdNavigateToNative(
230
229
  url,
231
230
  {
232
231
  ...logEventInfo,
233
232
  },
234
233
  successBack,
235
234
  failBack,
236
235
  );
237
236
  }
238
237
 
239
238
  jdJumpToWebInner(url, logEventInfo) {
240
239
  this.jdJumpToWeb(url, logEventInfo);
241
240
  }
242
241
 
243
242
  jdJumpToLive(liveInfo, logEventInfo = {}) {
244
243
  if (liveInfo?.liveId) {
245
244
  this.jdJumpToWeb(`${this.jumpWebUrl.mLive}/${liveInfo?.liveId}?origin=30`, logEventInfo);
246
245
  } else if (isJdAndHarmonyDevice) {
247
246
  const getShopLiveParams = this.jdOpenAppParams(liveInfo);
248
247
  console.log('getShopLiveParams=====', getShopLiveParams);
249
248
  if (typeof getShopLiveParams === 'object') {
250
249
  this.jdNavigateToNativeOpenApp({
251
250
  ...getShopLiveParams,
252
251
  logEventInfo,
253
252
  });
254
253
  }
255
254
  }
256
255
  }
257
256
 
258
257
  jdJumpToShopActivity(shopInfo) {
259
258
  const { configDataValue, logEventInfo, projectId } = shopInfo;
260
259
  if (projectId && configDataValue) {
261
260
  this.jdJumpToWeb(
262
261
  `${this.jumpWebUrl.shopSecondActivity}${configDataValue.data}.html`,
263
262
  logEventInfo,
264
263
  );
265
264
  }
266
265
  }
267
266
 
268
267
  jdJumpToActivityPlace(spUrl, logEventInfo) {
269
268
  this.jdNavigateToNative(spUrl, logEventInfo);
270
269
  }
271
270
 
272
271
  jdJumpConfigUrl(detail, logEventInfo = {}) {
273
272
  const { configDataType, configDataValue } = detail;
274
273
  console.log('jdJumpConfigUrl web.base configDataType:', configDataType, configDataValue);
275
274
  switch (configDataType) {
276
275
  case LinkConfigType.CONFIG_TYPE_SKU_LIST:
277
276
  if (logEventInfo?.jsonParam?.logBaseInfo?.mInfo) {
278
277
  logEventInfo.jsonParam.logBaseInfo.mInfo.skuid = configDataValue.skuIds;
279
278
  }
280
279
  if (
281
280
  isJdAndHarmonyDevice &&
282
281
  global.info?.nonSellableSkuids?.[configDataValue.nonSellableKey]
283
282
  ) {
284
283
  showNormalToast({ title: '商品暂不可购买,请查看店内其他商品' });
285
284
  return;
286
285
  }
287
286
  this.jdJumpToProduct(configDataValue.skuIds, logEventInfo);
288
287
  break;
289
288
  case LinkConfigType.CONFIG_TYPE_COUPON_LIST:
290
289
  this.jdJumpToWeb(
291
290
  `${this.jumpWebUrl.shopCoupon}?couponType=1&shopId=${global.info.queryInfo.shopId}&venderId=${global.info.queryInfo.venderId}`,
292
291
  {},
293
292
  );
294
293
  break;
295
294
  case LinkConfigType.CONFIG_TYPE_CATEGORY:
296
295
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
297
296
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
298
297
  getShopSearchParams &&
299
298
  this.jdJumpToShopSearch(
300
299
  Object.assign({}, getShopSearchParams, {
301
300
  logEventInfo,
302
301
  }),
303
302
  );
304
303
  } else {
305
304
  this.jdJumpToShopSearch(
306
305
  configDataValue['cid']
307
306
  ? Object.assign(
308
307
  {},
309
308
  {
310
309
  shopId: global.info.queryInfo.shopId,
311
310
  categoryId: configDataValue.cid,
312
311
  ...configDataValue,
313
312
  logEventInfo,
314
313
  },
315
314
  )
316
315
  : {
317
316
  shopId: global.info.queryInfo.shopId,
318
317
  logEventInfo,
319
318
  },
320
319
  );
321
320
  }
322
321
  break;
323
322
  case LinkConfigType.CONFIG_TYPE_CATEGORY_PAGE:
324
323
  this.jdJumpToShopCategory({
325
324
  ...configDataValue,
326
325
  logEventInfo,
327
326
  });
328
327
  break;
329
328
  case LinkConfigType.CONFIG_TYPE_MEMBER:
330
329
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
331
330
  const getShopMemberParams = this.jdOpenAppParams(configDataValue.clickUrl);
332
331
  getShopMemberParams &&
333
332
  this.jdJumpToShopMember(
334
333
  Object.assign({}, getShopMemberParams, {
335
334
  logEventInfo,
336
335
  }),
337
336
  );
338
337
  } else {
339
338
  this.jdJumpToShopMember({
340
339
  shopId: global.info.queryInfo.shopId,
341
340
  venderId: configDataValue.shopDetail,
342
341
  logEventInfo,
343
342
  });
344
343
  }
345
344
  break;
346
345
  case LinkConfigType.CONFIG_TYPE_SHOP_ACTIVITY:
347
346
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
348
347
  const getShopActivityParams = this.jdOpenAppParams(configDataValue.clickUrl);
349
348
  if (getShopActivityParams && getShopActivityParams['des'] == 'jshopActivity') {
350
349
  this.jdJumpToShopActivity({
351
350
  projectId: configDataValue['projectId'],
352
351
  configDataValue,
353
352
  logEventInfo,
354
353
  });
355
354
  }
356
355
  } else if (configDataValue['projectId']) {
357
356
  this.jdJumpToShopActivity({
358
357
  projectId: configDataValue['projectId'],
359
358
  configDataValue,
360
359
  logEventInfo,
361
360
  });
362
361
  }
363
362
  break;
364
363
  case LinkConfigType.CONFIG_TYPE_CUSTOM_LINK:
365
364
  case LinkConfigType.CONFIG_TYPE_FINANCE_COUPON:
366
365
  const _url = configDataValue.linkUrl;
367
366
  const isProductM = /item\.m\.jd\.com/.test(_url);
368
367
  const isProductPC = /item\.jd\.com/.test(_url);
369
368
  if (
370
369
  _url.indexOf('to=') === -1 &&
371
370
  _url.indexOf(`${domain.mshop.replace(/https?:/, '')}/?shopId=`) !== -1
372
371
  ) {
373
372
  const _shopId = _url.match(/\d+/g)[0];
374
373
  this.jdJumpToShopHome({
375
374
  shopId: `${_shopId}`,
376
375
  logEventInfo,
377
376
  });
378
377
  } else if (this.isOpenJdAppUrl(_url)) {
379
378
  const getOpenAppParams: any = this.jdOpenAppParams(_url);
380
379
  if (getOpenAppParams) {
381
380
  if (getOpenAppParams.jumpTab == 'allProduct') {
382
381
  this.jdJumpToTabAllProduct(
383
382
  global.info.queryInfo.shopId || getOpenAppParams?.shopId,
384
383
  global.info.queryInfo.venderId || getOpenAppParams?.venderId,
385
384
  );
386
385
  } else if (
387
386
  getOpenAppParams.des == 'productList' &&
388
387
  getOpenAppParams.from == 'couponBatch'
389
388
  ) {
390
389
  this.jdJumpToCouponSearchProductList(getOpenAppParams?.couponId);
391
390
  } else if (getOpenAppParams.des == 'vapp') {
392
391
  this.jdJumpToWeb(
393
392
  `https://conecli.com/apps/mpshare/index.html?category=${
394
393
  getOpenAppParams.category
395
394
  }&des=${getOpenAppParams.des}&vapptype=${getOpenAppParams.vapptype}&appId=${
396
395
  getOpenAppParams.appId
397
396
  }&path=${getOpenAppParams.path}&param=${encodeURI(
398
397
  JSON.stringify(getOpenAppParams.param),
399
398
  )}`,
400
399
  logEventInfo,
401
400
  );
402
401
  } else {
403
402
  this.jdNavigateToNative(
404
403
  '',
405
404
  Object.assign({}, getOpenAppParams, {
406
405
  logEventInfo,
407
406
  }),
408
407
  );
409
408
  }
410
409
  }
411
410
  } else if (isProductM || isProductPC) {
412
411
  const skuid = _url.match(/\d+/g)[0];
413
412
  if (skuid) {
414
413
  this.jdJumpToProduct(skuid, logEventInfo);
415
414
  }
416
415
  } else {
417
416
  this.jdJumpToWeb(_url, logEventInfo);
418
417
  }
419
418
  break;
420
419
  case LinkConfigType.CONFIG_TYPE_JSHOP_DETAIL:
421
420
  this.jdJumpToShopDetail({
422
421
  venderId: global.info.queryInfo.venderId,
423
422
  shopId: global.info.queryInfo.shopId,
424
423
  logEventInfo,
425
424
  });
426
425
  break;
427
426
  case LinkConfigType.CONFIG_TYPE_SHOP_HOME:
428
427
  this.jdJumpToShopHome({
429
428
  ...configDataValue,
430
429
  logEventInfo,
431
430
  });
432
431
  break;
433
432
  case LinkConfigType.CONFIG_TYPE_ANCHOR_POINT:
434
433
  break;
435
434
  case LinkConfigType.CONFIG_TYPE_SHOPPING_GUIDE:
436
435
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
437
436
  const getShoppingGuideParams = this.jdOpenAppParams(configDataValue.clickUrl);
438
437
  getShoppingGuideParams &&
439
438
  this.jdJumpToShopActivity(
440
439
  Object.assign({}, getShoppingGuideParams, {
441
440
  logEventInfo,
442
441
  }),
443
442
  );
444
443
  }
445
444
  break;
446
445
  case LinkConfigType.CONFIG_TYPE_MINI_PROGRAM: {
447
446
  const linkUrl = decodeURIComponent(configDataValue?.linkUrl || '');
448
447
  const search = linkUrl.match(/\?.+/);
449
448
  if (search) {
450
449
  const miniQueryData: JumpEventReportInterFace.LinkMiniParams =
451
450
  parseQueryUrlString(linkUrl);
452
451
  try {
453
452
  miniQueryData.param = JSON.parse(<string>miniQueryData?.param);
454
453
  } catch (e) {
455
454
  console.warn('解析小程序 param 错误:', miniQueryData.param);
456
455
  }
457
456
  this.jdJumpToMiniProgram(miniQueryData);
458
457
  } else {
459
458
  console.warn('小程序地址错误:', linkUrl);
460
459
  }
461
460
  break;
462
461
  }
463
462
  case LinkConfigType.CONFIG_TYPE_SHOP_SEARCH: {
464
463
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
465
464
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
466
465
  console.log('web base 获取店铺结果落地页链接解析后的参数结果', getShopSearchParams);
467
466
  getShopSearchParams &&
468
467
  this.jdJumpToShopSearch(
469
468
  Object.assign({}, getShopSearchParams, {
470
469
  logEventInfo,
471
470
  }),
472
471
  );
473
472
  } else {
474
473
  this.jdJumpToWeb(configDataValue.clickUrl, logEventInfo);
475
474
  }
476
475
  break;
477
476
  }
478
477
  default:
479
478
  }
480
479
  }
481
480
 
482
481
  jdJumpToTabAllProduct(shopId, venderId, logEventInfo = {}) {
483
482
  console.log('web.base.ts - jdJumpToTabAllProduct');
484
483
  if (typeof shopId === 'undefined') shopId = global.info.queryInfo.shopId;
485
484
  if (typeof venderId === 'undefined') venderId = global.info.queryInfo.venderId;
486
485
  this.jdJumpToWeb(
487
486
  `${this.jumpWebUrl.shopHome}?${objectToUrlEncode({
488
487
  shopId,
489
488
  venderId,
490
489
  tabActive: 'home-product',
491
490
  })}`,
492
491
  logEventInfo,
493
492
  );
494
493
  }
495
494
 
496
495
  jdJumpToTabAllProductInner(shopId, venderId, logEventInfo = {}) {
497
496
  if (typeof shopId === 'undefined') shopId = global.info.queryInfo.shopId;
498
497
  if (typeof venderId === 'undefined') venderId = global.info.queryInfo.venderId;
499
498
  this.jdJumpToTabAllProduct(shopId, venderId, logEventInfo);
500
499
  }
501
500
 
502
501
  jdJumpToTopTabBase(type, shopInfo = {}) {
503
502
  const getInfo = Object.assign(
504
503
  {},
505
504
  {
506
505
  shopId: global.info.queryInfo.shopId,
507
506
  venderId: global.info.queryInfo.venderId,
508
507
  },
509
508
  shopInfo,
510
509
  );
511
510
  this.jdJumpToWeb(
512
511
  `${this.jumpWebUrl.shopHome}?${objectToUrlEncode(
513
512
  this.getShopIdOrVenderIdParams(getInfo),
514
513
  )}&tabActive=${type}`,
515
514
  getInfo,
516
515
  );
517
516
  }
518
517
 
519
518
  jdJumpToTabNew(shopInfo = {}) {
520
519
  console.log('上新tab');
521
520
  this.jdJumpToTopTabBase(
522
521
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_NEW_PRODUCT],
523
522
  shopInfo,
524
523
  );
525
524
  }
526
525
 
527
526
  jdJumpToTabNewInner(shopInfo = {}) {
528
527
  this.jdJumpToTabNew(shopInfo);
529
528
  }
530
529
 
531
530
  jdJumpToTabRank(shopInfo = {}) {
532
531
  console.log('榜单tab');
533
532
  this.jdJumpToTopTabBase(SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_RANK], shopInfo);
534
533
  }
535
534
  jdJumpToTabRankInner(shopInfo = {}) {
536
535
  this.jdJumpToTabRank(shopInfo);
537
536
  }
538
537
  jdJumpToTabBuyerShow(shopInfo = {}) {
539
538
  console.log('买家秀tab');
540
539
  this.jdJumpToTopTabBase(
541
540
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_BUYER_SHOW],
542
541
  shopInfo,
543
542
  );
544
543
  }
545
544
  jdJumpToTabBuyerShowInner(shopInfo = {}) {
546
545
  this.jdJumpToTabBuyerShow(shopInfo);
547
546
  }
548
547
  jdJumpToTabActivity(shopInfo = {}) {
549
548
  console.log('活动tab');
550
549
  this.jdJumpToTopTabBase(
551
550
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_ACTIVITY],
552
551
  shopInfo,
553
552
  );
554
553
  }
555
554
  jdJumpToTabActivityInner(shopInfo = {}) {
556
555
  this.jdJumpToTabActivity(shopInfo);
557
556
  }
558
557
  jdJumpToTabSecKill(shopInfo = {}) {
559
558
  console.log('秒杀tab');
560
559
  this.jdJumpToTopTabBase(
561
560
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_SECKILL],
562
561
  shopInfo,
563
562
  );
564
563
  }
565
564
  jdJumpToTabSecKillInner(shopInfo = {}) {
566
565
  this.jdJumpToTabSecKill(shopInfo);
567
566
  }
568
567
 
569
568
  jdJumpToBottomTabBase(type, shopInfo = {}) {
570
569
  this.jdJumpToTopTabBase(type, shopInfo);
571
570
  }
572
571
  jdJumpToBottomTabProduct(shopInfo = {}) {
573
572
  this.jdJumpToBottomTabBase(SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.PRODUCT], shopInfo);
574
573
  }
575
574
  jdJumpToBottomTabCategory(shopInfo = {}) {
576
575
  this.jdJumpToBottomTabBase(SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.CLASSIFY], shopInfo);
577
576
  }
578
577
  jdJumpToBottomTabFind(shopInfo = {}) {
579
578
  console.log('发现tab');
580
579
  }
581
580
  jdJumpToBottomTabBrandMember(shopInfo = {}) {
582
581
  const getInfo = Object.assign(
583
582
  {},
584
583
  {
585
584
  shopId: global.info.queryInfo.shopId,
586
585
  venderId: global.info.queryInfo.venderId,
587
586
  },
588
587
  shopInfo,
589
588
  );
590
589
  this.jdJumpToWeb(
591
590
  `${this.jumpWebUrl.memberHome}?${objectToUrlEncode(this.getShopIdOrVenderIdParams(getInfo))}`,
592
591
  getInfo,
593
592
  );
594
593
  }
595
594
  jdJumpToBottomTabBrandMemberInner(shopInfo = {}) {
596
595
  this.jdJumpToBottomTabBrandMember(shopInfo);
597
596
  }
598
597
 
599
598
  jdJumpToCouponSearchProductList(couponId, logEventInfo = {}) {
600
599
  this.jdJumpToWeb(
601
600
  `${this.jumpWebUrl.couponSearch}?couponbatch=${couponId}&sceneval=2`,
602
601
  logEventInfo,
603
602
  );
604
603
  }
605
604
 
606
605
  jdNavigateToNative(
607
606
  url: string,
608
607
  params: {
609
608
  logEventInfo?: object;
610
609
  } = {},
611
610
  successBack?: Function | undefined,
612
611
  failBack?: Function | undefined,
613
612
  ) {
614
613
  const { logEventInfo } = params;
615
614
  const getEparam = logEventInfo || params;
616
615
  console.log(`url:::::::${url}`);
617
616
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
618
617
  this.clickEventLog(getEparam)
619
618
  .then(() => {
620
619
  typeof successBack === 'function' ? successBack(url) : (window.location.href = url);
621
620
  })
622
621
  .catch(() => {
623
622
  typeof failBack === 'function' && failBack(url);
624
623
  });
625
624
  }
626
625
 
627
626
  jdNavigateToNativeOpenApp(
628
627
  params: {},
629
628
  url = 'openapp.jdmobile://virtual',
630
629
  successBack?: Function | null,
631
630
  failBack?: Function | null,
632
631
  ) {
633
632
  console.log('[降级H5] jdNavigateToNative web.base:', params);
634
633
  const getResParams: JumpEventReportInterFace.JdMiniJumpParams = Object.assign(
635
634
  {},
636
635
  {
637
636
  sourceValue: 'sourceValue_jshopModuleWeb',
638
637
  sourceType: 'sourceType_jshopModuleWeb',
639
638
  param: {},
640
639
  },
641
640
  params,
642
641
  );
643
642
  const { logEventInfo, ...otherParams } = getResParams;
644
643
  console.log('jd web 获取open协议参数 jdNavigateToNative params: ', getResParams);
645
644
  console.log('logEventInfo params: ', logEventInfo);
646
645
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
647
646
  this.clickEventLog(logEventInfo || getResParams)
648
647
  .then(() => {
649
648
  if (typeof successBack === 'function') {
650
649
  successBack(getResParams);
651
650
  } else {
652
651
  try {
653
652
  const paramsStr = JSON.stringify(otherParams);
654
653
  console.log('跳转web jd open协议', `${url}?params=${paramsStr}`);
655
654
  window.location.href = `${url}?params=${paramsStr}`;
656
655
  } catch (e) {
657
656
  console.log('跳转异常', e);
658
657
  }
659
658
  }
660
659
  })
661
660
  .catch(() => {
662
661
  typeof failBack === 'function' && failBack(getResParams);
663
662
  });
664
663
  }
665
664
 
666
665
  clickEventLog(opts: JumpEventReportInterFace.OptEventLogParams = {}, reportKey = 'click') {
667
666
  const { eventId, jsonParam, eventLevel = 3, ...otherParams } = opts;
668
667
  /TerminatorNew_/.test(`${eventId}`) && console.log(`当前h5的楼层模块eventId为====${eventId}`);
669
668
  if (eventId && jsonParam) {
670
669
  const { etModelInfo, logBaseInfo } = jsonParam;
671
670
  let getJsonParam = {};
672
671
  if (etModelInfo && logBaseInfo) {
673
672
  getJsonParam = logBaseInfo;
674
673
  } else {
675
674
  if (Array.isArray(jsonParam)) {
676
675
  getJsonParam = jsonParam;
677
676
  } else {
678
677
  getJsonParam = Object.assign(
679
678
  {},
680
679
  {
681
680
  shopid: global.info.queryInfo?.shopId,
682
681
  },
683
682
  jsonParam,
684
683
  );
685
684
  }
686
685
  }
687
686
  if (
688
687
  reportKey === 'exposure' &&
689
688
  /^TerminatorNew/.test(eventId) &&
690
689
  !Array.isArray(getJsonParam)
691
690
  ) {
692
691
  getJsonParam = [getJsonParam];
693
692
  }
694
693
  const webLogParams = {
695
694
  isExpo: reportKey === 'exposure',
696
695
  eid: eventId,
697
696
  elevel: eventLevel,
698
697
  jsonParam: JSON.stringify(getJsonParam),
699
698
  etModel: JSON.stringify(etModelInfo || {}),
700
699
  pageId: this.logPageId,
701
700
  pageParam: this.logPageParamStr,
702
701
  ...otherParams,
703
702
  };
704
703
  return /click|exposure/.test(reportKey)
705
704
  ? reportClick(webLogParams)
706
705
  : reportToCart(opts, webLogParams);
707
706
  } else {
708
707
  console.log('暂无埋点参数eventId和jsonParam');
709
708
  return Promise.resolve(false);
710
709
  }
711
710
  }
712
711
 
713
712
  exposureEventLog(opts) {
714
713
  return global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE
715
714
  ? this.clickEventLog(
716
715
  {
717
716
  ...opts,
718
717
  exposureState: true,
719
718
  },
720
719
  'exposure',
721
720
  )
722
721
  : Promise.resolve(false);
723
722
  }
723
+ import global from '../common';
724
724
  BUSINESS_TYPE,
725
725
  SHOP_MENU_ID_TYPE,
726
726
  SHOP_MENU_ID_NAME,
727
727
  SECTION_HOME_TAB_TYPE,
728
728
  SECTION_HOME_TAB_NAME_TYPE,
729
729
  objectToUrlEncode,
730
730
  parseQueryUrlString,
731
731
  filterUrlQueryData,
732
732
  isJdAndHarmonyDevice,
733
733
  showNormalToast,
734
734
  routerInfo: {
735
735
  params: {},
736
736
  },
737
737
  nativeEvent: null,
738
738
  jumpConfig: {
739
739
  venderId: null,
740
740
  shopId: null,
741
741
  sourceValue: '',
742
742
  sourceType: 'M-H5',
743
743
  activityType: 'shopx',
744
744
  moduleId: 'none',
745
745
  entrance: 'none',
746
746
  },
747
747
  logPageParamStr: '',
748
748
  public logPageId: string;
749
749
  public jumpConfig: JumpEventReportInterFace.JumpH5ReportConfig;
750
750
  getConfig(opt) {
751
751
  return Object.assign(this, {}, defaultConfig, opt);
752
752
  }
753
753
  updateInfo(routerInfo, logPname = LogPnameInfo.HOME, pageId = LogPageIdInfo.APP) {
754
754
  this.routerInfo = routerInfo;
755
755
  this.logPname = logPname;
756
756
  this.jumpConfig = Object.assign(
757
757
  {},
758
758
  this.jumpConfig,
759
759
  filterUrlQueryData(routerInfo?.params || {}),
760
760
  );
761
761
  this.logPageId = pageId;
762
762
  }
763
763
 
764
764
  reportInfoPv(
765
765
  pageId = LogPageIdInfo.APP,
766
766
  opt: {
767
767
  pageParam?: any;
768
768
  } = {},
769
769
  ) {
770
770
  const { pageParam, ...otherOpts } = opt;
771
771
  const pageParamStr = typeof pageParam === 'object' ? JSON.stringify(pageParam) : pageParam;
772
772
  this.logPageParamStr = pageParamStr ? pageParamStr : JSON.stringify(this.jumpConfig);
773
773
  return reportPV({
774
774
  pageId,
775
775
  pageParam: this.logPageParamStr,
776
776
  ...otherOpts,
777
777
  });
778
778
  }
779
779
 
780
780
  jdJumpToProduct(skuIds, logEventInfo) {
781
781
  skuIds = skuIds.toString().trim();
782
782
  const getSkuId = skuIds.indexOf(',') !== -1 ? skuIds.split(',')[0] : skuIds;
783
783
  const { jingxiSdx, ...otherLogInfo } = logEventInfo;
784
784
  if (jingxiSdx) {
785
785
  this.jdNavigateToNative(
786
786
  `${this.jumpWebUrl.detail}${getSkuId}.html?sdx=${jingxiSdx}`,
787
787
  otherLogInfo,
788
788
  );
789
789
  } else {
790
790
  this.jdNavigateToNative(`${this.jumpWebUrl.detail}${getSkuId}.html`, logEventInfo);
791
791
  }
792
792
  }
793
793
 
794
794
  jdJumpSkuInfoToProduct(skuInfo: any = {}, logEventInfo) {
795
795
  const getSkuId = skuInfo?.skuId;
796
796
  this.jdJumpToProduct(getSkuId, logEventInfo);
797
797
  }
798
798
 
799
799
  jdJumpToRankList(contentId: string | number, rankType = 10, logEventInfo) {
800
800
  const rankUrl = `${this.jumpWebUrl.rank}?contentId=${contentId}&sku=&rankType=${rankType}&fromName=dcpws&hideAd=1`;
801
801
  this.jdNavigateToNative(rankUrl, {
802
802
  contentId,
803
803
  ...logEventInfo,
804
804
  });
805
805
  }
806
806
 
807
807
  jdJumpToShopCategory(shopInfo) {
808
808
  this.jdNavigateToNative(
809
809
  `${this.jumpWebUrl.shopHome}?${objectToUrlEncode(
810
810
  this.getShopIdOrVenderIdParams(shopInfo),
811
811
  )}&tabActive=classify`,
812
812
  {
813
813
  ...shopInfo,
814
814
  },
815
815
  );
816
816
  }
817
817
 
818
818
  jdJumpToShopHome(shopInfo: JumpEventReportInterFace.ShopIdsInfo = {}) {
819
819
  const currentShopInfo = {
820
820
  shopId: global.info.queryInfo.shopId,
821
821
  venderId: global.info.queryInfo.venderId,
822
822
  };
823
823
  const restParams =
824
824
  (shopInfo?.shopId && shopInfo.shopId !== currentShopInfo.shopId) ||
825
825
  (shopInfo?.venderId && shopInfo.venderId !== currentShopInfo.venderId)
826
826
  ? {}
827
827
  : currentShopInfo;
828
828
  const getInfo = Object.assign({}, restParams, shopInfo);
829
829
  this.jdNavigateToNative(
830
830
  `${this.jumpWebUrl.mshop}?${objectToUrlEncode(this.getShopIdOrVenderIdParams(getInfo))}`,
831
831
  {
832
832
  ...getInfo,
833
833
  },
834
834
  );
835
835
  }
836
836
 
837
837
  jdJumpToShopLight(shopInfo) {
838
838
  this.jdNavigateToNative(
839
839
  `${this.jumpWebUrl.shopLight}?${objectToUrlEncode(this.getShopIdOrVenderIdParams(shopInfo))}`,
840
840
  {
841
841
  ...shopInfo,
842
842
  },
843
843
  );
844
844
  }
845
845
 
846
846
  jdJumpToShopMember(shopInfo) {
847
847
  const getShopInfo = this.getShopIdOrVenderIdParams(shopInfo);
848
848
  const memberHomeUrl =
849
849
  window?.shopGlobalSwitch?.openNewMemberEntry === 'true'
850
850
  ? this.jumpWebUrl.memberHome
851
851
  : this.jumpWebUrl.shopMember;
852
852
  this.jdJumpToWeb(
853
853
  `${memberHomeUrl}?${objectToUrlEncode(getShopInfo)}&venderType=1&channel=406`,
854
854
  shopInfo,
855
855
  );
856
856
  }
857
857
 
858
858
  jdJumpToShopMemberCard(shopInfo) {
859
859
  const { logEventInfo } = shopInfo;
860
860
  const getShopInfo = this.getShopIdOrVenderIdParams(shopInfo);
861
861
  this.jdJumpToWeb(
862
862
  `${this.jumpWebUrl.shopMember}?${objectToUrlEncode(getShopInfo)}`,
863
863
  logEventInfo,
864
864
  );
865
865
  }
866
866
 
867
867
  jdJumpToTotalPromotion(shopInfo) {
868
868
  const { url, logEventInfo } = shopInfo;
869
869
  if (this.isOpenJdAppUrl(url)) {
870
870
  const getOpenAppParams: any = this.jdOpenAppParams(url);
871
871
  if (getOpenAppParams) {
872
872
  if (getOpenAppParams?.activityId) {
873
873
  this.jdJumpToWeb(
874
874
  `${this.jumpWebUrl.totalPromotion}?activity_id=${getOpenAppParams?.activityId}`,
875
875
  shopInfo,
876
876
  );
877
877
  }
878
878
  }
879
879
  } else {
880
880
  this.jdJumpToWeb(url, logEventInfo);
881
881
  }
882
882
  }
883
883
 
884
884
  jdJumpToDongDongChat(paramInfo) {
885
885
  const getInfo = Object.assign(
886
886
  {},
887
887
  {
888
888
  venderId: global.info.queryInfo.venderId,
889
889
  },
890
890
  paramInfo,
891
891
  );
892
892
  const { venderId = '1', entry = 'm_shop', ...otherInfo } = getInfo;
893
893
  const dongdongUrl = `${this.jumpWebUrl.dongDongChat}?venderId=${venderId}&entry=${entry}&sceneval=2`;
894
894
  this.jdJumpToWeb(dongdongUrl, otherInfo);
895
895
  }
896
896
 
897
897
  jdJumpToShopDetail(shopInfo) {
898
898
  const getInfo = Object.assign(
899
899
  {},
900
900
  {
901
901
  shopId: global.info.queryInfo.shopId,
902
902
  venderId: global.info.queryInfo.venderId,
903
903
  },
904
904
  shopInfo,
905
905
  );
906
906
  const getShopInfo = this.getShopIdOrVenderIdParams(getInfo);
907
907
  this.jdJumpToWeb(`${this.jumpWebUrl.shopIntroduce}?${objectToUrlEncode(getShopInfo)}`, getInfo);
908
908
  }
909
909
 
910
910
  jdJumpToShopSearch(shopInfo) {
911
911
  const getInfo = Object.assign(
912
912
  {},
913
913
  {
914
914
  shopId: global.info.queryInfo.shopId,
915
915
  venderId: global.info.queryInfo.venderId,
916
916
  },
917
917
  shopInfo,
918
918
  );
919
919
  const {
920
920
  shopId,
921
921
  categoryId,
922
922
  keyword,
923
923
  pageId,
924
924
  description,
925
925
  shopName,
926
926
  keyWord,
927
927
  seller_actId,
928
928
  seller_actType,
929
929
  } = getInfo;
930
930
  const cateId = categoryId
931
931
  ? `&cateId=${typeof categoryId === 'string' ? categoryId?.trim() : categoryId}`
932
932
  : '';
933
933
  const addKeyWord = keyword || keyWord ? `&keyword=${keyword || keyWord}` : '';
934
934
  const addPageId = pageId ? `&pageId=${pageId}` : '';
935
935
  const searchDes = description ? `&description=${description}` : '';
936
936
  const shopNameDes = shopName ? `&shopName=${shopName}` : '';
937
937
  const searchType = categoryId ? 5 : keyword || keyWord ? 4 : 3;
938
938
  const activityId = seller_actId ? `&activityId=${seller_actId}` : '';
939
939
  const activityType = seller_actType ? `&activityType=${seller_actType}` : '';
940
940
  this.jdJumpToWeb(
941
941
  `${this.jumpWebUrl.shopSearch}?shopId=${shopId}&searchType=${searchType}${cateId}${addKeyWord}${addPageId}${searchDes}${shopNameDes}${activityId}${activityType}`,
942
942
  getInfo,
943
943
  );
944
944
  }
945
945
 
946
946
  jdJumpToWeb(
947
947
  url,
948
948
  logEventInfo,
949
949
  successBack?: Function | undefined,
950
950
  failBack?: Function | undefined,
951
951
  ) {
952
952
  console.log('web.base.ts - jdJumpToWeb');
953
953
  this.jdNavigateToNative(
954
954
  url,
955
955
  {
956
956
  ...logEventInfo,
957
957
  },
958
958
  successBack,
959
959
  failBack,
960
960
  );
961
961
  }
962
962
 
963
963
  jdJumpToWebInner(url, logEventInfo) {
964
964
  this.jdJumpToWeb(url, logEventInfo);
965
965
  }
966
966
 
967
967
  jdJumpToLive(liveInfo, logEventInfo = {}) {
968
968
  if (liveInfo?.liveId) {
969
969
  this.jdJumpToWeb(`${this.jumpWebUrl.mLive}/${liveInfo?.liveId}?origin=30`, logEventInfo);
970
970
  } else if (isJdAndHarmonyDevice) {
971
971
  const getShopLiveParams = this.jdOpenAppParams(liveInfo);
972
972
  console.log('getShopLiveParams=====', getShopLiveParams);
973
973
  if (typeof getShopLiveParams === 'object') {
974
974
  this.jdNavigateToNativeOpenApp({
975
975
  ...getShopLiveParams,
976
976
  logEventInfo,
977
977
  });
978
978
  }
979
979
  }
980
980
  }
981
981
 
982
982
  jdJumpToShopActivity(shopInfo) {
983
983
  const { configDataValue, logEventInfo, projectId } = shopInfo;
984
984
  if (projectId && configDataValue) {
985
985
  this.jdJumpToWeb(
986
986
  `${this.jumpWebUrl.shopSecondActivity}${configDataValue.data}.html`,
987
987
  logEventInfo,
988
988
  );
989
989
  }
990
990
  }
991
991
 
992
992
  jdJumpToActivityPlace(spUrl, logEventInfo) {
993
993
  this.jdNavigateToNative(spUrl, logEventInfo);
994
994
  }
995
995
 
996
996
  jdJumpConfigUrl(detail, logEventInfo = {}) {
997
997
  const { configDataType, configDataValue } = detail;
998
998
  console.log('jdJumpConfigUrl web.base configDataType:', configDataType, configDataValue);
999
999
  switch (configDataType) {
1000
1000
  case LinkConfigType.CONFIG_TYPE_SKU_LIST:
1001
1001
  if (logEventInfo?.jsonParam?.logBaseInfo?.mInfo) {
1002
1002
  logEventInfo.jsonParam.logBaseInfo.mInfo.skuid = configDataValue.skuIds;
1003
1003
  }
1004
1004
  if (
1005
1005
  isJdAndHarmonyDevice &&
1006
1006
  global.info?.nonSellableSkuids?.[configDataValue.nonSellableKey]
1007
1007
  ) {
1008
1008
  showNormalToast({ title: '商品暂不可购买,请查看店内其他商品' });
1009
1009
  return;
1010
1010
  }
1011
1011
  this.jdJumpToProduct(configDataValue.skuIds, logEventInfo);
1012
1012
  break;
1013
1013
  case LinkConfigType.CONFIG_TYPE_COUPON_LIST:
1014
1014
  this.jdJumpToWeb(
1015
1015
  `${this.jumpWebUrl.shopCoupon}?couponType=1&shopId=${global.info.queryInfo.shopId}&venderId=${global.info.queryInfo.venderId}`,
1016
1016
  {},
1017
1017
  );
1018
1018
  break;
1019
1019
  case LinkConfigType.CONFIG_TYPE_CATEGORY:
1020
1020
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1021
1021
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
1022
1022
  getShopSearchParams &&
1023
1023
  this.jdJumpToShopSearch(
1024
1024
  Object.assign({}, getShopSearchParams, {
1025
1025
  logEventInfo,
1026
1026
  }),
1027
1027
  );
1028
1028
  } else {
1029
1029
  this.jdJumpToShopSearch(
1030
1030
  configDataValue['cid']
1031
1031
  ? Object.assign(
1032
1032
  {},
1033
1033
  {
1034
1034
  shopId: global.info.queryInfo.shopId,
1035
1035
  categoryId: configDataValue.cid,
1036
1036
  ...configDataValue,
1037
1037
  logEventInfo,
1038
1038
  },
1039
1039
  )
1040
1040
  : {
1041
1041
  shopId: global.info.queryInfo.shopId,
1042
1042
  logEventInfo,
1043
1043
  },
1044
1044
  );
1045
1045
  }
1046
1046
  break;
1047
1047
  case LinkConfigType.CONFIG_TYPE_CATEGORY_PAGE:
1048
1048
  this.jdJumpToShopCategory({
1049
1049
  ...configDataValue,
1050
1050
  logEventInfo,
1051
1051
  });
1052
1052
  break;
1053
1053
  case LinkConfigType.CONFIG_TYPE_MEMBER:
1054
1054
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1055
1055
  const getShopMemberParams = this.jdOpenAppParams(configDataValue.clickUrl);
1056
1056
  getShopMemberParams &&
1057
1057
  this.jdJumpToShopMember(
1058
1058
  Object.assign({}, getShopMemberParams, {
1059
1059
  logEventInfo,
1060
1060
  }),
1061
1061
  );
1062
1062
  } else {
1063
1063
  this.jdJumpToShopMember({
1064
1064
  shopId: global.info.queryInfo.shopId,
1065
1065
  venderId: configDataValue.shopDetail,
1066
1066
  logEventInfo,
1067
1067
  });
1068
1068
  }
1069
1069
  break;
1070
1070
  case LinkConfigType.CONFIG_TYPE_SHOP_ACTIVITY:
1071
1071
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1072
1072
  const getShopActivityParams = this.jdOpenAppParams(configDataValue.clickUrl);
1073
1073
  if (getShopActivityParams && getShopActivityParams['des'] == 'jshopActivity') {
1074
1074
  this.jdJumpToShopActivity({
1075
1075
  projectId: configDataValue['projectId'],
1076
1076
  configDataValue,
1077
1077
  logEventInfo,
1078
1078
  });
1079
1079
  }
1080
1080
  } else if (configDataValue['projectId']) {
1081
1081
  this.jdJumpToShopActivity({
1082
1082
  projectId: configDataValue['projectId'],
1083
1083
  configDataValue,
1084
1084
  logEventInfo,
1085
1085
  });
1086
1086
  }
1087
1087
  break;
1088
1088
  case LinkConfigType.CONFIG_TYPE_CUSTOM_LINK:
1089
1089
  case LinkConfigType.CONFIG_TYPE_FINANCE_COUPON:
1090
1090
  const _url = configDataValue.linkUrl;
1091
1091
  const isProductM = /item\.m\.jd\.com/.test(_url);
1092
1092
  const isProductPC = /item\.jd\.com/.test(_url);
1093
1093
  if (
1094
1094
  _url.indexOf('to=') === -1 &&
1095
1095
  _url.indexOf(`${domain.mshop.replace(/https?:/, '')}/?shopId=`) !== -1
1096
1096
  ) {
1097
1097
  const _shopId = _url.match(/\d+/g)[0];
1098
1098
  this.jdJumpToShopHome({
1099
1099
  shopId: `${_shopId}`,
1100
1100
  logEventInfo,
1101
1101
  });
1102
1102
  } else if (this.isOpenJdAppUrl(_url)) {
1103
1103
  const getOpenAppParams: any = this.jdOpenAppParams(_url);
1104
1104
  if (getOpenAppParams) {
1105
1105
  if (getOpenAppParams.jumpTab == 'allProduct') {
1106
1106
  this.jdJumpToTabAllProduct(
1107
1107
  global.info.queryInfo.shopId || getOpenAppParams?.shopId,
1108
1108
  global.info.queryInfo.venderId || getOpenAppParams?.venderId,
1109
1109
  );
1110
1110
  } else if (
1111
1111
  getOpenAppParams.des == 'productList' &&
1112
1112
  getOpenAppParams.from == 'couponBatch'
1113
1113
  ) {
1114
1114
  this.jdJumpToCouponSearchProductList(getOpenAppParams?.couponId);
1115
1115
  } else if (getOpenAppParams.des == 'vapp') {
1116
1116
  this.jdJumpToWeb(
1117
1117
  `https://conecli.com/apps/mpshare/index.html?category=${
1118
1118
  getOpenAppParams.category
1119
1119
  }&des=${getOpenAppParams.des}&vapptype=${getOpenAppParams.vapptype}&appId=${
1120
1120
  getOpenAppParams.appId
1121
1121
  }&path=${getOpenAppParams.path}&param=${encodeURI(
1122
1122
  JSON.stringify(getOpenAppParams.param),
1123
1123
  )}`,
1124
1124
  logEventInfo,
1125
1125
  );
1126
1126
  } else {
1127
1127
  this.jdNavigateToNative(
1128
1128
  '',
1129
1129
  Object.assign({}, getOpenAppParams, {
1130
1130
  logEventInfo,
1131
1131
  }),
1132
1132
  );
1133
1133
  }
1134
1134
  }
1135
1135
  } else if (isProductM || isProductPC) {
1136
1136
  const skuid = _url.match(/\d+/g)[0];
1137
1137
  if (skuid) {
1138
1138
  this.jdJumpToProduct(skuid, logEventInfo);
1139
1139
  }
1140
1140
  } else {
1141
1141
  this.jdJumpToWeb(_url, logEventInfo);
1142
1142
  }
1143
1143
  break;
1144
1144
  case LinkConfigType.CONFIG_TYPE_JSHOP_DETAIL:
1145
1145
  this.jdJumpToShopDetail({
1146
1146
  venderId: global.info.queryInfo.venderId,
1147
1147
  shopId: global.info.queryInfo.shopId,
1148
1148
  logEventInfo,
1149
1149
  });
1150
1150
  break;
1151
1151
  case LinkConfigType.CONFIG_TYPE_SHOP_HOME:
1152
1152
  this.jdJumpToShopHome({
1153
1153
  ...configDataValue,
1154
1154
  logEventInfo,
1155
1155
  });
1156
1156
  break;
1157
1157
  case LinkConfigType.CONFIG_TYPE_ANCHOR_POINT:
1158
1158
  break;
1159
1159
  case LinkConfigType.CONFIG_TYPE_SHOPPING_GUIDE:
1160
1160
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1161
1161
  const getShoppingGuideParams = this.jdOpenAppParams(configDataValue.clickUrl);
1162
1162
  getShoppingGuideParams &&
1163
1163
  this.jdJumpToShopActivity(
1164
1164
  Object.assign({}, getShoppingGuideParams, {
1165
1165
  logEventInfo,
1166
1166
  }),
1167
1167
  );
1168
1168
  }
1169
1169
  break;
1170
1170
  case LinkConfigType.CONFIG_TYPE_MINI_PROGRAM: {
1171
1171
  const linkUrl = decodeURIComponent(configDataValue?.linkUrl || '');
1172
1172
  const search = linkUrl.match(/\?.+/);
1173
1173
  if (search) {
1174
1174
  const miniQueryData: JumpEventReportInterFace.LinkMiniParams =
1175
1175
  parseQueryUrlString(linkUrl);
1176
1176
  try {
1177
1177
  miniQueryData.param = JSON.parse(<string>miniQueryData?.param);
1178
1178
  } catch (e) {
1179
1179
  console.warn('解析小程序 param 错误:', miniQueryData.param);
1180
1180
  }
1181
1181
  this.jdJumpToMiniProgram(miniQueryData);
1182
1182
  } else {
1183
1183
  console.warn('小程序地址错误:', linkUrl);
1184
1184
  }
1185
1185
  break;
1186
1186
  }
1187
1187
  case LinkConfigType.CONFIG_TYPE_SHOP_SEARCH: {
1188
1188
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1189
1189
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
1190
1190
  console.log('web base 获取店铺结果落地页链接解析后的参数结果', getShopSearchParams);
1191
1191
  getShopSearchParams &&
1192
1192
  this.jdJumpToShopSearch(
1193
1193
  Object.assign({}, getShopSearchParams, {
1194
1194
  logEventInfo,
1195
1195
  }),
1196
1196
  );
1197
1197
  } else {
1198
1198
  this.jdJumpToWeb(configDataValue.clickUrl, logEventInfo);
1199
1199
  }
1200
1200
  break;
1201
1201
  }
1202
1202
  default:
1203
1203
  }
1204
1204
  }
1205
1205
 
1206
1206
  jdJumpToTabAllProduct(shopId, venderId, logEventInfo = {}) {
1207
1207
  console.log('web.base.ts - jdJumpToTabAllProduct');
1208
1208
  if (typeof shopId === 'undefined') shopId = global.info.queryInfo.shopId;
1209
1209
  if (typeof venderId === 'undefined') venderId = global.info.queryInfo.venderId;
1210
1210
  this.jdJumpToWeb(
1211
1211
  `${this.jumpWebUrl.shopHome}?${objectToUrlEncode({
1212
1212
  shopId,
1213
1213
  venderId,
1214
1214
  tabActive: 'home-product',
1215
1215
  })}`,
1216
1216
  logEventInfo,
1217
1217
  );
1218
1218
  }
1219
1219
 
1220
1220
  jdJumpToTabAllProductInner(shopId, venderId, logEventInfo = {}) {
1221
1221
  if (typeof shopId === 'undefined') shopId = global.info.queryInfo.shopId;
1222
1222
  if (typeof venderId === 'undefined') venderId = global.info.queryInfo.venderId;
1223
1223
  this.jdJumpToTabAllProduct(shopId, venderId, logEventInfo);
1224
1224
  }
1225
1225
 
1226
1226
  jdJumpToTopTabBase(type, shopInfo = {}) {
1227
1227
  const getInfo = Object.assign(
1228
1228
  {},
1229
1229
  {
1230
1230
  shopId: global.info.queryInfo.shopId,
1231
1231
  venderId: global.info.queryInfo.venderId,
1232
1232
  },
1233
1233
  shopInfo,
1234
1234
  );
1235
1235
  this.jdJumpToWeb(
1236
1236
  `${this.jumpWebUrl.shopHome}?${objectToUrlEncode(
1237
1237
  this.getShopIdOrVenderIdParams(getInfo),
1238
1238
  )}&tabActive=${type}`,
1239
1239
  getInfo,
1240
1240
  );
1241
1241
  }
1242
1242
 
1243
1243
  jdJumpToTabNew(shopInfo = {}) {
1244
1244
  console.log('上新tab');
1245
1245
  this.jdJumpToTopTabBase(
1246
1246
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_NEW_PRODUCT],
1247
1247
  shopInfo,
1248
1248
  );
1249
1249
  }
1250
1250
 
1251
1251
  jdJumpToTabNewInner(shopInfo = {}) {
1252
1252
  this.jdJumpToTabNew(shopInfo);
1253
1253
  }
1254
1254
 
1255
1255
  jdJumpToTabRank(shopInfo = {}) {
1256
1256
  console.log('榜单tab');
1257
1257
  this.jdJumpToTopTabBase(SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_RANK], shopInfo);
1258
1258
  }
1259
1259
  jdJumpToTabRankInner(shopInfo = {}) {
1260
1260
  this.jdJumpToTabRank(shopInfo);
1261
1261
  }
1262
1262
  jdJumpToTabBuyerShow(shopInfo = {}) {
1263
1263
  console.log('买家秀tab');
1264
1264
  this.jdJumpToTopTabBase(
1265
1265
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_BUYER_SHOW],
1266
1266
  shopInfo,
1267
1267
  );
1268
1268
  }
1269
1269
  jdJumpToTabBuyerShowInner(shopInfo = {}) {
1270
1270
  this.jdJumpToTabBuyerShow(shopInfo);
1271
1271
  }
1272
1272
  jdJumpToTabActivity(shopInfo = {}) {
1273
1273
  console.log('活动tab');
1274
1274
  this.jdJumpToTopTabBase(
1275
1275
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_ACTIVITY],
1276
1276
  shopInfo,
1277
1277
  );
1278
1278
  }
1279
1279
  jdJumpToTabActivityInner(shopInfo = {}) {
1280
1280
  this.jdJumpToTabActivity(shopInfo);
1281
1281
  }
1282
1282
  jdJumpToTabSecKill(shopInfo = {}) {
1283
1283
  console.log('秒杀tab');
1284
1284
  this.jdJumpToTopTabBase(
1285
1285
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_SECKILL],
1286
1286
  shopInfo,
1287
1287
  );
1288
1288
  }
1289
1289
  jdJumpToTabSecKillInner(shopInfo = {}) {
1290
1290
  this.jdJumpToTabSecKill(shopInfo);
1291
1291
  }
1292
1292
 
1293
1293
  jdJumpToBottomTabBase(type, shopInfo = {}) {
1294
1294
  this.jdJumpToTopTabBase(type, shopInfo);
1295
1295
  }
1296
1296
  jdJumpToBottomTabProduct(shopInfo = {}) {
1297
1297
  this.jdJumpToBottomTabBase(SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.PRODUCT], shopInfo);
1298
1298
  }
1299
1299
  jdJumpToBottomTabCategory(shopInfo = {}) {
1300
1300
  this.jdJumpToBottomTabBase(SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.CLASSIFY], shopInfo);
1301
1301
  }
1302
1302
  jdJumpToBottomTabFind(shopInfo = {}) {
1303
1303
  console.log('发现tab');
1304
1304
  }
1305
1305
  jdJumpToBottomTabBrandMember(shopInfo = {}) {
1306
1306
  const getInfo = Object.assign(
1307
1307
  {},
1308
1308
  {
1309
1309
  shopId: global.info.queryInfo.shopId,
1310
1310
  venderId: global.info.queryInfo.venderId,
1311
1311
  },
1312
1312
  shopInfo,
1313
1313
  );
1314
1314
  this.jdJumpToWeb(
1315
1315
  `${this.jumpWebUrl.memberHome}?${objectToUrlEncode(this.getShopIdOrVenderIdParams(getInfo))}`,
1316
1316
  getInfo,
1317
1317
  );
1318
1318
  }
1319
1319
  jdJumpToBottomTabBrandMemberInner(shopInfo = {}) {
1320
1320
  this.jdJumpToBottomTabBrandMember(shopInfo);
1321
1321
  }
1322
1322
 
1323
1323
  jdJumpToCouponSearchProductList(couponId, logEventInfo = {}) {
1324
1324
  this.jdJumpToWeb(
1325
1325
  `${this.jumpWebUrl.couponSearch}?couponbatch=${couponId}&sceneval=2`,
1326
1326
  logEventInfo,
1327
1327
  );
1328
1328
  }
1329
1329
 
1330
1330
  jdNavigateToNative(
1331
1331
  url: string,
1332
1332
  params: {
1333
1333
  logEventInfo?: object;
1334
1334
  } = {},
1335
1335
  successBack?: Function | undefined,
1336
1336
  failBack?: Function | undefined,
1337
1337
  ) {
1338
1338
  const { logEventInfo } = params;
1339
1339
  const getEparam = logEventInfo || params;
1340
1340
  console.log(`url:::::::${url}`);
1341
1341
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
1342
1342
  this.clickEventLog(getEparam)
1343
1343
  .then(() => {
1344
1344
  typeof successBack === 'function' ? successBack(url) : (window.location.href = url);
1345
1345
  })
1346
1346
  .catch(() => {
1347
1347
  typeof failBack === 'function' && failBack(url);
1348
1348
  });
1349
1349
  }
1350
1350
 
1351
1351
  jdNavigateToNativeOpenApp(
1352
1352
  params: {},
1353
1353
  url = 'openapp.jdmobile://virtual',
1354
1354
  successBack?: Function | null,
1355
1355
  failBack?: Function | null,
1356
1356
  ) {
1357
1357
  console.log('[降级H5] jdNavigateToNative web.base:', params);
1358
1358
  const getResParams: JumpEventReportInterFace.JdMiniJumpParams = Object.assign(
1359
1359
  {},
1360
1360
  {
1361
1361
  sourceValue: 'sourceValue_jshopModuleWeb',
1362
1362
  sourceType: 'sourceType_jshopModuleWeb',
1363
1363
  param: {},
1364
1364
  },
1365
1365
  params,
1366
1366
  );
1367
1367
  const { logEventInfo, ...otherParams } = getResParams;
1368
1368
  console.log('jd web 获取open协议参数 jdNavigateToNative params: ', getResParams);
1369
1369
  console.log('logEventInfo params: ', logEventInfo);
1370
1370
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
1371
1371
  this.clickEventLog(logEventInfo || getResParams)
1372
1372
  .then(() => {
1373
1373
  if (typeof successBack === 'function') {
1374
1374
  successBack(getResParams);
1375
1375
  } else {
1376
1376
  try {
1377
1377
  const paramsStr = JSON.stringify(otherParams);
1378
1378
  console.log('跳转web jd open协议', `${url}?params=${paramsStr}`);
1379
1379
  window.location.href = `${url}?params=${paramsStr}`;
1380
1380
  } catch (e) {
1381
1381
  console.log('跳转异常', e);
1382
1382
  }
1383
1383
  }
1384
1384
  })
1385
1385
  .catch(() => {
1386
1386
  typeof failBack === 'function' && failBack(getResParams);
1387
1387
  });
1388
1388
  }
1389
1389
 
1390
1390
  clickEventLog(opts: JumpEventReportInterFace.OptEventLogParams = {}, reportKey = 'click') {
1391
1391
  const { eventId, jsonParam, eventLevel = 3, ...otherParams } = opts;
1392
1392
  /TerminatorNew_/.test(`${eventId}`) && console.log(`当前h5的楼层模块eventId为====${eventId}`);
1393
1393
  if (eventId && jsonParam) {
1394
1394
  const { etModelInfo, logBaseInfo } = jsonParam;
1395
1395
  let getJsonParam = {};
1396
1396
  if (etModelInfo && logBaseInfo) {
1397
1397
  getJsonParam = logBaseInfo;
1398
1398
  } else {
1399
1399
  if (Array.isArray(jsonParam)) {
1400
1400
  getJsonParam = jsonParam;
1401
1401
  } else {
1402
1402
  getJsonParam = Object.assign(
1403
1403
  {},
1404
1404
  {
1405
1405
  shopid: global.info.queryInfo?.shopId,
1406
1406
  },
1407
1407
  jsonParam,
1408
1408
  );
1409
1409
  }
1410
1410
  }
1411
1411
  if (
1412
1412
  reportKey === 'exposure' &&
1413
1413
  /^TerminatorNew/.test(eventId) &&
1414
1414
  !Array.isArray(getJsonParam)
1415
1415
  ) {
1416
1416
  getJsonParam = [getJsonParam];
1417
1417
  }
1418
1418
  const webLogParams = {
1419
1419
  isExpo: reportKey === 'exposure',
1420
1420
  eid: eventId,
1421
1421
  elevel: eventLevel,
1422
1422
  jsonParam: JSON.stringify(getJsonParam),
1423
1423
  etModel: JSON.stringify(etModelInfo || {}),
1424
1424
  pageId: this.logPageId,
1425
1425
  pageParam: this.logPageParamStr,
1426
1426
  ...otherParams,
1427
1427
  };
1428
1428
  return /click|exposure/.test(reportKey)
1429
1429
  ? reportClick(webLogParams)
1430
1430
  : reportToCart(opts, webLogParams);
1431
1431
  } else {
1432
1432
  console.log('暂无埋点参数eventId和jsonParam');
1433
1433
  return Promise.resolve(false);
1434
1434
  }
1435
1435
  }
1436
1436
 
1437
1437
  exposureEventLog(opts) {
1438
1438
  return global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE
1439
1439
  ? this.clickEventLog(
1440
1440
  {
1441
1441
  ...opts,
1442
1442
  exposureState: true,
1443
1443
  },
1444
1444
  'exposure',
1445
1445
  )
1446
1446
  : Promise.resolve(false);
1447
1447
  }