forked from integrated_whb/integrated_whb_vue
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
|
import { ref } from "vue";
|
||
|
|
||
|
const buttonRef = ref(null);
|
||
|
const THEAD_HEIGHT = 81.59;
|
||
|
const A4_HEIGHT_MM = 297;
|
||
|
const A4_HEIGHT_MM_TO_PX_PROPORTION = 3.78;
|
||
|
let A4_HEIGHT_PX = A4_HEIGHT_MM * A4_HEIGHT_MM_TO_PX_PROPORTION - THEAD_HEIGHT;
|
||
|
let elements = [];
|
||
|
const printObj = {
|
||
|
id: "printContent",
|
||
|
closeCallback() {
|
||
|
document.querySelector("#printContent").style.overflow = "hidden";
|
||
|
},
|
||
|
};
|
||
|
const fnPrint = () => {
|
||
|
document.querySelector("#printContent").style.overflow = "visible";
|
||
|
elements = document.querySelectorAll("#printContent > table > tr");
|
||
|
if (!document.querySelector("#printContent > table thead")) {
|
||
|
A4_HEIGHT_PX = A4_HEIGHT_PX + THEAD_HEIGHT;
|
||
|
}
|
||
|
fnIsPaging();
|
||
|
buttonRef.value.$el.click();
|
||
|
};
|
||
|
const fnIsPaging = (index = 0) => {
|
||
|
for (let i = index; i < elements.length; i++) {
|
||
|
if (
|
||
|
elements[i].offsetHeight +
|
||
|
elements[i].offsetTop -
|
||
|
elements[index].offsetTop >=
|
||
|
A4_HEIGHT_PX
|
||
|
) {
|
||
|
elements[i - 1].setAttribute("class", "page_break");
|
||
|
fnIsPaging(i === index ? i + 1 : i);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
export { fnPrint, printObj, buttonRef };
|