132 lines
3.3 KiB
JavaScript
132 lines
3.3 KiB
JavaScript
import axios from "axios";
|
||
import router from "@/router";
|
||
import { getDouyinToken, getToken } from "@/utils/auth";
|
||
|
||
// 创建axios实例
|
||
const service = axios.create({
|
||
baseURL: import.meta.env.VITE_APP_API_PHP_IMPORT_URL, // api 的 base_url
|
||
// baseURL: "/import_api", // api 的 base_url
|
||
timeout: 1000 * 20, // 请求超时时间
|
||
});
|
||
|
||
// request拦截器
|
||
service.interceptors.request.use(
|
||
(config) => {
|
||
if (getToken()) {
|
||
config.headers["token"] = getToken();
|
||
}
|
||
if (!config.headers["Content-Type"]) {
|
||
config.headers["Content-Type"] = "application/json";
|
||
}
|
||
return config;
|
||
},
|
||
(error) => {
|
||
// 确保错误回调返回Promise,避免状态异常
|
||
return Promise.reject(error);
|
||
}
|
||
);
|
||
|
||
// response 拦截器
|
||
service.interceptors.response.use(
|
||
(response) => {
|
||
const data = response.data;
|
||
console.log(data);
|
||
if (data.code == 0) {
|
||
ElNotification.error({
|
||
title: data.msg,
|
||
duration: 5000,
|
||
});
|
||
return;
|
||
}
|
||
if (data.code == 439 || data.code == 303) {
|
||
ElNotification.error({
|
||
title: "请登录",
|
||
duration: 5000,
|
||
});
|
||
return;
|
||
}
|
||
if (data.code == 4399) {
|
||
ElNotification.error({
|
||
title: data.msg,
|
||
duration: 5000,
|
||
});
|
||
return data;
|
||
}
|
||
// if (data.code == 1 && !data.data) {
|
||
// ElNotification.success({
|
||
// title: data.msg,
|
||
// duration: 5000
|
||
// })
|
||
// return true;
|
||
// }
|
||
return data.data;
|
||
},
|
||
(error) => {
|
||
console.log(error);
|
||
if (axios.isCancel(error)) {
|
||
console.log("请求已取消");
|
||
ElNotification.error({
|
||
title: "请求已取消",
|
||
duration: 5000,
|
||
});
|
||
return Promise.reject("请求已取消");
|
||
}
|
||
|
||
// 兼容blob下载出错json提示
|
||
if (
|
||
error.response.data instanceof Blob &&
|
||
error.response.data.type.toLowerCase().indexOf("json") !== -1
|
||
) {
|
||
const reader = new FileReader();
|
||
reader.readAsText(error.response.data, "utf-8");
|
||
reader.onload = function (e) {
|
||
const errorMsg = JSON.parse(reader.result).message;
|
||
ElNotification.error({
|
||
title: errorMsg,
|
||
duration: 5000,
|
||
});
|
||
};
|
||
} else {
|
||
let code = 0;
|
||
try {
|
||
code = error.response.data.status;
|
||
} catch (e) {
|
||
if (error.toString().indexOf("Error: timeout") !== -1) {
|
||
ElNotification.error({
|
||
title: "网络请求超时",
|
||
duration: 5000,
|
||
});
|
||
return Promise.reject(error);
|
||
}
|
||
}
|
||
console.log(code);
|
||
if (code) {
|
||
if (code === 401) {
|
||
// store.dispatch("LogOut").then(() => {
|
||
// // 用户登录界面提示
|
||
// Cookies.set("point", 401);
|
||
// location.reload();
|
||
// });
|
||
} else if (code === 403) {
|
||
router.push({ path: "/401" });
|
||
} else {
|
||
const errorMsg = error.response.data.message;
|
||
if (errorMsg !== undefined) {
|
||
ElNotification.error({
|
||
title: errorMsg,
|
||
duration: 5000,
|
||
});
|
||
}
|
||
}
|
||
} else {
|
||
ElNotification.error({
|
||
title: "接口请求失败",
|
||
duration: 5000,
|
||
});
|
||
}
|
||
}
|
||
return Promise.reject(error);
|
||
}
|
||
);
|
||
export default service;
|