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/lib/http/index.js CHANGED
@@ -1,975 +1,6 @@
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, urlDownloadDomain } from '../utils';
8
- //默认超时时间为1分钟
9
- var request = extend({
10
- timeout: 60000
11
- });
12
- var httpStatus = {
13
- 404: '请求的服务不存在',
14
- 429: '请求的服务繁忙',
15
- 502: '请求的服务网关出错',
16
- 503: '请求的服务器异常',
17
- 504: '请求服务超时'
18
- };
19
- var browserId = '';
20
- (function () {
21
- setTimeout(function () {
22
- getBrowserId().then(function (id) {
23
- browserId = id;
24
- });
25
- }, 0);
26
- })();
27
- //是否跨域
28
- /**
29
- * 判断URL是否跨域
30
- *
31
- * @param url 需要判断的URL
32
- * @returns 如果是跨域返回true,否则返回false
33
- */
34
- export var isCrossDomain = function isCrossDomain(url) {
35
- // 如果URL不是以http(s)://开头,则直接认为是同源
36
- if (!url.startsWith('http://') && !url.startsWith('https://') && !url.startsWith('//')) {
37
- return false;
38
- }
39
- try {
40
- // 创建URL对象
41
- var currentUrl = window.location;
42
- if (url.startsWith('//')) {
43
- url = currentUrl.protocol + url;
44
- }
45
- var targetUrl = new URL(url);
46
- // 判断协议、域名、端口是否一致
47
- return targetUrl.protocol !== currentUrl.protocol || targetUrl.hostname !== currentUrl.hostname || targetUrl.port !== currentUrl.port;
48
- } catch (e) {
49
- // URL解析失败,返回true表示跨域
50
- console.warn('URL解析失败:', e);
51
- return true;
52
- }
53
- };
54
- /** 请求拦截器,统一添加token */
55
- request.interceptors.request.use(function (url, options) {
56
- var _window$crypto$random, _window$crypto, _options$params;
57
- options.headers = options.headers || {};
58
- // 处理浏览器指纹
59
- if (browserId) {
60
- options.headers.browserId = browserId;
61
- } else {
62
- if (getCache('browserId')) {
63
- browserId = getCache('browserId');
64
- options.headers.browserId = browserId;
65
- } else {
66
- getBrowserId().then(function (id) {
67
- browserId = id;
68
- });
69
- }
70
- }
71
- // 处理门店
72
- var shopNo = getCacheSessionFirst('shopNo');
73
- if (shopNo) {
74
- options.headers.shopNo = shopNo;
75
- }
76
- // 处理门店
77
- var shopCode = getCacheSessionFirst('shopCode');
78
- if (shopCode) {
79
- options.headers.shopCode = shopCode;
80
- }
81
- // 处理仓库
82
- var storeNo = getCacheSessionFirst('storeNo');
83
- if (storeNo) {
84
- options.headers.storeNo = storeNo;
85
- }
86
- var tag = getCookie('x-asm-prefer-tag');
87
- if (tag) {
88
- options.headers['x-asm-prefer-tag'] = tag; //灰度发版标识
89
- }
90
-
91
- if (isDingtalk) {
92
- options.headers['terminal'] = 'APP';
93
- } else {
94
- options.headers['terminal'] = 'PC';
95
- }
96
- var expireWarnFlag = getCache('expireWarnFlag', true);
97
- options.headers.expireWarnFlag = expireWarnFlag === '1' ? '1' : '0';
98
- var token = getCookie('token');
99
- if (token && url.indexOf('noToken=1') === -1) {
100
- options.headers.token = token;
101
- }
102
- url = url.replace('&noToken=1', '').replace('noToken=1', '');
103
- var resCode = getUrlQuery('resCode', url) || window.__currentResCode__ || getUrlQuery('resCode') || getUrlQuery('resourceId') || getResourceProps('resourceId');
104
- var param = {
105
- _t1: Date.now(),
106
- __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()
107
- };
108
- // 当没有明文参数resCode的时候,添加resCode参数为资源Id
109
- if (resCode && !((_options$params = options.params) === null || _options$params === void 0 ? void 0 : _options$params.resCode)) {
110
- param.resCode = resCode;
111
- }
112
- url = setUrlQuery(url, param);
113
- return {
114
- url: url,
115
- options: options
116
- };
117
- });
118
- var ifExpireWarn = false;
119
- /** 请求返回拦截器,统一处理业务异常 */
120
- request.interceptors.response.use( /*#__PURE__*/function () {
121
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(response, options) {
122
- var _navigator, _navigator$userAgent;
123
- 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$flag7, _data, _retCode, _retMsg, status, requestId, _faultCode, _is;
124
- return _regeneratorRuntime.wrap(function _callee$(_context) {
125
- while (1) switch (_context.prev = _context.next) {
126
- case 0:
127
- noMsg = getUrlQuery('noMsg', options.url);
128
- userAgent = (_navigator = navigator) === null || _navigator === void 0 ? void 0 : (_navigator$userAgent = _navigator.userAgent) === null || _navigator$userAgent === void 0 ? void 0 : _navigator$userAgent.toLowerCase();
129
- isMobile = /mobile/i.test(userAgent); // http 状态码错误
130
- if (!(response.status < 200 || response.status >= 300)) {
131
- _context.next = 28;
132
- break;
133
- }
134
- _context.prev = 4;
135
- _context.next = 7;
136
- return response.clone().json();
137
- case 7:
138
- data = _context.sent;
139
- retCode = (_data$flag = data.flag) === null || _data$flag === void 0 ? void 0 : _data$flag.retCode;
140
- retMsg = (_data$flag2 = data.flag) === null || _data$flag2 === void 0 ? void 0 : _data$flag2.retMsg;
141
- faultCode = (_data$flag3 = data.flag) === null || _data$flag3 === void 0 ? void 0 : _data$flag3.faultCode;
142
- is99110 = false; // wms 提示,是否排班标识
143
- if (!(retCode === '99110')) {
144
- _context.next = 18;
145
- break;
146
- }
147
- is99110 = true;
148
- if (!(getCache('expireWarnFlag', true) === '1' || ifExpireWarn)) {
149
- _context.next = 16;
150
- break;
151
- }
152
- return _context.abrupt("return", response);
153
- case 16:
154
- ifExpireWarn = true;
155
- setCache('expireWarnFlag', '1', true);
156
- case 18:
157
- if ((retCode === 'timeout' || retCode === '4011' || retCode === '4013' || retCode === '9009' && retMsg === '令牌不能为空') && !isMobile) {
158
- if (!getCookie('token')) {
159
- (window.top || window).location.href = location.pathname === '/' || location.pathname.startsWith('/login') ? '/login' : '/login?redirect=' + encodeURIComponent(location.href);
160
- } else {
161
- reLogin();
162
- }
163
- } else if (noMsg !== '1') {
164
- if (faultCode) {
165
- if (retCode === '4012') {
166
- text = '用户已禁用,无权限进行操作';
167
- }
168
- httpError(text || retMsg, retCode, faultCode, {
169
- title: is99110 ? '账号到期提醒' : '请求接口出错'
170
- });
171
- } else {
172
- _text = httpStatus[response.status];
173
- if (response.status === 503 && response.statusText === 'no healthy upstream') {
174
- _text = '请求的服务未启动';
175
- } else if (response.status === 503 && response.statusText === 'reached concurrency limit') {
176
- _text = '请求的服务被限流';
177
- }
178
- showError(_text || retMsg);
179
- }
180
- }
181
- _context.next = 26;
182
- break;
183
- case 21:
184
- _context.prev = 21;
185
- _context.t0 = _context["catch"](4);
186
- _text2 = httpStatus[response.status];
187
- if (response.status === 503 && response.statusText === 'no healthy upstream') {
188
- _text2 = '请求的服务未启动';
189
- } else if (response.status === 503 && response.statusText === 'reached concurrency limit') {
190
- _text2 = '请求的服务被限流';
191
- }
192
- showError(_text2 || _context.t0.message || response.statusText);
193
- case 26:
194
- _context.next = 45;
195
- break;
196
- case 28:
197
- if (!(noMsg !== '1')) {
198
- _context.next = 45;
199
- break;
200
- }
201
- _context.next = 31;
202
- return response.clone().json();
203
- case 31:
204
- _data = _context.sent;
205
- _retCode = (_data === null || _data === void 0 ? void 0 : (_data$flag4 = _data.flag) === null || _data$flag4 === void 0 ? void 0 : _data$flag4.retCode) || '0';
206
- _retMsg = ((_data$flag5 = _data.flag) === null || _data$flag5 === void 0 ? void 0 : _data$flag5.retMsg) || '请求的服务出错';
207
- status = (getUrlQuery('apiStatus', options.url) || '0').split(',');
208
- requestId = (_data$flag6 = _data.flag) === null || _data$flag6 === void 0 ? void 0 : _data$flag6.requestId;
209
- _faultCode = (_data$flag7 = _data.flag) === null || _data$flag7 === void 0 ? void 0 : _data$flag7.faultCode;
210
- _is = false; // wms 提示,是否排班标识
211
- if (!(_retCode === '99110')) {
212
- _context.next = 44;
213
- break;
214
- }
215
- _is = true;
216
- if (!(getCache('expireWarnFlag', true) === '1' || ifExpireWarn)) {
217
- _context.next = 42;
218
- break;
219
- }
220
- return _context.abrupt("return", response);
221
- case 42:
222
- ifExpireWarn = true;
223
- setCache('expireWarnFlag', '1', true);
224
- case 44:
225
- if (_retCode && !status.includes(_retCode)) {
226
- if ((_retCode === 'timeout' || _retCode === '4011' || _retCode === '9009' && _retMsg === '令牌不能为空') && !isMobile) {
227
- if (!getCookie('token')) {
228
- (window.top || window).location.href = location.pathname === '/' || location.pathname.startsWith('/login') ? '/login' : '/login?redirect=' + encodeURIComponent(location.href);
229
- } else {
230
- reLogin();
231
- }
232
- } else {
233
- if (_faultCode) {
234
- httpError(_retMsg, _retCode, _faultCode, {
235
- title: _is ? '账号到期提醒' : '请求接口出错'
236
- });
237
- } else {
238
- showError(_retMsg);
239
- }
240
- }
241
- }
242
- case 45:
243
- return _context.abrupt("return", response);
244
- case 46:
245
- case "end":
246
- return _context.stop();
247
- }
248
- }, _callee, null, [[4, 21]]);
249
- }));
250
- return function (_x, _x2) {
251
- return _ref.apply(this, arguments);
252
- };
253
- }());
254
- function ajax(url) {
255
- var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
256
- var type = arguments.length > 2 ? arguments[2] : undefined;
257
- var needGateWay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
258
- var isJson = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
259
- var timeout = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 60000;
260
- if (needGateWay) {
261
- url = toGatewayUrl(url);
262
- }
263
- var loadText = getUrlQuery('_loading', url);
264
- if (loadText) {
265
- showLoading(loadText);
266
- url = setUrlQuery(url, {
267
- _loading: ''
268
- }).replace('&_loading=', '').replace('_loading=', '');
269
- }
270
- var finallyFn = function finallyFn() {
271
- if (loadText) {
272
- exitLoading();
273
- }
274
- };
275
- if (type === 'get') {
276
- return request.get(url, {
277
- params: params,
278
- timeout: timeout
279
- }).finally(finallyFn);
280
- } else if (type === 'delete') {
281
- return request.delete(url, {
282
- data: params,
283
- timeout: timeout
284
- }).finally(finallyFn);
285
- } else if (type === 'put') {
286
- return request.put(url, {
287
- data: params,
288
- timeout: timeout
289
- }).finally(finallyFn);
290
- } else {
291
- // 如果sumProperties存在,则添加sumProperties参数到url中
292
- if (params.sumProperties && typeof params.sumProperties === 'string') {
293
- url = setUrlQuery(url, {
294
- sumProperties: params.sumProperties
295
- });
296
- }
297
- var requestType = isJson ? 'json' : 'form';
298
- return request.post(url, {
299
- data: params,
300
- timeout: timeout,
301
- requestType: requestType
302
- }).finally(finallyFn);
303
- }
304
- }
305
- /**
306
- * Get请求
307
- *
308
- * @param url 接口
309
- * @param params 参数{key:value}
310
- * @param needGateWay 是否需要网关 默认为true
311
- * @returns Promise<ApiResponse>
312
- */
313
- export function httpGet(url) {
314
- var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
315
- var needGateWay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
316
- var timeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 60000;
317
- return ajax(url, params, 'get', needGateWay, true, timeout);
318
- }
319
- /**
320
- * Post请求
321
- *
322
- * @param url 接口
323
- * @param data 参数{key:value}
324
- * @param isJson Json请求还是form请求,默认为json请求
325
- * @param needGateWay 是否需要网关 默认为true
326
- * @returns Promise<ApiResponse>
327
- */
328
- export function httpPost(url) {
329
- var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
330
- var isJson = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
331
- var needGateWay = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
332
- var timeout = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 60000;
333
- return ajax(url, data, 'post', needGateWay, isJson, timeout);
334
- }
335
- /**
336
- * Put 请求
337
- *
338
- * @param url 接口
339
- * @param data 参数{key:value}
340
- * @param needGateWay 是否需要网关 默认为true
341
- * @returns Promise<ApiResponse>
342
- */
343
- export function httpPut(url) {
344
- var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
345
- var needGateWay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
346
- var timeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 60000;
347
- return ajax(url, data, 'put', needGateWay, true, timeout);
348
- }
349
- /**
350
- * Delete 请求
351
- *
352
- * @param url 接口
353
- * @param data 参数[]
354
- * @param needGateWay 是否需要网关 默认为true
355
- * @returns Promise<ApiResponse>
356
- */
357
- export function httpDelete(url, data) {
358
- var needGateWay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
359
- var timeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 60000;
360
- return ajax(url, data, 'delete', needGateWay, true, timeout);
361
- }
362
- /**
363
- * 上传文件,因fetch不支持进度回调,使用XMLHttpRequest实现上传文件
364
- *
365
- * @param url 上传接口地址
366
- * @param file 要上传的文件
367
- * @param params 附加其它参数 {key:value}
368
- * @param labelName 对应后端接口的文件字段名,默认为 'file'
369
- * @param needGateWay 是否需要网关,默认为 true,如果url里已包含网关,则不需要网关
370
- * @param onProgress 进度回调函数,参数为 0-100 的进度百分比
371
- * @param useDownloadDomain 是否使用下载域名来上传,默认为 false
372
- * @returns 返回包含 promise 和 cancel 方法的对象
373
- */
374
- export var httpUpload = function httpUpload(url, file) {
375
- var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
376
- var labelName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'file';
377
- var needGateWay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
378
- var onProgress = arguments.length > 5 ? arguments[5] : undefined;
379
- var useDownloadDomain = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
380
- var formData = new FormData();
381
- // 处理附加参数,转换为FormData格式
382
- Object.keys(params).forEach(function (key) {
383
- var value = params[key];
384
- if (value !== undefined && value !== null) {
385
- formData.append(key, typeof value === 'string' ? value : JSON.stringify(value));
386
- }
387
- });
388
- // 添加文件
389
- formData.append(labelName, file);
390
- // 如果需要网关,转换 URL
391
- var finalUrl = needGateWay ? toGatewayUrl(url) : url;
392
- // 创建 XMLHttpRequest 以实现进度追踪和取消功能
393
- var xhr = new XMLHttpRequest();
394
- var isCancelled = false;
395
- var promise = new Promise(function (resolve, reject) {
396
- var _window$crypto$random2, _window$crypto2;
397
- // 处理 URL(模拟拦截器的逻辑)
398
- var requestUrl = finalUrl;
399
- if (useDownloadDomain) {
400
- requestUrl = urlDownloadDomain(requestUrl);
401
- }
402
- // 移除 noToken 参数
403
- requestUrl = requestUrl.replace('&noToken=1', '').replace('noToken=1', '');
404
- // 处理 resCode
405
- var resCode = getUrlQuery('resCode', requestUrl) || window.__currentResCode__ || getUrlQuery('resCode') || getUrlQuery('resourceId') || getResourceProps('resourceId');
406
- // 添加时间戳和随机数参数
407
- var param = {
408
- _t1: Date.now(),
409
- __r: ((_window$crypto$random2 = (_window$crypto2 = window.crypto)['randomUUID']) === null || _window$crypto$random2 === void 0 ? void 0 : _window$crypto$random2.call(_window$crypto2)) || Math.random()
410
- };
411
- // 当没有明文参数resCode的时候,添加resCode参数为资源Id
412
- if (resCode && !getUrlQuery('resCode', requestUrl)) {
413
- param.resCode = resCode;
414
- }
415
- requestUrl = setUrlQuery(requestUrl, param);
416
- // 设置请求头
417
- xhr.open('POST', requestUrl, true);
418
- xhr.timeout = 60000 * 10; // 10分钟超时
419
- // 设置请求头(模拟拦截器的逻辑)
420
- var headers = {};
421
- if (browserId) {
422
- headers.browserId = browserId;
423
- } else if (getCache('browserId')) {
424
- browserId = getCache('browserId');
425
- headers.browserId = browserId;
426
- } else {
427
- // 异步获取 browserId(不影响当前请求)
428
- getBrowserId().then(function (id) {
429
- browserId = id;
430
- });
431
- }
432
- var shopNo = getCacheSessionFirst('shopNo');
433
- if (shopNo) {
434
- headers.shopNo = shopNo;
435
- }
436
- var shopCode = getCacheSessionFirst('shopCode');
437
- if (shopCode) {
438
- headers.shopCode = shopCode;
439
- }
440
- var storeNo = getCacheSessionFirst('storeNo');
441
- if (storeNo) {
442
- headers.storeNo = storeNo;
443
- }
444
- var tag = getCookie('x-asm-prefer-tag');
445
- if (tag) {
446
- headers['x-asm-prefer-tag'] = tag;
447
- }
448
- if (isDingtalk) {
449
- headers['terminal'] = 'APP';
450
- } else {
451
- headers['terminal'] = 'PC';
452
- }
453
- var expireWarnFlag = getCache('expireWarnFlag', true);
454
- headers.expireWarnFlag = expireWarnFlag === '1' ? '1' : '0';
455
- var token = getCookie('token');
456
- if (token && requestUrl.indexOf('noToken=1') === -1) {
457
- headers.token = token;
458
- }
459
- Object.keys(headers).forEach(function (key) {
460
- xhr.setRequestHeader(key, headers[key]);
461
- });
462
- // 监听上传进度
463
- if (onProgress && xhr.upload) {
464
- xhr.upload.addEventListener('progress', function (e) {
465
- if (e.lengthComputable && !isCancelled) {
466
- var percent = Math.round(e.loaded / e.total * 100);
467
- onProgress(percent);
468
- }
469
- });
470
- }
471
- // 监听请求完成
472
- xhr.onload = function () {
473
- var _navigator2, _navigator2$userAgent;
474
- if (isCancelled) {
475
- return;
476
- }
477
- var noMsg = getUrlQuery('noMsg', requestUrl);
478
- var userAgent = (_navigator2 = navigator) === null || _navigator2 === void 0 ? void 0 : (_navigator2$userAgent = _navigator2.userAgent) === null || _navigator2$userAgent === void 0 ? void 0 : _navigator2$userAgent.toLowerCase();
479
- var isMobile = /mobile/i.test(userAgent);
480
- if (xhr.status >= 200 && xhr.status < 300) {
481
- try {
482
- var _response$flag, _response$flag2, _response$flag3;
483
- var response = JSON.parse(xhr.responseText);
484
- // 处理业务异常(模拟响应拦截器的逻辑)
485
- var retCode = (response === null || response === void 0 ? void 0 : (_response$flag = response.flag) === null || _response$flag === void 0 ? void 0 : _response$flag.retCode) || '0';
486
- var retMsg = (response === null || response === void 0 ? void 0 : (_response$flag2 = response.flag) === null || _response$flag2 === void 0 ? void 0 : _response$flag2.retMsg) || '请求的服务出错';
487
- var status = (getUrlQuery('apiStatus', requestUrl) || '0').split(',');
488
- var faultCode = response === null || response === void 0 ? void 0 : (_response$flag3 = response.flag) === null || _response$flag3 === void 0 ? void 0 : _response$flag3.faultCode;
489
- var is99110 = false;
490
- // wms 提示,是否排班标识
491
- if (retCode === '99110') {
492
- is99110 = true;
493
- if (getCache('expireWarnFlag', true) === '1' || ifExpireWarn) {
494
- resolve(response);
495
- return;
496
- }
497
- ifExpireWarn = true;
498
- setCache('expireWarnFlag', '1', true);
499
- }
500
- if (retCode && !status.includes(retCode) && noMsg !== '1') {
501
- if ((retCode === 'timeout' || retCode === '4011' || retCode === '4013' || retCode === '9009' && retMsg === '令牌不能为空') && !isMobile) {
502
- if (!getCookie('token')) {
503
- (window.top || window).location.href = location.pathname === '/' || location.pathname.startsWith('/login') ? '/login' : '/login?redirect=' + encodeURIComponent(location.href);
504
- } else {
505
- reLogin();
506
- }
507
- reject(new Error(retMsg));
508
- return;
509
- } else if (faultCode) {
510
- var text;
511
- if (retCode === '4012') {
512
- text = '用户已禁用,无权限进行操作';
513
- }
514
- httpError(text || retMsg, retCode, faultCode, {
515
- title: is99110 ? '账号到期提醒' : '请求接口出错'
516
- });
517
- reject(new Error(retMsg));
518
- return;
519
- } else {
520
- showError(retMsg);
521
- reject(new Error(retMsg));
522
- return;
523
- }
524
- }
525
- resolve(response);
526
- } catch (e) {
527
- resolve(xhr.responseText);
528
- }
529
- } else {
530
- // HTTP 状态码错误
531
- try {
532
- var _response$flag4, _response$flag5, _response$flag6;
533
- var _response = JSON.parse(xhr.responseText);
534
- var _retCode2 = (_response$flag4 = _response.flag) === null || _response$flag4 === void 0 ? void 0 : _response$flag4.retCode;
535
- var _retMsg2 = (_response$flag5 = _response.flag) === null || _response$flag5 === void 0 ? void 0 : _response$flag5.retMsg;
536
- var _faultCode2 = (_response$flag6 = _response.flag) === null || _response$flag6 === void 0 ? void 0 : _response$flag6.faultCode;
537
- var _is2 = false;
538
- // wms 提示,是否排班标识
539
- if (_retCode2 === '99110') {
540
- _is2 = true;
541
- if (getCache('expireWarnFlag', true) === '1' || ifExpireWarn) {
542
- reject(new Error(_retMsg2 || httpStatus[xhr.status] || xhr.statusText));
543
- return;
544
- }
545
- ifExpireWarn = true;
546
- setCache('expireWarnFlag', '1', true);
547
- }
548
- if (noMsg !== '1') {
549
- if (_faultCode2) {
550
- var _text3;
551
- if (_retCode2 === '4012') {
552
- _text3 = '用户已禁用,无权限进行操作';
553
- }
554
- httpError(_text3 || _retMsg2, _retCode2, _faultCode2, {
555
- title: _is2 ? '账号到期提醒' : '请求接口出错'
556
- });
557
- } else {
558
- var _text4 = httpStatus[xhr.status];
559
- if (xhr.status === 503 && xhr.statusText === 'no healthy upstream') {
560
- _text4 = '请求的服务未启动';
561
- } else if (xhr.status === 503 && xhr.statusText === 'reached concurrency limit') {
562
- _text4 = '请求的服务被限流';
563
- }
564
- showError(_text4 || _retMsg2 || xhr.statusText);
565
- }
566
- }
567
- reject(new Error(_retMsg2 || httpStatus[xhr.status] || xhr.statusText));
568
- } catch (e) {
569
- var _text5 = httpStatus[xhr.status];
570
- if (xhr.status === 503 && xhr.statusText === 'no healthy upstream') {
571
- _text5 = '请求的服务未启动';
572
- } else if (xhr.status === 503 && xhr.statusText === 'reached concurrency limit') {
573
- _text5 = '请求的服务被限流';
574
- }
575
- var httpStatusText = _text5 || e.message || xhr.statusText;
576
- if (noMsg !== '1') {
577
- showError(httpStatusText);
578
- }
579
- reject(new Error(httpStatusText));
580
- }
581
- }
582
- };
583
- // 监听错误
584
- xhr.onerror = function () {
585
- if (!isCancelled) {
586
- reject(new Error('网络错误'));
587
- }
588
- };
589
- // 监听超时
590
- xhr.ontimeout = function () {
591
- if (!isCancelled) {
592
- showError('请求超时');
593
- reject(new Error('请求超时'));
594
- }
595
- };
596
- // 发送请求
597
- xhr.send(formData);
598
- });
599
- // 取消方法
600
- var cancel = function cancel() {
601
- if (!isCancelled) {
602
- isCancelled = true;
603
- xhr.abort();
604
- }
605
- };
606
- return {
607
- promise: promise,
608
- cancel: cancel
609
- };
610
- };
611
- // 默认分批获取数据的大小
612
- var defaultPageSize = 2000;
613
- /**
614
- * 分批获取数据
615
- *
616
- * @param url
617
- * @param params
618
- * @param method
619
- * @param needGateWay
620
- * @param timeout
621
- * @returns
622
- */
623
- function httpBatchRequest(_x3) {
624
- return _httpBatchRequest.apply(this, arguments);
625
- }
626
- /**
627
- * 分批获取数据,当一次性取大于2000条,且是第一页时,分多次去取,避免一次性取太多数据导致后端工程压力过大
628
- *
629
- * 注意:如果pageSize小于等于2000,或不是取第一页数据时,直接使用普通请求
630
- *
631
- * @param url
632
- * @param params
633
- * @param needGateWay
634
- * @param timeout
635
- * @returns
636
- */
637
- function _httpBatchRequest() {
638
- _httpBatchRequest = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(url) {
639
- var params,
640
- method,
641
- needGateWay,
642
- timeout,
643
- urlPageSize,
644
- urlPageNum,
645
- pageSize,
646
- pageNum,
647
- isV2,
648
- PAGE_SIZE,
649
- PAGE_NUM,
650
- cleanUrl,
651
- batchSize,
652
- allRows,
653
- total,
654
- currentPage,
655
- _objectSpread2,
656
- firstParams,
657
- api,
658
- _setUrlQuery3,
659
- firstResponse,
660
- firstData,
661
- actualPageSize,
662
- totalPages,
663
- maxConcurrent,
664
- remainingPages,
665
- i,
666
- _i,
667
- batchPages,
668
- batchRequests,
669
- batchResponses,
670
- _args4 = arguments;
671
- return _regeneratorRuntime.wrap(function _callee4$(_context4) {
672
- while (1) switch (_context4.prev = _context4.next) {
673
- case 0:
674
- params = _args4.length > 1 && _args4[1] !== undefined ? _args4[1] : {};
675
- method = _args4.length > 2 && _args4[2] !== undefined ? _args4[2] : 'get';
676
- needGateWay = _args4.length > 3 && _args4[3] !== undefined ? _args4[3] : true;
677
- timeout = _args4.length > 4 && _args4[4] !== undefined ? _args4[4] : 60000;
678
- // 从URL中获取pageSize和page参数
679
- urlPageSize = getUrlQuery('pageSize', url) || getUrlQuery('page.size', url);
680
- urlPageNum = getUrlQuery('page', url) || getUrlQuery('page.pn', url) || '1'; // 优先使用params中的分页参数,其次使用URL中的分页参数
681
- pageSize = (params === null || params === void 0 ? void 0 : params.pageSize) || (params === null || params === void 0 ? void 0 : params['page.size']) || (urlPageSize ? parseInt(urlPageSize) : defaultPageSize);
682
- pageNum = (params === null || params === void 0 ? void 0 : params.page) || (params === null || params === void 0 ? void 0 : params['page.pn']) || parseInt(urlPageNum); // 如果pageSize小于等于defaultPageSize,或不是取第一页数据时,直接使用普通请求
683
- if (!(pageSize <= defaultPageSize || pageNum !== 1)) {
684
- _context4.next = 10;
685
- break;
686
- }
687
- return _context4.abrupt("return", ajax(url, params, method, needGateWay, true, timeout));
688
- case 10:
689
- // 是否为 2.0版本的api。
690
- isV2 = url.includes('page.size') || (params === null || params === void 0 ? void 0 : params['page.size']) ? true : false; // 不同版本api的请求分页关键字处理,
691
- PAGE_SIZE = isV2 ? 'page.size' : 'pageSize';
692
- PAGE_NUM = isV2 ? 'page.pn' : 'page'; // 分批获取数据时,需要从URL中移除原有的pageSize和page参数
693
- cleanUrl = url;
694
- if (urlPageSize) {
695
- cleanUrl = setUrlQuery(cleanUrl, _defineProperty({}, PAGE_SIZE, '')).replace("&".concat(PAGE_SIZE, "="), '').replace("".concat(PAGE_SIZE, "="), '');
696
- }
697
- if (urlPageNum) {
698
- cleanUrl = setUrlQuery(cleanUrl, _defineProperty({}, PAGE_NUM, '')).replace("&".concat(PAGE_NUM, "="), '').replace("".concat(PAGE_NUM, "="), '');
699
- }
700
- // 分批获取数据
701
- batchSize = defaultPageSize;
702
- allRows = [];
703
- total = 0;
704
- currentPage = pageNum;
705
- _context4.prev = 20;
706
- // 第一次请求,获取总数
707
- firstParams = _objectSpread(_objectSpread({}, params), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, PAGE_SIZE, batchSize), _defineProperty(_objectSpread2, PAGE_NUM, currentPage), _objectSpread2)); // 如果是 post 请求,body 和 query 里都传入分页参数
708
- api = cleanUrl;
709
- if (method === 'post') {
710
- api = setUrlQuery(cleanUrl, (_setUrlQuery3 = {}, _defineProperty(_setUrlQuery3, PAGE_SIZE, batchSize), _defineProperty(_setUrlQuery3, PAGE_NUM, currentPage), _setUrlQuery3));
711
- }
712
- _context4.next = 26;
713
- return ajax(api, firstParams, method, needGateWay, true, timeout);
714
- case 26:
715
- firstResponse = _context4.sent;
716
- firstData = firstResponse; // 如果返回值没有 rows 或 total,直接返回普通请求
717
- if (!(!('rows' in firstData) || !('total' in firstData))) {
718
- _context4.next = 30;
719
- break;
720
- }
721
- return _context4.abrupt("return", ajax(url, params, method, needGateWay, true, timeout));
722
- case 30:
723
- if (firstData.rows) {
724
- allRows.push.apply(allRows, _toConsumableArray(firstData.rows));
725
- total = firstData.total || 0;
726
- }
727
- // 如果total小于等于defaultPageSize,不需要分批获取,直接返回
728
- if (!(total <= defaultPageSize)) {
729
- _context4.next = 33;
730
- break;
731
- }
732
- return _context4.abrupt("return", firstResponse);
733
- case 33:
734
- // 计算实际需要获取的数据量(不超过用户传入的pageSize)
735
- actualPageSize = Math.min(pageSize, total); // 计算需要请求的总页数(基于实际需要的数据量)
736
- totalPages = Math.ceil(actualPageSize / batchSize); // 如果还有更多数据需要获取
737
- if (!(totalPages > 1)) {
738
- _context4.next = 50;
739
- break;
740
- }
741
- // 分批并发请求,每次最多6个并发
742
- maxConcurrent = 6;
743
- remainingPages = []; // 准备所有需要请求的页码
744
- for (i = currentPage + 1; i <= totalPages; i++) {
745
- remainingPages.push(i);
746
- }
747
- // 分批处理请求
748
- _i = 0;
749
- case 40:
750
- if (!(_i < remainingPages.length)) {
751
- _context4.next = 50;
752
- break;
753
- }
754
- batchPages = remainingPages.slice(_i, _i + maxConcurrent);
755
- batchRequests = batchPages.map(function (page) {
756
- var _objectSpread3;
757
- var requestParams = _objectSpread(_objectSpread({}, params), {}, (_objectSpread3 = {}, _defineProperty(_objectSpread3, PAGE_SIZE, batchSize), _defineProperty(_objectSpread3, PAGE_NUM, page), _objectSpread3));
758
- var requestApi = cleanUrl;
759
- if (method === 'post') {
760
- var _setUrlQuery4;
761
- requestApi = setUrlQuery(cleanUrl, (_setUrlQuery4 = {}, _defineProperty(_setUrlQuery4, PAGE_SIZE, batchSize), _defineProperty(_setUrlQuery4, PAGE_NUM, page), _setUrlQuery4));
762
- }
763
- return ajax(requestApi, requestParams, method, needGateWay, true, timeout);
764
- }); // 并发执行当前批次的请求
765
- _context4.next = 45;
766
- return Promise.all(batchRequests);
767
- case 45:
768
- batchResponses = _context4.sent;
769
- // 合并当前批次的响应数据
770
- batchResponses.forEach(function (response) {
771
- var data = response;
772
- if (data.rows) {
773
- allRows.push.apply(allRows, _toConsumableArray(data.rows));
774
- }
775
- });
776
- case 47:
777
- _i += maxConcurrent;
778
- _context4.next = 40;
779
- break;
780
- case 50:
781
- // 如果获取的数据超过了用户要求的pageSize,进行截取
782
- if (allRows.length > actualPageSize) {
783
- allRows.splice(actualPageSize);
784
- }
785
- // 返回合并后的数据,保持与原始响应格式一致
786
- return _context4.abrupt("return", _objectSpread(_objectSpread({}, firstResponse), {}, {
787
- rows: allRows,
788
- total: total // 保持原始的total值
789
- }));
790
- case 54:
791
- _context4.prev = 54;
792
- _context4.t0 = _context4["catch"](20);
793
- throw _context4.t0;
794
- case 57:
795
- case "end":
796
- return _context4.stop();
797
- }
798
- }, _callee4, null, [[20, 54]]);
799
- }));
800
- return _httpBatchRequest.apply(this, arguments);
801
- }
802
- export var httpBatchGet = /*#__PURE__*/function () {
803
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url) {
804
- var params,
805
- needGateWay,
806
- timeout,
807
- _args2 = arguments;
808
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
809
- while (1) switch (_context2.prev = _context2.next) {
810
- case 0:
811
- params = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {};
812
- needGateWay = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : true;
813
- timeout = _args2.length > 3 && _args2[3] !== undefined ? _args2[3] : 60000;
814
- return _context2.abrupt("return", httpBatchRequest(url, params, 'get', needGateWay, timeout));
815
- case 4:
816
- case "end":
817
- return _context2.stop();
818
- }
819
- }, _callee2);
820
- }));
821
- return function httpBatchGet(_x4) {
822
- return _ref2.apply(this, arguments);
823
- };
824
- }();
825
- /**
826
- * 分批获取数据,当一次性取大于2000条,且是第一页时,分多次去取,避免一次性取太多数据导致后端工程压力过大
827
- *
828
- * 注意:如果pageSize小于等于2000,或不是取第一页数据时,直接使用普通请求
829
- *
830
- * @param url
831
- * @param params
832
- * @param needGateWay
833
- * @param timeout
834
- * @returns
835
- */
836
- export var httpBatchPost = /*#__PURE__*/function () {
837
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(url) {
838
- var params,
839
- needGateWay,
840
- timeout,
841
- _args3 = arguments;
842
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
843
- while (1) switch (_context3.prev = _context3.next) {
844
- case 0:
845
- params = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
846
- needGateWay = _args3.length > 2 && _args3[2] !== undefined ? _args3[2] : true;
847
- timeout = _args3.length > 3 && _args3[3] !== undefined ? _args3[3] : 60000;
848
- return _context3.abrupt("return", httpBatchRequest(url, params, 'post', needGateWay, timeout));
849
- case 4:
850
- case "end":
851
- return _context3.stop();
852
- }
853
- }, _callee3);
854
- }));
855
- return function httpBatchPost(_x5) {
856
- return _ref3.apply(this, arguments);
857
- };
858
- }();
859
- /**
860
- * 读取数据字典
861
- *
862
- * @param dictCode 字典编码
863
- * @param showValue 是否显示值
864
- * @param needGateWay 是否需要网关 默认为true
865
- * @param timeout 超时时间,默认60000毫秒
866
- * @param isGet 是否Get请求
867
- * @param valueIsNumber 返回值是否为数字,默认false
868
- * @returns Promise<Record<string,string>[]>
869
- */
870
- export function getDict(dictCodes) {
871
- var showValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
872
- var needGateWay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
873
- var timeout = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 60000;
874
- var isGet = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
875
- var valueIsNumber = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
876
- var api = '/lesoon-petrel-integration-api/sysDictDtl/listByProperties';
877
- var param = {
878
- dictCodes: (dictCodes || '').split(',')
879
- };
880
- return fetchOptions(api, param, 'dictValue', 'displayName', showValue, needGateWay, timeout, isGet, valueIsNumber);
881
- }
882
- /**
883
- * 加载下拉框的数据源
884
- *
885
- * @param url 后端接口
886
- * @param param 请求参数
887
- * @param valueField 值字段
888
- * @param labelField 显示字段
889
- * @param showValue 显示值
890
- * @param needGateWay 是否需要网关 默认为true
891
- * @param timeout
892
- * @param isGet = true 是否get请求,默认true
893
- * @param valueIsNumber 返回值是否为数字,默认false
894
- * @returns
895
- */
896
- export function fetchOptions(_x6, _x7, _x8, _x9) {
897
- return _fetchOptions.apply(this, arguments);
898
- }
899
- /**
900
- * 获取用户资源Id对应的权限值
901
- *
902
- * @param ids 资源id
903
- * @returns
904
- */
905
- function _fetchOptions() {
906
- _fetchOptions = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(url, param, valueField, labelField) {
907
- var showValue,
908
- needGateWay,
909
- timeout,
910
- isGet,
911
- valueIsNumber,
912
- rows,
913
- data,
914
- _args5 = arguments;
915
- return _regeneratorRuntime.wrap(function _callee5$(_context5) {
916
- while (1) switch (_context5.prev = _context5.next) {
917
- case 0:
918
- showValue = _args5.length > 4 && _args5[4] !== undefined ? _args5[4] : true;
919
- needGateWay = _args5.length > 5 && _args5[5] !== undefined ? _args5[5] : true;
920
- timeout = _args5.length > 6 && _args5[6] !== undefined ? _args5[6] : 60000;
921
- isGet = _args5.length > 7 && _args5[7] !== undefined ? _args5[7] : true;
922
- valueIsNumber = _args5.length > 8 && _args5[8] !== undefined ? _args5[8] : false;
923
- if (!isGet) {
924
- _context5.next = 14;
925
- break;
926
- }
927
- _context5.next = 8;
928
- return httpBatchGet(url, param, needGateWay, timeout);
929
- case 8:
930
- _context5.t0 = _context5.sent.rows;
931
- if (_context5.t0) {
932
- _context5.next = 11;
933
- break;
934
- }
935
- _context5.t0 = [];
936
- case 11:
937
- rows = _context5.t0;
938
- _context5.next = 20;
939
- break;
940
- case 14:
941
- _context5.next = 16;
942
- return httpBatchPost(url, param, needGateWay, timeout);
943
- case 16:
944
- _context5.t1 = _context5.sent.rows;
945
- if (_context5.t1) {
946
- _context5.next = 19;
947
- break;
948
- }
949
- _context5.t1 = [];
950
- case 19:
951
- rows = _context5.t1;
952
- case 20:
953
- data = (rows || []).map(function (o) {
954
- return _objectSpread(_objectSpread({}, o), {}, {
955
- value: valueIsNumber && !isNaN(o[valueField]) ? Number(o[valueField]) : o[valueField],
956
- text: o[labelField],
957
- label: (showValue ? o[valueField] + '→' : '') + o[labelField]
958
- });
959
- });
960
- return _context5.abrupt("return", data);
961
- case 22:
962
- case "end":
963
- return _context5.stop();
964
- }
965
- }, _callee5);
966
- }));
967
- return _fetchOptions.apply(this, arguments);
968
- }
969
- export var getResourceRight = function getResourceRight(ids) {
970
- var url = '/lesoon/lesoon-petrel-permission-api/sysUserRole/selectResourceIds';
971
- return httpPost(url, {
972
- resourceIds: ids
973
- }, true, false);
974
- };
1
+ import { request } from './ajax';
2
+ export * from './ajax';
3
+ export * from './bizAjax';
4
+ export * from './upload';
5
+ export * from './uploadByChunk';
975
6
  export default request;