@conecli/cone-render 0.10.1-shop3.15 → 0.10.1-shop3.16

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