打印编码
This commit is contained in:
@@ -7,6 +7,7 @@ export interface FullWorkOrderResp {
|
|||||||
title: string
|
title: string
|
||||||
orderNo: string
|
orderNo: string
|
||||||
materialCode: string
|
materialCode: string
|
||||||
|
encodingPrint: string
|
||||||
materialName: string
|
materialName: string
|
||||||
batch: string
|
batch: string
|
||||||
mark: string
|
mark: string
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ export interface MaterialInfoResp {
|
|||||||
id: string
|
id: string
|
||||||
materialName: string
|
materialName: string
|
||||||
encoding: string
|
encoding: string
|
||||||
|
encodingPrint: string
|
||||||
unitWeight: string
|
unitWeight: string
|
||||||
materialSpec: string
|
materialSpec: string
|
||||||
photoUrl: string
|
photoUrl: string
|
||||||
@@ -22,6 +23,7 @@ export interface MaterialInfoResp {
|
|||||||
export interface MaterialInfoQuery {
|
export interface MaterialInfoQuery {
|
||||||
materialName: string | undefined
|
materialName: string | undefined
|
||||||
encoding: string | undefined
|
encoding: string | undefined
|
||||||
|
encodingPrint: string | undefined
|
||||||
batch: string | undefined
|
batch: string | undefined
|
||||||
mark: string | undefined
|
mark: string | undefined
|
||||||
sort: Array<string>
|
sort: Array<string>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ const BASE_URL = '/weighManage/workOrder'
|
|||||||
export interface WeighManageResp {
|
export interface WeighManageResp {
|
||||||
id: string
|
id: string
|
||||||
encoding: string
|
encoding: string
|
||||||
|
encodingPrint: string
|
||||||
materialName: string
|
materialName: string
|
||||||
materialSpec: string
|
materialSpec: string
|
||||||
unitWeight: number
|
unitWeight: number
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export interface WorkOrderResp {
|
|||||||
orderNo: string
|
orderNo: string
|
||||||
materialName: string
|
materialName: string
|
||||||
encoding: string
|
encoding: string
|
||||||
|
encodingPrint: string
|
||||||
unitWeight: string
|
unitWeight: string
|
||||||
materialSpec: string
|
materialSpec: string
|
||||||
photoUrl: string
|
photoUrl: string
|
||||||
@@ -42,6 +43,7 @@ export interface WorkOrderQuery {
|
|||||||
materialName: string | undefined
|
materialName: string | undefined
|
||||||
batch: string | undefined
|
batch: string | undefined
|
||||||
encoding: string | undefined
|
encoding: string | undefined
|
||||||
|
encodingPrint: string | undefined
|
||||||
userName: string | undefined
|
userName: string | undefined
|
||||||
carNo: string | undefined
|
carNo: string | undefined
|
||||||
startDate: string | undefined
|
startDate: string | undefined
|
||||||
|
|||||||
@@ -13,8 +13,8 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-grid-item">
|
<div class="form-grid-item">
|
||||||
<a-form-item label="物料编码">
|
<a-form-item label="打印编码(国产替代)">
|
||||||
<a-input v-model="formData.encoding" placeholder="未获取到物料编码" :disabled="true" />
|
<a-input v-model="formData.encodingPrint" placeholder="未获取到打印编码" :disabled="true" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-grid-item">
|
<div class="form-grid-item">
|
||||||
@@ -199,6 +199,7 @@ const route = useRoute()
|
|||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
workerOrderId: '',
|
workerOrderId: '',
|
||||||
encoding: '',
|
encoding: '',
|
||||||
|
encodingPrint: '',
|
||||||
materialName: '',
|
materialName: '',
|
||||||
orderNo: '',
|
orderNo: '',
|
||||||
totalCalculatedWeight: '',
|
totalCalculatedWeight: '',
|
||||||
@@ -297,7 +298,7 @@ const generateDetailLabel = async () => {
|
|||||||
for (const workOrderInfo of formData.workOrderInfos) {
|
for (const workOrderInfo of formData.workOrderInfos) {
|
||||||
// 计算二维码数据
|
// 计算二维码数据
|
||||||
const orderNo = formData.orderNo + workOrderInfo.id;
|
const orderNo = formData.orderNo + workOrderInfo.id;
|
||||||
const qrCodeData = `10#${formData.encoding}$11#9DP$12#${formData.batch}$17#${workOrderInfo.quantity}$20#${formattedDate2}$31#${orderNo}$DY`
|
const qrCodeData = `10#${formData.encodingPrint}$11#9DP$12#${formData.batch}$17#${workOrderInfo.quantity}$20#${formattedDate2}$31#${orderNo}$DY`
|
||||||
|
|
||||||
// 生成二维码图片
|
// 生成二维码图片
|
||||||
const qrCodeImage = await generateQRCode(qrCodeData)
|
const qrCodeImage = await generateQRCode(qrCodeData)
|
||||||
@@ -305,7 +306,7 @@ const generateDetailLabel = async () => {
|
|||||||
// 添加标签数据
|
// 添加标签数据
|
||||||
labelDataList.push({
|
labelDataList.push({
|
||||||
partName: formData.materialName || '',
|
partName: formData.materialName || '',
|
||||||
partNumber: formData.encoding || '',
|
partNumber: formData.encodingPrint || '',
|
||||||
totalCalculatedWeight: workOrderInfo.calculatedWeight || '',
|
totalCalculatedWeight: workOrderInfo.calculatedWeight || '',
|
||||||
totalWeight: workOrderInfo.weight || '',
|
totalWeight: workOrderInfo.weight || '',
|
||||||
productionDate: formattedDate,
|
productionDate: formattedDate,
|
||||||
@@ -353,7 +354,7 @@ const generateOverallLabel = async () => {
|
|||||||
String(now.getDate()).padStart(2, '0')
|
String(now.getDate()).padStart(2, '0')
|
||||||
|
|
||||||
// 计算二维码数据
|
// 计算二维码数据
|
||||||
const qrCodeData = `10#${formData.encoding}$11#9DP$12#${formData.batch}$17#${formData.totalCount}$20#${formattedDate2}$31#${formData.orderNo}$DY`
|
const qrCodeData = `10#${formData.encodingPrint}$11#9DP$12#${formData.batch}$17#${formData.totalCount}$20#${formattedDate2}$31#${formData.orderNo}$DY`
|
||||||
|
|
||||||
// 生成二维码图片
|
// 生成二维码图片
|
||||||
const qrCodeImage = await generateQRCode(qrCodeData)
|
const qrCodeImage = await generateQRCode(qrCodeData)
|
||||||
@@ -361,7 +362,7 @@ const generateOverallLabel = async () => {
|
|||||||
// 直接从 formData 中获取数据
|
// 直接从 formData 中获取数据
|
||||||
Object.assign(labelData, {
|
Object.assign(labelData, {
|
||||||
partName: formData.materialName || '',
|
partName: formData.materialName || '',
|
||||||
partNumber: formData.encoding || '',
|
partNumber: formData.encodingPrint || '',
|
||||||
totalCalculatedWeight: formData.totalCalculatedWeight || '',
|
totalCalculatedWeight: formData.totalCalculatedWeight || '',
|
||||||
totalWeight: formData.totalWeight || '',
|
totalWeight: formData.totalWeight || '',
|
||||||
productionDate: formattedDate,
|
productionDate: formattedDate,
|
||||||
@@ -390,6 +391,7 @@ onMounted(() => {
|
|||||||
getWorkOrder(workerOrderId).then(res => {
|
getWorkOrder(workerOrderId).then(res => {
|
||||||
if (res.code == '0') {
|
if (res.code == '0') {
|
||||||
formData.encoding = res.data.encoding
|
formData.encoding = res.data.encoding
|
||||||
|
formData.encodingPrint = res.data.encodingPrint
|
||||||
formData.materialName = res.data.materialName
|
formData.materialName = res.data.materialName
|
||||||
formData.orderNo = res.data.orderNo
|
formData.orderNo = res.data.orderNo
|
||||||
formData.batch = res.data.batch
|
formData.batch = res.data.batch
|
||||||
@@ -501,7 +503,7 @@ const printLabel = async () => {
|
|||||||
.label-row { display: flex; align-items: center; }
|
.label-row { display: flex; align-items: center; }
|
||||||
.label-field { font-size: 8pt; font-weight: bold; margin-right: 2mm; min-width: 25pt; }
|
.label-field { font-size: 8pt; font-weight: bold; margin-right: 2mm; min-width: 25pt; }
|
||||||
.label-value { font-size: 8pt; font-weight: bold; flex: 1; }
|
.label-value { font-size: 8pt; font-weight: bold; flex: 1; }
|
||||||
.qr-code img { width: 20mm; height: 20mm; margin: 1mm 0; }
|
.qr-code img { width: 23mm; height: 23mm; margin: 1mm 0; }
|
||||||
.mark-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; text-align: center; }
|
.mark-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; text-align: center; }
|
||||||
.serial-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; }
|
.serial-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; }
|
||||||
</style>
|
</style>
|
||||||
@@ -641,9 +643,9 @@ defineOptions({ name: 'print' })
|
|||||||
}
|
}
|
||||||
|
|
||||||
.qr-code img {
|
.qr-code img {
|
||||||
width: 100px;
|
width: 115px;
|
||||||
height: 100px;
|
height: 120px;
|
||||||
margin: 5px 0;
|
margin: 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.qr-code .loading {
|
.qr-code .loading {
|
||||||
|
|||||||
@@ -132,6 +132,7 @@ const weighingPageStatus = ref<'idle' | 'entering' | 'entered' | 'error'>('idle'
|
|||||||
|
|
||||||
const [form, resetForm] = useResetReactive({
|
const [form, resetForm] = useResetReactive({
|
||||||
materialCode: '',
|
materialCode: '',
|
||||||
|
encodingPrint: '',
|
||||||
imgUrl: '',
|
imgUrl: '',
|
||||||
materialName: '',
|
materialName: '',
|
||||||
batch: '',
|
batch: '',
|
||||||
@@ -178,6 +179,7 @@ const originalHandleMaterialCodeChange = async () => {
|
|||||||
form.materialName = ''
|
form.materialName = ''
|
||||||
form.inputMaterialCode2 = ''
|
form.inputMaterialCode2 = ''
|
||||||
form.batch = ''
|
form.batch = ''
|
||||||
|
form.encodingPrint = ''
|
||||||
form.count = undefined
|
form.count = undefined
|
||||||
form.mark = undefined
|
form.mark = undefined
|
||||||
|
|
||||||
@@ -205,6 +207,7 @@ const fetchMaterialData = async (code: string) => {
|
|||||||
if (res.code === '0') {
|
if (res.code === '0') {
|
||||||
// 更新表单数据
|
// 更新表单数据
|
||||||
form.materialCode = res.data?.encoding || ''
|
form.materialCode = res.data?.encoding || ''
|
||||||
|
form.encodingPrint = res.data?.encodingPrint || ''
|
||||||
form.materialName = res.data?.materialName || ''
|
form.materialName = res.data?.materialName || ''
|
||||||
form.batch = res.data?.batch || ''
|
form.batch = res.data?.batch || ''
|
||||||
}
|
}
|
||||||
@@ -213,6 +216,7 @@ const fetchMaterialData = async (code: string) => {
|
|||||||
const handleMaterialCodeChange2 = async (code: string) => {
|
const handleMaterialCodeChange2 = async (code: string) => {
|
||||||
if (!code || code?.trim()=== '') {
|
if (!code || code?.trim()=== '') {
|
||||||
form.materialCode = ''
|
form.materialCode = ''
|
||||||
|
form.encodingPrint = ''
|
||||||
form.materialName = ''
|
form.materialName = ''
|
||||||
form.batch = ''
|
form.batch = ''
|
||||||
form.mark = undefined
|
form.mark = undefined
|
||||||
@@ -227,6 +231,7 @@ const handleMaterialCodeChange2 = async (code: string) => {
|
|||||||
if (res.code === '0') {
|
if (res.code === '0') {
|
||||||
// 更新表单数据
|
// 更新表单数据
|
||||||
form.materialCode = res.data?.encoding || ''
|
form.materialCode = res.data?.encoding || ''
|
||||||
|
form.encodingPrint = res.data?.encodingPrint || ''
|
||||||
form.materialName = res.data?.materialName || ''
|
form.materialName = res.data?.materialName || ''
|
||||||
form.batch = res.data?.batch || ''
|
form.batch = res.data?.batch || ''
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ const columns = ref<TableInstanceColumns[]>([
|
|||||||
{ title: '任务工单号', dataIndex: 'orderNo', slotName: 'orderNo' },
|
{ title: '任务工单号', dataIndex: 'orderNo', slotName: 'orderNo' },
|
||||||
{ title: '物料名称', dataIndex: 'materialName', slotName: 'materialName' },
|
{ title: '物料名称', dataIndex: 'materialName', slotName: 'materialName' },
|
||||||
{ title: '物料编码', dataIndex: 'materialCode', slotName: 'materialCode' },
|
{ title: '物料编码', dataIndex: 'materialCode', slotName: 'materialCode' },
|
||||||
|
{ title: '打印编码(国产替代)', dataIndex: 'encodingPrint', slotName: 'encodingPrint' ,width: 120},
|
||||||
{ title: '批次号', dataIndex: 'batch', slotName: 'batch' },
|
{ title: '批次号', dataIndex: 'batch', slotName: 'batch' },
|
||||||
{ title: '数量', dataIndex: 'count', slotName: 'count' },
|
{ title: '数量', dataIndex: 'count', slotName: 'count' },
|
||||||
{ title: '标记号', dataIndex: 'mark', slotName: 'mark' },
|
{ title: '标记号', dataIndex: 'mark', slotName: 'mark' },
|
||||||
@@ -202,7 +203,7 @@ const onPrint = async (record: FullWorkOrderResp) => {
|
|||||||
String(now.getDate()).padStart(2, '0')
|
String(now.getDate()).padStart(2, '0')
|
||||||
|
|
||||||
// 计算二维码数据
|
// 计算二维码数据
|
||||||
const qrCodeData = `10#${record.materialCode || ''}$11#9DP$12#${record.batch || ''}$17#${record.count || ''}$20#${formattedDate2}$31#${record.orderNo || ''}$DY`
|
const qrCodeData = `10#${record.encodingPrint || record.materialCode || ''}$11#9DP$12#${record.batch || ''}$17#${record.count || ''}$20#${formattedDate2}$31#${record.orderNo || ''}$DY`
|
||||||
|
|
||||||
// 生成二维码图片
|
// 生成二维码图片
|
||||||
const qrCodeImage = await generateQRCode(qrCodeData)
|
const qrCodeImage = await generateQRCode(qrCodeData)
|
||||||
@@ -227,7 +228,7 @@ const onPrint = async (record: FullWorkOrderResp) => {
|
|||||||
.label-row { display: flex; align-items: center; }
|
.label-row { display: flex; align-items: center; }
|
||||||
.label-field { font-size: 8pt; font-weight: bold; margin-right: 2mm; min-width: 25pt; }
|
.label-field { font-size: 8pt; font-weight: bold; margin-right: 2mm; min-width: 25pt; }
|
||||||
.label-value { font-size: 8pt; font-weight: bold; flex: 1; }
|
.label-value { font-size: 8pt; font-weight: bold; flex: 1; }
|
||||||
.qr-code img { width: 20mm; height: 20mm; margin: 1mm 0; }
|
.qr-code img { width: 23mm; height: 23mm; margin: 1mm 0; }
|
||||||
.mark-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; text-align: center; }
|
.mark-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; text-align: center; }
|
||||||
.serial-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; }
|
.serial-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; }
|
||||||
</style>
|
</style>
|
||||||
@@ -260,7 +261,7 @@ const onPrint = async (record: FullWorkOrderResp) => {
|
|||||||
<td class="label-cell">
|
<td class="label-cell">
|
||||||
<div class="label-row">
|
<div class="label-row">
|
||||||
<div class="label-field">零件号</div>
|
<div class="label-field">零件号</div>
|
||||||
<div class="label-value">${record.materialCode || ''}</div>
|
<div class="label-value">${record.encodingPrint || record.materialCode || ''}</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td class="label-cell">
|
<td class="label-cell">
|
||||||
|
|||||||
@@ -59,6 +59,13 @@ const columns: ColumnItem[] = reactive([
|
|||||||
span: 24,
|
span: 24,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '打印编码(国产替代)',
|
||||||
|
field: 'encodingPrint',
|
||||||
|
type: 'input',
|
||||||
|
span: 24,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: '物料单位重量(g)',
|
label: '物料单位重量(g)',
|
||||||
field: 'unitWeight',
|
field: 'unitWeight',
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
<template #toolbar-left>
|
<template #toolbar-left>
|
||||||
<a-input-search v-model="queryForm.materialName" placeholder="请输入物料名称" allow-clear @search="search" />
|
<a-input-search v-model="queryForm.materialName" placeholder="请输入物料名称" allow-clear @search="search" />
|
||||||
<a-input-search v-model="queryForm.encoding" placeholder="请输入物料编码" allow-clear @search="search" />
|
<a-input-search v-model="queryForm.encoding" placeholder="请输入物料编码" allow-clear @search="search" />
|
||||||
|
<a-input-search v-model="queryForm.encodingPrint" placeholder="请输入打印编码(国产替代)" allow-clear @search="search" style="width: 240px"/>
|
||||||
<a-input-search v-model="queryForm.batch" placeholder="请输入批次" allow-clear @search="search" />
|
<a-input-search v-model="queryForm.batch" placeholder="请输入批次" allow-clear @search="search" />
|
||||||
<a-button @click="reset">
|
<a-button @click="reset">
|
||||||
<template #icon><icon-refresh /></template>
|
<template #icon><icon-refresh /></template>
|
||||||
@@ -59,9 +60,6 @@
|
|||||||
:src="record.photoUrl"
|
:src="record.photoUrl"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
<!-- <template #lightLevel="{ record }">-->
|
|
||||||
<!-- <GiCellTag :value="record.lightLevel" :dict="light_level" />-->
|
|
||||||
<!-- </template>-->
|
|
||||||
|
|
||||||
<template #action="{ record }">
|
<template #action="{ record }">
|
||||||
<a-space>
|
<a-space>
|
||||||
@@ -100,12 +98,6 @@ import {Message} from "@arco-design/web-vue";
|
|||||||
|
|
||||||
defineOptions({ name: 'MaterialInfo' })
|
defineOptions({ name: 'MaterialInfo' })
|
||||||
|
|
||||||
// const { light_level } = useDict('light_level')
|
|
||||||
|
|
||||||
interface MaterialInfoRespWithStatus extends MaterialInfoResp {
|
|
||||||
photoLoadError?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
const queryForm = reactive<MaterialInfoQuery>({
|
const queryForm = reactive<MaterialInfoQuery>({
|
||||||
materialName: undefined,
|
materialName: undefined,
|
||||||
encoding: undefined,
|
encoding: undefined,
|
||||||
@@ -128,14 +120,15 @@ const {
|
|||||||
const columns = ref<TableInstanceColumns[]>([
|
const columns = ref<TableInstanceColumns[]>([
|
||||||
{ title: '物料名称', dataIndex: 'materialName', slotName: 'materialName' },
|
{ title: '物料名称', dataIndex: 'materialName', slotName: 'materialName' },
|
||||||
{ title: '物料编码', dataIndex: 'encoding', slotName: 'encoding' },
|
{ title: '物料编码', dataIndex: 'encoding', slotName: 'encoding' },
|
||||||
|
{ title: '打印编码(国产替代)', dataIndex: 'encodingPrint', slotName: 'encodingPrint' },
|
||||||
|
{ title: '物料照片', dataIndex: 'photoUrl', slotName: 'photoUrl', width: 120, align: 'center' },
|
||||||
{ title: '物料单位重量(g)', dataIndex: 'unitWeight', slotName: 'unitWeight' },
|
{ title: '物料单位重量(g)', dataIndex: 'unitWeight', slotName: 'unitWeight' },
|
||||||
{ title: '物料品类', dataIndex: 'typeName' },
|
{ title: '物料品类', dataIndex: 'typeName' },
|
||||||
{ title: '批次', dataIndex: 'batch' },
|
{ title: '批次', dataIndex: 'batch' },
|
||||||
{ title: '物料直径', dataIndex: 'materialSpec', slotName: 'materialSpec', show: false },
|
{ title: '物料直径', dataIndex: 'materialSpec', slotName: 'materialSpec', show: false },
|
||||||
{ title: '物料颜色', dataIndex: 'color', slotName: 'color', show: false },
|
{ title: '物料颜色', dataIndex: 'color', slotName: 'color', show: false },
|
||||||
{ title: '物料流程', dataIndex: 'materialProcess', slotName: 'materialProcess' },
|
{ title: '物料流程', dataIndex: 'materialProcess', slotName: 'materialProcess', show: false },
|
||||||
{ title: '灯光等级', dataIndex: 'lightLevel', slotName: 'lightLevel' },
|
{ title: '灯光等级', dataIndex: 'lightLevel', slotName: 'lightLevel', show: false },
|
||||||
{ title: '物料照片', dataIndex: 'photoUrl', slotName: 'photoUrl', width: 120, align: 'center' },
|
|
||||||
{ title: '创建人', dataIndex: 'createUserString', slotName: 'createUser' },
|
{ title: '创建人', dataIndex: 'createUserString', slotName: 'createUser' },
|
||||||
{ title: '创建时间', dataIndex: 'createTime', slotName: 'createTime' },
|
{ title: '创建时间', dataIndex: 'createTime', slotName: 'createTime' },
|
||||||
{
|
{
|
||||||
@@ -177,17 +170,6 @@ const onExport = () => {
|
|||||||
useDownload(() => exportMaterialInfo(queryForm))
|
useDownload(() => exportMaterialInfo(queryForm))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 【修改点】图片加载处理逻辑
|
|
||||||
const handleImgLoad = (record: MaterialInfoRespWithStatus) => {
|
|
||||||
record.photoLoadError = false
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleImgError = (record: MaterialInfoRespWithStatus, e: Event) => {
|
|
||||||
// 标记为加载错误,触发模板渲染 "照片异常"
|
|
||||||
record.photoLoadError = true
|
|
||||||
console.warn(`物料照片加载失败: ${record.photoUrl}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
const MaterialInfoAddModalRef = ref<InstanceType<typeof MaterialInfoAddModal>>()
|
const MaterialInfoAddModalRef = ref<InstanceType<typeof MaterialInfoAddModal>>()
|
||||||
const onAdd = () => {
|
const onAdd = () => {
|
||||||
MaterialInfoAddModalRef.value?.onAdd()
|
MaterialInfoAddModalRef.value?.onAdd()
|
||||||
|
|||||||
@@ -10,8 +10,8 @@
|
|||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-grid-item">
|
<div class="form-grid-item">
|
||||||
<a-form-item label="物料编码">
|
<a-form-item label="打印编码(国产替代)">
|
||||||
<a-input v-model="formData.encoding" placeholder="未获取到物料编码" :disabled="true" />
|
<a-input v-model="formData.encodingPrint" placeholder="未获取到打印编码" :disabled="true" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-grid-item">
|
<div class="form-grid-item">
|
||||||
@@ -201,6 +201,7 @@ const props = withDefaults(defineProps<LabelPrintProps>(), {
|
|||||||
const formData = reactive({
|
const formData = reactive({
|
||||||
workerOrderId: '',
|
workerOrderId: '',
|
||||||
encoding: '',
|
encoding: '',
|
||||||
|
encodingPrint: '',
|
||||||
materialName: '',
|
materialName: '',
|
||||||
orderNo: '',
|
orderNo: '',
|
||||||
totalCalculatedWeight: '',
|
totalCalculatedWeight: '',
|
||||||
@@ -255,6 +256,7 @@ const fetchWorkOrderData = async (workerOrderId: string) => {
|
|||||||
const res = await getWorkOrder(workerOrderId)
|
const res = await getWorkOrder(workerOrderId)
|
||||||
if (res.code == '0') {
|
if (res.code == '0') {
|
||||||
formData.encoding = res.data.encoding
|
formData.encoding = res.data.encoding
|
||||||
|
formData.encodingPrint = res.data.encodingPrint
|
||||||
formData.materialName = res.data.materialName
|
formData.materialName = res.data.materialName
|
||||||
formData.orderNo = res.data.orderNo
|
formData.orderNo = res.data.orderNo
|
||||||
formData.batch = res.data.batch
|
formData.batch = res.data.batch
|
||||||
@@ -319,14 +321,14 @@ const generateDetailLabel = async () => {
|
|||||||
|
|
||||||
for (const workOrderInfo of formData.workOrderInfos) {
|
for (const workOrderInfo of formData.workOrderInfos) {
|
||||||
const orderNo = formData.orderNo + workOrderInfo.id;
|
const orderNo = formData.orderNo + workOrderInfo.id;
|
||||||
const qrCodeData = `10#${formData.encoding}$11#9DP$12#${formData.batch}$17#${workOrderInfo.quantity}$20#${formattedDate2}$31#${orderNo}$DY`
|
const qrCodeData = `10#${formData.encodingPrint}$11#9DP$12#${formData.batch}$17#${workOrderInfo.quantity}$20#${formattedDate2}$31#${orderNo}$DY`
|
||||||
|
|
||||||
const qrCodeImage = await generateQRCode(qrCodeData)
|
const qrCodeImage = await generateQRCode(qrCodeData)
|
||||||
console.log("========", workOrderInfo.mark);
|
console.log("========", workOrderInfo.mark);
|
||||||
|
|
||||||
labelDataList.push({
|
labelDataList.push({
|
||||||
partName: formData.materialName || '',
|
partName: formData.materialName || '',
|
||||||
partNumber: formData.encoding || '',
|
partNumber: formData.encodingPrint || '',
|
||||||
totalCalculatedWeight: workOrderInfo.calculatedWeight || '',
|
totalCalculatedWeight: workOrderInfo.calculatedWeight || '',
|
||||||
totalWeight: workOrderInfo.weight || '',
|
totalWeight: workOrderInfo.weight || '',
|
||||||
productionDate: formattedDate,
|
productionDate: formattedDate,
|
||||||
@@ -370,13 +372,13 @@ const generateOverallLabel = 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.encoding}$11#9DP$12#${formData.batch}$17#${formData.totalCount}$20#${formattedDate2}$31#${formData.orderNo}$DY`
|
const qrCodeData = `10#${formData.encodingPrint}$11#9DP$12#${formData.batch}$17#${formData.totalCount}$20#${formattedDate2}$31#${formData.orderNo}$DY`
|
||||||
|
|
||||||
const qrCodeImage = await generateQRCode(qrCodeData)
|
const qrCodeImage = await generateQRCode(qrCodeData)
|
||||||
|
|
||||||
Object.assign(labelData, {
|
Object.assign(labelData, {
|
||||||
partName: formData.materialName || '',
|
partName: formData.materialName || '',
|
||||||
partNumber: formData.encoding || '',
|
partNumber: formData.encodingPrint || '',
|
||||||
totalCalculatedWeight: formData.totalCalculatedWeight || '',
|
totalCalculatedWeight: formData.totalCalculatedWeight || '',
|
||||||
totalWeight: formData.totalWeight || '',
|
totalWeight: formData.totalWeight || '',
|
||||||
productionDate: formattedDate,
|
productionDate: formattedDate,
|
||||||
@@ -486,7 +488,7 @@ const printLabel = async () => {
|
|||||||
.label-row { display: flex; align-items: center; }
|
.label-row { display: flex; align-items: center; }
|
||||||
.label-field { font-size: 8pt; font-weight: bold; margin-right: 2mm; min-width: 25pt; }
|
.label-field { font-size: 8pt; font-weight: bold; margin-right: 2mm; min-width: 25pt; }
|
||||||
.label-value { font-size: 8pt; font-weight: bold; flex: 1; }
|
.label-value { font-size: 8pt; font-weight: bold; flex: 1; }
|
||||||
.qr-code img { width: 20mm; height: 20mm; margin: 1mm 0; }
|
.qr-code img { width: 23mm; height: 23mm; margin: 1mm 0; }
|
||||||
.mark-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; text-align: center; }
|
.mark-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; text-align: center; }
|
||||||
.serial-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; }
|
.serial-number { font-size: 8pt; font-weight: bold; margin-top: 1mm; }
|
||||||
</style>
|
</style>
|
||||||
@@ -647,9 +649,9 @@ defineOptions({ name: 'LabelPrint' })
|
|||||||
}
|
}
|
||||||
|
|
||||||
.qr-code img {
|
.qr-code img {
|
||||||
width: 100px;
|
width: 115px;
|
||||||
height: 100px;
|
height: 120px;
|
||||||
margin: 5px 0;
|
margin: 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.loading {
|
.loading {
|
||||||
|
|||||||
@@ -295,6 +295,7 @@ const formData = reactive({
|
|||||||
inputMaterialCode2: '', // 输入的手动物料编码
|
inputMaterialCode2: '', // 输入的手动物料编码
|
||||||
id: '', // 物料ID
|
id: '', // 物料ID
|
||||||
encoding: '', // 物料编码
|
encoding: '', // 物料编码
|
||||||
|
encodingPrint: '', // 打印编码(国产替代)
|
||||||
materialName: '', // 物料名称
|
materialName: '', // 物料名称
|
||||||
materialSpec: '', // 物料直径
|
materialSpec: '', // 物料直径
|
||||||
batch: '', // 批次
|
batch: '', // 批次
|
||||||
@@ -544,6 +545,7 @@ const workOrderResp = ref<WorkOrderResp>({
|
|||||||
orderNo: '',
|
orderNo: '',
|
||||||
materialName: '',
|
materialName: '',
|
||||||
encoding: '',
|
encoding: '',
|
||||||
|
encodingPrint: '',
|
||||||
unitWeight: '',
|
unitWeight: '',
|
||||||
materialSpec: '',
|
materialSpec: '',
|
||||||
photoUrl: '',
|
photoUrl: '',
|
||||||
@@ -561,8 +563,8 @@ const workOrderResp = ref<WorkOrderResp>({
|
|||||||
|
|
||||||
// 称重登记页面数据
|
// 称重登记页面数据
|
||||||
const inputQuantity = ref()
|
const inputQuantity = ref()
|
||||||
const calculateNumber = ref()
|
|
||||||
// todo
|
// todo
|
||||||
|
const calculateNumber = ref()
|
||||||
const ahDeviceWeight = ref('')
|
const ahDeviceWeight = ref('')
|
||||||
const calculatedWeight = ref('')
|
const calculatedWeight = ref('')
|
||||||
const weighingCount = ref(1)
|
const weighingCount = ref(1)
|
||||||
@@ -606,6 +608,7 @@ const originalHandleMaterialCodeChange = async () => {
|
|||||||
// 无论是否有输入,先重置所有物料相关字段,确保新数据能完全覆盖旧数据
|
// 无论是否有输入,先重置所有物料相关字段,确保新数据能完全覆盖旧数据
|
||||||
formData.id = ''
|
formData.id = ''
|
||||||
formData.encoding = ''
|
formData.encoding = ''
|
||||||
|
formData.encodingPrint = ''
|
||||||
formData.materialName = ''
|
formData.materialName = ''
|
||||||
formData.materialSpec = ''
|
formData.materialSpec = ''
|
||||||
formData.unitWeight = 0
|
formData.unitWeight = 0
|
||||||
@@ -667,6 +670,7 @@ const fetchMaterialData = async (code: string) => {
|
|||||||
if (res.code === '0') {
|
if (res.code === '0') {
|
||||||
// 更新表单数据
|
// 更新表单数据
|
||||||
formData.id = res.data?.id || ''
|
formData.id = res.data?.id || ''
|
||||||
|
formData.encodingPrint = res.data?.encodingPrint || ''
|
||||||
formData.encoding = res.data?.encoding || ''
|
formData.encoding = res.data?.encoding || ''
|
||||||
formData.materialName = res.data?.materialName || ''
|
formData.materialName = res.data?.materialName || ''
|
||||||
formData.materialSpec = res.data?.materialSpec || ''
|
formData.materialSpec = res.data?.materialSpec || ''
|
||||||
@@ -686,6 +690,7 @@ const handleMaterialCodeChange2 = async (code: string) => {
|
|||||||
if (!code || code?.trim()=== '') {
|
if (!code || code?.trim()=== '') {
|
||||||
formData.id = '';
|
formData.id = '';
|
||||||
formData.encoding = '';
|
formData.encoding = '';
|
||||||
|
formData.encodingPrint = '';
|
||||||
formData.materialName = '';
|
formData.materialName = '';
|
||||||
formData.materialSpec = '';
|
formData.materialSpec = '';
|
||||||
formData.batch = '';
|
formData.batch = '';
|
||||||
@@ -700,6 +705,7 @@ const handleMaterialCodeChange2 = async (code: string) => {
|
|||||||
if (res.code === '0') {
|
if (res.code === '0') {
|
||||||
// 更新表单数据
|
// 更新表单数据
|
||||||
formData.id = res.data?.id || ''
|
formData.id = res.data?.id || ''
|
||||||
|
formData.encodingPrint = res.data?.encodingPrint || ''
|
||||||
formData.encoding = res.data?.encoding || ''
|
formData.encoding = res.data?.encoding || ''
|
||||||
formData.materialName = res.data?.materialName || ''
|
formData.materialName = res.data?.materialName || ''
|
||||||
formData.materialSpec = res.data?.materialSpec || ''
|
formData.materialSpec = res.data?.materialSpec || ''
|
||||||
@@ -724,6 +730,7 @@ const handleNext = async () => {
|
|||||||
// 准备工作订单数据
|
// 准备工作订单数据
|
||||||
const workOrderData = {
|
const workOrderData = {
|
||||||
materialId: formData.id,
|
materialId: formData.id,
|
||||||
|
encodingPrint: formData.encodingPrint,
|
||||||
workOrderInfos: weighingList.value,
|
workOrderInfos: weighingList.value,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -879,6 +886,7 @@ const handleConfirm = async () => {
|
|||||||
key: (weighingList.value.length + 1).toString(),
|
key: (weighingList.value.length + 1).toString(),
|
||||||
weightTime: weighingCount.value,
|
weightTime: weighingCount.value,
|
||||||
materialId: formData.id,
|
materialId: formData.id,
|
||||||
|
encodingPrint: formData.encodingPrint,
|
||||||
quantity: inputQuantity.value,
|
quantity: inputQuantity.value,
|
||||||
weight: ahDeviceWeight.value,
|
weight: ahDeviceWeight.value,
|
||||||
mark: formData.mark,
|
mark: formData.mark,
|
||||||
|
|||||||
@@ -169,17 +169,18 @@ const processColumns = (columns: TableInstanceColumns[]): TableInstanceColumns[]
|
|||||||
// 定义列配置,使用工具函数处理
|
// 定义列配置,使用工具函数处理
|
||||||
const columns = ref<TableInstanceColumns[]>(processColumns([
|
const columns = ref<TableInstanceColumns[]>(processColumns([
|
||||||
{ title: '标题', dataIndex: 'title', width: 180 },
|
{ title: '标题', dataIndex: 'title', width: 180 },
|
||||||
{ title: '创建人', dataIndex: 'createUserString' },
|
|
||||||
{ title: '人员卡号', dataIndex: 'cardNo' },
|
|
||||||
{ title: '任务工单号', dataIndex: 'orderNo' },
|
{ title: '任务工单号', dataIndex: 'orderNo' },
|
||||||
{ title: '批次', dataIndex: 'batch' },
|
{ title: '批次', dataIndex: 'batch' },
|
||||||
{ title: '物料图片', dataIndex: 'photoUrl', slotName: 'photoUrl', minWidth: 180, ellipsis: true, tooltip: true },
|
{ title: '物料图片', dataIndex: 'photoUrl', slotName: 'photoUrl', minWidth: 180, ellipsis: true, tooltip: true },
|
||||||
{ title: '物料名称', dataIndex: 'materialName' },
|
{ title: '物料名称', dataIndex: 'materialName' },
|
||||||
{ title: '物料编码', dataIndex: 'encoding' },
|
{ title: '物料编码', dataIndex: 'encoding' },
|
||||||
|
{ title: '打印编码(国产替代)', dataIndex: 'encodingPrint',width: 180 },
|
||||||
{ title: '单位克重', dataIndex: 'unitWeight' ,slotName: 'unitWeight'},
|
{ title: '单位克重', dataIndex: 'unitWeight' ,slotName: 'unitWeight'},
|
||||||
{ title: '总数量', dataIndex: 'totalCount' },
|
{ title: '总数量', dataIndex: 'totalCount' },
|
||||||
{ title: '标准总重量', dataIndex: 'totalCalculatedWeight' ,slotName: 'totalCalculatedWeight'},
|
{ title: '标准总重量', dataIndex: 'totalCalculatedWeight' ,slotName: 'totalCalculatedWeight'},
|
||||||
{ title: '实际总重量', dataIndex: 'totalWeight' ,slotName: 'totalWeight'},
|
{ title: '实际总重量', dataIndex: 'totalWeight' ,slotName: 'totalWeight'},
|
||||||
|
{ title: '人员卡号', dataIndex: 'cardNo' },
|
||||||
|
{ title: '创建人', dataIndex: 'createUserString' },
|
||||||
{ title: '创建时间', dataIndex: 'createTime', width: 180 },
|
{ title: '创建时间', dataIndex: 'createTime', width: 180 },
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
|
|||||||
Reference in New Issue
Block a user