@conecli/cone-render 0.10.1-isv2.2 → 0.10.1-isv2.4

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 (65) hide show
  1. package/dist/api/index.ts +1 -1
  2. package/dist/common/const.ts +1 -1
  3. package/dist/common/index.h5.ts +1 -1
  4. package/dist/common/index.jd.ts +1 -1
  5. package/dist/common/index.ts +1 -1
  6. package/dist/common/index.weapp.ts +1 -1
  7. package/dist/common/jssdk.ts +1 -1
  8. package/dist/common/token/index.h5.ts +1 -1
  9. package/dist/common/token/token.jd.ts +1 -1
  10. package/dist/common/wxappApi.ts +1 -1
  11. package/dist/components/base/CommonFloorHead/index.module.scss +126 -111
  12. package/dist/components/base/CommonFloorHead/index.tsx +1 -1
  13. package/dist/components/base/CustomScrollView/index-back.tsx +1 -0
  14. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  15. package/dist/components/base/Dialog/index.module.scss +11 -0
  16. package/dist/components/base/ExposureSmart/index.h5.module.scss +12 -2
  17. package/dist/components/base/ExposureSmart/index.h5.tsx +1 -1
  18. package/dist/components/base/ExposureSmart/reporter.tsx +1 -1
  19. package/dist/components/base/InViewRender/index.tsx +1 -1
  20. package/dist/components/base/ItemViewExposureSmart/index.module.scss +2 -2
  21. package/dist/components/base/ItemViewExposureSmart/index.tsx +1 -1
  22. package/dist/components/debug/DebugLayout/index.module.scss +2 -2
  23. package/dist/components/floorItem.weapp.tsx +1 -1
  24. package/dist/interface/common.ts +1 -1
  25. package/dist/interface/jumpEventReport.ts +1 -1
  26. package/dist/interface/service.ts +1 -1
  27. package/dist/jumpEventReport/base.ts +1 -1
  28. package/dist/jumpEventReport/const.ts +1 -1
  29. package/dist/jumpEventReport/index.weapp.ts +1 -1
  30. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  31. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  32. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  33. package/dist/jumpEventReport/web/report.ts +1 -1
  34. package/dist/jumpEventReport/web.base.ts +1 -1
  35. package/dist/jumpEventReport/web.jd.ts +1 -1
  36. package/dist/jumpEventReport/web.wxapp.ts +1 -1
  37. package/dist/libs/taroAppReport.js +2 -2
  38. package/dist/modules/ContainerFloorList/index.h5.module.scss +66 -53
  39. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  40. package/dist/modules/ContainerFloorList/index.tsx +1 -1
  41. package/dist/open/api/environment.ts +1 -1
  42. package/dist/open/api/shopMember.ts +1 -1
  43. package/dist/open/api/util.ts +1 -1
  44. package/dist/sass/app.h5.scss +273 -224
  45. package/dist/service/fetchGateway.ts +1 -1
  46. package/dist/service/fetchGateway.weapp.ts +1 -0
  47. package/dist/service/http/colorSign.ts +1 -1
  48. package/dist/service/http/const.ts +1 -1
  49. package/dist/service/http/h5Http.ts +1 -1
  50. package/dist/service/requestServer.h5.ts +1 -1
  51. package/dist/service/requestServer.ts +1 -1
  52. package/dist/service/requestServer.weapp.ts +1 -0
  53. package/dist/utils/connectNativeJsBridge.ts +1 -1
  54. package/dist/utils/h5Utils.ts +1 -1
  55. package/dist/utils/index.h5.ts +1 -1
  56. package/dist/utils/index.ts +1 -1
  57. package/dist/utils/index.weapp.ts +1 -1
  58. package/dist/utils/jumpExtMapUtil.h5.ts +1 -0
  59. package/dist/utils/jumpExtMapUtil.ts +1 -0
  60. package/dist/utils/log.ts +1 -0
  61. package/dist/utils/sColor.js +1 -0
  62. package/dist/utils/utils.ts +1 -1
  63. package/dist/wxapp/common/address_api/address_api_v2.js +1 -0
  64. package/dist/wxapp/common/user_info.js +1 -1
  65. package/package.json +158 -141
@@ -1 +1 @@
1
- import Taro from "@tarojs/taro";
2
1
  appEid,
3
2
  userPinKey,
4
3
  jdUserLoginState,
5
4
  WXAPP_LOGIN,
6
5
  WXAPP_BIZ,
7
6
  WXAPP_USER_INFO,
8
7
  WXAPP_NAVIGATOR,
9
8
  WXAPP_REPORT_GDT,
10
9
  WXAPP_PARAMS_SIGN,
11
10
  WXAPP_FINGER_REPORT,
12
11
  WXAPP_REPORT_MANAGE,
13
12
  BUSINESS_TYPE,
14
13
  SHOP_MENU_ID_TYPE,
15
14
  SHOP_MENU_ID_NAME,
16
15
  SECTION_HOME_TAB_NAME_TYPE,
17
16
  SECTION_HOME_TAB_TYPE,
18
17
  TaroEventType,
19
18
  WX_BUSINESS_TYPE,
20
19
  WXAPP_BIZ_KEY,
21
20
  getSystemInfos,
22
21
  getTaroStorageKeyValue,
23
22
  removeTaroStorageKey,
24
23
  setTaroStorage,
25
24
  getWxAppCookieStr,
26
25
  objectToUrlEncode,
27
26
  loginState: jdUserLoginState,
28
27
  cookiesStr: "",
29
28
  userInfo: userPinKey,
30
29
  pageInfo: {
31
30
  wxBusinessType: WX_BUSINESS_TYPE.SHOP,
32
31
  address: "",
33
32
  addressCommaStr: "",
34
33
  un_area: "",
35
34
  vapptype: "1",
36
35
  pageType: "home",
37
36
  dataType: BUSINESS_TYPE.ONLINE,
38
37
  floorExposureInfo: {},
39
38
  floorVideInfo: {},
40
39
  productVideInfo: {},
41
40
  tabsLoadAllDataInfo: {
42
41
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN]]:
43
42
  false,
44
43
  [SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.CLASSIFY]]: true,
45
44
  },
46
45
  updateShopInfosAllState: false,
47
46
  isVipShop: false,
48
47
  isJdShowNativeImmersivePlayer: false,
49
48
  ...shopConfig,
50
49
  pageScrollTop: 0,
51
50
  pageIdxHeightInfo: {
52
51
  list: [],
53
52
  },
54
53
  shopNavBarHeight: 0,
55
54
  },
56
55
  defaultQueryLogInfo: {
57
56
  sourceType: "JDshop",
58
57
  sourceValue: "",
59
58
  moduleId: "none",
60
59
  entrance: "none",
61
60
  },
62
61
  originQueryInfo: {},
63
62
  sysInfo: {
64
63
  windowWidth: 0,
65
64
  windowHeight: 0,
66
65
  eid: appEid,
67
66
  netWorkType: "4g",
68
67
  jdBottomBarHeight: 0,
69
68
  jdNativeHeaderHeight: 0,
70
69
  },
71
70
  queryInfo: {},
72
71
  shopInfo: {},
73
72
  openAppData: {},
74
73
  public info: CommonInterFace.BaseConfigInfo;
75
74
  public config: {
76
75
  [key: string]: any;
77
76
  };
78
77
  public lazyContainer: CommonInterFace.lazyContainer;
79
78
  public rootEleNode: HTMLElement | null;
80
79
  public miniApplogUtil: CommonInterFace.MiniApplogUtil;
81
80
  public miniAppLogInstance: CommonInterFace.MiniAppLog | null;
82
81
  public checkStatusAndLoginPromise: object | null;
83
82
  public wxAppLoginInstance: CommonInterFace.WxAppLogin;
84
83
  public wxAppBizInstance: CommonInterFace.WxAppUserInfo;
85
84
  public wxAppUserInfoInstance: CommonInterFace.WxAppUserInfo;
86
85
  public wxAppReportManageInstance: CommonInterFace.wxAppReportManage;
87
86
  public wxAppReportGDTInstance: CommonInterFace.WxAppReportGDT;
88
87
  public wxAppNavigatorInstance: CommonInterFace.WxAppNavigator;
89
88
  public wxAppParamsSignInstance: CommonInterFace.wxAppParamsSign;
90
89
  public wxAppFingerReportInstance: CommonInterFace.wxAppParamsSign;
91
90
  public wxAppSubsGuider: CommonInterFace.wxAppParamsSign;
92
91
  public loadJsSdkList: Array<any>
93
92
  public loadJsSdkListCachePromise: any
94
93
  constructor(opt) {
95
94
  this.info = this._getConfig(opt);
96
95
  this.config = {};
97
96
  this.lazyContainer = {
98
97
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN]]: {
99
98
  appLazyContainerList: [],
100
99
  appLazyFinishContainerList: [],
101
100
  },
102
101
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PROMOTION]]: {
103
102
  appLazyContainerList: [],
104
103
  appLazyFinishContainerList: [],
105
104
  },
106
105
  };
107
106
  this.loadJsSdkList = []
108
107
  this.loadJsSdkListCachePromise = {}
109
108
  this.rootEleNode = null;
110
109
  this.miniApplogUtil = MiniAppLogUtil;
111
110
  this.miniAppLogInstance = null;
112
111
  this.checkStatusAndLoginPromise = null;
113
112
  this.wxAppLoginInstance = WXAPP_LOGIN;
114
113
  this.wxAppBizInstance = WXAPP_BIZ;
115
114
  this.wxAppUserInfoInstance = WXAPP_USER_INFO;
116
115
  this.wxAppReportManageInstance = WXAPP_REPORT_MANAGE;
117
116
  this.wxAppReportGDTInstance = WXAPP_REPORT_GDT;
118
117
  this.wxAppNavigatorInstance = WXAPP_NAVIGATOR;
119
118
  this.wxAppParamsSignInstance = WXAPP_PARAMS_SIGN;
120
119
  this.wxAppFingerReportInstance = WXAPP_FINGER_REPORT
121
120
  ? new WXAPP_FINGER_REPORT()
122
121
  : {};
123
122
  this.wxAppSubsGuider = null;
124
123
  }
125
124
  _getConfig(opt) {
126
125
  return Object.assign({}, DefaultConfig, opt);
127
126
  }
128
127
 
129
128
  taskTimeoutPromise(callBack, timeout = 2000) {
130
129
  return new Promise((resolve) => {
131
130
  setTimeout(() => {
132
131
  const getCallBackRes = typeof callBack === "function" && callBack();
133
132
  return resolve(getCallBackRes || false);
134
133
  }, timeout);
135
134
  });
136
135
  }
137
136
 
138
137
  updateBusinessDomainAndApi(domain, api) {
139
138
  }
140
139
 
141
140
  getFullScreenHeight(systemInfo) {
142
141
  const { screenHeight, statusBarHeight, isAndroid } = systemInfo;
143
142
  let result = screenHeight;
144
143
  if (statusBarHeight > 20 && isAndroid) {
145
144
  result = screenHeight + statusBarHeight;
146
145
  }
147
146
  return result;
148
147
  }
149
148
 
