@conecli/cone-render 0.10.1-shop3.76 → 0.10.1-shop3.79

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