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

@@ -26,7 +26,7 @@ export function validateWeighing(data: any) {
return http.post(`${BASE_URL}/validateWeighing`, data) return http.post(`${BASE_URL}/validateWeighing`, data)
} }
/** @desc 校验称重信息 */ /** @desc 校验物料是否一致 */
export function vmSend(code: string) { export function vmSend(code: string) {
return http.get<WeighManageResp>(`/vm/send?msg=${code}`) return http.post<string>(`/vm/send`, { msg: code })
} }

View File

@@ -0,0 +1,25 @@
import QRCode from 'qrcode'
/**
* 生成二维码Base64图片
* @param {string} data - 要编码的二维码数据
* @param {Object} options - 二维码选项
* @returns {Promise<string>} 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 ''
}
}

View File

@@ -56,7 +56,8 @@
</td> </td>
<td class="label-cell qr-cell" rowspan="4"> <td class="label-cell qr-cell" rowspan="4">
<div class="qr-code"> <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> </div>
</td> </td>
</tr> </tr>
@@ -117,7 +118,8 @@
import { ref, reactive, nextTick, onMounted } from 'vue' import { ref, reactive, nextTick, onMounted } from 'vue'
import { Message } from '@arco-design/web-vue' import { Message } from '@arco-design/web-vue'
import { useRoute } from 'vue-router' import { useRoute } from 'vue-router'
import {getWorkOrder} from "@/apis/workOrder/workOrder"; import {getWorkOrder} from "@/apis/workOrder/workOrder"
import QRCode from 'qrcode';
const route = useRoute() const route = useRoute()
@@ -145,11 +147,29 @@ const labelData = reactive({
packingSignature: '', packingSignature: '',
inspectionSignature: '', inspectionSignature: '',
qrCodeData: '', qrCodeData: '',
qrCodeImage: '',
}) })
// 标签容器引用 // 标签容器引用
const labelContainer = ref<HTMLElement | null>(null) 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 () => { const generateLabel = async () => {
if (!formData.productionBatch) { if (!formData.productionBatch) {
@@ -174,6 +194,12 @@ const generateLabel = async () => {
String(now.getMonth() + 1).padStart(2, '0') + String(now.getMonth() + 1).padStart(2, '0') +
String(now.getDate()).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 中获取数据 // 直接从 formData 中获取数据
Object.assign(labelData, { Object.assign(labelData, {
partName: formData.materialName || '', partName: formData.materialName || '',
@@ -184,8 +210,8 @@ const generateLabel = async () => {
totalCount: formData.totalCount || '', totalCount: formData.totalCount || '',
packingSignature: '', packingSignature: '',
inspectionSignature: '', inspectionSignature: '',
//10#零件号$11#供应商代码$12#生产批次$17#数量$20#包装日期$31#唯一号$DY qrCodeData: qrCodeData,
qrCodeData: `10#${formData.materialName}$11#9DP$12#${formData.productionBatch}$17#${formData.totalCount}$20#${formattedDate2}$31#${formData.orderNo}$DY` qrCodeImage: qrCodeImage
}) })
Message.success('标签生成成功') Message.success('标签生成成功')
@@ -265,7 +291,7 @@ const printLabel = async () => {
</td> </td>
<td class="label-cell qr-cell" rowspan="4"> <td class="label-cell qr-cell" rowspan="4">
<div class="qr-code"> <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> </div>
</td> </td>
</tr> </tr>
@@ -448,6 +474,16 @@ defineOptions({ name: 'BarcodePrint' })
margin: 5px 0; 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 { .serial-number {
font-size: 12px; font-size: 12px;
margin-top: 5px; margin-top: 5px;

View File

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