@conecli/cone-render 0.10.1-shop3.73 → 0.10.1-shop3.74

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
  /TerminatorNew_/.test(`${eventId}`) && console.log(`当前h5的楼层模块eventId为====${eventId}`);
678
677
  if ((eventId || spmAllCode || spmCodeForCD) && jsonParam) {
679
678
  const { etModelInfo, logBaseInfo } = jsonParam;
680
679
  let getJsonParam = {};
681
680
  if (etModelInfo && logBaseInfo) {
682
681
  getJsonParam = logBaseInfo;
683
682
  } else {
684
683
  if (Array.isArray(jsonParam)) {
685
684
  getJsonParam = jsonParam;
686
685
  } else {
687
686
  getJsonParam = Object.assign(
688
687
  {},
689
688
  {
690
689
  shopid: global.info.queryInfo?.shopId,
691
690
  },
692
691
  jsonParam,
693
692
  );
694
693
  }
695
694
  }
696
695
  if (
697
696
  reportKey === 'exposure' &&
698
697
  /^TerminatorNew/.test(eventId) &&
699
698
  !Array.isArray(getJsonParam)
700
699
  ) {
701
700
  getJsonParam = [getJsonParam];
702
701
  }
703
702
  const webLogParams = {
704
703
  isExpo: reportKey === 'exposure',
705
704
  eid: eventId,
706
705
  elevel: eventLevel,
707
706
  jsonParam: JSON.stringify(getJsonParam),
708
707
  etModel: JSON.stringify(etModelInfo || {}),
709
708
  pageId: this.logPageId,
710
709
  pageParam: this.logPageParamStr,
711
710
  spmAllCode,
712
711
  spmCodeForCD,
713
712
  ...otherParams,
714
713
  };
715
714
  return /click|exposure/.test(reportKey)
716
715
  ? reportClick(webLogParams)
717
716
  : reportToCart(opts, webLogParams);
718
717
  } else {
719
718
  console.log('暂无埋点参数eventId和jsonParam');
720
719
  return Promise.resolve(false);
721
720
  }
722
721
  }
723
722
 
724
723
  exposureEventLog(opts) {
725
724
  return global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE
726
725
  ? this.clickEventLog(
727
726
  {
728
727
  ...opts,
729
728
  exposureState: true,
730
729
  },
731
730
  'exposure',
732
731
  )
733
732
  : Promise.resolve(false);
734
733
  }
734
+ import global from '../common';
735
735
  BUSINESS_TYPE,
736
736
  SHOP_MENU_ID_TYPE,
737
737
  SHOP_MENU_ID_NAME,
738
738
  SECTION_HOME_TAB_TYPE,
739
739
  SECTION_HOME_TAB_NAME_TYPE,
740
740
  objectToUrlEncode,
741
741
  parseQueryUrlString,
742
742
  filterUrlQueryData,
743
743
  isJdAndHarmonyDevice,
744
744
  showNormalToast,
745
745
  routerInfo: {
746
746
  params: {},
747
747
  },
748
748
  nativeEvent: null,
749
749
  jumpConfig: {
750
750
  venderId: null,
751
751
  shopId: null,
752
752
  sourceValue: '',
753
753
  sourceType: 'M-H5',
754
754
  activityType: 'shopx',
755
755
  moduleId: 'none',
756
756
  entrance: 'none',
757
757
  },
758
758
  logPageParamStr: '',
759
759
  public logPageId: string;
760
760
  public jumpConfig: JumpEventReportInterFace.JumpH5ReportConfig;
761
761
  getConfig(opt) {
762
762
  return Object.assign(this, {}, defaultConfig, opt);
763
763
  }
764
764
  updateInfo(routerInfo, logPname = LogPnameInfo.HOME, pageId = LogPageIdInfo.APP) {
765
765
  this.routerInfo = routerInfo;
766
766
  this.logPname = logPname;
767
767
  this.jumpConfig = Object.assign(
768
768
  {},
769
769
  this.jumpConfig,
770
770
  filterUrlQueryData(routerInfo?.params || {}),
771
771
  );
772
772
  this.logPageId = pageId;
773
773
  }
774
774
 
775
775
  reportInfoPv(
776
776
  pageId = LogPageIdInfo.APP,
777
777
  opt: {
778
778
  pageParam?: any;
779
779
  } = {},
780
780
  ) {
781
781
  const { pageParam, ...otherOpts } = opt;
782
782
  const pageParamStr = typeof pageParam === 'object' ? JSON.stringify(pageParam) : pageParam;
783
783
  this.logPageParamStr = pageParamStr ? pageParamStr : JSON.stringify(this.jumpConfig);
784
784
  return reportPV({
785
785
  pageId,
786
786
  pageParam: this.logPageParamStr,
787
787
  ...otherOpts,
788
788
  });
789
789
  }
