import axios from "axios" import { message } from "ant-design-vue" // 创建 Axios 实例 const service = axios.create({ baseURL: "/api/", timeout: 15000, }) // 请求拦截器 service.interceptors.request.use( (config) => { const token = localStorage.getItem("token") if (token) { config.headers["Authorization"] = `Bearer ${token}` } return config }, (error) => { console.error("Request error:", error) return Promise.reject(error) }, ) // 响应拦截器 service.interceptors.response.use( (response) => { const { code, result, message: msg } = response.data if (code === 0) { return result } else { if (code === 401) { message.error(msg) localStorage.removeItem("token") localStorage.removeItem("chatUser") window.location.href = "/login" return Promise.reject(new Error(msg)) } message.error(msg) return Promise.reject(new Error(msg)) } }, (error) => { console.error("Response error:", error) message.error("网络请求失败") return Promise.reject(error) }, ) // 封装请求方法 export const get = (url, params = {}) => { return service.get(url, { params }) } export const post = (url, data = {}) => { return service.post(url, data) } export const upload = (url, file) => { const formData = new FormData() formData.append("file", file) return service.post(url, formData, { headers: { "Content-Type": "multipart/form-data", }, }) } // WebSocket消息发送API export const sendMessage = (data) => { const messageTypeMap = { text: 0, image: 1, audio: 2, video: 3, } return post("send-to-user", { sender_user_id: data.senderId, receiver_user_id: data.receiverId, message_type: messageTypeMap[data.type] || 0, message_content: data.content, }) } export default service