@conecli/cone-render 0.9.1-isv2.0 → 0.9.1-isv2.1

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.
Files changed (102) hide show
  1. package/dist/api/index.ts +1 -1
  2. package/dist/common/const.ts +1 -1
  3. package/dist/common/environmentType.ts +1 -0
  4. package/dist/common/index.h5.ts +1 -1
  5. package/dist/common/index.jd.ts +1 -1
  6. package/dist/common/index.ts +1 -1
  7. package/dist/common/index.weapp.ts +1 -1
  8. package/dist/common/jdplayerSdk.ts +1 -0
  9. package/dist/common/jssdk.ts +1 -0
  10. package/dist/common/pageType.ts +1 -0
  11. package/dist/common/sgmCustomCode.ts +1 -0
  12. package/dist/common/token/index.h5.ts +1 -1
  13. package/dist/common/token/token.jd.ts +1 -1
  14. package/dist/common/token/token.ts +1 -1
  15. package/dist/common/wxappApi.jd.ts +1 -0
  16. package/dist/components/ErrorBoundary.tsx +1 -1
  17. package/dist/components/base/CommonFloorHead/index.tsx +1 -1
  18. package/dist/components/base/CountDown/index.tsx +1 -1
  19. package/dist/components/base/CustomScrollView/index.jd.tsx +1 -0
  20. package/dist/components/base/CustomScrollView/index.module.scss +7 -0
  21. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  22. package/dist/components/base/CustomVideo/index.tsx +1 -1
  23. package/dist/components/base/Dialog/index.module.scss +5 -0
  24. package/dist/components/base/Dialog/index.tsx +1 -1
  25. package/dist/components/base/Exposure/index.h5.tsx +1 -1
  26. package/dist/components/base/ExposureSmart/index.h5.tsx +1 -1
  27. package/dist/components/base/ExposureSmart/index.tsx +1 -1
  28. package/dist/components/base/ExposureSmart/reporter.tsx +1 -1
  29. package/dist/components/base/InOrOutViewObserver/index.tsx +1 -1
  30. package/dist/components/base/InViewRender/index.tsx +1 -1
  31. package/dist/components/base/ItemViewExposureSmart/index.tsx +1 -1
  32. package/dist/components/base/LazyLayoutLoad/index.tsx +1 -1
  33. package/dist/components/base/LazyLoadImage/const.ts +1 -1
  34. package/dist/components/base/LazyLoadImage/index.h5.module.scss +20 -20
  35. package/dist/components/base/LazyLoadImage/index.h5.tsx +1 -1
  36. package/dist/components/base/MobileCommonHeader/index.module.scss +17 -0
  37. package/dist/components/base/MobileCommonHeader/index.tsx +1 -0
  38. package/dist/components/base/NetworkDataError/const.ts +1 -1
  39. package/dist/components/base/NetworkDataError/index.module.scss +4 -0
  40. package/dist/components/base/NetworkDataError/index.tsx +1 -1
  41. package/dist/components/base/Price/Double/index.tsx +1 -1
  42. package/dist/components/base/Price/index.tsx +1 -1
  43. package/dist/components/decorate/DecorateFloorModule/index.module.scss +21 -2
  44. package/dist/components/decorate/DecorateFloorModule/index.tsx +1 -1
  45. package/dist/components/decorate/EmptyFloorModule/index.tsx +1 -1
  46. package/dist/components/floorItem.jd.tsx +1 -1
  47. package/dist/components/floorItem.tsx +1 -1
  48. package/dist/components/floorItem.weapp.tsx +1 -1
  49. package/dist/components/isv/Floor/index.tsx +1 -1
  50. package/dist/components/remoteFloorItem.tsx +1 -1
  51. package/dist/interface/common.ts +1 -1
  52. package/dist/interface/component.ts +1 -1
  53. package/dist/interface/jumpEventReport.ts +1 -1
  54. package/dist/interface/service.ts +1 -1
  55. package/dist/interface/utils.ts +1 -1
  56. package/dist/jumpEventReport/base.ts +1 -1
  57. package/dist/jumpEventReport/const.ts +1 -1
  58. package/dist/jumpEventReport/createReportFloorData.ts +1 -1
  59. package/dist/jumpEventReport/index.h5.ts +1 -1
  60. package/dist/jumpEventReport/index.jd.ts +1 -1
  61. package/dist/jumpEventReport/index.weapp.ts +1 -1
  62. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  63. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  64. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  65. package/dist/jumpEventReport/web/report.ts +1 -1
  66. package/dist/jumpEventReport/web.base.ts +1 -1
  67. package/dist/jumpEventReport/web.jd.ts +1 -1
  68. package/dist/jumpEventReport/web.jdb.ts +1 -1
  69. package/dist/jumpEventReport/web.jdjch.ts +1 -1
  70. package/dist/jumpEventReport/web.jxwxapp.ts +1 -0
  71. package/dist/jumpEventReport/web.pc.ts +1 -0
  72. package/dist/jumpEventReport/web.tjapp.ts +1 -0
  73. package/dist/jumpEventReport/web.tjm.ts +1 -0
  74. package/dist/jumpEventReport/web.wxapp.ts +1 -1
  75. package/dist/modules/ContainerFloorList/index.h5.module.scss +17 -1
  76. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  77. package/dist/modules/ContainerFloorList/index.tsx +1 -1
  78. package/dist/open/api/environment.ts +1 -1
  79. package/dist/open/api/index.ts +1 -1
  80. package/dist/open/api/jump copy.ts +1 -1
  81. package/dist/open/api/request.ts +1 -1
  82. package/dist/open/api/shopMember.ts +1 -1
  83. package/dist/open/api/track.ts +1 -1
  84. package/dist/open/api/util.ts +1 -1
  85. package/dist/open/components/index.ts +1 -1
  86. package/dist/sass/app.h5.scss +44 -3
  87. package/dist/sass/base.scss +12 -0
  88. package/dist/service/fetchGateway.ts +1 -1
  89. package/dist/service/http/const.ts +1 -1
  90. package/dist/service/requestServer.ts +1 -1
  91. package/dist/utils/connectNativeJsBridge.ts +1 -1
  92. package/dist/utils/connectNativeJsBridge.weapp.ts +1 -1
  93. package/dist/utils/draExceptionAndProfile.ts +1 -1
  94. package/dist/utils/h5Utils.ts +1 -1
  95. package/dist/utils/index.h5.ts +1 -1
  96. package/dist/utils/index.ts +1 -1
  97. package/dist/utils/index.weapp.ts +1 -1
  98. package/dist/utils/jm-common.js +1 -1
  99. package/dist/utils/sgmCodeUtils.ts +1 -0
  100. package/dist/utils/utils.ts +1 -1
  101. package/package.json +1 -1
  102. package/dist/customHooks/useDocumentVisibilitychange.ts +0 -1
