Browse Source

ifs库存初始化

master
han\hanst 3 months ago
parent
commit
b2137bf3b1
  1. 37
      src/utils/zplGenerator.js
  2. 31
      src/views/modules/labelSetting/components/PropertyForm.vue
  3. 17
      src/views/modules/warehouse/ifsInventoryInit.vue
  4. 17
      src/views/modules/warehouse/labelQuery.vue

37
src/utils/zplGenerator.js

@ -441,6 +441,7 @@ export class ZPLGenerator {
generateQRCodeZPL(element, x, y) { generateQRCodeZPL(element, x, y) {
const orientation = this.config.qrcodeOrientation const orientation = this.config.qrcodeOrientation
const data = element.data || '' const data = element.data || ''
const showContent = element.showContent !== undefined ? element.showContent : false
// 将毫米转换为ZPL尺寸单位,使用精确的DPI转换公式 // 将毫米转换为ZPL尺寸单位,使用精确的DPI转换公式
// 二维码的尺寸参数是模块大小,通常1-10 // 二维码的尺寸参数是模块大小,通常1-10
@ -459,15 +460,43 @@ export class ZPLGenerator {
size = Math.max(size, 2) // 短数据使用较小尺寸 size = Math.max(size, 2) // 短数据使用较小尺寸
} }
// 尝试使用更明确的二维码格式
// 对于长数字内容,使用数字模式可能更有效
let zpl = ''
// 生成二维码
if (/^\d+$/.test(data)) { if (/^\d+$/.test(data)) {
// 纯数字内容,使用数字模式 // 纯数字内容,使用数字模式
return `^FO${x},${y}^BQ${orientation},2,${size}^FDMN,${data}^FS`
zpl = `^FO${x},${y}^BQ${orientation},2,${size}^FDMN,${data}^FS`
} else { } else {
// 混合内容,使用自动模式 // 混合内容,使用自动模式
return `^FO${x},${y}^BQ${orientation},2,${size}^FDMA,${data}^FS`
zpl = `^FO${x},${y}^BQ${orientation},2,${size}^FDMA,${data}^FS`
}
// 如果需要显示明文,在二维码下方添加文本
if (showContent && data) {
// 计算文本位置:二维码下方,居中对齐
const textY = y + sizeInDots + 10 // 二维码下方留10个点的间距
const fontSize = 15 // 根据二维码大小调整字体大小
// 设置中文字体支持
zpl += `\n^CI28^CWJ,E:ARIAL.TTF^CFJ,${fontSize}`
// 计算文本宽度以实现居中对齐
const estimatedTextWidth = this.estimateTextWidth(data, fontSize)
let textX = x + Math.round((sizeInDots - estimatedTextWidth) / 2)
textX = Math.max(x, textX) // 确保不超出左边界
// 如果文本太长,使用多行显示
if (data.length > 20) {
const lineWidth = Math.max(sizeInDots, estimatedTextWidth)
const lineRows = Math.min(3, Math.ceil(data.length / 20)) // 最多3行
zpl += `\n^FO${x},${textY}^FB${lineWidth},${lineRows},0,C^CFJ,${fontSize}^FD${data}^FS`
} else {
// 单行文本
zpl += `\n^FO${textX},${textY}^FD${data}^FS`
}
} }
return zpl
} }

31
src/views/modules/labelSetting/components/PropertyForm.vue

@ -396,17 +396,26 @@
<el-form-item label="不显示规则(如:XXX=N)" class="form-item-half"> <el-form-item label="不显示规则(如:XXX=N)" class="form-item-half">
<el-input v-model="element.showElement" controls-position="right" size="mini"/> <el-input v-model="element.showElement" controls-position="right" size="mini"/>
</el-form-item> </el-form-item>
<el-form-item label="尺寸(mm)">
<el-input
v-model="element.height"
:min="3"
:max="50"
:step="0.5"
controls-position="right"
size="mini"
@change="validateQRSize"
/>
</el-form-item>
<div class="form-row">
<el-form-item label="尺寸(mm)" class="form-item-half">
<el-input
v-model="element.height"
:min="3"
:max="50"
:step="0.5"
controls-position="right"
size="mini"
@change="validateQRSize"
/>
</el-form-item>
<el-form-item label="明文显示" class="form-item-half">
<el-radio-group v-model="element.showContent" size="mini">
<el-radio :label="true"></el-radio>
<el-radio :label="false"></el-radio>
</el-radio-group>
</el-form-item>
</div>
<div class="form-tip"> <div class="form-tip">
<div v-if="element.data && element.data.length > 200" class="tip-warning"> <div v-if="element.data && element.data.length > 200" class="tip-warning">

