@ued_fpi/data-visual
Version:
<br /> <br /> <div style="text-align:center"> <b style="font-size:30px">@ued_fpi/data-visual</b> <p>基于Vite4+TypeScript的Vue3大屏组件库开发框架</p> <img style="display:inline" src="https://img.shields.io/npm/v/@ued_fpi/data-visual" />
82 lines (79 loc) • 2.24 kB
JavaScript
import axios from 'axios';
import { messageBox } from '../utils/tools.mjs';
import Config from '../config/index.mjs';
import Base from './base-serve.mjs';
const errorHandle = (status, message) => {
switch (status) {
case 400:
case 401:
messageBox(`${message} 即将跳转登录页...`);
break;
case 403:
messageBox("登录过期,请重新登录即将跳转登录页...");
break;
case 502:
messageBox("网络拥堵,即将跳转登录页...");
break;
case 404:
messageBox("请求的资源不存在", "error");
break;
}
};
const instance = axios.create({
baseURL: Config.domain,
// 请求时长
timeout: 60 * 1e3,
validateStatus() {
return true;
},
transformResponse: [
(data) => {
if (typeof data === "string" && (data.startsWith("{") || data.startsWith("[")))
data = JSON.parse(data);
return data;
}
]
});
instance.interceptors.request.use(
(config) => {
config && config.headers && (config.headers["Cache-Control"] = "no-cache, no-store");
config && config.headers && (config.headers.Pragma = "no-cache");
Config.isAddToken && (config.headers.token = localStorage.getItem("token"));
return config;
},
(error) => {
return Promise.reject(error);
}
);
instance.interceptors.response.use(
// 请求成功
(response) => {
const { code, message } = response.data;
errorHandle(code || response.status, message);
if ([200, "success"].includes(code) || typeof code !== "number")
return response.data;
else if (code)
return Promise.reject(response.data);
else
return Promise.resolve(response.data);
},
// 请求失败
(error) => {
if (axios.isCancel(error)) {
console.warn(error.message);
}
const { response } = error;
if (response) {
errorHandle(response.status, response.data.message);
return Promise.reject(response);
}
}
);
const request = instance.request;
const requestControl = (option) => {
option.baseURL = Config.domain;
if (!option.url?.includes("http"))
option.url = (option.server ? Base[option.server] : "") + option.url;
return request(option);
};
export { requestControl as default };