@@ -1 +1 @@
1
- import Taro from '@tarojs/taro'
2
1
  urlCookie
3
2
  public config: {
4
3
  [key: string]: any
5
4
  }
6
5
  public lazyContainer: CommonInterFace.lazyContainer
7
6
  this.config = {}
8
7
  pin: cookie.get('pin') || ''
9
8
  })
10
9
  if(!this.checkStatusAndLoginPromise){
11
10
  this.checkStatusAndLoginPromise = new Promise(async (resolve, reject) => {
12
11
  try {
13
12
  const getLoginState = await this.doCheckLoginStateAndForApiCheck()
14
13
  if(getLoginState){
15
14
  resolve(true)
16
15
  }else {
17
16
  this.toLogin(options)
18
17
  reject(false)
19
18
  }
20
19
  }catch (e) {
21
20
  this.toLogin(options)
22
21
  reject(false)
23
22
  }
24
23
  })
25
24
  return this.checkStatusAndLoginPromise
26
25
  }else {
27
26
  return this.checkStatusAndLoginPromise.then(() => {
28
27
  return Promise.resolve(true)
29
28
  }).catch (() => {
30
29
  this.toLogin(options)
31
30
  return Promise.reject(true)
32
31
  })
33
32
  }
34
33
 
35
34
  doCheckLoginStateAndForApiCheck() {
36
35
  if(this.info.loginState){
37
36
  return Promise.resolve(true)
38
37
  }else {
39
38
  return new Promise((resolve, reject) => {
40
39
  if(this.info.isJingGouMiniViewState){
41
40
  const getWqAuthToken = cookie.get("wq_auth_token")
42
41
  if(getWqAuthToken){
43
42
  this.info.loginState = true
44
43
  resolve(true)
45
44
  }else {
46
45
  reject(false)
47
46
  }
48
47
  }else{
49
48
  Taro.request({
50
49
  url: api.isLogin,
51
50
  jsonp:true,
52
51
  timeout: 3000,
53
52
  success: (res) => {
54
53
  const {statusCode,data} = res
55
54
  if (statusCode === 200 && data?.islogin && Number(data.islogin) === 1) {
56
55
  this.info.loginState = true
57
56
  resolve(true);
58
57
  } else {
59
58
  reject(false)
60
59
  }
61
60
  },
62
61
  fail:(err) => {
63
62
  console.log("登录检查异常", err)
64
63
  reject(false)
65
64
  }
66
65
  })
67
66
  }
68
67
  })
69
68
  }
70
69
  }
71
70
 
72
71
  try {
73
72
  const getLoginState = await this.doCheckLoginStateAndForApiCheck()
74
73
  if(getLoginState){
75
74
  const { pin } = await this.getLoginCookie();
76
75
  this.info.userInfo = {
77
76
  pin,
78
77
  encodePin: encodeURIComponent(pin),
79
78
  ptkey: '',
80
79
  }
81
80
  resolve(true)
82
81
  }else {
83
82
  reject(false)
84
83
  }
85
84
  }catch (e) {
86
85
  reject(false)
87
86
  }
88
87
  })
89
88
  if(un_area && un_area.length > 0){
90
89
  this.info.pageInfo.address = un_area
91
90
  this.info.pageInfo.un_area = un_area
92
91
  this.info.pageInfo.addressCommaStr = un_area.replace(/_/g, ',')
93
92
  }
93
+ import Taro from '@tarojs/taro'
94
94
  isJdApp,
95
95
  isIosDevice,
96
96
  isAndroidDevice,
97
97
  isJdAndHarmonyDevice,
98
98
  isJdAndAndroidDevice,
99
99
  jdAppVersion,
100
100
  jdAppVersionStr,
101
101
  isString,
102
102
  isObject,
103
103
  serialize,
104
104
  dealNativePixelToCssPixel,
105
105
  BUSINESS_TYPE,
106
106
  JSSDK_APP_WEBVIEW_CODE,
107
107
  SECTION_HOME_TAB_NAME_TYPE,
108
108
  SECTION_HOME_TAB_TYPE,
109
109
  WXAPP_BIZ_KEY,