150
149
  getTabBarHeight(systemInfo) {
151
150
  const { statusBarHeight, isAndroid, isIOS } = systemInfo;
152
151
  let result = 50;
153
152
  if (statusBarHeight > 20) {
154
153
  if (isIOS) {
155
154
  result = 84;
156
155
  } else if (isAndroid) {
157
156
  result = 53;
158
157
  }
159
158
  }
160
159
  return result;
161
160
  }
162
161
 
163
162
  getSystemInfo() {
164
163
  const info: UtilsInterFace.taroGetSystemInfoSyncRes =
165
164
  getSystemInfos() || {};
166
165
  const actualNavBarHeight =
167
166
  (info?.navBarHeight || 0) + (info?.navBarExtendHeight || 0);
168
167
  const headerHeight = actualNavBarHeight + (info?.statusBarHeight || 0);
169
168
  const fullScreenHeight = this.getFullScreenHeight(info);
170
169
  const tabBarHeight = this.getTabBarHeight(info);
171
170
  const safeContentHeight = fullScreenHeight - headerHeight;
172
171
  this.info.sysInfo = {
173
172
  ...this.info.sysInfo,
174
173
  ...info,
175
174
  actualNavBarHeight,
176
175
  headerHeight,
177
176
  fullScreenHeight,
178
177
  tabBarHeight,
179
178
  safeContentHeight,
180
179
  };
181
180
  this.getEid().then((res: { eid: string }) => {
182
181
  res && res.eid && (this.info.sysInfo["eid"] = res.eid);
183
182
  });
184
183
  if (this.info.sysInfo["hostVersionName"]) {
185
184
  this.info.sysInfo["hostAppVersion"] = Number(
186
185
  this.info.sysInfo["hostVersionName"].replace(/\./g, "")
187
186
  );
188
187
  }
189
188
  this.info.sysInfo["wifiVideoAutoPlay"] = false;
190
189
  this.getNetWorkType();
191
190
  }
192
191
  async updateMPaasConfig() {}
193
192
 
194
193
  getNetWorkType() {
195
194
  Taro.getNetworkType().then((getRes) => {
196
195
  getRes &&
197
196
  getRes.networkType &&
198
197
  (this.info.sysInfo["netWorkType"] = getRes.networkType);
199
198
  });
200
199
  }
201
200
  getAPPUseStraightCorner () {
202
201
  return Promise.resolve(false)
203
202
  }
204
203
 
205
204
  checkStatusAndLogin(options = {}) {
206
205
  this.checkStatusAndLoginPromise = new Promise((resolve, reject) => {
207
206
  console.log(
208
207
  "微信小程序登录状态及获取cookie状态的promise,之前登录状态",
209
208
  this.info.loginState
210
209
  );
211
210
  this.toLogin(options)
212
211
  .then((res) => {
213
212
  console.log("微信小程序登录状态结果,成功", res);
214
213
  this.info.loginState = true;
215
214
  resolve(res);
216
215
  })
217
216
  .catch((err) => {
218
217
  console.log("微信小程序登录异常状态结果", err);
219
218
  this.doLogin(options)
220
219
  .then((res2) => {
221
220
  console.log("微信小程序wxDoLogin强制登陆成功:", res2);
222
221
  this.info.loginState = true;
223
222
  resolve(res2);
224
223
  })
225
224
  .catch((err2) => {
226
225
  console.log("微信小程序wxDoLogin强制登陆失败:", err2);
227
226
  this.checkStatusAndLoginPromise = null;
228
227
  reject(err2);
229
228
  });
230
229
  });
231
230
  });
232
231
  return this.checkStatusAndLoginPromise;
233
232
  }
234
233
 
235
234
  checkJdStatusAndLogin(options) {
236
235
  return this.checkStatusAndLogin(options);
237
236
  }
238
237
 
239
238
 
240
239
  doLoginForJdPin(options = {}) {
241
240
  return this.doLogin(options);
242
241
  }
243
242
 
244
243
  getEid() {
245
244
  if (typeof jd !== "undefined" && jd.getEid) {
246
245
  return new Promise((resolve, reject) => {
247
246
  jd.getEid({
248
247
  success: (res: { eid: string }) => {
249
248
  resolve(res);
250
249
  },
251
250
  fail: (err: any) => {
252
251
  reject(err);
253
252
  },
254
253
  });
255
254
  });
256
255
  } else {
257
256
  return Promise.resolve(false);
258
257
  }
259
258
  }
260
259
 
261
260
  toLogin(options = {}): Promise<any> {
262
261
  return this.wxAppLoginInstance
263
262
  .getLoginPromise({
264
263
  mode: "silent",
265
264
  loginColor: {
266
265
  biz: WXAPP_BIZ_KEY,
267
266
  dpin: 0,
268
267
  },
269
268
  ...options,
270
269
  })
271
270
  .then((res) => {
272
271
  console.log("微信app登录返回信息,微信侧返回code为0表示成功", res);
273
272
  setTimeout(() => {
274
273
  console.log(
275
274
  "微信app登录返回成功后,后台会写入cookie,有延迟,这里延迟500ms去获取最新cookie"
276
275
  );
277
276
  this.getLoginCookie(`${Date.now()}`);
278
277
  }, 500);
279
278
  })
280
279
  .catch((err) => {
281
280
  console.log("微信app登录异常返回信息,也获取cookie", err);
282
281
  this.getLoginCookie(`${Date.now()}`);
283
282
  });
284
283
  }
285
284
 