790
790
 
791
791
  jdJumpToProduct(skuIds, logEventInfo) {
792
792
  skuIds = skuIds.toString().trim();
793
793
  const getSkuId = skuIds.indexOf(',') !== -1 ? skuIds.split(',')[0] : skuIds;
794
794
  const { jingxiSdx, ...otherLogInfo } = logEventInfo;
795
795
  if (jingxiSdx) {
796
796
  this.jdNavigateToNative(
797
797
  `${this.jumpWebUrl.detail}${getSkuId}.html?sdx=${jingxiSdx}`,
798
798
  otherLogInfo,
799
799
  );
800
800
  } else {
801
801
  this.jdNavigateToNative(`${this.jumpWebUrl.detail}${getSkuId}.html`, logEventInfo);
802
802
  }
803
803
  }
804
804
 
805
805
  jdJumpSkuInfoToProduct(skuInfo: any = {}, logEventInfo) {
806
806
  const getSkuId = skuInfo?.skuId;
807
807
  this.jdJumpToProduct(getSkuId, logEventInfo);
808
808
  }
809
809
 
810
810
  jdJumpToCartPage(logEventInfo) {
811
811
  const url = `${this.jumpWebUrl.cart}?fromnav=1`;
812
812
  this.jdNavigateToNative(url, {
813
813
  ...logEventInfo,
814
814
  });
815
815
  }
816
816
 
817
817
  jdJumpToRankList(contentId: string | number, rankType = 10, logEventInfo) {
818
818
  const rankUrl = `${this.jumpWebUrl.rank}?contentId=${contentId}&sku=&rankType=${rankType}&fromName=dcpws&hideAd=1`;
819
819
  this.jdNavigateToNative(rankUrl, {
820
820
  contentId,
821
821
  ...logEventInfo,
822
822
  });
823
823
  }
824
824
 
825
825
  jdJumpToShopCategory(shopInfo) {
826
826
  this.jdNavigateToNative(
827
827
  `${this.jumpWebUrl.shopHome}?${objectToUrlEncode(
828
828
  this.getShopIdOrVenderIdParams(shopInfo),
829
829
  )}&tabActive=classify`,
830
830
  {
831
831
  ...shopInfo,
832
832
  },
833
833
  );
834
834
  }
835
835
 
836
836
  jdJumpToShopHome(shopInfo: JumpEventReportInterFace.ShopIdsInfo = {}) {
837
837
  const currentShopInfo = {
838
838
  shopId: global.info.queryInfo.shopId,
839
839
  venderId: global.info.queryInfo.venderId,
840
840
  };
841
841
  const restParams =
842
842
  (shopInfo?.shopId && shopInfo.shopId !== currentShopInfo.shopId) ||
843
843
  (shopInfo?.venderId && shopInfo.venderId !== currentShopInfo.venderId)
844
844
  ? {}
845
845
  : currentShopInfo;
846
846
  const getInfo = Object.assign({}, restParams, shopInfo);
847
847
  this.jdNavigateToNative(
848
848
  `${this.jumpWebUrl.mshop}?${objectToUrlEncode(this.getShopIdOrVenderIdParams(getInfo))}`,
849
849
  {
850
850
  ...getInfo,
851
851
  },
852
852
  );
853
853
  }
854
854
 
855
855
  jdJumpToShopLight(shopInfo) {
856
856
  this.jdNavigateToNative(
857
857
  `${this.jumpWebUrl.shopLight}?${objectToUrlEncode(this.getShopIdOrVenderIdParams(shopInfo))}`,
858
858
  {
859
859
  ...shopInfo,
860
860
  },
861
861
  );
862
862
  }
863
863
 
864
864
  jdJumpToShopMember(shopInfo) {
865
865
  const getShopInfo = this.getShopIdOrVenderIdParams(shopInfo);
866
866
  const memberHomeUrl =
867
867
  window?.shopGlobalSwitch?.openNewMemberEntry === 'true'
868
868
  ? this.jumpWebUrl.memberHome
869
869
  : this.jumpWebUrl.shopMember;
870
870
  this.jdJumpToWeb(
871
871
  `${memberHomeUrl}?${objectToUrlEncode(getShopInfo)}&venderType=1&channel=406`,
872
872
  shopInfo,
873
873
  );
874
874
  }
875
875
 
876
876
  jdJumpToShopMemberCard(shopInfo) {
877
877
  const { logEventInfo } = shopInfo;
878
878
  const getShopInfo = this.getShopIdOrVenderIdParams(shopInfo);
879
879
  this.jdJumpToWeb(
880
880
  `${this.jumpWebUrl.shopMember}?${objectToUrlEncode(getShopInfo)}`,
881
881
  logEventInfo,
882
882
  );
883
883
  }