110
110
  WX_BUSINESS_TYPE,
111
111
  MPAAS_CONFIG_APP_VERSION,
112
112
  MPAAS_CONFIG_APP_LOW_VERSION,
113
113
  WXAPP_BIZ_SHOP_LIGHT_KEY,
114
114
  loginState: false,
115
115
  cookiesStr: '',
116
116
  userInfo: userPinKey,
117
117
  isJingGouMiniViewState: false,
118
118
  isJingxiMiniViewState: false,
119
119
  pageInfo: {
120
120
  wxBusinessType: WX_BUSINESS_TYPE.NO,
121
121
  address: '',
122
122
  addressCommaStr: '',
123
123
  un_area: '',
124
124
  vapptype: '1',
125
125
  pageType: 'home',
126
126
  isExposureState: false,
127
127
  moduleId: '',
128
128
  entrance: '',
129
129
  dataType: BUSINESS_TYPE.ONLINE,
130
130
  floorExposureInfo: {},
131
131
  floorVideInfo: {},
132
132
  productVideInfo: {},
133
133
  tabsLoadAllDataInfo: {
134
134
  [SECTION_HOME_TAB_NAME_TYPE[
135
135
  SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN
136
136
  ]]: false,
137
137
  },
138
138
  updateShopInfosAllState: false,
139
139
  isVipShop: false,
140
140
  isJdShowNativeImmersivePlayer: false,
141
141
  ...shopConfig,
142
142
  pageScrollTop: 0,
143
143
  pageIdxHeightInfo: {
144
144
  list: [],
145
145
  },
146
146
  shopNavBarHeight: 0,
147
147
  },
148
148
  defaultQueryLogInfo: {
149
149
  sourceType: 'JDshop',
150
150
  sourceValue: '',
151
151
  moduleId: 'none',
152
152
  entrance: 'none',
153
153
  },
154
154
  sysInfo: {
155
155
  windowWidth: isPc ? 375 : 0,
156
156
  containerWidth: isPc ? 375 : 0,
157
157
  windowHeight: 0,
158
158
  netWorkType: '4g',
159
159
  jdBottomBarHeight: 0,
160
160
  jdNativeHeaderHeight: 0,
161
161
  },
162
162
  queryInfo: {},
163
163
  shopInfo: {},
164
164
  openAppData: {},
165
165
  public info: CommonInterFace.BaseConfigInfo
166
166
  public config: {
167
167
  [key: string]: any
168
168
  }
169
169
  public lazyContainer: CommonInterFace.lazyContainer
170
170
  public renderedIsvComponents: CommonInterFace.renderedIsvComponents
171
171
  public rootEleNode: HTMLElement | null
172
172
  public checkStatusAndLoginPromise: object | null
173
173
  private jmfeRegisterStatePromise: Promise<any> | null
174
174
  private jmfeRegisterState: boolean
175
175
  constructor(opt) {
176
176
  this.info = this._getConfig(opt)
177
177
  this.config = {}
178
178
  this.lazyContainer = {
179
179
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN]]: {
180
180
  appLazyContainerList: [],
181
181
  appLazyFinishContainerList: [],
182
182
  },
183
183
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PROMOTION]]: {
184
184
  appLazyContainerList: [],
185
185
  appLazyFinishContainerList: [],
186
186
  },
187
187
  }
188
188
  this.renderedIsvComponents = {}
189
189
  this.rootEleNode = document.querySelector('body')
190
190
  this.checkStatusAndLoginPromise = null
191
191
  this.jmfeRegisterStatePromise = null
192
192
  isJdApp && this.jmfeReayPromise()
193
193
  }
194
194
  _getConfig(opt) {
195
195
  return Object.assign({}, DefaultConfig, opt)
196
196
  }
197
197
 
198
198
  jmfeReayPromise(): Promise<any> {
199
199
  if (isJdApp) {
200
200
  if (this.jmfeRegisterState) {
201
201
  return Promise.resolve(true)
202
202
  } else {
203
203
  !this.jmfeRegisterStatePromise &&
204
204
  (this.jmfeRegisterStatePromise = new Promise((resolve, reject) => {
205
205
  ready('jmfe', 3000)
206
206
  .then(() => {
207
207
  window?.jmfe && window.jmfe.registerCode(JSSDK_APP_WEBVIEW_CODE)
208
208
  this.jmfeRegisterState = true
209
209
  resolve(true)
210
210
  console.log('松果app内初始化注册jmfe认证完成')
211
211
  })
212
212
  .catch(() => {
213
213
  reject(false)
214
214
  })
215
215
  }))
216
216
  return this.jmfeRegisterStatePromise
217
217
  }
218
218
  } else {
219
219
  return Promise.reject(false)
220
220
  }
221
221
  }
222
222
 
223
223
  updateBusinessDomainAndApi(domain, api) {
224
224
  }
225
225
 
226
226
  formatNativeScreenPageData(action) {
227
227
  let getChangePageInfo: any = null
228
228
  try {
229
229
  const getNativeScreenPageInfoStr = window.XWebView?._callNative(
230
230
  JSON.stringify({
231
231
  plugin: 'JDHybridScreenPlugin',
232
232
  action,
233
233
  sync: '1',
234
234
  }),
235
235
  )
236
236
  const getChangePageInfoData =
237
237
  typeof getNativeScreenPageInfoStr === 'string'
238
238
  ? JSON.parse(getNativeScreenPageInfoStr)
239
239
  : null
240
240
  if (getChangePageInfoData && typeof getChangePageInfoData === 'object') {
241
241
  const { code, data } = getChangePageInfoData
242
242
  getChangePageInfo = code && code === '0' ? data : null
243
243
  }
244
244
  } catch (e) {
245
245
  console.log('JDHybridScreenPlugin转换异常', e)
246
246
  }
247
247
  return getChangePageInfo
248
248
  }
