request.js
5.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import { getToken, setTime, removeTime, removeToken } from '@/utils/auth'
import errorCode from '@/utils/errorCode'
import i18n from '@/assets/languages'
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// 创建axios实例
const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API,
// 超时
timeout: 1800000
})
// request拦截器
service.interceptors.request.use(config => {
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// if (getToken() && !isToken) {
config.headers['Authorization'] = getToken() == null ? '1' : 'Bearer ' + getToken()// 让每个请求携带自定义token 请根据实际情况自行修改
// }
config.headers['Lang'] = localStorage.getItem('iClearExpLang') ? localStorage.getItem('iClearExpLang') : '1'
config.headers['Ver'] = process.env.VUE_APP_APIVERSION
// 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) + "&";
}
}
}
url = url.slice(0, -1);
config.params = {};
config.url = url;
}
// let token = getToken() != null ? getToken().split('.')[0] : null
// let userType = store.getters.userData.organization ? store.getters.userData.organization.code : null
// if ((token == '2' && userType != null && userType != 'customer') || (token == '1' && userType == 'customer')) {
// config.url = ''
// MessageBox.alert('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', {
// confirmButtonText: '重新登录',
// cancelButtonText: '取消',
// type: 'warning'
// }
// ).then(() => {
// store.dispatch('FedLogOut')
// })
// return config
// } else {
return config
// }
}, error => {
console.log(error)
Promise.reject(error)
})
// 响应拦截器
service.interceptors.response.use(res => {
if (res.config.url != '/manager-server/systemAddressInfoController/findSystemAddressInfoAll') {
setTime(new Date().getTime())
}
// 未设置状态码则默认成功状态
const code = Number(res.data.code) || 200;
// 获取错误信息
const msg = errorCode[code] || res.data.message || errorCode['default']
if (code === 50000) {
removeToken()
MessageBox.alert(i18n.t('system.loginOut'), i18n.t('system.systemTip'), {
confirmButtonText: i18n.t('system.relogin'),
cancelButtonText: i18n.t('system.close'),
type: 'warning'
}
).finally(() => {
store.dispatch('FedLogOut')
})
} else if (code === 10005) {
removeToken()
MessageBox.alert('<span style="font-weight:700">系统版本已更新!</span><br/>当前版本非最新版,请退出系统后刷新您当前所使用的浏览器后,重新登录系统!</br> </br>常用浏览器的快速刷新页面操作方法有:</br>1、谷歌浏览器请按“F5键”或“Ctrl键 + R键”快速刷新页面</br>2、360浏览器跟EDGE浏览器请按“Ctrl键 + R键”快速刷新页面</br>3、IE浏览器请按“F5键”或“Ctrl键 + R键”快速刷新页面</br> </br>其它浏览器的刷新方式请根据浏览器的菜单进行操作!', i18n.t('system.systemTip'), {
confirmButtonText: i18n.t('system.relogin'),
cancelButtonText: i18n.t('system.close'),
type: 'warning',
customClass: 'systemVerError',
dangerouslyUseHTMLString: true
}
).finally(() => {
store.dispatch('FedLogOut')
})
} else if (code === 500) {
MessageBox.alert(msg, i18n.t('system.tipTitle2'), {
dangerouslyUseHTMLString: true
});
return Promise.reject(new Error(msg))
} else if (code === 530) {
store.dispatch('FedLogOut')
} else if (code !== 200) {
// MessageBox.alert(msg, '注意', {
// dangerouslyUseHTMLString: true
// });
return res.data
} else {
return res.data
}
},
error => {
removeTime()
console.log('err' + error)
let { message } = error;
if (message == "Network Error") {
message = i18n.t('system.systemError1');
}
else if (message.includes("timeout")) {
message = i18n.t('system.systemError2');
}
else if (message.includes("Request failed with status code")) {
message = i18n.t('system.systemError3', { a: message.substr(message.length - 3) });
}
Message({
message: message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
)
export default service