axios.js 1.7 KB

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