request.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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://192.168.10.135:8113';
  7. // var path=uni.getStorageSync('requestPath')
  8. // var path= "https://h5api.xintaihlwyy.cn"
  9. var path= "https://userapp.tytzhongyi.cn"//泰医堂
  10. // var path= "http://192.168.10.165:8113"
  11. // var path = 'https://userapp.his.cdwjyyh.com';
  12. // var path = 'https://app.rtys.cdwjyyh.com';
  13. // var path = "http://cde2e8d4.natappfree.cc"
  14. let token="";
  15. let type =0
  16. if(router.indexOf("/course_auto")!=-1){
  17. type = 1
  18. router =router.replace('/course_auto','')
  19. token= uni.getStorageSync('AppTokenmini_AutoCourse')
  20. }else if(router.indexOf("/course_uniapp")!=-1){
  21. type = 2;
  22. router =router.replace('/course_uniapp','')
  23. token =uni.getStorageSync('TOKEN_WEXIN')
  24. }else if(router.indexOf("/store")!=-1){
  25. router =router.replace('/store','/store')
  26. token= uni.getStorageSync('AppToken');
  27. }
  28. else{
  29. type = 0
  30. uni.setStorageSync('requestPath',path)
  31. token= uni.getStorageSync('AppToken');
  32. }
  33. // uni.showLoading({
  34. // title: '加载中'
  35. // });
  36. // var path = 'https://test.userapp.his.cdwjyyh.com';
  37. const _request = (retry = false) => {
  38. return new Promise((resolve, reject) => {
  39. let CompanyUserToken = uni.getStorageSync('CompanyUserToken');
  40. var httpContentType='application/x-www-form-urlencoded';
  41. if(contentType!=undefined){
  42. //application/json;charset=UTF-8
  43. httpContentType=contentType;
  44. }
  45. uni.request({
  46. header: {
  47. 'Content-Type': httpContentType,
  48. 'AppToken': token,
  49. 'CompanyUserToken':CompanyUserToken
  50. },
  51. url: `${path}${router}`,
  52. data: data,
  53. method: method,
  54. success: (res) => {
  55. if(type == 1) {
  56. store.commit("courseStore/SET_NETWORKERROR", '0');
  57. }
  58. //收到开发者服务器成功返回的回调函数
  59. if(res.data.code==401){//没有权限直接退出到登录界面
  60. let pages = getCurrentPages();
  61. let url = pages[ pages.length - 1]; //当前页页面实例
  62. // console.log(url)
  63. if(type == 1||type == 2) {
  64. store.commit('courseStore/setCoureLogin', 2);
  65. resolve({ code: 401, msg: '处理中', data: null });
  66. return
  67. }
  68. //如果登录界面已打开,自动关闭
  69. if(url!=undefined&&url.route=="pages/auth/login"){
  70. resolve(res.data)
  71. return;
  72. }
  73. uni.navigateTo({
  74. url:'/pages/auth/login',
  75. success: () => {
  76. },
  77. fail: () => {
  78. }
  79. })
  80. return;
  81. }
  82. if (res.data.token&&type == 0) {
  83. uni.setStorageSync('AppToken',res.data.token)
  84. }
  85. resolve(res.data)
  86. },
  87. fail:(err) =>{
  88. //接口调用失败的回调函数
  89. // 看课页面网络异常,刷新重试
  90. const excludeRouter = ['/app/course/updateWatchDuration','/app/course/getInternetTraffic','/app/course/getIntegralByH5Video','/app/course/getErrMsg']
  91. if (excludeRouter.indexOf(router) == -1 &&type == 1&&err.errMsg.indexOf('request:fail') !== -1) {
  92. // // 第一次失败 -> 重试
  93. // if (!retry) {
  94. // _request(true).then(resolve).catch(reject);
  95. // return;
  96. // }
  97. // 第二次仍失败
  98. store.commit("courseStore/SET_NETWORKERROR", '1');
  99. }
  100. reject(err);
  101. },
  102. complete:(res) =>{
  103. //接口调用结束的回调函数(调用成功、失败都会执行)
  104. if (res.data &&res.data.code == 401) {
  105. return false
  106. }
  107. //uni.hideLoading();
  108. }
  109. })
  110. })
  111. };
  112. return _request(); // 第一次调用
  113. }
  114. }