优化
This commit is contained in:
@@ -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 })
|
||||||
}
|
}
|
||||||
|
|||||||
25
src/utils/qrCodeGenerator.js
Normal file
25
src/utils/qrCodeGenerator.js
Normal 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 ''
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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'
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user