diff --git a/src/utils/request.js b/src/utils/request.js index a4b60e5f..69c5697c 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -14,145 +14,156 @@ const service = axios.create({ // 超时 timeout: 100000 }) -// request拦截器 -service.interceptors.request.use(config => { - // Toast.loading({ - // message: '加载中...', - // forbidClick: true, - // duration: 0 - // }); - // 是否需要设置 token - const isToken = (config.headers || {}).isToken === false - if (getToken() && !isToken) { - config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 - } - // get请求映射params参数 - if (config.method === 'get' && config.params) { - let url = config.url + '?'; - for (const propName of Object.keys(config.params)) { - const value = config.params[propName]; - var part = encodeURIComponent(propName) + "="; - if (value !== null && typeof (value) !== "undefined") { - if (typeof value === 'object') { - for (const key of Object.keys(value)) { - let params = propName + '[' + key + ']'; - var subPart = encodeURIComponent(params) + "="; - url += subPart + encodeURIComponent(value[key]) + "&"; +let requestInterceptor; +if(requestInterceptor === undefined){ + // request拦截器 + requestInterceptor = service.interceptors.request.use(config => { + // Toast.loading({ + // message: '加载中...', + // forbidClick: true, + // duration: 0 + // }); + // 是否需要设置 token + const isToken = (config.headers || {}).isToken === false + if (getToken() && !isToken) { + config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改 + } + // get请求映射params参数 + if (config.method === 'get' && config.params) { + let url = config.url + '?'; + for (const propName of Object.keys(config.params)) { + const value = config.params[propName]; + var part = encodeURIComponent(propName) + "="; + if (value !== null && typeof (value) !== "undefined") { + if (typeof value === 'object') { + for (const key of Object.keys(value)) { + let params = propName + '[' + key + ']'; + var subPart = encodeURIComponent(params) + "="; + url += subPart + encodeURIComponent(value[key]) + "&"; + } + } else { + url += part + encodeURIComponent(value) + "&"; } - } else { - url += part + encodeURIComponent(value) + "&"; } } + url = url.slice(0, -1); + config.params = {}; + config.url = url; } - url = url.slice(0, -1); - config.params = {}; - config.url = url; - } - return config -}, error => { - console.log(error) - Promise.reject(error) -}) + return config + }, error => { + console.log(error) + Promise.reject(error) + }) +} + // 响应拦截器 -service.interceptors.response.use(res => { - Toast.clear(); - // 未设置状态码则默认成功状态 - const code = res.data.code || 200; - // 获取错误信息 - const msg = errorCode[code] || res.data.msg || errorCode['default'] +let responseInterceptor; +let gqnum = 0; +if(responseInterceptor === undefined){ + responseInterceptor = service.interceptors.response.use(res => { +console.info(responseInterceptor); + Toast.clear(); + // 未设置状态码则默认成功状态 + const code = res.data.code || 200; + // 获取错误信息 + const msg = errorCode[code] || res.data.msg || errorCode['default'] + console.info(gqnum); + if (code === 401 && gqnum === 0) { + console.info(11111111) + gqnum++; + Dialog.confirm({ + title: '系统提示', + message: '登录状态已过期,请重新登录', + confirmButtonText: '重新登录', + cancelButtonText: '取消' + }) + .then(() => { + store.dispatch('LogOut').then(() => { + try { + let loginUrl = Cookies.get("_Login_url"); + if(loginUrl && loginUrl.indexOf("onlineHomeLogin") !== -1) { + window.location.href = loginUrl; + return; + } + } catch (e) { console.log(e); } + + if (window.location.href.indexOf('/lawEnforcement') != -1) { + // 农业执法 + window.location.href = '/lawEnforcement/login'; + return; + }else if (window.location.href.indexOf('/authenticRight') != -1) { + // 确权回头看 + window.location.href = '/authenticRight/login'; + return; + }else if (window.location.href.indexOf('/homesteadSurvey') != -1) { + // 宅基地调查 + window.location.href = '/homesteadLogin'; + return; + }else if (window.location.href.indexOf('/yinnong') != -1) { + // 事项审批 + window.location.href = '/yinnongLogin'; + return; + }else if (window.location.href.indexOf('/sunVillage_info/') != -1) { + // 阳光村务 + window.location.href = '/sunVillage_info/login'; + return; + }else if (window.location.href.indexOf('/homestead/') != -1) { + // 两清三化 + window.location.href = '/homestead/login'; + return; + }else if (window.location.href.indexOf('/agriculturalTrusteeship') != -1){ + // 生产托管 + window.location.href = '/agriculturalTrusteeship/login'; + return; + } else if (window.location.href.indexOf('/contracted') != -1){ + // 土地确权 + window.location.href = '/contracted/login'; + return; + }else{ + // 产权交易 + window.location.href = '/login'; + } - if (code === 401) { - Dialog.confirm({ - title: '系统提示', - message: '登录状态已过期,请重新登录', - confirmButtonText: '重新登录', - cancelButtonText: '取消' + }) + }) + } else if (code === 500) { + Dialog.alert({ type: 'warning', message: msg }); + return Promise.reject(new Error(msg)) + } else if (code !== 200 && code !== 401) { + Dialog.alert({ type: 'warning', message: msg }); + return Promise.reject('error') + } else { + return res.data + } + }, + error => { + console.log('err' + error) + 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) + "异常"; + } + Toast.clear(); + // Message({ + // message: message, + // type: 'error', + // duration: 5 * 1000 + // }) + Dialog.alert({ type: 'warning', message: message }); + return Promise.reject(error) }) - .then(() => { - store.dispatch('LogOut').then(() => { - try { - let loginUrl = Cookies.get("_Login_url"); - if(loginUrl && loginUrl.indexOf("onlineHomeLogin") !== -1) { - window.location.href = loginUrl; - return; - } - } catch (e) { console.log(e); } - // 农业执法 - if (window.location.href.indexOf('/lawEnforcement') != -1) { - window.location.href = '/lawEnforcement/login'; - return; - } - // 确权回头看 - if (window.location.href.indexOf('/authenticRight') != -1) { - window.location.href = '/authenticRight/login'; - return; - } - // 宅基地调查 - if (window.location.href.indexOf('/homesteadSurvey') != -1) { - window.location.href = '/homesteadLogin'; - return; - } - // 事项审批 - if (window.location.href.indexOf('/yinnong') != -1) { - window.location.href = '/yinnongLogin'; - return; - } - // 阳光村务 - if (window.location.href.indexOf('/sunVillage_info/') != -1) { - window.location.href = '/sunVillage_info/login'; - return; - } - // 两清三化 - if (window.location.href.indexOf('/homestead/') != -1) { - window.location.href = '/homestead/login'; - return; - } - // 生产托管 - if (window.location.href.indexOf('/agriculturalTrusteeship') != -1){ - window.location.href = '/agriculturalTrusteeship/login'; - return; - } - // 土地确权 - if (window.location.href.indexOf('/contracted') != -1){ - window.location.href = '/contracted/login'; - return; - } - // 产权交易 - window.location.href = '/login'; - }) - }) - } else if (code === 500) { - Dialog.alert({ type: 'warning', message: msg }); - return Promise.reject(new Error(msg)) - } else if (code !== 200) { - Dialog.alert({ type: 'warning', message: msg }); - return Promise.reject('error') - } else { - return res.data - } -}, - error => { - console.log('err' + error) - 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) + "异常"; - } - Toast.clear(); - // Message({ - // message: message, - // type: 'error', - // duration: 5 * 1000 - // }) - Dialog.alert({ type: 'warning', message: message }); - return Promise.reject(error) - } -) +} + +// // 取消请求拦截器 +// instance.interceptors.request.eject(requestInterceptor); +// // 取消响应拦截器 +// instance.interceptors.response.eject(responseInterceptor); export default service