request.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import {
  2. login, h5Login, LoginSuccess, LoginAlready
  3. } from '@/util/login.js'
  4. import squni from '@/util/squni.js'
  5. import gloablConfig from '@/common/config.js'
  6. import store from '@/store/index.js'
  7. import squ from './squ.js'
  8. export const get = (url, params, config) =>
  9. ajax(url, params, Object.assign({
  10. method: 'GET'
  11. }, config))
  12. export const post = (url, params, config) =>
  13. ajax(url, params, Object.assign({
  14. method: 'POST'
  15. }, config))
  16. const ajax = (url, params, config) => {
  17. const accessToken = squni.getStorageSync('token')
  18. return new Promise((resolve, reject) => {
  19. uni.request({
  20. method: config.method,
  21. url: (config.baseUrl || gloablConfig.baseUrl) + url,
  22. header: Object.assign({
  23. 'Content-Type': 'application/json',
  24. [gloablConfig.Authorization]: accessToken || '',
  25. platform: squni.getStorageSync('platform')
  26. }, config.header),
  27. data: params,
  28. success(resp) {
  29. resolve(resp.data)
  30. },
  31. fail(resp) {
  32. // resp.status !== 200
  33. if (config.toast !== false) {
  34. squni.toast('请求出错')
  35. }
  36. reject(resp)
  37. },
  38. complete(resp) {
  39. // console.log(resp)
  40. if (config.check !== false) {
  41. check(resp, config)
  42. }
  43. }
  44. })
  45. })
  46. }
  47. const check = (resp, config) => {
  48. let code = resp.data && Number(resp.data.code)
  49. if (!code) {
  50. console.error(resp)
  51. code = 50000
  52. }
  53. const message = (resp.data && resp.data.message) || '未知错误'
  54. // 如果是401则跳转到登录页面
  55. if (code >= 40100 && code <= 40199) {
  56. // #ifdef MP-WEIXIN
  57. login(true).then(async res => {
  58. if (res === LoginSuccess || res === LoginAlready) {
  59. await store.dispatch('GetUserInfo')
  60. let curPage = squni.getCurPage()
  61. curPage.$vm.$emitReady()
  62. uni.redirectTo({
  63. url: '/' + curPage.route + '?' + squ.objToUrlQuery(squni.getCurQueryAll())
  64. })
  65. }
  66. })
  67. // 微信小程序静默登录
  68. return
  69. // #endif
  70. // #ifdef H5
  71. // refresh token 逻辑(先直接跳转到登录页)
  72. h5Login()
  73. // #endif
  74. }
  75. // 如果请求为非200否者默认统一处理
  76. if (code !== 20000) {
  77. if (config.toast !== false) {
  78. squni.toast(message)
  79. }
  80. }
  81. }