286
285
  doLogin(options) {
287
286
  console.log("触发松果小程序 doLogin() new new");
288
287
  return new Promise((resolve, reject) => {
289
288
  jd.login({
290
289
  success: (res) => {
291
290
  if (res.code) {
292
291
  console.log("[common]松果小程序登录成功", res.code);
293
292
  jd.redirectTo({
294
293
  url: `/pages/shopx/pages/index/index?${objectToUrlEncode({
295
294
  ...this.info.originQueryInfo,
296
295
  })}`,
297
296
  });
298
297
  resolve(res);
299
298
  } else {
300
299
  console.error("[common]松果小程序登录失败", res.errMsg);
301
300
  reject();
302
301
  }
303
302
  },
304
303
  fail: (res) => {
305
304
  console.error("[common]松果小程序登录失败", res.errMsg);
306
305
  reject();
307
306
  },
308
307
  });
309
308
  });
310
309
  }
311
310
 
312
311
  getLoginCookie(updateKey = "wxapp") {
313
312
  return new Promise((resolve) => {
314
313
  console.log("开始获取更新wxapp中的cookie信息", updateKey);
315
314
  if (
316
315
  this.config.wqCookie &&
317
316
  this.config.wqCookieStr &&
318
317
  this.config.getWqCookieKey === updateKey
319
318
  ) {
320
319
  console.log("已有存储wxapp中的cookie信息,直接返回", this.config);
321
320
  resolve({
322
321
  wqCookie: this.config.wqCookie,
323
322
  wqCookieStr: this.config.wqCookieStr,
324
323
  });
325
324
  } else {
326
325
  if (isPublishToWxapp) {
327
326
  const getWxappCookieObj = getTaroStorageKeyValue("cookies") || null;
328
327
  if (getWxappCookieObj) {
329
328
  const getCookieObj = getWxappCookieObj["_data"];
330
329
  const { wqCookie, wqCookieStr } = getWxAppCookieStr(getCookieObj);
331
330
  const {
332
331
  pin = "",
333
332
  visitkey = "-1",
334
333
  wq_unionid = "",
335
334
  wxapp_openid = "",
336
335
  } = wqCookie;
337
336
  this.info.loginState = true;
338
337
  this.info.userInfo.wqCookie = wqCookieStr;
339
338
  this.info.userInfo.wqVisitkey = visitkey;
340
339
  console.log("获取用户完整cookie信息", getCookieObj);
341
340
  const getUserAddress = this.wxAppUserInfoInstance.getAddress();
342
341
  console.log("获取微信用户地址信息", getUserAddress);
343
342
  if (getUserAddress) {
344
343
  this.info.pageInfo.address = getUserAddress?.areaId;
345
344
  this.info.pageInfo.addressCommaStr = this.info.pageInfo.address
346
345
  ? this.info.pageInfo.address.replace(/_/g, ",")
347
346
  : "";
348
347
  this.info.pageInfo.un_area = this.info.pageInfo.address;
349
348
  Taro.eventCenter.trigger(
350
349
  TaroEventType.USER_AREA_UPDATE,
351
350
  this.info.pageInfo.address
352
351
  );
353
352
  }
354
353
  if (this.miniAppLogInstance) {
355
354
  this.miniAppLogInstance.set({
356
355
  account: pin,
357
356
  unionid: wq_unionid,
358
357
  openid: wxapp_openid,
359
358
  });
360
359
  }
361
360
  this.config.wqCookie = wqCookie;
362
361
  this.config.wqCookieStr = wqCookieStr;
363
362
  this.config.getWqCookieKey = updateKey;
364
363
  console.log("解析wxapp中的cookie信息成功,返回后存储", this.config);
365
364
  resolve({
366
365
  wqCookie,
367
366
  wqCookieStr,
368
367
  });
369
368
  } else {
370
369
  console.log(
371
370
  "解析wxapp中的cookie信息异常,返回异常结果",
372
371
  this.config
373
372
  );
374
373
  resolve({
375
374
  wqCookie: false,
376
375
  wqCookieStr: false,
377
376
  });
378
377
  }
379
378
  } else {
380
379
  resolve({
381
380
  wqCookie: false,
382
381
  wqCookieStr: false,
383
382
  });
384
383
  }
385
384
  }
386
385
  });
387
386
  }
388
387
 
389
388
 
390
389
  checkLoginStatus() {
391
390
  return this.getLoginCookie();
392
391
  }
393
392
 
394
393
  getAddressCachePromise = () => {
395
394
  return Promise.reject("该方法只在APP内适用");
396
395
  };
397
396
 
398
397
  getDynamicConfig(key: string) {
399
398
  console.warn(
400
399
  "调用松果小程序的 getDynamicConfig(),注意,此方法还未实现!"
401
400
  );
402
401
  return null;
403
402
  }
404
403
 
