request.js 2.6 KB

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