import axios from 'axios'
import router from '@/router'
import { ElMessage } from 'element-plus'
const service = axios.create({
baseURL: process.env.VUE_APP_URL,
timeout: 600000,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
},
transformResponse: [
function (data: any) {
try {
data = JSON.parse(data)
return data
} catch (e) {
return data
}
}
],
transformRequest: [
(data: any, headers: any): string => {
headers.common.Authorization = localStorage.getItem('token')
if (headers['Content-Type'] === 'multipart/form-data') {
return data
}
return JSON.stringify(data)
}
]
})
service.interceptors.request.use(
(config) => {
return config
},
(err) => {
return Promise.reject(err)
}
)
service.interceptors.response.use(
(response) => {
const data = response.data
if (data.code === 200) {
return data
} else if (data.code === 1010005 || data.code === 523) {
const route = router.currentRoute.value
if (!route.path.includes('/login')) {
window.localStorage.clear()
window.sessionStorage.clear()
}
return Promise.reject(data)
} else {
ElMessage({
type: 'error',
message: data.msg || data.message || data,
duration: 3000
})
return Promise.reject(data)
}
},
(error) => {
ElMessage({
type: 'error',
message: error.message || error.msg,
duration: 3000
})
return Promise.reject(error)
}
)
export default service