import axios from "axios"; import languageHelper from "./languageHelper"; import { useLogin } from '@/stores/useLogin.ts' class axiosHelper { /** * @description version: 1,//API版本 lang: .m_currentLanguage,//语言 isAddLangParam: "false",是否添加语言参数, 不加设置为false,否则null isAddUrlSoftType: "true",是否添加软件类型/web/, 不加设置为true,否则null controller: API中控制器名 action: API中操作名 data: {}, 除了Lang的其他参数 apiUrlType: 接口类型 "main","user",为空就用"main" */ static get(params) { return axios({ headers: { Token: params.Token || axiosHelper.getToken(), Lang: languageHelper.getTypeFromRout(window.location.href), }, url: axiosHelper.buildFullUrl(params), method: "get", params: axiosHelper.buildFullData(params), }); } static post(params) { return axios({ headers: axiosHelper.buildHeader(params), url: axiosHelper.buildFullUrl(params), method: "post", data: axiosHelper.buildFullData(params), params: axiosHelper.buildFullParams(params) }); } static put(params) { return axios({ headers: { Token: axiosHelper.getToken(), Lang: languageHelper.getTypeFromRout(window.location.href), }, url: axiosHelper.buildFullUrl(params), method: "put", data: axiosHelper.buildFullData(params), }); } static delete(params) { return axios({ headers: { Token: axiosHelper.getToken(), Lang: languageHelper.getTypeFromRout(window.location.href), }, url: axiosHelper.buildFullUrl(params), method: "delete", params: axiosHelper.buildFullData(params), }); } static buildFullUrl(params) { //外部输入了完整Url就不用拼接路径了 if (params.url != null) return window.globalConfig.WebApiUrl.MainUrl + params.url; var baseUrl = ""; //接口版本 if (params.version) baseUrl = "v" + params.version; else baseUrl = "v1"; //判断是否添加类型 var isAddUrlSoftType = true; if (params.isAddUrlSoftType != null) { if (params.isAddUrlSoftType == "false") //用字符型 isAddUrlSoftType = false; } if (isAddUrlSoftType) baseUrl = baseUrl + "/Web/" + params.controller + "/" + params.action; else baseUrl = baseUrl + "/" + params.controller + "/" + params.action; if (params.apiUrlType) { if (params.apiUrlType == "main") { return window.globalConfig.WebApiUrl.MainUrl + baseUrl; } else if (params.apiUrlType == "use") { return window.globalConfig.WebApiUrl.UserUrl + baseUrl; } else { return window.globalConfig.WebApiUrl.MainUrl + baseUrl; } } else { return window.globalConfig.WebApiUrl.MainUrl + baseUrl; } } static buildFullData(params) { var post_data = params.data; //判断是否添加语言参数 var isAddLangParam = true; if (params.isAddLangParam) { if (params.isAddLangParam == "false") //用字符型 isAddLangParam = false; } if (isAddLangParam) { if (post_data == null) post_data = {}; if (params.lang != null && post_data.Lang == null) post_data.Lang = params.lang; } else { //判断是否是空对象 if ((JSON.stringify(post_data) == "{}") == {}) return null; } //判断是否添加用户信息 if (params.userInfo && params.userInfo.isAddUserParam) { if (post_data == null) post_data = {}; if (params.userInfo.ID != null) post_data.UID = params.userInfo.ID; if (params.userInfo.Type != null) post_data.UType = params.userInfo.Type; } //console.log(params,post_data) return post_data; } static buildFullParams(params) { var post_data = params.params; //判断是否添加语言参数 var isAddLangParam = true; if (params.isAddLangParam) { if (params.isAddLangParam == "false") //用字符型 isAddLangParam = false; } if (isAddLangParam) { if (post_data == null) post_data = {}; if (params.lang != null && post_data.Lang == null) post_data.Lang = params.lang; } else { //判断是否是空对象 if ((JSON.stringify(post_data) == "{}") == {}) return null; } //判断是否添加用户信息 if (params.userInfo && params.userInfo.isAddUserParam) { if (post_data == null) post_data = {}; if (params.userInfo.ID != null) post_data.UID = params.userInfo.ID; if (params.userInfo.Type != null) post_data.UType = params.userInfo.Type; } //console.log(params,post_data) return post_data; } static buildHeader(params) { let headers = { Token: params.Token || axiosHelper.getToken(), Lang: languageHelper.getTypeFromRout(window.location.href), }; //判断是否添加表单类型的请求头 if (params.IsFormData && params.IsFormData == "true") { let newHeaders = { "Content-Type": "multipart/form-data", }; headers = { ...headers, ...newHeaders }; } return headers; } static getToken() { const loginStroe = useLogin() const userInfo = loginStroe.getUserInfo() let Token = userInfo?.Token || ""; return Token } } export default axiosHelper;