@conecli/cone-render 0.10.1-shop3.83 → 0.10.1-shop3.85

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