249
249
 
250
250
  isAndroidFoldScreen() {
251
251
  return this.formatNativeScreenPageData('isFoldScreen') === '1'
252
252
  }
253
253
 
254
254
  getJdAndroidPageChangeScreenInfo() {
255
255
  const getPageScreenInfo = this.formatNativeScreenPageData('getScreenSize')
256
256
  if (
257
257
  getPageScreenInfo &&
258
258
  getPageScreenInfo?.pageWidth &&
259
259
  getPageScreenInfo?.pageHeight
260
260
  ) {
261
261
  const { pageWidth, pageHeight } = dealNativePixelToCssPixel({
262
262
  pageWidth: getPageScreenInfo.pageWidth,
263
263
  pageHeight: getPageScreenInfo.pageHeight,
264
264
  })
265
265
  getPageScreenInfo.pageWidth = pageWidth
266
266
  getPageScreenInfo.pageHeight = pageHeight
267
267
  }
268
268
  return getPageScreenInfo
269
269
  }
270
270
 
271
271
  getSystemInfo(params) {
272
272
  let info: UtilsInterFace.taroGetSystemInfoSyncRes | {} = isPc
273
273
  ? {}
274
274
  : getSystemInfos(params)
275
275
  if (isJdAndAndroidDevice && window.innerWidth <= 0) {
276
276
  const isfoldScreen = this.isAndroidFoldScreen()
277
277
  if (isfoldScreen) {
278
278
  const getJdAndroidPageInfo = this.getJdAndroidPageChangeScreenInfo()
279
279
  getJdAndroidPageInfo && (info = getSystemInfos(getJdAndroidPageInfo))
280
280
  console.info(
281
281
  '安卓松果app折叠屏获取webview宽度为0,那么通过内部方法重置获取',
282
282
  getJdAndroidPageInfo,
283
283
  )
284
284
  }
285
285
  }
286
286
  this.info.sysInfo = {
287
287
  actualNavBarHeight: 0,
288
288
  ...this.info.sysInfo,
289
289
  ...info,
290
290
  safeContentHeight: info?.screenHeight,
291
291
  headerHeight: 0,
292
292
  tabBarHeight: 0,
293
293
  }
294
294
  if (isJdApp) {
295
295
  this.info.sysInfo['hostVersionName'] = jdAppVersionStr
296
296
  this.info.sysInfo['hostAppVersion'] = jdAppVersion
297
297
  this.getAddressCachePromise()
298
298
  this.getElderModePromise()
299
299
  this.getJDAppearanceStatePromise()
300
300
  this.createJdAndroidRquestEventForTouchStart()
301
301
  }
302
302
  this.getWifiVideoAutoPlayAsync()
303
303
  this.getMPaasConfigAsync()
304
304
  this.getNetWorkType()
305
305
  }
306
306
 
307
307
  taskTimeoutPromise(callBack, timeout = 2000) {
308
308
  return new Promise(resolve => {
309
309
  setTimeout(() => {
310
310
  const getCallBackRes = typeof callBack === 'function' && callBack()
311
311
  return resolve(getCallBackRes || false)
312
312
  }, timeout)
313
313
  })
314
314
  }
315
315
 
316
316
  getElderModePromise() {
317
317
  if (this.info.sysInfo.hasOwnProperty('jdAppModeType')) {
318
318
  return Promise.resolve(this.info.sysInfo.jdAppModeType)
319
319
  } else {
320
320
  if (isJdAndAndroidDevice) {
321
321
  this.info.sysInfo.jdAppModeType = '0'
322
322
  return Promise.resolve(this.info.sysInfo.jdAppModeType)
323
323
  } else {
324
324
  return Promise.race([
325
325
  this.taskTimeoutPromise(() => {
326
326
  this.info.sysInfo.jdAppModeType = '0'
327
327
  return this.info.sysInfo.jdAppModeType
328
328
  }),
329
329
  new Promise(resolve => {
330
330
  const getCallBackName = `getJdCurrentModeType${Date.now()}`
331
331
  if (!window[getCallBackName]) {
332
332
  window[getCallBackName] = res => {
333
333
  try {
334
334
  const getResJson =
335
335
  typeof res === 'string' ? JSON.parse(res) : res
336
336
  const { status, data, msg } = getResJson
337
337
  console.log(`获取松果app展示模式成功,返回结果${data}`)
338
338
  if (status === '0') {
339
339
  this.info.sysInfo.jdAppModeType = data
340
340
  resolve(data)
341
341
  } else {
342
342
  resolve('0')
343
343
  }
344
344
  } catch (e) {
345
345
  resolve('0')
346
346
  }
347
347
  window[getCallBackName] = null
348
348
  }
349
349
  }
350
350
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
351
351
  method: 'callSyncRouterModuleWithParams',
352
352
  params: JSON.stringify({
353
353
  routerURL: 'router://JDBModeModule/getCurrentMode',
354
354
  routerParam: {},
355
355
  callBackName: `window.${getCallBackName}`,
356
356
  callBackId: `${getCallBackName}Ios`,
357
357
  }),
358
358
  })
359
359
  }),
360
360
  ])
361
361
  }
