import axios from "axios"; import { useRoute, useRouter } from "vue-router"; import { useStore } from "vuex"; import { Toast, Dialog } from "vant"; // import { getItem, setItem, removeItem, dalert } from '@/com/index' const errorCode = { 401: "登录状态已过期,即将返回首页重新登录。", 403: "当前操作没有权限", 404: "访问资源不存在", default: "系统未知错误,请反馈给管理员", }; const route = useRoute(); const router = useRouter(); const store = useStore(); const loadNoCloseArr = ["/upload/face"]; // 判断当前的运行环境 process.env.NODE_ENV // isDev 为真 开发环境 --- npm run serve // isDev 为假 非开发环境(测试环境,生产环境)- npm run build const isDev = process.env.NODE_ENV === "development"; const request = axios.create({ // 根据环境 设置不同的baseURL // 如果配置了单个的反向代理 --- 字符串模式 // 如果配置了多个的反向代理 --- 对象模式 baseURL: isDev ? "http://visitor.scdswj.cn/prod-api" : "http://visitor.scdswj.cn/prod-api", // baseURL: isDev ? "http://192.168.31.124:8195" : "http://192.168.31.124:8195", }); // 'http://rap2api.taobao.org/app/mock/297766/example/1643070528065' // 请求拦截器 - 所有的请求开始之前先到此处 request.interceptors.request.use( (config) => { // 可以设置 加载的动画效果 的展示 // 在必要的路由设置一些额外的参数 ---- token信息携带放在此处 console.log(config); return config; }, (error) => { return Promise.reject(error); } ); // 响应拦截器 --- 所有请求的相应先到此处 request.interceptors.response.use( (response) => { // 可以设置 加载的动画效果 的隐藏 const code = response.data.code || 200; const message = errorCode[code] || response.data.msg || errorCode["default"]; if (code == 200) { if (loadNoCloseArr.includes(response.config.url)) { // 设置请求不关闭加载动画接口 } else { Toast.clear(); } } else { Toast.clear(); } if (code === 401) { Toast.fail(message); setTimeout(() => { localStorage.removeItem("token"); localStorage.removeItem("user"); localStorage.removeItem("userToken"); const redirectUrl = localStorage.getItem("redirect"); if (redirectUrl) { window.location.href = redirectUrl; } else { window.location.href = "/userHome"; } }, 2000); return Promise.reject("登录状态已过期,即将返回首页重新登录。"); } else if (code === 500) { // Message({ message: msg, type: 'error' }) Toast.fail(message); return Promise.reject(response.data); } else if (code === 601) { // Message({ message: msg, type: 'warning' }) Toast.fail(message); return Promise.reject("error"); } else if (code != 200) { Toast.fail(message); return Promise.reject("error"); } else { return response.data; } }, (error) => { Toast.clear(); console.log(error.message); let { message } = error; if (message == "Network Error") { message = "后端接口连接异常"; } else if (message.includes("timeout")) { message = "系统接口请求超时"; } else if (message.includes("Request failed with status code")) { message = "系统接口" + message.substr(message.length - 3) + "异常"; } console.log(message); Toast.fail(message); return Promise.reject(error.response); } ); export default request;