后端修复: - Spring Boot 降级到 3.1.12 以兼容 MyBatis-Plus 3.5.6 - 添加 RedisConfig 配置 RedisTemplate Bean - 修复数据库连接字符编码 characterEncoding=UTF-8 - 添加健康检查接口 /api/v1/health 到认证白名单 - 实体字段同步数据库: WorkLog 添加 recordTime, LogTemplate 添加 templateContent/instruction - 修复 logback 滚动策略配置 - 密码验证临时改为明文比对(测试用) 前端修复: - API baseURL 统一修正为 /wlog/api/v1 - Vite 配置添加 base 路径 (/wladmin/, /wlmobile/) 脚本修复: - stop.sh/status.sh 使用动态 APP_HOME 获取路径
74 lines
1.8 KiB
TypeScript
74 lines
1.8 KiB
TypeScript
import axios from 'axios'
|
|
import type { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'
|
|
import { showFailToast } from 'vant'
|
|
import { TOKEN_KEY } from '@/utils/constants'
|
|
|
|
// 创建 axios 实例
|
|
const service: AxiosInstance = axios.create({
|
|
baseURL: '/wlog/api/v1',
|
|
timeout: 15000
|
|
})
|
|
|
|
// 请求拦截器
|
|
service.interceptors.request.use(
|
|
(config) => {
|
|
const token = localStorage.getItem(TOKEN_KEY)
|
|
if (token) {
|
|
config.headers['Authorization'] = `Bearer ${token}`
|
|
}
|
|
return config
|
|
},
|
|
(error) => {
|
|
return Promise.reject(error)
|
|
}
|
|
)
|
|
|
|
// 响应拦截器
|
|
service.interceptors.response.use(
|
|
(response: AxiosResponse) => {
|
|
const res = response.data
|
|
|
|
// 业务成功
|
|
if (res.success) {
|
|
return res.data
|
|
}
|
|
|
|
// 业务失败
|
|
showFailToast(res.message || '请求失败')
|
|
return Promise.reject(new Error(res.message || '请求失败'))
|
|
},
|
|
(error) => {
|
|
// 401 未登录或 Token 过期
|
|
if (error.response?.status === 401) {
|
|
localStorage.removeItem(TOKEN_KEY)
|
|
localStorage.removeItem('worklog_user_info')
|
|
window.location.href = '/login'
|
|
return Promise.reject(error)
|
|
}
|
|
|
|
showFailToast(error.response?.data?.message || '网络错误')
|
|
return Promise.reject(error)
|
|
}
|
|
)
|
|
|
|
// 封装请求方法
|
|
export const request = {
|
|
get<T>(url: string, config?: AxiosRequestConfig): Promise<T> {
|
|
return service.get(url, config)
|
|
},
|
|
|
|
post<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T> {
|
|
return service.post(url, data, config)
|
|
},
|
|
|
|
put<T>(url: string, data?: any, config?: AxiosRequestConfig): Promise<T> {
|
|
return service.put(url, data, config)
|
|
},
|
|
|
|
delete<T>(url: string, config?: AxiosRequestConfig): Promise<T> {
|
|
return service.delete(url, config)
|
|
}
|
|
}
|
|
|
|
export default service
|