request.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import {baseUrl} from './config.js'
  2. import store from '@/store/index.js'
  3. // 请求错误消息提示
  4. const showError=error=>{
  5. let errMsg=''
  6. switch(error.code){
  7. case 400:
  8. errMsg=error.msg;
  9. break;
  10. default:
  11. errMsg=error.msg;
  12. break;
  13. }
  14. uni.showToast({
  15. title:errMsg,
  16. icon:'none',
  17. duration:1000
  18. })
  19. }
  20. // 请求数
  21. let LOADINGCOUNT = 0;
  22. const http=(url,params,method)=>{
  23. // 设置loading
  24. if (LOADINGCOUNT === 0) {
  25. uni.showLoading({
  26. title:'加载中...'
  27. })
  28. }
  29. LOADINGCOUNT++;
  30. return new Promise((resolve,reject)=>{
  31. uni.request({
  32. url:baseUrl+url,
  33. data:params,
  34. method:method,
  35. header:{
  36. Authorization:store.state.token,
  37. },
  38. success(res) {
  39. if(res.data.code!==200){
  40. setTimeout(()=>{showError(res.data)},0)//解决 hideloading 冲突问题
  41. }
  42. //401 代表token异常,用户需要重新静默授权,获取最新的token
  43. //403 用户需要进行绑定操作,需要跳转到输入账号密码绑定页面用户需要进行绑定操作
  44. if(res.data.code===401||res.data.code===403){
  45. uni.navigateTo({
  46. url:"/pages/login/login"
  47. })
  48. }
  49. resolve(res.data)
  50. },
  51. fail(error) {
  52. console.log(error);
  53. setTimeout(() => {
  54. uni.showToast({
  55. title:'服务器错误',
  56. icon:'none'
  57. })
  58. }, 0);
  59. },
  60. complete() {
  61. // 关闭loading
  62. LOADINGCOUNT--;
  63. if (LOADINGCOUNT === 0) {
  64. uni.hideLoading()
  65. }
  66. }
  67. })
  68. })
  69. }
  70. // get 请求
  71. export const httpGet=(url,params)=>{
  72. return http(url,params,'GET')
  73. }
  74. // post 请求
  75. export const httpPost=(url,params)=>{
  76. return http(url,params,'POST')
  77. }