@conecli/cone-render 0.8.20-shop.118 → 0.8.20-shop.119

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