dlt-for-react 2.0.4 → 2.0.5

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.
package/README.md CHANGED
@@ -8,7 +8,7 @@ npm publish
8
8
 
9
9
  ## 前端 dlt-for-react 依赖包版本更新记录
10
10
 
11
- ##### 当前最新版本:2.0.3
11
+ ##### 当前最新版本:2.0.5
12
12
 
13
13
  ##### 安装依赖
14
14
 
@@ -16,6 +16,12 @@ npm publish
16
16
 
17
17
  ##### 版本修改记录
18
18
 
19
+ #### V2.0.5—2024 年 3 月 27 日
20
+
21
+ 1. 优化 NHFetch 逻辑解决超时异常处理问题
22
+ 2. 新增 getExpiresIn:计算登录后操作时间是否过期
23
+ 3. 优化 getDifferDate:获取两个日期的相差秒数
24
+
19
25
  #### V2.0.3—2024 年 3 月 15 日
20
26
 
21
27
  1. 解决部分组件幻影依赖不存在的问题
package/lib/index.js CHANGED
@@ -969,12 +969,30 @@ Object.defineProperty(exports, "userLogout", {
969
969
  return _login.userLogout;
970
970
  }
971
971
  });
972
+ Object.defineProperty(exports, "refreshToken", {
973
+ enumerable: true,
974
+ get: function get() {
975
+ return _login.refreshToken;
976
+ }
977
+ });
972
978
  Object.defineProperty(exports, "tryLoginUserInfo", {
973
979
  enumerable: true,
974
980
  get: function get() {
975
981
  return _login.tryLoginUserInfo;
976
982
  }
977
983
  });
984
+ Object.defineProperty(exports, "getDifferDate", {
985
+ enumerable: true,
986
+ get: function get() {
987
+ return _login.getDifferDate;
988
+ }
989
+ });
990
+ Object.defineProperty(exports, "getExpiresIn", {
991
+ enumerable: true,
992
+ get: function get() {
993
+ return _login.getExpiresIn;
994
+ }
995
+ });
978
996
 
979
997
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
980
998
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getRouterAfterLogin = exports.saveRouterAfterLogin = exports.tryAllConfigInfo = exports.tryLoginUserInfo = exports.getDifferDate = exports.refreshToken = exports.userLogout = exports.userLogin = undefined;
6
+ exports.getRouterAfterLogin = exports.saveRouterAfterLogin = exports.tryAllConfigInfo = exports.tryLoginUserInfo = exports.getExpiresIn = exports.getDifferDate = exports.refreshToken = exports.userLogout = exports.userLogin = undefined;
7
7
 
8
8
  var _typeof2 = require("babel-runtime/helpers/typeof");
9
9
 
