fx-form-widget
Version:
291 lines (283 loc) • 12.8 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _modal = _interopRequireDefault(require("antd/lib/modal"));
var _spin = _interopRequireDefault(require("antd/lib/spin"));
var _alert = _interopRequireDefault(require("antd/lib/alert"));
var _result = _interopRequireDefault(require("antd/lib/result"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _space = _interopRequireDefault(require("antd/lib/space"));
var _message2 = _interopRequireDefault(require("antd/lib/message"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _button = _interopRequireDefault(require("antd/lib/button"));
var _upload = _interopRequireDefault(require("antd/lib/upload"));
var _react = _interopRequireWildcard(require("react"));
var _icons = require("@ant-design/icons");
var _stores = require("../../stores");
var _api = require("../../api");
var _tools = require("../../tools");
var _tools2 = require("../../../../config/tools");
var _reactDom = require("react-dom");
var _nanoid = require("nanoid");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
var API_HOST = new Map([['dev', 'https://dev-gateway.fxqifu.net/pangu'], ['qa', 'https://qa-gateway.fxqifu.net/pangu'], ['prod', 'https://gateway.fxqifu.net/pangu']]);
;
var downLoadImportTemplate = _stores.subformStore.downLoadImportTemplate;
var Dragger = _upload["default"].Dragger;
var ENV = (0, _tools2.getEnv)();
var token = (0, _tools2.getToken)();
var MAIN_HOST = API_HOST.get(ENV);
// 资源上传的地址
var action = "" + MAIN_HOST + _api.subformMap.get('IMPORT');
var accept = ".csv, application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
// 资源上传的请求头
var headers = {
authority_token: token
};
var BatchImportModal = function BatchImportModal(props) {
var visible = props.visible,
formId = props.formId,
subformWid = props.subformWid,
maxCount = props.maxCount,
onCancel = props.onCancel,
getImportData = props.getImportData;
var _useState = (0, _react.useState)(false),
hasError = _useState[0],
setHasError = _useState[1];
var _useState2 = (0, _react.useState)({}),
errorInfo = _useState2[0],
setErrorInfo = _useState2[1];
var _useState3 = (0, _react.useState)(false),
hasSuccess = _useState3[0],
setHasSuccess = _useState3[1];
var _useState4 = (0, _react.useState)(false),
loading = _useState4[0],
setLoading = _useState4[1];
var importTableData = (0, _react.useRef)([]);
var errorMessage = errorInfo.errorMessage,
errorUrl = errorInfo.errorUrl;
var handleDownloadClick = function handleDownloadClick() {
downloadTemplateByFormIdAndSubformWid(formId, subformWid);
};
// 资源上传携带的额外参数
var uplodaExtraData = {
formId: formId,
subformWid: subformWid
};
// 上传成功的回调
var onSuccess = function onSuccess(result) {
importTableData.current = [];
var success = result.success,
_result$data = result.data,
data = _result$data === void 0 ? {} : _result$data;
var improtData = data.data,
url = data.url,
failCount = data.failCount,
successCount = data.successCount;
if (url) {
(0, _reactDom.unstable_batchedUpdates)(function () {
setErrorInfo({
errorMessage: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "\u6210\u529F\u5BFC\u5165:", /*#__PURE__*/_react["default"].createElement(_button["default"], {
style: buttonStyle,
type: "link"
}, successCount), ", \u5931\u8D25\u5BFC\u5165:", /*#__PURE__*/_react["default"].createElement(_button["default"], {
danger: true,
style: buttonStyle,
type: "link"
}, failCount)),
errorUrl: url
});
setLoading(false);
setHasSuccess(false);
setHasError(true);
});
return;
}
if (success) {
importTableData.current = improtData.map(function (item) {
return (0, _extends2["default"])({}, item, {
editableId: (0, _nanoid.nanoid)()
});
});
(0, _reactDom.unstable_batchedUpdates)(function () {
setErrorInfo({
errorUrl: url,
errorMessage: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "\u6210\u529F\u5BFC\u5165:", /*#__PURE__*/_react["default"].createElement(_button["default"], {
style: buttonStyle,
type: "link"
}, successCount), ", \u5931\u8D25\u5BFC\u5165:", /*#__PURE__*/_react["default"].createElement(_button["default"], {
danger: true,
style: buttonStyle,
type: "link"
}, failCount))
});
setLoading(false);
setHasSuccess(true);
setHasError(false);
});
return;
}
(0, _reactDom.unstable_batchedUpdates)(function () {
setErrorInfo({
errorMessage: result.message,
errorUrl: url
});
setLoading(false);
setHasError(true);
setHasSuccess(false);
importTableData.current = null;
});
};
//上传失败的回调
var onError = function onError() {
_message2["default"].error('数据导入失败请检查数据');
setLoading(false);
};
// 数据上传前的回调
var beforeUpload = function beforeUpload() {
setLoading(true);
};
var uploadProps = {
action: action,
headers: headers,
data: uplodaExtraData,
accept: accept,
beforeUpload: beforeUpload,
onSuccess: onSuccess,
onError: onError
};
var buttonStyle = {
padding: 0,
margin: 0
};
var description = /*#__PURE__*/_react["default"].createElement(_space["default"], {
direction: "vertical"
}, /*#__PURE__*/_react["default"].createElement("span", null, "1\u3001\u8BF7\u52FF\u64C5\u81EA\u4FEE\u6539\u5BFC\u5165\u6A21\u677F\u7684\u8868\u5934\u5B57\u6BB5\uFF0C\u5426\u5219\u4F1A\u5BFC\u5165\u5931\u8D25"), /*#__PURE__*/_react["default"].createElement("span", null, "2\u3001\u6700\u591A\u53EF\u5BFC\u5165", /*#__PURE__*/_react["default"].createElement(_button["default"], {
style: buttonStyle,
type: "link"
}, maxCount), "\u6761\u6570\u636E\u660E\u7EC6\uFF0C\u8D85\u51FA\u90E8\u5206\u5219\u9ED8\u8BA4\u4E0D\u5BFC\u5165"), /*#__PURE__*/_react["default"].createElement("span", null, "3\u3001\u6807\u8BC6\u542B\u4E49:", /*#__PURE__*/_react["default"].createElement(_button["default"], {
danger: true,
type: "link",
style: buttonStyle
}, "*"), "\u4E3A\u5FC5\u586B\uFF0C\u82E5\u4E0D\u586B\u5219\u4F1A\u5BFC\u5165\u5931\u8D25"), /*#__PURE__*/_react["default"].createElement("span", null, "4\u3001\u91CD\u590D\u5BFC\u5165\u7684\u6570\u636E\uFF0C\u9ED8\u8BA4\u4EE5\u65B0\u589E\u6570\u636E\u5BFC\u5165"), /*#__PURE__*/_react["default"].createElement("span", null, "5\u3001\u63D0\u793A\u591A\u5C11\u884C\u5BFC\u5165\u5931\u8D25:\u53EF\u4EE5\u9009\u62E9\u9009\u62E9\u4E0B\u8F7D\u51FA\u9519\u7684\u6570\u636E\uFF0C\u51FA\u9519\u7684\u8868\u683C\u4E2D\u7B2C\u4E00\u5217\u4F1A\u663E\u793A\u9519\u8BEF\u539F\u56E0"), /*#__PURE__*/_react["default"].createElement(_button["default"], {
type: "link",
onClick: handleDownloadClick
}, "\u4E0B\u8F7D\u6A21\u7248"));
// 通过formId以及subformWid进行下载模版
var downloadTemplateByFormIdAndSubformWid = /*#__PURE__*/function () {
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(formId, subformWid) {
var _ref2, _ref2$data, data, errorMessage, success, url;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (!(!formId || !subformWid)) {
_context.next = 2;
break;
}
return _context.abrupt("return");
case 2:
_context.next = 4;
return downLoadImportTemplate(formId, subformWid);
case 4:
_ref2 = _context.sent;
_ref2$data = _ref2.data;
data = _ref2$data === void 0 ? {} : _ref2$data;
errorMessage = _ref2.message;
success = _ref2.success;
if (data === null || !success) {
_message2["default"].error(errorMessage);
}
url = data.url;
if (url) {
_context.next = 13;
break;
}
return _context.abrupt("return");
case 13:
(0, _tools.downloadTemplateDOC)(url, '子表单导入模版.xls');
case 14:
case "end":
return _context.stop();
}
}, _callee);
}));
return function downloadTemplateByFormIdAndSubformWid(_x, _x2) {
return _ref.apply(this, arguments);
};
}();
var handleDownErrorClick = function handleDownErrorClick() {
if (!errorUrl) {
return;
}
(0, _tools.downloadTemplateDOC)(errorUrl, '错误信息.xls');
};
var onOk = function onOk() {
getImportData === null || getImportData === void 0 ? void 0 : getImportData(importTableData.current);
};
var renderDownLoadErrorButton = function renderDownLoadErrorButton(url) {
if (url) {
return /*#__PURE__*/_react["default"].createElement(_space["default"], null, /*#__PURE__*/_react["default"].createElement(_button["default"], {
type: "primary",
icon: /*#__PURE__*/_react["default"].createElement(_icons.DownloadOutlined, null),
key: "download",
onClick: handleDownErrorClick
}, "\u9519\u8BEF\u539F\u56E0"));
}
return null;
};
var renderDraggerUploadOrErrorResult = function renderDraggerUploadOrErrorResult(hasError, hasSuccess) {
if (hasError) {
return /*#__PURE__*/_react["default"].createElement(_result["default"], {
status: "error",
title: "\u5BFC\u5165\u5931\u8D25",
subTitle: errorMessage
});
}
if (hasSuccess) {
return /*#__PURE__*/_react["default"].createElement(_result["default"], {
status: "success",
title: "\u5BFC\u5165\u6210\u529F",
subTitle: errorMessage
});
}
return /*#__PURE__*/_react["default"].createElement(_space["default"], {
direction: "vertical"
}, /*#__PURE__*/_react["default"].createElement(Dragger, uploadProps, /*#__PURE__*/_react["default"].createElement("p", {
className: "ant-upload-drag-icon"
}, /*#__PURE__*/_react["default"].createElement(_icons.CloudUploadOutlined, null)), /*#__PURE__*/_react["default"].createElement("p", {
className: "ant-upload-text"
}, "\u70B9\u51FB\u6216\u5C06\u8981\u5BFC\u5165\u7684\u6587\u4EF6\u62D6\u62FD\u5230\u8FD9\u91CC\u4E0A\u4F20")), /*#__PURE__*/_react["default"].createElement(_alert["default"], {
message: "\u6CE8\u610F\u4E8B\u9879",
description: description,
type: "info"
}));
};
var modelResetProps = {
footer: renderDownLoadErrorButton(errorUrl)
};
(0, _react.useEffect)(function () {
if (visible) {
setHasError(false);
setHasSuccess(false);
setErrorInfo({
errorUrl: ''
});
importTableData.current = [];
}
}, [visible]);
return /*#__PURE__*/_react["default"].createElement(_modal["default"], (0, _extends2["default"])({
title: "\u5BFC\u5165\u6570\u636E",
visible: visible,
width: 680,
okText: hasSuccess ? "导入" : "",
onCancel: onCancel,
onOk: onOk
}, !!errorUrl && modelResetProps), /*#__PURE__*/_react["default"].createElement(_spin["default"], {
tip: "\u6570\u636E\u6B63\u5728\u5BFC\u5165\u4E2D\uFF0C\u8BF7\u7A0D\u7B49...",
spinning: loading
}, renderDraggerUploadOrErrorResult(hasError, hasSuccess)));
};
var _default = exports["default"] = BatchImportModal;