ls-pro-common 3.1.57 → 3.1.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common.css +3887 -2605
- package/dist/common.js +1 -1
- package/dist/common.min.css +3887 -2605
- package/dist/common.min.js +1 -1
- package/es/components/ImageSelector.js +3 -2
- package/es/components/InputTable.js +12 -14
- package/es/http/ajax.d.ts +73 -0
- package/es/http/ajax.js +611 -0
- package/es/http/bizAjax.d.ts +34 -0
- package/es/http/bizAjax.js +120 -0
- package/es/http/index.d.ts +5 -125
- package/es/http/index.js +5 -974
- package/es/http/mdmRequest.js +1 -1
- package/es/http/upload.d.ts +24 -0
- package/es/http/upload.js +252 -0
- package/es/http/uploadByChunk.d.ts +37 -0
- package/es/http/uploadByChunk.js +385 -0
- package/es/utils/pasteUpload.d.ts +13 -13
- package/es/utils/pasteUpload.js +31 -29
- package/lib/components/ImageSelector.js +3 -2
- package/lib/components/InputTable.js +12 -14
- package/lib/http/ajax.d.ts +73 -0
- package/lib/http/ajax.js +611 -0
- package/lib/http/bizAjax.d.ts +34 -0
- package/lib/http/bizAjax.js +120 -0
- package/lib/http/index.d.ts +5 -125
- package/lib/http/index.js +5 -974
- package/lib/http/mdmRequest.js +1 -1
- package/lib/http/upload.d.ts +24 -0
- package/lib/http/upload.js +252 -0
- package/lib/http/uploadByChunk.d.ts +37 -0
- package/lib/http/uploadByChunk.js +385 -0
- package/lib/utils/pasteUpload.d.ts +13 -13
- package/lib/utils/pasteUpload.js +31 -29
- package/package.json +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export declare const TIMEOUT = 60000;
|
|
2
|
+
export declare const request: import("umi-request").RequestMethod<false>;
|
|
3
|
+
export declare const httpStatus: any;
|
|
4
|
+
export declare const ajaxHeader: Record<string, any>;
|
|
5
|
+
/**
|
|
6
|
+
* 判断URL是否跨域
|
|
7
|
+
*
|
|
8
|
+
* @param url 需要判断的URL
|
|
9
|
+
* @returns 如果是跨域返回true,否则返回false
|
|
10
|
+
*/
|
|
11
|
+
export declare const isCrossDomain: (url: string) => boolean;
|
|
12
|
+
export declare function ajax(url: string, params: Record<string, any> | undefined, type: string, needGateWay?: boolean, isJson?: boolean, timeout?: number): Promise<any>;
|
|
13
|
+
/**
|
|
14
|
+
* Get请求
|
|
15
|
+
*
|
|
16
|
+
* @param url 接口
|
|
17
|
+
* @param params 参数{key:value}
|
|
18
|
+
* @param needGateWay 是否需要网关 默认为true
|
|
19
|
+
* @returns Promise<ApiResponse>
|
|
20
|
+
*/
|
|
21
|
+
export declare function httpGet(url: string, params?: Record<string, any>, needGateWay?: boolean, timeout?: number): Promise<any>;
|
|
22
|
+
/**
|
|
23
|
+
* Post请求
|
|
24
|
+
*
|
|
25
|
+
* @param url 接口
|
|
26
|
+
* @param data 参数{key:value}
|
|
27
|
+
* @param isJson Json请求还是form请求,默认为json请求
|
|
28
|
+
* @param needGateWay 是否需要网关 默认为true
|
|
29
|
+
* @returns Promise<ApiResponse>
|
|
30
|
+
*/
|
|
31
|
+
export declare function httpPost(url: string, data?: Record<string, any>, isJson?: boolean, needGateWay?: boolean, timeout?: number): Promise<any>;
|
|
32
|
+
/**
|
|
33
|
+
* Put 请求
|
|
34
|
+
*
|
|
35
|
+
* @param url 接口
|
|
36
|
+
* @param data 参数{key:value}
|
|
37
|
+
* @param needGateWay 是否需要网关 默认为true
|
|
38
|
+
* @returns Promise<ApiResponse>
|
|
39
|
+
*/
|
|
40
|
+
export declare function httpPut(url: string, data?: Record<string, any>, needGateWay?: boolean, timeout?: number): Promise<any>;
|
|
41
|
+
/**
|
|
42
|
+
* Delete 请求
|
|
43
|
+
*
|
|
44
|
+
* @param url 接口
|
|
45
|
+
* @param data 参数[]
|
|
46
|
+
* @param needGateWay 是否需要网关 默认为true
|
|
47
|
+
* @returns Promise<ApiResponse>
|
|
48
|
+
*/
|
|
49
|
+
export declare function httpDelete(url: string, data: any, needGateWay?: boolean, timeout?: number): Promise<any>;
|
|
50
|
+
/**
|
|
51
|
+
* 分批获取数据,当一次性取大于2000条,且是第一页时,分多次去取,避免一次性取太多数据导致后端工程压力过大
|
|
52
|
+
*
|
|
53
|
+
* 注意:如果pageSize小于等于2000,或不是取第一页数据时,直接使用普通请求
|
|
54
|
+
*
|
|
55
|
+
* @param url
|
|
56
|
+
* @param params
|
|
57
|
+
* @param needGateWay
|
|
58
|
+
* @param timeout
|
|
59
|
+
* @returns
|
|
60
|
+
*/
|
|
61
|
+
export declare const httpBatchGet: (url: string, params?: Record<string, any>, needGateWay?: boolean, timeout?: number) => Promise<any>;
|
|
62
|
+
/**
|
|
63
|
+
* 分批获取数据,当一次性取大于2000条,且是第一页时,分多次去取,避免一次性取太多数据导致后端工程压力过大
|
|
64
|
+
*
|
|
65
|
+
* 注意:如果pageSize小于等于2000,或不是取第一页数据时,直接使用普通请求
|
|
66
|
+
*
|
|
67
|
+
* @param url
|
|
68
|
+
* @param params
|
|
69
|
+
* @param needGateWay
|
|
70
|
+
* @param timeout
|
|
71
|
+
* @returns
|
|
72
|
+
*/
|
|
73
|
+
export declare const httpBatchPost: (url: string, params?: Record<string, any>, needGateWay?: boolean, timeout?: number) => Promise<any>;
|
package/lib/http/ajax.js
ADDED
|
@@ -0,0 +1,611 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
2
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
4
|
+
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
|
5
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
|
+
import { extend } from 'umi-request';
|
|
7
|
+
import { getCache, getUrlQuery, setUrlQuery, getCookie, getCacheSessionFirst, getResourceProps, showError, httpError, toGatewayUrl, reLogin, showLoading, exitLoading, getBrowserId, setCache, isDingtalk } from '../utils';
|
|
8
|
+
export var TIMEOUT = 60000;
|
|
9
|
+
// 默认分批获取数据的大小
|
|
10
|
+
var DEFAULT_PAGE_SIZE = 2000;
|
|
11
|
+
//默认超时时间为1分钟
|
|
12
|
+
export var request = extend({
|
|
13
|
+
timeout: TIMEOUT
|
|
14
|
+
});
|
|
15
|
+
export var httpStatus = {
|
|
16
|
+
404: '请求的服务不存在',
|
|
17
|
+
429: '请求的服务繁忙',
|
|
18
|
+
502: '请求的服务网关出错',
|
|
19
|
+
503: '请求的服务器异常',
|
|
20
|
+
504: '请求服务超时'
|
|
21
|
+
};
|
|
22
|
+
export var ajaxHeader = {
|
|
23
|
+
browserId: '',
|
|
24
|
+
ifExpireWarn: false
|
|
25
|
+
};
|
|
26
|
+
(function () {
|
|
27
|
+
setTimeout(function () {
|
|
28
|
+
getBrowserId().then(function (id) {
|
|
29
|
+
ajaxHeader.browserId = id;
|
|
30
|
+
});
|
|
31
|
+
}, 0);
|
|
32
|
+
})();
|
|
33
|
+
//是否跨域
|
|
34
|
+
/**
|
|
35
|
+
* 判断URL是否跨域
|
|
36
|
+
*
|
|
37
|
+
* @param url 需要判断的URL
|
|
38
|
+
* @returns 如果是跨域返回true,否则返回false
|
|
39
|
+
*/
|
|
40
|
+
export var isCrossDomain = function isCrossDomain(url) {
|
|
41
|
+
// 如果URL不是以http(s)://开头,则直接认为是同源
|
|
42
|
+
if (!url.startsWith('http://') && !url.startsWith('https://') && !url.startsWith('//')) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
// 创建URL对象
|
|
47
|
+
var currentUrl = window.location;
|
|
48
|
+
if (url.startsWith('//')) {
|
|
49
|
+
url = currentUrl.protocol + url;
|
|
50
|
+
}
|
|
51
|
+
var targetUrl = new URL(url);
|
|
52
|
+
// 判断协议、域名、端口是否一致
|
|
53
|
+
return targetUrl.protocol !== currentUrl.protocol || targetUrl.hostname !== currentUrl.hostname || targetUrl.port !== currentUrl.port;
|
|
54
|
+
} catch (e) {
|
|
55
|
+
// URL解析失败,返回true表示跨域
|
|
56
|
+
console.warn('URL解析失败:', e);
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
/** 请求拦截器,统一添加token */
|
|
61
|
+
request.interceptors.request.use(function (url, options) {
|
|
62
|
+
var _window$crypto$random, _window$crypto, _options$params;
|
|
63
|
+
options.headers = options.headers || {};
|
|
64
|
+
// 处理浏览器指纹
|
|
65
|
+
if (ajaxHeader.browserId) {
|
|
66
|
+
options.headers.browserId = ajaxHeader.browserId;
|
|
67
|
+
} else {
|
|
68
|
+
if (getCache('browserId')) {
|
|
69
|
+
ajaxHeader.browserId = getCache('browserId');
|
|
70
|
+
options.headers.browserId = ajaxHeader.browserId;
|
|
71
|
+
} else {
|
|
72
|
+
getBrowserId().then(function (id) {
|
|
73
|
+
ajaxHeader.browserId = id;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// 处理门店
|
|
78
|
+
var shopNo = getCacheSessionFirst('shopNo');
|
|
79
|
+
if (shopNo) {
|
|
80
|
+
options.headers.shopNo = shopNo;
|
|
81
|
+
}
|
|
82
|
+
// 处理门店
|
|
83
|
+
var shopCode = getCacheSessionFirst('shopCode');
|
|
84
|
+
if (shopCode) {
|
|
85
|
+
options.headers.shopCode = shopCode;
|
|
86
|
+
}
|
|
87
|
+
// 处理仓库
|
|
88
|
+
var storeNo = getCacheSessionFirst('storeNo');
|
|
89
|
+
if (storeNo) {
|
|
90
|
+
options.headers.storeNo = storeNo;
|
|
91
|
+
}
|
|
92
|
+
var tag = getCookie('x-asm-prefer-tag');
|
|
93
|
+
if (tag) {
|
|
94
|
+
options.headers['x-asm-prefer-tag'] = tag; //灰度发版标识
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (isDingtalk) {
|
|
98
|
+
options.headers.terminal = 'APP';
|
|
99
|
+
} else {
|
|
100
|
+
options.headers.terminal = 'PC';
|
|
101
|
+
}
|
|
102
|
+
var expireWarnFlag = getCache('expireWarnFlag', true);
|
|
103
|
+
options.headers.expireWarnFlag = expireWarnFlag === '1' ? '1' : '0';
|
|
104
|
+
var token = getCookie('token');
|
|
105
|
+
if (token && url.indexOf('noToken=1') === -1) {
|
|
106
|
+
options.headers.token = token;
|
|
107
|
+
}
|
|
108
|
+
url = url.replace('&noToken=1', '').replace('noToken=1', '');
|
|
109
|
+
var resCode = getUrlQuery('resCode', url) || window.__currentResCode__ || getUrlQuery('resCode') || getUrlQuery('resourceId') || getResourceProps('resourceId');
|
|
110
|
+
var param = {
|
|
111
|
+
_t1: Date.now(),
|
|
112
|
+
__r: ((_window$crypto$random = (_window$crypto = window.crypto)['randomUUID']) === null || _window$crypto$random === void 0 ? void 0 : _window$crypto$random.call(_window$crypto)) || Math.random()
|
|
113
|
+
};
|
|
114
|
+
// 当没有明文参数resCode的时候,添加resCode参数为资源Id
|
|
115
|
+
if (resCode && !((_options$params = options.params) === null || _options$params === void 0 ? void 0 : _options$params.resCode)) {
|
|
116
|
+
param.resCode = resCode;
|
|
117
|
+
}
|
|
118
|
+
url = setUrlQuery(url, param);
|
|
119
|
+
return {
|
|
120
|
+
url: url,
|
|
121
|
+
options: options
|
|
122
|
+
};
|
|
123
|
+
});
|
|
124
|
+
/** 请求返回拦截器,统一处理业务异常 */
|
|
125
|
+
request.interceptors.response.use( /*#__PURE__*/function () {
|
|
126
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(response, options) {
|
|
127
|
+
var _navigator, _navigator$userAgent;
|
|
128
|
+
var noMsg, userAgent, isMobile, _data$flag, _data$flag2, _data$flag3, data, retCode, retMsg, faultCode, is99110, text, _text, _text2, _data$flag4, _data$flag5, _data$flag6, _data, _retCode, _retMsg, status, _faultCode, _is;
|
|
129
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
130
|
+
while (1) switch (_context.prev = _context.next) {
|
|
131
|
+
case 0:
|
|
132
|
+
noMsg = getUrlQuery('noMsg', options.url);
|
|
133
|
+
userAgent = (_navigator = navigator) === null || _navigator === void 0 ? void 0 : (_navigator$userAgent = _navigator.userAgent) === null || _navigator$userAgent === void 0 ? void 0 : _navigator$userAgent.toLowerCase();
|
|
134
|
+
isMobile = /mobile/i.test(userAgent); // http 状态码错误
|
|
135
|
+
if (!(response.status < 200 || response.status >= 300)) {
|
|
136
|
+
_context.next = 28;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
_context.prev = 4;
|
|
140
|
+
_context.next = 7;
|
|
141
|
+
return response.clone().json();
|
|
142
|
+
case 7:
|
|
143
|
+
data = _context.sent;
|
|
144
|
+
retCode = (_data$flag = data.flag) === null || _data$flag === void 0 ? void 0 : _data$flag.retCode;
|
|
145
|
+
retMsg = (_data$flag2 = data.flag) === null || _data$flag2 === void 0 ? void 0 : _data$flag2.retMsg;
|
|
146
|
+
faultCode = (_data$flag3 = data.flag) === null || _data$flag3 === void 0 ? void 0 : _data$flag3.faultCode;
|
|
147
|
+
is99110 = false; // wms 提示,是否排班标识
|
|
148
|
+
if (!(retCode === '99110')) {
|
|
149
|
+
_context.next = 18;
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
is99110 = true;
|
|
153
|
+
if (!(getCache('expireWarnFlag', true) === '1' || ajaxHeader.ifExpireWarn)) {
|
|
154
|
+
_context.next = 16;
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
return _context.abrupt("return", response);
|
|
158
|
+
case 16:
|
|
159
|
+
ajaxHeader.ifExpireWarn = true;
|
|
160
|
+
setCache('expireWarnFlag', '1', true);
|
|
161
|
+
case 18:
|
|
162
|
+
if ((retCode === 'timeout' || retCode === '4011' || retCode === '4013' || retCode === '9009' && retMsg === '令牌不能为空') && !isMobile) {
|
|
163
|
+
if (!getCookie('token')) {
|
|
164
|
+
(window.top || window).location.href = location.pathname === '/' || location.pathname.startsWith('/login') ? '/login' : '/login?redirect=' + encodeURIComponent(location.href);
|
|
165
|
+
} else {
|
|
166
|
+
reLogin();
|
|
167
|
+
}
|
|
168
|
+
} else if (noMsg !== '1') {
|
|
169
|
+
if (faultCode) {
|
|
170
|
+
if (retCode === '4012') {
|
|
171
|
+
text = '用户已禁用,无权限进行操作';
|
|
172
|
+
}
|
|
173
|
+
httpError(text || retMsg, retCode, faultCode, {
|
|
174
|
+
title: is99110 ? '账号到期提醒' : '请求接口出错'
|
|
175
|
+
});
|
|
176
|
+
} else {
|
|
177
|
+
_text = httpStatus[response.status];
|
|
178
|
+
if (response.status === 503 && response.statusText === 'no healthy upstream') {
|
|
179
|
+
_text = '请求的服务未启动';
|
|
180
|
+
} else if (response.status === 503 && response.statusText === 'reached concurrency limit') {
|
|
181
|
+
_text = '请求的服务被限流';
|
|
182
|
+
}
|
|
183
|
+
showError(_text || retMsg);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
_context.next = 26;
|
|
187
|
+
break;
|
|
188
|
+
case 21:
|
|
189
|
+
_context.prev = 21;
|
|
190
|
+
_context.t0 = _context["catch"](4);
|
|
191
|
+
_text2 = httpStatus[response.status];
|
|
192
|
+
if (response.status === 503 && response.statusText === 'no healthy upstream') {
|
|
193
|
+
_text2 = '请求的服务未启动';
|
|
194
|
+
} else if (response.status === 503 && response.statusText === 'reached concurrency limit') {
|
|
195
|
+
_text2 = '请求的服务被限流';
|
|
196
|
+
}
|
|
197
|
+
showError(_text2 || _context.t0.message || response.statusText);
|
|
198
|
+
case 26:
|
|
199
|
+
_context.next = 44;
|
|
200
|
+
break;
|
|
201
|
+
case 28:
|
|
202
|
+
if (!(noMsg !== '1')) {
|
|
203
|
+
_context.next = 44;
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
_context.next = 31;
|
|
207
|
+
return response.clone().json();
|
|
208
|
+
case 31:
|
|
209
|
+
_data = _context.sent;
|
|
210
|
+
_retCode = (_data === null || _data === void 0 ? void 0 : (_data$flag4 = _data.flag) === null || _data$flag4 === void 0 ? void 0 : _data$flag4.retCode) || '0';
|
|
211
|
+
_retMsg = ((_data$flag5 = _data.flag) === null || _data$flag5 === void 0 ? void 0 : _data$flag5.retMsg) || '请求的服务出错';
|
|
212
|
+
status = (getUrlQuery('apiStatus', options.url) || '0').split(',');
|
|
213
|
+
_faultCode = (_data$flag6 = _data.flag) === null || _data$flag6 === void 0 ? void 0 : _data$flag6.faultCode;
|
|
214
|
+
_is = false; // wms 提示,是否排班标识
|
|
215
|
+
if (!(_retCode === '99110')) {
|
|
216
|
+
_context.next = 43;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
_is = true;
|
|
220
|
+
if (!(getCache('expireWarnFlag', true) === '1' || ajaxHeader.ifExpireWarn)) {
|
|
221
|
+
_context.next = 41;
|
|
222
|
+
break;
|
|
223
|
+
}
|
|
224
|
+
return _context.abrupt("return", response);
|
|
225
|
+
case 41:
|
|
226
|
+
ajaxHeader.ifExpireWarn = true;
|
|
227
|
+
setCache('expireWarnFlag', '1', true);
|
|
228
|
+
case 43:
|
|
229
|
+
if (_retCode && !status.includes(_retCode)) {
|
|
230
|
+
if ((_retCode === 'timeout' || _retCode === '4011' || _retCode === '9009' && _retMsg === '令牌不能为空') && !isMobile) {
|
|
231
|
+
if (!getCookie('token')) {
|
|
232
|
+
(window.top || window).location.href = location.pathname === '/' || location.pathname.startsWith('/login') ? '/login' : '/login?redirect=' + encodeURIComponent(location.href);
|
|
233
|
+
} else {
|
|
234
|
+
reLogin();
|
|
235
|
+
}
|
|
236
|
+
} else {
|
|
237
|
+
if (_faultCode) {
|
|
238
|
+
httpError(_retMsg, _retCode, _faultCode, {
|
|
239
|
+
title: _is ? '账号到期提醒' : '请求接口出错'
|
|
240
|
+
});
|
|
241
|
+
} else {
|
|
242
|
+
showError(_retMsg);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
case 44:
|
|
247
|
+
return _context.abrupt("return", response);
|
|
248
|
+
case 45:
|
|
249
|
+
case "end":
|
|
250
|
+
return _context.stop();
|
|
251
|
+
}
|
|
252
|
+
}, _callee, null, [[4, 21]]);
|
|
253
|
+
}));
|
|
254
|
+
return function (_x, _x2) {
|
|
255
|
+
return _ref.apply(this, arguments);
|
|
256
|
+
};
|
|
257
|
+
}());
|
|
258
|
+
export function ajax(url) {
|
|
259
|
+
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
260
|
+
var type = arguments.length > 2 ? arguments[2] : undefined;
|
|
261
|
+
var needGateWay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
262
|
+
var isJson = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
263
|
+
var timeout = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : TIMEOUT;
|
|
264
|
+
if (needGateWay) {
|
|
265
|
+
url = toGatewayUrl(url);
|
|
266
|
+
}
|
|
267
|
+
var loadText = getUrlQuery('_loading', url);
|
|
268
|
+
if (loadText) {
|
|
269
|
+
showLoading(loadText);
|
|
270
|
+
url = setUrlQuery(url, {
|
|
271
|
+
_loading: ''
|
|
272
|
+
}).replace('&_loading=', '').replace('_loading=', '');
|
|
273
|
+
}
|
|
274
|
+
var finallyFn = function finallyFn() {
|
|
275
|
+
if (loadText) {
|
|
276
|
+
exitLoading();
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
if (type === 'get') {
|
|
280
|
+
return request.get(url, {
|
|
281
|
+
params: params,
|
|
282
|
+
timeout: timeout
|
|
283
|
+
}).finally(finallyFn);
|
|
284
|
+
} else if (type === 'delete') {
|
|
285
|
+
return request.delete(url, {
|
|
286
|
+
data: params,
|
|
287
|
+
timeout: timeout
|
|
288
|
+
}).finally(finallyFn);
|
|
289
|
+
} else if (type === 'put') {
|
|
290
|
+
return request.put(url, {
|
|
291
|
+
data: params,
|
|
292
|
+
timeout: timeout
|
|
293
|
+
}).finally(finallyFn);
|
|
294
|
+
} else {
|
|
295
|
+
// 如果sumProperties存在,则添加sumProperties参数到url中
|
|
296
|
+
if (params.sumProperties && typeof params.sumProperties === 'string') {
|
|
297
|
+
url = setUrlQuery(url, {
|
|
298
|
+
sumProperties: params.sumProperties
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
var requestType = isJson ? 'json' : 'form';
|
|
302
|
+
return request.post(url, {
|
|
303
|
+
data: params,
|
|
304
|
+
timeout: timeout,
|
|
305
|
+
requestType: requestType
|
|
306
|
+
}).finally(finallyFn);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get请求
|
|
311
|
+
*
|
|
312
|
+
* @param url 接口
|
|
313
|
+
* @param params 参数{key:value}
|
|
314
|
+
* @param needGateWay 是否需要网关 默认为true
|
|
315
|
+
* @returns Promise<ApiResponse>
|
|
316
|
+
*/
|
|
317
|
+
export function httpGet(url) {
|
|
318
|
+
var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
319
|
+
var needGateWay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
320
|
+
var timeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : TIMEOUT;
|
|
321
|
+
return ajax(url, params, 'get', needGateWay, true, timeout);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Post请求
|
|
325
|
+
*
|
|
326
|
+
* @param url 接口
|
|
327
|
+
* @param data 参数{key:value}
|
|
328
|
+
* @param isJson Json请求还是form请求,默认为json请求
|
|
329
|
+
* @param needGateWay 是否需要网关 默认为true
|
|
330
|
+
* @returns Promise<ApiResponse>
|
|
331
|
+
*/
|
|
332
|
+
export function httpPost(url) {
|
|
333
|
+
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
334
|
+
var isJson = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
335
|
+
var needGateWay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
336
|
+
var timeout = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : TIMEOUT;
|
|
337
|
+
return ajax(url, data, 'post', needGateWay, isJson, timeout);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Put 请求
|
|
341
|
+
*
|
|
342
|
+
* @param url 接口
|
|
343
|
+
* @param data 参数{key:value}
|
|
344
|
+
* @param needGateWay 是否需要网关 默认为true
|
|
345
|
+
* @returns Promise<ApiResponse>
|
|
346
|
+
*/
|
|
347
|
+
export function httpPut(url) {
|
|
348
|
+
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
349
|
+
var needGateWay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
350
|
+
var timeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : TIMEOUT;
|
|
351
|
+
return ajax(url, data, 'put', needGateWay, true, timeout);
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Delete 请求
|
|
355
|
+
*
|
|
356
|
+
* @param url 接口
|
|
357
|
+
* @param data 参数[]
|
|
358
|
+
* @param needGateWay 是否需要网关 默认为true
|
|
359
|
+
* @returns Promise<ApiResponse>
|
|
360
|
+
*/
|
|
361
|
+
export function httpDelete(url, data) {
|
|
362
|
+
var needGateWay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
363
|
+
var timeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 60000;
|
|
364
|
+
return ajax(url, data, 'delete', needGateWay, true, timeout);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* 分批获取数据
|
|
368
|
+
*
|
|
369
|
+
* @param url
|
|
370
|
+
* @param params
|
|
371
|
+
* @param method
|
|
372
|
+
* @param needGateWay
|
|
373
|
+
* @param timeout
|
|
374
|
+
* @returns
|
|
375
|
+
*/
|
|
376
|
+
function httpBatchRequest(_x3) {
|
|
377
|
+
return _httpBatchRequest.apply(this, arguments);
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* 分批获取数据,当一次性取大于2000条,且是第一页时,分多次去取,避免一次性取太多数据导致后端工程压力过大
|
|
381
|
+
*
|
|
382
|
+
* 注意:如果pageSize小于等于2000,或不是取第一页数据时,直接使用普通请求
|
|
383
|
+
*
|
|
384
|
+
* @param url
|
|
385
|
+
* @param params
|
|
386
|
+
* @param needGateWay
|
|
387
|
+
* @param timeout
|
|
388
|
+
* @returns
|
|
389
|
+
*/
|
|
390
|
+
function _httpBatchRequest() {
|
|
391
|
+
_httpBatchRequest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(url) {
|
|
392
|
+
var params,
|
|
393
|
+
method,
|
|
394
|
+
needGateWay,
|
|
395
|
+
timeout,
|
|
396
|
+
urlPageSize,
|
|
397
|
+
urlPageNum,
|
|
398
|
+
pageSize,
|
|
399
|
+
pageNum,
|
|
400
|
+
isV2,
|
|
401
|
+
PAGE_SIZE,
|
|
402
|
+
PAGE_NUM,
|
|
403
|
+
cleanUrl,
|
|
404
|
+
batchSize,
|
|
405
|
+
allRows,
|
|
406
|
+
total,
|
|
407
|
+
currentPage,
|
|
408
|
+
_objectSpread2,
|
|
409
|
+
firstParams,
|
|
410
|
+
api,
|
|
411
|
+
_setUrlQuery3,
|
|
412
|
+
firstResponse,
|
|
413
|
+
firstData,
|
|
414
|
+
actualPageSize,
|
|
415
|
+
totalPages,
|
|
416
|
+
maxConcurrent,
|
|
417
|
+
remainingPages,
|
|
418
|
+
i,
|
|
419
|
+
_i,
|
|
420
|
+
batchPages,
|
|
421
|
+
batchRequests,
|
|
422
|
+
batchResponses,
|
|
423
|
+
_args4 = arguments;
|
|
424
|
+
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
425
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
426
|
+
case 0:
|
|
427
|
+
params = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
|
|
428
|
+
method = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : 'get';
|
|
429
|
+
needGateWay = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : true;
|
|
430
|
+
timeout = _args4.length > 4 && _args4[4] !== undefined ? _args4[4] : TIMEOUT;
|
|
431
|
+
// 从URL中获取pageSize和page参数
|
|
432
|
+
urlPageSize = getUrlQuery('pageSize', url) || getUrlQuery('page.size', url);
|
|
433
|
+
urlPageNum = getUrlQuery('page', url) || getUrlQuery('page.pn', url) || '1'; // 优先使用params中的分页参数,其次使用URL中的分页参数
|
|
434
|
+
pageSize = (params === null || params === void 0 ? void 0 : params.pageSize) || (params === null || params === void 0 ? void 0 : params['page.size']) || (urlPageSize ? parseInt(urlPageSize) : DEFAULT_PAGE_SIZE);
|
|
435
|
+
pageNum = (params === null || params === void 0 ? void 0 : params.page) || (params === null || params === void 0 ? void 0 : params['page.pn']) || parseInt(urlPageNum); // 如果pageSize小于等于DEFAULT_PAGE_SIZE,或不是取第一页数据时,直接使用普通请求
|
|
436
|
+
if (!(pageSize <= DEFAULT_PAGE_SIZE || pageNum !== 1)) {
|
|
437
|
+
_context4.next = 10;
|
|
438
|
+
break;
|
|
439
|
+
}
|
|
440
|
+
return _context4.abrupt("return", ajax(url, params, method, needGateWay, true, timeout));
|
|
441
|
+
case 10:
|
|
442
|
+
// 是否为 2.0版本的api。
|
|
443
|
+
isV2 = url.includes('page.size') || (params === null || params === void 0 ? void 0 : params['page.size']) ? true : false; // 不同版本api的请求分页关键字处理,
|
|
444
|
+
PAGE_SIZE = isV2 ? 'page.size' : 'pageSize';
|
|
445
|
+
PAGE_NUM = isV2 ? 'page.pn' : 'page'; // 分批获取数据时,需要从URL中移除原有的pageSize和page参数
|
|
446
|
+
cleanUrl = url;
|
|
447
|
+
if (urlPageSize) {
|
|
448
|
+
cleanUrl = setUrlQuery(cleanUrl, _defineProperty({}, PAGE_SIZE, '')).replace("&".concat(PAGE_SIZE, "="), '').replace("".concat(PAGE_SIZE, "="), '');
|
|
449
|
+
}
|
|
450
|
+
if (urlPageNum) {
|
|
451
|
+
cleanUrl = setUrlQuery(cleanUrl, _defineProperty({}, PAGE_NUM, '')).replace("&".concat(PAGE_NUM, "="), '').replace("".concat(PAGE_NUM, "="), '');
|
|
452
|
+
}
|
|
453
|
+
// 分批获取数据
|
|
454
|
+
batchSize = DEFAULT_PAGE_SIZE;
|
|
455
|
+
allRows = [];
|
|
456
|
+
total = 0;
|
|
457
|
+
currentPage = pageNum;
|
|
458
|
+
_context4.prev = 20;
|
|
459
|
+
// 第一次请求,获取总数
|
|
460
|
+
firstParams = _objectSpread(_objectSpread({}, params), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, PAGE_SIZE, batchSize), _defineProperty(_objectSpread2, PAGE_NUM, currentPage), _objectSpread2)); // 如果是 post 请求,body 和 query 里都传入分页参数
|
|
461
|
+
api = cleanUrl;
|
|
462
|
+
if (method === 'post') {
|
|
463
|
+
api = setUrlQuery(cleanUrl, (_setUrlQuery3 = {}, _defineProperty(_setUrlQuery3, PAGE_SIZE, batchSize), _defineProperty(_setUrlQuery3, PAGE_NUM, currentPage), _setUrlQuery3));
|
|
464
|
+
}
|
|
465
|
+
_context4.next = 26;
|
|
466
|
+
return ajax(api, firstParams, method, needGateWay, true, timeout);
|
|
467
|
+
case 26:
|
|
468
|
+
firstResponse = _context4.sent;
|
|
469
|
+
firstData = firstResponse; // 如果返回值没有 rows 或 total,直接返回普通请求
|
|
470
|
+
if (!(!('rows' in firstData) || !('total' in firstData))) {
|
|
471
|
+
_context4.next = 30;
|
|
472
|
+
break;
|
|
473
|
+
}
|
|
474
|
+
return _context4.abrupt("return", ajax(url, params, method, needGateWay, true, timeout));
|
|
475
|
+
case 30:
|
|
476
|
+
if (firstData.rows) {
|
|
477
|
+
allRows.push.apply(allRows, _toConsumableArray(firstData.rows));
|
|
478
|
+
total = firstData.total || 0;
|
|
479
|
+
}
|
|
480
|
+
// 如果total小于等于DEFAULT_PAGE_SIZE,不需要分批获取,直接返回
|
|
481
|
+
if (!(total <= DEFAULT_PAGE_SIZE)) {
|
|
482
|
+
_context4.next = 33;
|
|
483
|
+
break;
|
|
484
|
+
}
|
|
485
|
+
return _context4.abrupt("return", firstResponse);
|
|
486
|
+
case 33:
|
|
487
|
+
// 计算实际需要获取的数据量(不超过用户传入的pageSize)
|
|
488
|
+
actualPageSize = Math.min(pageSize, total); // 计算需要请求的总页数(基于实际需要的数据量)
|
|
489
|
+
totalPages = Math.ceil(actualPageSize / batchSize); // 如果还有更多数据需要获取
|
|
490
|
+
if (!(totalPages > 1)) {
|
|
491
|
+
_context4.next = 50;
|
|
492
|
+
break;
|
|
493
|
+
}
|
|
494
|
+
// 分批并发请求,每次最多6个并发
|
|
495
|
+
maxConcurrent = 6;
|
|
496
|
+
remainingPages = []; // 准备所有需要请求的页码
|
|
497
|
+
for (i = currentPage + 1; i <= totalPages; i++) {
|
|
498
|
+
remainingPages.push(i);
|
|
499
|
+
}
|
|
500
|
+
// 分批处理请求
|
|
501
|
+
_i = 0;
|
|
502
|
+
case 40:
|
|
503
|
+
if (!(_i < remainingPages.length)) {
|
|
504
|
+
_context4.next = 50;
|
|
505
|
+
break;
|
|
506
|
+
}
|
|
507
|
+
batchPages = remainingPages.slice(_i, _i + maxConcurrent);
|
|
508
|
+
batchRequests = batchPages.map(function (page) {
|
|
509
|
+
var _objectSpread3;
|
|
510
|
+
var requestParams = _objectSpread(_objectSpread({}, params), {}, (_objectSpread3 = {}, _defineProperty(_objectSpread3, PAGE_SIZE, batchSize), _defineProperty(_objectSpread3, PAGE_NUM, page), _objectSpread3));
|
|
511
|
+
var requestApi = cleanUrl;
|
|
512
|
+
if (method === 'post') {
|
|
513
|
+
var _setUrlQuery4;
|
|
514
|
+
requestApi = setUrlQuery(cleanUrl, (_setUrlQuery4 = {}, _defineProperty(_setUrlQuery4, PAGE_SIZE, batchSize), _defineProperty(_setUrlQuery4, PAGE_NUM, page), _setUrlQuery4));
|
|
515
|
+
}
|
|
516
|
+
return ajax(requestApi, requestParams, method, needGateWay, true, timeout);
|
|
517
|
+
}); // 并发执行当前批次的请求
|
|
518
|
+
_context4.next = 45;
|
|
519
|
+
return Promise.all(batchRequests);
|
|
520
|
+
case 45:
|
|
521
|
+
batchResponses = _context4.sent;
|
|
522
|
+
// 合并当前批次的响应数据
|
|
523
|
+
batchResponses.forEach(function (response) {
|
|
524
|
+
var data = response;
|
|
525
|
+
if (data.rows) {
|
|
526
|
+
allRows.push.apply(allRows, _toConsumableArray(data.rows));
|
|
527
|
+
}
|
|
528
|
+
});
|
|
529
|
+
case 47:
|
|
530
|
+
_i += maxConcurrent;
|
|
531
|
+
_context4.next = 40;
|
|
532
|
+
break;
|
|
533
|
+
case 50:
|
|
534
|
+
// 如果获取的数据超过了用户要求的pageSize,进行截取
|
|
535
|
+
if (allRows.length > actualPageSize) {
|
|
536
|
+
allRows.splice(actualPageSize);
|
|
537
|
+
}
|
|
538
|
+
// 返回合并后的数据,保持与原始响应格式一致
|
|
539
|
+
return _context4.abrupt("return", _objectSpread(_objectSpread({}, firstResponse), {}, {
|
|
540
|
+
rows: allRows,
|
|
541
|
+
total: total // 保持原始的total值
|
|
542
|
+
}));
|
|
543
|
+
case 54:
|
|
544
|
+
_context4.prev = 54;
|
|
545
|
+
_context4.t0 = _context4["catch"](20);
|
|
546
|
+
throw _context4.t0;
|
|
547
|
+
case 57:
|
|
548
|
+
case "end":
|
|
549
|
+
return _context4.stop();
|
|
550
|
+
}
|
|
551
|
+
}, _callee4, null, [[20, 54]]);
|
|
552
|
+
}));
|
|
553
|
+
return _httpBatchRequest.apply(this, arguments);
|
|
554
|
+
}
|
|
555
|
+
export var httpBatchGet = /*#__PURE__*/function () {
|
|
556
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url) {
|
|
557
|
+
var params,
|
|
558
|
+
needGateWay,
|
|
559
|
+
timeout,
|
|
560
|
+
_args2 = arguments;
|
|
561
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
562
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
563
|
+
case 0:
|
|
564
|
+
params = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {};
|
|
565
|
+
needGateWay = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : true;
|
|
566
|
+
timeout = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : TIMEOUT;
|
|
567
|
+
return _context2.abrupt("return", httpBatchRequest(url, params, 'get', needGateWay, timeout));
|
|
568
|
+
case 4:
|
|
569
|
+
case "end":
|
|
570
|
+
return _context2.stop();
|
|
571
|
+
}
|
|
572
|
+
}, _callee2);
|
|
573
|
+
}));
|
|
574
|
+
return function httpBatchGet(_x4) {
|
|
575
|
+
return _ref2.apply(this, arguments);
|
|
576
|
+
};
|
|
577
|
+
}();
|
|
578
|
+
/**
|
|
579
|
+
* 分批获取数据,当一次性取大于2000条,且是第一页时,分多次去取,避免一次性取太多数据导致后端工程压力过大
|
|
580
|
+
*
|
|
581
|
+
* 注意:如果pageSize小于等于2000,或不是取第一页数据时,直接使用普通请求
|
|
582
|
+
*
|
|
583
|
+
* @param url
|
|
584
|
+
* @param params
|
|
585
|
+
* @param needGateWay
|
|
586
|
+
* @param timeout
|
|
587
|
+
* @returns
|
|
588
|
+
*/
|
|
589
|
+
export var httpBatchPost = /*#__PURE__*/function () {
|
|
590
|
+
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(url) {
|
|
591
|
+
var params,
|
|
592
|
+
needGateWay,
|
|
593
|
+
timeout,
|
|
594
|
+
_args3 = arguments;
|
|
595
|
+
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
596
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
597
|
+
case 0:
|
|
598
|
+
params = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
|
|
599
|
+
needGateWay = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : true;
|
|
600
|
+
timeout = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : TIMEOUT;
|
|
601
|
+
return _context3.abrupt("return", httpBatchRequest(url, params, 'post', needGateWay, timeout));
|
|
602
|
+
case 4:
|
|
603
|
+
case "end":
|
|
604
|
+
return _context3.stop();
|
|
605
|
+
}
|
|
606
|
+
}, _callee3);
|
|
607
|
+
}));
|
|
608
|
+
return function httpBatchPost(_x5) {
|
|
609
|
+
return _ref3.apply(this, arguments);
|
|
610
|
+
};
|
|
611
|
+
}();
|