405
404
  updatePageAndLogInfo(updateQuery = {}) {
406
405
  const createUpdateQueryInfo: {
407
406
  query: {
408
407
  shopId?: string | number;
409
408
  venderId?: string | number;
410
409
  };
411
410
  updateShopInfoState: boolean;
412
411
  } = Object.assign(
413
412
  {},
414
413
  {
415
414
  query: {},
416
415
  updateShopInfoState: false,
417
416
  },
418
417
  updateQuery
419
418
  );
420
419
  console.log(
421
420
  "获取当前下发的店铺查询参数",
422
421
  updateQuery,
423
422
  "获取之前保存的shopInfo店铺查询参数",
424
423
  this.info?.shopInfo
425
424
  );
426
425
  const { query, updateShopInfoState } = createUpdateQueryInfo;
427
426
  const { shopId, venderId } = query;
428
427
  if (updateShopInfoState) {
429
428
  this.info.queryInfo = {
430
429
  ...this.info.queryInfo,
431
430
  ...query,
432
431
  };
433
432
  if (shopId && venderId) {
434
433
  this.info.shopInfo = {
435
434
  shopId: `${shopId}`,
436
435
  venderId: `${venderId}`,
437
436
  };
438
437
  }
439
438
  } else {
440
439
  this.info.queryInfo = {
441
440
  ...query,
442
441
  };
443
442
  this.info.originQueryInfo = {
444
443
  ...query,
445
444
  };
446
445
  if (
447
446
  this.info.shopInfo?.shopId &&
448
447
  this.info.shopInfo?.venderId &&
449
448
  (this.info.shopInfo.shopId == shopId ||
450
449
  this.info.shopInfo.venderId == venderId)
451
450
  ) {
452
451
  this.info.queryInfo.shopId = this.info.shopInfo.shopId;
453
452
  this.info.queryInfo.venderId = this.info.shopInfo.venderId;
454
453
  console.log(
455
454
  "当前存储的店铺shopId和venderId与下发的店铺信息shopId或者venderId为同一个,补充shopId或者venderId查询参数",
456
455
  this.info.queryInfo
457
456
  );
458
457
  }
459
458
  }
460
459
  this.info.queryInfo["shopId"] &&
461
460
  (this.info.queryInfo["shopId"] = `${this.info.queryInfo["shopId"]}`);
462
461
  this.info.queryInfo["venderId"] &&
463
462
  (this.info.queryInfo["venderId"] = `${this.info.queryInfo["venderId"]}`);
464
463
  console.log(
465
464
  "weapp===获取店铺下发查询参数\n",
466
465
  query,
467
466
  "\n获取店铺最后查询参数\n",
468
467
  this.info.queryInfo,
469
468
  "\n是否为更新店铺状态\n",
470
469
  updateShopInfoState
471
470
  );
472
471
  }
473
472
  renderNextTickLoadSdk(){
474
473
  console.warn("暂未实现 index.jd.ts")
475
474
  }
476
475
  loadOtherSdk(){
477
476
  console.warn("暂未实现 index.jd.ts")
478
477
  }
479
478
  loadItemSdkPromise(jsInfo = {}) {
480
479
  console.warn('暂未实现 index.jd.ts')
481
480
  }
481
+ import Taro from '@tarojs/taro';
482
482
  WXAPP_LOGIN,
483
483
  WXAPP_BIZ,
484
484
  WXAPP_USER_INFO,
485
485
  WXAPP_NAVIGATOR,
486
486
  WXAPP_REPORT_GDT,
487
487
  WXAPP_PARAMS_SIGN,
488
488
  WXAPP_FINGER_REPORT,
489
489
  WXAPP_REPORT_MANAGE,
490
490
  BUSINESS_TYPE,
491
491
  SHOP_MENU_ID_TYPE,
492
492
  SHOP_MENU_ID_NAME,
493
493
  SECTION_HOME_TAB_NAME_TYPE,
494
494
  SECTION_HOME_TAB_TYPE,
495
495
  TaroEventType,
496
496
  WX_BUSINESS_TYPE,
497
497
  WXAPP_BIZ_KEY,
498
498
  getSystemInfos,
499
499
  getTaroStorageKeyValue,
500
500
  removeTaroStorageKey,
501
501
  setTaroStorage,
502
502
  getWxAppCookieStr,
503
503
  objectToUrlEncode,
504
504
  abTestLabels: {},
505
505
  nonSellableSkuids: {},
506
506
  loginState: jdUserLoginState,
507
507
  cookiesStr: '',
508
508
  userInfo: userPinKey,
509
509
  isImmersive: false,
510
510
  pageInfo: {
511
511
  wxBusinessType: WX_BUSINESS_TYPE.SHOP,
512
512
  address: '',
513
513
  addressCommaStr: '',
514
514
  un_area: '',
515
515
  userLbsAddress: '',
516
516
  vapptype: '1',
517
517
  pageType: 'home',
518
518
  dataType: BUSINESS_TYPE.ONLINE,
519
519
  floorExposureInfo: {},
520
520
  floorVideInfo: {},
521
521
  productVideInfo: {},
522
522
  tabsLoadAllDataInfo: {
523
523
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN]]: false,
524
524
  [SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.CLASSIFY]]: true,
525
525
  },
526
526
  updateShopInfosAllState: false,
527
527
  isVipShop: false,
528
528
  isJdShowNativeImmersivePlayer: false,
529
529
  ...shopConfig,
530
530
  pageScrollTop: 0,
531
531
  pageIdxHeightInfo: {
532
532
  list: [],
533
533
  },
534
534
  shopNavBarHeight: 0,
535
535
  },
536
536
  defaultQueryLogInfo: {
537
537
  sourceType: 'JDshop',
538
538
  sourceValue: '',
539
539
  moduleId: 'none',
540
540
  entrance: 'none',
541
541
  },
542
542
  originQueryInfo: {},
543
543
  sysInfo: {
544
544
  windowWidth: 0,
545
545
  windowHeight: 0,
546
546
  eid: appEid,
547
547
  netWorkType: '4g',
548
548
  jdBottomBarHeight: 0,
549
549
  jdNativeHeaderHeight: 0,
550
550
  },
551
551
  queryInfo: {},
552
552
  shopInfo: {},
553
553
  openAppData: {},
554
554
  public info: CommonInterFace.BaseConfigInfo;
555
555
  public config: {
556
556
  [key: string]: any;
557
557
  };
558
558
  public lazyContainer: CommonInterFace.lazyContainer;
559
559
  public rootEleNode: HTMLElement | null;
560
560
  public miniApplogUtil: CommonInterFace.MiniApplogUtil;
561
561
  public miniAppLogInstance: CommonInterFace.MiniAppLog | null;