884
884
 
885
885
  jdJumpToTotalPromotion(shopInfo) {
886
886
  const { url, logEventInfo } = shopInfo;
887
887
  if (this.isOpenJdAppUrl(url)) {
888
888
  const getOpenAppParams: any = this.jdOpenAppParams(url);
889
889
  if (getOpenAppParams) {
890
890
  if (getOpenAppParams?.activityId) {
891
891
  this.jdJumpToWeb(
892
892
  `${this.jumpWebUrl.totalPromotion}?activity_id=${getOpenAppParams?.activityId}`,
893
893
  shopInfo,
894
894
  );
895
895
  }
896
896
  }
897
897
  } else {
898
898
  this.jdJumpToWeb(url, logEventInfo);
899
899
  }
900
900
  }
901
901
 
902
902
  jdJumpToDongDongChat(paramInfo) {
903
903
  const getInfo = Object.assign(
904
904
  {},
905
905
  {
906
906
  venderId: global.info.queryInfo.venderId,
907
907
  },
908
908
  paramInfo,
909
909
  );
910
910
  const { venderId = '1', entry = 'm_shop', ...otherInfo } = getInfo;
911
911
  const dongdongUrl = `${this.jumpWebUrl.dongDongChat}?venderId=${venderId}&entry=${entry}&sceneval=2`;
912
912
  this.jdJumpToWeb(dongdongUrl, otherInfo);
913
913
  }
914
914
 
915
915
  jdJumpToShopDetail(shopInfo) {
916
916
  const getInfo = Object.assign(
917
917
  {},
918
918
  {
919
919
  shopId: global.info.queryInfo.shopId,
920
920
  venderId: global.info.queryInfo.venderId,
921
921
  },
922
922
  shopInfo,
923
923
  );
924
924
  const getShopInfo = this.getShopIdOrVenderIdParams(getInfo);
925
925
  this.jdJumpToWeb(`${this.jumpWebUrl.shopIntroduce}?${objectToUrlEncode(getShopInfo)}`, getInfo);
926
926
  }
927
927
 
928
928
  jdJumpToShopSearch(shopInfo) {
929
929
  const getInfo = Object.assign(
930
930
  {},
931
931
  {
932
932
  shopId: global.info.queryInfo.shopId,
933
933
  venderId: global.info.queryInfo.venderId,
934
934
  },
935
935
  shopInfo,
936
936
  );
937
937
  const {
938
938
  shopId,
939
939
  categoryId,
940
940
  keyword,
941
941
  pageId,
942
942
  description,
943
943
  shopName,
944
944
  keyWord,
945
945
  seller_actId,
946
946
  seller_actType,
947
947
  } = getInfo;
948
948
  const cateId = categoryId
949
949
  ? `&cateId=${typeof categoryId === 'string' ? categoryId?.trim() : categoryId}`
950
950
  : '';
951
951
  const addKeyWord = keyword || keyWord ? `&keyword=${keyword || keyWord}` : '';
952
952
  const addPageId = pageId ? `&pageId=${pageId}` : '';
953
953
  const searchDes = description ? `&description=${description}` : '';
954
954
  const shopNameDes = shopName ? `&shopName=${shopName}` : '';
955
955
  const searchType = categoryId ? 5 : keyword || keyWord ? 4 : 3;
956
956
  const activityId = seller_actId ? `&activityId=${seller_actId}` : '';
957
957
  const activityType = seller_actType ? `&activityType=${seller_actType}` : '';
958
958
  this.jdJumpToWeb(
959
959
  `${this.jumpWebUrl.shopSearch}?shopId=${shopId}&searchType=${searchType}${cateId}${addKeyWord}${addPageId}${searchDes}${shopNameDes}${activityId}${activityType}`,
960
960
  getInfo,
961
961
  );
962
962
  }
963
963
 
964
964
  jdJumpToWeb(
965
965
  url,
966
966
  logEventInfo,
967
967
  successBack?: Function | undefined,
968
968
  failBack?: Function | undefined,
969
969
  ) {
970
970
  console.log('web.base.ts - jdJumpToWeb');
971
971
  this.jdNavigateToNative(
972
972
  url,
973
973
  {
974
974
  ...logEventInfo,
975
975
  },
976
976
  successBack,
977
977
  failBack,
978
978
  );
979
979
  }
980
980
 
981
981
  jdJumpToWebInner(url, logEventInfo) {
982
982
  this.jdJumpToWeb(url, logEventInfo);
983
983
  }
984
984
 
