UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

157 lines (156 loc) 7.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cainiaoGetPrinters = exports.expressLabels = void 0; var tslib_1 = require("tslib"); // 菜鸟打印 var react_1 = (0, tslib_1.__importDefault)(require("react")); var message_1 = (0, tslib_1.__importDefault)(require("antd/lib/message")); var modal_1 = (0, tslib_1.__importDefault)(require("antd/lib/modal")); var wsMap = new Map(); // 预览、打印 function expressLabels(expressList, fetcher, translate, preview) { if (preview === void 0) { preview = false; } return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { var openWs, before, after, printResult, _i, before_1, item, isWs, res; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: openWs = fetchWs(translate, fetcher, preview).openWs; before = expressList.before, after = expressList.after; printResult = []; _i = 0, before_1 = before; _a.label = 1; case 1: if (!(_i < before_1.length)) return [3 /*break*/, 4]; item = before_1[_i]; isWs = ['ws', 'wss'].includes(item.protocol); // item.bodyParams.task.printer = 'pdfFactory Pro' // 调试用,因为打印机是数据库那边配置,这里设置为本地的虚拟打印机 if (preview) { item.bodyParams.task.preview = true; item.bodyParams.task.printer = ""; item.bodyParams.task.previewType = "pdf"; } if (!isWs) return [3 /*break*/, 3]; return [4 /*yield*/, openWs(item, printResult)]; case 2: _a.sent(); _a.label = 3; case 3: _i++; return [3 /*break*/, 1]; case 4: if (!!preview) return [3 /*break*/, 6]; return [4 /*yield*/, fetcher(after, { port_result: printResult })]; case 5: res = _a.sent(); if (res.status !== 0) { message_1.default.error({ content: res.msg }, 2); } else { message_1.default.success({ content: '打印完成', key: 'success-print' }); } _a.label = 6; case 6: return [2 /*return*/]; } }); }); } exports.expressLabels = expressLabels; var fetchWs = function (translate, fetcher, preview) { if (preview === void 0) { preview = false; } var openWs = function (before, printResult) { return new Promise(function (resolve, _reject) { var params = before.bodyParams; var wsInstance; if (wsMap.has(before.url)) { wsInstance = wsMap.get(before.url); wsInstance.send(typeof params == 'string' ? params : JSON.stringify(params)); } else { wsInstance = new WebSocket(before.url); wsInstance.onopen = function (_ev) { wsMap.set(before.url, this); this.send(typeof params == 'string' ? params : JSON.stringify(params)); }; } wsInstance.onerror = function () { showErrorMessage(translate); }; wsInstance.onmessage = function (evt) { var wsData = JSON.parse(evt.data); if ((wsData === null || wsData === void 0 ? void 0 : wsData.status) === 'success') { if (preview) { if (wsData === null || wsData === void 0 ? void 0 : wsData.previewURL) { showPreviewModal(wsData.previewURL, translate); } } else { printResult.push(wsData); } } else if (wsData.status === 'completeSuccess' || wsData.status === 'completeFailure') { resolve(0); } else if ((wsData === null || wsData === void 0 ? void 0 : wsData.status) === 'failed') { message_1.default.error({ content: wsData.msg, key: 'failed-print' }); } }; }); }; return { openWs: openWs }; }; // 获取打印机列表 function cainiaoGetPrinters(wsUrl, translate) { return (0, tslib_1.__awaiter)(this, void 0, void 0, function () { return (0, tslib_1.__generator)(this, function (_a) { return [2 /*return*/, new Promise(function (resolve, reject) { var wsInstance = new WebSocket(wsUrl); wsInstance.onerror = function () { showErrorMessage(translate); reject(); }; wsInstance.onopen = function (_ev) { this.send(JSON.stringify({ cmd: "getPrinters", requestID: +new Date(), version: "1.0" })); }; wsInstance.onmessage = function (evt) { var wsData = JSON.parse(evt.data); if (wsData.status === 'success') { if (wsData.cmd === 'getPrinters') { resolve(wsData); wsInstance.close(); } } }; })]; }); }); } exports.cainiaoGetPrinters = cainiaoGetPrinters; var showPreviewModal = function (previewURL, translate) { var id = "pdf" + +new Date(); var embed = react_1.default.createElement("embed", { id: id, src: previewURL, type: "application/pdf", style: { width: 800, height: 700, maxHeight: 'calc(100vh - 275px)' } }); modal_1.default.info({ title: react_1.default.createElement("span", { style: { fontSize: 15 } }, translate('preview')), content: embed, width: 900, style: { top: 1, paddingBottom: 0 }, bodyStyle: { maxHeight: 'calc(100vh - 50px)' } }); }; var showErrorMessage = function (translate) { message_1.default.error({ content: (react_1.default.createElement("span", null, translate('CRUD.cloudPrintNotConnect'), react_1.default.createElement("a", { href: "https://page.cainiao.com/waybill/cloud_printing/home.html", target: "_blank", rel: "noopener noreferrer" }, translate('downloadUrl')))) }); }; //# sourceMappingURL=./renderers/Lion/ExpressPrint/ExpressPrint.js.map