|
|
|
@ -245,10 +245,19 @@ |
|
|
|
saveSysLanguageList |
|
|
|
} from "@/api/sysLanguage.js"; |
|
|
|
|
|
|
|
import { |
|
|
|
getPartLabelTemplateList, |
|
|
|
callUspPartLabelTemplate |
|
|
|
} from '@/api/wms/wms'; |
|
|
|
|
|
|
|
import getLodop from '@/utils/LodopFuncs.js'; |
|
|
|
import labelPrintTemplates from '@/mixins/labelPrintTemplates.js'; |
|
|
|
|
|
|
|
var functionId = 'C10000004'; |
|
|
|
|
|
|
|
export default { |
|
|
|
name: "com_separate_roll", |
|
|
|
mixins: [labelPrintTemplates], |
|
|
|
data() { |
|
|
|
return { |
|
|
|
titleCon: '创建分卷', |
|
|
|
@ -263,6 +272,7 @@ export default { |
|
|
|
scheduledDate: '', |
|
|
|
shiftNo: '', |
|
|
|
partNo: '', |
|
|
|
buNo: '', |
|
|
|
workCenterNo: '', |
|
|
|
workCenterDesc: '', |
|
|
|
resourceDesc: '', |
|
|
|
@ -937,9 +947,9 @@ export default { |
|
|
|
// 所有卷创建完成 |
|
|
|
this.$message.success('创建分卷完成!') |
|
|
|
|
|
|
|
// 处理打印的数据 |
|
|
|
// 打印标签(优化版:使用模板打印) |
|
|
|
if (allPrintList.length > 0) { |
|
|
|
printSfdcLabel(allPrintList) |
|
|
|
await this.printLabelsWithTemplate(allPrintList) |
|
|
|
} |
|
|
|
|
|
|
|
// 延时关闭弹窗 |
|
|
|
@ -953,6 +963,140 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 使用模板打印标签(优化版) |
|
|
|
* @param {Array} printList - 打印数据列表 |
|
|
|
*/ |
|
|
|
async printLabelsWithTemplate(printList) { |
|
|
|
try { |
|
|
|
// 1. 查询物料的标签模板设置(找默认模板) |
|
|
|
const templateParams = { |
|
|
|
site: this.scheduleData.site, |
|
|
|
buNo: this.scheduleData.buNo, |
|
|
|
partNo: this.scheduleData.partNo |
|
|
|
}; |
|
|
|
|
|
|
|
const {data: templateData} = await getPartLabelTemplateList(templateParams); |
|
|
|
|
|
|
|
if (!templateData || templateData.code !== 0 || !templateData.list || templateData.list.length === 0) { |
|
|
|
// 如果没有模板配置,使用原有的流转标签打印方式 |
|
|
|
console.warn('未找到物料标签模板配置!'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 找到默认模板(default_flag = '1') |
|
|
|
let defaultTemplate = templateData.list.find(item => item.defaultFlag === '1'); |
|
|
|
if (!defaultTemplate && templateData.list.length > 0) { |
|
|
|
// 如果没有设置默认模板,使用第一个 |
|
|
|
defaultTemplate = templateData.list[0]; |
|
|
|
} |
|
|
|
|
|
|
|
if (!defaultTemplate) { |
|
|
|
console.warn('未找到默认模板!'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
const labelNo = defaultTemplate.labelNo; // A001、A002、A003 |
|
|
|
|
|
|
|
// 2. 获取打印机(使用默认打印机) |
|
|
|
const LODOP = getLodop(); |
|
|
|
if (!LODOP) { |
|
|
|
this.$message.warning('无法连接到打印控件,跳过打印'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 获取默认打印机 |
|
|
|
const printerCount = LODOP.GET_PRINTER_COUNT(); |
|
|
|
if (printerCount === 0) { |
|
|
|
this.$message.warning('未检测到打印机,跳过打印'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
const defaultPrinterName = LODOP.GET_PRINTER_NAME(0); // 使用第一个打印机作为默认打印机 |
|
|
|
|
|
|
|
// 3. 调用存储过程获取打印参数 |
|
|
|
const printDataList = []; |
|
|
|
|
|
|
|
for (let i = 0; i < printList.length; i++) { |
|
|
|
const item = printList[i]; |
|
|
|
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: item.rollNo |
|
|
|
}; |
|
|
|
|
|
|
|
const {data: printData} = await callUspPartLabelTemplate(params); |
|
|
|
if (printData && printData.code === 0 && printData.row) { |
|
|
|
printDataList.push({ |
|
|
|
...printData.row, |
|
|
|
labelNo: labelNo |
|
|
|
}); |
|
|
|
} else { |
|
|
|
console.warn(`获取卷号 ${item.rollNo} 的打印参数失败,使用原始数据`); |
|
|
|
// 如果获取打印参数失败,使用原始数据 |
|
|
|
printDataList.push({ |
|
|
|
...item, |
|
|
|
labelNo: labelNo |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 4. 执行打印 |
|
|
|
this.executePrintWithTemplate(LODOP, printDataList, labelNo, defaultPrinterName); |
|
|
|
|
|
|
|
this.$message.success('标签打印任务已发送!'); |
|
|
|
|
|
|
|
} catch (error) { |
|
|
|
console.error('模板打印失败:', error); |
|
|
|
this.$message.warning('模板打印失败,使用默认流转标签打印'); |
|
|
|
// 降级处理:使用原有的流转标签打印方式 |
|
|
|
printSfdcLabel(printList); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 执行模板打印 |
|
|
|
* @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() { |
|
|
|
// 保存页面 button label title 属性 |
|
|
|
|