Browse Source

20241022

dev
qiezi 1 year ago
parent
commit
43e82a3b8e
  1. 9
      src/api/label/LogisticLabelRecord.js
  2. 7
      src/printFormat/RF_RFID.js
  3. 6
      src/printFormat/alphaHardTagPrintFormat.js
  4. 6
      src/printFormat/antenna.js
  5. 78
      src/printFormat/logisticLabel.js
  6. 2
      src/printFormat/roll_label.js
  7. 1
      src/views/modules/label/QrCode.vue
  8. 2
      src/views/modules/label/format.vue
  9. 418
      src/views/modules/label/logisticLabelRecord.vue
  10. 176
      src/views/modules/label/printer.vue
  11. 18
      src/views/modules/label/record.vue
  12. 2
      src/views/modules/label/roll.vue
  13. 1
      src/views/modules/label/userDefault.vue

9
src/api/label/LogisticLabelRecord.js

@ -0,0 +1,9 @@
import {createAPI} from '../../utils/httpRequest'
export const saveLogisticLabelRecord = (data) => createAPI('/print/logistic/save', 'post', data)
export const queryLogisticLabelRecord = (data) => createAPI(`/print/logistic/${data.no}/${data.size}`, 'post', data)
export const queryLogisticLabelRecordPrinter = (data) => createAPI('/label/format/user/default/user/logistic', 'post', data)

7
src/printFormat/RF_RFID.js

