接口错误返回多次弹窗问题

uat_us
wangxiaoshuang 2024-05-31 14:09:24 +08:00
parent e8ddecfc68
commit 1b66fd6573
3 changed files with 59 additions and 38 deletions

View File

@ -7,10 +7,11 @@ export function login(data) {
data data
}) })
} }
export function loginOut() { export function loginOut(params) {
return request({ return request({
url: `/User/loginOut`, url: `/User/loginOut`,
method: 'get' method: 'get',
params
}) })
} }
export function getAllDictionary() { export function getAllDictionary() {

View File

@ -181,8 +181,10 @@ const actions = {
// user logout // user logout
async logout({ commit, state }) { async logout({ commit, state }) {
try { try {
await loginOut()
removeToken() // must remove token first removeToken() // must remove token first
await loginOut({
Userd: zzSessionStorage.getItem('userId')
})
resetRouter() resetRouter()
removeName() removeName()
zzSessionStorage.clear() zzSessionStorage.clear()

View File

@ -20,7 +20,7 @@ service.interceptors.request.use(
path = router && router.app && router.app._route && router.app._route.path path = router && router.app && router.app._route && router.app._route.path
config.headers['Content-Type'] = 'application/json;charset=UTF-8' config.headers['Content-Type'] = 'application/json;charset=UTF-8'
var language = zzSessionStorage.getItem('lang') 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() config.headers['TimeZoneId'] = moment.tz.guess()
if (store.getters.token) { if (store.getters.token) {
config.headers.Authorization = `Bearer ${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')) { if (store.state.user.userId !== zzSessionStorage.getItem('userId')) {
window.location.href = `/login` window.location.href = `/login`
zzSessionStorage.removeItem('lastWorkbench') 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', type: 'warning',
}) })
} }
@ -49,21 +49,21 @@ service.interceptors.request.use(
} }
) )
var isConfirm = true let timer = null;
let time = 1000;
service.interceptors.response.use( service.interceptors.response.use(
response => { response => {
const res = response.data const res = response.data
if (res.IsSuccess) { if (res.IsSuccess) {
isConfirm = true
return Promise.resolve(res) return Promise.resolve(res)
} else if (res.IsSuccess === false) { } else if (res.IsSuccess === false) {
if (res.Code !== 5) { if (res.Code !== 5) {
MessageBox.confirm(res.ErrorMessage, { MessageBox.confirm(res.ErrorMessage, {
type: 'warning', type: 'warning',
showCancelButton: false, showCancelButton: false,
callback: action => { callback: action => {
if(res.Code === 6) { if (res.Code === 6) {
window.close() window.close()
} }
} }
@ -87,29 +87,29 @@ service.interceptors.response.use(
}) })
} }
switch (status) { switch (status) {
case 400: message = store.state.lang.language === 'en'? 'Request error' : '请求错误'; 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 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 403: message = error.response.data.ErrorMessage; break
case 404: message = store.state.lang.language === 'en'? 'Request address error' : `请求地址出错`; 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 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 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 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 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 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 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 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 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 505: message = store.state.lang.language === 'en' ? 'HTTP version is not supported' : 'HTTP版本不受支持'; break
default: break default: break
} }
if (error.response.status === 401) { if (error.response.status === 401) {
if (store.getters.token) { if (store.getters.token) {
if(message !== ''){ if (message !== '') {
Message({ setTimer({
message: message, message: message,
type: 'warning', type: 'warning',
showClose: true showClose: true
}) }, 'message')
} }
store.dispatch('user/logout').then(() => { store.dispatch('user/logout').then(() => {
router.push(`/login`) router.push(`/login`)
@ -118,34 +118,52 @@ service.interceptors.response.use(
this.$updateDictionary() this.$updateDictionary()
}) })
} else { } else {
Message({ setTimer({
message: store.state.lang.language === 'en'? 'You are not authorized to access the interface' : '您无权访问接口', message: store.state.lang.language === 'en' ? 'You are not authorized to access the interface' : '您无权访问接口',
type: 'warning', type: 'warning',
showClose: true showClose: true
}) }, 'message')
} }
} else { } else {
if(message !== '' && isConfirm){ if (message !== '') {
MessageBox.confirm(message, store.state.lang.language === 'en'? 'Warning' : '警告', { setTimer([message, store.state.lang.language === 'en' ? 'Warning' : '警告', {
type: 'warning', type: 'warning',
showCancelButton: false, showCancelButton: false,
callback: action => {} callback: action => { }
}) }], 'confirm')
} }
} }
} }
if (!window.navigator.onLine && isConfirm) { if (!window.navigator.onLine) {
MessageBox.confirm(store.state.lang.language === 'en'? 'Please check your networkand try again later' : '请检查网络,稍后重试!', store.state.lang.language === 'en'? 'Warning' : '警告', { setTimer(
type: 'warning', [store.state.lang.language === 'en' ? 'Please check your networkand try again later' : '请检查网络,稍后重试!', store.state.lang.language === 'en' ? 'Warning' : '警告', {
showCancelButton: false, type: 'warning',
callback: action => {} showCancelButton: false,
}) callback: action => { }
isConfirm = false }], "confirm"
)
} }
return Promise.reject(new Error(message || 'Error')) 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)
}