562
562
  public checkStatusAndLoginPromise: object | null;
563
563
  public wxAppLoginInstance: CommonInterFace.WxAppLogin;
564
564
  public wxAppBizInstance: CommonInterFace.WxAppUserInfo;
565
565
  public wxAppUserInfoInstance: CommonInterFace.WxAppUserInfo;
566
566
  public wxAppReportManageInstance: CommonInterFace.wxAppReportManage;
567
567
  public wxAppReportGDTInstance: CommonInterFace.WxAppReportGDT;
568
568
  public wxAppNavigatorInstance: CommonInterFace.WxAppNavigator;
569
569
  public wxAppParamsSignInstance: CommonInterFace.wxAppParamsSign;
570
570
  public wxAppFingerReportInstance: CommonInterFace.wxAppParamsSign;
571
571
  public wxAppSubsGuider: CommonInterFace.wxAppParamsSign;
572
572
  public loadJsSdkList: Array<any>;
573
573
  public loadJsSdkListCachePromise: any;
574
574
  constructor(opt) {
575
575
  this.info = this._getConfig(opt);
576
576
  this.config = {};
577
577
  this.lazyContainer = {
578
578
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN]]: {
579
579
  appLazyContainerList: [],
580
580
  appLazyFinishContainerList: [],
581
581
  },
582
582
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PROMOTION]]: {
583
583
  appLazyContainerList: [],
584
584
  appLazyFinishContainerList: [],
585
585
  },
586
586
  };
587
587
  this.loadJsSdkList = [];
588
588
  this.loadJsSdkListCachePromise = {};
589
589
  this.rootEleNode = null;
590
590
  this.miniApplogUtil = MiniAppLogUtil;
591
591
  this.miniAppLogInstance = null;
592
592
  this.checkStatusAndLoginPromise = null;
593
593
  this.wxAppLoginInstance = WXAPP_LOGIN;
594
594
  this.wxAppBizInstance = WXAPP_BIZ;
595
595
  this.wxAppUserInfoInstance = WXAPP_USER_INFO;
596
596
  this.wxAppReportManageInstance = WXAPP_REPORT_MANAGE;
597
597
  this.wxAppReportGDTInstance = WXAPP_REPORT_GDT;
598
598
  this.wxAppNavigatorInstance = WXAPP_NAVIGATOR;
599
599
  this.wxAppParamsSignInstance = WXAPP_PARAMS_SIGN;
600
600
  this.wxAppFingerReportInstance = WXAPP_FINGER_REPORT ? new WXAPP_FINGER_REPORT() : {};
601
601
  this.wxAppSubsGuider = null;
602
602
  }
603
603
  _getConfig(opt) {
604
604
  return Object.assign({}, DefaultConfig, opt);
605
605
  }
606
606
 
607
607
  taskTimeoutPromise(callBack, timeout = 2000) {
608
608
  return new Promise((resolve) => {
609
609
  setTimeout(() => {
610
610
  const getCallBackRes = typeof callBack === 'function' && callBack();
611
611
  return resolve(getCallBackRes || false);
612
612
  }, timeout);
613
613
  });
614
614
  }
615
615
 
616
616
  updateBusinessDomainAndApi(domain, api) {
617
617
  }
618
618
 
619
619
  getFullScreenHeight(systemInfo) {
620
620
  const { screenHeight, statusBarHeight, isAndroid } = systemInfo;
621
621
  let result = screenHeight;
622
622
  if (statusBarHeight > 20 && isAndroid) {
623
623
  result = screenHeight + statusBarHeight;
624
624
  }
625
625
  return result;
626
626
  }
627
627
 
628
628
  getTabBarHeight(systemInfo) {
629
629
  const { statusBarHeight, isAndroid, isIOS } = systemInfo;
630
630
  let result = 50;
631
631
  if (statusBarHeight > 20) {
632
632
  if (isIOS) {
633
633
  result = 84;
634
634
  } else if (isAndroid) {
635
635
  result = 53;
636
636
  }
637
637
  }
638
638
  return result;
639
639
  }
640
640
 
641
641
  getSystemInfo() {
642
642
  const info: UtilsInterFace.taroGetSystemInfoSyncRes = getSystemInfos() || {};
643
643
  const actualNavBarHeight = (info?.navBarHeight || 0) + (info?.navBarExtendHeight || 0);
644
644
  const headerHeight = actualNavBarHeight + (info?.statusBarHeight || 0);
645
645
  const fullScreenHeight = this.getFullScreenHeight(info);
646
646
  const tabBarHeight = this.getTabBarHeight(info);
647
647
  const safeContentHeight = fullScreenHeight - headerHeight;
648
648
  this.info.sysInfo = {
649
649
  ...this.info.sysInfo,
650
650
  ...info,
651
651
  actualNavBarHeight,
652
652
  headerHeight,
653
653
  fullScreenHeight,
654
654
  tabBarHeight,
655
655
  safeContentHeight,
656
656
  };
657
657
  this.getEid().then((res: { eid: string }) => {
658
658
  res && res.eid && (this.info.sysInfo['eid'] = res.eid);
659
659
  });
660
660
  if (this.info.sysInfo['hostVersionName']) {
661
661
  this.info.sysInfo['hostAppVersion'] = Number(
662
662
  this.info.sysInfo['hostVersionName'].replace(/\./g, ''),
663
663
  );
664
664
  }
665
665
  this.info.sysInfo['wifiVideoAutoPlay'] = false;
666
666
  this.getNetWorkType();
667
667
  }
668
668
  async updateMPaasConfig() {}
669
669
 
