|
|
|
@ -307,7 +307,7 @@ |
|
|
|
</template> |
|
|
|
<script> |
|
|
|
|
|
|
|
import { getOtherInboundDetails, getMaterialList, validateLabelWithOtherInbound, confirmOtherInbound, getScannedLabelList } from "@/api/other-inbound/other-inbound.js"; |
|
|
|
import { getOtherInboundDetails, getMaterialList, validateLabelWithOtherInbound, confirmOtherInbound, getScannedLabelList, getUserDefaultPrinter } from "@/api/other-inbound/other-inbound.js"; |
|
|
|
import { getInventoryStock } from "@/api/inbound.js"; |
|
|
|
import { getCurrentWarehouse } from '@/utils' |
|
|
|
import moment from 'moment'; |
|
|
|
@ -614,28 +614,71 @@ export default { |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取当前用户配置的默认打印机 |
|
|
|
* @param {String} labelNo - 标签模板编号(A001/A002/A003) |
|
|
|
* @returns {Object} 打印机配置 {printerName, printerIp} |
|
|
|
*/ |
|
|
|
async fetchUserDefaultPrinter(labelNo) { |
|
|
|
try { |
|
|
|
const params = { |
|
|
|
userName: localStorage.getItem('userName'), |
|
|
|
labelNo: labelNo || '' |
|
|
|
}; |
|
|
|
|
|
|
|
const { data } = await getUserDefaultPrinter(params); |
|
|
|
|
|
|
|
if (data && data.code === 0 && data.printerName) { |
|
|
|
return { |
|
|
|
printerName: data.printerName, |
|
|
|
printerIp: data.printerIp, |
|
|
|
labelNo: data.labelNo |
|
|
|
}; |
|
|
|
} |
|
|
|
return null; |
|
|
|
} catch (error) { |
|
|
|
console.error('获取用户打印机配置失败:', error); |
|
|
|
return null; |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
/** |
|
|
|
* 使用模板打印标签 |
|
|
|
* @param {Array} printList - 打印数据列表(存储过程UspPartLabelTemplate返回) |
|
|
|
*/ |
|
|
|
async printLabelsWithTemplate(printList) { |
|
|
|
try { |
|
|
|
// 1. 获取打印机 |
|
|
|
// 1. 获取 LODOP 打印控件 |
|
|
|
const LODOP = getLodop(); |
|
|
|
if (!LODOP) { |
|
|
|
console.warn('无法连接到打印控件,跳过打印'); |
|
|
|
this.$message.warning('无法连接到打印控件,请确保已安装并启动打印服务'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 获取默认打印机 |
|
|
|
// 2. 检测打印机数量 |
|
|
|
const printerCount = LODOP.GET_PRINTER_COUNT(); |
|
|
|
if (printerCount === 0) { |
|
|
|
console.warn('未检测到打印机,跳过打印'); |
|
|
|
this.$message.warning('未检测到打印机,请检查打印机连接'); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
// 2. 执行打印 |
|
|
|
this.executePrintWithTemplate(LODOP, printList); |
|
|
|
// 3. 获取用户配置的默认打印机 |
|
|
|
// 使用第一个标签的 labelNo 来查询打印机配置 |
|
|
|
const firstLabelNo = printList.length > 0 ? printList[0].labelNo : ''; |
|
|
|
const printerConfig = await this.fetchUserDefaultPrinter(firstLabelNo); |
|
|
|
|
|
|
|
let printerName = null; |
|
|
|
if (printerConfig && printerConfig.printerName) { |
|
|
|
printerName = printerConfig.printerName; |
|
|
|
console.log('使用用户配置的打印机:', printerName); |
|
|
|
} else { |
|
|
|
console.log('未找到用户打印机配置,使用默认打印机'); |
|
|
|
} |
|
|
|
|
|
|
|
// 4. 执行打印 |
|
|
|
this.executePrintWithTemplate(LODOP, printList, printerName); |
|
|
|
|
|
|
|
this.$message.success('标签打印任务已发送!'); |
|
|
|
|
|
|
|
@ -649,10 +692,10 @@ export default { |
|
|
|
* 执行模板打印 |
|
|
|
* @param {Object} LODOP - 打印控件对象 |
|
|
|
* @param {Array} printDataList - 打印数据列表 |
|
|
|
* @param {String} printerName - 打印机名称 |
|
|
|
* @param {String} printerName - 用户配置的打印机名称(可选) |
|
|
|
*/ |
|
|
|
executePrintWithTemplate(LODOP, printDataList) { |
|
|
|
console.log('开始打印,标签数量:', printDataList.length, '标签数据:', printDataList); |
|
|
|
executePrintWithTemplate(LODOP, printDataList, printerName) { |
|
|
|
console.log('开始打印,标签数量:', printDataList.length, '打印机:', printerName || '默认', '标签数据:', printDataList); |
|
|
|
|
|
|
|
// 循环打印每个标签(每个标签单独打印一次) |
|
|
|
for (let i = 0; i < printDataList.length; i++) { |
|
|
|
@ -664,6 +707,11 @@ export default { |
|
|
|
// 每个标签单独初始化一个打印任务 |
|
|
|
LODOP.PRINT_INIT('其他入库标签打印_' + (i + 1)); |
|
|
|
|
|
|
|
// 设置用户配置的打印机(如果有) |
|
|
|
if (printerName) { |
|
|
|
LODOP.SET_PRINTER_INDEX(printerName); |
|
|
|
} |
|
|
|
|
|
|
|
// 设置打印模式 |
|
|
|
LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE", true); |
|
|
|
|
|
|
|
@ -678,9 +726,10 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
// 执行打印 |
|
|
|
//LODOP.PREVIEW(); |
|
|
|
LODOP.PRINT(); |
|
|
|
|
|
|
|
console.log(`第${i + 1}张标签已发送打印, 标签条码: ${printData.rollNo}`); |
|
|
|
console.log(`第${i + 1}张标签已发送打印, 打印机: ${printerName || '默认'}, 标签条码: ${printData.rollNo}`); |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
|