| 
					
				 | 
			
			
				@@ -0,0 +1,85 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import axios, { AxiosResponse, AxiosInstance, AxiosError } from 'axios' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+type _config = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  base_url: string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  result_code: number | string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  default_headers: AxiosHeaders 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  request_timeout: number 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const config: _config = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * api请求基础路径 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  base_url: import.meta.env.VITE_BASE_URL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 接口成功返回状态码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  result_code: 200, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 接口请求超时时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  request_timeout: 30000, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 默认接口请求类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * 可选值:application/x-www-form-urlencoded multipart/form-data 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  default_headers: 'application/json' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const axiosInstance: AxiosInstance = axios.create({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  baseURL: config.base_url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  timeout: config.request_timeout 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+axiosInstance.interceptors.response.use( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  async (response: AxiosResponse<any>) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const { data } = response 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const code = data.code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const msg = data.msg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (code !== 200) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ElNotification.error({ title: msg }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return Promise.reject(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return Promise.resolve(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  (error: AxiosError) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let { message } = error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const { t } = useI18n() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (message === 'Network Error') { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message = t('sys.api.errorMessage') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else if (message.includes('timeout')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message = t('sys.api.apiTimeoutMessage') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } else if (message.includes('Request failed with status code')) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      message = t('sys.api.apiRequestFailed') + message.substr(message.length - 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ElMessage.error(message) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return Promise.reject(error) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const request = (option: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  const { url, method, params, data, headersType, responseType, ...config } = option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return axiosInstance({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    url: url, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    params, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ...config, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    responseType: responseType, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    headers: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      'Content-Type': headersType || config.default_headers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  get: async <T = any>(option: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const res = await request({ method: 'GET', ...option }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return res.data as unknown as T 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  post: async <T = any>(option: any) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const res = await request({ method: 'POST', ...option }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return res.data as unknown as T 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |