diff --git a/src/apis/weightManage/weightManage.ts b/src/apis/weightManage/weightManage.ts index b33f23e..a6ac6d7 100644 --- a/src/apis/weightManage/weightManage.ts +++ b/src/apis/weightManage/weightManage.ts @@ -26,7 +26,7 @@ export function validateWeighing(data: any) { return http.post(`${BASE_URL}/validateWeighing`, data) } -/** @desc 校验称重信息 */ +/** @desc 校验物料是否一致 */ export function vmSend(code: string) { - return http.get(`/vm/send?msg=${code}`) + return http.post(`/vm/send`, { msg: code }) } diff --git a/src/utils/qrCodeGenerator.js b/src/utils/qrCodeGenerator.js new file mode 100644 index 0000000..2d50dc9 --- /dev/null +++ b/src/utils/qrCodeGenerator.js @@ -0,0 +1,25 @@ +import QRCode from 'qrcode' + +/** + * 生成二维码Base64图片 + * @param {string} data - 要编码的二维码数据 + * @param {Object} options - 二维码选项 + * @returns {Promise} Base64编码的二维码图片 + */ +export async function generateQRCode(data, options = {}) { + try { + const defaultOptions = { + width: 120, + margin: 1, + color: { + dark: '#000000', + light: '#FFFFFF', + }, + } + const finalOptions = { ...defaultOptions, ...options } + return await QRCode.toDataURL(data, finalOptions) + } catch (error) { + console.error('生成二维码失败:', error) + return '' + } +} diff --git a/src/views/barcodePrint/index.vue b/src/views/barcodePrint/index.vue index e507241..336ba6c 100644 --- a/src/views/barcodePrint/index.vue +++ b/src/views/barcodePrint/index.vue @@ -56,7 +56,8 @@
- QR Code + QR Code +
生成二维码中...
@@ -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(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 () => {
- QR Code + QR Code
@@ -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; diff --git a/src/views/weightManage/index.vue b/src/views/weightManage/index.vue index bcbe8e9..f4d1aa6 100644 --- a/src/views/weightManage/index.vue +++ b/src/views/weightManage/index.vue @@ -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'