@conecli/cone-render 0.9.1-shop2.0 → 0.9.1-shop2.2

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 Taro from '@tarojs/taro'
2
1
  SHOP_MENU_ID_TYPE,
3
2
  SHOP_MENU_ID_QUERY_NAME,
4
3
  SECTION_HOME_TAB_TYPE,
5
4
  SECTION_HOME_TAB_NAME_TYPE,
6
5
  SECTION_HOME_TAB_QUERY_TYPE,
7
6
  CHANNEL_TYPE,
8
7
  JDShopViewBusinessPathType,
9
8
  FloorModuleType,
10
9
  RemoteLoadFloorList,
11
10
  getBundleUrl,
12
11
  getBundleFileName,
13
12
  formatPackResult,
14
13
  const resultList: Array<any> = [],
15
14
  arrLen = arr.length
16
15
  if (arrLen) {
17
16
  if (arrLen > size) {
18
17
  for (let i = 0; i < arrLen; i = i + size) {
19
18
  resultList.push(arr.slice(i, i + size))
20
19
  }
21
20
  } else {
22
21
  resultList.push(arr)
23
22
  }
24
23
  }
25
24
  return resultList
26
25
  let _address = ids
27
26
  const _areaAreaSplit = ids.split('.')
28
27
  const _areaAreaSplit2 = ids.split('_')
29
28
  _address = _areaAreaSplit.length === 2 ? _areaAreaSplit[0] : _address
30
29
  _address = _areaAreaSplit2.length === 3 ? `${_areaAreaSplit2}_0` : _address
31
30
  return _address
32
31
  const getValue = `${obj[key]}`.replace(/undefined/,'').replace(/null/,'')
33
32
  paramStr += `${index === 0 ? '' : '&'}${key}=${encodeURIComponent(getValue)}`
34
33
  const result = {}
35
34
  if (
36
35
  !urlOrQueryStr ||
37
36
  ('string' !== typeof urlOrQueryStr && String !== urlOrQueryStr.constructor)
38
37
  ) {
39
38
  return result
40
39
  }
41
40
  if (urlOrQueryStr.indexOf('?') > -1) {
42
41
  const queryStr = urlOrQueryStr.split('?')
43
42
  const queryItemList =
44
43
  queryStr && queryStr.length > 1 ? queryStr[1].split('&') : []
45
44
  const queryItemListLen = queryItemList.length
46
45
  queryItemListLen > 0 &&
47
46
  queryItemList.forEach((item) => {
48
47
  const thisItemList = item.split('=')
49
48
  result[thisItemList[0]] = thisItemList[1]
50
49
  })
51
50
  } else {
52
51
  const queryItemList =
53
52
  urlOrQueryStr.indexOf('&') > -1
54
53
  ? urlOrQueryStr.split('&')
55
54
  : [urlOrQueryStr]
56
55
  const queryItemListLen = queryItemList.length
57
56
  queryItemListLen > 0 &&
58
57
  queryItemList.forEach((item) => {
59
58
  const thisItemList = item.split('=')
60
59
  result[thisItemList[0]] = thisItemList[1]
61
60
  })
62
61
  }
63
62
  return result
64
63
  url: string,
65
64
  size?: {
66
65
  w: number
67
66
  h: number
68
67
  },
69
68
  quality?: number,
70
69
  if (url && size) {
71
70
  const _w = Math.floor(size.w)
72
71
  const _h = Math.floor(size.h)
73
72
  if (url.match(/gif$/i)) {
74
73
  return url
75
74
  } else {
76
75
  if (_w > 0 && _h > 0) {
77
76
  url = url.replace('jfs/', `s${_w}x${_h}_jfs/`)
78
77
  }
79
78
  url += quality != null ? `!q${quality}.dpg` : '.dpg'
80
79
  }
81
80
  }
82
81
  return url
83
82
  url: string,
84
83
  jfsImgInfo: UtilsInterFace.getJfsImageInfo = {},
85
84
  if (url.match(/\.(jpg|png|dpg)$/i)) {
86
85
  const { width, height, quality } = jfsImgInfo
87
86
  if (typeof width === 'number' || typeof height === 'number') {
88
87
  url = url.replace(
89
88
  '/jfs/',
90
89
  `/s${Math.floor(width || 0)}x${Math.floor(height || 0)}_jfs/`,
91
90
  )
92
91
  }
93
92
  if (
94
93
  typeof quality === 'number' &&
95
94
  quality > 0 &&
96
95
  quality < 100 &&
97
96
  url.match(/\.jpg$/i)
98
97
  ) {
99
98
  url += `!q${quality}.dpg`
100
99
  }
101
100
  }
102
101
  return addHttps(url)
103
102
  if(!imgUrl.includes('360buyimg.com')){
104
103
  imgUrl = '//m.360buyimg.com/cms/' + imgUrl
105
104
  }
106
105
  if(quality != 100) imgUrl += /\.png/.test(imgUrl) ? '.dpg' : `!q${quality}`
107
106
  count: number,
108
107
  fixedNum = 2,
109
108
  unit = '万',
110
109
  maxNum = 10000,
111
110
  count = Number(count)
112
111
  if (count > maxNum) {
113
112
  return (count / maxNum).toFixed(fixedNum) + unit
114
113
  }
115
114
  return count
116
115
  key: string,
117
116
  value: string | object,
118
117
  successBack?: any,
119
118
  failBack?: any,
120
119
  return Taro.setStorage({
121
120
  key: key,
122
121
  data: value,
123
122
  success: successBack,
124
123
  fail: failBack,
125
124
  })
126
125
  return Taro.getStorageSync(key)
127
126
  return Taro.removeStorage({
128
127
  key: key,
129
128
  })
130
129
  return Taro.clearStorage()
131
130
  const systemInfo: UtilsInterFace.taroGetSystemInfoSyncRes = getSystemInfo || {
132
131
  platform: '',
133
132
  model: '',
134
133
  system: '',
135
134
  }
136
135
  const isIOS = !!systemInfo.system.match(/ios/i)
137
136
  const isAndroid = !!systemInfo.system.match(/android/i)
138
137
  if (!systemInfo.statusBarHeight) {
139
138
  systemInfo.statusBarHeight = screenHeight - windowHeight - 20
140
139
  systemInfo.navBarExtendHeight = 0
141
140
  } else {
142
141
  if (isIOS) {
143
142
  systemInfo.navBarExtendHeight = 4
144
143
  } else {
145
144
  systemInfo.navBarExtendHeight = 0
146
145
  }
147
146
  }
148
147
  let rect = Taro.getMenuButtonBoundingClientRect
149
148
  ? Taro.getMenuButtonBoundingClientRect()
150
149
  : null
