import baseURL from '@/api/baseURL'; let toastFlag = true; // msg toast提示 true:可提示 async function goLogin(vm, msg) { // 去到登录页 if (!toastFlag) return; await vm.$c.toast({ title: msg, mask: true }); // 删除用户信息并且跳到登录页 vm.$store.dispatch('user/ClearUserInfo'); } module.exports = (vm) => { // 初始化请求配置 uni.$u.http.setConfig((config) => { /* config 为默认全局配置*/ config.baseURL = baseURL; config.timeout = 1000 * 60; return config; }); // 请求拦截 uni.$u.http.interceptors.request.use( (config) => { config.data = config.data || {}; // 根据custom参数中配置的是否需要token,添加对应的请求头 let token = vm.$store.state.user.token; if (token) { config.header['Authorization'] = token; } return config; }, (config) => { return Promise.reject(config); } ); // 响应拦截 uni.$u.http.interceptors.response.use( (res) => { let data = res.data; const msg = data?.msg || '网络繁忙,请稍后再试'; if (data.code === 200) { toastFlag = true; // 可提示 if (res.config.header.resDetail) { return res; // 代表返回详情结果(包含响应头) } // 成功 return res.data; } if (data.code === 401) { // 登录失效 goLogin(vm, msg); // 退出登录并且清空用户信息 toastFlag = false; // 不可提示 return res.data; } vm.$c.toast(msg); return Promise.reject(`code:${data.code},msg:${msg}`); }, async (res) => { // 对错误做出提示 const msg = res.data?.msg || '网络繁忙,请稍后再试'; if (res.statusCode === 401) { goLogin(vm, msg); toastFlag = false; // 不可提示 return Promise.reject(res); } vm.$c.toast(msg); return Promise.reject(`code:${res.data.code},msg:${msg}`); } ); };