This commit is contained in:
zc
2026-03-18 17:42:14 +08:00
parent 0320c8d8bc
commit feab964397
4 changed files with 69 additions and 8 deletions

View File

@@ -56,7 +56,8 @@
</td>
<td class="label-cell qr-cell" rowspan="4">
<div class="qr-code">
<img :src="`https://api.qrserver.com/v1/create-qr-code/?size=120x120&data=${encodeURIComponent(labelData.qrCodeData)}`" alt="QR Code" />
<img v-if="labelData.qrCodeImage" :src="labelData.qrCodeImage" alt="QR Code" />
<div v-else class="loading">生成二维码中...</div>
</div>
</td>
</tr>
@@ -117,7 +118,8 @@
import { ref, reactive, nextTick, onMounted } from 'vue'
import { Message } from '@arco-design/web-vue'
import { useRoute } from 'vue-router'
import {getWorkOrder} from "@/apis/workOrder/workOrder";
import {getWorkOrder} from "@/apis/workOrder/workOrder"
import QRCode from 'qrcode';
const route = useRoute()
@@ -145,11 +147,29 @@ const labelData = reactive({
packingSignature: '',
inspectionSignature: '',
qrCodeData: '',
qrCodeImage: '',
})
// 标签容器引用
const labelContainer = ref<HTMLElement | null>(null)
// 生成二维码
const generateQRCode = async (data: string) => {
try {
return await QRCode.toDataURL(data, {
width: 120,
margin: 1,
color: {
dark: '#000000',
light: '#FFFFFF'
}
})
} catch (error) {
console.error('生成二维码失败:', error)
return ''
}
}
// 生成标签
const generateLabel = async () => {
if (!formData.productionBatch) {
@@ -174,6 +194,12 @@ const generateLabel = async () => {
String(now.getMonth() + 1).padStart(2, '0') +
String(now.getDate()).padStart(2, '0');
// 计算二维码数据
const qrCodeData = `10#${formData.materialName}$11#9DP$12#${formData.productionBatch}$17#${formData.totalCount}$20#${formattedDate2}$31#${formData.orderNo}$DY`
// 生成二维码图片
const qrCodeImage = await generateQRCode(qrCodeData)
// 直接从 formData 中获取数据
Object.assign(labelData, {
partName: formData.materialName || '',
@@ -184,8 +210,8 @@ const generateLabel = async () => {
totalCount: formData.totalCount || '',
packingSignature: '',
inspectionSignature: '',
//10#零件号$11#供应商代码$12#生产批次$17#数量$20#包装日期$31#唯一号$DY
qrCodeData: `10#${formData.materialName}$11#9DP$12#${formData.productionBatch}$17#${formData.totalCount}$20#${formattedDate2}$31#${formData.orderNo}$DY`
qrCodeData: qrCodeData,
qrCodeImage: qrCodeImage
})
Message.success('标签生成成功')
@@ -265,7 +291,7 @@ const printLabel = async () => {
</td>
<td class="label-cell qr-cell" rowspan="4">
<div class="qr-code">
<img src="https://api.qrserver.com/v1/create-qr-code/?size=120x120&data=${encodeURIComponent(labelData.qrCodeData)}" alt="QR Code" />
<img src="${labelData.qrCodeImage}" alt="QR Code" />
</div>
</td>
</tr>
@@ -448,6 +474,16 @@ defineOptions({ name: 'BarcodePrint' })
margin: 5px 0;
}
.qr-code .loading {
width: 100px;
height: 100px;
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
color: #666;
}
.serial-number {
font-size: 12px;
margin-top: 5px;

View File

@@ -784,7 +784,7 @@ const handleNext = async () => {
}
// 调用后端接口获取比对结果 // todo
// const res = await vmSend(materialCode);
const res = await vmSend(materialCode);
// compareMatchResult.value = res.data || '';
compareMatchResult.value = 'success'