151
150
  if (!rect || !rect.width || !rect.top || !rect.left || !rect.height) {
152
151
  let gap = 0
153
152
  let width = 96
154
153
  if (systemInfo.platform === 'android') {
155
154
  gap = 8
156
155
  width = 96
157
156
  } else if (systemInfo.platform === 'devtools') {
158
157
  if (isIOS) {
159
158
  gap = 5.5
160
159
  } else {
161
160
  gap = 7.5
162
161
  }
163
162
  } else {
164
163
  gap = 4
165
164
  width = 88
166
165
  }
167
166
  rect = {
168
167
  bottom: systemInfo.statusBarHeight + gap + 32,
169
168
  height: 32,
170
169
  left: systemInfo.windowWidth - width - 10,
171
170
  right: systemInfo.windowWidth - 10,
172
171
  top: systemInfo.statusBarHeight + gap,
173
172
  width,
174
173
  }
175
174
  }
176
175
  const gap = rect.top - systemInfo.statusBarHeight
177
176
  systemInfo.navBarTopToStatusBar = gap
178
177
  systemInfo.navBarHeight = 2 * gap + rect.height
179
178
  systemInfo.capsulePosition = rect
180
179
  systemInfo.isIOS = isIOS
181
180
  systemInfo.isAndroid = isAndroid
182
181
  return systemInfo
183
182
  if (str.match(/^\/\//)) {
184
183
  str = 'https:' + str
185
184
  }
186
185
  return str
187
186
  dateTimeOrdate: Date | string | number | null,
188
187
  format = 'yyyy-MM-dd HH:mm:ss',
189
188
  noPadStart = {
190
189
  M: '0',
191
190
  d: '0',
192
191
  H: '0',
193
192
  m: '0',
194
193
  s: '0',
195
194
  },
196
195
  let dateResult = ''
197
196
  const padStarts = Object.assign(
198
197
  {
199
198
  M: '0',
200
199
  d: '0',
201
200
  H: '0',
202
201
  m: '0',
203
202
  s: '0',
204
203
  },
205
204
  noPadStart,
206
205
  )
207
206
  if (dateTimeOrdate) {
208
207
  let changeDateTimeOrdate = dateTimeOrdate
209
208
  const getChangeDateTimeToNumber = Number(changeDateTimeOrdate)
210
209
  if (getChangeDateTimeToNumber) {
211
210
  changeDateTimeOrdate = getChangeDateTimeToNumber
212
211
  } else {
213
212
  changeDateTimeOrdate = `${changeDateTimeOrdate}`.replace(/-/g, '/')
214
213
  }
215
214
  const nowDate =
216
215
  dateTimeOrdate instanceof Date
217
216
  ? dateTimeOrdate
218
217
  : new Date(changeDateTimeOrdate)
219
218
  const dateMap = {
220
219
  y: `${nowDate.getFullYear()}`,
221
220
  M: `${nowDate.getMonth() + 1}`.padStart(2, padStarts['M']),
222
221
  d: `${nowDate.getDate()}`.padStart(2, padStarts['d']),
223
222
  H: `${nowDate.getHours()}`.padStart(2, padStarts['H']),
224
223
  m: `${nowDate.getMinutes()}`.padStart(2, padStarts['m']),
225
224
  s: `${nowDate.getSeconds()}`.padStart(2, padStarts['s']),
226
225
  }
227
226
  const regDate = new RegExp('y+|M+|d+|H+|m+|s+', 'g')
228
227
  const regYear = new RegExp('y')
229
228
  dateResult = format.replace(regDate, (v) => {
230
229
  let changeValue = v
231
230
  if (regYear.test(changeValue)) {
232
231
  const thisYear = dateMap.y
233
232
  const subValueLen = 4 - changeValue.length
234
233
  changeValue = thisYear.substr(subValueLen)
235
234
  } else {
236
235
  const dateKey = v.substr(0, 1)
237
236
  changeValue = dateMap[dateKey]
238
237
  }
239
238
  return changeValue
240
239
  })
241
240
  }
242
241
  return dateResult
243
242
  let timer: any = null
244
243
  let startTime = Date.now()
245
244
  return function () {
246
245
  const curTime = Date.now()
247
246
  const remaining = delay - (curTime - startTime)
248
247
  const context = this
249
248
  const args = arguments
250
249
  clearTimeout(timer)
251
250
  if (remaining <= 0) {
252
251
  func.apply(context, args)
253
252
  startTime = Date.now()
254
253
  } else {
255
254
  timer = setTimeout(func, remaining)
256
255
  }
257
256
  }
258
257
  let context, args, result
259
258
  let timeout = null
260
259
  let previous = 0
261
260
  if (!options) options = {}
262
261
  const later = function () {
263
262
  previous = options.leading === false ? 0 : Date.now()
264
263
  timeout = null
265
264
  result = func.apply(context, args)
266
265
  if (!timeout) context = args = null
267
266
  }
268
267
  return function () {
269
268
  const now = Date.now()
270
269
  if (!previous && options.leading === false) previous = now
271
270
  const remaining = wait - (now - previous)
272
271
  context = this
273
272
  args = arguments
274
273
  if (remaining <= 0 || remaining > wait) {
275
274
  if (timeout) {
276
275
  clearTimeout(timeout)
277
276
  timeout = null
278
277
  }
279
278
  previous = now
280
279
  result = func.apply(context, args)
281
280
  if (!timeout) context = args = null
282
281
  } else if (!timeout && options.trailing !== false) {
283
282
  timeout = setTimeout(later, remaining)
284
283
  }
285
284
  return result
286
285
  }
287
286
  let timer: any = null
288
287
  return function () {
289
288
  const context: any = this
290
289
  const args = arguments
291
290
  timer && clearTimeout(timer)
292
291
  timer = setTimeout(function () {
293
292
  fn.apply(context, args)
294
293
  }, delay)
295
294
  }
296
295
  if (txt) {
297
296
  txt = txt.trim()
298
297
  const reg = new RegExp(/[\d-]+/)
299
298
  const res = reg.exec(txt)
300
299
  if (res && res.length > 0) {
301
300
  let tel = res[0]
302
301
  if (tel && delSeparator) {
303
302
  tel = tel.replace(/-/g, '')
304
303
  }
305
304
  return tel
306
305
  }
307
306
  }
308
307
  return ''
309
308
  if (rgb) {
310
309
  const reg = /^(rgb|RGB)/
311
310
  const color = rgb
312
311
  if (reg.test(color)) {
313
312
  let strHex = '#'
314
313
  const colorArr = color.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',')
315
314
  for (let i = 0; i < colorArr.length; i++) {
316
315
  let hex = Number(colorArr[i]).toString(16)
317
316
  if (hex === '0') {
318
317
  hex += hex
319
318
  }
320
319
  strHex += hex
321
320
  }
322
321
  return strHex
323
322
  } else {
324
323
  return String(color)
325
324
  }
326
325
  } else {
327
326
  return ''
328
327
  }