362
362
  }
363
363
  }
364
364
 
365
365
  getJDAppearanceStatePromise() {
366
366
  if (this.info.sysInfo.hasOwnProperty('jdAppearanceState')) {
367
367
  return Promise.resolve(this.info.sysInfo.jdAppearanceState)
368
368
  } else {
369
369
  return Promise.race([
370
370
  this.taskTimeoutPromise(() => {
371
371
  this.info.sysInfo.jdAppearanceState = '0'
372
372
  return this.info.sysInfo.jdAppearanceState
373
373
  }),
374
374
  new Promise(resolve => {
375
375
  const getCallBackName = `getJdCurrentAppearanceState${Date.now()}`
376
376
  if (!window[getCallBackName]) {
377
377
  window[getCallBackName] = res => {
378
378
  try {
379
379
  console.log('getJDAppearanceStatePromise', res)
380
380
  const getResJson =
381
381
  typeof res === 'string' ? JSON.parse(res) : res
382
382
  const { status, data, msg } = getResJson
383
383
  console.log(`获取松果app是否开启黑暗模式成功,返回结果${data}`)
384
384
  if (status === '0') {
385
385
  this.info.sysInfo.jdAppearanceState = data
386
386
  resolve(data)
387
387
  } else {
388
388
  resolve('0')
389
389
  }
390
390
  } catch (e) {
391
391
  resolve('0')
392
392
  }
393
393
  window[getCallBackName] = null
394
394
  }
395
395
  }
396
396
  if (isAndroidDevice) {
397
397
  const jsonString = JSON.stringify({
398
398
  callBackName: `window.${getCallBackName}`,
399
399
  })
400
400
  console.log('window.JDAppearance', window.JDAppearance)
401
401
  window.JDAppearance && window.JDAppearance.getUiState(jsonString)
402
402
  } else {
403
403
  window?.webkit?.messageHandlers?.JDAppUnite?.postMessage({
404
404
  method: 'callSyncRouterModuleWithParams',
405
405
  params: JSON.stringify({
406
406
  routerURL:
407
407
  'router://JDWebViewBusinessModule/getJDAppearanceState',
408
408
  routerParam: {},
409
409
  callBackName: `window.${getCallBackName}`,
410
410
  callBackId: `${getCallBackName}Ios`,
411
411
  }),
412
412
  })
413
413
  }
414
414
  }),
415
415
  ])
416
416
  }
417
417
  }
418
418
 
419
419
  createJdAndroidRquestEventForTouchStart() {
420
420
  if (isJdAndAndroidDevice && window.JdAndroid) {
421
421
  const rootEleNode = document.querySelector('body')
422
422
  if (rootEleNode) {
423
423
  rootEleNode.addEventListener(
424
424
  'touchstart',
425
425
  this.jdAndroidAddEventListenerTouchStart,
426
426
  false,
427
427
  )
428
428
  }
429
429
  }
430
430
  }
431
431
  jdAndroidAddEventListenerTouchStart(e) {
432
432
  const isH5SwiperCustomEle = e?.target?.closest('.J_h5SwiperCustom')
433
433
  if (!isH5SwiperCustomEle) {
434
434
  const hasCustomEle = e
435
435
  ? e?.target?.closest('.J_customScroll') ||
436
436
  e?.target?.closest('.J_customLayout')
437
437
  : false
438
438
  if (!hasCustomEle) {
439
439
  window.JdAndroid.requestEvent(false)
440
440
  console.log(
441
441
  'createJdAndroidRquestEvent 所有松果安卓APP内的document touch start事件执行检测requestEvent并重置为false',
442
442
  )
443
443
  }
444
444
  }
445
445
  }
446
446
  removeJdAndroidRquestEventForTouchStart() {
447
447
  if (isJdAndAndroidDevice && window.JdAndroid) {
448
448
  const rootEleNode = document.querySelector('body')
449
449
  if (rootEleNode) {
450
450
  rootEleNode.removeEventListener(
451
451
  'touchstart',
452
452
  this.jdAndroidAddEventListenerTouchStart,
453
453
  false,
454
454
  )
455
455
  }
456
456
  }
457
457
  }
458
458
 
459
459
  getNetWorkType() {
460
460
  if (isJdApp) {
461
461
  this.jmfeReayPromise().then(() => {
462
462
  window.jmfe
463
463
  .getNetworkStatus()
464
464
  .then(({ status, data }) => {
465
465
  console.log(
466
466
  '在app内初始化通过jmfe对象获取网络状态完成,当前网络状态====',
467
467
  data,
468
468
  )
469
469
  if (status === '0') {
470
470
  this.info.sysInfo['netWorkType'] = data
471
471
  } else {
472
472
  this._taroGetNetworkType()
473
473
  }
474
474
  })
475
475
  .catch(err => {
476
476
  console.log('在app内初始化通过jmfe对象获取网络状态异常====', err)
477
477
  this._taroGetNetworkType()
478
478
  })
479
479
  })
480
480
  } else {
481
481
  this._taroGetNetworkType()
482
482
  }
483
483
  }
484
484
  _taroGetNetworkType() {
485
485
  Taro.getNetworkType().then(getRes => {
486
486
  if (getRes && getRes.networkType) {
487
487
  this.info.sysInfo['netWorkType'] = getRes.networkType
488
488
  console.log(
489
489
  '在app内通过taro对象获取网络状态完成,当前网络状态',
490
490
  this.info.sysInfo['netWorkType'],
491
491
  )
492
492
  }
493
493
  })
494
494
  }