985
985
  jdJumpToLive(liveInfo, logEventInfo = {}) {
986
986
  if (liveInfo?.liveId) {
987
987
  this.jdJumpToWeb(`${this.jumpWebUrl.mLive}/${liveInfo?.liveId}?origin=30`, logEventInfo);
988
988
  } else if (isJdAndHarmonyDevice) {
989
989
  const getShopLiveParams = this.jdOpenAppParams(liveInfo);
990
990
  console.log('getShopLiveParams=====', getShopLiveParams);
991
991
  if (typeof getShopLiveParams === 'object') {
992
992
  this.jdNavigateToNativeOpenApp({
993
993
  ...getShopLiveParams,
994
994
  logEventInfo,
995
995
  });
996
996
  }
997
997
  }
998
998
  }
999
999
 
1000
1000
  jdJumpToShopActivity(shopInfo) {
1001
1001
  const { configDataValue, logEventInfo, projectId } = shopInfo;
1002
1002
  if (projectId && configDataValue) {
1003
1003
  this.jdJumpToWeb(
1004
1004
  `${this.jumpWebUrl.shopSecondActivity}${configDataValue.data}.html`,
1005
1005
  logEventInfo,
1006
1006
  );
1007
1007
  }
1008
1008
  }
1009
1009
 
1010
1010
  jdJumpToActivityPlace(spUrl, logEventInfo) {
1011
1011
  this.jdNavigateToNative(spUrl, logEventInfo);
1012
1012
  }
1013
1013
 
1014
1014
  jdJumpConfigUrl(detail, logEventInfo = {}) {
1015
1015
  const { configDataType, configDataValue } = detail;
1016
1016
  console.log('jdJumpConfigUrl web.base configDataType:', configDataType, configDataValue);
1017
1017
  switch (configDataType) {
1018
1018
  case LinkConfigType.CONFIG_TYPE_SKU_LIST:
1019
1019
  if (logEventInfo?.jsonParam?.logBaseInfo?.mInfo) {
1020
1020
  logEventInfo.jsonParam.logBaseInfo.mInfo.skuid = configDataValue.skuIds;
1021
1021
  }
1022
1022
  if (
1023
1023
  isJdAndHarmonyDevice &&
1024
1024
  global.info?.nonSellableSkuids?.[configDataValue.nonSellableKey]
1025
1025
  ) {
1026
1026
  showNormalToast({ title: '商品暂不可购买,请查看店内其他商品' });
1027
1027
  return;
1028
1028
  }
1029
1029
  this.jdJumpToProduct(configDataValue.skuIds, logEventInfo);
1030
1030
  break;
1031
1031
  case LinkConfigType.CONFIG_TYPE_COUPON_LIST:
1032
1032
  this.jdJumpToWeb(
1033
1033
  `${this.jumpWebUrl.shopCoupon}?couponType=1&shopId=${global.info.queryInfo.shopId}&venderId=${global.info.queryInfo.venderId}`,
1034
1034
  {},
1035
1035
  );
1036
1036
  break;
1037
1037
  case LinkConfigType.CONFIG_TYPE_CATEGORY:
1038
1038
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1039
1039
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
1040
1040
  getShopSearchParams &&
1041
1041
  this.jdJumpToShopSearch(
1042
1042
  Object.assign({}, getShopSearchParams, {
1043
1043
  logEventInfo,
1044
1044
  }),
1045
1045
  );
1046
1046
  } else {
1047
1047
  this.jdJumpToShopSearch(
1048
1048
  configDataValue['cid']
1049
1049
  ? Object.assign(
1050
1050
  {},
1051
1051
  {
1052
1052
  shopId: global.info.queryInfo.shopId,
1053
1053
  categoryId: configDataValue.cid,
1054
1054
  ...configDataValue,
1055
1055
  logEventInfo,
1056
1056
  },
1057
1057
  )
1058
1058
  : {
1059
1059
  shopId: global.info.queryInfo.shopId,
1060
1060
  logEventInfo,
1061
1061
  },
1062
1062
  );
1063
1063
  }
1064
1064
  break;
1065
1065
  case LinkConfigType.CONFIG_TYPE_CATEGORY_PAGE:
1066
1066
  this.jdJumpToShopCategory({
1067
1067
  ...configDataValue,
1068
1068
  logEventInfo,
1069
1069
  });
1070
1070
  break;
1071
1071
  case LinkConfigType.CONFIG_TYPE_MEMBER:
1072
1072
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1073
1073
  const getShopMemberParams = this.jdOpenAppParams(configDataValue.clickUrl);
1074
1074
  getShopMemberParams &&
1075
1075
  this.jdJumpToShopMember(
1076
1076
  Object.assign({}, getShopMemberParams, {
1077
1077
  logEventInfo,
1078
1078
  }),
1079
1079
  );
1080
1080
  } else {
1081
1081
  this.jdJumpToShopMember({
1082
1082
  shopId: global.info.queryInfo.shopId,
1083
1083
  venderId: configDataValue.shopDetail,
1084
1084
  logEventInfo,
1085
1085
  });
1086
1086
  }
