|
|
|
@ -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,6 +253,21 @@ export default { |
|
|
|
//判断是否存在异常 |
|
|
|
if(data.code == 500 || data.code == 400){ |
|
|
|
this.$message.error(data.msg || data.message); |
|
|
|
} 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(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|
</script> |
|
|
|
|