UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

201 lines (200 loc) 13.1 kB
"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