495
495
  getCacheAddressRouter() {
496
496
  if (!window.jmfe) return
497
497
  if (isAndroidDevice) {
498
498
  return window.jmfe.callRouter({
499
499
  jdRouter: '1',
500
500
  routerURL: 'router://JDAddressModule/getCacheAddress',
501
501
  routerParam: { sceneId: 'basicShoppingProcess' },
502
502
  })
503
503
  } else if (isIosDevice) {
504
504
  return window.jmfe.callRouter({
505
505
  jdRouter: '1',
506
506
  routerURL: 'router://JDBAddressCacheManagerModule/getCacheAddress',
507
507
  routerParam: { sceneId: 'basicShoppingProcess' },
508
508
  })
509
509
  } else if (isJdAndHarmonyDevice) {
510
510
  return new Promise(resolve => {
511
511
  resolve({})
512
512
  })
513
513
  } else {
514
514
  throw Error(
515
515
  'Unknown device type cannot obtain the address information through the route!',
516
516
  )
517
517
  }
518
518
  }
519
519
 
520
520
  getAddressCachePromise() {
521
521
  return new Promise(resolve => {
522
522
  if (
523
523
  this?.info?.sysInfo?.lat &&
524
524
  this?.info?.sysInfo?.lng &&
525
525
  this?.info?.sysInfo?.area
526
526
  ) {
527
527
  resolve({
528
528
  lat: this.info.sysInfo.lat,
529
529
  lng: this.info.sysInfo.lng,
530
530
  area: this?.info?.sysInfo?.area,
531
531
  })
532
532
  } else {
533
533
  this.jmfeReayPromise().then(() => {
534
534
  this.getCacheAddressRouter()
535
535
  .then(({ status, data }) => {
536
536
  if (status === '0' && data) {
537
537
  const {
538
538
  lat,
539
539
  latitude,
540
540
  lng,
541
541
  longitude,
542
542
  provinceId,
543
543
  cityId,
544
544
  countyId,
545
545
  townId,
546
546
  } = data || {}
547
547
  let area = ''
548
548
  this.info.sysInfo['lat'] = `${lat || latitude || ''}`
549
549
  this.info.sysInfo['lng'] = `${lng || longitude || ''}`
550
550
  if (provinceId) {
551
551
  area = `${provinceId}_${cityId || 0}_${countyId ||
552
552
  0}_${townId || 0}`
553
553
  this.info.pageInfo['address'] = area
554
554
  this.info.pageInfo['addressCommaStr'] = area.replace(
555
555
  /_/g,
556
556
  ',',
557
557
  )
558
558
  }
559
559
  resolve({
560
560
  lat: this.info.sysInfo['lat'],
561
561
  lng: this.info.sysInfo['lng'],
562
562
  area: area,
563
563
  })
564
564
  } else {
565
565
  resolve({ lat: '', lng: '', area: '' })
566
566
  }
567
567
  })
568
568
  .catch(e => {
569
569
  console.log(' ~~ file: index.h5.ts:518 ~~ .catch ~~ e:', e)
570
570
  resolve({ lat: '', lng: '', area: '' })
571
571
  console.log('判断jmfe不存在,获取经纬度信息异常')
572
572
  })
573
573
  })
574
574
  }
575
575
  })
576
576
  }
577
577
 
578
578
  async updateMPaasConfigAsync(isBeforePageReady: boolean) {
579
579
  console.log("updateMPaasConfigAsync isBeforePageReady:", isBeforePageReady)
580
580
  if (!isJdApp) {
581
581
  return
582
582
  }
583
583
  const avifSwitch = await getMPaasConfigByBussinessKey(
584
584
  'avifSwitch',
585
585
  isBeforePageReady,
586
586
  )
587
587
  this.info.sysInfo.dynamicConfig['avifSwitch'] = avifSwitch
588
588
  const isFollowAppVideoPlayStatus = await getMPaasConfigByBussinessKey(
589
589
  'isFollowAppVideoPlayStatus',
590
590
  isBeforePageReady,
591
591
  )
592
592
  console.log(
593
593
  'isBeforePageReady:',
594
594
  isBeforePageReady,
595
595
  'isFollowAppVideoPlayStatus:',
596
596
  isFollowAppVideoPlayStatus,
597
597
  )
598
598
  if (
599
599
  isFollowAppVideoPlayStatus === true ||
600
600
  isFollowAppVideoPlayStatus === 'true'
601
601
  ) {
602
602
  this.info.sysInfo.dynamicConfig['isFollowAppVideoPlayStatus'] = true
603
603
  }
604
604
  }
605
605
 
606
606
  async getWifiVideoAutoPlayAsync() {
607
607
  this.info.sysInfo['wifiVideoAutoPlay'] = false
608
608
  if (!isJdApp) {
609
609
  return
610
610
  }
611
611
  const videoPlayStatus = await getWifiVideoAutoPlay().catch(e => {
612
612
  return 0
613
613
  })
614
614
  if (Number(videoPlayStatus) === 1) {
615
615
  this.info.sysInfo['wifiVideoAutoPlay'] = true
616
616
  }
617
617
  }
618
618
 
619
619
  async getMPaasConfigAsync() {
620
620
  this.info.sysInfo.dynamicConfig = {}
621
621
  this.info.sysInfo.dynamicConfig['avifSwitch'] = {}
622
622
  this.info.sysInfo.dynamicConfig['isFollowAppVideoPlayStatus'] = false
623
623
  return this.updateMPaasConfigAsync(true)
624
624
  }
