fastlion-amis
Version:
一种MIS页面生成工具
201 lines (200 loc) • 13.1 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = tslib_1.__importStar(require("react"));
var Tooltip_1 = (0, tslib_1.__importDefault)(require("antd/lib/Tooltip"));
var Button_1 = (0, tslib_1.__importDefault)(require("antd/lib/Button"));
var Spin_1 = (0, tslib_1.__importDefault)(require("antd/lib/Spin"));
var style_1 = require("../style");
var react_pdf_1 = require("react-pdf");
// `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`
// `./public/ThirdPlugins/reactPdf.js`;
react_pdf_1.pdfjs.GlobalWorkerOptions.workerSrc = "//cdnjs.cloudflare.com/ajax/libs/pdf.js/" + react_pdf_1.pdfjs.version + "/pdf.worker.js";
require("./index.css");
var PdfFile = /** @class */ (function (_super) {
(0, tslib_1.__extends)(PdfFile, _super);
function PdfFile() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.state = {
pageNumber: 1,
pageNumberInput: 1,
pageNumberFocus: false,
numPages: 1,
pageWidth: 600,
fullscreen: false,
loading: false
};
_this.onDocumentLoadSuccess = function (_a) {
var numPages = _a.numPages;
_this.setState({ numPages: numPages });
};
_this.lastPage = function () {
if (_this.state.pageNumber == 1) {
return;
}
_this.setState({
loading: true
}, function () {
var page = _this.state.pageNumber - 1;
_this.setState({ pageNumber: page, pageNumberInput: page, loading: false });
});
};
_this.nextPage = function () {
if (_this.state.pageNumber == _this.state.numPages) {
return;
}
var page = _this.state.pageNumber + 1;
_this.setState({ pageNumber: page, pageNumberInput: page });
};
_this.onPageNumberFocus = function (e) {
_this.setState({ pageNumberFocus: true });
};
_this.onPageNumberBlur = function (e) {
_this.setState({ pageNumberFocus: false, pageNumberInput: _this.state.pageNumber });
};
_this.onPageNumberChange = function (e) {
var value = e.target.value;
value = value <= 0 ? 1 : value;
value = value >= _this.state.numPages ? _this.state.numPages : value;
_this.setState({ pageNumberInput: value });
};
_this.toPage = function (e) {
_this.setState({ pageNumber: Number(e.target.value) });
};
_this.matchLocalhost = function (str) {
return /localhost\:(\d)+/.test(str);
};
_this.pageZoomOut = function () {
if (_this.state.pageWidth <= 600) {
return;
}
var pageWidth = _this.state.pageWidth * 0.8;
_this.setState({ pageWidth: pageWidth });
};
_this.pageZoomIn = function () {
var pageWidth = _this.state.pageWidth * 1.2;
_this.setState({ pageWidth: pageWidth });
};
_this.pageFullscreen = function () {
if (_this.state.fullscreen) {
_this.setState({ fullscreen: false, pageWidth: 600 });
}
else {
_this.setState({ fullscreen: true, pageWidth: window.screen.width - 40 });
}
};
_this.handleCancel = function () {
_this.props.setVisible();
};
_this.openDownloadDialog = function (url, saveName) {
return new Promise(function (resolve, reject) {
resolve('');
}).then(function (res) {
if (typeof url == 'object' && url instanceof Blob) {
url = URL.createObjectURL(url); // 创建blob地址
}
var aLink = document.createElement('a');
aLink.href = url;
aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
var event;
if (window.MouseEvent)
event = new MouseEvent('click');
else {
event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
}
aLink.dispatchEvent(event);
});
};
return _this;
}
PdfFile.prototype.render = function () {
var _this = this;
var _a, _b, _c;
var _d = this.props, visible = _d.visible, current = _d.current, env = _d.env;
var baseUrl = ((_b = (_a = env === null || env === void 0 ? void 0 : env.axiosInstance) === null || _a === void 0 ? void 0 : _a.defaults) === null || _b === void 0 ? void 0 : _b.baseURL) || (env === null || env === void 0 ? void 0 : env.ajaxApi);
var _e = this.state, pageNumber = _e.pageNumber, numPages = _e.numPages, pageWidth = _e.pageWidth, fullscreen = _e.fullscreen, loading = _e.loading;
return (react_1.default.createElement(react_1.default.Fragment, null, current && (current === null || current === void 0 ? void 0 : current.name) && ((current === null || current === void 0 ? void 0 : current.addr) || (current === null || current === void 0 ? void 0 : current.url)) ?
react_1.default.createElement(style_1.WrapperModal, { zIndex: 9999, maskStyle: {
zIndex: 9999
}, getContainer: (_c = this.props.env) === null || _c === void 0 ? void 0 : _c.getModalContainer, title: current === null || current === void 0 ? void 0 : current.name, wrapClassName: 'page-file', destroyOnClose: true, visible: visible, footer: react_1.default.createElement("div", { className: 'pageTool', style: {
display: 'flex',
width: '100%',
bottom: '20px',
padding: '8px 15px',
borderRadius: '15px'
} },
react_1.default.createElement(Tooltip_1.default, { overlayInnerStyle: { zIndex: 11000 }, zIndex: 11000, title: pageNumber == 1 ? "已是第一页" : "上一页" },
react_1.default.createElement("div", { className: 'toolBtn' },
react_1.default.createElement(Button_1.default, { icon: react_1.default.createElement("span", { className: "fa fa-arrow-left" }), onClick: this.lastPage }))),
react_1.default.createElement("div", { className: 'toolBtn', style: {
width: '16vw',
display: 'flex',
justifyContent: 'space-evenly',
alignItems: 'center'
} },
react_1.default.createElement("span", null, pageNumber),
react_1.default.createElement("span", null, "\u00A0/\u00A0"),
react_1.default.createElement("span", null, numPages)),
react_1.default.createElement(Tooltip_1.default, { overlayInnerStyle: { zIndex: 11000 }, zIndex: 11000, title: pageNumber == numPages ? "已是最后一页" : "下一页" },
react_1.default.createElement("div", { className: 'toolBtn', style: {
width: '16vw',
display: 'flex',
justifyContent: 'center',
alignItems: 'center'
} },
react_1.default.createElement(Button_1.default, { style: { border: '0px !important' }, icon: react_1.default.createElement("span", { className: "fa fa-arrow-right" }), onClick: this.nextPage }))),
react_1.default.createElement(Tooltip_1.default, { overlayInnerStyle: { zIndex: 11000 }, zIndex: 11000, title: "\u653E\u5927" },
react_1.default.createElement("div", { className: 'toolBtn', style: {
width: '16vw',
display: 'flex',
justifyContent: 'center',
alignItems: 'center'
} },
react_1.default.createElement(Button_1.default, { style: { border: '0px !important' }, icon: react_1.default.createElement("span", { className: "fa fa-plus-circle" }), onClick: this.pageZoomIn }))),
react_1.default.createElement(Tooltip_1.default, { overlayInnerStyle: { zIndex: 11000 }, zIndex: 11000, title: "\u7F29\u5C0F" },
react_1.default.createElement("div", { className: 'toolBtn', style: {
width: '16vw',
display: 'flex',
justifyContent: 'center',
alignItems: 'center'
} },
react_1.default.createElement(Button_1.default, { style: { border: '0px !important' }, icon: react_1.default.createElement("span", { className: "fa fa-minus-circle" }), onClick: this.pageZoomOut }))),
react_1.default.createElement(Tooltip_1.default, { overlayInnerStyle: { zIndex: 11000 }, zIndex: 11000, title: fullscreen ? "恢复默认" : '适合窗口' },
react_1.default.createElement("div", { className: 'toolBtn', style: {
width: '16vw',
display: 'flex',
justifyContent: 'center',
alignItems: 'center'
} },
react_1.default.createElement(Button_1.default, { style: { border: '0px !important' }, icon: fullscreen ? react_1.default.createElement("span", { className: "fa fa-compress" }) : react_1.default.createElement("span", { className: "fa fa-expand" }), onClick: this.pageFullscreen }))),
react_1.default.createElement(Tooltip_1.default, { overlayInnerStyle: { zIndex: 11000 }, zIndex: 11000, title: '下载' },
react_1.default.createElement("div", { className: 'toolBtn', style: {
width: '16vw',
display: 'flex',
justifyContent: 'center',
alignItems: 'center'
} },
react_1.default.createElement(Button_1.default, { style: { border: '0px !important' }, onClick: function () { _this.openDownloadDialog((!baseUrl ? '' : (_this.matchLocalhost(baseUrl) ? '' : baseUrl)) + ((current === null || current === void 0 ? void 0 : current.addr) ? current === null || current === void 0 ? void 0 : current.addr : current === null || current === void 0 ? void 0 : current.url), current === null || current === void 0 ? void 0 : current.name); } }, "\u4E0B\u8F7D")))), onCancel: this.handleCancel, closable: true },
react_1.default.createElement("div", { className: 'view', style: {
display: 'flex',
justifyContent: 'center',
height: '400px',
/* padding: 50px 0; */
overflow: 'auto',
/* width: 200px; */
margin: 'auto',
width: '100%'
} }, react_1.default.createElement("div", { className: 'pageContainer', style: {
width: '100vw',
maxWidth: '100%'
} },
react_1.default.createElement(react_pdf_1.Document, { file: (!baseUrl ? '' : (this.matchLocalhost(baseUrl) ? '' : baseUrl)) + ((current === null || current === void 0 ? void 0 : current.addr) ? current === null || current === void 0 ? void 0 : current.addr : current === null || current === void 0 ? void 0 : current.url), onLoadSuccess: this.onDocumentLoadSuccess, error: 'Failed to load PDF file', loading: react_1.default.createElement(Spin_1.default, { style: {
margin: 'auto'
}, size: "large" }) },
react_1.default.createElement(react_pdf_1.Page, { pageNumber: pageNumber, width: pageWidth, loading: react_1.default.createElement(Spin_1.default, { size: "large" }) }))))) : null));
};
return PdfFile;
}(react_1.PureComponent));
exports.default = PdfFile;
//# sourceMappingURL=./renderers/Lion/Table/LionCellFile/PdfPreview/index.js.map