Files
tekelanew_acs/acs/nladmin-ui/node_modules/vue-print-nb/print/packages/print.js
2024-12-05 09:33:18 +08:00

87 lines
3.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* @Author: lee
* @Date: 2021-05-10 11:45:50
* @LastEditors: lee
* @LastEditTime: 2021-05-20 15:39:43
* @Description: file content
*/
import Print from './printarea.js';
/**
* @file 打印
* 指令`v-print`,默认打印整个窗口
* 传入参数`v-print="'#id'"` , 参数为需要打印局部的盒子标识.
*/
const addEvent = (element, type, callback) => {
if (element.addEventListener) {
element.addEventListener(type, callback, false);
} else if (element.attachEvent) {
element.attachEvent('on' + type, callback);
} else {
element['on' + type] = callback;
}
}
export default {
directiveName: 'print',
bind (el, binding, vnode) {
let vue = vnode.context;
let id = '';
addEvent(el, 'click', () => {
vue.$nextTick(() => {
if (binding?.value?.clickMounted) {
binding.value.clickMounted(vue)
}
if (typeof binding.value === 'string') {
// 全局打印
id = binding.value;
localPrint();
} else if (typeof binding.value === 'object' && !!binding.value.id) {
// 局部打印
id = binding.value.id;
let ids = id.replace(new RegExp("#", "g"), '');
let elsdom = document.getElementById(ids);
if (!elsdom) console.log("id in Error"), id = '';
localPrint();
} else if(binding?.value?.preview) {
localPrint();
} else {
window.print();
return
}
});
})
const localPrint = () => {
new Print({
ids: id, // * 局部打印必传入id
vue,
url: binding.value.url, // 打印指定的网址这里不能跟id共存 如果共存id的优先级会比较高
standard: '', // 文档类型默认是html5可选 html5loosestrict
extraHead: binding.value.extraHead, // 附加在head标签上的额外标签,使用逗号分隔
extraCss: binding.value.extraCss, // 额外的css连接多个逗号分开
previewTitle: binding.value.previewTitle || '打印预览', // 打印预览的标题
zIndex: binding.value.zIndex || 20002, // 预览窗口的z-index
previewPrintBtnLabel: binding.value.previewPrintBtnLabel || '打印', // 打印预览的标题
popTitle: binding.value.popTitle, // title的标题
preview: binding.value.preview || false, // 是否启动预览模式
asyncUrl: binding.value.asyncUrl,
previewBeforeOpenCallback () { // 预览窗口打开之前的callback
binding.value.previewBeforeOpenCallback && binding.value.previewBeforeOpenCallback(vue)
},
previewOpenCallback () { // 预览窗口打开之后的callback
binding.value.previewOpenCallback && binding.value.previewOpenCallback(vue)
},
openCallback () { // 调用打印之后的回调事件
binding.value.openCallback && binding.value.openCallback(vue)
},
closeCallback () {
binding.value.closeCallback && binding.value.closeCallback(vue)
},
beforeOpenCallback () {
binding.value.beforeOpenCallback && binding.value.beforeOpenCallback(vue)
}
});
};
}
};