前台-打印

news2024/11/26 10:20:18

 

 

 插件  

jsbarcode、uuid、vue-easy-print、vue-qr

主页面

<script setup lang="ts">
	import { ref } from 'vue'
	import PrintUser from './printUser.vue'
	const easyPrint = ref()
	const printDemo = () => {
		setTimeout(() => {
			easyPrint.value.print()
		}, 1000)
	}
	/**
	 * 打印假数据
	 */
	const pieceList = [
		{
			mouldName: 'a23121231233123aa',
			mouldCode: 'a21312312312312a',
			bomTypeName: 'aa12323123a',
			confirmationCode: 'a3213123123123a',
			mouldType: 'a3213123123123a',
			technologyList: [
				{ id: 1, num: 1, content: 'Muju111', code: 'codeMuju111', sign: '老王' },
				{ id: 2, num: 2, content: 'Muju2222', code: 'codeMuju222', sign: '老六' },
				{ id: 3, num: 3, content: 'Muju3333', code: 'codeMuju333', sign: '老八' },
			],
			id: 1244124,
			barCode: 'ETC785216',
		},
		{
			mouldName: 'aaa',
			mouldCode: 'aaa',
			bomTypeName: 'aaa',
			confirmationCode: 'aaa',
			mouldType: 'a3213123123123a',
			technologyList: [
				{ id: 1, num: 1, content: 'Muju111', code: 'codeMuju111', sign: '老王' },
				{ id: 2, num: 2, content: 'Muju2222', code: 'codeMuju222', sign: '老六' },
				{ id: 3, num: 3, content: 'Muju3333', code: 'codeMuju333', sign: '老八' },
			],
			id: 124232344124,
			barCode: 'EAN13',
		},
		{
			mouldName: 'aaa',
			mouldCode: 'aaa',
			bomTypeName: 'aaa',
			confirmationCode: 'aaa',
			mouldType: 'a3213123123123a',
			technologyList: [
				{ id: 1, num: 1, content: 'Muju111', code: 'codeMuju111', sign: '老王' },
				{ id: 2, num: 2, content: 'Muju2222', code: 'codeMuju222', sign: '老六' },
				{ id: 3, num: 3, content: 'Muju3333', code: 'codeMuju333', sign: '老八' },
			],
			id: 124423124,
			barCode: 'CODE39',
		},
	]
</script>

<template>
	<div>
		<el-button class="edit" size="small" @click="printDemo">打印</el-button>
		<PrintUser :pieceList="pieceList" ref="easyPrint"></PrintUser>
	</div>
</template>

<style lang="scss" scoped></style>

printUser.vue

<template>
	<div style="width: 100%">
		<vue-easy-print ref="technologyCardOneRef" class="card-1">
			<div v-for="piece in props.pieceList" :key="piece.id" style="page-break-after: always">
				<img src="@/assets/bg.jpg" alt="" style="width: 100%; height: 150px" />
				<div class="top">
					<div class="item-col">
						<span>模具名称:{{ piece.mouldName }}</span>
					</div>
					<div class="item-col">
						<span>模具编号:{{ piece.mouldCode }}</span>
					</div>
					<div class="item-col">
						<span>BOM类型:{{ piece.bomTypeName }}</span>
					</div>
					<div class="item-col">
						<span>工件确认号:{{ piece.confirmationCode }}</span>
					</div>
					<div class="item-col">
						<span>模具类型:{{ piece.mouldName }}</span>
					</div>
				</div>
				<div class="bottom">
					<table align="center" border="1px">
						<tr>
							<th style="width: 10%">工序序号</th>
							<th style="width: 30%">工序内容</th>
							<th style="width: 40%">工序条码</th>
							<th style="width: 20%">老板确认签名</th>
						</tr>
						<tr v-for="tech in piece.technologyList" :key="tech.id">
							<td>{{ tech.num }}</td>
							<td>{{ tech.content }}</td>
							<td>{{ tech.code }}</td>
							<td>{{ tech.sign }}</td>
						</tr>
					</table>
				</div>
				<vue-qr text="http://www.baidu.com" :size="80"></vue-qr>
				<div>{{ piece.barCode }}</div>
				<js-barcode :value="piece.barCode"></js-barcode>
			</div>
		</vue-easy-print>
	</div>
</template>

<script setup lang="ts">
	import vueEasyPrint from 'vue-easy-print'
	import vueQr from 'vue-qr/src/packages/vue-qr.vue'
	import jsBarcode from './code.vue'

	const technologyCardOneRef = ref()

	const props = defineProps<{
		pieceList: Array<any>
	}>()

	const print = () => {
		setTimeout(() => {
			technologyCardOneRef.value.print()
		}, 10)
	}

	defineExpose({ print })

</script>

