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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import { JdJumpJdApp } from './jdJumpJdApp';
2
1
  routerInfo: {
3
2
  params: {},
4
3
  },
5
4
  nativeEvent: null,
6
5
  jumpConfig: {
7
6
  venderId: null,
8
7
  shopId: null,
9
8
  sourceValue: '',
10
9
  sourceType: 'App-H5',
11
10
  activityType: 'shopx',
12
11
  moduleId: 'none',
13
12
  entrance: 'none',
14
13
  },
15
14
  logPageParamStr: '',
16
15
  public logPageId: string;
17
16
  public jumpConfig: JumpEventReportInterFace.JumpH5ReportConfig;
18
17
  constructor(opt = {}) {
19
18
  super(opt);
20
19
  this.getConfig(opt);
21
20
  }
22
21
  getConfig(opt = {}) {
23
22
  return Object.assign(this, {}, defaultConfig, opt);
24
23
  }
25
24
  updateInfo(routerInfo, logPname = LogPnameInfo.HOME, pageId = LogPageIdInfo.APP) {
26
25
  this.logPageId = pageId;
27
26
  this.routerInfo = routerInfo;
28
27
  this.jumpConfig = Object.assign({}, this.jumpConfig, routerInfo.params);
29
28
  this.logPname = logPname;
30
29
  }
31
30
  reportInfoPv(
32
31
  pageId = LogPageIdInfo.APP,
33
32
  opt: {
34
33
  pageParam?: any;
35
34
  } = {},
36
35
  ) {
37
36
  const { pageParam } = opt;
38
37
  this.logPageParamStr = pageParam
39
38
  ? pageParam
40
39
  : this.creatParamToLogStr(this.jumpConfig)
41
40
  .replace(/moduleId/, 'JumpmoduleID')
42
41
  .replace(/entrance/, 'Jumpentrance');
43
42
  reportPV({
44
43
  pageId,
45
44
  pageParam: this.logPageParamStr,
46
45
  ...opt,
47
46
  });
48
47
  }
49
48
 
50
49
  jdJumpToDongDongChatGroup(groupId, source = '4') {
51
50
  this.jdNavigateToNative({
52
51
  category: 'jump',
53
52
  des: 'dongdong_group_chat',
54
53
  source: source,
55
54
  groupId: `${groupId}`,
56
55
  });
57
56
  }
58
57
 
59
58
  jdJumpToWeb(
60
59
  url,
61
60
  logEventInfo,
62
61
  successBack?: functionType | undefined,
63
62
  failBack?: functionType | undefined,
64
63
  ) {
65
64
  console.log('jd web', this.isOpenJdAppUrl(url), url);
66
65
  if (this.isOpenJdAppUrl(url)) {
67
66
  const getOpenAppParams = this.jdOpenAppParams(url);
68
67
  console.log('jd web 获取自定义openApp链接解析后的参数结果', getOpenAppParams);
69
68
  if (getOpenAppParams) {
70
69
  this.jdNavigateToNative(
71
70
  Object.assign({}, getOpenAppParams, {
72
71
  logEventInfo,
73
72
  }),
74
73
  );
75
74
  }
76
75
  } else {
77
76
  let _getLastUrl = url;
78
77
  if (/shop\.m\.jd\.com|pages\.jd\.com/.test(_getLastUrl)) {
79
78
  const getUrlSearchParamState = _getLastUrl.indexOf('?') !== -1;
80
79
  if (!/jwebprog=0/.test(_getLastUrl)) {
81
80
  _getLastUrl = `${_getLastUrl}${getUrlSearchParamState ? '&' : '?'}jwebprog=0`;
82
81
  }
83
82
  if (global.info.sysInfo?.isJdTabletDevice && !/device=tablet/.test(_getLastUrl)) {
84
83
  _getLastUrl = `${_getLastUrl}${getUrlSearchParamState ? '&' : '?'}device=tablet`;
85
84
  }
86
85
  }
87
86
  super.jdJumpToWeb(
88
87
  _getLastUrl,
89
88
  {
90
89
  ...logEventInfo,
91
90
  },
92
91
  successBack,
93
92
  failBack,
94
93
  );
95
94
  }
96
95
  }
97
96
 
98
97
  jdJumpToWebInner(url, logEventInfo) {
99
98
  this.jdJumpToWeb(url, logEventInfo);
100
99
  }
