| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- import axios, {AxiosInstance} from 'axios';
- import {ElLoading, ElMessage, ElMessageBox} from 'element-plus';
- import {Session} from '/@/utils/storage';
- import qs from 'qs';
- // @ts-ignore
- let loadingInstance: ElLoading = null;
- let url = import.meta.env.VITE_API_URL;
- if (!url) {
- url = `${location.origin}/admin/`;
- }
- // 配置新建一个 axios 实例
- const service: AxiosInstance = axios.create({
- baseURL: url,
- timeout: 50000,
- headers: {'Content-Type': 'application/json'},
- paramsSerializer: {
- serialize(params) {
- return qs.stringify(params, {allowDots: true});
- },
- },
- });
- // 添加请求拦截器
- service.interceptors.request.use(
- (config) => {
- // 在发送请求之前做些什么 token
- if (Session.get('token')) {
- config.headers!['satoken'] = `${Session.get('token')}`;
- }
- return config;
- },
- (error) => {
- // 对请求错误做些什么
- return Promise.reject(error);
- }
- );
- // 添加响应拦截器
- service.interceptors.response.use(
- (response) => {
- // 对响应数据做点什么
- const res = response.data;
- // console.log(res)
- if (res.code && res.code !== 0) {
- // `token` 过期或者账号已在别处登录
- if (res.code === 401) {
- Session.clear(); // 清除浏览器全部临时缓存
- ElMessageBox.alert('你已被登出,请重新登录', '提示', {})
- .then(() => {
- window.location.href = '/'; // 去登录页
- })
- .catch(() => {
- window.location.href = '/'; // 去登录页
- });
- return Promise.reject(service.interceptors.response);
- } else if (res.code === 200) {
- return response.data;
- } else {
- ElMessage.error(res.msg||res.message || '系统繁忙,请稍后再试!');
- return Promise.reject(res.msg||res.message || '系统繁忙,请稍后再试!');
- }
- } else {
- return response.data;
- }
- },
- (error) => {
- // console.error(error)
- // 对响应错误做点什么
- if (error.message.indexOf('timeout') != -1) {
- ElMessage.error('网络超时');
- } else if (error.message == 'Network Error') {
- ElMessage.error('网络连接错误');
- } else if (error.message.includes("404")) {
- ElMessage.error('接口不存在');
- } else {
- if (error.response.data) {
- ElMessage.error(error.response.data.message || error.response.statusText);
- return Promise.reject(error.response.data.message || error.response.statusText);
- } else {
- ElMessage.error('接口路径找不到');
- }
- }
- return Promise.reject(error);
- }
- );
- export function $put(url: string, data = {}, showLoading = false) {
- if (showLoading) {
- loadingInstance = ElLoading.service({fullscreen: true})
- }
- return new Promise((resolve, reject) => {
- service.put(url, data)
- .then(response => {
- if (showLoading) {
- loadingInstance.close();
- }
- resolve(response.data);
- }, err => {
- // ////if(showLoading)Spin.hide();
- reject(err)
- })
- })
- }
- export function $patch(url: string, data = {}, showLoading = false) {
- //if(showLoading)Spin.show();
- return new Promise((resolve, reject) => {
- service.patch(url, data)
- .then(response => {
- ////if(showLoading)Spin.hide();
- resolve(response.data);
- }, err => {
- ////if(showLoading)Spin.hide();
- reject(err)
- })
- })
- }
- export function $get(url: string, params = {}, showLoading = false) {
- //if(showLoading)Spin.show();
- return new Promise((resolve, reject) => {
- service.get(url, {
- params: params
- }).then(response => {
- ////if(showLoading)Spin.hide();
- resolve(response.data);
- }).catch(err => {
- console.error("err=>" + err)
- ////if(showLoading)Spin.hide();
- reject(err)
- })
- })
- }
- export function $post(url: string, data = {}, showLoading = false) {
- //if(showLoading)Spin.show();
- return new Promise((resolve, reject) => {
- service.post(url, data, {
- headers: {"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8;"}
- })
- .then(response => {
- ////if(showLoading)Spin.hide();
- resolve(response.data);
- }, err => {
- console.error("err=>" + err)
- ////if(showLoading)Spin.hide();
- reject(err)
- })
- })
- }
- export function $body(url: string, data = {}, showLoading = false) {
- //if(showLoading)Spin.show();
- return new Promise((resolve, reject) => {
- service.post(url, data)
- .then(response => {
- ////if(showLoading)Spin.hide();
- resolve(response.data);
- }, err => {
- ////if(showLoading)Spin.hide();
- reject(err)
- })
- })
- }
- export function $upload(url: string, formData = {}, showLoading = false) {
- //if(showLoading)Spin.show();
- return new Promise((resolve, reject) => {
- service.post(url, formData, {
- headers: {'Content-Type': 'multipart/form-data'}
- }).then(response => {
- ////if(showLoading)Spin.hide();
- resolve(response.data);
- }, err => {
- ////if(showLoading)Spin.hide();
- reject(err)
- })
- })
- }
- // 导出 axios 实例
- // export default {service,$post:post,$get:get,$upload:upload,$put:put,$body:body};
|