diff --git a/package-lock.json b/package-lock.json index d68aa18..0ecbcfc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3789,6 +3789,11 @@ "randombytes": "^2.0.0" } }, + "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", @@ -4033,11 +4038,21 @@ "minimalistic-crypto-utils": "^1.0.0" } }, + "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", @@ -15300,6 +15315,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", @@ -16404,6 +16424,183 @@ "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, + "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", diff --git a/package.json b/package.json index a43e490..246fd38 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "build": "gulp" }, "dependencies": { + "qrcode": "^1.5.3", "axios": "0.17.1", "babel-plugin-component": "0.10.1", "babel-polyfill": "6.26.0", diff --git a/src/api/partspare/inventorystock.js b/src/api/partspare/inventorystock.js index 93bc164..db14058 100644 --- a/src/api/partspare/inventorystock.js +++ b/src/api/partspare/inventorystock.js @@ -104,8 +104,8 @@ export function partSpareTemp(dataList) { LODOP.SET_PRINT_STYLEA(0,"LineSpacing",-3); } // LODOP.PRINT_DESIGN(); - //LODOP.PREVIEW(); - LODOP.PRINT(); + LODOP.PREVIEW(); + //LODOP.PRINT(); } } diff --git a/src/api/qc/qcPrint.js b/src/api/qc/qcPrint.js new file mode 100644 index 0000000..0fcc1c4 --- /dev/null +++ b/src/api/qc/qcPrint.js @@ -0,0 +1,25 @@ +import getLodop from '@/utils/LodopFuncs.js' + +// 打印 +export function qcPrint(dataList) { + const LODOP = getLodop() + if (LODOP) { + for (const row of dataList) { + LODOP.NewPage() + LODOP.SET_PRINT_PAGESIZE(0,500,250,"") + LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE",1); + //LODOP.ADD_PRINT_BARCODE(8,5,80,85,"QRCode",row.inspectionNo) + LODOP.ADD_PRINT_IMAGE(2,-2,"16.85mm","18.44mm",``); + LODOP.SET_PRINT_STYLEA(0,"FontSize",8) + LODOP.ADD_PRINT_TEXT(23,67,127,22,row.inspectionNo) + LODOP.SET_PRINT_STYLEA(0,"FontName","@微软雅黑"); + } + //LODOP.PRINT_DESIGN(); + //LODOP.PREVIEW(); + LODOP.PRINT(); + } + +} + + + diff --git a/src/views/modules/common/QrCode.vue b/src/views/modules/common/QrCode.vue new file mode 100644 index 0000000..f56ad4c --- /dev/null +++ b/src/views/modules/common/QrCode.vue @@ -0,0 +1,51 @@ + + + + + diff --git a/src/views/modules/qc/FAIResultEntry.vue b/src/views/modules/qc/FAIResultEntry.vue index 00ae5b9..089a40d 100644 --- a/src/views/modules/qc/FAIResultEntry.vue +++ b/src/views/modules/qc/FAIResultEntry.vue @@ -91,6 +91,7 @@ 新增 审核 删除 + 打印 + + + @@ -951,12 +955,15 @@ getOperatorList } from '@/api/eam/eam.js' import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js' + import {qcPrint} from '@/api/qc/qcPrint.js' import qcFAIUploadFile from "./qc_FAI_upload_file" import comQcItemImageUploadFile from "./com_qc_itemImage_upload_file" import subDetailUpload from "./sub_detail_upload" + import QrCode from "../common/QrCode.vue"; /*上传文件的組件*/ export default { components: { + QrCode, Chooselist, qcFAIUploadFile, comQcItemImageUploadFile, @@ -2407,6 +2414,20 @@ }, methods: { + + // 批量打印标签 + printList () { + if (this.FAISelections.length === 0) { + this.$message.warning('请勾选要打印的检验单!') + return + } + const inspectionNos = this.$refs.qrCode.init(this.FAISelections.map(item => item.inspectionNo)) + for (let i = 0; i < inspectionNos.length; i++) { + this.FAISelections[i].qrCode = inspectionNos[i] + } + qcPrint(this.FAISelections) + }, + // 数据采集 dataAcquisition () { this.loadFlag = true diff --git a/src/views/modules/qc/FQCResultEntry.vue b/src/views/modules/qc/FQCResultEntry.vue index 1179d62..845747b 100644 --- a/src/views/modules/qc/FQCResultEntry.vue +++ b/src/views/modules/qc/FQCResultEntry.vue @@ -92,6 +92,7 @@ 新增 审核 删除 + 打印 + + + @@ -928,12 +932,15 @@ getOperatorList } from '@/api/eam/eam.js' import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js' + import {qcPrint} from '@/api/qc/qcPrint.js' import qcFAIUploadFile from "./qc_FAI_upload_file" import comQcItemImageUploadFile from "./com_qc_itemImage_upload_file" import subDetailUpload from "./sub_detail_upload" + import QrCode from "../common/QrCode.vue"; /*上传文件的組件*/ export default { components: { + QrCode, Chooselist, qcFAIUploadFile, comQcItemImageUploadFile, @@ -2382,6 +2389,20 @@ }, methods: { + + // 批量打印标签 + printList () { + if (this.FAISelections.length === 0) { + this.$message.warning('请勾选要打印的检验单!') + return + } + const inspectionNos = this.$refs.qrCode.init(this.FAISelections.map(item => item.inspectionNo)) + for (let i = 0; i < inspectionNos.length; i++) { + this.FAISelections[i].qrCode = inspectionNos[i] + } + qcPrint(this.FAISelections) + }, + // 数据采集 dataAcquisition () { this.loadFlag = true diff --git a/src/views/modules/qc/IPQCResultEntry.vue b/src/views/modules/qc/IPQCResultEntry.vue index b2fe791..28d8efc 100644 --- a/src/views/modules/qc/IPQCResultEntry.vue +++ b/src/views/modules/qc/IPQCResultEntry.vue @@ -95,6 +95,7 @@ 新增 审核 删除 + 打印 + + + @@ -954,12 +958,15 @@ getOperatorList } from '@/api/eam/eam.js' import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js' + import {qcPrint} from '@/api/qc/qcPrint.js' import qcFAIUploadFile from "./qc_FAI_upload_file" import comQcItemImageUploadFile from "./com_qc_itemImage_upload_file" import subDetailUpload from "./sub_detail_upload"; + import QrCode from "../common/QrCode.vue"; /*上传文件的組件*/ export default { components: { + QrCode, Chooselist, qcFAIUploadFile, comQcItemImageUploadFile, @@ -2442,6 +2449,20 @@ }, methods: { + + // 批量打印标签 + printList () { + if (this.IPQCSelections.length === 0) { + this.$message.warning('请勾选要打印的检验单!') + return + } + const inspectionNos = this.$refs.qrCode.init(this.IPQCSelections.map(item => item.inspectionNo)) + for (let i = 0; i < inspectionNos.length; i++) { + this.IPQCSelections[i].qrCode = inspectionNos[i] + } + qcPrint(this.IPQCSelections) + }, + // 数据采集 dataAcquisition () { this.loadFlag = true diff --git a/src/views/modules/qc/IQCResultEntry.vue b/src/views/modules/qc/IQCResultEntry.vue index fbda773..73dc22b 100644 --- a/src/views/modules/qc/IQCResultEntry.vue +++ b/src/views/modules/qc/IQCResultEntry.vue @@ -108,6 +108,7 @@ 审核 删除 任务重载 + 打印 + + + @@ -660,11 +664,14 @@ getOperatorList } from '@/api/eam/eam.js' import {userFavoriteList, saveUserFavorite, removeUserFavorite} from '@/api/userFavorite.js' + import {qcPrint} from '@/api/qc/qcPrint.js' import qcFAIUploadFile from "./qc_FAI_upload_file" import comQcItemImageUploadFile from "./com_qc_itemImage_upload_file" import subDetailUpload from "./sub_detail_upload" + import QrCode from "../common/QrCode.vue"; export default { components: { + QrCode, Chooselist, qcFAIUploadFile, comQcItemImageUploadFile, @@ -1764,6 +1771,20 @@ }, methods: { + + // 批量打印标签 + printList () { + if (this.IQCSelections.length === 0) { + this.$message.warning('请勾选要打印的检验单!') + return + } + const inspectionNos = this.$refs.qrCode.init(this.IQCSelections.map(item => item.inspectionNo)) + for (let i = 0; i < inspectionNos.length; i++) { + this.IQCSelections[i].qrCode = inspectionNos[i] + } + qcPrint(this.IQCSelections) + }, + // 数据采集 dataAcquisition () { this.loadFlag = true