625
625
 
626
626
  getDynamicConfig(key: string){
627
627
  return this.info.sysInfo.dynamicConfig[key]
628
628
  }
629
629
  async updateMPaasConfig() {
630
630
  console.log('updateMPaasConfig')
631
631
  if (
632
632
  isIosDevice &&
633
633
  versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_VERSION) < 0 &&
634
634
  versionCompare(jdAppVersionStr, MPAAS_CONFIG_APP_LOW_VERSION) >= 0
635
635
  ) {
636
636
  try {
637
637
  await this.updateMPaasConfigAsync(false)
638
638
  } catch (e) {
639
639
  console.log('updateMPaasConfigAsync:', e)
640
640
  }
641
641
  }
642
642
  }
643
643
 
644
644
  toLogin(options) {
645
645
  return this.info.isJingGouMiniViewState || this.info.isJingxiMiniViewState
646
646
  ? this.toWxAppLogin(options)
647
647
  : this.toWebLogin(options)
648
648
  }
649
649
 
650
650
  doLogin(options) {
651
651
  return this.toLogin(options)
652
652
  }
653
653
 
654
654
  doLoginForJdPin(options = {}) {
655
655
  return this.doLogin({
656
656
  loginColor: {
657
657
  biz: WXAPP_BIZ_SHOP_LIGHT_KEY,
658
658
  dpin: 0,
659
659
  },
660
660
  ...options,
661
661
  })
662
662
  }
663
663
 
664
664
  toWebLogin(options) {
665
665
  let params: {
666
666
  returnurl: string
667
667
  } = {
668
668
  returnurl: '',
669
669
  }
670
670
  const loginUrl = isPc
671
671
  ? `//passport.jd.com/new/login.aspx`
672
672
  : `${domain.mobileLogin}/user/login.action`
673
673
  const defaultParams = {
674
674
  appid: '100',
675
675
  returnurl: window.location.href,
676
676
  }
677
677
  if (isString(options)) {
678
678
  params = Object.assign({}, defaultParams, {
679
679
  returnurl: options,
680
680
  })
681
681
  } else if (isObject(options)) {
682
682
  const { loginColor, ...otherOptions } = options
683
683
  params = Object.assign({}, defaultParams, otherOptions)
684
684
  } else {
685
685
  params = defaultParams
686
686
  }
687
687
  params.returnurl = encodeURIComponent(params.returnurl)
688
688
  let getFullUrl = loginUrl + '?' + serialize(params)
689
689
  if (isPc) {
690
690
  getFullUrl = getFullUrl.replace(/returnurl/, 'ReturnUrl')
691
691
  }
692
692
  return Promise.resolve({
693
693
  h5ToUrl: true,
694
694
  url: getFullUrl,
695
695
  }).then(() => {
696
696
  window.location.href = getFullUrl
697
697
  })
698
698
  }
699
699
 
700
700
  toWxAppLogin(options = {}) {
701
701
  console.log('微信京购小程序中h5登录跳转', options)
702
702
  return Promise.resolve(true).then(() => {
703
703
  const { loginColor } = Object.assign(
704
704
  {},
705
705
  {
706
706
  loginColor: {
707
707
  bzi: WXAPP_BIZ_KEY,
708
708
  dpin: 1,
709
709
  },
710
710
  },
711
711
  options,
712
712
  )
713
713
  window.location.href = `${domain.wq}/pinbind/pintokenredirect?biz=${
714
714
  loginColor.bzi
715
715
  }&url=${encodeURIComponent(window.location.href)}`
716
716
  })
717
717
  }
718
718
 
719
719
  getLoginCookie() {
720
720
  return Promise.resolve({
721
721
  pin: cookie.get('pin') || '',
722
722
  })
723
723
  }
724
724
 
725
725
  clearLoginCookie() {
726
726
  cookie.remove('pin')
727
727
  }
728
728
 
729
729
  checkStatusAndLogin(options = {}) {
730
730
  if (!this.checkStatusAndLoginPromise) {
731
731
  this.checkStatusAndLoginPromise = new Promise(async (resolve, reject) => {
732
732
  try {
733
733
  const getLoginState = await this.doCheckLoginStateAndForApiCheck(
734
734
  options,
735
735
  )
736
736
  if (getLoginState) {
737
737
  resolve(true)
738
738
  } else {
739
739
  this.toLogin(options)
740
740
  reject(false)
741
741
  }
742
742
  } catch (e) {
743
743
  this.toLogin(options)
744
744
  reject(false)
745
745
  }
746
746
  })
747
747
  return this.checkStatusAndLoginPromise
748
748
  } else {
749
749
  return this.checkStatusAndLoginPromise
750
750
  .then(() => {
751
751
  return Promise.resolve(true)
752
752
  })
753
753
  .catch(() => {
754
754
  this.toLogin(options)
755
755
  return Promise.reject(true)
756
756
  })
757
757
  }
758
758
  }
759
759
 
760
760
  checkJdStatusAndLogin(
761
761
  options = {
762
762
  loginColor: {
763
763
  bzi: WXAPP_BIZ_SHOP_LIGHT_KEY,
764
764
  dpin: 0,
765
765
  },
766
766
  },
767
767
  ) {
768
768
  return this.checkStatusAndLogin(options)
769
769
  }
770
770
 
