自定义打印功能

首先讲打印的模板方式静态目录文件夹下
在这里插入图片描述

文件的内容

<script>
    //回调函数ee
    function reciveMsg(e) {
        console.log(e)
        let { data } = e
        // document.body.innerHTML = e.data
        // 模拟假数据
        let projectData = { name: "张三", code: "001", person: "小明" };
        let equipmentData = [{ equipmentNum: "10000", materielCode: "z111", modal: "iphone", name: "硬盘", type: "出库类型", code: "001", receiving: "小明" }]
        // 打印自定义
        let tem = `
	<table class="outHistoryTable" width="100%" border="1" cellspacing="0 " cellpadding="6">
		<tr>
			<th colspan="9">${data[0]}出库单</th>
		</tr>
		<tr>
			<td colspan="3">项目名称:<span>${data[0]}</span></td>
			<td colspan="3">项目编码:<span>${data[1].project_number}</span></td>
			<td colspan="3">出库时间:<span style="margin-left:20px">    年</span><span style="margin-left:20px">   月</span><span style="margin-left:20px">  日</span></td>
		</tr>
		<tr>
			<td>1</td>
			<td>设备序列号</td>
			<td>物料编码</td>
			<td>设备型号</td>
			<td>设备名称</td>
			<td>出库类型</td>
			<td>项目编号</td>
			<td>收货方</td>
			<th>设备负责人</th>
        </tr>`
        console.log(data.length)
        if (data.length < 10) {
            var html = '';
            data.map((item, index) => {
                if (index == 0) {
                    // nothing...
                } else {

                    let updata = `<tr>
                 	<td>${index + 1}</td>
                 	<td>${item.serial_number}</td>
                 	<td>${item.code}</td>
                 	<td>${item.model}</td>
                 	<td>${item.device_name}</td>
                 	<td>${item.out_type}</td>
                 	<td>${item.project_number}</td>
                 	<td>${item.receiving}</td>
                 	<td>${item.charge}</td>
                 </tr>`
                    html += updata;

                }
            })
            for (let i = 0; i < 11 - data.length; i++) {
                let nullUpdata = `<tr>
                     	<td></td>
                     	<td></td>
                     	<td></td>
                     	<td></td>
                     	<td></td>
                     	<td></td>
                     	<td></td>
                     	<td></td>
                     	<td></td>
                     </tr>`
                html += nullUpdata;
            }


        }
        let footer = `<tr>
        		<td colspan="9">
        			<div class="footer">
        				<div>项目申请人: <span>${projectData.person}</span></div>
        				<div>电话:</div>
        				<div>区域专员:</div>
        				<div>库管员:</div>
        				<div>审批人:</div>
        			</div>
        		</td>
        	</tr>
        </table>`;
        tem = tem + html + footer;
        document.body.innerHTML = tem

    }
    //监听message事件
    window.addEventListener("message", reciveMsg);
</script>





// 调用打印的方法这是
const printTemplateFun = () => {
	let resultData = [];
	selectedRowKeys.map((i, j) => {
		let index = datas.findIndex(v => v.id == i);
		// console.log(index)
		resultData.push(datas[index])
	})
	const $iframe = document.getElementById("result")
	console.log(resultData)
	$iframe.contentWindow.postMessage(resultData, '*')

	setTimeout(() => {
		if (!!window.ActiveXObject || "ActiveXObject" in window) { //是否ie
			PageSetup_Null();
		}
		function PageSetup_Null() {
			var hkey_path;
			hkey_path = "HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\PageSetup\\";
			try {
				var RegWsh = new ActiveXObject("WScript.Shell");
				RegWsh.RegWrite(hkey_path + "header", "");
				RegWsh.RegWrite(hkey_path + "footer", "");
			} catch (e) {

			}
		}
		$iframe.contentWindow.print();
	}, 1);

	$iframe.contentWindow.addEventListener('afterprint', async () => {
		let id = selectedRowKeys.join();
		let res = await SettingProviderIspriniting({ id });
		if (res.status == 0) {
			message.success('打印成功');
			setPrintingModal(false);
			loadProbiderList(searchVal);
			setSelectedRowKeys([]);
		}
	});
}

// 通过iframe 标签引入静态文件夹

<iframe src=’./templateProvider.html’ style={{ display: ‘none’ }} id=‘result’>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值