import { message } from 'ant-design-vue' import axios from 'axios' import qs from 'qs' // import { useTokenStore } from './token' // const { token } = useTokenStore() localStorage.getItem('__prescription_client__token') export type ResponseData = Record export type RequestParams = Record export interface ApiResponse { Code: Number Data: T Msg: string | null } // 定义 API 响应的类型 const http = axios.create({ // baseURL: , // 域名配置 headers: { 'Content-Type': 'application/json;charset=UTF-8' }, withCredentials: true, // 跨域携带cookie timeout: 5 * 60 * 1000, paramsSerializer: function (params) { return qs.stringify(params, { arrayFormat: 'repeat' }) } }) // 请求拦截器 http.interceptors.request.use( (config) => { if (localStorage.getItem('__token__')) { config.headers.Authorization = `Bearer ${localStorage.getItem('__token__')}` } return config }, (error) => { return Promise.reject(error) } ) // 响应拦截器 http.interceptors.response.use( (response): any => { const { status, data } = response if (status >= 200 && status < 300) { if (data.Code !== 200) { return Promise.reject(data.Msg) } return Promise.resolve(data) } else { errorHandle(status) Promise.reject(data.Msg) } }, (error) => { errorHandle(error.status) return Promise.reject(error) } ) function errorHandle(status: number) { switch (status) { case 400: // 处理错误信息,例如抛出错误信息提示,或者跳转页面等处理方式。 // return Promise.resolve(error) break case 401: // break case 403: // $post(`/api/update/token`, { // RefreshToken: token!.RefreshToken // }) // .then(el => ) localStorage.getItem('__prescription_client__token') break case 404: // break // ... default: throw new Error('未知错误') } } /** * @name get请求 * @param url * @param param * @param config * @returns */ export const $get = (url: string, data: RequestParams = {}, config = {}): Promise> => { return new Promise((resolve) => { http .get>>(url, { params: data, ...config }) .then((res: any) => { resolve(res) }) .catch((error) => message.error(error)) }) } /** * @name post请求 * @param url * @param param * @param config * @returns */ export const $post = (url: string, data: RequestParams = {}, config = {}): Promise> => { return new Promise((resolve) => { http .post>>(url, data, config) .then((res: any) => { resolve(res) }) .catch((error) => message.error(error)) }) } /** * @name put请求 * @param url * @param param * @param config * @returns */ export const $put = (url: string, data: RequestParams = {}, config = {}): Promise> => { return new Promise((resolve) => { http .put>>(url, data, config) .then((res: any) => { resolve(res) }) .catch((error) => message.error(error)) }) } /** * @name delete请求 * @param url * @param param * @param config * @returns */ export const $delete = (url: string, data: RequestParams = {}, config = {}): Promise> => { return new Promise((resolve) => { http .delete>>(url, { params: data, ...config }) .then((res: any) => { resolve(res) }) .catch((error) => message.error(error)) }) }