request.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // uni-app请求封装
  2. import store from "@/store";
  3. export default class Request {
  4. http(router, data = {}, method, contentType, url) {
  5. let that = this;
  6. // let path = 'http://127.0.0.1:8113';
  7. var path = uni.getStorageSync('requestPath')
  8. // var path = 'https://userapp.his.cdwjyyh.com';
  9. // var path = 'https://app.rtys.cdwjyyh.com';
  10. let token = "";
  11. let pathType = 0
  12. if (url != null) {
  13. path = url;
  14. // path= 'http://f83b9428.natappfree.cc';
  15. pathType = 1
  16. token = uni.getStorageSync('AppTokenmini_RTCourse')
  17. } else {
  18. pathType = 0
  19. uni.setStorageSync('requestPath', path)
  20. token = uni.getStorageSync('AppToken');
  21. }
  22. // uni.showLoading({
  23. // title: '加载中'
  24. // });
  25. // 内部真正发请求的方法
  26. const _request = (retry = false) => {
  27. return new Promise((resolve, reject) => {
  28. let CompanyUserToken = uni.getStorageSync('CompanyUserToken');
  29. var httpContentType='application/x-www-form-urlencoded';
  30. if(contentType!=undefined){
  31. //application/json;charset=UTF-8
  32. httpContentType=contentType;
  33. }
  34. uni.request({
  35. header: {
  36. 'Content-Type': httpContentType,
  37. 'AppToken': token,
  38. 'CompanyUserToken':CompanyUserToken
  39. },
  40. url: `${path}${router}`,
  41. data,
  42. method,
  43. success: (res) => {
  44. if(pathType == 1) {
  45. store.commit("networkErrorInfo/setStatus", '0');
  46. }
  47. //没有权限直接退出到登录界面
  48. if (res.data.code == 401) {
  49. const pages = getCurrentPages();
  50. const cur = pages[pages.length - 1];
  51. if (cur && cur.route == 'pages/auth/login') {
  52. resolve(res.data);
  53. return;
  54. }
  55. uni.navigateTo({
  56. url: '/pages/auth/login'
  57. });
  58. return;
  59. }
  60. // 更新 token
  61. if (res.data.token && pathType == 0) {
  62. uni.setStorageSync('AppToken', res.data.token);
  63. }
  64. resolve(res.data);
  65. },
  66. fail: (err) => {
  67. // 看课页面网络异常,刷新重试
  68. const excludeRouter = ['/app/course/updateWatchDuration','/app/course/getInternetTraffic','/app/course/getIntegralByH5Video','/app/course/getErrMsg']
  69. if (excludeRouter.indexOf(router) == -1 &&pathType == 1&&err.errMsg.indexOf('request:fail') !== -1) {
  70. // // 第一次失败 -> 重试
  71. // if (!retry) {
  72. // _request(true).then(resolve).catch(reject);
  73. // return;
  74. // }
  75. // 第二次仍失败
  76. store.commit("networkErrorInfo/setStatus", '1');
  77. }
  78. reject(err);
  79. },
  80. complete: (res) => {
  81. if (res.data && res.data.code == 401) return;
  82. }
  83. });
  84. });
  85. };
  86. return _request(); // 第一次调用
  87. }
  88. }