101
100
 
102
101
  jdJumpConfigUrl(detail, logEventInfo = {}) {
103
102
  const { configDataType, configDataValue } = detail;
104
103
  switch (configDataType) {
105
104
  case LinkConfigType.CONFIG_TYPE_CATEGORY_PAGE:
106
105
  this.jdJumpToShopCategory({
107
106
  ...configDataValue,
108
107
  logEventInfo,
109
108
  });
110
109
  break;
111
110
  case LinkConfigType.CONFIG_TYPE_SKU_LIST:
112
111
  if (logEventInfo?.jsonParam?.logBaseInfo?.mInfo) {
113
112
  logEventInfo.jsonParam.logBaseInfo.mInfo.skuid = configDataValue.skuIds;
114
113
  }
115
114
  this.jdJumpToProduct(configDataValue.skuIds, logEventInfo);
116
115
  break;
117
116
  case LinkConfigType.CONFIG_TYPE_COUPON_LIST:
118
117
  this.jdJumpToWeb(
119
118
  `${this.jumpWebUrl.shopCoupon}?couponType=1&shopId=${global.info.queryInfo.shopId}&venderId=${global.info.queryInfo.venderId}`,
120
119
  {},
121
120
  );
122
121
  break;
123
122
  case LinkConfigType.CONFIG_TYPE_CATEGORY:
124
123
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
125
124
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
126
125
  console.log('jd web 获取店铺分类链接解析后的参数结果', getShopSearchParams);
127
126
  getShopSearchParams &&
128
127
  this.jdJumpToShopSearch(
129
128
  Object.assign({}, getShopSearchParams, {
130
129
  logEventInfo,
131
130
  }),
132
131
  );
133
132
  } else {
134
133
  this.jdJumpToShopSearch(
135
134
  configDataValue['cid']
136
135
  ? Object.assign(
137
136
  {},
138
137
  {
139
138
  shopId: global.info.queryInfo.shopId,
140
139
  categoryId: configDataValue.cid,
141
140
  searchType: '5',
142
141
  logEventInfo,
143
142
  },
144
143
  )
145
144
  : {
146
145
  shopId: global.info.queryInfo.shopId,
147
146
  logEventInfo,
148
147
  },
149
148
  );
150
149
  }
151
150
  break;
152
151
  case LinkConfigType.CONFIG_TYPE_MEMBER:
153
152
  if (isAppHomeForMarketPage) {
154
153
  this.jdJumpToBottomTabBrandMember({
155
154
  logEventInfo,
156
155
  });
157
156
  } else {
158
157
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
159
158
  const getShopMemberParams = this.jdOpenAppParams(configDataValue.clickUrl);
160
159
  getShopMemberParams &&
161
160
  this.jdJumpToShopMember(
162
161
  Object.assign({}, getShopMemberParams, {
163
162
  logEventInfo,
164
163
  }),
165
164
  );
166
165
  } else {
167
166
  this.jdJumpToShopMember({
168
167
  shopId: global.info.queryInfo.shopId,
169
168
  venderId: configDataValue.shopDetail,
170
169
  logEventInfo,
171
170
  });
172
171
  }
173
172
  }
174
173
  break;
175
174
  case LinkConfigType.CONFIG_TYPE_SHOP_ACTIVITY:
176
175
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
177
176
  const getShopActivityParams = this.jdOpenAppParams(configDataValue.clickUrl);
178
177
  getShopActivityParams &&
179
178
  this.jdJumpToShopActivity(
180
179
  Object.assign({}, getShopActivityParams, {
181
180
  logEventInfo,
182
181
  }),
183
182
  );
184
183
  } else if (configDataValue['projectId']) {
185
184
  this.jdJumpToShopActivity({
186
185
  projectId: configDataValue['projectId'],
187
186
  configDataValue,
188
187
  logEventInfo,
189
188
  });
190
189
  }
191
190
  break;
192
191
  case LinkConfigType.CONFIG_TYPE_CUSTOM_LINK:
193
192
  case LinkConfigType.CONFIG_TYPE_FINANCE_COUPON: {
194
193
  const _url = configDataValue.linkUrl;
195
194
  if (
196
195
  _url.indexOf('to=') === -1 &&
197
196
  _url.indexOf(`${domain.mshop.replace(/https?:/, '')}/?shopId=`) !== -1
198
197
  ) {
199
198
  const _shopId = _url.match(/\d+/g)[0];
200
199
  this.jdJumpToShopHome({
201
200
  shopId: `${_shopId}`,
202
201
  logEventInfo,
203
202
  });
204
203
  } else if (this.isOpenJdAppUrl(_url)) {
205
204
  const getOpenAppParams = this.jdOpenAppParams(_url);
206
205
  console.log('jd web 获取自定义链接解析后的参数结果', getOpenAppParams);
207
206
  if (getOpenAppParams) {
208
207
  let _changeOpenAppParams = getOpenAppParams;
209
208
  if (isAppHomeForMarketPage) {
210
209
  const { operation, ...otherOpenAppParams } = getOpenAppParams;
211
210
  if (operation && operation === 'jumpTabInner') {
212
211
  _changeOpenAppParams = otherOpenAppParams;
213
212
  }
214
213
  }
215
214
  this.jdNavigateToNative(
216
215
  Object.assign({}, _changeOpenAppParams, {
217
216
  logEventInfo,
218
217
  }),
219
218
  );
220
219
  }
221
220
  } else {
222
221
  this.jdJumpToWeb(_url, logEventInfo);
223
222
  }
224
223
  break;
225
224
  }
226
225
  case LinkConfigType.CONFIG_TYPE_JSHOP_DETAIL:
227
226
  this.jdJumpToShopDetail({
228
227
  venderId: global.info.queryInfo.venderId,
229
228
  shopId: global.info.queryInfo.shopId,
230
229
  logEventInfo,
231
230
  });
232
231
  break;
233
232
  case LinkConfigType.CONFIG_TYPE_SHOP_HOME:
234
233
  this.jdJumpToShopHome({
235
234
  ...configDataValue,
236
235
  logEventInfo,
237
236
  });
238
237
  break;
239
238
  case LinkConfigType.CONFIG_TYPE_ANCHOR_POINT:
240
239
  break;
241
240
  case LinkConfigType.CONFIG_TYPE_SHOPPING_GUIDE:
242
241
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
243
242
  const getShoppingGuideParams = this.jdOpenAppParams(configDataValue.clickUrl);
244
243
  getShoppingGuideParams &&
245
244
  this.jdJumpToShopActivity(
246
245
  Object.assign({}, getShoppingGuideParams, {
247
246
  logEventInfo,
248
247
  }),
249
248
  );
250
249
  }
251
250
  break;
252
251
  case LinkConfigType.CONFIG_TYPE_MINI_PROGRAM: {
253
252
  const linkUrl = decodeURIComponent(configDataValue?.linkUrl || '');
254
253
  const search = linkUrl.match(/\?.+/);
255
254
  if (search) {
256
255
  const miniQueryData: JumpEventReportInterFace.LinkMiniParams =
257
256
  parseQueryUrlString(linkUrl);
258
257
  try {
259
258
  miniQueryData.param = JSON.parse(<string>miniQueryData?.param);
260
259
  } catch (e) {
261
260
  console.warn('解析小程序 param 错误:', miniQueryData.param);
262
261
  }
263
262
  this.jdJumpToMiniProgram(miniQueryData);
264
263
  } else {
265
264
  console.warn('小程序地址错误:', linkUrl);
266
265
  }
267
266
  break;
268
267
  }
269
268
  case LinkConfigType.CONFIG_TYPE_SHOP_SEARCH: {
270
269
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
271
270
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
272
271
  console.log('jd web 获取店铺结果落地页链接解析后的参数结果', getShopSearchParams);
273
272
  getShopSearchParams &&
274
273
  this.jdJumpToShopSearch(
275
274
  Object.assign({}, getShopSearchParams, {
276
275
  logEventInfo,
277
276
  }),
278
277
  );
279
278
  } else {
280
279
  this.jdJumpToWeb(configDataValue.clickUrl, logEventInfo);
281
280
  }
282
281
  break;
283
282
  }
284
283
  default:
285
284
  }
286
285
  }
287
286
 
288
287
  jdNavigateToNative(
289
288
  params: object,
290
289
  url = 'openapp.jdmobile://virtual',
291
290
  successBack?: functionType | null,
292
291
  failBack?: functionType | null,
293
292
  ) {
294
293
  console.log('[降级H5] jdNavigateToNative web.jd:', params);
295
294
  const getResParams: JumpEventReportInterFace.JdMiniJumpParams = Object.assign(
296
295
  {},
297
296
  {
298
297
  sourceValue: 'sourceValue_jshopModuleWeb',
299
298
  sourceType: 'sourceType_jshopModuleWeb',
300
299
  param: {},
301
300
  },
302
301
  params,
303
302
  );
304
303
  const { logEventInfo, ...otherParams } = getResParams;
305
304
  console.log('jd web 获取open协议参数 jdNavigateToNative params: ', getResParams);
306
305
  console.log('logEventInfo params: ', logEventInfo);
307
306
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
308
307
  this.clickEventLog(logEventInfo || getResParams)
309
308
  .then(() => {
310
309
  if (typeof successBack === 'function') {
311
310
  successBack(getResParams);
312
311
  } else {
313
312
  try {
314
313
  const paramsStr = JSON.stringify(otherParams);
315
314
  console.log('跳转web jd open协议', `${url}?params=${paramsStr}`);
316
315
  window.location.href = `${url}?params=${paramsStr}`;
317
316
  } catch (e) {
318
317
  console.log('跳转异常', e);
319
318
  }
320
319
  }
321
320
  })
322
321
  .catch(() => {
323
322
  typeof failBack === 'function' && failBack(getResParams);
324
323
  });
325
324
  }
326
325
 
327
326
  clickEventLog(opts: JumpEventReportInterFace.OptEventLogParams = {}, reportKey = 'click') {
328
327
  const { eventId, jsonParam, eventLevel = 3, ...otherParams } = opts;
329
328
  if (eventId && jsonParam) {
330
329
  const { etModelInfo, logBaseInfo } = jsonParam;
331
330
  let getJsonParam = {};
332
331
  if (etModelInfo && logBaseInfo) {
333
332
  getJsonParam = logBaseInfo;
334
333
  } else {
335
334
  if (Array.isArray(jsonParam)) {
336
335
  getJsonParam = jsonParam;
337
336
  } else {
338
337
  getJsonParam = Object.assign(
339
338
  {},
340
339
  {
341
340
  shopid: global.info.queryInfo?.shopId,
342
341
  },
343
342
  jsonParam,
344
343
  );
345
344
  }
346
345
  }
347
346
  if (
348
347
  reportKey === 'exposure' &&
349
348
  /^TerminatorNew/.test(eventId) &&
350
349
  !Array.isArray(getJsonParam)
351
350
  ) {
352
351
  getJsonParam = [getJsonParam];
353
352
  }
354
353
  const webLogParams = {
355
354
  isExpo: reportKey === 'exposure',
356
355
  eid: eventId,
357
356
  elevel: eventLevel,
358
357
  jsonParam: JSON.stringify(getJsonParam),
359
358
  etModel: JSON.stringify(etModelInfo || {}),
360
359
  pageId: this.logPageId,
361
360
  pageParam: this.logPageParamStr,
362
361
  ...otherParams,
363
362
  };
364
363
  return /click|exposure/.test(reportKey)
365
364
  ? reportClick(webLogParams)
366
365
  : reportToCart(opts, webLogParams);
367
366
  } else {
368
367
  console.log('暂无埋点参数eventId和eventParam');
369
368
  return Promise.resolve(false);
370
369
  }
371
370
  }
372
371
 
373
372
  exposureEventLog(opts) {
374
373
  return global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE
375
374
  ? this.clickEventLog(
376
375
  {
377
376
  ...opts,
378
377
  exposureState: true,
379
378
  },
380
379
  'exposure',
381
380
  )
382
381
  : Promise.resolve(false);
383
382
  }
383
+ import { JdJumpJdApp } from './jdJumpJdApp';
384
384
  isAppHomeForMarketPage,
385
385
  isJdAndHarmonyDevice,
386
386
  isNewHarmonyShop,
387
387
  parseQueryUrlString,
388
388
  routerInfo: {
389
389
  params: {},
390
390
  },
391
391
  nativeEvent: null,
392
392
  jumpConfig: {
393
393
  venderId: null,
394
394
  shopId: null,
395
395
  sourceValue: '',
396
396
  sourceType: 'App-H5',
397
397
  activityType: 'shopx',
398
398
  moduleId: 'none',
399
399
  entrance: 'none',
400
400
  },
401
401
  logPageParamStr: '',
