Browse Source

2025-12-03

下料打印优化
master
fengyuan_yang 10 months ago
parent
commit
14984c26df
  1. 110
      src/views/modules/yieldReport/com_cutting_material.vue

110
src/views/modules/yieldReport/com_cutting_material.vue

@ -48,10 +48,12 @@ import {
processCuttingMaterialRoll, processCuttingMaterialRoll,
} from "@/api/yieldReport/com_cutting_material.js"; } from "@/api/yieldReport/com_cutting_material.js";
/*打印标签专用的js*/
import { import {
printMaterialLabel,
} from "@/views/modules/yieldReport/print_roll_label.js"
callUspPartLabelTemplate
} from '@/api/wms/wms';
import getLodop from '@/utils/LodopFuncs.js';
import labelPrintTemplates from '@/mixins/labelPrintTemplates.js';
import { import {
searchSysLanguagePackList, searchSysLanguagePackList,
@ -69,6 +71,7 @@ import {
var functionId = 'C10000017'; var functionId = 'C10000017';
export default { export default {
mixins: [labelPrintTemplates],
data() { data() {
return { return {
titleCon: '材料退料', titleCon: '材料退料',
@ -280,15 +283,110 @@ export default {
this.$message.success(data.msg); this.$message.success(data.msg);
//刷新报工的页面 //刷新报工的页面
this.$emit('refreshPageData'); this.$emit('refreshPageData');
//打印材料卷标签
let printList = data.printList;
printMaterialLabel(printList);
//获取返回的卷号并打印
const printRollNo = data.printRollNo;
if (printRollNo) {
this.printLabelWithTemplate(printRollNo);
}
//关闭当前的页面 //关闭当前的页面
this.closeDialog(); this.closeDialog();
} }
}); });
}, },
/**
* 使用模板打印标签
* @param {String} rollNo - 卷号
*/
async printLabelWithTemplate(rollNo) {
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传空,由存储过程返回)
const params = {
site: this.scheduleData.site,
buNo: this.scheduleData.buNo,
menuID: '104003006', // 功能ID
relatedOrderNo: this.scheduleData.orderNo,
relatedOrderLineNo: this.scheduleData.seqNo,
documentNo: '',
partNo: this.scheduleData.partNo,
labelNo: '', // 传空字符串,由存储过程返回labelNo
rollNo: rollNo
};
const {data: printData} = await callUspPartLabelTemplate(params);
if (printData && printData.code === 0 && printData.row) {
const labelNo = printData.row.labelNo;
if (!labelNo) {
console.warn('未获取到标签模板编号,跳过打印');
return;
}
// 4. 执行模板打印
this.executePrintWithTemplate(LODOP, [printData.row], labelNo, defaultPrinterName);
this.$message.success('标签打印任务已发送!');
} else {
console.warn('获取打印参数失败');
}
} 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();
},
// 保存 默认配置 列 // 保存 默认配置 列
async saveMultiLanguage() { async saveMultiLanguage() {
// 保存页面 button label title 属性 // 保存页面 button label title 属性

Loading…
Cancel
Save