接口错误返回多次弹窗问题
parent
e8ddecfc68
commit
1b66fd6573
|
@ -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() {
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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,13 +49,13 @@ 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) {
|
||||
|
@ -63,7 +63,7 @@ service.interceptors.response.use(
|
|||
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' : '警告', {
|
||||
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 => {}
|
||||
})
|
||||
isConfirm = 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)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue