axios.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. const baseUrl = getApp().globalData.baseUrl
  2. //带Token请求
  3. const request = (opts, hasToken) => {
  4. const authorization = getApp().globalData.token
  5. // console.log(authorization, 'authorization')
  6. // hasToken是否传入token,为true则不传token
  7. const header = {
  8. 'USER-TERM-TYPE': 'ipad', // 支付时需要用到 与pad一致
  9. 'App-Type': 3
  10. }
  11. if(!hasToken){
  12. header.authorization = authorization
  13. }
  14. //此token是登录成功后后台返回保存在storage中的
  15. let DefaultOpts = {
  16. url: baseUrl+opts.url,
  17. data: opts.data,
  18. method: opts.method,
  19. header: header
  20. }
  21. let promise = new Promise(function(resolve, reject) {
  22. uni.request(DefaultOpts).then(
  23. (res) => {
  24. // console.log(res[1])
  25. // 是否超时已跳转
  26. let loginTimeOut = uni.getStorageSync('loginTimeOut');
  27. if(res[0]&&res[0].errMsg.indexOf('request:fail')>=0){
  28. resolve({
  29. status: 500,
  30. message: "请求网络失败"
  31. })
  32. }
  33. let ret = res[1]
  34. if(res[1].data.status){
  35. ret = res[1].data
  36. }else if(res[1].status){
  37. ret = res[1]
  38. }
  39. if(ret.status == '200'){
  40. resolve(ret)
  41. }else{
  42. if(ret.status == 1001 && loginTimeOut == 'NO'){ // 未登录或登录过期
  43. uni.showToast({
  44. icon:'none',
  45. title: ret.message,
  46. duration: 5000
  47. })
  48. uni.reLaunch({
  49. url: '/pages/login/login'
  50. })
  51. uni.setStorageSync('loginTimeOut', 'YES');
  52. }
  53. // 503
  54. if(ret.status == '503'){
  55. uni.showToast({
  56. icon:'none',
  57. title: ret.message,
  58. duration: 3000
  59. })
  60. }
  61. resolve(ret)
  62. }
  63. resolve(ret)
  64. }
  65. ).catch(
  66. (response) => {
  67. reject(response)
  68. }
  69. )
  70. })
  71. return promise
  72. }
  73. export default {
  74. baseUrl,
  75. request
  76. }