request.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. //用BASEURL来表示域名地址
  2. // const BASE_URL = 'http://192.168.110.153:9002'
  3. // const BASE_URL = 'https://zswl.api.jpy.wang/zswl-cloud-bdb'
  4. // const BASE_URL = 'https://api.dev.zonelife.cn'
  5. import {
  6. BASE_URL
  7. } from '@/utils/config.js'
  8. //封装请求方法
  9. export let request = (options) => {
  10. return new Promise((resolve, reject) => {
  11. //请求路径拼接,,其中options.url就是通过下面方法myRequest获取到接口部分的url
  12. //method--请求方法,不是method的post就是get
  13. //请求的参数,当没有参数的时候就是空对象
  14. request.requestTask =uni.request({
  15. url: options.url.indexOf('http')==-1?(BASE_URL + options.url):options.url,
  16. method: options.method || 'GET',
  17. data: options.data || {},
  18. header: {
  19. accessToken: uni.getStorageSync('token')
  20. },
  21. success: (res) => {
  22. if (res.statusCode !== 200) {
  23. return uni.showToast({
  24. title: '获取失败',
  25. icon: 'error',
  26. })
  27. // uni.hideLoading()
  28. } else if (res.data.msg != '成功') { //接口返回报错
  29. uni.showToast({
  30. title: res.data.content || res.data.msg || '请求失败',
  31. icon: 'none',
  32. duration:3000
  33. })
  34. console.error('报错接口:',BASE_URL + options.url,'报错信息:', res.data);
  35. // token过期或出了问题
  36. if (res.data.exception && res.data.exception.type ==
  37. 'AuthenticationCredentialsNotFoundException') {
  38. uni.showToast({
  39. title: '登录过期',
  40. icon: 'error'
  41. })
  42. if (uni.getStorageSync('refreshToken') && uni.getStorageSync('token') ) {
  43. // 刷新token
  44. uni.showLoading({
  45. title: '刷新登录中',
  46. })
  47. uni.request({
  48. url: BASE_URL + '/zswl-cloud-bdb/user/refreshToken',
  49. method: 'GET',
  50. data: {
  51. refreshToken: uni.getStorageSync('refreshToken')
  52. },
  53. success(r) {
  54. uni.hideLoading()
  55. if (r.data.content == '刷新令牌错误') {
  56. uni.showToast({
  57. title: '登录失效',
  58. icon: 'fail'
  59. })
  60. uni.clearStorageSync()
  61. uni.reLaunch({
  62. url: '/pages/index/index'
  63. })
  64. } else {
  65. uni.setStorageSync('token', r.data.content) //登录状态
  66. // 刷新页面
  67. var pages = getCurrentPages();
  68. var url = '/' + pages[pages.length - 1].route
  69. uni.reLaunch({
  70. url
  71. })
  72. }
  73. }
  74. })
  75. }else{
  76. uni.hideLoading()
  77. console.log(111);
  78. uni.showModal({
  79. title:'请登录',
  80. confirmText:'去登录',
  81. success(res){
  82. if(res.confirm){
  83. var pages = getCurrentPages()
  84. let parmas = pages[pages.length - 1].options
  85. console.log(11111,parmas);
  86. let str = ''
  87. for (let key in parmas) {
  88. str += `&${key}=${parmas[key]}`
  89. }
  90. console.log(2222222,str);
  91. var url = '/' + pages[pages.length - 1].route
  92. console.log(333333,url);
  93. uni.reLaunch({
  94. url:'/login/login/login?redirect='+url+str
  95. })
  96. }else if (res.cancel) {
  97. console.log('拒绝登录,跳转首页');
  98. uni.switchTab({
  99. url:'/pages/index/index'
  100. })
  101. }
  102. }
  103. })
  104. }
  105. }
  106. }
  107. resolve(res.data)
  108. },
  109. //请求失败
  110. fail: (err) => {
  111. uni.showToast({
  112. title: '请求接口失败'
  113. })
  114. reject(err)
  115. }
  116. })
  117. })
  118. }