@grc/business
Version:
更新sider选项 : forceSubMenuRender
144 lines (143 loc) • 6.88 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
import React, { PureComponent } from "react";
import { ConfigConsumer } from "@grc/base/components/config-provider";
import { IntlFormattedMessageEnhance } from "@grc/base/components/intl";
import { Icon } from "@grc/base/components/icon";
import Upload from "./upload.component";
import ImportFail from "./import-fail.component";
import ImportModal from "./import-modal.component";
import ImportSuccess from "./import-success.component";
// import "./styles/index.less";
var ImportFileComponent = /** @class */ (function (_super) {
__extends(ImportFileComponent, _super);
function ImportFileComponent(props, context) {
var _this = _super.call(this, props, context) || this;
_this._uploadRef = null;
_this.state = {
uploadStatus: "init",
currentFile: null,
modalVisible: false
};
_this._onFail = _this._onFail.bind(_this);
_this._onSuccess = _this._onSuccess.bind(_this);
_this._onChange = _this._onChange.bind(_this);
return _this;
}
/**
* 文件变化
*/
ImportFileComponent.prototype._onChange = function (file) {
var onChange = this.props.onChange;
this.setState({
currentFile: file
});
onChange && onChange(file);
};
/**
* 文件上传成功
*/
ImportFileComponent.prototype._onSuccess = function (file) {
this.setState({
uploadStatus: "success",
modalVisible: true,
currentFile: file
});
};
/**
* 文件上传失败
*/
ImportFileComponent.prototype._onFail = function (file) {
var onFail = this.props.onFail;
this.setState({
uploadStatus: "fail",
modalVisible: true,
currentFile: file
});
onFail && onFail(file.result, file.response);
};
/**
* 文件重新或继续导入回调
* @param isSuccess 是否导入成功
*/
ImportFileComponent.prototype._continiuHandle = function (isSuccess) {
var onBack = this.props.onBack;
this.setState({
modalVisible: false,
currentFile: null
});
onBack && onBack(isSuccess);
};
/**
* 上传
* @param data 其他参数
*/
ImportFileComponent.prototype.upload = function (data) {
if (!this._uploadRef)
return;
this._uploadRef.upload(data);
};
/**
* 重置
*/
ImportFileComponent.prototype.reset = function () {
this.setState({
currentFile: null,
uploadStatus: "init",
modalVisible: false
});
if (!this._uploadRef)
return;
this._uploadRef.reset();
};
ImportFileComponent.prototype.render = function () {
var _this = this;
var _a = this.props, headerChildren = _a.headerChildren, uploadIcon = _a.uploadIcon, uploadPlaceholder = _a.uploadPlaceholder, action = _a.action, _b = _a.modalProps, modalProps = _b === void 0 ? {} : _b, _c = _a.successProps, successProps = _c === void 0 ? {} : _c, _d = _a.failProps, failProps = _d === void 0 ? {} : _d, formateResponse = _a.formateResponse, onCancel = _a.onCancel;
var _e = this.state, currentFile = _e.currentFile, modalVisible = _e.modalVisible, uploadStatus = _e.uploadStatus;
var isUploadSuccess = uploadStatus === "success";
return (React.createElement(ConfigConsumer, null, function (config) {
var getPrefixCls = config.getPrefixCls;
var prefixCls = getPrefixCls("import", "", true);
return (React.createElement("div", { className: "" + prefixCls },
React.createElement("div", { className: prefixCls + "-header" }, headerChildren),
React.createElement("div", { className: prefixCls + "-main" },
React.createElement(Upload, { prefixCls: prefixCls, action: action, onChange: _this._onChange, onSuccess: _this._onSuccess, formateResponse: formateResponse, onFail: _this._onFail, ref: function (node) { _this._uploadRef = node; } },
React.createElement(React.Fragment, null,
React.createElement("p", { className: prefixCls + "-upload_icon" },
React.createElement(Icon, { type: uploadIcon })),
React.createElement("p", { className: prefixCls + "-upload_placeholder" }, currentFile ? currentFile.name : uploadPlaceholder)))),
React.createElement(ImportModal, { prefixCls: prefixCls, visible: modalVisible, continueText: isUploadSuccess ? modalProps.continueText : modalProps.reImportText, cancelText: modalProps.cancelText || React.createElement(IntlFormattedMessageEnhance, { intlId: "gbc.component.importFile.modal.cancleText" }), onContinue: function () {
_this._continiuHandle(isUploadSuccess);
}, onCancel: function () {
_this.setState({
modalVisible: false
});
if (typeof onCancel === "function")
onCancel();
} },
currentFile && isUploadSuccess && React.createElement(ImportSuccess, { prefixCls: prefixCls, title: successProps.title, tip: successProps.tip, file: currentFile }),
currentFile && !isUploadSuccess && React.createElement(ImportFail, { prefixCls: prefixCls, title: failProps.title, tip: failProps.tip, file: currentFile, reasonChildren: failProps.reasonChildren, reasonDefault: failProps.reasonDefault }))));
}));
};
ImportFileComponent.defaultProps = {
uploadPlaceholder: React.createElement(IntlFormattedMessageEnhance, { intlId: "gbc.component.importFile.placeholder" }),
uploadIcon: "inbox",
modalProps: {
reImportText: React.createElement(IntlFormattedMessageEnhance, { intlId: "gbc.component.importFile.modal.reimportText" }),
continueText: React.createElement(IntlFormattedMessageEnhance, { intlId: "gbc.component.importFile.modal.continueText" }),
}
};
return ImportFileComponent;
}(PureComponent));
export default ImportFileComponent;