123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- import axios from "axios";
- import { MessageBox, Message } from "element-ui";
- import store from "@/store";
- import router, { resetRouter } from "@/router";
- import { getToken, getUserId, removeToken } from "@/utils/auth";
- import MD5 from "blueimp-md5";
- // create an axios instance
- // let baseURL
- // if (process.env.NODE_ENV === "development") {
- // baseURL = '/dev-api'
- // }
- // else {
- // baseURL = ''
- // }
- const service = axios.create({
- //baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
- baseURL: PLATFROM_CONFIG.baseURLCA,
- // withCredentials: true, // send cookies when cross-domain requests
- timeout: 30000, // request timeout
- });
- // request interceptor
- service.interceptors.request.use(
- (config) => {
- // do something before request is sent
- // config.headers['Content-Type'] = 'text/plain'
- if (store.getters.token) {
- // let each request carry token
- // ['X-Token'] is a custom headers key
- // please modify it according to the actual situation
- // config.headers['X-Token'] = getToken()
- // config.headers["token"] = getToken();
- config.headers["token"] = config.headers["token"] ?? getToken();
- }
- if (config.data) {
- config.data["OperatorId"] = getUserId();
- config.data["token"] = MD5(JSON.stringify(config.data));
- }
- return config;
- },
- (error) => {
- // do something with request error
- return Promise.reject(error);
- }
- );
- // response interceptor
- service.interceptors.response.use(
- /**
- * If you want to get http information such as headers or status
- * Please return response => response
- */
- /**
- * Determine the request status by custom code
- * Here is just an example
- * You can also judge the status by HTTP Status Code
- */
- (response) => {
- const res = response.data;
- // if the custom code is not 20000, it is judged as an error.
- if (res.code != "0") {
- Message({
- message: res.message || "Error",
- type: "error",
- duration: 5 * 1000,
- });
- // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
- if (res.code === 500 || res.code === 50012 || res.code === 50014) {
- // to re-login
- MessageBox.confirm(
- "You have been logged out, you can cancel to stay on this page, or log in again",
- "Confirm logout",
- {
- confirmButtonText: "Re-Login",
- cancelButtonText: "Cancel",
- type: "warning",
- }
- ).then(async () => {
- sessionStorage.removeItem("userName");
- store.dispatch("app/toggleOutflag", false);
- await store.dispatch("user/logout");
- router.push(`/login`);
- });
- }
- return Promise.reject(new Error(res.message || "Error"));
- } else {
- return res;
- }
- },
- (error) => {
- const des500 = `${error}`.split(" ").includes("500");
- if (des500) {
- Message({
- message: "身份令牌过期或失效,即将重新登录",
- type: "error",
- duration: 3 * 1000,
- onClose: async () => {
- sessionStorage.clear();
- removeToken(); // must remove token first
- removeToken("codeToken");
- removeToken("systemSet");
- removeToken("userid");
- store.dispatch("app/toggleOutflag", false);
- await store.dispatch("user/resetToken");
- resetRouter();
- router.push(`/login`);
- location.reload();
- },
- });
- } else {
- Message({
- message: error.message,
- type: "error",
- duration: 5 * 1000,
- });
- }
- return Promise.reject(error);
- }
- );
- export default service;
|