1087
1087
  break;
1088
1088
  case LinkConfigType.CONFIG_TYPE_SHOP_ACTIVITY:
1089
1089
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1090
1090
  const getShopActivityParams = this.jdOpenAppParams(configDataValue.clickUrl);
1091
1091
  if (getShopActivityParams && getShopActivityParams['des'] == 'jshopActivity') {
1092
1092
  this.jdJumpToShopActivity({
1093
1093
  projectId: configDataValue['projectId'],
1094
1094
  configDataValue,
1095
1095
  logEventInfo,
1096
1096
  });
1097
1097
  }
1098
1098
  } else if (configDataValue['projectId']) {
1099
1099
  this.jdJumpToShopActivity({
1100
1100
  projectId: configDataValue['projectId'],
1101
1101
  configDataValue,
1102
1102
  logEventInfo,
1103
1103
  });
1104
1104
  }
1105
1105
  break;
1106
1106
  case LinkConfigType.CONFIG_TYPE_CUSTOM_LINK:
1107
1107
  case LinkConfigType.CONFIG_TYPE_FINANCE_COUPON:
1108
1108
  const _url = configDataValue.linkUrl;
1109
1109
  const isProductM = /item\.m\.jd\.com/.test(_url);
1110
1110
  const isProductPC = /item\.jd\.com/.test(_url);
1111
1111
  if (
1112
1112
  _url.indexOf('to=') === -1 &&
1113
1113
  _url.indexOf(`${domain.mshop.replace(/https?:/, '')}/?shopId=`) !== -1
1114
1114
  ) {
1115
1115
  const _shopId = _url.match(/\d+/g)[0];
1116
1116
  this.jdJumpToShopHome({
1117
1117
  shopId: `${_shopId}`,
1118
1118
  logEventInfo,
1119
1119
  });
1120
1120
  } else if (this.isOpenJdAppUrl(_url)) {
1121
1121
  const getOpenAppParams: any = this.jdOpenAppParams(_url);
1122
1122
  if (getOpenAppParams) {
1123
1123
  if (getOpenAppParams.jumpTab == 'allProduct') {
1124
1124
  this.jdJumpToTabAllProduct(
1125
1125
  global.info.queryInfo.shopId || getOpenAppParams?.shopId,
1126
1126
  global.info.queryInfo.venderId || getOpenAppParams?.venderId,
1127
1127
  );
1128
1128
  } else if (
1129
1129
  getOpenAppParams.des == 'productList' &&
1130
1130
  getOpenAppParams.from == 'couponBatch'
1131
1131
  ) {
1132
1132
  this.jdJumpToCouponSearchProductList(getOpenAppParams?.couponId);
1133
1133
  } else if (getOpenAppParams.des == 'vapp') {
1134
1134
  this.jdJumpToWeb(
1135
1135
  `https://conecli.com/apps/mpshare/index.html?category=${
1136
1136
  getOpenAppParams.category
1137
1137
  }&des=${getOpenAppParams.des}&vapptype=${getOpenAppParams.vapptype}&appId=${
1138
1138
  getOpenAppParams.appId
1139
1139
  }&path=${getOpenAppParams.path}&param=${encodeURI(
1140
1140
  JSON.stringify(getOpenAppParams.param),
1141
1141
  )}`,
1142
1142
  logEventInfo,
1143
1143
  );
1144
1144
  } else {
1145
1145
  this.jdNavigateToNative(
1146
1146
  '',
1147
1147
  Object.assign({}, getOpenAppParams, {
1148
1148
  logEventInfo,
1149
1149
  }),
1150
1150
  );
1151
1151
  }
1152
1152
  }
1153
1153
  } else if (isProductM || isProductPC) {
1154
1154
  const skuid = _url.match(/\d+/g)[0];
1155
1155
  if (skuid) {
1156
1156
  this.jdJumpToProduct(skuid, logEventInfo);
1157
1157
  }
1158
1158
  } else {
1159
1159
  this.jdJumpToWeb(_url, logEventInfo);
1160
1160
  }
1161
1161
  break;
1162
1162
  case LinkConfigType.CONFIG_TYPE_JSHOP_DETAIL:
1163
1163
  this.jdJumpToShopDetail({
1164
1164
  venderId: global.info.queryInfo.venderId,
1165
1165
  shopId: global.info.queryInfo.shopId,
1166
1166
  logEventInfo,
1167
1167
  });
1168
1168
  break;
1169
1169
  case LinkConfigType.CONFIG_TYPE_SHOP_HOME:
1170
1170
  this.jdJumpToShopHome({
1171
1171
  ...configDataValue,
1172
1172
  logEventInfo,
1173
1173
  });
1174
1174
  break;
