|
|
|
@ -191,10 +191,11 @@ |
|
|
|
<el-table-column |
|
|
|
header-align="center" |
|
|
|
align="center" |
|
|
|
width="100" |
|
|
|
width="120" |
|
|
|
fixed="left" |
|
|
|
label="操作"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-link style="cursor: pointer; margin-right: 8px" @click="printMaterialLabel(scope.row)">打印</el-link> |
|
|
|
<el-link style="cursor: pointer" v-if="scope.row.finishedFlag == 'N' && scope.row.histType == '发料'" @click="showReturnMaterialDialog(scope.row)">异常退料</el-link> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
@ -362,6 +363,7 @@ import { |
|
|
|
materialReturnDuringProduction |
|
|
|
} from '@/api/schedule/materialOnMachineRecord.js'; |
|
|
|
import {getSiteList } from "@/api/report/partTemplateStatus.js"; |
|
|
|
import { callUspPartLabelTemplate } from '@/api/wms/wms'; |
|
|
|
import getLodop from '@/utils/LodopFuncs.js'; |
|
|
|
import labelPrintTemplates from '@/mixins/labelPrintTemplates.js'; |
|
|
|
|
|
|
|
@ -642,6 +644,69 @@ export default { |
|
|
|
this.returnLoading = false; |
|
|
|
}); |
|
|
|
}, |
|
|
|
// 打印材料清单中的卷标签 |
|
|
|
async printMaterialLabel(row) { |
|
|
|
try { |
|
|
|
// 1. 获取 LODOP 打印控件 |
|
|
|
const LODOP = getLodop(); |
|
|
|
if (!LODOP) { |
|
|
|
this.$message.error('无法连接到打印控件,请确保已安装并启动 CLodop!'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 2. 获取默认打印机 |
|
|
|
const printerCount = LODOP.GET_PRINTER_COUNT(); |
|
|
|
if (printerCount <= 0) { |
|
|
|
this.$message.error('未检测到打印机,请确保已安装并连接打印机!'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 3. 调用存储过程获取打印参数 |
|
|
|
const params = { |
|
|
|
site: row.site, |
|
|
|
buNo: '', |
|
|
|
menuID: '104003006', |
|
|
|
relatedOrderNo: row.orderNo, |
|
|
|
relatedOrderLineNo: row.seqNo, |
|
|
|
documentNo: '', |
|
|
|
partNo: row.partNo, |
|
|
|
labelNo: '', |
|
|
|
rollNo: row.rmRollNo |
|
|
|
}; |
|
|
|
|
|
|
|
const {data: printData} = await callUspPartLabelTemplate(params); |
|
|
|
if (printData && printData.code === 0 && printData.row) { |
|
|
|
const labelData = printData.row; |
|
|
|
|
|
|
|
// 初始化打印任务 |
|
|
|
LODOP.PRINT_INIT('材料卷标签打印_' + row.rmRollNo); |
|
|
|
LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE", true); |
|
|
|
|
|
|
|
// 根据 labelNo 调用不同的打印方法 |
|
|
|
if (labelData.labelNo === 'A001') { |
|
|
|
await this.printLabelA001(LODOP, labelData, false); |
|
|
|
} else if (labelData.labelNo === 'A002') { |
|
|
|
this.printLabelA002(LODOP, labelData, false); |
|
|
|
} else if (labelData.labelNo === 'A003') { |
|
|
|
this.printLabelA003(LODOP, labelData, false); |
|
|
|
} else if (labelData.labelNo === 'A004') { |
|
|
|
this.printLabelA004(LODOP, labelData, false); |
|
|
|
} else { |
|
|
|
this.$message.warning(`未知的标签模板:${labelData.labelNo}`); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 执行打印 |
|
|
|
LODOP.PRINT(); |
|
|
|
this.$message.success('打印任务已发送!'); |
|
|
|
} else { |
|
|
|
this.$message.error(printData.msg || '获取打印参数失败'); |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
console.error('打印材料标签失败:', error); |
|
|
|
this.$message.error('打印失败: ' + (error.message || '请重试')); |
|
|
|
} |
|
|
|
}, |
|
|
|
// 执行打印 |
|
|
|
executePrint(printDataList) { |
|
|
|
try { |
|
|
|
|