Browse Source

2025-12-24

pda拆和组托提交时调用打印
master
fengyuan_yang 3 weeks ago
parent
commit
a1ff46cd28
  1. 11
      src/api/label-split-merge/label-split-merge.js
  2. 137
      src/views/modules/label-split-merge/labelSplitMerge.vue

11
src/api/label-split-merge/label-split-merge.js

@ -38,4 +38,13 @@ export const splitLabel = data => createAPI(`label-split-merge/split`, 'post', d
* @param {number} data.targetQuantity - 目标标签数量
* @param {number} data.sourceQuantity - 源标签数量
*/
export const mergeLabel = data => createAPI(`label-split-merge/merge`, 'post', data)
export const mergeLabel = data => createAPI(`label-split-merge/merge`, 'post', data)
/**
* 获取用户默认打印机配置
* @param {Object} data - 查询参数
* @param {string} data.site - 站点
* @param {string} data.username - 用户名
* @param {string} data.labelNo - 标签模板编号
*/
export const getUserDefaultPrinter = data => createAPI(`otherInbound/getUserDefaultPrinter`, 'post', data)

137
src/views/modules/label-split-merge/labelSplitMerge.vue

@ -128,10 +128,13 @@
</template>
<script>
import { getStockInfoByLabelCode, splitLabel, mergeLabel } from "@/api/label-split-merge/label-split-merge.js";
import { getStockInfoByLabelCode, splitLabel, mergeLabel, getUserDefaultPrinter } from "@/api/label-split-merge/label-split-merge.js";
import { getCurrentWarehouse } from '@/utils'
import getLodop from '@/utils/LodopFuncs.js';
import labelPrintTemplates from '@/mixins/labelPrintTemplates.js';
export default {
mixins: [labelPrintTemplates],
data() {
return {
scanCode: '',
@ -227,10 +230,17 @@ export default {
status: this.currentLabel.status,
statusTb: this.currentLabel.statusTb
};
splitLabel(params).then(({ data }) => {
splitLabel(params).then(async ({ data }) => {
if (data && data.code === 0) {
this.$message.success(`拆分成功!新标签: ${data.data.newLabelCode}`);
this.closeSplitDialog();
//
const printList = data.data.printList || [];
if (printList.length > 0) {
await this.printLabelsWithTemplate(printList);
}
//
this.getStockInfo(this.currentLabel.labelCode);
} else {
@ -311,10 +321,17 @@ export default {
statusTb: this.currentLabel.statusTb
};
mergeLabel(mergeParams).then(({ data }) => {
mergeLabel(mergeParams).then(async ({ data }) => {
if (data && data.code === 0) {
this.$message.success('合并成功!');
this.closeMergeDialog();
// /
const printList = data.data.printList || [];
if (printList.length > 0) {
await this.printLabelsWithTemplate(printList);
}
//
this.currentLabel = {};
//
@ -338,6 +355,120 @@ export default {
console.error('获取目标标签信息失败:', error);
this.$message.error('获取目标标签信息失败');
});
},
/**
* 获取用户默认打印机配置
*/
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. 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;
}
// 3.
const firstLabel = printList[0] || {};
const printerConfig = await this.fetchUserDefaultPrinter(firstLabel.labelNo);
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('标签打印任务已发送!');
} catch (error) {
console.error('模板打印失败:', error);
this.$message.warning('标签打印失败,请手动打印');
}
},
/**
* 执行模板打印
* @param {Object} LODOP - 打印控件对象
* @param {Array} printDataList - 打印数据列表
* @param {String} printerName - 用户配置的打印机名称可选
*/
executePrintWithTemplate(LODOP, printDataList, printerName) {
console.log('开始打印,标签数量:', printDataList.length, '打印机:', printerName || '默认', '标签数据:', printDataList);
//
for (let i = 0; i < printDataList.length; i++) {
const printData = printDataList[i];
//
const labelNo = printData.labelNo;
//
LODOP.PRINT_INIT('拆合组托标签打印_' + (i + 1));
//
if (printerName) {
LODOP.SET_PRINTER_INDEX(printerName);
}
//
LODOP.SET_PRINT_MODE("PRINT_NOCOLLATE", true);
//
if (labelNo === 'A001') {
this.printLabelA001(LODOP, printData, false);
} else if (labelNo === 'A002') {
this.printLabelA002(LODOP, printData, false);
} else if (labelNo === 'A003') {
this.printLabelA003(LODOP, printData, false);
} else {
// 使 A001
console.warn('未知标签模板:', labelNo, ',使用默认模板 A001');
this.printLabelA001(LODOP, printData, false);
}
//
LODOP.PRINT();
}
}
},

Loading…
Cancel
Save