mirror of
http://112.124.100.131/ebiz-ai/ebiz-ai-knowledge-manage.git
synced 2025-12-10 11:26:50 +08:00
130 lines
3.5 KiB
JavaScript
130 lines
3.5 KiB
JavaScript
import axios from 'axios'
|
||
import { MessageBox, Message, Loading } from 'element-ui'
|
||
import store from '@/store'
|
||
import { getToken } from '@/assets/js/utils/auth'
|
||
|
||
// create an axios instance
|
||
const service = axios.create({
|
||
baseURL: '', // url = base url + request url
|
||
timeout: 600000 // request timeout
|
||
})
|
||
|
||
let loading
|
||
function startLoading() {
|
||
//使用Element loading-start 方法
|
||
loading = Loading.service({
|
||
target: '.main-container'
|
||
})
|
||
}
|
||
function endLoading() {
|
||
//使用Element loading-close 方法
|
||
if (loading) {
|
||
loading.close()
|
||
}
|
||
}
|
||
|
||
// request interceptor
|
||
service.interceptors.request.use(
|
||
config => {
|
||
if (store.getters.token) {
|
||
// config.headers['sid'] = getToken()
|
||
config.headers['sysType'] = '3'
|
||
config.headers['auth'] = getToken()
|
||
}
|
||
if (loading) {
|
||
endLoading()
|
||
}
|
||
|
||
// console.log(config.noLoading)
|
||
//linkage 接口
|
||
// config.type 可以从api的接口地址定义 可以不触发loading
|
||
if (config.noLoading != true) {
|
||
startLoading()
|
||
}
|
||
return config
|
||
},
|
||
error => {
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
// response interceptor
|
||
service.interceptors.response.use(
|
||
response => {
|
||
const res = response.data
|
||
endLoading()
|
||
|
||
if (response.config.back) {
|
||
return response.data
|
||
}
|
||
// 检查res.content是否存在,处理blob等特殊响应类型
|
||
if (res.content) {
|
||
if (res.content.code) {
|
||
res.content.result = res.content.code
|
||
}
|
||
if (res.content.result) {
|
||
res.content.code = res.content.result
|
||
}
|
||
}
|
||
|
||
// 只有当res.content不存在且res不是blob时才显示错误
|
||
if (!res.content && !(response.config.responseType === 'blob')) {
|
||
Message({
|
||
message: res.message,
|
||
type: 'error',
|
||
duration: 5 * 500
|
||
})
|
||
return Promise.reject(res)
|
||
}
|
||
if (response.request.responseType === 'blob' || response.request.responseType === 'Blob') {
|
||
return response.data
|
||
}
|
||
if (res.content.code !== '0' && res.content.result !== 0) {
|
||
//500毫秒延迟 显得过度平滑
|
||
// token过期或失效 根据项目设置其code
|
||
if (response.headers['content-type'] !== 'application/x-zip-compressed') {
|
||
if (res.content.code === '4001' || res.content.code === '4002') {
|
||
MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确认退出', {
|
||
confirmButtonText: '重新登录',
|
||
cancelButtonText: '取消',
|
||
type: 'warning'
|
||
}).then(() => {
|
||
store.dispatch('user/resetToken').then(() => {
|
||
location.reload()
|
||
})
|
||
})
|
||
} else {
|
||
Message({
|
||
message: res.content.message || res.content.resultMessage || 'Error',
|
||
type: 'error',
|
||
duration: 5 * 1000
|
||
})
|
||
}
|
||
}
|
||
} else {
|
||
if (res.content.code === '1' || res.content.code === '') {
|
||
Message({
|
||
message: res.content.resultMessage ? res.content.resultMessage : res.content.message ? res.content.message : '接口错误',
|
||
type: 'error',
|
||
duration: 5 * 1000
|
||
})
|
||
return false
|
||
} else {
|
||
res.content.result = '0'
|
||
res.result = String(res.result ? res.result : 0)
|
||
res.code = String(res.code ? res.code : 0)
|
||
return res
|
||
}
|
||
}
|
||
},
|
||
error => {
|
||
Message({
|
||
message: error.message,
|
||
type: 'error',
|
||
duration: 5 * 500
|
||
})
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
export default service
|