402
402
  public logPageId: string;
403
403
  public jumpConfig: JumpEventReportInterFace.JumpH5ReportConfig;
404
404
  constructor(opt = {}) {
405
405
  super(opt);
406
406
  this.getConfig(opt);
407
407
  }
408
408
  getConfig(opt = {}) {
409
409
  return Object.assign(this, {}, defaultConfig, opt);
410
410
  }
411
411
  updateInfo(routerInfo, logPname = LogPnameInfo.HOME, pageId = LogPageIdInfo.APP) {
412
412
  this.logPageId = pageId;
413
413
  this.routerInfo = routerInfo;
414
414
  this.jumpConfig = Object.assign({}, this.jumpConfig, routerInfo.params);
415
415
  this.logPname = logPname;
416
416
  }
417
417
  reportInfoPv(
418
418
  pageId = LogPageIdInfo.APP,
419
419
  opt: {
420
420
  pageParam?: any;
421
421
  } = {},
422
422
  ) {
423
423
  const { pageParam } = opt;
424
424
  this.logPageParamStr = pageParam
425
425
  ? pageParam
426
426
  : this.creatParamToLogStr(this.jumpConfig)
427
427
  .replace(/moduleId/, 'JumpmoduleID')
428
428
  .replace(/entrance/, 'Jumpentrance');
429
429
  reportPV({
430
430
  pageId,
431
431
  pageParam: this.logPageParamStr,
432
432
  ...opt,
433
433
  });
434
434
  }
435
435
 
436
436
  jdJumpToDongDongChatGroup(groupId, source = '4') {
437
437
  this.jdNavigateToNative({
438
438
  category: 'jump',
439
439
  des: 'dongdong_group_chat',
440
440
  source: source,
441
441
  groupId: `${groupId}`,
442
442
  });
443
443
  }
444
444
 
445
445
  jdJumpToWeb(
446
446
  url,
447
447
  logEventInfo,
448
448
  successBack?: functionType | undefined,
449
449
  failBack?: functionType | undefined,
450
450
  ) {
451
451
  console.log('jd web', this.isOpenJdAppUrl(url), url);
452
452
  if (this.isOpenJdAppUrl(url)) {
453
453
  const getOpenAppParams = this.jdOpenAppParams(url);
454
454
  console.log('jd web 获取自定义openApp链接解析后的参数结果', getOpenAppParams);
455
455
  if (getOpenAppParams) {
456
456
  this.jdNavigateToNative(
457
457
  Object.assign({}, getOpenAppParams, {
458
458
  logEventInfo,
459
459
  }),
460
460
  );
461
461
  }
462
462
  } else {
463
463
  let _getLastUrl = url;
464
464
  if (/shop\.m\.jd\.com|pages\.jd\.com/.test(_getLastUrl)) {
465
465
  const getUrlSearchParamState = _getLastUrl.indexOf('?') !== -1;
466
466
  if (!/jwebprog=0/.test(_getLastUrl)) {
467
467
  _getLastUrl = `${_getLastUrl}${getUrlSearchParamState ? '&' : '?'}jwebprog=0`;
468
468
  }
469
469
  if (global.info.sysInfo?.isJdTabletDevice && !/device=tablet/.test(_getLastUrl)) {
470
470
  _getLastUrl = `${_getLastUrl}${getUrlSearchParamState ? '&' : '?'}device=tablet`;
471
471
  }
472
472
  }
473
473
  super.jdJumpToWeb(
474
474
  _getLastUrl,
475
475
  {
476
476
  ...logEventInfo,
477
477
  },
478
478
  successBack,
479
479
  failBack,
480
480
  );
481
481
  }
482
482
  }
483
483
 
484
484
  jdJumpToWebInner(url, logEventInfo) {
485
485
  this.jdJumpToWeb(url, logEventInfo);
486
486
  }
487
487
 
