UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

192 lines (191 loc) 9.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cainiaoGetPrinters = exports.expressLabels = void 0; var tslib_1 = require("tslib"); // 菜鸟打印 var react_1 = tslib_1.__importStar(require("react")); var antd_1 = require("antd"); var shell_1 = require("../../../utils/shell"); var DealContent = function () { var _a = (0, react_1.useState)(0), percent = _a[0], setPercent = _a[1]; var interval = (0, react_1.useRef)(); (0, react_1.useEffect)(function () { interval.current = setInterval(function () { setPercent(function (percent) { var sum = percent + 8; if (sum < 100) { return sum; } return percent; }); }, 1000); return function () { interval.current && clearInterval(interval.current); }; }, []); return (react_1.default.createElement("div", null, react_1.default.createElement("div", { style: { marginBottom: 8 } }, "\u4EFB\u52A1\u6B63\u5728\u6267\u884C\u4E2D,\u8BF7\u7A0D\u7B49"), react_1.default.createElement(antd_1.Progress, { percent: percent, size: "small", showInfo: false }))); }; // 预览、打印 function expressLabels(expressList, fetcher, translate, showModal) { var _a, _b; if (showModal === void 0) { showModal = false; } return tslib_1.__awaiter(this, void 0, void 0, function () { var modal, _c, openWs, closeWs, before, after, printResult, content, uniqueArray, _i, before_1, item, isWs, res, data; return tslib_1.__generator(this, function (_d) { switch (_d.label) { case 0: modal = showModal ? antd_1.Modal.info({ title: '正在处理中', content: react_1.default.createElement(DealContent, null), okButtonProps: { style: { display: 'none' } } }) : undefined; _c = fetchWs(translate), openWs = _c.openWs, closeWs = _c.closeWs; before = expressList.before, after = expressList.after; printResult = []; content = before.map(function (item) { return ({ group: item.group, url: item.downloadUrl }); }); uniqueArray = content.filter(function (obj, index, self) { return index === self.findIndex(function (el) { return (el.group === obj.group && el.url === obj.url); }); }); _i = 0, before_1 = before; _d.label = 1; case 1: if (!(_i < before_1.length)) return [3 /*break*/, 4]; item = before_1[_i]; isWs = ['ws', 'wss'].includes(item.protocol); if (!isWs) return [3 /*break*/, 3]; return [4 /*yield*/, openWs(item, printResult, uniqueArray).catch(function () { modal === null || modal === void 0 ? void 0 : modal.destroy(); }).finally(function () { closeWs(); })]; case 2: _d.sent(); _d.label = 3; case 3: _i++; return [3 /*break*/, 1]; case 4: if (!after) return [3 /*break*/, 7]; return [4 /*yield*/, fetcher(after, { port_result: printResult })]; case 5: res = _d.sent(); data = res.data == null ? null : (((_a = res.data) === null || _a === void 0 ? void 0 : _a.data) == null && ((_b = res.data) === null || _b === void 0 ? void 0 : _b.status) == 0) ? null : res.data; if (!(res.ok && data != null)) return [3 /*break*/, 7]; return [4 /*yield*/, expressLabels(data, fetcher, translate)]; case 6: _d.sent(); _d.label = 7; case 7: modal === null || modal === void 0 ? void 0 : modal.destroy(); antd_1.message.success({ content: '打印完成', key: 'success-print' }); return [2 /*return*/]; } }); }); } exports.expressLabels = expressLabels; var fetchWs = function (translate) { var wsInstance; var openWs = function (before, printResult, uniqueArray) { return new Promise(function (resolve, reject) { var params = before.bodyParams; wsInstance = new WebSocket(before.url); wsInstance.onopen = function (_ev) { this.send(typeof params == 'string' ? params : JSON.stringify(params)); }; wsInstance.onerror = function () { showErrorMessage(translate, uniqueArray); reject(); }; wsInstance.onmessage = function (evt) { var _a, _b; var wsData = JSON.parse(evt.data); // 菜鸟,抖音,快手; PDD if (wsData.cmd == 'notifyPrintResult' || wsData.cmd == 'PrintResultNotify' || wsData.cmd == 'notifyDocResult') { if (wsData.taskStatus == 'printed' || wsData.taskStatus == 'partPrinted' || wsData.status == 'printed') { printResult.push(wsData); resolve(0); } else if (wsData.taskStatus == 'failed') { printResult.push(wsData); antd_1.message.error({ content: (_b = (_a = wsData.printStatus) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.msg, key: 'failed-print' }); resolve(0); } // JD } else if (wsData.success == 'true' && wsData.status == '500') { printResult.push(wsData); resolve(0); // JD } else if (wsData.success == 'false' && wsData.status != '500') { printResult.push(wsData); antd_1.message.error({ content: wsData.message, key: 'failed-print' }); resolve(0); } }; }); }; var closeWs = function () { wsInstance === null || wsInstance === void 0 ? void 0 : wsInstance.close(); }; return { openWs: openWs, closeWs: closeWs }; }; // 获取打印机列表 function cainiaoGetPrinters(wsUrl, translate) { return tslib_1.__awaiter(this, void 0, void 0, function () { return 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".concat(+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)' } }); antd_1.Modal.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, uniqueArray) { var downloadUrl = "https://page.cainiao.com/waybill/cloud_printing/home.html"; var structure = uniqueArray ? react_1.default.createElement("div", { style: { display: 'inline-block' } }, uniqueArray.map(function (item, index) { return react_1.default.createElement("div", { key: index }, react_1.default.createElement("span", null, item.group + translate('CRUD.cloudPrintNotConnect'), react_1.default.createElement("span", { style: { cursor: 'pointer', color: '#40a9ff' }, onClick: function () { return shell_1.Shell.openFile(2, "", item.url); } }, translate('downloadUrl')))); })) : false; antd_1.message.error({ content: (structure ? structure : 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