<style scoped lang="less">
	/* 移除打印页眉页脚 */
	@page {
		size: auto; /* auto is the initial value */
		margin: 3mm; /* this affects the margin in the printer settings */
	}

	.top {
		display: flex;
		flex-wrap: wrap;
		.item-col {
			width: 33.33%;
			margin: 10px 0;
		}
	}

	.bottom {
		table {
			border: 1px solid #000;
			border-spacing: 0;
			width: 100%;
		}
		th,
		td {
			text-align: center;
		}
	}
</style>

code.vue

<template>
	<!-- 条形码容器,可选svg、canvas,或img标签 -->
	<svg v-if="tagCode === 'svg'" :id="idName"></svg>
	<canvas v-if="tagCode === 'canvas'" :id="idName"></canvas>
	<img v-if="tagCode === 'img'" :id="idName" />
</template>

<script>
	import { onMounted, nextTick } from 'vue'
	import { v4 as uuidv4 } from 'uuid'
	// https://github.com/lindell/JsBarcode/wiki/Options
	import jsbarcode from 'jsbarcode'

	export default {
		name: 'jsBarcode',
		props: {
			tagCode: {
				type: String,
				default: 'svg',
			},
			value: [String, Number],
		},
		setup(props, ctx) {
			const idName = `jsBarcode${uuidv4()}`
			onMounted(() => {
				// 生成条形码
				nextTick(() => {
					jsbarcode(`#${idName}`, props.value, {
						height: 35,
						fontSize: 18,
						textAlign: 'left', // Set the horizontal alignment of the text. Can be left / center / right
						displayValue: true, //是否显示文字信息
					})
				})
			})
			return {
				idName,
			}
		},
	}
</script>

<style lang="scss" scoped></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kotlin constructor init companion object 与初始化by lazy