488
488
  jdJumpConfigUrl(detail, logEventInfo = {}) {
489
489
  const { configDataType, configDataValue } = detail;
490
490
  switch (configDataType) {
491
491
  case LinkConfigType.CONFIG_TYPE_CATEGORY_PAGE:
492
492
  this.jdJumpToShopCategory({
493
493
  ...configDataValue,
494
494
  logEventInfo,
495
495
  });
496
496
  break;
497
497
  case LinkConfigType.CONFIG_TYPE_SKU_LIST:
498
498
  if (logEventInfo?.jsonParam?.logBaseInfo?.mInfo) {
499
499
  logEventInfo.jsonParam.logBaseInfo.mInfo.skuid = configDataValue.skuIds;
500
500
  }
501
501
  this.jdJumpToProduct(configDataValue.skuIds, logEventInfo);
502
502
  break;
503
503
  case LinkConfigType.CONFIG_TYPE_COUPON_LIST:
504
504
  this.jdJumpToWeb(
505
505
  `${this.jumpWebUrl.shopCoupon}?couponType=1&shopId=${global.info.queryInfo.shopId}&venderId=${global.info.queryInfo.venderId}`,
506
506
  {},
507
507
  );
508
508
  break;
509
509
  case LinkConfigType.CONFIG_TYPE_CATEGORY:
510
510
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
511
511
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
512
512
  console.log('jd web 获取店铺分类链接解析后的参数结果', getShopSearchParams);
513
513
  getShopSearchParams &&
514
514
  this.jdJumpToShopSearch(
515
515
  Object.assign({}, getShopSearchParams, {
516
516
  logEventInfo,
517
517
  }),
518
518
  );
519
519
  } else {
520
520
  this.jdJumpToShopSearch(
521
521
  configDataValue['cid']
522
522
  ? Object.assign(
523
523
  {},
524
524
  {
525
525
  shopId: global.info.queryInfo.shopId,
526
526
  categoryId: configDataValue.cid,
527
527
  searchType: '5',
528
528
  logEventInfo,
529
529
  },
530
530
  )
531
531
  : {
532
532
  shopId: global.info.queryInfo.shopId,
533
533
  logEventInfo,
534
534
  },
535
535
  );
536
536
  }
537
537
  break;
538
538
  case LinkConfigType.CONFIG_TYPE_MEMBER:
539
539
  if (isAppHomeForMarketPage) {
540
540
  this.jdJumpToBottomTabBrandMember({
541
541
  logEventInfo,
542
542
  });
543
543
  } else {
544
544
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
545
545
  const getShopMemberParams = this.jdOpenAppParams(configDataValue.clickUrl);
546
546
  getShopMemberParams &&
547
547
  this.jdJumpToShopMember(
548
548
  Object.assign({}, getShopMemberParams, {
549
549
  logEventInfo,
550
550
  }),
551
551
  );
552
552
  } else {
553
553
  this.jdJumpToShopMember({
554
554
  shopId: global.info.queryInfo.shopId,
555
555
  venderId: configDataValue.shopDetail,
556
556
  logEventInfo,
557
557
  });
558
558
  }
559
559
  }
560
560
  break;
561
561
  case LinkConfigType.CONFIG_TYPE_SHOP_ACTIVITY:
562
562
  if (this.isNewHarmony()) {
563
563
  const url = `${domain.sale}/m/h5/${configDataValue.data}.html`;
564
564
  this.jdJumpToWeb(url, logEventInfo);
565
565
  } else {
566
566
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
567
567
  const getShopActivityParams = this.jdOpenAppParams(configDataValue.clickUrl);
568
568
  getShopActivityParams &&
569
569
  this.jdJumpToShopActivity(
570
570
  Object.assign({}, getShopActivityParams, {
571
571
  logEventInfo,
572
572
  }),
573
573
  );
574
574
  } else if (configDataValue['projectId']) {
575
575
  this.jdJumpToShopActivity({
576
576
  projectId: configDataValue['projectId'],
577
577
  configDataValue,
578
578
  logEventInfo,
579
579
  });
580
580
  }
581
581
  }
582
582
  break;
583
583
  case LinkConfigType.CONFIG_TYPE_CUSTOM_LINK:
