request.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. // src/utils/resquest.ts
  2. import axios from 'axios'
  3. import { useStore } from '../store/modules/user'
  4. import { showDialog, showFailToast, showNotify, showToast } from 'vant'
  5. // @ts-ignore
  6. import router from '@/router'
  7. const store = useStore()
  8. const service = axios.create({
  9. baseURL: import.meta.env.VITE_APP_BASE_API, // 设置基础 API 地址
  10. timeout: 50000, // 设置请求超时时间
  11. });
  12. // 请求拦截器
  13. service.interceptors.request.use(
  14. (config:any) => {
  15. // 在请求发送之前做处理,如添加 token 等
  16. if (store.token) {
  17. config.headers['Authorization'] =store.token
  18. }
  19. config.headers['Source'] = 'app'
  20. config.headers['Version'] = 'V6'
  21. config.headers['timestamp'] = JSON.stringify(Date.now())
  22. config.headers['Content-Type'] = 'application/json'
  23. return config;
  24. },
  25. (error:any) => {
  26. // 请求错误时做处理
  27. showToast({duration:5000,message:'网络开小车了,检查网络'})
  28. return Promise.reject(error);
  29. }
  30. );
  31. // 响应拦截器
  32. service.interceptors.response.use(
  33. (response:any) => {
  34. // 处理响应数据
  35. const res=response.data
  36. if (res.code !== 200) {
  37. if (res.code == 600 || res.code == 601 || res.code == 401 ) {
  38. try {
  39. // @ts-ignore
  40. window.android.logout()
  41. }catch (e) {
  42. showDialog({
  43. title: '温馨提示',
  44. message: '当前登录已过期,请重新登录!',
  45. }).then(() => {
  46. router.push('/login')
  47. });
  48. }
  49. return
  50. }
  51. if(res.code===305 && response.config.url=='api/entryOrder/app/blind/checkBarcodeIgnoreCase'){
  52. return res
  53. }
  54. showNotify({
  55. message: res.message || '系统异常,请联系技术支持!',
  56. duration: 5000,
  57. });
  58. // showToast({duration:10000,message:res.message})
  59. return Promise.reject(res);
  60. }
  61. return res;
  62. },
  63. (error:any) => {
  64. if (error.code === 'ECONNABORTED') {
  65. // 请求超时处理
  66. showFailToast({ duration: 5000, message: '请求超时,请稍后重试!', wordBreak: 'break-word' });
  67. }else if(error.code === 'ERR_NETWORK'){
  68. showFailToast({duration:5000,message:'网络开小车了, 请稍后重试!',wordBreak:'break-word'})
  69. }else {
  70. showNotify({
  71. message: error.message,
  72. duration: 8000,
  73. });
  74. }
  75. return Promise.reject(error);
  76. }
  77. );
  78. export default service;