import conf from "@/common/config.js" /** * 响应拦截 * @param {Object} http */ module.exports = (vm) => { uni.$u.http.interceptors.response.use((response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/ // 自定义参数 let _cus = { showLoading: true, // 是否显示加载等待框 loadingTitle: '加载中', // 加载等待框的提示文字 showFailMessage: true, // 返回失败信息是否显示 catchError: true, // 是否集中管理Catch, } if (response.config && response.config.custom) Object.assign(_cus, response.config.custom) if (200 == response.statusCode) { let data = response.data if (_cus.catchError) { if (data.success) { return data.data } else { let loginTimeoutCode = "5000" let loginTimeoutPage = "/pages/login/index" if (conf.loginTimeoutCode) { loginTimeoutCode = "" + conf.loginTimeoutCode } if (conf.loginTimeoutPage) { loginTimeoutPage = conf.loginTimeoutPage } if (loginTimeoutCode === data.code) { uni.showModal({ title: '提示', content: '登录过期或失效,请重新登录!', showCancel: false, success: function(res) { uni.reLaunch({ url: loginTimeoutPage }) } }); } else { if (_cus.showFailMessage) { uni.showToast({ title: data.msg, icon: 'none', duration: 2000, }) } } return Promise.reject(data) } } else { return data } } else { console.log('response.statusCode--', response) let em = { "code": "" + response.statusCode, "data": "", "msg": "网络请求失败~", "success": false, "timestamp": new Date().getTime() } if (res.data) { em.msg = res.data } if (_cus.showFailMessage) { uni.showToast({ title: em.msg, icon: 'none', duration: 2000, }) } return Promise.reject(em) } // const data = response.data // if (data.code !== 200) { // 服务端返回的状态码不等于200,则reject() // // 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示 // if (custom.toast !== false) { // uni.$u.toast(data.message) // } // // 如果需要catch返回,则进行reject // if (custom?.catch) { // return Promise.reject(data) // } else { // // 否则返回一个pending中的promise // return new Promise(() => {}) // } // } // return data.data || {} }, (error) => { console.log('request-fail', error) let _opts = { showLoading: true, // 是否显示加载等待框 loadingTitle: '加载中', // 加载等待框的提示文字 showFailMessage: true, // 返回失败信息是否显示 catchError: true, // 是否集中管理Catch, } if (error.config && error.config.custom) Object.assign(_opts, response.config.custom) let em = { "code": "600", "data": "", "msg": "网络请求失败~", "success": false, "timestamp": new Date().getTime() } if (404 == error.statusCode) { em.code = "404" em.msg = "404,请求地址错误" } if (500 == error.statusCode) { em.code = "500" em.msg = "500,内部服务错误" } if (_opts.showFailMessage) { uni.showToast({ title: em.msg, icon: 'none', duration: 2000, }) } return Promise.reject(em) }) }