fastlion-amis
Version:
一种MIS页面生成工具
157 lines (156 loc) • 7.15 kB
JavaScript
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
;