Browse Source

roll label

dev
zelian_wu 2 years ago
parent
commit
1a06be2f9c
  1. 197
      package-lock.json
  2. 1
      package.json
  3. 3
      src/api/category/categoty.js
  4. 1
      src/api/label/labelFormatUserDefault.js
  5. 4
      src/api/label/printRollLabelRecord.js
  6. 77
      src/printFormat/roll_label.js
  7. 51
      src/views/modules/label/QrCode.vue
  8. 2
      src/views/modules/label/format.vue
  9. 150
      src/views/modules/label/printer.vue
  10. 609
      src/views/modules/label/roll.vue
  11. 1
      src/views/modules/label/userDefault.vue
  12. 37
      src/views/modules/part/external.vue

197
package-lock.json

@ -4280,6 +4280,11 @@
}
}
},
"dijkstrajs": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
},
"dns-equal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
@ -4545,11 +4550,21 @@
}
}
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
},
"emojis-list": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
"integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
},
"encode-utf8": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
},
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
@ -16339,6 +16354,11 @@
"integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
"dev": true
},
"pngjs": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
},
"portfinder": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
@ -17465,6 +17485,183 @@
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
"dev": true
},
"qrcode": {
"version": "1.5.3",
"resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
"integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
"requires": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^15.3.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
"color-convert": "^2.0.1"
}
},
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
"cliui": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"find-up": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"requires": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
}
},
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
},
"locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"requires": {
"p-locate": "^4.1.0"
}
},
"p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"requires": {
"p-try": "^2.0.0"
}
},
"p-locate": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"requires": {
"p-limit": "^2.2.0"
}
},
"p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
},
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
},
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"string-width": {
"version": "4.2.3",
"resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"requires": {
"ansi-regex": "^5.0.1"
}
},
"which-module": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
"integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
},
"wrap-ansi": {
"version": "6.2.0",
"resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
},
"y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
},
"yargs": {
"version": "15.4.1",
"resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"requires": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
}
},
"yargs-parser": {
"version": "18.1.3",
"resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
}
}
},
"qs": {
"version": "6.5.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",

1
package.json

@ -30,6 +30,7 @@
"node-sass": "4.13.1",
"npm": "^6.9.0",
"pubsub-js": "^1.9.3",
"qrcode": "^1.5.3",
"sass-loader": "6.0.6",
"svg-sprite-loader": "3.7.3",
"vue": "2.6.10",

3
src/api/category/categoty.js

@ -0,0 +1,3 @@
import {createAPI} from '../../utils/httpRequest'
export const getCategoryList = (data) => createAPI('part/category/list','post', data)

1
src/api/label/labelFormatUserDefault.js

@ -9,5 +9,6 @@ export const updateLabelFormatUserDefault = (data) => createAPI(`/label/format/u
export const removeLabelFormatUserDefault = (data) => createAPI(`/label/format/user/default/remove`,'post',data)
export const selectLabelFormatUserDefaultListByUserId = (data) => createAPI(`/label/format/user/default/user/list`,'post',data)
export const selectLabelFormatUserDefaultPrintListByUserId = (data) => createAPI(`/label/format/user/default/user/print/list`,'post',data)
export const getRollPrinterNameList = (data) => createAPI(`/label/format/user/default/user/roll`,'post',data)

4
src/api/label/printRollLabelRecord.js

@ -0,0 +1,4 @@
import {createAPI} from '../../utils/httpRequest'
export const getPrintRollLabelRecordPage = (data,no,size) => createAPI(`/label/print/roll/record/page/${no}/${size}`,'post',data)
export const savePrintRollLabelRecord = (data) => createAPI(`/label/print/roll/record/save`,'post',data)

77
src/printFormat/roll_label.js
File diff suppressed because it is too large
View File

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

@ -0,0 +1,51 @@
<template>
<div v-if="false">
<!-- 你可以选择是否需要展示 base64 编码字符串 -->
<div v-for="(code, index) in qrCodesBase64" :key="index">
<!-- <p>{{ code }}</p>-->
<img :src="code"/>
</div>
</div>
</template>
<script>
import QRCode from 'qrcode'
export default {
name: 'QrCode',
data() {
return {
texts: ['text1', 'text2', 'text3'], //
qrCodesBase64: []
}
},
methods: {
init(contextList){
this.texts = contextList
this.generateQRCodesSync(this.texts)
return this.qrCodesBase64
},
generateQRCodeSync(text) {
let base64 = ''
QRCode.toDataURL(text, { errorCorrectionLevel: 'H' }, (err, url) => {
if (err) {
console.error(err)
return
}
base64 = url
})
return base64
},
generateQRCodesSync(texts) {
this.qrCodesBase64 = texts.map(text => this.generateQRCodeSync(text))
}
},
mounted() {
this.generateQRCodesSync(this.texts)
}
}
</script>
<style>
/* 你的样式 */
</style>

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

@ -410,6 +410,7 @@ export default {
<el-select v-model="labelFormat.labelType" placeholder="">
<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-select>
</el-form-item>
<el-form-item label="Format ID">
@ -474,6 +475,7 @@ export default {
<el-form-item label="Label Type">
<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-select>
</el-form-item>
</el-col>

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

@ -16,6 +16,10 @@ import {printRF_RFIDLabel} from '../../../printFormat/RF_RFID'
import getLodop from '@/utils/LodopFuncs.js'
import {getTableDefaultListLanguage, getTableUserListLanguage} from '../../../api/table'
import {getCategoryList} from '../../../api/category/categoty'
import QrCode from './QrCode.vue'
import {savePrintRollLabelRecord} from '../../../api/label/printRollLabelRecord'
import {print_roll_label} from '../../../printFormat/roll_label'
const printer = {
customerNo: '',
@ -36,10 +40,11 @@ const printer = {
serialNumberRequired: '',
qtyPerRoll: 0,
rollsPerCarton: 0,
orderNo: '',
}
export default {
name: 'printer',
components: { LinkedFormat, CustomerInfo, ExternalPart, PictureModule},
components: {QrCode, LinkedFormat, CustomerInfo, ExternalPart, PictureModule},
props:{
height:{
type:Number,
@ -56,10 +61,7 @@ export default {
...printer
},
partCategoryList:[
{categoryNo:'Hardware(Antenna)',categoryDesc:'Hardware(Antenna)',manufacturerRequired:'N',moldCodeRequired:'N',serialNumberRequired:'Y'},
{categoryNo:'Alpha/Hard Tag',categoryDesc:'Alpha/Hard Tag',manufacturerRequired:'Y',moldCodeRequired:'Y',serialNumberRequired:'Y'},
{categoryNo:'RF',categoryDesc:'RF',manufacturerRequired:'N',moldCodeRequired:'N',serialNumberRequired:'N'},
{categoryNo:'RFID',categoryDesc:'RFID',manufacturerRequired:'N',moldCodeRequired:'N',serialNumberRequired:'N'},
],
partVisible:false,
customerVisible:false,
@ -83,6 +85,7 @@ export default {
totalShipQty: [{required: true, message: 'Please input Total Ship Qty', trigger: ['blur','change']}],
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']}],
},
columnList:[
{
@ -470,6 +473,7 @@ export default {
manufacturerList:[],
labelFormatList:[],
base64List:[],
status:0,
}
},
watch:{
@ -542,17 +546,11 @@ export default {
this.$message.error(error)
})
},
handlePrint(){
handlePrint(status){
if (this.labelFormatList.length === 0){
this.$message.warning("There is no maintenance of print label format")
return
}
for (let label of this.labelFormatList) {
if (!label.defaultPrinterName){
this.$message.warning("The default printer name is not set")
return
}
}
this.printCurrentPart = JSON.parse(JSON.stringify(this.currentPart))
this.$set(this.printCurrentPart,'cartonCount',1)
this.$set(this.printCurrentPart,'manufacturerNo','')
@ -576,6 +574,21 @@ export default {
if (this.currentPart.moldCodeRequired === 'Y'){
this.printCurrentPart.moldCode = this.currentPart.moldCode;
}
let labelList = [];
if (status === 1){
labelList = this.labelFormatList.filter((item)=> item.labelType === 'Roll Label')
this.printCurrentPart.rollsPerCarton = 1;
this.$set(this.printCurrentPart,'orderNo','')
}else {
labelList = this.labelFormatList.filter((item)=> item.labelType === 'Shipment Carton')
}
for (let label of labelList) {
if (!label.defaultPrinterName){
this.$message.warning("The default printer name is not set")
return
}
}
this.status = status;
this.printVisible = true;
},
getExternalPartManufacturerList(){
@ -599,7 +612,11 @@ export default {
handlePrintOrSave(){
this.$refs.printForm.validate((valid,obj) => {
if (valid){
this.savePrintLabelRecord();
if(this.status === 0){
this.savePrintLabelRecord();
}else if (this.status === 1){
this.savePrintRollLabelRecord();
}
}else {
for (let i = 0; i < Object.keys(obj).length; i++) {
this.$message.warning(obj[Object.keys(obj)[i]][0].message)
@ -619,7 +636,8 @@ export default {
if (data && data.code === 0) {
let notFound = [];
//
for (let label of this.labelFormatList) {
let labelList = this.labelFormatList.filter((item)=> item.labelType === 'Shipment Carton')
for (let label of labelList) {
let prints = data.rows.map((item) => {
return {
qrCode: `(00)${item.partNo}(01)${item.qtyPerCarton}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber}(05)${item.manufacturerNo}(06)${item.moldCode}(07)${item.boxNo}(08)`,
@ -751,7 +769,7 @@ export default {
})
},
// tableDefault
// tableDefault
async getColumnList (tableId, columnId) {
let queryTable = {
functionId: this.$route.meta.menuId,
@ -786,16 +804,81 @@ export default {
},
totalShipQty(){
return new Decimal(this.printCurrentPart.qtyPerCarton).mul(this.printCurrentPart.cartonCount).toNumber()
},
getCategoryList(){
let params = {};
getCategoryList(params).then(({data})=>{
if (data && data.code === 0){
this.partCategoryList = data.rows;
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
},
savePrintRollLabelRecord(){
//
let params = {
...this.printCurrentPart
}
//
savePrintRollLabelRecord(params).then(({data})=>{
if (data && data.code === 0) {
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}`,
ref: item.partNo,
rev: item.rev,
qty: item.qtyPerRoll,
uom: item.umName,
desc: item.partDesc,
date: item.manufacturerDate,
manufacturer: item.manufacturerNo,
moldCode: item.moldCode,
rollNo: item.rollNo,
sn: item.serialNumber,
}
});
let qrCodeList = this.$refs.qrCode.init(prints.map((item)=>{
return item.qrCode
}))
for (let i = 0; i < qrCodeList.length; i++) {
prints[i].qrCode = qrCodeList[i]
}
let notFound = [];
for (let label of labelList) {
if (!this.printerSetupList.includes(label.defaultPrinterName)) {
notFound.push(label.defaultPrinterName)
continue
}
print_roll_label(prints,label.defaultPrinterName)
}
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
},
loadQrCode(){
let arr = ['2','4','6','8']
console.log(this.$refs.qrCode.init(arr))
},
getLodopPrinterName(){
const lodop = getLodop()
for (let i = 0; i < lodop.GET_PRINTER_COUNT(); i++) {
this.printerSetupList.push(lodop.GET_PRINTER_NAME(i))
}
}
},
mounted () {
const lodop = getLodop()
for (let i = 0; i < lodop.GET_PRINTER_COUNT(); i++) {
this.printerSetupList.push(lodop.GET_PRINTER_NAME(i))
}
this.getLodopPrinterName();
},
created () {
this.getExternalPartCustomerList();
this.getCategoryList();
this.getTableUserColumn("30004Table",1)
this.getTableUserColumn("30004Table2",2)
this.getTableUserColumn("30004Table3",3)
@ -848,20 +931,22 @@ export default {
</el-col>
<el-col :span="4">
<el-form-item label="Part Category">
<el-select v-model="searchPrinter.category" placeholder="">
<el-select v-model="searchPrinter.category" style="width: 100%;" placeholder="">
<el-option label="All" value=""></el-option>
<el-option :label="item.categoryDesc" :value="item.categoryNo" :key="item.categoryNo" v-for="item in partCategoryList"></el-option>
<el-option :label="item.categoryName" :value="item.categoryValue" :key="item.id" v-for="item in partCategoryList"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4" >
<el-col :span="8" >
<el-form-item label=" ">
<el-button type="primary" style="width: 60px" @click="handlePrint">Print</el-button>
<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-form-item>
</el-col>
</el-row>
</el-form>
</div>
<qr-code ref="qrCode"></qr-code>
<el-table :data="printerList" @row-click="handleClick" style="width: 100%;margin-top: 10px" border :height="height" :row-style="rowStyle">
<el-table-column
v-for="(item,index) in columnList" :key="index"
@ -892,17 +977,22 @@ export default {
<el-dialog v-drag title="Print Label" :close-on-click-modal="false" @close="closePrintDialog" :visible.sync="printVisible" width="600px">
<el-form :model="printCurrentPart" ref="printForm" :rules="printRules" label-position="top" >
<el-row :gutter="10">
<el-col :span="24">
<el-col :span="status === 0? 24:8">
<el-form-item label="Part No">
<el-input v-model="printCurrentPart.partNo" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="16" v-if="status !== 0">
<el-form-item label="PO" prop="orderNo" :show-message="false">
<el-input v-model="printCurrentPart.orderNo"></el-input>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="Part Description">
<el-input v-model="printCurrentPart.partDesc" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="5">
<el-col :span="status === 0? 5:8">
<el-form-item v-if="printCurrentPart.serialNumberRequired === 'Y'" label="Qty Per Roll" :show-message="false">
<el-input-number :step="0" :min="1" :controls="false" v-model="printCurrentPart.qtyPerRoll" disabled></el-input-number>
</el-form-item>
@ -910,7 +1000,7 @@ export default {
<el-input-number :step="0" :min="1" :controls="false" v-model="printCurrentPart.qtyPerRoll"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="5">
<el-col :span="5" v-if="status === 0">
<el-form-item v-if="printCurrentPart.serialNumberRequired === 'Y'" label="Rolls Per Carton" :show-message="false">
<el-input-number :step="0" :min="1" :controls="false" v-model="printCurrentPart.rollsPerCarton" disabled></el-input-number>
</el-form-item>
@ -918,7 +1008,7 @@ export default {
<el-input-number :step="0" :min="1" :controls="false" v-model="printCurrentPart.rollsPerCarton"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="5">
<el-col :span="5" v-if="status === 0">
<el-form-item v-if="printCurrentPart.serialNumberRequired === 'Y'" label="Qty Per Carton" :show-message="false">
<el-input-number :step="0" :controls="false" v-model="printCurrentPart.qtyPerCarton" disabled></el-input-number>
</el-form-item>
@ -926,7 +1016,7 @@ export default {
<el-input-number :step="0" :controls="false" v-model="printCurrentPart.qtyPerCarton" disabled></el-input-number>
</el-form-item>
</el-col>
<el-col :span="4">
<el-col :span="status === 0? 4:8">
<el-form-item v-if="printCurrentPart.serialNumberRequired === 'Y'" label="Carton Count" :show-message="false">
<el-input-number :step="0" :min="1" :controls="false" v-model="printCurrentPart.cartonCount" disabled></el-input-number>
</el-form-item>
@ -934,7 +1024,7 @@ export default {
<el-input-number :step="0" :min="1" :controls="false" v-model="printCurrentPart.cartonCount"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="5">
<el-col :span="status === 0? 5:8">
<el-form-item v-if="printCurrentPart.serialNumberRequired === 'Y'" label="Total Ship Qty" :show-message="false">
<el-input-number :step="0" :min="0" :controls="false" v-model="printCurrentPart.totalShipQty" disabled></el-input-number>
</el-form-item>
@ -951,7 +1041,7 @@ export default {
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="ManufacturerDate" prop="manufacturerTime" :show-message="false">
<el-form-item label="Manufacturer Date" prop="manufacturerTime" :show-message="false">
<el-date-picker type="date"
placeholder=" " value-format="yyyy-MM-dd HH:mm:ss" v-model="printCurrentPart.manufacturerTime" style="width: 100%">
</el-date-picker>

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

@ -0,0 +1,609 @@
<script>
import ExternalPart from '../part/external.vue'
import CustomerInfo from '../customer/info.vue'
import {getPrintLabelRecordList, getPrintLabelRecordPage} from '../../../api/label/printLabelRecord'
import { printAlphaHardTagLabel} from '../../../printFormat/alphaHardTagPrintFormat'
import SelectionTable from '../../common/selectionTable.vue'
import {getExternalPartPicturePartList} from '../../../api/part/externalPartPicture'
import {printAntennaLabel} from '../../../printFormat/antenna'
import {printRF_RFIDLabel} from '../../../printFormat/RF_RFID'
import {
getRollPrinterNameList,
selectLabelFormatUserDefaultPrintListByUserId
} from '../../../api/label/labelFormatUserDefault'
import getLodop from '@/utils/LodopFuncs.js'
import {getTableDefaultListLanguage, getTableUserListLanguage} from '../../../api/table'
import {getPrintRollLabelRecordPage} from '../../../api/label/printRollLabelRecord'
import QrCode from './QrCode.vue'
import {print_roll_label} from '../../../printFormat/roll_label'
const printRecord = {
customerNo: '',
customerName: '',
partNo: '',
partDesc: '',
startDate: '',
endDate: ''
}
export default {
name: 'roll',
components: {QrCode, SelectionTable, CustomerInfo, ExternalPart},
props: {
height: {
type: Number,
default: 700
}
},
data () {
return {
printerSetupList:[],
customerVisible: false,
partVisible: false,
printRecord: {
...printRecord
},
no:1,
size: 50,
total: 0,
printLabelRecordList: [],
selectionPrintLabelRecordList: [],
columnList: [
{
userId: this.$store.state.user.name,
functionId: 30005,
serialNumber: '30005TableRollNo',
tableId: '30005Table',
tableName: '发货标签记录表',
columnProp: 'rollNo',
headerAlign: 'center',
align: 'left',
columnLabel: 'Roll No',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30005,
serialNumber: '30005TableCustomerNo',
tableId: '30005Table',
tableName: '发货标签记录表',
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: 30005,
serialNumber: '30005TableCustomerName',
tableId: '30005Table',
tableName: '发货标签记录表',
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: 30005,
serialNumber: '30005TablePartNo',
tableId: '30005Table',
tableName: '发货标签记录表',
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: 30005,
serialNumber: '30005TablePartDesc',
tableId: '30005Table',
tableName: '发货标签记录表',
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: 30005,
serialNumber: '30005TableQtyPerRoll',
tableId: '30005Table',
tableName: '发货标签记录表',
columnProp: 'qtyPerRoll',
headerAlign: 'center',
align: 'right',
columnLabel: 'Qty Per Roll',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30005,
serialNumber: '30005TableTotalShipQty',
tableId: '30005Table',
tableName: '发货标签记录表',
columnProp: 'totalShipQty',
headerAlign: 'center',
align: 'right',
columnLabel: 'Total Ship Qty',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30005,
serialNumber: '30005TableCartonCount',
tableId: '30005Table',
tableName: '发货标签记录表',
columnProp: 'cartonCount',
headerAlign: 'center',
align: 'right',
columnLabel: 'Carton Count',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30005,
serialNumber: '30005TableSerialNumber',
tableId: '30005Table',
tableName: '发货标签记录表',
columnProp: 'serialNumber',
headerAlign: 'center',
align: 'left',
columnLabel: 'Serial Number',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30005,
serialNumber: '30005TableManufacturerNo',
tableId: '30005Table',
tableName: '发货标签记录表',
columnProp: 'manufacturerNo',
headerAlign: 'center',
align: 'left',
columnLabel: 'Manufacturer',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30005,
serialNumber: '30005TableMoldCode',
tableId: '30005Table',
tableName: '发货标签记录表',
columnProp: 'moldCode',
headerAlign: 'center',
align: 'left',
columnLabel: 'Mold Code',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30005,
serialNumber: '30005TableManufacturerDate',
tableId: '30005Table',
tableName: '发货标签记录表',
columnProp: 'manufacturerDate',
headerAlign: 'center',
align: 'left',
columnLabel: 'Manufacturer Date',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 120
}, {
userId: this.$store.state.user.name,
functionId: 30005,
serialNumber: '30005TableCreateBy',
tableId: '30005Table',
tableName: '发货标签记录表',
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: 30005,
serialNumber: '30005TableCreateTime',
tableId: '30005Table',
tableName: '发货标签记录表',
columnProp: 'createTime',
headerAlign: 'center',
align: 'left',
columnLabel: 'CreateTime',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 10,
status: true,
fixed: '',
columnWidth: 140
}
],
}
},
watch:{
"printRecord.customerNo"(newVal, oldVal){
this.printRecord.customerNo = newVal.toUpperCase();
},
"printRecord.partNo"(newVal, oldVal){
this.printRecord.partNo = newVal.toUpperCase();
}
},
methods: {
handlePartRowClick (row) {
this.printRecord.partNo = row.partNo
this.partVisible = false
},
handleCustomerRowClick (row) {
this.printRecord.customerNo = row.customerNo
this.customerVisible = false
},
getPrintLabelRecordList () {
let params = {
...this.printRecord,
site: this.$store.state.user.site,
}
getPrintRollLabelRecordPage(params,this.no,this.size).then(({data}) => {
if (data && data.code === 0) {
this.printLabelRecordList = data.rows
this.total = data.total
} else {
this.$message.warning(data.message)
}
}).catch((error) => {
this.$message.error(error.message)
})
},
handleSelectionChange (val) {
this.selectionPrintLabelRecordList = val
},
async handlePrintLabel () {
if (this.selectionPrintLabelRecordList.length === 0) {
this.$message.warning('please select record')
return
}
let params = this.selectionPrintLabelRecordList.map((item) => {
return {
site:item.site,
partNo:item.partNo,
customerNo:item.customerNo,
username:this.$store.state.user.name,
rollNo:item.rollNo,
category:item.category,
}
})
let {data} = await getRollPrinterNameList(params)
if (data && data.code === 0){
for (let i = 0; i < this.selectionPrintLabelRecordList.length; i++) {
let record = this.selectionPrintLabelRecordList[i]
let printerNameList = data.rows[i].filter((item)=> item.labelType === 'Roll Label')
let arr = []
arr.push(record)
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}`,
ref: item.partNo,
rev: item.rev,
qty: item.qtyPerRoll,
uom: item.umName,
desc: item.partDesc,
date: item.manufacturerDate,
manufacturer: item.manufacturerNo,
moldCode: item.moldCode,
rollNo: item.rollNo,
sn: item.serialNumber,
}
})
let qrCodeList = this.$refs.qrCode.init(arr.map((item)=>{
return item.qrCode
}))
for (let i = 0; i < qrCodeList.length; i++) {
arr[i].qrCode = qrCodeList[i]
}
print_roll_label(arr,printerNameList[j].defaultPrinterName)
}
}
}else {
this.$message.warning(data.msg)
}
},
printLabel(pictureList,formatList){
let prints = this.selectionPrintLabelRecordList.map((item) => {
return {
qrCode: `(00)${item.partNo}(01)${item.qtyPerCarton}(02)${item.umName}(03)${item.manufacturerDate}(04)${item.serialNumber}(05)${item.manufacturerNo}(06)${item.moldCode}(07)${item.boxNo}(08)`,
ref: item.partNo,
qty: item.qtyPerCarton,
productRev: item.rev,
uom: item.umName,
desc: item.partDesc,
rollCount: item.qtyPerRoll,
date: item.manufacturerDate,
manufacturer: item.manufacturerNo,
moldCode: item.moldCode,
sn: item.serialNumber,
}
})
let notFound = [];
for (let i = 0; i < prints.length; i++) {
let print = prints[i]
let dataList = []
dataList.push(print);
//
let format = formatList[i]
let base64List = pictureList[i].map((item)=>{return {icon:item}})
for (let formatElement of format) {
let str = formatElement.split('(type)')
if (!this.printerSetupList.includes(str[0])) {
if (notFound.includes(str[0])){
continue
}
notFound.push(str[0])
continue
}
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()
if (notFound.length > 0){
this.$message.warning(`The printer ${notFound.join(',')} is not found`)
}else {
this.$message.success("Print label success")
}
},
handleSizeChange(val){
this.size = val
this.getPrintLabelRecordList()
},
handleCurrentChange(val){
this.no = val
this.getPrintLabelRecordList()
},
async getTableUserColumn (tableId, columnId) {
let queryTableUser = {
userId: this.$store.state.user.name,
functionId: this.$route.meta.menuId,
tableId: tableId,
status: true,
languageCode: this.$i18n.locale
}
await getTableUserListLanguage(queryTableUser).then(({data}) => {
if (data.rows.length > 0) {
this.caseTable(data.rows,columnId)
} else {
this.getColumnList(tableId, columnId)
}
})
},
// tableDefault
async getColumnList (tableId, columnId) {
let queryTable = {
functionId: this.$route.meta.menuId,
tableId: tableId,
languageCode: this.$i18n.locale
}
await getTableDefaultListLanguage(queryTable).then(({data}) => {
if (!data.rows.length === 0) {
this.caseTable(data.rows,columnId)
} else {
}
})
},
caseTable(list,columnId){
if (list.length > 0){
switch (columnId) {
case 1:
this.columnList = list
break;
}
}
},
},
mounted () {
const lodop = getLodop()
for (let i = 0; i < lodop.GET_PRINTER_COUNT(); i++) {
this.printerSetupList.push(lodop.GET_PRINTER_NAME(i))
}
},
created () {
// this.getPrintLabelRecordList()
this.getTableUserColumn('30006Table',1)
},
}
</script>
<template>
<div>
<div style="min-width: 600px;max-width: 1000px">
<el-form :model="printRecord" label-position="top">
<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="printRecord.customerNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="Customer Name">
<el-input v-model="printRecord.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="printRecord.startDate"
style="width: 100%;"
type="date"
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="printRecord.endDate"
style="width: 100%;"
type="date"
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="printRecord.partNo" clearable></el-input>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="Part Description">
<el-input v-model="printRecord.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="getPrintLabelRecordList">Query</el-button>
<el-button type="primary" style="width: 60px" @click="handlePrintLabel">Print</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<el-table :data="printLabelRecordList" 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 columnList" :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="selectionPrintLabelRecordList.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>
<qr-code ref="qrCode"></qr-code>
<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>

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

@ -286,6 +286,7 @@ export default {
<el-select v-model="labelFormat.labelType" placeholder="">
<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-select>
</el-form-item>
<el-form-item label="Format ID">

37
src/views/modules/part/external.vue

@ -15,6 +15,7 @@ import LinkedManufacturer from './manufacturer/linkedManufacturer.vue'
import {getExternalPartManufacturerList} from '../../../api/part/externalPartManufacturer'
import {getTableDefaultListLanguage, getTableUserListLanguage} from '../../../api/table'
import {Decimal} from 'decimal.js'
import {getCategoryList} from '../../../api/category/categoty'
let part = {
site:'',
@ -54,10 +55,7 @@ export default {
active:'Y',
},
partCategoryList:[
{categoryNo:'Hardware(Antenna)',categoryDesc:'Hardware(Antenna)',manufacturerRequired:'N',moldCodeRequired:'N',serialNumberRequired:'Y'},
{categoryNo:'Alpha/Hard Tag',categoryDesc:'Alpha/Hard Tag',manufacturerRequired:'Y',moldCodeRequired:'Y',serialNumberRequired:'Y'},
{categoryNo:'RF',categoryDesc:'RF',manufacturerRequired:'N',moldCodeRequired:'N',serialNumberRequired:'N'},
{categoryNo:'RFID',categoryDesc:'RFID',manufacturerRequired:'N',moldCodeRequired:'N',serialNumberRequired:'N'},
],
partRules:{
partNo: [{ required: true, message: 'Please input Part No', trigger: ['blur','change'] }],
@ -704,11 +702,17 @@ export default {
this.savePart.partNo = newVal.toUpperCase()
},
"savePart.category"(newVal,oldVal){
const category = this.partCategoryList.find((item)=>item.categoryNo === newVal);
const category = this.partCategoryList.find((item)=>item.categoryValue === newVal);
if (category){
this.savePart.manufacturerRequired = category.manufacturerRequired;
this.savePart.moldCodeRequired = category.moldCodeRequired;
this.savePart.serialNumberRequired = category.serialNumberRequired;
this.savePart.rollLabelRequired = category.rollLabelRequired;
if (this.savePart.serialNumberRequired === 'Y'){
this.savePart.qtyPerRoll = 1;
this.savePart.rollsPerCarton = 1;
this.savePart.qtyPerCarton = 1;
}
}
},
"part.partNo"(newVal,oldVal){
@ -818,7 +822,7 @@ export default {
moldCodeRequired: 'N',
serialNumberRequired: 'N',
}
this.savePart.category = this.partCategoryList.length > 0 ? this.partCategoryList[0].categoryNo : ''
this.savePart.category = this.partCategoryList.length > 0 ? this.partCategoryList[0].categoryValue : ''
this.savePartVisible = true;
}
},
@ -1005,12 +1009,25 @@ export default {
qtyPerCarton(){
return new Decimal(this.savePart.qtyPerRoll).mul(this.savePart.rollsPerCarton).toNumber();
},
getCategoryList(){
let params = {};
getCategoryList(params).then(({data})=>{
if (data && data.code === 0){
this.partCategoryList = data.rows;
}else {
this.$message.warning(data.msg)
}
}).catch((error)=>{
this.$message.error(error)
})
},
},
computed:{
},
created () {
this.selectUnitList();
this.getCategoryList();
this.selectExternalPartList();
this.getTableUserColumn("10002Table", 1)
this.getTableUserColumn("10002Table2", 2)
@ -1032,7 +1049,7 @@ export default {
<el-form-item label="Part Category">
<el-select v-model="part.category" placeholder="">
<el-option label="All" value=""></el-option>
<el-option :label="item.categoryDesc" :value="item.categoryNo" :key="item.categoryNo" v-for="item in partCategoryList"></el-option>
<el-option :label="item.categoryName" :value="item.categoryValue" :key="item.id" v-for="item in partCategoryList"></el-option>
</el-select>
</el-form-item>
<el-form-item label="Active">
@ -1106,7 +1123,7 @@ export default {
<el-col :span="7">
<el-form-item label="Part Category" prop="category" :show-message="false">
<el-select v-model="savePart.category" placeholder="" style="width: 100%">
<el-option :label="item.categoryDesc" :value="item.categoryNo" :key="item.categoryNo" v-for="item in partCategoryList"></el-option>
<el-option :label="item.categoryName" :value="item.categoryValue" :key="item.id" v-for="item in partCategoryList"></el-option>
</el-select>
</el-form-item>
</el-col>
@ -1127,12 +1144,12 @@ export default {
</el-col>
<el-col :span="7">
<el-form-item label="Qty Per Roll" prop="qtyPerRoll" :show-message="false">
<el-input-number :step="0" :min="0" :controls="false" v-model="savePart.qtyPerRoll"></el-input-number>
<el-input-number :step="0" :min="0" :controls="false" :disabled="this.savePart.serialNumberRequired === 'Y'" v-model="savePart.qtyPerRoll"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="Rolls Per Carton" prop="rollsPerCarton" :show-message="false">
<el-input-number :step="0" :min="0" :controls="false" v-model="savePart.rollsPerCarton"></el-input-number>
<el-input-number :step="0" :min="0" :controls="false" :disabled="this.savePart.serialNumberRequired === 'Y'" v-model="savePart.rollsPerCarton"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="7">

Loading…
Cancel
Save