@ -18,14 +18,15 @@ export const printRF_RFIDLabel = (printList, icons, printerName) => {
LODOP.SET_PRINT_MODE('CUSTOM_TASK_NAME', '多条页')//为每个打印单独设置任务名
for (let i = 0; i < printList.length; i++) {
let row = printList[i]
console.log(row.qrCode)
console.log(row)
//如果打印正常的标签
LODOP.NewPage();
LODOP.NewPageA();
LODOP.SET_PRINTER_INDEXA(printerName)
LODOP.SET_PRINT_PAGESIZE(0,1100,512,"");
// LODOP.ADD_PRINT_BARCODE(12,33,115,80,"QRCode",row.qrCode);
// LODOP.SET_PRINT_STYLEA(0,"FontSize",7);
LODOP.ADD_PRINT_IMAGE(5,33,"21mm","21mm",`<img src="${row.qrCode}" style="width: 21mm;height: 21mm;object-fit: contain"/>`);
LODOP.ADD_PRINT_IMAGE(-5,20,"26mm","26mm",`<img src="${row.qrCode}" style="width: 26mm;height: 26mm;object-fit: contain"/>`); LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",100);
LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",100);
LODOP.ADD_PRINT_IMAGE(4,255,90,16,"<img src=\"data:image/png;base64," + ckpLogo + "\"/>");
LODOP.SET_PRINT_STYLEA(0,"Stretch",2);
LODOP.SET_PRINT_STYLEA(0,"Alignment",3);

6
src/printFormat/alphaHardTagPrintFormat.js

@ -19,14 +19,14 @@ export function printAlphaHardTagLabel (printList, icons, printerName) {
//批量循环打印
for(let i = 0; i < printList.length; i++){
let row = printList[i];
console.log(row.qrCode)
console.log(row)
//如果打印正常的标签
LODOP.NewPage();
LODOP.NewPageA();
LODOP.SET_PRINTER_INDEXA(printerName)
LODOP.SET_PRINT_PAGESIZE(0,1100,512,"");
// LODOP.ADD_PRINT_BARCODE(12,33,100,80,"QRCode",row.qrCode);
// LODOP.SET_PRINT_STYLEA(0,"FontSize",7);
LODOP.ADD_PRINT_IMAGE(5,33,"21mm","21mm",`<img src="${row.qrCode}" style="width: 21mm;height: 21mm;object-fit: contain"/>`);
LODOP.ADD_PRINT_IMAGE(-5,20,"26mm","26mm",`<img src="${row.qrCode}" style="width: 26mm;height: 26mm;object-fit: contain"/>`); LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",100);
LODOP.ADD_PRINT_IMAGE(4,255,90,16,"<img src=\"data:image/png;base64," + ckpLogo + "\"/>");
LODOP.SET_PRINT_STYLEA(0,"Stretch",2);
LODOP.SET_PRINT_STYLEA(0,"Alignment",3);

6
src/printFormat/antenna.js

@ -18,14 +18,14 @@ export const printAntennaLabel = (printList, icons, printerName) => {
LODOP.SET_PRINT_MODE('CUSTOM_TASK_NAME', '多条页')//为每个打印单独设置任务名
for (let i = 0; i < printList.length; i++) {
let row = printList[i]
console.log(row.qrCode)
console.log(row)
//如果打印正常的标签
LODOP.NewPage()
LODOP.NewPageA();
LODOP.SET_PRINTER_INDEXA(printerName)
LODOP.SET_PRINT_PAGESIZE(0, 1100, 512, '')
// LODOP.ADD_PRINT_BARCODE(12, 33, 115,80, 'QRCode', row.qrCode)
// LODOP.SET_PRINT_STYLEA(0,"FontSize",7);
LODOP.ADD_PRINT_IMAGE(5,33,"21mm","21mm",`<img src="${row.qrCode}" style="width: 21mm;height: 21mm;object-fit: contain"/>`);
LODOP.ADD_PRINT_IMAGE(-5,20,"26mm","26mm",`<img src="${row.qrCode}" style="width: 26mm;height: 26mm;object-fit: contain"/>`); LODOP.SET_PRINT_STYLEA(0,"HtmWaitMilSecs",100);
LODOP.ADD_PRINT_IMAGE(4,255,90,16, '<img src="data:image/png;base64,' + ckpLogo + '"/>')
LODOP.SET_PRINT_STYLEA(0, 'Stretch', 2)
LODOP.SET_PRINT_STYLEA(0,"Alignment",3);

78
src/printFormat/logisticLabel.js
File diff suppressed because it is too large
View File

2
src/printFormat/roll_label.js

@ -22,7 +22,7 @@ export const print_roll_label = (printList,printerName)=>{
LODOP.ADD_PRINT_IMAGE(7,120,30,8,"<img src=\"data:image/png;base64," + ckpLogo + "\"/>");
LODOP.SET_PRINT_STYLEA(0,"Stretch",2);
LODOP.ADD_PRINT_TEXT(15,73,25,20,"REF");
LODOP.ADD_PRINT_TEXT(15,73,30,20,"REF");
LODOP.SET_PRINT_STYLEA(0,"FontName","Arial");
LODOP.SET_PRINT_STYLEA(0,"FontSize",5);
LODOP.SET_PRINT_STYLEA(0,"Bold",1);

1
src/views/modules/label/QrCode.vue

@ -33,6 +33,7 @@ export default {
return
}
base64 = url
console.log(base64)
})
return base64
},

2
src/views/modules/label/format.vue

@ -411,6 +411,7 @@ export default {
<el-option label="All" value=""></el-option>
<el-option label="Shipment Carton" value="Shipment Carton"></el-option>
<el-option label="Roll Label" value="Roll Label"></el-option>
<el-option label="Logistic Label" value="Logistic Label"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Format ID">
@ -476,6 +477,7 @@ export default {
<el-select v-model="saveLabelFormat.labelType" placeholder="" :disabled="saveLabelFormat.site" style="width: 100%">
<el-option label="Shipment Carton" value="Shipment Carton"></el-option>
<el-option label="Roll Label" value="Roll Label"></el-option>
<el-option label="Logistic Label" value="Logistic Label"></el-option>
</el-select>
</el-form-item>
</el-col>

418
src/views/modules/label/logisticLabelRecord.vue

@ -0,0 +1,418 @@
<script>
import CustomerInfo from '../customer/info.vue'
import ExternalPart from '../part/external.vue'
import QrCode from './QrCode.vue'
import {queryLogisticLabelRecord, queryLogisticLabelRecordPrinter} from '../../../api/label/LogisticLabelRecord'
import SelectionTable from '../../common/selectionTable.vue'
import {print_roll_label} from '../../../printFormat/roll_label'
import {printLogisticLabel} from '../../../printFormat/logisticLabel'
export default {
name: 'logisticLabelRecord',
components: {SelectionTable, QrCode, ExternalPart, CustomerInfo},
props: {
height: {
type: [Number, String],
default: '74vh',
}
},
data () {
return {
queryLoading: false,
no: 1,
size: 50,
total: 0,
dataList: [],
logisticLabelRecord: {
customerNo: '',
customerName: '',
startDate: '',
endDate: '',
partNo: '',
partDesc: ''
},
partVisible: false,
customerVisible: false,
columns: [
{
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TableItemNo',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'itemNo',
headerAlign: 'center',
align: 'left',
columnLabel: 'No',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TablePoNo',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'poNo',
headerAlign: 'center',
align: 'left',
columnLabel: 'PO No',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TableCustomerNo',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'customerNo',
headerAlign: 'center',
align: 'left',
columnLabel: 'Customer No',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 100
}, {
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TableCustomerName',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'customerName',
headerAlign: 'center',
align: 'left',
columnLabel: 'Customer Name',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TablePartNo',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'partNo',
headerAlign: 'center',
align: 'left',
columnLabel: 'Part No',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TablePartDesc',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'partDesc',
headerAlign: 'center',
align: 'left',
columnLabel: 'Part Description',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TableUnitQtyPerPallet',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'unitQtyPerPallet',
headerAlign: 'center',
align: 'right',
columnLabel: 'Unit Qty per Pallet',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TableCountOfPallets',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'countOfPallets',
headerAlign: 'center',
align: 'right',
columnLabel: 'Count of Pallets',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
},
{
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TableCreateBy',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'createBy',
headerAlign: 'center',
align: 'left',
columnLabel: 'Created By',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30007,
serialNumber: '30007TableCreateTime',
tableId: '30007Table',
tableName: 'Logistic Label Record',
columnProp: 'createTime',
headerAlign: 'center',
align: 'left',
columnLabel: 'CreateTime',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 140
}
],
selectionDataList: [],
}
},
methods: {
handlePartRowClick (row) {
this.logisticLabelRecord.partNo = row.partNo
this.partVisible = false
},
handleCustomerRowClick (row) {
this.logisticLabelRecord.customerNo = row.customerNo
this.customerVisible = false
},
handleQuery () {
let params = {
...this.logisticLabelRecord,
no: this.no,
size: this.size
}
this.queryLoading = true
queryLogisticLabelRecord(params).then(({data}) => {
if (data && data.code === 0) {
this.dataList = data.rows
this.total = data.total
} else {
this.$message.warning(data.msg)
}
this.queryLoading = false
}).catch((error) => {
this.$message.error(error)
this.queryLoading = false
})
},
handleSizeChange (val) {
this.size = val
this.handleQuery()
},
handleCurrentChange (val) {
this.no = val
this.handleQuery()
},
handleSelectionChange (val) {
this.selectionDataList = val
},
handlePrint () {
if (this.selectionDataList.length === 0) {
this.$message.warning('Please select at least one record')
return
}
let params = this.selectionDataList.map(item =>{
item.username = this.$store.state.user.name
return item
})
queryLogisticLabelRecordPrinter(params).then(({data})=>{
if (data && data.code === 0){
let printers = data.rows
for (let i = 0; i < printers.length; i++) {
let printer = printers[i] //
let row = {
...this.selectionDataList[i],
qty:this.selectionDataList[i].unitQtyPerPallet,
qrCode: `(00)${this.selectionDataList[i].partNo? this.selectionDataList[i].partNo : ''}(01)${this.selectionDataList[i].unitQtyPerPallet? this.selectionDataList[i].unitQtyPerPallet : ''}(02)${this.selectionDataList[i].umName? this.selectionDataList[i].umName : ''}(03)(04)(05)(06)(07)(08)(09)(10)${this.selectionDataList[i].poNo? this.selectionDataList[i].poNo : ''}`,
}
let qrCodeList = this.$refs.qrCode.init([row.qrCode])
row.qrCode = qrCodeList[0]
for (let p in printer){
printLogisticLabel([row],p.defaultPrinterName)
}
}
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
}
},
watch: {
'logisticLabelRecord.customerNo' (newVal, oldVal) {
this.logisticLabelRecord.customerNo = newVal.toUpperCase()
},
'logisticLabelRecord.partNo' (newVal, oldVal) {
this.logisticLabelRecord.partNo = newVal.toUpperCase()
}
},
created () {
// this.handleQuery()
}
}
</script>
<template>
<div>
<el-form :model="logisticLabelRecord" label-position="top" style="width: 1000px">
<el-row :gutter="20">
<el-col :span="4">
<el-form-item label="Customer No">
<span slot="label" style="cursor:pointer;" @click="customerVisible=true"><a
herf="#">Customer No</a></span>
<el-input v-model="logisticLabelRecord.customerNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="Customer Name">
<el-input v-model="logisticLabelRecord.customerName" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-row>
<el-col :span="11">
<el-form-item label="Created Time">
<el-date-picker
v-model="logisticLabelRecord.startDate"
style="width: 100%;"
type="date"
value-format="yyyy-MM-dd"
placeholder=" ">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="2">
<el-form-item label=" ">
<div style="text-align: center"><i class="el-icon-right"></i></div>
</el-form-item>
</el-col>
<el-col :span="11">
<el-form-item label=" ">
<el-date-picker
v-model="logisticLabelRecord.endDate"
style="width: 100%;"
type="date"
value-format="yyyy-MM-dd"
placeholder=" ">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="4">
<el-form-item label="Part No">
<span slot="label" style="cursor:pointer;" @click="partVisible=true"><a herf="#">Part No</a></span>
<el-input v-model="logisticLabelRecord.partNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="Part Description">
<el-input v-model="logisticLabelRecord.partDesc" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label=" ">
<el-button type="primary" style="width: 60px" @click="handleQuery">Query</el-button>
<el-button type="primary" style="width: 60px" @click="handlePrint">Print</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<qr-code ref="qrCode"></qr-code>
<el-table v-loading="queryLoading" :data="dataList" ref="table" @selection-change="handleSelectionChange"
style="width: 100%;margin-top: 10px" border :height="height">
<el-table-column type="selection" width="55" fixed="left" align="center"></el-table-column>
<el-table-column
v-for="(item,index) in columns" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed===''?false:item.fixed"
:min-width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
style="width: 100px; height: 80px"/></span>
</template>
</el-table-column>
</el-table>
<div>
<selection-table :size="selectionDataList.length" :total="total"></selection-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="no"
:page-sizes="[50,100, 200, 300, 400]"
:page-size="size"
layout="sizes, prev, pager, next"
:total="total">
</el-pagination>
</div>
<el-dialog v-drag title="Select Part" :close-on-click-modal="false" :visible.sync="partVisible">
<external-part :height="450" :of-components="true" @rowClick="handlePartRowClick"></external-part>
<div slot="footer" style="text-align: center; margin-top: 10px"></div>
</el-dialog>
<el-dialog v-drag title="Select Customer" :close-on-click-modal="false" :visible.sync="customerVisible">
<customer-info :height="450" :of-components="true" @rowClick="handleCustomerRowClick"></customer-info>
<div slot="footer" style="text-align: center; margin-top: 10px"></div>
</el-dialog>
</div>
</template>
<style scoped>
</style>

176
src/views/modules/label/printer.vue

@ -20,6 +20,8 @@ import {getCategory, getCategoryList} from '../../../api/category/category'
import QrCode from './QrCode.vue'
import {savePrintRollLabelRecord} from '../../../api/label/printRollLabelRecord'
import {print_roll_label} from '../../../printFormat/roll_label'
import {saveLogisticLabelRecord} from '../../../api/label/LogisticLabelRecord'
import {printLogisticLabel} from '../../../printFormat/logisticLabel'
const printer = {
customerNo: '',
@ -90,6 +92,9 @@ export default {
cartonCount: [{required: true, message: 'Please input Carton Count', trigger: ['blur','change']}],
manufacturerTime: [{required: true, message: 'Please input Manufacturer Date', trigger: ['blur','change']}],
orderNo: [{required: true, message: 'Please input PO', trigger: ['blur','change']}],
poNo: [{required: true, message: 'Please input PO No', trigger: ['blur','change']}],
unitQtyPerPallet: [{required: true, message: 'Please input Unit Qty Per Pallet', trigger: ['blur','change']}],
countOfPallets: [{required: true, message: 'Please input Count Of Pallets', trigger: ['blur','change']}],
},
columnList:[
{
@ -531,6 +536,18 @@ export default {
labelFormatList:[],
base64List:[],
status:0,
currentPartLogistic:{
site:this.$store.state.user.site,
partNo:'',
partDesc:'',
poNo:'',
unitQtyPerPallet:1,
countOfPallets:1,
umName:'',
customerNo:'',
},
logisticVisible:false,
}
},
watch:{
@ -603,6 +620,26 @@ export default {
this.$message.error(error)
})
},
handlePrintLogisticLabel(){
let labelList = this.labelFormatList.filter((item)=> item.labelType === 'Logistic Label')
if (labelList.length === 0){
this.$message.warning("There is no maintenance of print label format")
return
}
this.getExternalPartPictureList();
this.selectLabelFormatUserDefaultListByUserId();
this.currentPartLogistic = {
site:this.currentPart.site,
partNo:this.currentPart.partNo,
partDesc:this.currentPart.partDesc,
poNo:'',
unitQtyPerPallet:1,
countOfPallets:1,
umName: this.currentPart.umName,
customerNo:this.currentPart.customerNo,
}
this.logisticVisible = true;
},
handlePrint(status){
this.printCurrentPart = JSON.parse(JSON.stringify(this.currentPart))
let labelList = [];
@ -610,7 +647,7 @@ export default {
labelList = this.labelFormatList.filter((item)=> item.labelType === 'Roll Label')
this.printCurrentPart.rollsPerCarton = 1;
this.$set(this.printCurrentPart,'orderNo','')
}else {
}else if (status === 0){
labelList = this.labelFormatList.filter((item)=> item.labelType === 'Shipment Carton')
}
if (labelList.length === 0){
@ -739,7 +776,7 @@ export default {
for (let label of labelList) {
let prints = data.rows.map((item) => {
let params = {
qrCode: `(00)${item.partNo}(01)${item.qtyPerCarton}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber? item.serialNumber : ''}(05)${item.manufacturerNo? item.manufacturerNo : ''}(06)${item.moldCode? item.moldCode : ''}(07)${item.boxNo? item.boxNo : ''}(08)`,
qrCode: `(00)${item.partNo}(01)${item.qtyPerCarton}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber? item.serialNumber : ''}(05)${item.manufacturerNo? item.manufacturerNo : ''}(06)${item.moldCode? item.moldCode : ''}(07)${item.boxNo? item.boxNo : ''}(08)(09)(10)`,
ref: item.partNo,
productRev: item.rev,
qty: item.qtyPerCarton,
@ -770,15 +807,13 @@ export default {
notFound.push(label.defaultPrinterName)
continue
}
this.$nextTick(()=>{
if (label.printType === 'Alpha/Hard Tag'){
printAlphaHardTagLabel(prints,icons,label.defaultPrinterName)
}else if (label.printType === 'Hardware(Antenna)'){
printAntennaLabel(prints,icons,label.defaultPrinterName)
}else if (label.printType === 'RF' || this.currentPart.category === 'RFID'){
printRF_RFIDLabel(prints,icons,label.defaultPrinterName)
}
})
if (label.printType === 'Alpha/Hard Tag'){
printAlphaHardTagLabel(prints,icons,label.defaultPrinterName)
}else if (label.printType === 'Hardware(Antenna)'){
printAntennaLabel(prints,icons,label.defaultPrinterName)
}else if (label.printType === 'RF' || this.currentPart.category === 'RFID'){
printRF_RFIDLabel(prints,icons,label.defaultPrinterName)
}
}
if (notFound.length > 0){
this.$message.warning(`The printer ${notFound.join(',')} is not found`)
@ -937,7 +972,7 @@ export default {
let labelList = this.labelFormatList.filter((item)=> item.labelType === 'Roll Label')
let prints = data.rows.map((item) => {
return {
qrCode: `(00)${item.partNo}(01)${item.qtyPerRoll}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber? item.serialNumber : ''}(05)${item.manufacturerNo? item.manufacturerNo : ''}(06)${item.moldCode? item.moldCode : ''}(07)(08)${item.rollNo}`,
qrCode: `(00)${item.partNo}(01)${item.qtyPerRoll}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber? item.serialNumber : ''}(05)${item.manufacturerNo? item.manufacturerNo : ''}(06)${item.moldCode? item.moldCode : ''}(07)(08)${item.rollNo}(09)(10)`,
ref: item.partNo,
rev: item.rev,
qty: item.qtyPerRoll,
@ -1018,6 +1053,63 @@ export default {
this.no = val;
this.handleGetExternalPartCustomerPage();
},
handlePrintLogistic(){
this.$refs.logisticForm.validate((valid,obj) => {
if (valid){
this.savePrintLogisticLabel()
}else {
let i = 0
Object.keys(obj).forEach(key=>{
if (i++ === 0){
this.$message.warning(obj[key][0].message)
}
})
}
})
},
savePrintLogisticLabel() {
let params = {
...this.currentPartLogistic,
createBy: this.$store.state.user.name,
}
this.printLoading = true;
saveLogisticLabelRecord(params).then(({data})=>{
if (data && data.code === 0){
let labelList = this.labelFormatList.filter((item)=> item.labelType === 'Logistic Label')
for (let i = 0; i < this.currentPartLogistic.countOfPallets; i++) {
let row = {
qrCode: `(00)${this.currentPartLogistic.partNo? this.currentPartLogistic.partNo : ''}(01)${this.currentPartLogistic.unitQtyPerPallet? this.currentPartLogistic.unitQtyPerPallet : ''}(02)${this.currentPartLogistic.umName? this.currentPartLogistic.umName : ''}(03)(04)(05)(06)(07)(08)(09)(10)${this.currentPartLogistic.partNo? this.currentPartLogistic.partNo : ''}`,
partNo:this.currentPartLogistic.partNo,
partDesc:this.currentPartLogistic.partDesc,
poNo:this.currentPartLogistic.poNo,
qty:this.currentPartLogistic.unitQtyPerPallet,
umName:this.currentPartLogistic.umName,
}
let qrCodeList = this.$refs.qrCode.init([row.qrCode])
row.qrCode = qrCodeList[0]
let notFound = [];
for (let label of labelList) {
if (!this.printerSetupList.includes(label.defaultPrinterName)) {
notFound.push(label.defaultPrinterName)
continue
}
printLogisticLabel([row],label.defaultPrinterName)
}
if (notFound.length > 0){
this.$message.warning(`The printer ${notFound.join(',')} is not found`)
return
}
}
this.$message.success(data.msg)
}else {
this.$message.warning(data.msg)
}
this.printLoading = false;
}).catch((error)=>{
this.$message.error(error)
this.printLoading = false;
})
}
},
mounted () {
this.getLodopPrinterName();
@ -1035,21 +1127,21 @@ export default {
<template>
<div>
<div style="min-width: 600px;max-width: 1000px">
<div style="min-width: 800px;max-width: 1300px">
<el-form :model="searchPrinter" label-position="top">
<el-row :gutter="20">
<el-col :span="4">
<el-row :gutter="10">
<el-col :span="3">
<el-form-item label="Customer No">
<span slot="label" style="cursor:pointer;" @click="customerVisible=true"><a herf="#">Customer No</a></span>
<el-input v-model="searchPrinter.customerNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-col :span="6">
<el-form-item label="Customer Name">
<el-input v-model="searchPrinter.customerName" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="3">
<el-form-item label="Part Active">
<el-select v-model="searchPrinter.active" style="width: 100%;" placeholder="">
<el-option label="All" value=""></el-option>
@ -1058,25 +1150,25 @@ export default {
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="3">
<el-form-item label=" ">
<el-button type="primary" style="width: 60px" @click="handleGetExternalPartCustomerPage">Query</el-button>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="4">
<el-row :gutter="10">
<el-col :span="3">
<el-form-item label="Part No">
<span slot="label" style="cursor:pointer;" @click="partVisible=true"><a herf="#">Part No</a></span>
<el-input v-model="searchPrinter.partNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-col :span="6">
<el-form-item label="Part Description">
<el-input v-model="searchPrinter.partDesc" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="3">
<el-form-item label="Part Category">
<el-select v-model="searchPrinter.category" style="width: 100%;" placeholder="">
<el-option label="All" value=""></el-option>
@ -1084,11 +1176,11 @@ export default {
</el-select>
</el-form-item>
</el-col>
<el-col :span="8" >
<el-col :span="12" >
<el-form-item label=" ">
<el-button type="primary" @click="handlePrint(0)">Print-Carton Label</el-button>
<!-- <el-button type="primary" @click="handlePrint(1)" :disabled="currentPart.rollLabelRequired === 'N'">Print-Roll Label</el-button>-->
<el-button type="primary" @click="handlePrint(1)" >Print-Roll Label</el-button>
<el-button type="primary" @click="handlePrintLogisticLabel">Print Logistic Label</el-button>
</el-form-item>
</el-col>
</el-row>
@ -1236,6 +1328,42 @@ export default {
</div>
</el-dialog>
<el-dialog v-drag title="Print Label" :close-on-click-modal="false" :visible.sync="logisticVisible" width="400px">
<el-form :model="currentPartLogistic" label-position="top" :rules="printRules" ref="logisticForm">
<el-row :gutter="10">
<el-col :span="12">
<el-form-item label="Part No" :show-message="false">
<el-input v-model="currentPartLogistic.partNo" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="PO No" prop="poNo" :show-message="false">
<el-input v-model="currentPartLogistic.poNo"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="Part Description" :show-message="false">
<el-input v-model="currentPartLogistic.partDesc" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="Unit Qty per Pallet" prop="unitQtyPerPallet" :show-message="false">
<el-input-number :controls="false" :step="0" :min="0" v-model="currentPartLogistic.unitQtyPerPallet"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="Count of Pallets" prop="countOfPallets" :show-message="false">
<el-input-number :controls="false" :step="0" :min="1" v-model="currentPartLogistic.countOfPallets"></el-input-number>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" style="text-align: center; margin-top: 10px">
<el-button type="primary" :loading="printLoading" style="width: 60px" @click="handlePrintLogistic">Print</el-button>
<el-button style="width: 60px" @click="logisticVisible = false">Cancel</el-button>
</div>
</el-dialog>
<el-dialog v-drag title="Select Part" :close-on-click-modal="false" :visible.sync="partVisible">
<external-part :height="450" :of-components="true" @rowClick="handlePartRowClick"></external-part>
<div slot="footer" style="text-align: center; margin-top: 10px"></div>

18
src/views/modules/label/record.vue

@ -398,7 +398,7 @@ export default {
printLabel(pictureList,formatList){
let prints = this.selectionPrintLabelRecordList.map((item) => {
let params = {
qrCode: `(00)${item.partNo}(01)${item.qtyPerCarton}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber? item.serialNumber : ''}(05)${item.manufacturerNo? item.manufacturerNo : ''}(06)${item.moldCode? item.moldCode : ''}(07)${item.boxNo? item.boxNo : ''}(08)`,
qrCode: `(00)${item.partNo}(01)${item.qtyPerCarton}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber? item.serialNumber : ''}(05)${item.manufacturerNo? item.manufacturerNo : ''}(06)${item.moldCode? item.moldCode : ''}(07)${item.boxNo? item.boxNo : ''}(08)(09)(10)`,
ref: item.partNo,
qty: item.qtyPerCarton,
productRev: item.rev,
@ -442,15 +442,13 @@ export default {
notFound.push(str[0])
continue
}
this.$nextTick(()=>{
if (str[1] === 'Alpha/Hard Tag'){
printAlphaHardTagLabel(dataList,base64List,str[0])
}else if (str[1] === 'Hardware(Antenna)'){
printAntennaLabel(dataList,base64List,str[0])
}else if (str[1] === 'RF' || str[1] === 'RFID'){
printRF_RFIDLabel(dataList,base64List,str[0])
}
})
if (str[1] === 'Alpha/Hard Tag'){
printAlphaHardTagLabel(dataList,base64List,str[0])
}else if (str[1] === 'Hardware(Antenna)'){
printAntennaLabel(dataList,base64List,str[0])
}else if (str[1] === 'RF' || str[1] === 'RFID'){
printRF_RFIDLabel(dataList,base64List,str[0])
}
}
}
this.$refs.table.clearSelection()

2
src/views/modules/label/roll.vue

@ -365,7 +365,7 @@ export default {
for (let j = 0; j < printerNameList.length; j++) {
arr = arr.map((item)=>{
return {
qrCode: `(00)${item.partNo}(01)${item.qtyPerRoll}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber? item.serialNumber : ''}(05)${item.manufacturerNo? item.manufacturerNo : ''}(06)${item.moldCode? item.moldCode : ''}(07)(08)${item.rollNo}`,
qrCode: `(00)${item.partNo}(01)${item.qtyPerRoll}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber? item.serialNumber : ''}(05)${item.manufacturerNo? item.manufacturerNo : ''}(06)${item.moldCode? item.moldCode : ''}(07)(08)${item.rollNo}(09)(10)`,
ref: item.partNo,
rev: item.rev,
qty: item.qtyPerRoll,

1
src/views/modules/label/userDefault.vue

@ -287,6 +287,7 @@ export default {
<el-option label="All" value=""></el-option>
<el-option label="Shipment Carton" value="Shipment Carton"></el-option>
<el-option label="Roll Label" value="Roll Label"></el-option>
<el-option label="Logistic Label" value="Logistic Label"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Format ID">

Loading…
Cancel
Save