17
src/views/modules/warehouse/ifsInventoryInit.vue

@ -336,9 +336,15 @@ export default {
type: 'success', type: 'success',
duration: 1500 duration: 1500
}) })
let printLabelType;
if (this.createHuForm.partNo && this.createHuForm.partNo.startsWith("80")) {
printLabelType = '库存成品标签';
} else {
printLabelType = 'BIL标签';
}
// //
this.printHandlingUnits(data.unitIds)
this.printHandlingUnits(data.unitIds,printLabelType)
this.createHuVisible = false this.createHuVisible = false
this.getDataList() this.getDataList()
@ -353,7 +359,7 @@ export default {
}) })
}, },
// HandlingUnit // HandlingUnit
async printHandlingUnits (unitIds) {
async printHandlingUnits (unitIds,printLabelType) {
if (!unitIds || unitIds.length === 0) { if (!unitIds || unitIds.length === 0) {
return return
} }
@ -361,7 +367,7 @@ export default {
try { try {
// HandlingUnit // HandlingUnit
for (const unitId of unitIds) { for (const unitId of unitIds) {
await this.printViaServer(unitId)
await this.printViaServer(unitId,printLabelType)
} }
this.$message({ this.$message({
message: `成功打印 ${unitIds.length} 个HandlingUnit标签`, message: `成功打印 ${unitIds.length} 个HandlingUnit标签`,
@ -373,7 +379,7 @@ export default {
} }
}, },
// //
async printViaServer(unitId) {
async printViaServer(unitId,printLabelType) {
try { try {
const printRequest = { const printRequest = {
reportId: this.reportId, reportId: this.reportId,
@ -384,7 +390,8 @@ export default {
userId: localStorage.getItem('userName'), userId: localStorage.getItem('userName'),
username: localStorage.getItem('userName'), username: localStorage.getItem('userName'),
site: localStorage.getItem('site'), site: localStorage.getItem('site'),
unitId: unitId
unitId: unitId,
labelType: printLabelType
} }
const { data } = await printLabel(printRequest) const { data } = await printLabel(printRequest)
if (data.code === 200) { if (data.code === 200) {

17
src/views/modules/warehouse/labelQuery.vue

@ -69,13 +69,13 @@
<el-table-column label="操作" min-width="100" fixed="right"> <el-table-column label="操作" min-width="100" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<a <a
v-if="scope.row.inStockFlag === 'X'"
@click="reprintLabel(scope.row)" @click="reprintLabel(scope.row)"
type="primary" type="primary"
:loading="scope.row.printing"> :loading="scope.row.printing">
重打标签 重打标签
</a> </a>
<span v-else style="color: #ccc;">-</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -182,19 +182,18 @@ export default {
// //
async reprintLabel(row) { async reprintLabel(row) {
//
if (row.inStockFlag !== 'X') {
this.$message.warning('只有未入库状态的记录才能重打标签')
return
}
try { try {
// //
this.printLoading = true this.printLoading = true
this.loadingText = `${row.unitId} 打印中...` this.loadingText = `${row.unitId} 打印中...`
// //
this.$set(row, 'printing', true) this.$set(row, 'printing', true)
let printLabelType;
if (row.partNo && row.partNo.startsWith("80")) {
printLabelType = '库存成品标签';
} else {
printLabelType = 'BIL标签';
}
const printRequest = { const printRequest = {
reportId: this.reportId, reportId: this.reportId,
zplCode: this.zplCode, zplCode: this.zplCode,

Loading…
Cancel
Save