kotlin constructor init companion object 与初始化by lazy class MyDemo(private var v: Int) {init {println("init $v")}constructor(m: Int, n: Int) : this(m) {println("constructor $m $n")}//只初始化一次companion object {private var TAG &qu…

spring工程的启动流程?bean的生命周期?提供哪些扩展点?管理事务?解决循环依赖问题的?事务传播行为有哪些?

1.Spring工程的启动流程&#xff1a; Spring工程的启动流程主要包括以下几个步骤&#xff1a; 加载配置文件&#xff1a;Spring会读取配置文件&#xff08;如XML配置文件或注解配置&#xff09;来获取应用程序的配置信息。实例化并初始化IoC容器&#xff1a;Spring会创建并初…

台阶仪是干什么的?在太阳能光伏行业能测什么?

太阳能作为应用广、无排放、无噪声的环保能源&#xff0c;在近些年迎来快速发展&#xff0c;而在各类型的太阳能电池及太阳能充电系统中&#xff0c;多会镀一层透明的ITO导电薄膜&#xff0c;其镀膜厚度对电池片的导电性能有着非常重要的影响&#xff0c;因而需要对镀膜厚度进行…

IPETRONIK推出第三代测量模块,专为热管理、电动车测试打造

一 应用场景 车辆的热管理测试变得越来越重要&#xff0c;特别是在电动车领域&#xff0c;且精确的温度测量将给车辆的运行、性能以及乘客的舒适度带来直接影响。 • 热监测和验证&#xff1b; • 气候控制系统的功能测试&#xff1b; • 控制环路的监测&#xff1b; • 发…

Android CrashHandler全局异常

CrashHandler 介绍 Android 应用不可避免的会发生crash 即崩溃&#xff0c;无论程序写的多好&#xff0c;都会不可避免的发生崩溃&#xff0c;可能是由底层引起的&#xff0c;也有可能是写的代码引起的。当crash发生时&#xff0c;系统会kill掉正在执行的程序&#xff0c;现象…

CMake静态库动态库的构建和链接

cmake的基础知识&#xff1a;CMakeLists常用命令&#xff0c;在这里不再赘述。 Windows平台下可用cmake-gui生成vs的.sln工程&#xff0c;Linux平台下可以运行cmake命令。 动态库和静态库的构建 现有C工程目录结构如下&#xff1a; 静态库的构建 add.h #include <iost…

【kingbase数据库】kingbase查看所有表名

进入kingbase数据库&#xff0c;在数据库活动页面中选择要查询的数据库。 在SQL命令行工具中输入以下命令&#xff1a; SELECT relname FROM sys_class WHERE relkind r AND relnamespace (SELECT oid FROM sys_namespace WHERE nspname public);执行命令后&#xff0c;…

deeplabv3+源码之慢慢解析main.py(1)--get_argparser函数

deeplab v3源码 慢慢解析系列 本带着一些孩子们做&#xff0c;但本硕能独立看下来的学生不多。和孩子们一起再学一遍吧。希望孩子们和我自己都能坚持写下去吧。网上资料太多了&#xff0c;但不够慢&#xff0c;都是速成&#xff0c;没有足够的解释和补充&#xff0c;希望这次够…

EC200u-cn-4G模块连接OneNet上传GPS定位数据(MQTT协议)

一、前言 这篇文章介绍EC200U-CN 4G模块通过MQTT协议上传GPS数据到OneNet平台,完成地图数据显示的过程。 当前的主控芯片采用MC9S12XS128MAA,通过串口连接EC200U-CN实现联网功能,通过内置的MQTT协议指令,将采集的GPS数据上传到OneNet平台,联合百度地图实现位置显示。 下…

C#(四十七)之关于流的异常

一&#xff1a;Try-catch-finally 声明文件对象要在 Try-catch-finally 结构体外边声明 声明在try中的对象有作用域问题&#xff0c;其并不能影响finally中的程序 在catch中显示程序错误代码。 在finally中释放程序&#xff0c;关闭文件流。 二&#xff1a;using语句 1&a…

启动失败之JDK版本配置不一致

一、java: 警告: 源发行版 17 需要目标发行版 17 1.1.原因 :JDK 版本不对。 这里可以看到&#xff0c;项目需要的是JDK17&#xff0c;而我这里用的是JDK1.8。 1.2.修改 这里有两种操作&#xff0c;一种是修改项目版本&#xff0c;一种是修改JDK版本。无论是哪一种&#xff0…

NSS [SWPUCTF 2022 新生赛]xff

NSS [SWPUCTF 2022 新生赛]xff postman一把梭。

Mysql高级教程第二章

SQL Alias&#xff08;别名&#xff09; 通过使用 SQL&#xff0c;可以为列名称和表名称指定别名&#xff08;Alias&#xff09;。 SQL Alias 表的 SQL Alias 语法 SELECT column_name(s) FROM table_name AS alias_name 列的 SQL Alias 语法 SELECT column_name AS alia…

UG NX二次开发(C#)-建模-根据特征获取体(或者关联体)

文章目录 1、前言2、创建块特征与UIStyler2.1 创建两个长方体2.2 创建一个UIStyler3、添加获取体的代码1、前言 UG NX的建模是基于特征建模的,比如块、圆柱体、合并操作等等都是特征,都有特征对象,对于具有体的特征,其可以通过NXOpen二次开发技术实现二者的转换,也可以通…

error: exportArchive: No signing certificate \“Mac Development\“ found

error: exportArchive: No signing certificate “Mac Development” found UNIAPP打包又遇到这个问题了, 证书过期续期的时候又遇到这个问题了(之前遇到过解决了,时间长忘了),记录一下,报错信息 error: exportArchive: No signing certificate \"Mac Development\"…

url, uri, urn的区别

URI URI是统一资源标识符&#xff08;Uniform Resource Identifier&#xff09;的缩写。它用于标识网络上的逻辑或物理资源。URL和URN是URI的子类型。URL用于定位资源&#xff0c;而URN用于命名资源。 一个URI由以下部分组成 scheme:[//authority]path[?query][#fragment] …

UDP客户端和服务器

UDP客户端&#xff0c;也就是首先主动发送数据的一方&#xff0c;也就是发起服务请求的一方。 UDP服务器&#xff0c;也就是首先等待接收数据&#xff0c;并对接收的数据进行处理&#xff0c;返回计算结果的一方&#xff0c;也就是提供服务的一方。 涉及的函数 ssize_t recvfr…

实现Linux 视频聊天、远程桌面(源码,支持信创环境,可与Windows版、安卓版互通)

有朋友在下载并了解了《C# 实现 Linux 视频会议&#xff08;源码&#xff0c;支持信创环境&#xff0c;银河麒麟&#xff0c;统信UOS&#xff09;》中提供的源码后&#xff0c;留言给我说&#xff0c;这个视频会议有点复杂了&#xff0c;代码比较多&#xff0c;看得有些费劲。问…

嵌入式系统标志的策略和技巧

当在嵌入式系统中使用标志时&#xff0c;可以考虑以下优化措施&#xff1a; 图像压缩&#xff1a;由于嵌入式系统通常具有有限的存储空间&#xff0c;可以使用图像压缩算法来减小标志的文件大小。常见的压缩算法包括JPEG、PNG等&#xff0c;可以根据系统的要求选择合适的压缩算…

Gradle多模块项目搭建完整教程,模块互相依赖,基于springboot开发

1.父项目创建&#xff0c;【com.fdw.hibernate】 2.子项目创建&#xff0c;【com.fdw.study】【com.fdw.parent】 3.最终结构目录 4. 父工程build.gradle plugins {id java }allprojects {// 指定需要的插件// 指定语言apply plugin: java//指定编辑器apply plugin: idea// 配…