329
328
  if (hex) {
330
329
  const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
331
330
  let color = hex.toLowerCase()
332
331
  if (reg.test(color)) {
333
332
  if (color.length === 4) {
334
333
  let colorNew = '#'
335
334
  for (let i = 1; i < 4; i += 1) {
336
335
  colorNew += color.slice(i, i + 1).concat(color.slice(i, i + 1))
337
336
  }
338
337
  color = colorNew
339
338
  }
340
339
  const colorChange: number[] = []
341
340
  for (let i = 1; i < 7; i += 2) {
342
341
  colorChange.push(parseInt('0x' + color.slice(i, i + 2)))
343
342
  }
344
343
  if (returnList) {
345
344
  return colorChange
346
345
  } else {
347
346
  return 'RGB(' + colorChange.join(',') + ')'
348
347
  }
349
348
  } else {
350
349
  return color
351
350
  }
352
351
  } else {
353
352
  return ''
354
353
  }
355
354
  n: number,
356
355
  m: number,
357
356
  filterNum: number | undefined = undefined,
358
357
  const c = m - n + 1
359
358
  const res = Math.floor(Math.random() * c + n)
360
359
  if (filterNum && filterNum == res) {
361
360
  console.log('随机数二次开始', res, filterNum)
362
361
  return getRandom(n, m, filterNum)
363
362
  } else {
364
363
  return res
365
364
  }
366
365
  wqCookieStr: string
367
366
  wqCookie: {
368
367
  pin?: string
369
368
  visitkey?: string
370
369
  [key: string]: any
371
370
  }
372
371
  const {
373
372
  jdpin,
374
373
  pinStatus,
375
374
  visitkey,
376
375
  unionid,
377
376
  skey,
378
377
  __jda,
379
378
  __jdv,
380
379
  __wga,
381
380
  wxapp_type,
382
381
  appType
383
382
  } = cookie
384
383
  const ret: string[] = []
385
384
  const getUserCookieObj = {}
386
385
  const createUseCookieArr = [
387
386
  jdpin,
388
387
  pinStatus,
389
388
  visitkey,
390
389
  unionid,
391
390
  skey,
392
391
  __jda,
393
392
  __jdv,
394
393
  __wga,
395
394
  wid,
396
395
  wq_skey,
397
396
  wq_uin,
398
397
  wq_auth_token,
399
398
  wxapp_scene,
400
399
  wq_unionid,
401
400
  wxapp_openid,
402
401
  wxapp_version,
403
402
  wxapp_type,
404
403
  appType
405
404
  name = name === 'jdpin' ? 'pin' : name;
406
405
  name === 'pin' && (ret.push(`pt_pin=${encodeURIComponent(value)}`))
407
406
  ret.push(`${name}=${encodeURIComponent(value)}`)
408
407
  getUserCookieObj[name] = value
409
408
  }
410
409
  })
411
410
  return {
412
411
  wqCookieStr: ret.join(';'),
413
412
  wqCookie: getUserCookieObj,
414
413
  }
415
414
  num,
416
415
  widthSize = 375,
417
416
  layoutWidth = windowWidth,
418
417
  const getNum = Number(num)
419
418
  return Math.round((getNum / widthSize) * layoutWidth)
420
419
  let checkState = false
421
420
  const couponFloorModuleType = floorData?.floorExtInfo?.moduleFlag
422
421
  if (couponFloorModuleType === FloorModuleType.COUPON) {
423
422
  try {
424
423
  const dataDefines = getFloorDataToDataDefines(floorData)
425
424
  const couponDataDefine = dataDefines
426
425
  ? dataDefines.filter((item) => {
427
426
  return item.type === 'coupon'
428
427
  })
429
428
  : [],
430
429
  couponList = couponDataDefine[0]?.nodeText?.data
431
430
  ? couponDataDefine[0]?.nodeText?.data
432
431
  : [],
433
432
  couponLength = couponList.length,
434
433
  numShowPerLine = couponDataDefine[0]?.nodeText?.numShowPerLine
435
434
  ? couponDataDefine[0]?.nodeText?.numShowPerLine
436
435
  : 0
437
436
  if (numShowPerLine === 0 && couponLength > 3) {
438
437
  checkState = true
439
438
  }
440
439
  } catch (e) {
441
440
  checkState = false
442
441
  }
443
442
  return checkState
444
443
  }
445
444
  const {
446
445
  containers = [],
447
446
  floors = [],
448
447
  clearFirstContaierMarginTop = false,
449
448
  } = pageData
450
449
  console.log('dealShopContentData:', pageData, 'isvdev:', isvdev)
451
450
  const getThisTimeKey = Date.now()
452
451
  let shopContentContainerListData = containers?.filter(
453
452
  (item) => (!isvdev && item.typeCode !== 'mShopHeader') || isvdev,
454
453
  )
455
454
  const shopContentFloorListData = floors?.filter(
456
455
  ({ floorPosition }) =>
457
456
  (!isvdev && floorPosition !== 'header' && floorPosition !== 'footer') ||
458
457
  isvdev,
459
458
  )
460
459
  const unableIsvContainerListData = getUnableIsvContainerListData(
461
460
  shopContentFloorListData,
462
461
  shopContentContainerListData,
463
462
  exceptionReportFn,
464
463
  )
465
464
  shopContentContainerListData.forEach((item, index) => {
466
465
  item.key = `${getThisTimeKey + index}`
467
466
  item.floors = []
468
467
  item.includeUids &&
469
468
  item.includeUids.forEach((floorUid) => {
470
469
  const getFloorData = shopContentFloorListData.find(
471
470
  (floorItem) => floorItem.uid === floorUid,
472
471
  )
473
472
  if (getFloorData) {
474
473
  const changeFloorData = {
475
474
  containerId: item.containerId,
476
475
  containerIndex: index,
477
476
  ...getFloorData,
478
477
  }
479
478
  const getCheckMoreCouponState =
480
479
  checkCouponAndChangeContainerSetData(getFloorData)
481
480
  if (getCheckMoreCouponState) {
482
481
  item.marginLeft && (item.marginLeft = 0)
483
482
  item.marginRight && (item.marginRight = 0)
484
483
  item.borderRadius && (item.borderRadius = 0)
485
484
  }
486
485
  item.floors.push(changeFloorData)
487
486
  }
488
487
  })
489
488
  if (
490
489
  ((!isvdev && index === 0) || (isvdev && index === 1)) &&
491
490
  item?.containerPosition == 'content' &&
492
491
  item?.marginBottom > 0 &&
493
492
  !clearFirstContaierMarginTop
494
493
  ) {
495
494
  item.marginTop = item.marginBottom
496
495
  }
497
496
  })
498
497
  if(isProd && isWxMinAndWxapp){
499
498
  shopContentContainerListData = shopContentContainerListData.filter(
500
499
  (item) =>
501
500
  item.floors.length > 0 &&
502
501
  !isIsvContainer(item.containerId, shopContentFloorListData, shopContentContainerListData)
503
502
  )
504
503
  }
505
504
  shopContentContainerListData = [].concat(shopContentContainerListData)
