`);
+ }
try {
n ? (JsBarcode(a.find(".hibarcode_imgcode")[0], n, {
format: this.options.getbarcodeMode(),
@@ -8920,8 +8999,9 @@ var hiprint = function (t) {
lineColor: this.options.color || "#000000",
margin: 0,
height: parseInt(o.a.pt.toPx(this.options.getHeight() || 10).toString()),
- displayValue: !this.options.hideTitle,
- }), a.find(".hibarcode_imgcode").attr("height", "100%"), a.find(".hibarcode_imgcode").attr("width", "100%")) : a.html("");
+ displayValue: divMode ? false : !this.options.hideTitle,
+ }), a.find(".hibarcode_imgcode").attr("height", "100%"), a.find(".hibarcode_imgcode").attr("width", "100%"),
+ divMode && (this.options.hideTitle || a.find(".hibarcode_displayValue").html(n))): a.html("");
// pub-beta 0.0.57-beta22 解决条形码自动宽度问题
let svgWidth = a.find(".hibarcode_imgcode rect")[0].attributes.width.value
svgWidth = Math.ceil(hinnn.px.toPt(svgWidth * 1.05));
@@ -9670,6 +9750,14 @@ var hiprint = function (t) {
this.oddPaperFooter = t.oddPaperFooter, this.lastPaperFooter = t.lastPaperFooter, this.topOffset = t.topOffset, this.leftOffset = t.leftOffset;
this.designPaper.setFooter(this.firstPaperFooter, this.evenPaperFooter, this.oddPaperFooter, this.lastPaperFooter),
this.designPaper.setOffset(this.leftOffset, this.topOffset);
+ // 宽高
+ this.target.css("width", t.width + "mm"),
+ this.target.css("height", t.height - p.a.instance.paperHeightTrim + "mm"),
+ this.target.attr("original-height", t.height),
+ this.target.parent().css("width", t.width + "mm"),
+ this.target.parent().css("height", t.height - p.a.instance.paperHeightTrim + "mm"),
+ this.designPaper.target.css("width", t.width + "mm"),
+ this.designPaper.target.css("height", t.height - p.a.instance.paperHeightTrim + "mm");
var end = Date.now();
console.log('更新参数 end', end)
console.log('更新参数 time:', end - start)
@@ -9777,7 +9865,9 @@ var hiprint = function (t) {
console.log('pasteJson success');
o.a.event.trigger("hiprintTemplateDataChanged_" + n.templateId, "复制");
// 点击克隆出来的元素
+ ele.designTarget.trigger($.Event('blur'))
a.designTarget.children('.resize-panel').trigger($.Event('click'));
+ a.designTarget.trigger($.Event('focus'))
})
} catch (e) {
console.error('pasteJson error', e);
@@ -10262,7 +10352,7 @@ var hiprint = function (t) {
var r;
if (tabs.length) {
r = $('
');
- tabs.filter((e) => e.list.length > 0).forEach(function (tab) {
+ tabs.filter((e,idx) => e.list.length > 0 || (idx == 2 && o && o.length)).forEach(function (tab) {
var item = $('
' + i18n.__(tab.name) + '')
r.find('.prop-tab-items').append(item)
var options = $('
')
@@ -10548,8 +10638,43 @@ var hiprint = function (t) {
}
});
return e && e.imgToBase64 && this.transformImg(i.find("img")), i;
+ }, t.prototype.getSimpleHtmlAsync = function (dataItemOrList, e) {
+ return new Promise(resolve => {
+ var that = this;
+ e || (e = {});
+ let rootElement = $('
');
+ // 将数据转换成列表处理,简化代码
+ const dataList = Array.isArray(dataItemOrList) ? dataItemOrList : [dataItemOrList]
+ // 生成参数列表,用于后续递归
+ const paramsListToCreateHTML = []
+ dataList.forEach(function (data, dataIndex) {
+ data && that.printPanels.forEach(function (panel, o) {
+ paramsListToCreateHTML.push([panel, data, e])
+ });
+ });
+
+ function appendElementByParamsList(paramsListToCreateHTML, onFinish) {
+ if (!paramsListToCreateHTML.length) return onFinish();
+ const [panel, data, e] = paramsListToCreateHTML.shift();
+ rootElement.append(panel.getHtml(data, e));
+ // 每次生成Html之间留一些间隔,默认10,通过generateHTMLInterval字段控制
+ console.log('e.generateHTMLInterval', e.generateHTMLInterval)
+ setTimeout(() => appendElementByParamsList(paramsListToCreateHTML, onFinish), e.generateHTMLInterval ?? 10)
+ }
+
+ function onFinish() {
+ delete hinnn._paperList;
+ e && e.imgToBase64 && that.transformImg(rootElement.find("img"));
+ resolve(rootElement)
+ }
+
+ appendElementByParamsList(paramsListToCreateHTML, onFinish);
+ });
}, t.prototype.getHtml = function (t, e) {
return t || (t = {}), this.getSimpleHtml(t, e);
+ }, t.prototype.getHtmlAsync = function (t, e) {
+ // 分解生成HTML任务,留下空隙发送socket信息,避免断开连接
+ return t || (t = {}), this.getSimpleHtmlAsync(t, e);
}, t.prototype.getJointHtml = function (t, e, n) {
var i = $('
'),
o = [];
@@ -10672,9 +10797,19 @@ var hiprint = function (t) {
}, t.prototype.sentToClient = function (t, e, n) {
e || (e = {});
var i = $.extend({}, n || {});
- i.imgToBase64 = !0;
- var o = t + this.getHtml(e, i)[0].outerHTML;
- i.id = s.a.instance.guid(), i.html = o, i.templateId = this.id, hiwebSocket.send(i);
+ i.imgToBase64 = i.imgToBase64 ?? false;
+ if (i.printByFragments) {
+ // 分批打印
+ this.getHtmlAsync(e, i)
+ .then(rootElement => {
+ var o = t + rootElement[0].outerHTML;
+ i.id = s.a.instance.guid(), i.html = o, i.templateId = this.id, hiwebSocket.sendByFragments(i, n);
+ })
+ } else {
+ // 同步打印
+ var o = t + this.getHtml(e, i)[0].outerHTML;
+ i.id = s.a.instance.guid(), i.html = o, i.templateId = this.id, hiwebSocket.send(i);
+ }
}, t.prototype.printByHtml = function (t) {
$(t).hiwprint();
}, t.prototype.printByHtml2 = function (t, e) {
@@ -11052,7 +11187,8 @@ var hiprint = function (t) {
}
function ft(t, e, n) {
- $.extend({}, t || {}).imgToBase64 = !0;
+ $.extend({}, t || {});
+ t.imgToBase64 = t.imgToBase64 ?? false;
var i = new ct({});
i.on("printSuccess", e), i.on("printError", n), i.printByHtml2(this.getHtml(t), t.options);
}
@@ -11061,7 +11197,7 @@ var hiprint = function (t) {
var e = void 0;
return t && t.templates.forEach(function (n, i) {
var o = $.extend({}, n.options || {});
- t.imgToBase64 && (o.imgToBase64 = !0), e ? e.append(n.template.getHtml(n.data, o).html()) : e = n.template.getHtml(n.data, o);
+ t.imgToBase64 && (o.imgToBase64 = o.imgToBase64 ?? false), e ? e.append(n.template.getHtml(n.data, o).html()) : e = n.template.getHtml(n.data, o);
}), e;
}
@@ -11083,6 +11219,10 @@ var hiprint = function (t) {
}
function cig(t) {
+ if (hiprint._config == void 0) {
+ hiprint._config = JSON.stringify(window.HIPRINT_CONFIG);
+ }
+ const oldConfig = JSON.parse(hiprint._config);
if (t) {
t && Object.keys(t).forEach(function (i) {
if (i == "optionItems" && t.optionItems && t.optionItems.length) {
@@ -11093,7 +11233,7 @@ var hiprint = function (t) {
if (tab.replace) {
$.extend(p.a.instance[i].tabs[idx], tab);
} else {
- var options = tab.options || [], list = p.a.instance[i].tabs[idx].options;
+ var options = tab.options || [], list = oldConfig[i].tabs[idx].options;
options && options.forEach(function (o) {
var idx = list.findIndex(function (e) {
return e.name == o.name
@@ -11117,7 +11257,7 @@ var hiprint = function (t) {
delete t[i].tabs;
}
else if (t[i].supportOptions && t[i].supportOptions.length) {
- var options = t[i].supportOptions, list = p.a.instance[i].supportOptions;
+ var options = t[i].supportOptions, list = oldConfig[i].supportOptions;
options.forEach(function (o) {
var idx = list.findIndex(function (e) {
return e.name == o.name
@@ -11138,13 +11278,13 @@ var hiprint = function (t) {
var keyMap = {};
keyMap[i] = t[i];
if (t[i].tabs && t[i].tabs.length == 0) {
- keyMap[i].supportOptions = p.a.instance[i].supportOptions;
+ keyMap[i].supportOptions = oldConfig[i].supportOptions;
}
$.extend(p.a.instance, keyMap);
}
});
} else {
- $.extend(p.a.instance, HIPRINT_CONFIG);
+ $.extend(p.a.instance, JSON.parse(hiprint._config));
}
}
@@ -11166,7 +11306,7 @@ var hiprint = function (t) {
function getClientInfo(c) {
p.a.instance.clear("clientInfo");
- p.a.instance.on("getClientInfo", c);
+ p.a.instance.on("clientInfo", c);
hiwebSocket.getClientInfo()
}
diff --git a/src/hiprint/hiprint.config.js b/src/hiprint/hiprint.config.js
index 474d824c..9501cb93 100644
--- a/src/hiprint/hiprint.config.js
+++ b/src/hiprint/hiprint.config.js
@@ -228,6 +228,10 @@
name: 'barcodeMode',
hidden: false
},
+ {
+ name: 'barTextMode',
+ hidden: false
+ },
{
name: 'barWidth',
hidden: false
@@ -344,6 +348,10 @@
name: 'barcodeMode',
hidden: false
},
+ {
+ name: 'barTextMode',
+ hidden: false
+ },
{
name: 'barWidth',
hidden: false
@@ -1012,6 +1020,10 @@
name: 'rowsColumnsMergeClean',
hidden: false
},
+ {
+ name: 'groupSequenceContinue',
+ hidden: false
+ },
{
name: 'groupFieldsFormatter',
hidden: false
@@ -1160,6 +1172,14 @@
name: 'rowsColumnsMerge',
hidden: false
},
+ {
+ name: 'rowsColumnsMergeClean',
+ hidden: false
+ },
+ {
+ name: 'groupSequenceContinue',
+ hidden: false
+ },
{
name: 'groupFieldsFormatter',
hidden: false
@@ -1810,7 +1830,7 @@
name: 'tableSummaryNumFormat',
hidden: false
},
-
+
{
name: 'tableSummaryFormatter',
hidden: false
@@ -1819,7 +1839,7 @@
name: 'upperCase',
hidden: false
},
-
+
{
name: 'renderFormatter',
hidden: false
@@ -1836,7 +1856,7 @@
name: 'stylerHeader',
hidden: false
},
-
+
],
default: {
height: 90,
diff --git a/src/hiprint/plugins/jquery.hiwprint.js b/src/hiprint/plugins/jquery.hiwprint.js
index eb8b0bf2..3afd0048 100644
--- a/src/hiprint/plugins/jquery.hiwprint.js
+++ b/src/hiprint/plugins/jquery.hiwprint.js
@@ -1,5 +1,6 @@
(function ($) {
$.fn.hiwprint = function (options) {
+ var hasLoaded = false;
var usedFrame = document.getElementById('hiwprint_iframe');
if (usedFrame) usedFrame.parentNode.removeChild(usedFrame);
var opt = $.extend({}, $.fn.hiwprint.defaults, options);
@@ -23,6 +24,8 @@
$iframe[0].srcdoc = '
' + css + '';
$iframe[0].onload = function () {
+ if (hasLoaded) return;
+ hasLoaded = true;
var printDocument = $iframe[0].contentWindow || $iframe[0].contentDocument;
if (printDocument.document) printDocument = printDocument.document;
if (!$iframe.attr('srcdoc')) {
diff --git a/vue.config.js b/vue.config.js
index 81425834..8eff6da7 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -15,6 +15,7 @@ module.exports = {
let pkg = fs.readFileSync(pkgPath);
pkg.dependencies = {
"ant-design-vue": "^1.7.8",
+ "bwip-js": "^4.0.0",
"core-js": "^3.6.5",
"vue": "^2.5.11",
"concurrent-tasks": "^1.0.7",
diff --git a/webpack.config.js b/webpack.config.js
index 486d7423..004088f7 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -45,9 +45,11 @@ module.exports = {
amd: "socket.io-client",
root: "io",
},
- html2canvas: "html2canvas",
+ "@wtto00/html2canvas": "html2canvas",
canvg: 'canvg',
jspdf: "jspdf",
+ "bwip-js": 'bwip-js',
+ "nzh": "Nzh",
},
optimization:{
minimizer:[