2025-08-22 09:43:16 +08:00
|
|
|
|
import axios from 'axios'
|
|
|
|
|
|
// import { ElLoading, ElMessage } from 'element-plus'
|
|
|
|
|
|
import router from '@/router'
|
|
|
|
|
|
import { useSettingStore } from '@/stores/setting.js'
|
|
|
|
|
|
|
|
|
|
|
|
// request是一个axios实例,每一个实例你都可以单独定制它的baseURL,超时时间,请求头和一些其他配置项。
|
2025-08-27 10:39:08 +08:00
|
|
|
|
const baseUrl = import.meta.env.VITE_APP_API_BASE_URL + '/airport/admin' //接口统一域名
|
|
|
|
|
|
// const baseUrl = '/airport/admin'
|
2025-08-22 09:43:16 +08:00
|
|
|
|
|
|
|
|
|
|
// 设置统一的url
|
|
|
|
|
|
// axios.defaults.baseURL = '/airport/admin'
|
|
|
|
|
|
|
|
|
|
|
|
const instance = axios.create({
|
|
|
|
|
|
baseURL: baseUrl,
|
|
|
|
|
|
timeout: 60 * 1000, //设置超时
|
|
|
|
|
|
headers: {
|
|
|
|
|
|
'Content-Type': 'application/json;charset=UTF-8;',
|
|
|
|
|
|
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
|
|
|
|
|
|
'.AspNetCore.Culture': 'c=zh-Hans|uic=zh-Hans',
|
|
|
|
|
|
},
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
let loading
|
|
|
|
|
|
//正在请求的数量
|
|
|
|
|
|
let requestCount = 0
|
|
|
|
|
|
//显示loading
|
|
|
|
|
|
// const showLoading = () => {
|
|
|
|
|
|
// if (requestCount === 0) {
|
|
|
|
|
|
// // loading = ElLoading.service({
|
|
|
|
|
|
// // fullscreen: true,
|
|
|
|
|
|
// // text: 'Loading ',
|
|
|
|
|
|
// // background: 'rgba(0, 0, 0, 0.7)',
|
|
|
|
|
|
// // })
|
|
|
|
|
|
// }
|
|
|
|
|
|
// requestCount++
|
|
|
|
|
|
// }
|
|
|
|
|
|
//隐藏loading
|
|
|
|
|
|
// const hideLoading = () => {
|
|
|
|
|
|
// requestCount--
|
|
|
|
|
|
// if (requestCount == 0) {
|
|
|
|
|
|
// loading.close()
|
|
|
|
|
|
// }
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
//请求拦截器
|
|
|
|
|
|
instance.interceptors.request.use(
|
|
|
|
|
|
(config) => {
|
|
|
|
|
|
// 每次发送请求之前判断是否存在token,如果存在,则统一在http请求的header都加上token,不用每次请求都手动添加了
|
|
|
|
|
|
// const { token_type, access_token } = userInfo
|
|
|
|
|
|
|
|
|
|
|
|
config.headers.Authorization = `${localStorage.getItem('access_token')}`
|
|
|
|
|
|
config.headers['Client-Id'] = import.meta.env.VITE_APP_CLIENT_ID
|
|
|
|
|
|
//若请求方式为post,则将data参数转为JSON字符串
|
|
|
|
|
|
if (config.method === 'POST') {
|
|
|
|
|
|
config.data = JSON.stringify(config.data)
|
|
|
|
|
|
}
|
|
|
|
|
|
return config
|
|
|
|
|
|
},
|
|
|
|
|
|
(error) =>
|
|
|
|
|
|
// 对请求错误做些什么
|
|
|
|
|
|
Promise.reject(error),
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
//响应拦截器
|
|
|
|
|
|
instance.interceptors.response.use(
|
|
|
|
|
|
(response) => {
|
|
|
|
|
|
// hideLoading()
|
|
|
|
|
|
if (response.data.code == 402) {
|
|
|
|
|
|
// ElMessage.error(response.data.msg)
|
|
|
|
|
|
router.push('/')
|
|
|
|
|
|
}
|
|
|
|
|
|
//响应成功
|
|
|
|
|
|
// console.log('拦截器报错');
|
|
|
|
|
|
else return response.data
|
|
|
|
|
|
},
|
|
|
|
|
|
(error) => {
|
|
|
|
|
|
// hideLoading()
|
|
|
|
|
|
//响应错误
|
|
|
|
|
|
let message = ''
|
|
|
|
|
|
if (error.response && error.response.status) {
|
|
|
|
|
|
const status = error.response.status
|
|
|
|
|
|
switch (status) {
|
|
|
|
|
|
case 400:
|
|
|
|
|
|
message = '请求错误'
|
|
|
|
|
|
break
|
|
|
|
|
|
case 401:
|
|
|
|
|
|
message = '请求错误'
|
|
|
|
|
|
break
|
|
|
|
|
|
case 404:
|
|
|
|
|
|
message = '请求地址出错'
|
|
|
|
|
|
break
|
|
|
|
|
|
case 408:
|
|
|
|
|
|
message = '请求超时'
|
|
|
|
|
|
break
|
|
|
|
|
|
case 500:
|
|
|
|
|
|
message = '服务器内部错误!'
|
|
|
|
|
|
break
|
|
|
|
|
|
case 501:
|
|
|
|
|
|
message = '服务未实现!'
|
|
|
|
|
|
break
|
|
|
|
|
|
case 502:
|
|
|
|
|
|
message = '网关错误!'
|
|
|
|
|
|
break
|
|
|
|
|
|
case 503:
|
|
|
|
|
|
message = '服务不可用!'
|
|
|
|
|
|
break
|
|
|
|
|
|
case 504:
|
|
|
|
|
|
message = '网关超时!'
|
|
|
|
|
|
break
|
|
|
|
|
|
case 505:
|
|
|
|
|
|
message = 'HTTP版本不受支持'
|
|
|
|
|
|
break
|
|
|
|
|
|
default:
|
|
|
|
|
|
message = '请求失败'
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ElMessage.error(message)
|
|
|
|
|
|
return Promise.reject(error)
|
|
|
|
|
|
}
|
|
|
|
|
|
return Promise.reject(error)
|
|
|
|
|
|
},
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
export default instance
|