506
505
  return {
507
506
  shopContentContainerListData,
508
507
  shopContentFloorListData,
509
508
  }
510
509
  const changeOpts = {
511
510
  title: '',
512
511
  icon: 'success',
513
512
  duration: 1500,
514
513
  mask: true,
515
514
  ...options,
516
515
  }
517
516
  if (changeOpts.title.length > 7) {
518
517
  showNormalToast(options)
519
518
  } else {
520
519
  Taro.showToast(changeOpts as any)
521
520
  }
522
521
  const changeOpts = {
523
522
  title: '',
524
523
  icon: 'error',
525
524
  duration: 1500,
526
525
  mask: true,
527
526
  ...options,
528
527
  }
529
528
  if (changeOpts.title.length > 7) {
530
529
  showNormalToast(options)
531
530
  } else {
532
531
  Taro.showToast(changeOpts as any)
533
532
  }
534
533
  Taro.showToast({
535
534
  title: '',
536
535
  icon: 'none',
537
536
  duration: 1500,
538
537
  mask: true,
539
538
  ...options,
540
539
  })
541
540
  return Taro.showLoading({
542
541
  title: text,
543
542
  })
544
543
  return new Promise(() => {
545
544
  Taro.nextTick(() => {
546
545
  setTimeout(() => {
547
546
  Taro.hideLoading(options)
548
547
  }, 300)
549
548
  })
550
549
  })
551
550
  return CHANNEL_TYPE[JDShopViewBusinessPathType.HOME]
552
551
  const {
553
552
  tabActive = SECTION_HOME_TAB_NAME_TYPE[
554
553
  SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN
555
554
  ],
556
555
  sceneId,
557
556
  } = query
558
557
  let changeTabActive = tabActive
559
558
  if (sceneId) {
560
559
  if (isH5) {
561
560
  if (sceneId == '1002') {
562
561
  changeTabActive =
563
562
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PRODUCT]
564
563
  }
565
564
  else if (sceneId == '1003') {
566
565
  changeTabActive =
567
566
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_ACTIVITY]
568
567
  }
569
568
  } else if (isWxMinAndWxapp) {
570
569
  if (sceneId == '1001' || sceneId == '1002') {
571
570
  changeTabActive =
572
571
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PRODUCT]
573
572
  }
574
573
  else if (sceneId == '1003') {
575
574
  changeTabActive =
576
575
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PROMOTION]
577
576
  }
578
577
  }
579
578
  }
580
579
  if (SECTION_HOME_TAB_QUERY_TYPE[changeTabActive]) {
581
580
  return {
582
581
  menuType: SHOP_MENU_ID_TYPE.HOME,
583
582
  tabActiveType: SECTION_HOME_TAB_QUERY_TYPE[changeTabActive],
584
583
  queryMenuTabActiveStr: `${SHOP_MENU_ID_TYPE.HOME}@${SECTION_HOME_TAB_QUERY_TYPE[changeTabActive]}`,
585
584
  }
586
585
  } else if (SHOP_MENU_ID_QUERY_NAME[changeTabActive]) {
587
586
  return {
588
587
  menuType: SHOP_MENU_ID_QUERY_NAME[changeTabActive],
589
588
  tabActiveType: 0,
590
589
  queryMenuTabActiveStr: `${SHOP_MENU_ID_QUERY_NAME[changeTabActive]}@0`,
591
590
  }
592
591
  } else {
593
592
  return {
594
593
  menuType: SHOP_MENU_ID_TYPE.HOME,
595
594
  tabActiveType: SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN,
596
595
  queryMenuTabActiveStr: `${SHOP_MENU_ID_TYPE.HOME}@${SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN}`,
597
596
  }
598
597
  }
599
598
  const deleteKeyList = [
600
599
  '$taroTimestamp',
601
600
  'cookie',
602
601
  'wdref',
603
602
  'navStart',
604
603
  'originOpts',
605
604
  'originParams',
606
605
  'originUrl',
607
606
  'referer',
608
607
  'stamp',
609
608
  ]
610
609
  let changeQueryData: any = { ...queryData }
611
610
  const qrCodeScene = changeQueryData?.scene ? changeQueryData?.scene : false
612
611
  const sceneQuery =
613
612
  qrCodeScene && typeof qrCodeScene == 'string'
614
613
  ? parseQueryUrlString(decodeURIComponent(qrCodeScene))
615
614
  : {}
616
615
  changeQueryData = { ...changeQueryData, ...sceneQuery }
617
616
  deleteKeyList.forEach((key) => {
618
617
  changeQueryData[key] && delete changeQueryData[key]
619
618
  })
620
619
  changeQueryData['shopid'] &&
621
620
  (changeQueryData['shopId'] = changeQueryData['shopid']) &&
622
621
  delete changeQueryData['shopid']
623
622
  changeQueryData['venderid'] &&
624
623
  (changeQueryData['venderId'] = changeQueryData['venderid']) &&
625
624
  delete changeQueryData['venderid']
626
625
  changeQueryData['vendorId'] &&
627
626
  (changeQueryData['venderId'] = changeQueryData['vendorId']) &&
628
627
  delete changeQueryData['vendorId']
629
628
  return changeQueryData
630
629
  const modularPackResult = floorData?.floorExtInfo?.modularPackResult
631
630
  const modularPackResultObj = formatPackResult(modularPackResult)
632
631
  const bundleUrl = getBundleUrl(modularPackResultObj)
633
632
  const bundleFileName = getBundleFileName(modularPackResultObj)
634
633
  if (bundleUrl && bundleFileName) {
635
634
  isUsable = true
636
635
  }
637
636
  const objContainer = containerListData.find(
638
637
  (item) => item.containerId === containerId,
639
638
  )
640
639
  return (
641
640
  objContainer?.includeUids?.some((itemUid) => {
642
641
  const objectFloor = floorListData.find(
643
642
  (floorItem) => itemUid === floorItem.uid,
644
643
  )
645
644
  return RemoteLoadFloorList.includes(objectFloor?.floorExtInfo?.moduleFlag)
646
645
  }) ?? false
647
646
  )
648
647
  floorListData,
649
648
  containerListData,
650
649
  exceptionReportFn?,
651
650
  const unableIsvFloorListData = floorListData.filter(
652
651
  (floorItem) =>
653
652
  RemoteLoadFloorList.includes(floorItem?.floorExtInfo?.moduleFlag) &&
654
653
  !isIsvFloorUseable(floorItem, exceptionReportFn),
655
654
  )
656
655
  const unableIsvFloorUidList = unableIsvFloorListData.map(
657
656
  (floorItem) => floorItem.uid,
658
657
  )
659
658
  const unableIsvContainerListData = containerListData.filter(
660
659
  (item) =>
661
660
  item.includeUids &&
662
661
  item.includeUids.every(
663
662
  (itemUid) => unableIsvFloorUidList.indexOf(itemUid) != -1,
664
663
  ),
665
664
  )
