@conecli/cone-render 0.10.1-shop3.21 → 0.10.1-shop3.22

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