Files
gterFang/src/utils/axios.js
DESKTOP-RQ919RC\Pc 5fd6f68a7c refactor: 移除调试日志并优化代码结构
- 删除多个组件中的console.log调试语句
- 优化axios错误处理中的可选链操作
- 重构wechat-btn组件的事件监听逻辑
- 清理ai.vue中的冗余代码和注释
- 改进页面可见性变化的处理逻辑
2025-08-25 18:53:18 +08:00

130 lines
4.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import axios from "axios";
import QS from "qs";
import { goTologin } from "@/utils/util.js";
import { showFullScreenLoading, tryHideFullScreenLoading } from "./loading";
import store from "@/store/index";
axios.defaults.baseURL = "https://app.gter.net";
axios.defaults.emulateJSON = true;
axios.defaults.withCredentials = true;
// axios.defaults.headers["Content-Type"] = "application/json";
axios.interceptors.request.use(
//响应拦截
async (config) => {
// 不需要遮罩
let noMask = false;
noMask = config.params?.noMask || config.noMask || false;
if (config.url != "/tenement/pc/api/user/operation" && !noMask) showFullScreenLoading();
// 开发时登录用的,可以直接替换小程序的 authorization
if (process.env.NODE_ENV !== "production") {
const miucms_session = "01346a38444d71aaadb3adad52b52c39";
document.cookie = "miucms_session=" + miucms_session;
config["headers"]["authorization"] = miucms_session;
}
// 当 noMask == true 和 confing.method == 'get' 时,删除 config.params['noMask']
if (noMask && config.params) delete config.params["noMask"];
return config;
},
(error) => {
return Promise.error(error);
}
);
// 响应拦截器
axios.interceptors.response.use(
(response) => {
tryHideFullScreenLoading();
if (response.status === 200) return Promise.resolve(response); //进行中
else return Promise.reject(response); //失败
},
// 服务器状态码不是200的情况
(error) => {
tryHideFullScreenLoading();
if (error.response.status) {
switch (error.response.status) {
// 401: 未登录
case 401:
// goTologin() // 跳转登录页面
store.state.showloginmodal = true;
break;
case 403:
// router.push('/login')
break;
// 404请求不存在
case 404:
break;
// 其他错误,直接抛出错误提示
default:
}
return Promise.reject(error.response);
}
}
);
/**
* get方法对应get请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
const $get = (url, params) => {
return new Promise((resolve, reject) => {
axios
.get(url, {
params: params,
})
.then((res) => {
resolve(res.data);
})
.catch((err) => {
reject(err.data);
});
});
};
/**
* post方法对应post请求
* @param {String} url [请求的url地址]
* @param {Object} params [请求时携带的参数]
*/
const $post = (url, params) => {
return new Promise((resolve, reject) => {
//是将对象 序列化成URL的形式以&进行拼接
axios
.post(url, QS.stringify(params))
.then((res) => {
resolve(res.data);
})
.catch((err) => {
if (err?.data?.code == 401) resolve(err.data);
else reject(err.data);
});
});
};
const $postV2 = (url, params) => {
return new Promise((resolve, reject) => {
axios
.post(url, JSON.stringify(params), { headers: { "Content-Type": "application/json" }, timeout: 100000, ...(params.noMask !== undefined ? { noMask: params.noMask } : {}) })
.then((res) => {
resolve(res.data);
})
.catch((err) => {
if (err?.data?.code == 401) resolve(err.data);
else reject(err.data);
});
});
};
//下面是vue3必须加的vue2不需要只需要暴露出去getpost方法就可以
export default {
get: $get,
post: $post,
postV2: $postV2,
install: (app) => {
app.config.globalProperties["$get"] = $get;
app.config.globalProperties["$post"] = $post;
app.config.globalProperties["$axios"] = axios;
},
};