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