@@ -260,15 +260,32 @@ var refreshToken = exports.refreshToken = function refreshToken(_refreshToken, c
260
260
 
261
261
  //获取两个日期的相差秒数
262
262
  var getDifferDate = exports.getDifferDate = function getDifferDate(firstDate, secondDate) {
263
- //1) 将两个日期字符串转化为日期对象
264
- var startDate = new Date(firstDate);
265
- var endDate = new Date(secondDate);
263
+ //1) 将两个日期转化为时间戳
264
+ var startDate = (0, _moment2.default)(firstDate).valueOf();
265
+ var endDate = (0, _moment2.default)(secondDate).valueOf();
266
266
  //2) 计算两个日期相差的毫秒数
267
- var msecNum = endDate.getTime() - startDate.getTime();
268
- //3) 计算两个日期相差的天数
267
+ var msecNum = endDate - startDate;
268
+ //3) 计算两个日期相差的秒数
269
269
  return Math.floor(msecNum / parseFloat(1000));
270
270
  };
271
271
 
272
+ /*******
273
+ * @description: 计算登录后操作时间是否过期
274
+ * @author: 琴时
275
+ * @param {*} expiresIn [过期时间:秒数]
276
+ * @return {*} [过期:true,正常:false]
277
+ */
278
+ var getExpiresIn = exports.getExpiresIn = function getExpiresIn() {
279
+ var expiresIn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1800;
280
+
281
+ //用户最后一次操作时间
282
+ var userLastOperationTime = sessionStorage.getItem("user_last_operation_time");
283
+ if (!userLastOperationTime) return true;
284
+ var nowDate = new Date();
285
+ var differDate = getDifferDate(userLastOperationTime, nowDate);
286
+ return differDate > expiresIn;
287
+ };
288
+
272
289
  /**
273
290
  * 获取已经登录的用户信息
274
291
  * @param func
@@ -189,6 +189,7 @@ var userLogout = exports.userLogout = function userLogout() {
189
189
  sessionStorage.removeItem("userLogin");
190
190
  sessionStorage.removeItem("access_token");
191
191
  sessionStorage.removeItem("refresh_token");
192
+ sessionStorage.removeItem("xtParams");
192
193
  sessionStorage.removeItem("user_last_operation_time");
193
194
  if (window.casStatus && window.casLogoutUrl && window.casLogoutUrl != "") {
194
195
  window.location = window.casLogoutUrl;
@@ -210,12 +211,12 @@ var userLogout = exports.userLogout = function userLogout() {
210
211
 
211
212
  //获取两个日期的相差秒数
212
213
  var getDifferDate = exports.getDifferDate = function getDifferDate(firstDate, secondDate) {
213
- //1) 将两个日期字符串转化为日期对象
214
- var startDate = new Date(firstDate);
215
- var endDate = new Date(secondDate);
214
+ //1) 将两个日期转化为时间戳
215
+ var startDate = (0, _moment2.default)(firstDate).valueOf();
216
+ var endDate = (0, _moment2.default)(secondDate).valueOf();
216
217
  //2) 计算两个日期相差的毫秒数
217
- var msecNum = endDate.getTime() - startDate.getTime();
218
- //3) 计算两个日期相差的天数
218
+ var msecNum = endDate - startDate;
219
+ //3) 计算两个日期相差的秒数
219
220
  return Math.floor(msecNum / parseFloat(1000));
220
221
  };
221
222
 
@@ -281,7 +282,7 @@ var NHFetch = function NHFetch(pUrl, pMethod, params, errorFunc) {
281
282
  }
282
283
  }
283
284
  opts.method = method;
284
- // credentials: 'include',
285
+ opts.credentials = "include";
285
286
  opts.headers = { "Content-Type": tmpHeader };
286
287
  if (params && params.constructor === FormData) {
287
288
  // 解决头像上传问题
@@ -307,88 +308,86 @@ var NHFetch = function NHFetch(pUrl, pMethod, params, errorFunc) {
307
308
  opts.headers.loginUserId = (0, _NHCore.getLoginUser)().userId;
308
309
  }
309
310
 
310
- opts.credentials = "include";
311
311
  return fetch(url, opts).then(function (response) {
312
- if (response.status === 200) {
313
- if (pMethod === "nbpost" || pMethod === "NBPOST") {
314
- return response.blob();
315
- } else {
316
- if (window.gateway_version === "2") {
317
- //新网关
312
+ try {
313
+ if (response.status === 200) {
314
+ if (pMethod === "nbpost" || pMethod === "NBPOST") {
315
+ return response.blob();
316
+ } else {
318
317
  sessionStorage.removeItem("user_last_operation_time");
319
318
  //记录用户最后一次操作时间
320
319
  var userLastOperationTime = (0, _moment2.default)().format("YYYY-MM-DD HH:mm:ss");
321
320
  sessionStorage.setItem("user_last_operation_time", userLastOperationTime);
321
+ return response.json();
322
322
  }
323
- return response.json();
324
- }
325
- } else if (response.status === 302) {
326
- if (window.gateway_version === "2") {
327
- //新网关
328
- var userLogin = sessionStorage.getItem("userLogin") ? JSON.parse(sessionStorage.getItem("userLogin")) : {};
329
- var _token = sessionStorage.getItem("refresh_token");
330
- var _userLastOperationTime = sessionStorage.getItem("user_last_operation_time");
331
- var expiresIn = userLogin.expiresIn || 1800;
332
- var userLastOperationTimeStr = _userLastOperationTime.replace("/-/g", "/");
333
- //用户最后一次操作时间
334
- var userLastOperationTimeDate = new Date(userLastOperationTimeStr);
335
- //当前时间
336
- var nowDate = new Date();
337
- //在token超时阈值范围内用户没有任何操作,则直接退出登录,重新登录
338
- var differDate = getDifferDate(userLastOperationTimeDate, nowDate);
339
- if (differDate >= expiresIn) {
340
- userLogout();
323
+ } else if (response.status === 302) {
324
+ if (window.gateway_version === "2") {
325
+ //新网关
326
+ var userLogin = sessionStorage.getItem("userLogin") ? JSON.parse(sessionStorage.getItem("userLogin")) : {};
327
+ var _token = sessionStorage.getItem("refresh_token");
328
+ var _userLastOperationTime = sessionStorage.getItem("user_last_operation_time");
329
+ var expiresIn = userLogin.expiresIn || 1800;
330
+ var userLastOperationTimeStr = _userLastOperationTime.replace("/-/g", "/");
331
+ //用户最后一次操作时间
332
+ var userLastOperationTimeDate = new Date(userLastOperationTimeStr);
333
+ //当前时间
334
+ var nowDate = new Date();
335
+ //在token超时阈值范围内用户没有任何操作,则直接退出登录,重新登录
336
+ var differDate = getDifferDate(userLastOperationTimeDate, nowDate);
337
+ if (differDate >= expiresIn) {
338
+ userLogout();
339
+ } else {
340
+ //在token超时阈值范围内用户有操作,则重新生成accessToken
341
+ refreshToken(_token, function (newAccessToken) {
342
+ sessionStorage.removeItem("access_token");
343
+ sessionStorage.setItem("access_token", newAccessToken);
344
+ var userLastOperationTime = (0, _moment2.default)().format("YYYY-MM-DD HH:mm:ss");
345
+ sessionStorage.setItem("user_last_operation_time", userLastOperationTime);
346
+ });
347
+ }
341
348
  } else {
342
- //在token超时阈值范围内用户有操作,则重新生成accessToken
343
- refreshToken(_token, function (newAccessToken) {
344
- sessionStorage.removeItem("access_token");
345
- sessionStorage.setItem("access_token", newAccessToken);
346
- var userLastOperationTime = (0, _moment2.default)().format("YYYY-MM-DD HH:mm:ss");
347
- sessionStorage.setItem("user_last_operation_time", userLastOperationTime);
348
- });
349
+ _message3.default.error("未登录或登录已过期,请刷新页面重新登录!");
350
+ sessionStorage.removeItem("userLogin");
351
+ sessionStorage.removeItem("access_token");
349
352
  }
353
+ } else if (response.status === 401) {
354
+ _message3.default.warning("您正在尝试访问未授权的功能!");
355
+ } else if (response.status === 504) {
356
+ // 网关请求超时
357
+ return;
350
358
  } else {
351
- _message3.default.error("未登录或登录已过期,请刷新页面重新登录!");
352
- sessionStorage.removeItem("userLogin");
353
- sessionStorage.removeItem("access_token");
354
- }
355
- } else if (response.status === 401) {
356
- _message3.default.warning("您正在尝试访问未授权的功能!");
357
- } else {
358
- //如果存在错误的回调方法,则调用回调方法,否则提示网络请求异常
359
- if (errorFunc) {
360
- errorFunc();
359
+ //如果存在错误的回调方法,则调用回调方法,否则提示网络请求异常
360
+ errorFunc && errorFunc();
361
361
  }
362
- }
363
- try {
364
362
  return response.json();
365
- } catch (e) {
366
- console.log(e);
367
- return undefined;
363
+ } catch (error) {
364
+ console.log("请求异常1:", error.message);
365
+ return;
368
366
  }
369
367
  }).then(function (res) {
370
- if (res === undefined) {
368
+ var _ref = res || {},
369
+ _ref$meta = _ref.meta,
370
+ meta = _ref$meta === undefined ? {} : _ref$meta;
371
+
372
+ if (res === undefined || res.status === 404) {
371
373
  _message3.default.error("系统出现异常,请联系管理员!");
372
- return undefined;
373
- } else if (res.meta && res.meta.statusCode === 401 || res.code === 302) {
374
+ return;
375
+ } else if (meta.statusCode === 401 || res.code === 302) {
374
376
  //判断是否没有权限
375
377
  _message3.default.warning("您正在尝试访问未授权的功能!");
376
- return undefined;
377
- } else if (res.meta && res.meta.statusCode === 500) {
378
+ return;
379
+ } else if (meta.statusCode === 500) {
378
380
  var msg = res.meta.message;
379
381
  if (null !== msg) {
380
382
  if (msg.startsWith("businessLogicError[")) {
381
383
  //自定义的提示(错误)
382
384
  _message3.default.error(msg.substring(19, msg.length - 1));
383
- // Modal.error({ title: '错误提示', content: res.message.substring(19,res.message.length-1),});
384
385
  } else if (msg.startsWith("businessLogicWarm[")) {
385
386
  //自定义的提示(警告)
386
387
  _message3.default.warning(msg.substring(18, msg.length - 1));
387
- // Modal.warning({ title: '警告提示', content: res.message.substring(18,res.message.length-1),});
388
388
  } else if (msg.startsWith("businessLogicInfo[")) {
389
389
  //自定义的提示(消息)
390
390
  _message3.default.info(msg.substring(18, msg.length - 1));
391
- // Modal.info({ title: '消息提示', content: res.message.substring(18,res.message.length-1),});
392
391
  } else if (msg.startsWith("onlyDataError[")) {
393
392
  //数据唯一性异常
394
393
  onlyDataErrorTip(res.meta);
@@ -404,9 +403,14 @@ var NHFetch = function NHFetch(pUrl, pMethod, params, errorFunc) {
404
403
  } else {
405
404
  _message3.default.error("系统出现异常,请联系管理员!");
406
405
  }
407
- // Modal.error({ title: '错误提示', content:'系统出现异常,请联系管理员!'});
408
406
  return undefined;
409
- } else if (res && res.code && res.code !== 200) {
407
+ } else if (meta.statusCode === 200 || meta.statusCode === 302) {
408
+ //返回的是正确的结果【四部返回格式】
409
+ return res;
410
+ } else if (res.code && res.code === 200) {
411
+ //返回的是正确的结果【公司通用返回格式】
412
+ return res;
413
+ } else if (res.code && res.code !== 200) {
410
414
  //判断出现的问题
411
415
  var _msg = res.message;
412
416
  if (!_msg) {
@@ -414,15 +418,12 @@ var NHFetch = function NHFetch(pUrl, pMethod, params, errorFunc) {
414
418
  } else if (_msg.startsWith("businessLogicError[")) {
415
419
  //自定义的提示(错误)
416
420
  _message3.default.error(_msg.substring(19, _msg.length - 1));
417
- // Modal.error({ title: '错误提示', content: msg.substring(19,msg.length-1),});
418
421
  } else if (_msg.startsWith("businessLogicWarm[")) {
419
422
  //自定义的提示(警告)
420
423
  _message3.default.warning(_msg.substring(18, _msg.length - 1));
421
- // Modal.warning({ title: '警告提示', content: msg.substring(18,msg.length-1),});
422
424
  } else if (_msg.startsWith("businessLogicInfo[")) {
423
425
  //自定义的提示(消息)
424
426
  _message3.default.info(_msg.substring(18, _msg.length - 1));
425
- // Modal.info({ title: '消息提示', content: msg.substring(18,msg.length-1),});
426
427
  } else if (_msg.startsWith("onlyDataError[")) {
427
428
  //数据唯一性异常
428
429
  onlyDataErrorTip(res);
@@ -436,28 +437,16 @@ var NHFetch = function NHFetch(pUrl, pMethod, params, errorFunc) {
436
437
  _message3.default.warn("\u53C2\u6570\u6709\u8BEF\uFF1A" + res.message);
437
438
  } else {
438
439
  _message3.default.error("系统出现异常,请联系管理员!");
439
- // Modal.error({ title: '错误提示', content:'系统出现异常,请联系管理员!'});
440
440
  }
441
441
  return undefined;
442
- } else if (res.status && res.status === 404) {
443
- _message3.default.error("系统出现异常,请联系管理员!");
444
- // Modal.error({ title: '错误提示', content:'系统出现异常,请联系管理员!'});
445
- return undefined;
446
- } else if (res && res.code && res.code === 200) {
447
- //返回的是正确的结果,公司通用放回格式
448
- return res;
449
- } else if (res && res.meta && (res.meta.statusCode === 200 || res.meta.statusCode === 302)) {
450
- //返回的是正确的结果,四部返回格式
451
- return res;
452
442
  } else {
453
443
  //剩下的情况都是有错误
454
444
  _message3.default.error("系统出现异常,请联系管理员!");
455
- // Modal.error({ title: '错误提示', content:'系统出现异常,请联系管理员!'});
456
445
  }
457
446
  //在此处统一对后台抛出来的异常进行处理
458
- return undefined;
447
+ return;
459
448
  }).catch(function (error) {
460
- console.log("请求异常:", error.message);
449
+ console.log("请求异常2:", error.message);
461
450
  _message3.default.error("系统出现异常,请联系管理员!");
462
451
  return;
463
452
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dlt-for-react",
3
- "version": "2.0.4",
3
+ "version": "2.0.5",
4
4
  "description": "dlt for react",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {