@conecli/cone-render 0.9.1-shop2.1 → 0.9.1-shop2.11

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