diff --git a/src/api/user.js b/src/api/user.js index d1417821..92fe16f7 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -7,10 +7,11 @@ export function login(data) { data }) } -export function loginOut() { +export function loginOut(params) { return request({ url: `/User/loginOut`, - method: 'get' + method: 'get', + params }) } export function getAllDictionary() { diff --git a/src/store/modules/user.js b/src/store/modules/user.js index c9cfdae0..21de24d4 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -181,8 +181,10 @@ const actions = { // user logout async logout({ commit, state }) { try { - await loginOut() removeToken() // must remove token first + await loginOut({ + Userd: zzSessionStorage.getItem('userId') + }) resetRouter() removeName() zzSessionStorage.clear() diff --git a/src/utils/request.js b/src/utils/request.js index 685f7ff3..d8601758 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -20,7 +20,7 @@ service.interceptors.request.use( path = router && router.app && router.app._route && router.app._route.path config.headers['Content-Type'] = 'application/json;charset=UTF-8' var language = zzSessionStorage.getItem('lang') - config.headers['Accept-Language'] = language === 'en'?'en-US,en;q=0.5':'zh-CN,zh;q=0.9' + config.headers['Accept-Language'] = language === 'en' ? 'en-US,en;q=0.5' : 'zh-CN,zh;q=0.9' config.headers['TimeZoneId'] = moment.tz.guess() if (store.getters.token) { config.headers.Authorization = `Bearer ${store.getters.token}` @@ -33,7 +33,7 @@ service.interceptors.request.use( if (store.state.user.userId !== zzSessionStorage.getItem('userId')) { window.location.href = `/login` zzSessionStorage.removeItem('lastWorkbench') - Alert(store.state.lang.language === 'en'? 'The same browser only allows one user account to be logged in at a time.' : '同一浏览器只允许同时登陆一个账户', { + Alert(store.state.lang.language === 'en' ? 'The same browser only allows one user account to be logged in at a time.' : '同一浏览器只允许同时登陆一个账户', { type: 'warning', }) } @@ -49,21 +49,21 @@ service.interceptors.request.use( } ) -var isConfirm = true +let timer = null; +let time = 1000; service.interceptors.response.use( response => { const res = response.data if (res.IsSuccess) { - isConfirm = true return Promise.resolve(res) } else if (res.IsSuccess === false) { if (res.Code !== 5) { - MessageBox.confirm(res.ErrorMessage, { + MessageBox.confirm(res.ErrorMessage, { type: 'warning', showCancelButton: false, callback: action => { - if(res.Code === 6) { + if (res.Code === 6) { window.close() } } @@ -87,29 +87,29 @@ service.interceptors.response.use( }) } switch (status) { - case 400: message = store.state.lang.language === 'en'? 'Request error' : '请求错误'; break - case 401: message = store.state.lang.language === 'en'? 'Not authorized or login timed out. Please log in again.' : '未授权或登陆超时,请重新登录'; break + case 400: message = store.state.lang.language === 'en' ? 'Request error' : '请求错误'; break + case 401: message = store.state.lang.language === 'en' ? 'Not authorized or login timed out. Please log in again.' : '未授权或登陆超时,请重新登录'; break case 403: message = error.response.data.ErrorMessage; break - case 404: message = store.state.lang.language === 'en'? 'Request address error' : `请求地址出错`; break - case 405: message = store.state.lang.language === 'en'? 'Interface parameter error or request method inconsistency' : `接口参数传递错误,或者请求方法不一致`; break - case 408: message = store.state.lang.language === 'en'? 'Request timed out' : '请求超时'; break - case 429: message = store.state.lang.language === 'en'? 'The application service limits the traffic. Your requests are too frequent. Please try again later.' : '应用服务限流,您的请求过于频繁,请稍后再试'; break - case 500: message = store.state.lang.language === 'en'? 'Internal server error, and unable to complete the request. Software release might be in process. Please contact the administrator.' : '服务器内部错误,无法完成请求;可能正在发布中,请联系管理员处理'; break - case 501: message = store.state.lang.language === 'en'? 'Service has not been implemented.' : '服务未实现'; break - case 502: message = store.state.lang.language === 'en'? 'System is being upgraded. Please wait patiently.' : '系统正在升级,请耐心等待。'; break - case 503: message = store.state.lang.language === 'en'? 'Service is not available' : '服务不可用'; break - case 504: message = store.state.lang.language === 'en'? 'Gateway timed out' : '网关超时'; break - case 505: message = store.state.lang.language === 'en'? 'HTTP version is not supported' : 'HTTP版本不受支持'; break + case 404: message = store.state.lang.language === 'en' ? 'Request address error' : `请求地址出错`; break + case 405: message = store.state.lang.language === 'en' ? 'Interface parameter error or request method inconsistency' : `接口参数传递错误,或者请求方法不一致`; break + case 408: message = store.state.lang.language === 'en' ? 'Request timed out' : '请求超时'; break + case 429: message = store.state.lang.language === 'en' ? 'The application service limits the traffic. Your requests are too frequent. Please try again later.' : '应用服务限流,您的请求过于频繁,请稍后再试'; break + case 500: message = store.state.lang.language === 'en' ? 'Internal server error, and unable to complete the request. Software release might be in process. Please contact the administrator.' : '服务器内部错误,无法完成请求;可能正在发布中,请联系管理员处理'; break + case 501: message = store.state.lang.language === 'en' ? 'Service has not been implemented.' : '服务未实现'; break + case 502: message = store.state.lang.language === 'en' ? 'System is being upgraded. Please wait patiently.' : '系统正在升级,请耐心等待。'; break + case 503: message = store.state.lang.language === 'en' ? 'Service is not available' : '服务不可用'; break + case 504: message = store.state.lang.language === 'en' ? 'Gateway timed out' : '网关超时'; break + case 505: message = store.state.lang.language === 'en' ? 'HTTP version is not supported' : 'HTTP版本不受支持'; break default: break } if (error.response.status === 401) { if (store.getters.token) { - if(message !== ''){ - Message({ + if (message !== '') { + setTimer({ message: message, type: 'warning', showClose: true - }) + }, 'message') } store.dispatch('user/logout').then(() => { router.push(`/login`) @@ -118,34 +118,52 @@ service.interceptors.response.use( this.$updateDictionary() }) } else { - Message({ - message: store.state.lang.language === 'en'? 'You are not authorized to access the interface' : '您无权访问接口', + setTimer({ + message: store.state.lang.language === 'en' ? 'You are not authorized to access the interface' : '您无权访问接口', type: 'warning', showClose: true - }) + }, 'message') } } else { - if(message !== '' && isConfirm){ - MessageBox.confirm(message, store.state.lang.language === 'en'? 'Warning' : '警告', { + if (message !== '') { + setTimer([message, store.state.lang.language === 'en' ? 'Warning' : '警告', { type: 'warning', showCancelButton: false, - callback: action => {} - }) + callback: action => { } + }], 'confirm') } } } - if (!window.navigator.onLine && isConfirm) { - MessageBox.confirm(store.state.lang.language === 'en'? 'Please check your network,and try again later!' : '请检查网络,稍后重试!', store.state.lang.language === 'en'? 'Warning' : '警告', { - type: 'warning', - showCancelButton: false, - callback: action => {} - }) - isConfirm = false + if (!window.navigator.onLine) { + setTimer( + [store.state.lang.language === 'en' ? 'Please check your network,and try again later!' : '请检查网络,稍后重试!', store.state.lang.language === 'en' ? 'Warning' : '警告', { + type: 'warning', + showCancelButton: false, + callback: action => { } + }], "confirm" + ) } return Promise.reject(new Error(message || 'Error')) } ) +const setTimer = (obj, type) => { + if (timer) { + clearTimeout(timer); + timer = null; + } + timer = setTimeout(() => { + if (type === 'message') { + Message(obj) + } + if (type === 'confirm') { + MessageBox.confirm(...obj) + } + clearTimeout(timer); + timer = null; + }, time) +} +