2024-05-14 16:31:23 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<div style="display: flex">
|
|
|
|
|
|
<div style="margin-left: 10px">
|
|
|
|
|
|
<h5>批量打印</h5>
|
|
|
|
|
|
<el-form
|
|
|
|
|
|
label-position="left"
|
|
|
|
|
|
label-width="120px"
|
|
|
|
|
|
:model="printParams"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-form-item label="前置字符串:">
|
|
|
|
|
|
<el-input class="form-input" v-model="printParams.startString"/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="递增起始数字:">
|
|
|
|
|
|
<el-input-number class="form-input" v-model="printParams.startNum" />
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="数字长度:">
|
|
|
|
|
|
<el-input-number class="form-input" v-model="printParams.numberLength" />
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="递增步长:">
|
|
|
|
|
|
<el-input-number class="form-input" v-model="printParams.stepLength" />
|
|
|
|
|
|
</el-form-item>
|
2024-06-05 08:08:01 +08:00
|
|
|
|
<el-form-item label="方向码:">
|
|
|
|
|
|
<el-input-number class="form-input" v-model="printParams.directionCode" />
|
|
|
|
|
|
</el-form-item>
|
2024-05-14 16:31:23 +08:00
|
|
|
|
<el-form-item label="后置字符串:">
|
|
|
|
|
|
<el-input class="form-input" v-model="printParams.endString"/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="递增数量:">
|
|
|
|
|
|
<el-input-number class="form-input" v-model="printParams.codeCount" />
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="打印数量:">
|
|
|
|
|
|
<el-input-number class="form-input" v-model="printParams.printNo" />
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
<el-button type="primary" @click="showQr">预览</el-button>
|
|
|
|
|
|
<el-button type="success" @click="printCode">打印</el-button>
|
|
|
|
|
|
<h5>单个打印</h5>
|
|
|
|
|
|
<el-form
|
|
|
|
|
|
label-position="top"
|
|
|
|
|
|
label-width="140px"
|
|
|
|
|
|
:model="printParams"
|
|
|
|
|
|
>
|
|
|
|
|
|
<el-form-item label="需要打印的字符串(不建议太长):">
|
|
|
|
|
|
<el-input maxlength="30" show-word-limit style="width: 620px" v-model="printParams.sumString"/>
|
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
</el-form>
|
|
|
|
|
|
<el-button type="primary" @click="showQrOne">预览</el-button>
|
|
|
|
|
|
<el-button type="success" @click="printCode">打印</el-button>
|
|
|
|
|
|
|
|
|
|
|
|
<div style="margin-top: 10px; font-size: 0.8rem; color: coral">
|
|
|
|
|
|
您的电脑需要先安装对应的驱动程序<br>
|
|
|
|
|
|
请先点击预览再打印,请勿一次性打印太多数目<br>
|
2024-05-23 07:28:29 +08:00
|
|
|
|
仅限条码纸大小为 <span style="font-size: 1.5rem">80*60</span>mm,请在打印界面将边距设置为无
|
2024-05-14 16:31:23 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<el-scrollbar height="calc(100vh - 200px)" style="width: 100mm; margin-left: 50px">
|
|
|
|
|
|
<div id="printData" ref="printData">
|
|
|
|
|
|
<div v-for="printCode in printCodes" style="break-after: auto">
|
|
|
|
|
|
<el-row class="printCodePage">
|
|
|
|
|
|
<img style="width: 48mm; height: 50mm; margin: auto" :src="printCode.img" alt="二维码">
|
|
|
|
|
|
<div style="width: 100%; font-weight: bolder; text-align: center">
|
|
|
|
|
|
<strong>{{printCode.code}}</strong>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-row>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</el-scrollbar>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
// import 《组件名称》 from '《组件路径》 ';
|
|
|
|
|
|
import qrcode from "qrcode";
|
|
|
|
|
|
import print from "print-js";
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
|
// import 引入的组件需要注入到对象中才能使用
|
|
|
|
|
|
components: {},
|
|
|
|
|
|
props: [],
|
|
|
|
|
|
emits: [],
|
|
|
|
|
|
data() {
|
|
|
|
|
|
// 这里存放数据
|
|
|
|
|
|
return {
|
|
|
|
|
|
printParams: {
|
|
|
|
|
|
startString: '',
|
|
|
|
|
|
startNum: 0,
|
|
|
|
|
|
numberLength: 4,
|
|
|
|
|
|
stepLength: 1,
|
2024-06-05 08:08:01 +08:00
|
|
|
|
directionCode: 0,
|
2024-05-14 16:31:23 +08:00
|
|
|
|
endString: '',
|
|
|
|
|
|
codeCount: 1,
|
|
|
|
|
|
printNo: 1,
|
|
|
|
|
|
sumString: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
// 需要打印的条码集合
|
|
|
|
|
|
printCodes: []
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
// 计算属性 类似于 data 概念
|
|
|
|
|
|
computed: {},
|
|
|
|
|
|
// 监控 data 中的数据变化
|
|
|
|
|
|
watch: {},
|
|
|
|
|
|
// 方法集合
|
|
|
|
|
|
methods: {
|
|
|
|
|
|
showQr() {
|
2024-06-05 08:08:01 +08:00
|
|
|
|
let sumCode = []; // 所有的条码
|
|
|
|
|
|
let startIndex = this.printParams.startNum;
|
|
|
|
|
|
for(let i = 0; i < this.printParams.codeCount; i++) {
|
|
|
|
|
|
for(let c = 0; c < this.printParams.printNo; c++) {
|
|
|
|
|
|
let defaultCode = this.printParams.startString
|
2024-05-14 16:31:23 +08:00
|
|
|
|
+ (Number(startIndex) + Number(i * this.printParams.stepLength)).toString().padStart(this.printParams.numberLength, '0')
|
2024-06-05 08:08:01 +08:00
|
|
|
|
+ this.printParams.endString;
|
|
|
|
|
|
if(this.printParams.directionCode === 0) {
|
|
|
|
|
|
let codeData = {};
|
|
|
|
|
|
codeData.code = defaultCode;
|
|
|
|
|
|
qrcode.toDataURL(codeData.code).then(url => {
|
|
|
|
|
|
codeData.img = url;
|
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
|
codeData.img = '';
|
|
|
|
|
|
console.log(err);
|
|
|
|
|
|
})
|
|
|
|
|
|
sumCode.push(codeData);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
for(let d = 1; d <= this.printParams.directionCode; d++) {
|
|
|
|
|
|
let codeData = {};
|
|
|
|
|
|
codeData.code = defaultCode + '-' + d.toString();
|
|
|
|
|
|
qrcode.toDataURL(codeData.code).then(url => {
|
|
|
|
|
|
codeData.img = url;
|
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
|
codeData.img = '';
|
|
|
|
|
|
console.log(err);
|
|
|
|
|
|
})
|
|
|
|
|
|
sumCode.push(codeData);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-05-14 16:31:23 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
this.printCodes = sumCode
|
|
|
|
|
|
},
|
|
|
|
|
|
showQrOne() {
|
|
|
|
|
|
let sumCode = [] // 所有的条码
|
|
|
|
|
|
let codeData = {};
|
|
|
|
|
|
codeData.code = this.printParams.sumString
|
|
|
|
|
|
qrcode.toDataURL(codeData.code).then(url => {
|
|
|
|
|
|
codeData.img = url
|
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
|
codeData.img = ''
|
|
|
|
|
|
console.log(err)
|
|
|
|
|
|
})
|
|
|
|
|
|
sumCode.push(codeData)
|
|
|
|
|
|
this.printCodes = sumCode
|
|
|
|
|
|
},
|
|
|
|
|
|
printCode() {
|
|
|
|
|
|
print({
|
|
|
|
|
|
printable: this.$refs.printData,// 标签元素
|
|
|
|
|
|
type: 'html',
|
|
|
|
|
|
header: '',
|
|
|
|
|
|
targetStyles: ['*'],
|
|
|
|
|
|
font_size:'1.2rem'
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
// 组合式 API
|
|
|
|
|
|
setup() {
|
|
|
|
|
|
},
|
|
|
|
|
|
// 创建之前
|
|
|
|
|
|
beforeCreate() {
|
|
|
|
|
|
},
|
|
|
|
|
|
// 创建完成(可以访问 this 实例)
|
|
|
|
|
|
created() {
|
|
|
|
|
|
},
|
|
|
|
|
|
// 生命周期 - 挂载之前
|
|
|
|
|
|
beforeMount() {
|
|
|
|
|
|
},
|
|
|
|
|
|
// 生命周期 - 挂载完成(可以访问 DOM 元素)
|
|
|
|
|
|
mounted() {
|
|
|
|
|
|
},
|
|
|
|
|
|
// 更新之前
|
|
|
|
|
|
beforeUpdate() {
|
|
|
|
|
|
},
|
|
|
|
|
|
// 更新之后
|
|
|
|
|
|
updated() {
|
|
|
|
|
|
},
|
|
|
|
|
|
// 销毁之前
|
|
|
|
|
|
beforeUnmount() {
|
|
|
|
|
|
},
|
|
|
|
|
|
// 销毁完成
|
|
|
|
|
|
unmounted() {
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
|
|
|
|
|
|
|
$input-width: 500px;
|
|
|
|
|
|
|
|
|
|
|
|
.form-input {
|
|
|
|
|
|
width: $input-width;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
#printData {
|
|
|
|
|
|
height: 80mm;
|
|
|
|
|
|
width: 60mm;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.printCodePage {
|
|
|
|
|
|
margin: auto auto;
|
|
|
|
|
|
width: 80mm;
|
|
|
|
|
|
//border: #6b778c55 solid 1px;
|
|
|
|
|
|
//border-radius: 5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</style>
|