72 lines
1.7 KiB
TypeScript
72 lines
1.7 KiB
TypeScript
import axios from 'axios'
|
||
import ENV_CONFIG from '@/config/env'
|
||
|
||
// 创建axios实例
|
||
const api = axios.create({
|
||
baseURL: ENV_CONFIG.API_BASE_URL,
|
||
timeout: ENV_CONFIG.REQUEST_TIMEOUT,
|
||
headers: {
|
||
'Content-Type': 'application/json'
|
||
}
|
||
})
|
||
|
||
// 请求拦截器 - 添加token
|
||
api.interceptors.request.use(
|
||
(config) => {
|
||
const token = localStorage.getItem(ENV_CONFIG.TOKEN_KEY)
|
||
if (token) {
|
||
config.headers.Authorization = `Bearer ${token}`
|
||
}
|
||
return config
|
||
},
|
||
(error) => {
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
// 响应拦截器 - 处理错误
|
||
api.interceptors.response.use(
|
||
(response) => {
|
||
const data = response.data
|
||
|
||
// 检查后端返回的状态码
|
||
if (data.code === 0) {
|
||
// 成功,返回data字段的内容
|
||
return data.data
|
||
} else {
|
||
// 失败,抛出错误
|
||
return Promise.reject(new Error(data.msg || '请求失败'))
|
||
}
|
||
},
|
||
(error) => {
|
||
if (error.response?.status === 401) {
|
||
// token过期,清除本地存储
|
||
localStorage.removeItem(ENV_CONFIG.TOKEN_KEY)
|
||
localStorage.removeItem(ENV_CONFIG.USER_INFO_KEY)
|
||
window.location.href = '/#/login'
|
||
}
|
||
return Promise.reject(error)
|
||
}
|
||
)
|
||
|
||
// 用户登录接口
|
||
export const login = (data: { account: string; password: string }) => {
|
||
return api.post('/admin/login', data)
|
||
}
|
||
|
||
// 获取管理员信息接口
|
||
export const getUserInfo = () => {
|
||
return api.get('/admin/info')
|
||
}
|
||
|
||
// 管理员登出接口
|
||
export const logout = () => {
|
||
return api.post('/admin/logout')
|
||
}
|
||
|
||
// 修改密码接口
|
||
export const changePassword = (data: { oldPassword: string; newPassword: string }) => {
|
||
return api.post('/admin/change-password', data)
|
||
}
|
||
|
||
export default api
|