// src/utils/resquest.ts import axios from 'axios' import { useStore } from '../store/modules/user' import { showDialog, showFailToast, showNotify, showToast } from 'vant' // @ts-ignore import router from '@/router' const store = useStore() const service = axios.create({ baseURL: import.meta.env.VITE_APP_BASE_API, // 设置基础 API 地址 timeout: 50000, // 设置请求超时时间 }); // 请求拦截器 service.interceptors.request.use( (config:any) => { // 在请求发送之前做处理,如添加 token 等 if (store.token) { config.headers['Authorization'] =store.token } config.headers['Source'] = 'app' config.headers['Version'] = 'V6' config.headers['timestamp'] = JSON.stringify(Date.now()) config.headers['Content-Type'] = 'application/json' return config; }, (error:any) => { // 请求错误时做处理 showToast({duration:5000,message:'网络开小车了,检查网络'}) return Promise.reject(error); } ); // 响应拦截器 service.interceptors.response.use( (response:any) => { // 处理响应数据 const res=response.data if (res.code !== 200) { if (res.code == 600 || res.code == 601 || res.code == 401 ) { try { // @ts-ignore window.android.logout() }catch (e) { showDialog({ title: '温馨提示', message: '当前登录已过期,请重新登录!', }).then(() => { router.push('/login') }); } return } if(res.code===305 && response.config.url=='api/entryOrder/app/blind/checkBarcodeIgnoreCase'){ return res } showNotify({ message: res.message || '系统异常,请联系技术支持!', duration: 5000, }); // showToast({duration:10000,message:res.message}) return Promise.reject(res); } return res; }, (error:any) => { if (error.code === 'ECONNABORTED') { // 请求超时处理 showFailToast({ duration: 5000, message: '请求超时,请稍后重试!', wordBreak: 'break-word' }); }else if(error.code === 'ERR_NETWORK'){ showFailToast({duration:5000,message:'网络开小车了, 请稍后重试!',wordBreak:'break-word'}) }else { showNotify({ message: error.message, duration: 8000, }); } return Promise.reject(error); } ); export default service;