import axios from'axios';
import { getUserInfo, storeGet } from '@/utils/storege';
const commonRules = {
axiosHeader: {
headers: {
'Content-Type': 'application/json',
}
},
axiosFileHeader: {
headers: {
'Content-Type': 'mutipart/form-data'
}
},
axiosResponseType:['json','text','arraybuffer','blob','document','stream','formData']
}
const instance = axios.create({
baseURL: import.meta.env.VITE_APP_API_URL, //"http://192.168.0.43:8080/pmis_webservice".//import.meta.env.APP API URL
//process.env.VITE APP API URLimport { config } from '@/config';
timeout: 5000000,
...commonRules.axiosHeader
})
instance.interceptors.request.use(
(config:any)=>{
const userInfo =storeGet('useragent');
if (userInfo?.token) {
config.headers.Authorization = `${userInfo.token}`;
}
return config;
}, (error: any) => {
return Promise.reject(error);
}
);
instance.interceptors.response.use(
(response: any) => {
if (response?.data?.code < 0) {
if ([-1012, -1009].includes(response?.data?.code)) {
localStorage.removeItem("userInfo");
localStorage.removeItem("useragent");
window.location.href = " / login ? timeout = true";
}
return response.data;
}
},
(error: any) => {
if (error.response?.status === 401) {
return {
error: 0
}
}
return Promise.reject(error);
}
);
export async function post(url: string, data: any=0, contentType: number=0, responseType: number=0) {
return new Promise((resolve, reject) => {
const userInfo = getUserInfo();
if (userInfo?.token) {
data.token = userInfo.token;
}
const configs:any = contentType ===0? commonRules.axiosHeader : commonRules.axiosFileHeader;
configs['responseType'] = commonRules.axiosResponseType[responseType];
if (contentType === 1) {
data.append('language', 'en')
data.append('locationId',userInfo.locationId)
}
instance.post(url, contentType === 1 ? data : {
language: "en",
locationId: userInfo.locationId,
...data
}, configs).then((response: any) => {
resolve(response.data);
},(error:any) => {
reject(error);
}).catch((error:any) => {
reject(error);
});
});
}
export async function get(url: string, params: any, responseType: number) {
return new Promise((resolve, reject) => {
const userInfo = getUserInfo();
if (userInfo?.token) {
params.token = userInfo.token;
}
const configs:any = {
headers: {
'Content-Type': 'application/json',
},
responseType: commonRules.axiosResponseType[responseType]
};
instance.get(url, {
params: {
language: "en",
locationId: userInfo.locationId,
...params
},
...configs
}).then((response: any) => {
resolve(response.data);
}, (error: any) => {
reject(error);
}).catch((error: any) => {
reject(error);
});
});
}
### storage
export const storeSet = (key: any, value: any) => {
if (typeof value === "string") {
return sessionStorage.setItem(key, value);
}
if (value == null) return sessionStorage.removeItem(key);
sessionStorage.setItem(key, JSON.stringify(value));
};
export const storeGet = (key: any) => {
const val = sessionStorage.getItem(key);
if (val) {
return val.indexOf("{") === 0 ? JSON.parse(val) : val;
}
return null;
};
export const getUserInfo: any = (key: any) => {
return (
sessionStorage.getItem("userInfo") || {
userInfo: null,
}
);
};
### 使用
import { post } from "@/utils/request";
export const login = async (data: any) => {
return post("/login", data);
};
### 上传文件
### base64下载
### 打印
### 流或者json打印