666
665
  return unableIsvContainerListData
667
666
  return customObj
668
667
  isChartH5,
669
668
  isH5AndJdShopViewH5Scroll,
670
669
  isMemberPage,
670
+ import Taro from '@tarojs/taro'
671
671
  SHOP_MENU_ID_TYPE,
672
672
  SHOP_MENU_ID_QUERY_NAME,
673
673
  SECTION_HOME_TAB_TYPE,
674
674
  SECTION_HOME_TAB_NAME_TYPE,
675
675
  SECTION_HOME_TAB_QUERY_TYPE,
676
676
  CHANNEL_TYPE,
677
677
  JDShopViewBusinessPathType,
678
678
  FloorModuleType,
679
679
  RemoteLoadFloorList,
680
680
  getBundleUrl,
681
681
  getBundleFileName,
682
682
  formatPackResult,
683
683
  const resultList: Array<any> = [],
684
684
  arrLen = arr.length
685
685
  if (arrLen) {
686
686
  if (arrLen > size) {
687
687
  for (let i = 0; i < arrLen; i = i + size) {
688
688
  resultList.push(arr.slice(i, i + size))
689
689
  }
690
690
  } else {
691
691
  resultList.push(arr)
692
692
  }
693
693
  }
694
694
  return resultList
695
695
  let _address = ids
696
696
  const _areaAreaSplit = ids.split('.')
697
697
  const _areaAreaSplit2 = ids.split('_')
698
698
  _address = _areaAreaSplit.length === 2 ? _areaAreaSplit[0] : _address
699
699
  _address = _areaAreaSplit2.length === 3 ? `${_areaAreaSplit2}_0` : _address
700
700
  return _address
701
701
  const getValue = `${obj[key]}`.replace(/undefined/,'').replace(/null/,'')
702
702
  paramStr += `${index === 0 ? '' : '&'}${key}=${encodeURIComponent(getValue)}`
703
703
  const result = {}
704
704
  if (
705
705
  !urlOrQueryStr ||
706
706
  ('string' !== typeof urlOrQueryStr && String !== urlOrQueryStr.constructor)
707
707
  ) {
708
708
  return result
709
709
  }
710
710
  if (urlOrQueryStr.indexOf('?') > -1) {
711
711
  const queryStr = urlOrQueryStr.split('?')
712
712
  const queryItemList =
713
713
  queryStr && queryStr.length > 1 ? queryStr[1].split('&') : []
714
714
  const queryItemListLen = queryItemList.length
715
715
  queryItemListLen > 0 &&
716
716
  queryItemList.forEach((item) => {
717
717
  const thisItemList = item.split('=')
718
718
  result[thisItemList[0]] = thisItemList[1]
719
719
  })
720
720
  } else {
721
721
  const queryItemList =
722
722
  urlOrQueryStr.indexOf('&') > -1
723
723
  ? urlOrQueryStr.split('&')
724
724
  : [urlOrQueryStr]
725
725
  const queryItemListLen = queryItemList.length
726
726
  queryItemListLen > 0 &&
727
727
  queryItemList.forEach((item) => {
728
728
  const thisItemList = item.split('=')
729
729
  result[thisItemList[0]] = thisItemList[1]
730
730
  })
731
731
  }
732
732
  return result
733
733
  url: string,
734
734
  size?: {
735
735
  w: number
736
736
  h: number
737
737
  },
738
738
  quality?: number,
739
739
  if (url && size) {
740
740
  const _w = Math.floor(size.w)
741
741
  const _h = Math.floor(size.h)
742
742
  if (url.match(/gif$/i)) {
743
743
  return url
744
744
  } else {
745
745
  if (_w > 0 && _h > 0) {
746
746
  url = url.replace('jfs/', `s${_w}x${_h}_jfs/`)
747
747
  }
748
748
  url += quality != null ? `!q${quality}.dpg` : '.dpg'
749
749
  }
750
750
  }
751
751
  return url
752
752
  url: string,
753
753
  jfsImgInfo: UtilsInterFace.getJfsImageInfo = {},
754
754
  if (url.match(/\.(jpg|png|dpg)$/i)) {
755
755
  const { width, height, quality } = jfsImgInfo
756
756
  if (typeof width === 'number' || typeof height === 'number') {
757
757
  url = url.replace(
758
758
  '/jfs/',
759
759
  `/s${Math.floor(width || 0)}x${Math.floor(height || 0)}_jfs/`,
760
760
  )
761
761
  }
762
762
  if (
763
763
  typeof quality === 'number' &&
764
764
  quality > 0 &&
765
765
  quality < 100 &&
766
766
  url.match(/\.jpg$/i)
767
767
  ) {
768
768
  url += `!q${quality}.dpg`
769
769
  }
770
770
  }
771
771
  return addHttps(url)
772
772
  if(!imgUrl.includes('360buyimg.com')){
773
773
  imgUrl = '//m.360buyimg.com/cms/' + imgUrl
774
774
  }
775
775
  if(quality != 100) imgUrl += /\.png/.test(imgUrl) ? '.dpg' : `!q${quality}`
776
776
  count: number,
777
777
  fixedNum = 2,
778
778
  unit = '万',
779
779
  maxNum = 10000,
780
780
  count = Number(count)
781
781
  if (count > maxNum) {
782
782
  return (count / maxNum).toFixed(fixedNum) + unit
783
783
  }
784
784
  return count
785
785
  key: string,
786
786
  value: string | object,
787
787
  successBack?: any,
788
788
  failBack?: any,
789
789
  return Taro.setStorage({
790
790
  key: key,
791
791
  data: value,
792
792
  success: successBack,
793
793
  fail: failBack,
794
794
  })
795
795
  return Taro.getStorageSync(key)
796
796
  return Taro.removeStorage({
797
797
  key: key,
798
798
  })
799
799
  return Taro.clearStorage()
800
800
  const systemInfo: UtilsInterFace.taroGetSystemInfoSyncRes = getSystemInfo || {
801
801
  platform: '',
802
802
  model: '',
803
803
  system: '',
804
804
  }
805
805
  const isIOS = !!systemInfo.system.match(/ios/i)
806
806
  const isAndroid = !!systemInfo.system.match(/android/i)
807
807
  if (!systemInfo.statusBarHeight) {
808
808
  systemInfo.statusBarHeight = screenHeight - windowHeight - 20
809
809
  systemInfo.navBarExtendHeight = 0
810
810
  } else {
811
811
  if (isIOS) {
812
812
  systemInfo.navBarExtendHeight = 4
813
813
  } else {
814
814
  systemInfo.navBarExtendHeight = 0
815
815
  }
816
816
  }
817
817
  let rect = Taro.getMenuButtonBoundingClientRect
818
818
  ? Taro.getMenuButtonBoundingClientRect()
819
819
  : null