670
670
  getNetWorkType() {
671
671
  Taro.getNetworkType().then((getRes) => {
672
672
  getRes && getRes.networkType && (this.info.sysInfo['netWorkType'] = getRes.networkType);
673
673
  });
674
674
  }
675
675
  getAPPUseStraightCorner() {
676
676
  return Promise.resolve(false);
677
677
  }
678
678
 
679
679
  checkStatusAndLogin(options = {}) {
680
680
  this.checkStatusAndLoginPromise = new Promise((resolve, reject) => {
681
681
  console.log('微信小程序登录状态及获取cookie状态的promise,之前登录状态', this.info.loginState);
682
682
  this.toLogin(options)
683
683
  .then((res) => {
684
684
  console.log('微信小程序登录状态结果,成功', res);
685
685
  this.info.loginState = true;
686
686
  resolve(res);
687
687
  })
688
688
  .catch((err) => {
689
689
  console.log('微信小程序登录异常状态结果', err);
690
690
  this.doLogin(options)
691
691
  .then((res2) => {
692
692
  console.log('微信小程序wxDoLogin强制登陆成功:', res2);
693
693
  this.info.loginState = true;
694
694
  resolve(res2);
695
695
  })
696
696
  .catch((err2) => {
697
697
  console.log('微信小程序wxDoLogin强制登陆失败:', err2);
698
698
  this.checkStatusAndLoginPromise = null;
699
699
  reject(err2);
700
700
  });
701
701
  });
702
702
  });
703
703
  return this.checkStatusAndLoginPromise;
704
704
  }
705
705
 
706
706
  checkJdStatusAndLogin(options) {
707
707
  return this.checkStatusAndLogin(options);
708
708
  }
709
709
 
710
710
 
711
711
  doLoginForJdPin(options = {}) {
712
712
  return this.doLogin(options);
713
713
  }
714
714
 
715
715
  getEid() {
716
716
  if (typeof jd !== 'undefined' && jd.getEid) {
717
717
  return new Promise((resolve, reject) => {
718
718
  jd.getEid({
719
719
  success: (res: { eid: string }) => {
720
720
  resolve(res);
721
721
  },
722
722
  fail: (err: any) => {
723
723
  reject(err);
724
724
  },
725
725
  });
726
726
  });
727
727
  } else {
728
728
  return Promise.resolve(false);
729
729
  }
730
730
  }
731
731
 
732
732
  toLogin(options = {}): Promise<any> {
733
733
  return this.wxAppLoginInstance
734
734
  .getLoginPromise({
735
735
  mode: 'silent',
736
736
  loginColor: {
737
737
  biz: WXAPP_BIZ_KEY,
738
738
  dpin: 0,
739
739
  },
740
740
  ...options,
741
741
  })
742
742
  .then((res) => {
743
743
  console.log('微信app登录返回信息,微信侧返回code为0表示成功', res);
744
744
  setTimeout(() => {
745
745
  console.log(
746
746
  '微信app登录返回成功后,后台会写入cookie,有延迟,这里延迟500ms去获取最新cookie',
747
747
  );
748
748
  this.getLoginCookie(`${Date.now()}`);
749
749
  }, 500);
750
750
  })
751
751
  .catch((err) => {
752
752
  console.log('微信app登录异常返回信息,也获取cookie', err);
753
753
  this.getLoginCookie(`${Date.now()}`);
754
754
  });
755
755
  }
756
756
 
757
757
  doLogin(options) {
758
758
  console.log('触发松果小程序 doLogin() new new');
759
759
  return new Promise((resolve, reject) => {
760
760
  jd.login({
761
761
  success: (res) => {
762
762
  if (res.code) {
763
763
  console.log('[common]松果小程序登录成功', res.code);
764
764
  jd.redirectTo({
765
765
  url: `/pages/shopx/pages/index/index?${objectToUrlEncode({
766
766
  ...this.info.originQueryInfo,
767
767
  })}`,
768
768
  });
769
769
  resolve(res);
770
770
  } else {
771
771
  console.error('[common]松果小程序登录失败', res.errMsg);
772
772
  reject();
773
773
  }
774
774
  },
775
775
  fail: (res) => {
776
776
  console.error('[common]松果小程序登录失败', res.errMsg);
777
777
  reject();
778
778
  },
779
779
  });
780
780
  });
781
781
  }
782
782
 
