knk
Version:
react components based on react
129 lines (128 loc) • 5.73 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _antd = require("antd");
var _tool = require("../../../common/tool");
var _fetchJsonp = _interopRequireDefault(require("fetch-jsonp"));
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function getUploadDownloadInfo(key, path) {
var pathUrl = path;
if (key) {
pathUrl += (/\?/.test(path) ? '&' : '?') + (0, _tool.serialize)({
key: key
});
}
return (0, _fetchJsonp.default)(pathUrl, {
jsonpCallback: 'jsonpCallback'
}).then(function (response) {
return response.json();
});
}
var RmsFilesDown = /*#__PURE__*/function (_Component) {
(0, _inherits2.default)(RmsFilesDown, _Component);
var _super = (0, _createSuper2.default)(RmsFilesDown);
function RmsFilesDown(props) {
var _this;
(0, _classCallCheck2.default)(this, RmsFilesDown);
_this = _super.call(this, props);
_this.state = {
redirectUrl: '',
loading: true
};
_this.open = true;
_this.handleFetchDownUrl = _this.handleFetchDownUrl.bind((0, _assertThisInitialized2.default)(_this));
return _this;
}
(0, _createClass2.default)(RmsFilesDown, [{
key: "componentDidUpdate",
value: function componentDidUpdate(preProps) {
var url = this.props.url;
if (url !== preProps.url) {
this.handleFetchDownUrl();
}
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
this.handleFetchDownUrl();
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.open = false;
}
}, {
key: "render",
value: function render() {
var _this$state = this.state,
redirectUrl = _this$state.redirectUrl,
loading = _this$state.loading;
var _this$props = this.props,
content = _this$props.content,
showTip = _this$props.showTip;
return /*#__PURE__*/_react.default.createElement(_antd.Spin, {
spinning: loading,
tip: showTip || ''
}, redirectUrl ? /*#__PURE__*/_react.default.createElement("a", {
href: redirectUrl,
target: "__blank",
download: true
}, content) : null);
}
}, {
key: "handleFetchDownUrl",
value: function handleFetchDownUrl() {
var _this2 = this;
var _this$props2 = this.props,
url = _this$props2.url,
filename = _this$props2.filename,
uploadTokenURI = _this$props2.uploadTokenURI;
var apiPath = "".concat(uploadTokenURI, "/getDownloadParamJsonp");
if (!url.match(/\?key=(.+)/)) {
this.setState({
loading: false,
redirectUrl: url
});
return;
}
var decodeUrl = decodeURIComponent(url.match(/\?key=(.+)/)[1]);
getUploadDownloadInfo(decodeUrl, apiPath).then(function (data) {
var file = data.data;
var fileType = file.mimetype.split('/')[1];
var downName = /\..+/.test(filename) ? filename : "".concat(filename, ".").concat(fileType); // 如果传入的filename已经包含后缀名
if (_this2.open) {
_this2.setState({
loading: false,
redirectUrl: file.mimetype.split('/')[0] === 'image' ? "".concat(file.downloadUrl, "?attname=").concat(encodeURIComponent(downName)) : file.downloadUrl
});
}
}).catch(function (err) {
_this2.setState({
loading: false
});
_antd.message.error("\u83B7\u53D6\u4E0B\u8F7D\u5730\u5740\u5931\u8D25:".concat(err.message));
});
}
}]);
return RmsFilesDown;
}(_react.Component);
RmsFilesDown.propTypes = {
url: _propTypes.default.string.isRequired,
// 文件地址
content: _propTypes.default.object.isRequired,
filename: _propTypes.default.string.isRequired,
showTip: _propTypes.default.string
};
var _default = exports.default = RmsFilesDown;