|
|
@ -137,7 +137,16 @@ import { |
|
|
abnormalContinueRoll |
|
|
abnormalContinueRoll |
|
|
} from '@/api/yieldReport/abnormalRoll.js'; |
|
|
} from '@/api/yieldReport/abnormalRoll.js'; |
|
|
|
|
|
|
|
|
|
|
|
import { |
|
|
|
|
|
getPartLabelTemplateList, |
|
|
|
|
|
callUspPartLabelTemplate |
|
|
|
|
|
} from '@/api/wms/wms'; |
|
|
|
|
|
|
|
|
|
|
|
import getLodop from '@/utils/LodopFuncs.js'; |
|
|
|
|
|
import labelPrintTemplates from '@/mixins/labelPrintTemplates.js'; |
|
|
|
|
|
|
|
|
export default { |
|
|
export default { |
|
|
|
|
|
mixins: [labelPrintTemplates], |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
|
titleCon: '异常续卷', |
|
|
titleCon: '异常续卷', |
|
|
@ -147,6 +156,8 @@ export default { |
|
|
seqNo: '', |
|
|
seqNo: '', |
|
|
orderNo: '', |
|
|
orderNo: '', |
|
|
itemNo: 0, |
|
|
itemNo: 0, |
|
|
|
|
|
buNo: '', |
|
|
|
|
|
partNo: '', |
|
|
}, |
|
|
}, |
|
|
operatorData: { |
|
|
operatorData: { |
|
|
site: this.$store.state.user.site, |
|
|
site: this.$store.state.user.site, |
|
|
@ -272,8 +283,9 @@ export default { |
|
|
}; |
|
|
}; |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// 续卷操作 |
|
|
|
|
|
continueRoll() { |
|
|
|
|
|
|
|
|
// 续卷操作(类似产量报告,只有一卷) |
|
|
|
|
|
async continueRoll() { |
|
|
|
|
|
console.log(this.scheduleData) |
|
|
// 校验数量必须大于等于原始数量 |
|
|
// 校验数量必须大于等于原始数量 |
|
|
for (let i = 0; i < this.rowDataList.length; i++) { |
|
|
for (let i = 0; i < this.rowDataList.length; i++) { |
|
|
const currentRow = this.rowDataList[i]; |
|
|
const currentRow = this.rowDataList[i]; |
|
|
@ -306,22 +318,52 @@ export default { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 构建提交数据 |
|
|
|
|
|
const submitData = { |
|
|
|
|
|
processedBy: this.operatorData.operatorId || this.operatorData.username, |
|
|
|
|
|
rowDataList: this.rowDataList.map(row => ({ |
|
|
|
|
|
id: row.id, |
|
|
|
|
|
goodQty: row.goodQty, |
|
|
|
|
|
defectQty: row.defectQty, |
|
|
|
|
|
surfaceLossQty: row.surfaceLossQty, |
|
|
|
|
|
poorPerformanceQty: row.poorPerformanceQty, |
|
|
|
|
|
remark: row.remark || '' |
|
|
|
|
|
})) |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
// 计算总良品数(所有行良品数相加) |
|
|
|
|
|
let totalRollQty = 0; |
|
|
|
|
|
let rollRemark = ''; |
|
|
|
|
|
for (let i = 0; i < this.rowDataList.length; i++) { |
|
|
|
|
|
totalRollQty += parseFloat(this.rowDataList[i].goodQty) || 0; |
|
|
|
|
|
if (i === 0) { |
|
|
|
|
|
rollRemark = this.rowDataList[i].remark || ''; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 构建提交数据 |
|
|
|
|
|
const submitData = { |
|
|
|
|
|
site: this.scheduleData.site, |
|
|
|
|
|
orderNo: this.scheduleData.orderNo, |
|
|
|
|
|
itemNo: this.scheduleData.itemNo, |
|
|
|
|
|
seqNo: this.scheduleData.seqNo, |
|
|
|
|
|
batchRollNo: this.selectedRollNo.currentRollNo, // 主卷号 |
|
|
|
|
|
rollNo: this.selectedRollNo.newRollNo, // 分卷卷号 |
|
|
|
|
|
rollQty: totalRollQty, // 续卷数量 |
|
|
|
|
|
userid: this.operatorData.operatorId || this.operatorData.username, |
|
|
|
|
|
remark: rollRemark, |
|
|
|
|
|
// 用于更新缓存表的数据 |
|
|
|
|
|
processedBy: this.operatorData.operatorId || this.operatorData.username, |
|
|
|
|
|
rowDataList: this.rowDataList.map(row => ({ |
|
|
|
|
|
id: row.id, |
|
|
|
|
|
rowBumber: row.rowBumber, |
|
|
|
|
|
goodQty: row.goodQty, |
|
|
|
|
|
defectQty: row.defectQty, |
|
|
|
|
|
surfaceLossQty: row.surfaceLossQty, |
|
|
|
|
|
poorPerformanceQty: row.poorPerformanceQty, |
|
|
|
|
|
totalQty: (parseFloat(row.goodQty) || 0) + (parseFloat(row.defectQty) || 0), |
|
|
|
|
|
remark: row.remark || '' |
|
|
|
|
|
})) |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
const { data } = await abnormalContinueRoll(submitData); |
|
|
|
|
|
|
|
|
abnormalContinueRoll(submitData).then(({ data }) => { |
|
|
|
|
|
if (data.code === 0) { |
|
|
if (data.code === 0) { |
|
|
this.$message.success('续卷成功!'); |
|
|
this.$message.success('续卷成功!'); |
|
|
|
|
|
|
|
|
|
|
|
// 打印标签(和产量报告一样) |
|
|
|
|
|
if (data.printList && data.printList.length > 0) { |
|
|
|
|
|
await this.printLabelsWithTemplate(data.printList); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
// 刷新数据 |
|
|
// 刷新数据 |
|
|
this.loadRollNoList(); |
|
|
this.loadRollNoList(); |
|
|
this.selectedRollNo = { currentRollNo: '', newRollNo: '' }; |
|
|
this.selectedRollNo = { currentRollNo: '', newRollNo: '' }; |
|
|
@ -332,9 +374,126 @@ export default { |
|
|
} else { |
|
|
} else { |
|
|
this.$message.error(data.msg || '续卷失败'); |
|
|
this.$message.error(data.msg || '续卷失败'); |
|
|
} |
|
|
} |
|
|
}).catch(err => { |
|
|
|
|
|
|
|
|
} catch (err) { |
|
|
this.$message.error('续卷失败:' + (err.message || '未知错误')); |
|
|
this.$message.error('续卷失败:' + (err.message || '未知错误')); |
|
|
}); |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 使用模板打印标签(和创建分卷一样) |
|
|
|
|
|
* @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; |
|
|
|
|
|
|
|
|
|
|
|
// 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', |
|
|
|
|
|
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('模板打印失败'); |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 执行模板打印 |
|
|
|
|
|
*/ |
|
|
|
|
|
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; |
|
|
|
|
|
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(); |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
// 关闭对话框 |
|
|
// 关闭对话框 |
|
|
|