axios.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. // 是否超时已跳转
  31. let loginTimeOut = uni.getStorageSync('loginTimeOut');
  32. if(res[0]&&res[0].errMsg.indexOf('request:fail')>=0){
  33. resolve({
  34. status: 6000,
  35. message: "网络请求失败"
  36. })
  37. }
  38. let ret = res[1]
  39. if(!ret.status){
  40. ret.status = ret.statusCode
  41. }
  42. if(res[1].data.status){
  43. ret = res[1].data
  44. }else if(res[1].status){
  45. ret = res[1]
  46. }
  47. if(ret.status == '200'){
  48. resolve(ret)
  49. }else{
  50. if(ret.status == '401' || ret.status == '1099'){ // 未登录或登录过期
  51. // 除过查询未完成订单的请求
  52. // if(opts.url.indexOf("order/unFinishedOrderRunStatus")<0){
  53. uni.showToast({
  54. icon:'none',
  55. title: '未登录或登录已过期,请重新登录',
  56. duration: 5000
  57. })
  58. setTimeout(function() {
  59. const currentRoute = getRoutePath();
  60. const url = `/pages/login/login`
  61. uni.redirectTo({ url })
  62. }, 1000)
  63. // }
  64. }
  65. else{
  66. console.log(opts.url,'opts.url')
  67. if(ret.status == 500){
  68. if(
  69. opts.url.indexOf("shelfReplenish/detail/outScan")<0&&
  70. opts.url.indexOf("shelfReplenish/detail/queryByProductQrCode")<0){
  71. uni.showToast({
  72. icon:'none',
  73. title: ret.message,
  74. mask: true,
  75. duration: 3000
  76. })
  77. }
  78. }
  79. }
  80. resolve(ret)
  81. }
  82. // ret.status = ret.statusCode // mock数据结构改造
  83. resolve(ret)
  84. }
  85. ).catch(
  86. (response) => {
  87. reject(response)
  88. }
  89. )
  90. })
  91. return promise
  92. }
  93. function getRoutePath() {
  94. // eslint-disable-next-line no-undef
  95. const pages = getCurrentPages(); // 获取加载的页面
  96. const currentPage = pages[pages.length - 1]; // 获取当前页面的对象
  97. let url = currentPage.route; // 当前页面url
  98. const options = objToUrl(currentPage.options); // 如果要获取url中所带的参数可以查看options
  99. const lanuch = [
  100. 'pages/index/index'
  101. ].includes(url);
  102. url = '/' + url;
  103. if (options.length) {
  104. url += '?' + options;
  105. }
  106. return {
  107. url,
  108. lanuch
  109. };
  110. }
  111. export default {
  112. baseUrl,
  113. request
  114. }