783
783
  getLoginCookie(updateKey = 'wxapp') {
784
784
  return new Promise((resolve) => {
785
785
  console.log('开始获取更新wxapp中的cookie信息', updateKey);
786
786
  if (
787
787
  this.config.wqCookie &&
788
788
  this.config.wqCookieStr &&
789
789
  this.config.getWqCookieKey === updateKey
790
790
  ) {
791
791
  console.log('已有存储wxapp中的cookie信息,直接返回', this.config);
792
792
  resolve({
793
793
  wqCookie: this.config.wqCookie,
794
794
  wqCookieStr: this.config.wqCookieStr,
795
795
  });
796
796
  } else {
797
797
  if (isPublishToWxapp) {
798
798
  const getWxappCookieObj = getTaroStorageKeyValue('cookies') || null;
799
799
  if (getWxappCookieObj) {
800
800
  const getCookieObj = getWxappCookieObj['_data'];
801
801
  const { wqCookie, wqCookieStr } = getWxAppCookieStr(getCookieObj);
802
802
  const { pin = '', visitkey = '-1', wq_unionid = '', wxapp_openid = '' } = wqCookie;
803
803
  this.info.loginState = true;
804
804
  this.info.userInfo.wqCookie = wqCookieStr;
805
805
  this.info.userInfo.wqVisitkey = visitkey;
806
806
  console.log('获取用户完整cookie信息', getCookieObj);
807
807
  const getUserAddress = this.wxAppUserInfoInstance.getAddress();
808
808
  console.log('获取微信用户地址信息', getUserAddress);
809
809
  if (getUserAddress) {
810
810
  this.info.pageInfo.address = getUserAddress?.areaId;
811
811
  this.info.pageInfo.addressCommaStr = this.info.pageInfo.address
812
812
  ? this.info.pageInfo.address.replace(/_/g, ',')
813
813
  : '';
814
814
  this.info.pageInfo.un_area = this.info.pageInfo.address;
815
815
  Taro.eventCenter.trigger(TaroEventType.USER_AREA_UPDATE, {
816
816
  area: this.info.pageInfo.address,
817
817
  });
818
818
  }
819
819
  if (this.miniAppLogInstance) {
820
820
  this.miniAppLogInstance.set({
821
821
  account: pin,
822
822
  unionid: wq_unionid,
823
823
  openid: wxapp_openid,
824
824
  });
825
825
  }
826
826
  this.config.wqCookie = wqCookie;
827
827
  this.config.wqCookieStr = wqCookieStr;
828
828
  this.config.getWqCookieKey = updateKey;
829
829
  console.log('解析wxapp中的cookie信息成功,返回后存储', this.config);
830
830
  resolve({
831
831
  wqCookie,
832
832
  wqCookieStr,
833
833
  });
834
834
  } else {
835
835
  console.log('解析wxapp中的cookie信息异常,返回异常结果', this.config);
836
836
  resolve({
837
837
  wqCookie: false,
838
838
  wqCookieStr: false,
839
839
  });
840
840
  }
841
841
  } else {
842
842
  resolve({
843
843
  wqCookie: false,
844
844
  wqCookieStr: false,
845
845
  });
846
846
  }
847
847
  }
848
848
  });
849
849
  }
850
850
 
851
851
 
852
852
  checkLoginStatus() {
853
853
  return this.getLoginCookie();
854
854
  }
855
855
 
856
856
  getAddressCachePromise() {
857
857
  return Promise.reject('该方法只在APP内适用');
858
858
  }
859
859
 
860
860
  getLbsAddressCachePromise() {
861
861
  return Promise.resolve({
862
862
  status: '-1005',
863
863
  msg: '暂未实现,获取失败',
864
864
  });
865
865
  }
866
866
 
867
867
  getDynamicConfig(key: string) {
868
868
  console.warn('调用松果小程序的 getDynamicConfig(),注意,此方法还未实现!');
869
869
  return null;
870
870
  }
871
871
 
872
872
  updatePageAndLogInfo(updateQuery = {}) {
873
873
  const createUpdateQueryInfo: {
874
874
  query: {
875
875
  shopId?: string | number;
876
876
  venderId?: string | number;
877
877
  };
878
878
  updateShopInfoState: boolean;
879
879
  } = Object.assign(
880
880
  {},
881
881
  {
882
882
  query: {},
883
883
  updateShopInfoState: false,
884
884
  },
885
885
  updateQuery,
886
886
  );
887
887
  console.log(
888
888
  '获取当前下发的店铺查询参数',
889
889
  updateQuery,
890
890
  '获取之前保存的shopInfo店铺查询参数',
891
891
  this.info?.shopInfo,
892
892
  );
893
893
  const { query, updateShopInfoState } = createUpdateQueryInfo;
894
894
  const { shopId, venderId } = query;
895
895
  if (updateShopInfoState) {
896
896
  this.info.queryInfo = {
897
897
  ...this.info.queryInfo,
898
898
  ...query,
899
899
  };
900
900
  if (shopId && venderId) {
901
901
  this.info.shopInfo = {
902
902
  shopId: `${shopId}`,
903
903
  venderId: `${venderId}`,
904
904
  };
905
905
  }
906
906
  } else {
907
907
  this.info.queryInfo = {
908
908
  ...query,
909
909
  };
910
910
  this.info.originQueryInfo = {
911
911
  ...query,
912
912
  };
913
913
  if (
914
914
  this.info.shopInfo?.shopId &&
915
915
  this.info.shopInfo?.venderId &&
916
916
  (this.info.shopInfo.shopId == shopId || this.info.shopInfo.venderId == venderId)
917
917
  ) {
918
918
  this.info.queryInfo.shopId = this.info.shopInfo.shopId;
919
919
  this.info.queryInfo.venderId = this.info.shopInfo.venderId;
920
920
  console.log(
921
921
  '当前存储的店铺shopId和venderId与下发的店铺信息shopId或者venderId为同一个,补充shopId或者venderId查询参数',
922
922
  this.info.queryInfo,
923
923
  );
924
924
  }
925
925
  }
926
926
  this.info.queryInfo['shopId'] &&
927
927
  (this.info.queryInfo['shopId'] = `${this.info.queryInfo['shopId']}`);
928
928
  this.info.queryInfo['venderId'] &&
929
929
  (this.info.queryInfo['venderId'] = `${this.info.queryInfo['venderId']}`);
930
930
  console.log(
931
931
  'weapp===获取店铺下发查询参数\n',
932
932
  query,
933
933
  '\n获取店铺最后查询参数\n',
934
934
  this.info.queryInfo,
935
935
  '\n是否为更新店铺状态\n',
936
936
  updateShopInfoState,
937
937
  );
938
938
  }
939
939
  renderNextTickLoadSdk() {
940
940
  console.warn('暂未实现 index.jd.ts');
941
941
  }
942
942
  loadOtherSdk() {
943
943
  console.warn('暂未实现 index.jd.ts');
944
944
  }
945
945
  loadItemSdkPromise(jsInfo = {}) {
946
946
  console.warn('暂未实现 index.jd.ts');
947
947
  }