From e73ba25a8f3c85e096d68cca6219dc7c5e7b872a Mon Sep 17 00:00:00 2001 From: panchengyong Date: Sat, 14 Mar 2026 12:53:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=93=E5=BA=93=E7=AE=80=E6=98=93?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E3=80=81=E5=B7=A5=E4=BD=9C=E7=AB=99=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E6=89=93=E5=8D=B0=E3=80=81=E7=94=9F=E4=BA=A7=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=89=93=E5=8D=B0=E5=B7=A5=E5=BA=8F=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 仓库管理(mom-frontend-vue2): 新增简易标签打印,不依赖MinIO,使用前端qrcode+window.print - 工作站(erp-frontend-vue): 新增WorkstationLabelPrint组件,支持批量打印工作站标签 - 生产订单: handlePrint改用getProcessTasksByWorkorder,从工艺路线获取工序数据,解决无pro_task时打印无数据问题 Made-with: Cursor --- erp-frontend-vue/src/api/workOrder.ts | 14 +- .../print/WorkstationLabelPrint.vue | 170 +++++++++++++++++ .../views/MasterData/Workstation/index.vue | 25 ++- .../src/views/Production/WorkOrder/form.vue | 11 +- .../controller/ProWorkorderController.java | 46 ++++- mom-frontend-vue2/package.json | 1 + .../src/components/print/QrCode.vue | 51 ++++++ .../components/print/WarehouseLabelPrint.vue | 173 ++++++++++++++++++ .../src/views/mes/wm/warehouse/index.vue | 26 ++- 9 files changed, 507 insertions(+), 10 deletions(-) create mode 100644 erp-frontend-vue/src/components/print/WorkstationLabelPrint.vue create mode 100644 mom-frontend-vue2/src/components/print/QrCode.vue create mode 100644 mom-frontend-vue2/src/components/print/WarehouseLabelPrint.vue diff --git a/erp-frontend-vue/src/api/workOrder.ts b/erp-frontend-vue/src/api/workOrder.ts index 7c1a57c..9309e50 100644 --- a/erp-frontend-vue/src/api/workOrder.ts +++ b/erp-frontend-vue/src/api/workOrder.ts @@ -152,6 +152,10 @@ export function getWorkOrderDetail(workorderId: number): Promise { if (data.requestDate && !data.productionDate) { data.productionDate = data.requestDate } + // 后端返回 salesOrderCode(pp_number),确保前端有值 + if (data.ppNumber && !data.salesOrderCode) { + data.salesOrderCode = data.ppNumber + } return data }) } @@ -260,7 +264,7 @@ export interface ProTask { updateTime?: string } -/** 根据工单 ID 获取工序任务列表 */ +/** 根据工单 ID 获取工序任务列表(pro_task 表,需已排产) */ export function getTaskListByWorkorder(workorderId: number): Promise { return request.get('/mes/pro/protask/list', { params: { workorderId, pageNum: 1, pageSize: 500 } @@ -269,6 +273,14 @@ export function getTaskListByWorkorder(workorderId: number): Promise }) } +/** 根据工单 ID 获取工序列表(基于工艺路线,不依赖 pro_task,用于打印等) */ +export function getProcessTasksByWorkorder(workorderId: number): Promise { + return request.get(`/mes/pro/workorder/${workorderId}/processTasks`).then((res: any) => { + const data = res.data ?? res + return Array.isArray(data) ? data : [] + }) +} + // ============ 工艺路线选择 API ============ /** 工艺路线列表(选择弹窗,不默认过滤 enableFlag 以避免列表为空) */ diff --git a/erp-frontend-vue/src/components/print/WorkstationLabelPrint.vue b/erp-frontend-vue/src/components/print/WorkstationLabelPrint.vue new file mode 100644 index 0000000..63a6ae3 --- /dev/null +++ b/erp-frontend-vue/src/components/print/WorkstationLabelPrint.vue @@ -0,0 +1,170 @@ + + + + + + + diff --git a/erp-frontend-vue/src/views/MasterData/Workstation/index.vue b/erp-frontend-vue/src/views/MasterData/Workstation/index.vue index 98e3595..bd4b82e 100644 --- a/erp-frontend-vue/src/views/MasterData/Workstation/index.vue +++ b/erp-frontend-vue/src/views/MasterData/Workstation/index.vue @@ -32,6 +32,9 @@ 删除 + + 打印标签 + 确定 + + + diff --git a/mom-frontend-vue2/src/components/print/WarehouseLabelPrint.vue b/mom-frontend-vue2/src/components/print/WarehouseLabelPrint.vue new file mode 100644 index 0000000..3b90e2f --- /dev/null +++ b/mom-frontend-vue2/src/components/print/WarehouseLabelPrint.vue @@ -0,0 +1,173 @@ + + + + + + + diff --git a/mom-frontend-vue2/src/views/mes/wm/warehouse/index.vue b/mom-frontend-vue2/src/views/mes/wm/warehouse/index.vue index cc9c99b..c3c1f19 100644 --- a/mom-frontend-vue2/src/views/mes/wm/warehouse/index.vue +++ b/mom-frontend-vue2/src/views/mes/wm/warehouse/index.vue @@ -91,7 +91,7 @@ - + @@ -207,6 +214,12 @@ 取 消 + + + @@ -215,13 +228,14 @@ import { listWarehouse, getWarehouse, delWarehouse, addWarehouse, updateWarehous import UserSingleSelect from "@/components/userSelect/single.vue" import {genCode} from "@/api/system/autocode/rule" import BarcodeImg from "@/components/barcodeImg/index.vue" +import WarehouseLabelPrint from "@/components/print/WarehouseLabelPrint.vue" import { getBarcodeUrl } from '@/api/mes/wm/barcode'; import {print} from "../../../../utils/print" import {getByTemplateType} from "@/api/print/template"; import { hiprintMixin } from "../../../../mixins/hiprintMixin"; export default { name: "Warehouse", - components: { BarcodeImg ,UserSingleSelect} , + components: { BarcodeImg, UserSingleSelect, WarehouseLabelPrint }, mixins: [hiprintMixin], data() { return { @@ -246,6 +260,9 @@ export default { title: "", // 是否显示弹出层 open: false, + // 简易打印弹窗 + printDialogVisible: false, + printWarehouses: [], // 查询参数 queryParams: { pageNum: 1, @@ -297,6 +314,11 @@ export default { this.getList(); }, methods: { + // 简易打印(不依赖MinIO,纯前端二维码+window.print) + handleSimplePrint(row) { + this.printWarehouses = [row] + this.printDialogVisible = true + }, // 使用HiPrint打印 async handleHiPrint(row) { let printData = row