From 228fff3fda344f01a0109daffe95bf99cb542875 Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Tue, 2 Dec 2025 16:57:21 +0800 Subject: [PATCH] =?UTF-8?q?2025-12-02=20=E6=9C=BA=E5=8F=B0=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E5=8F=B0=E5=BC=82=E5=B8=B8=E4=B8=8B=E6=9C=BA=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E6=89=93=E5=8D=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com_abnormal_material_offline.vue | 103 +++++++++++++++++- 1 file changed, 101 insertions(+), 2 deletions(-) diff --git a/src/views/modules/yieldReport/com_abnormal_material_offline.vue b/src/views/modules/yieldReport/com_abnormal_material_offline.vue index 65c6ce4..8f1d91a 100644 --- a/src/views/modules/yieldReport/com_abnormal_material_offline.vue +++ b/src/views/modules/yieldReport/com_abnormal_material_offline.vue @@ -116,10 +116,13 @@ import { materialReturnDuringProduction } from '@/api/yieldReport/com_abnormal_material_offline.js'; +import getLodop from '@/utils/LodopFuncs.js'; // 打印控件 +import labelPrintTemplates from '@/mixins/labelPrintTemplates.js'; // 打印模板mixin var functionId = 'C10000019'; export default { + mixins: [labelPrintTemplates], // 添加打印模板mixin data() { return { titleCon: '异常下机', @@ -238,7 +241,7 @@ export default { orderNo: this.pageData.orderNo, itemNo: this.pageData.itemNo, seqNo: this.pageData.seqNo, - rollNo: this.pageData.rollNo, + rollNo: this.pageData.rmRollNo, returnQty: this.pageData.returnQty, histSeqNo: this.pageData.histSeqNo, operatorId: this.pageData.operatorId, @@ -250,7 +253,22 @@ export default { //判断是否存在异常 if(data.code == 500 || data.code == 400){ this.$message.error(data.msg || data.message); - }else{ + } else if (data.code == 201) { + // code=201 表示需要打印标签 + this.$message.success(data.msg || '操作成功'); + + // 获取打印参数并打印(存储过程返回的打印参数在printData中) + if (data.printData) { + // 将单个打印数据对象包装成数组 + const printDataList = [data.printData]; + this.executePrint(printDataList); + } else { + console.warn('未获取到打印参数'); + } + + //关闭当前的页面 + this.closeDialog(); + } else { //先提示 后关闭 this.$message.success(data.msg || data.message || '操作成功'); //关闭当前的页面 @@ -260,6 +278,87 @@ export default { this.$message.error('操作失败:' + (error.message || '未知错误')); }); }, + + /** + * 执行打印(直接使用存储过程返回的打印参数) + * @param {Array} printDataList - 存储过程返回的打印数据列表 + */ + executePrint(printDataList) { + try { + // 1. 获取 LODOP 打印控件 + const LODOP = getLodop(); + if (!LODOP) { + this.$message.warning('无法连接到打印控件,跳过打印'); + return; + } + + // 2. 获取默认打印机 + const printerCount = LODOP.GET_PRINTER_COUNT(); + if (printerCount === 0) { + this.$message.warning('未检测到打印机,跳过打印'); + return; + } + const defaultPrinterName = LODOP.GET_PRINTER_NAME(0); + + // 3. 检查打印数据中的labelNo(标签模板编号) + if (!printDataList || printDataList.length === 0) { + console.warn('打印数据为空'); + return; + } + + // 获取第一条数据的labelNo + const labelNo = printDataList[0].labelNo; + if (!labelNo) { + console.warn('未找到标签模板编号'); + return; + } + + // 4. 执行模板打印 + this.executePrintWithTemplate(LODOP, printDataList, labelNo, defaultPrinterName); + + this.$message.success('标签打印任务已发送!'); + + } catch (error) { + console.error('打印失败:', error); + this.$message.warning('打印失败: ' + error.message); + } + }, + + /** + * 执行模板打印 + * @param {Object} LODOP - 打印控件对象 + * @param {Array} printDataList - 打印数据列表 + * @param {String} labelNo - 标签模板编号 (A001/A002/A003) + * @param {String} printerName - 打印机名称 + */ + executePrintWithTemplate(LODOP, printDataList, labelNo, printerName) { + LODOP.PRINT_INIT('异常下机标签打印'); + + // 设置打印模式,隐藏水印 + LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE", true); + + // 设置打印机 + LODOP.SET_PRINTER_INDEX(printerName); + + // 循环打印每个标签 + for (let i = 0; i < printDataList.length; i++) { + const printData = printDataList[i]; + const isNewPage = i > 0; + // 根据 labelNo 调用不同的打印方法(来自 labelPrintTemplates mixin) + if (labelNo === 'A001') { + this.printLabelA001(LODOP, printData, isNewPage); + } else if (labelNo === 'A002') { + this.printLabelA002(LODOP, printData, isNewPage); + } else if (labelNo === 'A003') { + this.printLabelA003(LODOP, printData, isNewPage); + } else { + console.warn(`未知的标签模板:${labelNo}`); + } + } + + // 预览打印(避免水印) + LODOP.PREVIEW(); + }, }, }