1175
1175
  case LinkConfigType.CONFIG_TYPE_ANCHOR_POINT:
1176
1176
  break;
1177
1177
  case LinkConfigType.CONFIG_TYPE_SHOPPING_GUIDE:
1178
1178
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1179
1179
  const getShoppingGuideParams = this.jdOpenAppParams(configDataValue.clickUrl);
1180
1180
  getShoppingGuideParams &&
1181
1181
  this.jdJumpToShopActivity(
1182
1182
  Object.assign({}, getShoppingGuideParams, {
1183
1183
  logEventInfo,
1184
1184
  }),
1185
1185
  );
1186
1186
  }
1187
1187
  break;
1188
1188
  case LinkConfigType.CONFIG_TYPE_MINI_PROGRAM: {
1189
1189
  const linkUrl = decodeURIComponent(configDataValue?.linkUrl || '');
1190
1190
  const search = linkUrl.match(/\?.+/);
1191
1191
  if (search) {
1192
1192
  const miniQueryData: JumpEventReportInterFace.LinkMiniParams =
1193
1193
  parseQueryUrlString(linkUrl);
1194
1194
  try {
1195
1195
  miniQueryData.param = JSON.parse(<string>miniQueryData?.param);
1196
1196
  } catch (e) {
1197
1197
  console.warn('解析小程序 param 错误:', miniQueryData.param);
1198
1198
  }
1199
1199
  this.jdJumpToMiniProgram(miniQueryData);
1200
1200
  } else {
1201
1201
  console.warn('小程序地址错误:', linkUrl);
1202
1202
  }
1203
1203
  break;
1204
1204
  }
1205
1205
  case LinkConfigType.CONFIG_TYPE_SHOP_SEARCH: {
1206
1206
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
1207
1207
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
1208
1208
  console.log('web base 获取店铺结果落地页链接解析后的参数结果', getShopSearchParams);
1209
1209
  getShopSearchParams &&
1210
1210
  this.jdJumpToShopSearch(
1211
1211
  Object.assign({}, getShopSearchParams, {
1212
1212
  logEventInfo,
1213
1213
  }),
1214
1214
  );
1215
1215
  } else {
1216
1216
  this.jdJumpToWeb(configDataValue.clickUrl, logEventInfo);
1217
1217
  }
1218
1218
  break;
1219
1219
  }
1220
1220
  default:
1221
1221
  }
1222
1222
  }
1223
1223
 
1224
1224
  jdJumpToTabAllProduct(shopId, venderId, logEventInfo = {}) {
1225
1225
  console.log('web.base.ts - jdJumpToTabAllProduct');
1226
1226
  if (typeof shopId === 'undefined') shopId = global.info.queryInfo.shopId;
1227
1227
  if (typeof venderId === 'undefined') venderId = global.info.queryInfo.venderId;
1228
1228
  this.jdJumpToWeb(
1229
1229
  `${this.jumpWebUrl.shopHome}?${objectToUrlEncode({
1230
1230
  shopId,
1231
1231
  venderId,
1232
1232
  tabActive: 'home-product',
1233
1233
  })}`,
1234
1234
  logEventInfo,
1235
1235
  );
1236
1236
  }
1237
1237
 
1238
1238
  jdJumpToTabAllProductInner(shopId, venderId, logEventInfo = {}) {
1239
1239
  if (typeof shopId === 'undefined') shopId = global.info.queryInfo.shopId;
1240
1240
  if (typeof venderId === 'undefined') venderId = global.info.queryInfo.venderId;
1241
1241
  this.jdJumpToTabAllProduct(shopId, venderId, logEventInfo);
1242
1242
  }
1243
1243
 
1244
1244
  jdJumpToTopTabBase(type, shopInfo = {}) {
1245
1245
  const getInfo = Object.assign(
1246
1246
  {},
1247
1247
  {
1248
1248
  shopId: global.info.queryInfo.shopId,
1249
1249
  venderId: global.info.queryInfo.venderId,
1250
1250
  },
1251
1251
  shopInfo,
1252
1252
  );
1253
1253
  this.jdJumpToWeb(
1254
1254
  `${this.jumpWebUrl.shopHome}?${objectToUrlEncode(
1255
1255
  this.getShopIdOrVenderIdParams(getInfo),
1256
1256
  )}&tabActive=${type}`,
1257
1257
  getInfo,
1258
1258
  );
1259
1259
  }
1260
1260
 
1261
1261
  jdJumpToTabNew(shopInfo = {}) {
1262
1262
  console.log('上新tab');
1263
1263
  this.jdJumpToTopTabBase(
1264
1264
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_NEW_PRODUCT],
1265
1265
  shopInfo,
1266
1266
  );
1267
1267
  }
1268
1268
 
