tanghaolin
2025-04-02 27dc9bdfc57e09b42922dab7d73117ad1486ceb5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
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;