You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
3.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import axios from "axios";
import constant from "./constant";
//处理url参数
import qs from "qs";
import store from "../store";
axios.defaults.baseURL = constant.baseURL;
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
return config;
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error);
});
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
if (response.data !== null && response.data.hasOwnProperty("code") && response.data.code !== 200) {
if (response.data.code === 300) {
store.commit("loadCurrentUser", {});
localStorage.removeItem("userToken");
store.commit("loadCurrentAdmin", {});
localStorage.removeItem("adminToken");
window.location.href = constant.webURL + "/user";
}
return Promise.reject(new Error(response.data.message));
} else {
return response;
}
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error);
});
// 当data为URLSearchParams对象时设置为application/x-www-form-urlencoded;charset=utf-8
// 当data为普通对象时会被设置为application/json;charset=utf-8
export default {
post(url, params = {}, isAdmin = false, json = true) {
let config;
if (isAdmin) {
config = {
headers: {"Authorization": localStorage.getItem("adminToken")}
};
} else {
config = {
headers: {"Authorization": localStorage.getItem("userToken")}
};
}
return new Promise((resolve, reject) => {
axios
.post(url, json ? params : qs.stringify(params), config)
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err);
});
});
},
get(url, params = {}, isAdmin = false) {
let headers;
if (isAdmin) {
headers = {"Authorization": localStorage.getItem("adminToken")};
} else {
headers = {"Authorization": localStorage.getItem("userToken")};
}
return new Promise((resolve, reject) => {
axios.get(url, {
params: params,
headers: headers
}).then(res => {
resolve(res.data);
}).catch(err => {
reject(err)
})
});
},
upload(url, param, isAdmin = false) {
let config;
if (isAdmin) {
config = {
headers: {"Authorization": localStorage.getItem("adminToken"), "Content-Type": "multipart/form-data"}
};
} else {
config = {
headers: {"Authorization": localStorage.getItem("userToken"), "Content-Type": "multipart/form-data"}
};
}
return new Promise((resolve, reject) => {
axios
.post(url, param, config)
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err);
});
});
},
uploadQiniu(url, param) {
let config = {
headers: {"Content-Type": "multipart/form-data"},
timeout: 60000
};
return new Promise((resolve, reject) => {
axios
.post(url, param, config)
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err);
});
});
}
}