820
820
  if (!rect || !rect.width || !rect.top || !rect.left || !rect.height) {
821
821
  let gap = 0
822
822
  let width = 96
823
823
  if (systemInfo.platform === 'android') {
824
824
  gap = 8
825
825
  width = 96
826
826
  } else if (systemInfo.platform === 'devtools') {
827
827
  if (isIOS) {
828
828
  gap = 5.5
829
829
  } else {
830
830
  gap = 7.5
831
831
  }
832
832
  } else {
833
833
  gap = 4
834
834
  width = 88
835
835
  }
836
836
  rect = {
837
837
  bottom: systemInfo.statusBarHeight + gap + 32,
838
838
  height: 32,
839
839
  left: systemInfo.windowWidth - width - 10,
840
840
  right: systemInfo.windowWidth - 10,
841
841
  top: systemInfo.statusBarHeight + gap,
842
842
  width,
843
843
  }
844
844
  }
845
845
  const gap = rect.top - systemInfo.statusBarHeight
846
846
  systemInfo.navBarTopToStatusBar = gap
847
847
  systemInfo.navBarHeight = 2 * gap + rect.height
848
848
  systemInfo.capsulePosition = rect
849
849
  systemInfo.isIOS = isIOS
850
850
  systemInfo.isAndroid = isAndroid
851
851
  return systemInfo
852
852
  if (str.match(/^\/\//)) {
853
853
  str = 'https:' + str
854
854
  }
855
855
  return str
856
856
  dateTimeOrdate: Date | string | number | null,
857
857
  format = 'yyyy-MM-dd HH:mm:ss',
858
858
  noPadStart = {
859
859
  M: '0',
860
860
  d: '0',
861
861
  H: '0',
862
862
  m: '0',
863
863
  s: '0',
864
864
  },
865
865
  let dateResult = ''
866
866
  const padStarts = Object.assign(
867
867
  {
868
868
  M: '0',
869
869
  d: '0',
870
870
  H: '0',
871
871
  m: '0',
872
872
  s: '0',
873
873
  },
874
874
  noPadStart,
875
875
  )
876
876
  if (dateTimeOrdate) {
877
877
  let changeDateTimeOrdate = dateTimeOrdate
878
878
  const getChangeDateTimeToNumber = Number(changeDateTimeOrdate)
879
879
  if (getChangeDateTimeToNumber) {
880
880
  changeDateTimeOrdate = getChangeDateTimeToNumber
881
881
  } else {
882
882
  changeDateTimeOrdate = `${changeDateTimeOrdate}`.replace(/-/g, '/')
883
883
  }
884
884
  const nowDate =
885
885
  dateTimeOrdate instanceof Date
886
886
  ? dateTimeOrdate
887
887
  : new Date(changeDateTimeOrdate)
888
888
  const dateMap = {
889
889
  y: `${nowDate.getFullYear()}`,
890
890
  M: `${nowDate.getMonth() + 1}`.padStart(2, padStarts['M']),
891
891
  d: `${nowDate.getDate()}`.padStart(2, padStarts['d']),
892
892
  H: `${nowDate.getHours()}`.padStart(2, padStarts['H']),
893
893
  m: `${nowDate.getMinutes()}`.padStart(2, padStarts['m']),
894
894
  s: `${nowDate.getSeconds()}`.padStart(2, padStarts['s']),
895
895
  }
896
896
  const regDate = new RegExp('y+|M+|d+|H+|m+|s+', 'g')
897
897
  const regYear = new RegExp('y')
898
898
  dateResult = format.replace(regDate, (v) => {
899
899
  let changeValue = v
900
900
  if (regYear.test(changeValue)) {
901
901
  const thisYear = dateMap.y
902
902
  const subValueLen = 4 - changeValue.length
903
903
  changeValue = thisYear.substr(subValueLen)
904
904
  } else {
905
905
  const dateKey = v.substr(0, 1)
906
906
  changeValue = dateMap[dateKey]
907
907
  }
908
908
  return changeValue
909
909
  })
910
910
  }
911
911
  return dateResult
912
912
  let timer: any = null
913
913
  let startTime = Date.now()
914
914
  return function () {
915
915
  const curTime = Date.now()
916
916
  const remaining = delay - (curTime - startTime)
917
917
  const context = this
918
918
  const args = arguments
919
919
  clearTimeout(timer)
920
920
  if (remaining <= 0) {
921
921
  func.apply(context, args)
922
922
  startTime = Date.now()
923
923
  } else {
924
924
  timer = setTimeout(func, remaining)
925
925
  }
926
926
  }
927
927
  let context, args, result
928
928
  let timeout = null
929
929
  let previous = 0
930
930
  if (!options) options = {}
931
931
  const later = function () {
932
932
  previous = options.leading === false ? 0 : Date.now()
933
933
  timeout = null
934
934
  result = func.apply(context, args)
935
935
  if (!timeout) context = args = null
936
936
  }
937
937
  return function () {
938
938
  const now = Date.now()
939
939
  if (!previous && options.leading === false) previous = now
940
940
  const remaining = wait - (now - previous)
941
941
  context = this
942
942
  args = arguments
943
943
  if (remaining <= 0 || remaining > wait) {
944
944
  if (timeout) {
945
945
  clearTimeout(timeout)
946
946
  timeout = null
947
947
  }
948
948
  previous = now
949
949
  result = func.apply(context, args)
950
950
  if (!timeout) context = args = null
951
951
  } else if (!timeout && options.trailing !== false) {
952
952
  timeout = setTimeout(later, remaining)
953
953
  }
954
954
  return result
955
955
  }
956
956
  let timer: any = null
957
957
  return function () {
958
958
  const context: any = this
959
959
  const args = arguments
960
960
  timer && clearTimeout(timer)
961
961
  timer = setTimeout(function () {
962
962
  fn.apply(context, args)
963
963
  }, delay)
964
964
  }
965
965
  if (txt) {
966
966
  txt = txt.trim()
967
967
  const reg = new RegExp(/[\d-]+/)
968
968
  const res = reg.exec(txt)
969
969
  if (res && res.length > 0) {
970
970
  let tel = res[0]
971
971
  if (tel && delSeparator) {
972
972
  tel = tel.replace(/-/g, '')
973
973
  }
974
974
  return tel
975
975
  }
976
976
  }
977
977
  return ''
978
978
  if (rgb) {
979
979
  const reg = /^(rgb|RGB)/
980
980
  const color = rgb
981
981
  if (reg.test(color)) {
982
982
  let strHex = '#'
983
983
  const colorArr = color.replace(/(?:\(|\)|rgb|RGB)*/g, '').split(',')
984
984
  for (let i = 0; i < colorArr.length; i++) {
985
985
  let hex = Number(colorArr[i]).toString(16)
986
986
  if (hex === '0') {
987
987
  hex += hex
988
988
  }
989
989
  strHex += hex
990
990
  }
991
991
  return strHex
992
992
  } else {
993
993
  return String(color)
994
994
  }
995
995
  } else {
996
996
  return ''
997
997
  }
998
998
  if (hex) {
999
999
  const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/
1000
1000
  let color = hex.toLowerCase()
1001
1001
  if (reg.test(color)) {
1002
1002
  if (color.length === 4) {
1003
1003
  let colorNew = '#'
1004
1004
  for (let i = 1; i < 4; i += 1) {
1005
1005
  colorNew += color.slice(i, i + 1).concat(color.slice(i, i + 1))
1006
1006
  }
1007
1007
  color = colorNew
1008
1008
  }
1009
1009
  const colorChange: number[] = []
1010
1010
  for (let i = 1; i < 7; i += 2) {
1011
1011
  colorChange.push(parseInt('0x' + color.slice(i, i + 2)))
1012
1012
  }
1013
1013
  if (returnList) {
1014
1014
  return colorChange
1015
1015
  } else {
1016
1016
  return 'RGB(' + colorChange.join(',') + ')'
1017
1017
  }
1018
1018
  } else {
1019
1019
  return color
1020
1020
  }
1021
1021
  } else {
1022
1022
  return ''
1023
1023
  }
1024
1024
  n: number,
1025
1025
  m: number,
1026
1026
  filterNum: number | undefined = undefined,
1027
1027
  const c = m - n + 1
1028
1028
  const res = Math.floor(Math.random() * c + n)
1029
1029
  if (filterNum && filterNum == res) {
1030
1030
  console.log('随机数二次开始', res, filterNum)
1031
1031
  return getRandom(n, m, filterNum)
1032
1032
  } else {
1033
1033
  return res
1034
1034
  }
1035
1035
  wqCookieStr: string
1036
1036
  wqCookie: {
1037
1037
  pin?: string
1038
1038
  visitkey?: string
1039
1039
  [key: string]: any
1040
1040
  }
1041
1041
  const {
1042
1042
  jdpin,
1043
1043
  pinStatus,
1044
1044
  visitkey,
1045
1045
  unionid,
1046
1046
  skey,
1047
1047
  __jda,
1048
1048
  __jdv,
1049
1049
  __wga,
1050
1050
  wxapp_type,
1051
1051
  appType
1052
1052
  } = cookie
1053
1053
  const ret: string[] = []
1054
1054
  const getUserCookieObj = {}
1055
1055
  const createUseCookieArr = [
1056
1056
  jdpin,
1057
1057
  pinStatus,
1058
1058
  visitkey,
1059
1059
  unionid,
1060
1060
  skey,
1061
1061
  __jda,
1062
1062
  __jdv,
1063
1063
  __wga,
1064
1064
  wid,
1065
1065
  wq_skey,
1066
1066
  wq_uin,
1067
1067
  wq_auth_token,
1068
1068
  wxapp_scene,
1069
1069
  wq_unionid,
1070
1070
  wxapp_openid,
1071
1071
  wxapp_version,
1072
1072
  wxapp_type,
1073
1073
  appType
1074
1074
  name = name === 'jdpin' ? 'pin' : name;
1075
1075
  name === 'pin' && (ret.push(`pt_pin=${encodeURIComponent(value)}`))
1076
1076
  ret.push(`${name}=${encodeURIComponent(value)}`)
1077
1077
  getUserCookieObj[name] = value
1078
1078
  }
1079
1079
  })
