@cainiaofe/cn-ui-charts
Version:
153 lines • 5.85 kB
JavaScript
import { calculateTextExprValue, getRealRequestUrl, getRealResponse, handleResultProcessFunc2, handleSuccessMessage, transRequestConfigToRemote } from "./util";
import { request as requestInstance } from 'cn-request';
import isPlainObject from 'lodash/isPlainObject';
import { AfterRequestSuccess } from "./const";
import { CnMessage, CnDialog } from '@alife/cn-ui';
export function makeRequest(config) {
var _config$needSuccessTo = config.needSuccessToast,
needSuccessToast = _config$needSuccessTo === void 0 ? true : _config$needSuccessTo;
var handleParams = config.handleParams,
buttonConfig = config.buttonConfig,
record = config.record,
state = config.state,
recordDataSource = config.recordDataSource,
urlParamsDataSource = config.urlParamsDataSource,
_onCancel = config.onCancel,
extraParamList = config.extraParamList,
isDesign = config.isDesign,
_config$position = config.position,
position = _config$position === void 0 ? '' : _config$position,
noNeedHandleResult = config.noNeedHandleResult,
_context = config._context,
getExtraParam = config.getExtraParam,
handleParamsBeforeSend = config.handleParamsBeforeSend;
return new Promise(function (resolve, reject) {
if (buttonConfig) {
var _buttonConfig$options = buttonConfig.options,
options = _buttonConfig$options === void 0 ? {} : _buttonConfig$options;
var requestConfig = options.requestConfig,
needConfirm = options.needConfirm,
_options$confirmInfo = options.confirmInfo,
confirmInfo = _options$confirmInfo === void 0 ? {} : _options$confirmInfo,
afterRequest = options.afterRequest;
var sendRequest = function sendRequest() {
var realUrl = getRealRequestUrl({
requestConfig: requestConfig,
state: state,
extraParam: getExtraParam === null || getExtraParam === void 0 ? void 0 : getExtraParam()
});
if (realUrl) {
requestInstance(transRequestConfigToRemote({
requestConfig: requestConfig,
handleParams: handleParams,
state: state,
urlParamsDataSource: urlParamsDataSource,
recordDataSource: recordDataSource,
isDesign: isDesign,
extraParamList: extraParamList,
getExtraParam: getExtraParam,
handleParamsBeforeSend: handleParamsBeforeSend
})).then(function (res) {
var result = getRealResponse(res);
if (!noNeedHandleResult) {
result = handleResultProcessFunc2(res, requestConfig, {
state: state
});
}
var _result = result,
success = _result.success,
errorCode = _result.errorCode,
errorMsg = _result.errorMsg;
if (success) {
if (afterRequest !== null && afterRequest !== void 0 && afterRequest.optType) {
var pos = position + AfterRequestSuccess;
}
resolve(result);
if (needSuccessToast) {
handleSuccessMessage(result);
}
} else {
reject(result);
CnMessage.error(errorMsg || errorCode || (requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.url) + " \u8BF7\u6C42\u5F02\u5E38");
}
})["catch"](function (err) {
reject(err);
// const {errorCode, errorMsg } = err || {}
// CnMessage.error(errorMsg || errorCode || `${requestConfig?.url} 请求异常`);
});
} else {
reject();
}
};
if (needConfirm) {
var title = calculateTextExprValue(confirmInfo.title, {
urlParamsDataSource: urlParamsDataSource,
recordDataSource: recordDataSource,
state: state,
extraParamList: extraParamList
});
var content = calculateTextExprValue(confirmInfo.content, {
urlParamsDataSource: urlParamsDataSource,
recordDataSource: recordDataSource,
state: state,
extraParamList: extraParamList
});
CnDialog.confirm({
title: title || '通知',
content: content || '',
messageProps: {
className: 'l2-dialog-message-content'
},
onOk: function onOk() {
sendRequest();
},
onCancel: function onCancel() {
_onCancel && _onCancel();
},
onClose: function onClose() {
_onCancel && _onCancel();
}
// cancelProps: {
// // children: '关闭弹窗',
// },
});
} else {
sendRequest();
}
}
});
}
export function handleResultProcessFunc(requestConfig) {
if (requestConfig) {
var resultProcessFunc = requestConfig.resultProcessFunc,
serviceType = requestConfig.serviceType,
mockData = requestConfig.mockData;
if (typeof resultProcessFunc === 'function') {
return function (res, state) {
var newRes = getRealResponse(res);
try {
var temp = resultProcessFunc(newRes, state);
if (temp && temp.data && temp.success !== undefined) {
newRes = temp.data;
} else {
newRes = temp;
}
} catch (e) {
console.error('请求结果回调执行失败', e);
}
return newRes;
};
} else if (serviceType === 'mock' && isPlainObject(mockData)) {
return function () {
return mockData === null || mockData === void 0 ? void 0 : mockData.data;
};
} else {
return function (res) {
if (res !== null && res !== void 0 && res.data) {
return res.data;
}
return res;
};
}
}
}