584
584
  case LinkConfigType.CONFIG_TYPE_FINANCE_COUPON: {
585
585
  const _url = configDataValue.linkUrl;
586
586
  if (
587
587
  _url.indexOf('to=') === -1 &&
588
588
  _url.indexOf(`${domain.mshop.replace(/https?:/, '')}/?shopId=`) !== -1
589
589
  ) {
590
590
  const _shopId = _url.match(/\d+/g)[0];
591
591
  this.jdJumpToShopHome({
592
592
  shopId: `${_shopId}`,
593
593
  logEventInfo,
594
594
  });
595
595
  } else if (this.isOpenJdAppUrl(_url)) {
596
596
  const getOpenAppParams = this.jdOpenAppParams(_url);
597
597
  console.log('jd web 获取自定义链接解析后的参数结果', getOpenAppParams);
598
598
  if (getOpenAppParams) {
599
599
  let _changeOpenAppParams = getOpenAppParams;
600
600
  if (isAppHomeForMarketPage) {
601
601
  const { operation, ...otherOpenAppParams } = getOpenAppParams;
602
602
  if (operation && operation === 'jumpTabInner') {
603
603
  _changeOpenAppParams = otherOpenAppParams;
604
604
  }
605
605
  }
606
606
  this.jdNavigateToNative(
607
607
  Object.assign({}, _changeOpenAppParams, {
608
608
  logEventInfo,
609
609
  }),
610
610
  );
611
611
  }
612
612
  } else {
613
613
  this.jdJumpToWeb(_url, logEventInfo);
614
614
  }
615
615
  break;
616
616
  }
617
617
  case LinkConfigType.CONFIG_TYPE_JSHOP_DETAIL:
618
618
  this.jdJumpToShopDetail({
619
619
  venderId: global.info.queryInfo.venderId,
620
620
  shopId: global.info.queryInfo.shopId,
621
621
  logEventInfo,
622
622
  });
623
623
  break;
624
624
  case LinkConfigType.CONFIG_TYPE_SHOP_HOME:
625
625
  this.jdJumpToShopHome({
626
626
  ...configDataValue,
627
627
  logEventInfo,
628
628
  });
629
629
  break;
630
630
  case LinkConfigType.CONFIG_TYPE_ANCHOR_POINT:
631
631
  break;
632
632
  case LinkConfigType.CONFIG_TYPE_SHOPPING_GUIDE:
633
633
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
634
634
  const getShoppingGuideParams = this.jdOpenAppParams(configDataValue.clickUrl);
635
635
  getShoppingGuideParams &&
636
636
  this.jdJumpToShopActivity(
637
637
  Object.assign({}, getShoppingGuideParams, {
638
638
  logEventInfo,
639
639
  }),
640
640
  );
641
641
  }
642
642
  break;
643
643
  case LinkConfigType.CONFIG_TYPE_MINI_PROGRAM: {
644
644
  const linkUrl = decodeURIComponent(configDataValue?.linkUrl || '');
645
645
  const search = linkUrl.match(/\?.+/);
646
646
  if (search) {
647
647
  const miniQueryData: JumpEventReportInterFace.LinkMiniParams =
648
648
  parseQueryUrlString(linkUrl);
649
649
  try {
650
650
  miniQueryData.param = JSON.parse(<string>miniQueryData?.param);
651
651
  } catch (e) {
652
652
  console.warn('解析小程序 param 错误:', miniQueryData.param);
653
653
  }
654
654
  this.jdJumpToMiniProgram(miniQueryData);
655
655
  } else {
656
656
  console.warn('小程序地址错误:', linkUrl);
657
657
  }
658
658
  break;
659
659
  }
660
660
  case LinkConfigType.CONFIG_TYPE_SHOP_SEARCH: {
661
661
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
662
662
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
663
663
  console.log('jd web 获取店铺结果落地页链接解析后的参数结果', getShopSearchParams);
664
664
  getShopSearchParams &&
665
665
  this.jdJumpToShopSearch(
666
666
  Object.assign({}, getShopSearchParams, {
667
667
  logEventInfo,
668
668
  }),
669
669
  );
670
670
  } else {
671
671
  this.jdJumpToWeb(configDataValue.clickUrl, logEventInfo);
672
672
  }
673
673
  break;
674
674
  }
675
675
  default:
676
676
  }
677
677
  }
678
678
 
679
679
  isNewHarmony() {
680
680
  return isJdAndHarmonyDevice && isNewHarmonyShop;
681
681
  }
682
682
 