1080
1080
  return {
1081
1081
  wqCookieStr: ret.join(';'),
1082
1082
  wqCookie: getUserCookieObj,
1083
1083
  }
1084
1084
  num,
1085
1085
  widthSize = 375,
1086
1086
  layoutWidth = windowWidth,
1087
1087
  const getNum = Number(num)
1088
1088
  return Math.round((getNum / widthSize) * layoutWidth)
1089
1089
  let checkState = false
1090
1090
  const couponFloorModuleType = floorData?.floorExtInfo?.moduleFlag
1091
1091
  if (couponFloorModuleType === FloorModuleType.COUPON) {
1092
1092
  try {
1093
1093
  const dataDefines = getFloorDataToDataDefines(floorData)
1094
1094
  const couponDataDefine = dataDefines
1095
1095
  ? dataDefines.filter((item) => {
1096
1096
  return item.type === 'coupon'
1097
1097
  })
1098
1098
  : [],
1099
1099
  couponList = couponDataDefine[0]?.nodeText?.data
1100
1100
  ? couponDataDefine[0]?.nodeText?.data
1101
1101
  : [],
1102
1102
  couponLength = couponList.length,
1103
1103
  numShowPerLine = couponDataDefine[0]?.nodeText?.numShowPerLine
1104
1104
  ? couponDataDefine[0]?.nodeText?.numShowPerLine
1105
1105
  : 0
1106
1106
  if (numShowPerLine === 0 && couponLength > 3) {
1107
1107
  checkState = true
1108
1108
  }
1109
1109
  } catch (e) {
1110
1110
  checkState = false
1111
1111
  }
1112
1112
  return checkState
1113
1113
  }
1114
1114
  exceptionReportFn
1115
1115
  if(getFloorData?.floorExtInfo?.floorLoadWay === 2){
1116
1116
  const getSysFloorToLoadTypeRes = isIsvFloorUseable(getFloorData, exceptionReportFn)
1117
1117
  !getSysFloorToLoadTypeRes && (getFloorData.floorExtInfo.floorLoadWay = 1)
1118
1118
  }
1119
1119
  if(isProd && isWxMinAndWxapp){
1120
1120
  shopContentContainerListData = shopContentContainerListData.filter(
1121
1121
  (item) =>
1122
1122
  item.floors.length > 0 &&
1123
1123
  !isIsvContainer(item.containerId, shopContentFloorListData, shopContentContainerListData)
1124
1124
  )
1125
1125
  }
1126
1126
  shopContentContainerListData = [].concat(shopContentContainerListData)
1127
1127
  return {
1128
1128
  shopContentContainerListData,
1129
1129
  shopContentFloorListData,
1130
1130
  }
1131
1131
  const changeOpts = {
1132
1132
  title: '',
1133
1133
  icon: 'success',
1134
1134
  duration: 1500,
1135
1135
  mask: true,
1136
1136
  ...options,
1137
1137
  }
1138
1138
  if (changeOpts.title.length > 7) {
1139
1139
  showNormalToast(options)
1140
1140
  } else {
1141
1141
  Taro.showToast(changeOpts as any)
1142
1142
  }
1143
1143
  const changeOpts = {
1144
1144
  title: '',
1145
1145
  icon: 'error',
1146
1146
  duration: 1500,
1147
1147
  mask: true,
1148
1148
  ...options,
1149
1149
  }
1150
1150
  if (changeOpts.title.length > 7) {
1151
1151
  showNormalToast(options)
1152
1152
  } else {
1153
1153
  Taro.showToast(changeOpts as any)
1154
1154
  }
