axios.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. import { objToUrl } from '@/libs/tools.js';
  2. const baseUrl = getApp().globalData.baseUrl
  3. //带Token请求
  4. const request = (opts, hasToken) => {
  5. const authorization = getApp().globalData.token
  6. const curVer = getApp().globalData.version
  7. // console.log(authorization, 'authorization')
  8. // hasToken是否传入token,为true则不传token
  9. const header = {
  10. 'USER-TERM-TYPE': 'ipad', // 支付时需要用到 与pad一致
  11. 'App-Type': 2,
  12. 'Version': curVer.version?curVer.version.replace(/\./g,''):''
  13. }
  14. if(!hasToken){
  15. header.authorization = authorization
  16. }
  17. //此token是登录成功后后台返回保存在storage中的
  18. let DefaultOpts = {
  19. url: baseUrl+opts.url,
  20. data: opts.data,
  21. method: opts.method,
  22. header: opts.header ? opts.header : header
  23. }
  24. let promise = new Promise(function(resolve, reject) {
  25. uni.request(DefaultOpts).then(
  26. (res) => {
  27. console.log(res)
  28. // 是否超时已跳转
  29. let loginTimeOut = uni.getStorageSync('loginTimeOut');
  30. if(res[0]&&res[0].errMsg.indexOf('request:fail')>=0){
  31. resolve({
  32. status: 6000,
  33. message: "网络请求失败"
  34. })
  35. }
  36. let ret = res[1]
  37. if(res[1].data.status){
  38. ret = res[1].data
  39. }else if(res[1].status){
  40. ret = res[1]
  41. }
  42. if(ret.status == '200'){
  43. resolve(ret)
  44. }else{
  45. if(ret.status == '401'){ // 未登录或登录过期
  46. // 除过查询未完成订单的请求
  47. if(opts.url.indexOf("order/unFinishedOrderRunStatus")<0){
  48. uni.showToast({
  49. icon:'none',
  50. title: '未登录或登录已过期,请重新登录',
  51. duration: 5000
  52. })
  53. setTimeout(function() {
  54. const currentRoute = getRoutePath();
  55. const url = `/pages/login/pwLogin?lanuch=${currentRoute.lanuch}&path=` + encodeURIComponent(currentRoute.url);
  56. uni.redirectTo({ url });
  57. }, 1000);
  58. }
  59. }
  60. else{
  61. if(ret.status == 500){
  62. if(opts.url.indexOf("store/validateStoreAndDevice")<0&&opts.url.indexOf("couponReceives/findUsableCoupon")<0){
  63. uni.showToast({
  64. icon:'none',
  65. title: ret.message,
  66. mask: true,
  67. duration: 3000
  68. })
  69. }
  70. }
  71. }
  72. resolve(ret)
  73. }
  74. resolve(ret)
  75. }
  76. ).catch(
  77. (response) => {
  78. reject(response)
  79. }
  80. )
  81. })
  82. return promise
  83. }
  84. function getRoutePath() {
  85. // eslint-disable-next-line no-undef
  86. const pages = getCurrentPages(); // 获取加载的页面
  87. const currentPage = pages[pages.length - 1]; // 获取当前页面的对象
  88. let url = currentPage.route; // 当前页面url
  89. const options = objToUrl(currentPage.options); // 如果要获取url中所带的参数可以查看options
  90. const lanuch = [
  91. 'pages/index/index'
  92. ].includes(url);
  93. url = '/' + url;
  94. if (options.length) {
  95. url += '?' + options;
  96. }
  97. return {
  98. url,
  99. lanuch
  100. };
  101. }
  102. export default {
  103. baseUrl,
  104. request
  105. }