1269
1269
  jdJumpToTabNewInner(shopInfo = {}) {
1270
1270
  this.jdJumpToTabNew(shopInfo);
1271
1271
  }
1272
1272
 
1273
1273
  jdJumpToTabRank(shopInfo = {}) {
1274
1274
  console.log('榜单tab');
1275
1275
  this.jdJumpToTopTabBase(SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_RANK], shopInfo);
1276
1276
  }
1277
1277
  jdJumpToTabRankInner(shopInfo = {}) {
1278
1278
  this.jdJumpToTabRank(shopInfo);
1279
1279
  }
1280
1280
  jdJumpToTabBuyerShow(shopInfo = {}) {
1281
1281
  console.log('买家秀tab');
1282
1282
  this.jdJumpToTopTabBase(
1283
1283
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_BUYER_SHOW],
1284
1284
  shopInfo,
1285
1285
  );
1286
1286
  }
1287
1287
  jdJumpToTabBuyerShowInner(shopInfo = {}) {
1288
1288
  this.jdJumpToTabBuyerShow(shopInfo);
1289
1289
  }
1290
1290
  jdJumpToTabActivity(shopInfo = {}) {
1291
1291
  console.log('活动tab');
1292
1292
  this.jdJumpToTopTabBase(
1293
1293
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_ACTIVITY],
1294
1294
  shopInfo,
1295
1295
  );
1296
1296
  }
1297
1297
  jdJumpToTabActivityInner(shopInfo = {}) {
1298
1298
  this.jdJumpToTabActivity(shopInfo);
1299
1299
  }
1300
1300
  jdJumpToTabSecKill(shopInfo = {}) {
1301
1301
  console.log('秒杀tab');
1302
1302
  this.jdJumpToTopTabBase(
1303
1303
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_SECKILL],
1304
1304
  shopInfo,
1305
1305
  );
1306
1306
  }
1307
1307
  jdJumpToTabSecKillInner(shopInfo = {}) {
1308
1308
  this.jdJumpToTabSecKill(shopInfo);
1309
1309
  }
1310
1310
 
1311
1311
  jdJumpToBottomTabBase(type, shopInfo = {}) {
1312
1312
  this.jdJumpToTopTabBase(type, shopInfo);
1313
1313
  }
1314
1314
  jdJumpToBottomTabProduct(shopInfo = {}) {
1315
1315
  this.jdJumpToBottomTabBase(SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.PRODUCT], shopInfo);
1316
1316
  }
1317
1317
  jdJumpToBottomTabCategory(shopInfo = {}) {
1318
1318
  this.jdJumpToBottomTabBase(SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.CLASSIFY], shopInfo);
1319
1319
  }
1320
1320
  jdJumpToBottomTabFind(shopInfo = {}) {
1321
1321
  console.log('发现tab');
1322
1322
  }
1323
1323
  jdJumpToBottomTabBrandMember(shopInfo = {}) {
1324
1324
  const getInfo = Object.assign(
1325
1325
  {},
1326
1326
  {
1327
1327
  shopId: global.info.queryInfo.shopId,
1328
1328
  venderId: global.info.queryInfo.venderId,
1329
1329
  },
1330
1330
  shopInfo,
1331
1331
  );
1332
1332
  this.jdJumpToWeb(
1333
1333
  `${this.jumpWebUrl.memberHome}?${objectToUrlEncode(this.getShopIdOrVenderIdParams(getInfo))}`,
1334
1334
  getInfo,
1335
1335
  );
1336
1336
  }
1337
1337
  jdJumpToBottomTabBrandMemberInner(shopInfo = {}) {
1338
1338
  this.jdJumpToBottomTabBrandMember(shopInfo);
1339
1339
  }
1340
1340
 
1341
1341
  jdJumpToCouponSearchProductList(couponId, logEventInfo = {}) {
1342
1342
  this.jdJumpToWeb(
1343
1343
  `${this.jumpWebUrl.couponSearch}?couponbatch=${couponId}&sceneval=2`,
1344
1344
  logEventInfo,
1345
1345
  );
1346
1346
  }
1347
1347
 
1348
1348
  jdNavigateToNative(
1349
1349
  url: string,
1350
1350
  params: {
1351
1351
  logEventInfo?: object;
1352
1352
  } = {},
1353
1353
  successBack?: Function | undefined,
1354
1354
  failBack?: Function | undefined,
1355
1355
  ) {
1356
1356
  const { logEventInfo } = params;
1357
1357
  const getEparam = logEventInfo || params;
1358
1358
  console.log(`url:::::::${url}`);
1359
1359
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
1360
1360
  this.clickEventLog(getEparam)
1361
1361
  .then(() => {
1362
1362
  typeof successBack === 'function' ? successBack(url) : (window.location.href = url);
1363
1363
  })
1364
1364
  .catch(() => {
1365
1365
  typeof failBack === 'function' && failBack(url);
1366
1366
  });
1367
1367
  }
1368
1368
 
1369
1369
  jdNavigateToNativeOpenApp(
1370
1370
  params: {},
1371
1371
  url = 'openapp.jdmobile://virtual',
1372
1372
  successBack?: Function | null,
1373
1373
  failBack?: Function | null,
1374
1374
  ) {
1375
1375
  console.log('[降级H5] jdNavigateToNative web.base:', params);
1376
1376
  const getResParams: JumpEventReportInterFace.JdMiniJumpParams = Object.assign(
1377
1377
  {},
1378
1378
  {
1379
1379
  sourceValue: 'sourceValue_jshopModuleWeb',
1380
1380
  sourceType: 'sourceType_jshopModuleWeb',
1381
1381
  param: {},
1382
1382
  },
1383
1383
  params,
1384
1384
  );
1385
1385
  const { logEventInfo, ...otherParams } = getResParams;
1386
1386
  console.log('jd web 获取open协议参数 jdNavigateToNative params: ', getResParams);
1387
1387
  console.log('logEventInfo params: ', logEventInfo);
1388
1388
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
1389
1389
  this.clickEventLog(logEventInfo || getResParams)
1390
1390
  .then(() => {
1391
1391
  if (typeof successBack === 'function') {
1392
1392
  successBack(getResParams);
1393
1393
  } else {
1394
1394
  try {
1395
1395
  const paramsStr = JSON.stringify(otherParams);
1396
1396
  console.log('跳转web jd open协议', `${url}?params=${paramsStr}`);
1397
1397
  window.location.href = `${url}?params=${paramsStr}`;
1398
1398
  } catch (e) {
1399
1399
  console.log('跳转异常', e);
1400
1400
  }
1401
1401
  }
1402
1402
  })
1403
1403
  .catch(() => {
1404
1404
  typeof failBack === 'function' && failBack(getResParams);
1405
1405
  });
1406
1406
  }
1407
1407
 
1408
1408
  clickEventLog(opts: JumpEventReportInterFace.OptEventLogParams = {}, reportKey = 'click') {
1409
1409
  const { eventId, spmAllCode, spmCodeForCD, jsonParam, eventLevel = 3, ...otherParams } = opts;
1410
1410
  if ((eventId || spmAllCode || spmCodeForCD) && jsonParam) {
1411
1411
  const { etModelInfo, logBaseInfo } = jsonParam;
1412
1412
  let getJsonParam = {};
1413
1413
  if (etModelInfo && logBaseInfo) {
1414
1414
  getJsonParam = logBaseInfo;
1415
1415
  } else {
1416
1416
  if (Array.isArray(jsonParam)) {
1417
1417
  getJsonParam = jsonParam;
1418
1418
  } else {
1419
1419
  getJsonParam = Object.assign(
1420
1420
  {},
1421
1421
  {
1422
1422
  shopid: global.info.queryInfo?.shopId,
1423
1423
  },
1424
1424
  jsonParam,
1425
1425
  );
1426
1426
  }
1427
1427
  }
1428
1428
  if (
1429
1429
  reportKey === 'exposure' &&
1430
1430
  /^TerminatorNew/.test(eventId) &&
1431
1431
  !Array.isArray(getJsonParam)
1432
1432
  ) {
1433
1433
  getJsonParam = [getJsonParam];
1434
1434
  }
1435
1435
  const webLogParams = {
1436
1436
  isExpo: reportKey === 'exposure',
1437
1437
  eid: eventId,
1438
1438
  elevel: eventLevel,
1439
1439
  jsonParam: JSON.stringify(getJsonParam),
1440
1440
  etModel: JSON.stringify(etModelInfo || {}),
1441
1441
  pageId: this.logPageId,
1442
1442
  pageParam: this.logPageParamStr,
1443
1443
  spmAllCode,
1444
1444
  spmCodeForCD,
1445
1445
  ...otherParams,
1446
1446
  };
1447
1447
  return /click|exposure/.test(reportKey)
1448
1448
  ? reportClick(webLogParams)
1449
1449
  : reportToCart(opts, webLogParams);
1450
1450
  } else {
1451
1451
  console.log('暂无埋点参数eventId和jsonParam');
1452
1452
  return Promise.resolve(false);
1453
1453
  }
1454
1454
  }
1455
1455
 
1456
1456
  exposureEventLog(opts) {
1457
1457
  return global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE
1458
1458
  ? this.clickEventLog(
1459
1459
  {
1460
1460
  ...opts,
1461
1461
  exposureState: true,
1462
1462
  },
1463
1463
  'exposure',
1464
1464
  )
1465
1465
  : Promise.resolve(false);
1466
1466
  }