1155
1155
  Taro.showToast({
1156
1156
  title: '',
1157
1157
  icon: 'none',
1158
1158
  duration: 1500,
1159
1159
  mask: true,
1160
1160
  ...options,
1161
1161
  })
1162
1162
  return Taro.showLoading({
1163
1163
  title: text,
1164
1164
  })
1165
1165
  return new Promise(() => {
1166
1166
  Taro.nextTick(() => {
1167
1167
  setTimeout(() => {
1168
1168
  Taro.hideLoading(options)
1169
1169
  }, 300)
1170
1170
  })
1171
1171
  })
1172
1172
  return CHANNEL_TYPE[JDShopViewBusinessPathType.HOME]
1173
1173
  const {
1174
1174
  tabActive = SECTION_HOME_TAB_NAME_TYPE[
1175
1175
  SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN
1176
1176
  ],
1177
1177
  sceneId,
1178
1178
  } = query
1179
1179
  let changeTabActive = tabActive
1180
1180
  if (sceneId) {
1181
1181
  if (isH5) {
1182
1182
  if (sceneId == '1002') {
1183
1183
  changeTabActive =
1184
1184
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PRODUCT]
1185
1185
  }
1186
1186
  else if (sceneId == '1003') {
1187
1187
  changeTabActive =
1188
1188
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_ACTIVITY]
1189
1189
  }
1190
1190
  } else if (isWxMinAndWxapp) {
1191
1191
  if (sceneId == '1001' || sceneId == '1002') {
1192
1192
  changeTabActive =
1193
1193
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PRODUCT]
1194
1194
  }
1195
1195
  else if (sceneId == '1003') {
1196
1196
  changeTabActive =
1197
1197
  SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PROMOTION]
1198
1198
  }
1199
1199
  }
1200
1200
  }
1201
1201
  if (SECTION_HOME_TAB_QUERY_TYPE[changeTabActive]) {
1202
1202
  return {
1203
1203
  menuType: SHOP_MENU_ID_TYPE.HOME,
1204
1204
  tabActiveType: SECTION_HOME_TAB_QUERY_TYPE[changeTabActive],
1205
1205
  queryMenuTabActiveStr: `${SHOP_MENU_ID_TYPE.HOME}@${SECTION_HOME_TAB_QUERY_TYPE[changeTabActive]}`,
1206
1206
  }
1207
1207
  } else if (SHOP_MENU_ID_QUERY_NAME[changeTabActive]) {
1208
1208
  return {
1209
1209
  menuType: SHOP_MENU_ID_QUERY_NAME[changeTabActive],
1210
1210
  tabActiveType: 0,
1211
1211
  queryMenuTabActiveStr: `${SHOP_MENU_ID_QUERY_NAME[changeTabActive]}@0`,
1212
1212
  }
1213
1213
  } else {
1214
1214
  return {
1215
1215
  menuType: SHOP_MENU_ID_TYPE.HOME,
1216
1216
  tabActiveType: SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN,
1217
1217
  queryMenuTabActiveStr: `${SHOP_MENU_ID_TYPE.HOME}@${SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN}`,
1218
1218
  }
1219
1219
  }
1220
1220
  const deleteKeyList = [
1221
1221
  '$taroTimestamp',
1222
1222
  'cookie',
1223
1223
  'wdref',
1224
1224
  'navStart',
1225
1225
  'originOpts',
1226
1226
  'originParams',
1227
1227
  'originUrl',
1228
1228
  'referer',
1229
1229
  'stamp',
1230
1230
  ]
1231
1231
  let changeQueryData: any = { ...queryData }
1232
1232
  const qrCodeScene = changeQueryData?.scene ? changeQueryData?.scene : false
1233
1233
  const sceneQuery =
1234
1234
  qrCodeScene && typeof qrCodeScene == 'string'
1235
1235
  ? parseQueryUrlString(decodeURIComponent(qrCodeScene))
1236
1236
  : {}
1237
1237
  changeQueryData = { ...changeQueryData, ...sceneQuery }
1238
1238
  deleteKeyList.forEach((key) => {
1239
1239
  changeQueryData[key] && delete changeQueryData[key]
1240
1240
  })
1241
1241
  changeQueryData['shopid'] &&
1242
1242
  (changeQueryData['shopId'] = changeQueryData['shopid']) &&
1243
1243
  delete changeQueryData['shopid']
1244
1244
  changeQueryData['venderid'] &&
1245
1245
  (changeQueryData['venderId'] = changeQueryData['venderid']) &&
1246
1246
  delete changeQueryData['venderid']
1247
1247
  changeQueryData['vendorId'] &&
1248
1248
  (changeQueryData['venderId'] = changeQueryData['vendorId']) &&
1249
1249
  delete changeQueryData['vendorId']
1250
1250
  return changeQueryData
1251
1251
  const modularPackResult = floorData?.floorExtInfo?.modularPackResult
1252
1252
  const modularPackResultObj = formatPackResult(modularPackResult)
1253
1253
  const bundleUrl = getBundleUrl(modularPackResultObj)
1254
1254
  const bundleFileName = getBundleFileName(modularPackResultObj)
1255
1255
  if (bundleUrl && bundleFileName) {
1256
1256
  isUsable = true
1257
1257
  }
1258
1258
  const objContainer = containerListData.find(
1259
1259
  (item) => item.containerId === containerId,
1260
1260
  )
1261
1261
  return (
1262
1262
  objContainer?.includeUids?.some((itemUid) => {
1263
1263
  const objectFloor = floorListData.find(
1264
1264
  (floorItem) => itemUid === floorItem.uid,
1265
1265
  )
1266
1266
  return RemoteLoadFloorList.includes(objectFloor?.floorExtInfo?.moduleFlag)
1267
1267
  }) ?? false
1268
1268
  )
1269
1269
  floorListData,
1270
1270
  containerListData,
1271
1271
  exceptionReportFn?,
1272
1272
  const unableIsvFloorListData = floorListData.filter(
1273
1273
  (floorItem) =>
1274
1274
  RemoteLoadFloorList.includes(floorItem?.floorExtInfo?.moduleFlag) &&
1275
1275
  !isIsvFloorUseable(floorItem, exceptionReportFn),
1276
1276
  )
1277
1277
  const unableIsvFloorUidList = unableIsvFloorListData.map(
1278
1278
  (floorItem) => floorItem.uid,
1279
1279
  )
1280
1280
  const unableIsvContainerListData = containerListData.filter(
1281
1281
  (item) =>
1282
1282
  item.includeUids &&
1283
1283
  item.includeUids.every(
1284
1284
  (itemUid) => unableIsvFloorUidList.indexOf(itemUid) != -1,
1285
1285
  ),
1286
1286
  )
1287
1287
  return unableIsvContainerListData
1288
1288
  return customObj
1289
1289
  isChartH5,
1290
1290
  isH5AndJdShopViewH5Scroll,
1291
1291
  isMemberPage,
1292
1292
  isPc,
1293
1293
  ipLoc_djd,