@conecli/cone-render 0.10.1-shop3.52 → 0.10.1-shop3.53

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