683
683
  jdNavigateToNative(
684
684
  params: object,
685
685
  url = 'openapp.jdmobile://virtual',
686
686
  successBack?: functionType | null,
687
687
  failBack?: functionType | null,
688
688
  ) {
689
689
  console.log('[降级H5] jdNavigateToNative web.jd:', params);
690
690
  const getResParams: JumpEventReportInterFace.JdMiniJumpParams = Object.assign(
691
691
  {},
692
692
  {
693
693
  sourceValue: 'sourceValue_jshopModuleWeb',
694
694
  sourceType: 'sourceType_jshopModuleWeb',
695
695
  param: {},
696
696
  },
697
697
  params,
698
698
  );
699
699
  const { logEventInfo, ...otherParams } = getResParams;
700
700
  console.log('jd web 获取open协议参数 jdNavigateToNative params: ', getResParams);
701
701
  console.log('logEventInfo params: ', logEventInfo);
702
702
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
703
703
  this.clickEventLog(logEventInfo || getResParams)
704
704
  .then(() => {
705
705
  if (typeof successBack === 'function') {
706
706
  successBack(getResParams);
707
707
  } else {
708
708
  if (this.isNewHarmony() && params.operation === 'jumpTabInner') {
709
709
  if (params.jumpTab) {
710
710
  JumpTabBarInCurrentShop({ position: 'top', item: params.jumpTab });
711
711
  } else if (params.jumpBottomTab) {
712
712
  JumpTabBarInCurrentShop({ position: 'bottom', item: params.jumpBottomTab });
713
713
  } else {
714
714
  console.log('[降级H5] 跳转异常 params:', params);
715
715
  }
716
716
  } else if (
717
717
  this.isNewHarmony() &&
718
718
  (params.operation === 'jumpBottomTabMember' || params.des === 'jshopMember')
719
719
  ) {
720
720
  JumpTabBarInCurrentShop({ position: 'bottom', item: 'brandMember' });
721
721
  } else {
722
722
  try {
723
723
  const paramsStr = JSON.stringify(otherParams);
724
724
  console.log('跳转web jd open协议', `${url}?params=${paramsStr}`);
725
725
  window.location.href = `${url}?params=${paramsStr}`;
726
726
  } catch (e) {
727
727
  console.log('跳转异常', e);
728
728
  }
729
729
  }
730
730
  }
731
731
  })
732
732
  .catch(() => {
733
733
  typeof failBack === 'function' && failBack(getResParams);
734
734
  });
735
735
  }
736
736
 
737
737
  clickEventLog(opts: JumpEventReportInterFace.OptEventLogParams = {}, reportKey = 'click') {
738
738
  const { eventId, jsonParam, eventLevel = 3, ...otherParams } = opts;
739
739
  if (eventId && jsonParam) {
740
740
  const { etModelInfo, logBaseInfo } = jsonParam;
741
741
  let getJsonParam = {};
742
742
  if (etModelInfo && logBaseInfo) {
743
743
  getJsonParam = logBaseInfo;
744
744
  } else {
745
745
  if (Array.isArray(jsonParam)) {
746
746
  getJsonParam = jsonParam;
747
747
  } else {
748
748
  getJsonParam = Object.assign(
749
749
  {},
750
750
  {
751
751
  shopid: global.info.queryInfo?.shopId,
752
752
  },
753
753
  jsonParam,
754
754
  );
755
755
  }
756
756
  }
757
757
  if (
758
758
  reportKey === 'exposure' &&
759
759
  /^TerminatorNew/.test(eventId) &&
760
760
  !Array.isArray(getJsonParam)
761
761
  ) {
762
762
  getJsonParam = [getJsonParam];
763
763
  }
764
764
  const webLogParams = {
765
765
  isExpo: reportKey === 'exposure',
766
766
  eid: eventId,
767
767
  elevel: eventLevel,
768
768
  jsonParam: JSON.stringify(getJsonParam),
769
769
  etModel: JSON.stringify(etModelInfo || {}),
770
770
  pageId: this.logPageId,
771
771
  pageParam: this.logPageParamStr,
772
772
  ...otherParams,
773
773
  };
774
774
  return /click|exposure/.test(reportKey)
775
775
  ? reportClick(webLogParams)
776
776
  : reportToCart(opts, webLogParams);
777
777
  } else {
778
778
  console.log('暂无埋点参数eventId和eventParam');
779
779
  return Promise.resolve(false);
780
780
  }
781
781
  }
782
782
 
783
783
  exposureEventLog(opts) {
784
784
  return global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE
785
785
  ? this.clickEventLog(
786
786
  {
787
787
  ...opts,
788
788
  exposureState: true,
789
789
  },
790
790
  'exposure',
791
791
  )
792
792
  : Promise.resolve(false);
793
793
  }