axios.js 3.0 KB

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