771
771
  doCheckLoginStateAndForApiCheck(options) {
772
772
  if (this.info.loginState) {
773
773
  return Promise.resolve(true)
774
774
  } else {
775
775
  return new Promise((resolve, reject) => {
776
776
  if (
777
777
  this.info.isJingGouMiniViewState ||
778
778
  this.info.isJingxiMiniViewState
779
779
  ) {
780
780
  const getWqAuthToken = cookie.get('wq_auth_token')
781
781
  const getWqSkey = cookie.get('wq_skey')
782
782
  const getWqUin = cookie.get('wq_uin')
783
783
  const isLoginState =
784
784
  options?.loginColor?.dpin === 0
785
785
  ? getWqAuthToken
786
786
  : getWqSkey && getWqUin
787
787
  if (isLoginState) {
788
788
  this.info.loginState = true
789
789
  resolve(true)
790
790
  } else {
791
791
  reject(false)
792
792
  }
793
793
  } else {
794
794
  Taro.request({
795
795
  url: api.isLogin,
796
796
  jsonp: true,
797
797
  timeout: 3000,
798
798
  success: res => {
799
799
  const { statusCode, data } = res
800
800
  if (
801
801
  statusCode === 200 &&
802
802
  data?.islogin &&
803
803
  Number(data.islogin) === 1
804
804
  ) {
805
805
  this.info.loginState = true
806
806
  resolve(true)
807
807
  } else {
808
808
  reject(false)
809
809
  }
810
810
  },
811
811
  fail: err => {
812
812
  console.log('登录检查异常', err)
813
813
  reject(false)
814
814
  },
815
815
  })
816
816
  }
817
817
  })
818
818
  }
819
819
  }
820
820
 
821
821
  checkLoginStatus(options) {
822
822
  return new Promise(async (resolve, reject) => {
823
823
  try {
824
824
  const getLoginState = await this.doCheckLoginStateAndForApiCheck(
825
825
  options,
826
826
  )
827
827
  if (getLoginState) {
828
828
  const { pin } = await this.getLoginCookie()
829
829
  this.info.userInfo = {
830
830
  pin,
831
831
  encodePin: encodeURIComponent(pin),
832
832
  ptkey: '',
833
833
  }
834
834
  resolve(true)
835
835
  } else {
836
836
  reject(false)
837
837
  }
838
838
  } catch (e) {
839
839
  reject(false)
840
840
  }
841
841
  })
842
842
  }
843
843
 
844
844
  updatePageAndLogInfo(updateQuery = {}) {
845
845
  const createUpdateQueryInfo: {
846
846
  query: {
847
847
  shopId?: string | number
848
848
  venderId?: string | number
849
849
  }
850
850
  updateShopInfoState: boolean
851
851
  } = Object.assign(
852
852
  {},
853
853
  {
854
854
  query: {},
855
855
  updateShopInfoState: false,
856
856
  },
857
857
  updateQuery,
858
858
  )
859
859
  console.log(
860
860
  '获取当前下发的店铺查询参数',
861
861
  updateQuery,
862
862
  '获取之前保存的shopInfo店铺查询参数',
863
863
  this.info?.shopInfo,
864
864
  )
865
865
  const { query, updateShopInfoState } = createUpdateQueryInfo
866
866
  const { shopId, venderId, un_area } = query
867
867
  if (updateShopInfoState) {
868
868
  this.info.queryInfo = {
869
869
  ...this.info.queryInfo,
870
870
  ...query,
871
871
  }
872
872
  if (shopId && venderId) {
873
873
  this.info.shopInfo = {
874
874
  shopId: `${shopId}`,
875
875
  venderId: `${venderId}`,
876
876
  }
877
877
  }
878
878
  } else {
879
879
  this.info.queryInfo = {
880
880
  ...query,
881
881
  }
882
882
  if (
883
883
  this.info.shopInfo?.shopId &&
884
884
  this.info.shopInfo?.venderId &&
885
885
  (this.info.shopInfo.shopId == shopId ||
886
886
  this.info.shopInfo.venderId == venderId)
887
887
  ) {
888
888
  this.info.queryInfo.shopId = this.info.shopInfo.shopId
889
889
  this.info.queryInfo.venderId = this.info.shopInfo.venderId
890
890
  console.log(
891
891
  '当前存储的店铺shopId和venderId与下发的店铺信息shopId或者venderId为同一个,补充shopId或者venderId查询参数',
892
892
  this.info.queryInfo,
893
893
  )
894
894
  }
895
895
  }
896
896
  this.info.queryInfo['shopId'] &&
897
897
  (this.info.queryInfo['shopId'] = `${this.info.queryInfo['shopId']}`)
898
898
  this.info.queryInfo['venderId'] &&
899
899
  (this.info.queryInfo['venderId'] = `${this.info.queryInfo['venderId']}`)
900
900
  console.log(
901
901
  'h5==获取店铺下发查询参数\n',
902
902
  query,
903
903
  '\n获取店铺最后查询参数\n',
904
904
  this.info.queryInfo,
905
905
  '\n是否为更新店铺状态\n',
906
906
  updateShopInfoState,
907
907
  )
908
908
  const changeArea =
909
909
  un_area && un_area.length > 0 ? un_area : ipLoc_djd ? ipLoc_djd : ''
910
910
  if (changeArea) {
911
911
  this.info.pageInfo.address = changeArea
912
912
  this.info.pageInfo.un_area = changeArea
913
913
  this.info.pageInfo.addressCommaStr = changeArea.replace(/_/g, ',')
914
914
  }
915
915
  }