From 38839c327f123750aa2f55ff27e70c2c68170cc0 Mon Sep 17 00:00:00 2001 From: shenzhouyu Date: Mon, 24 Nov 2025 17:06:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E6=96=99=E9=80=80=E6=96=99=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../production-issue/directIssueDetail.vue | 2 +- .../productionPickingDetail.vue | 2 +- .../productionReturnIssueList.vue | 1 + .../productionReturnPDAIssueList.vue | 149 +++++++++++++++ .../productionReturnPDAList.vue | 2 + .../productionReturnPickingDetail.vue | 174 +++++++++++++++++- 6 files changed, 326 insertions(+), 4 deletions(-) diff --git a/src/views/modules/production-issue/directIssueDetail.vue b/src/views/modules/production-issue/directIssueDetail.vue index a470e50..e1a1e39 100644 --- a/src/views/modules/production-issue/directIssueDetail.vue +++ b/src/views/modules/production-issue/directIssueDetail.vue @@ -168,7 +168,7 @@ export default { return { scanCode: '', isRemoveMode: false, - isPartial: false, + isPartial: true, scannedLabels: [], workOrderNo: '', componentPartNo: '', diff --git a/src/views/modules/production-issue/productionPickingDetail.vue b/src/views/modules/production-issue/productionPickingDetail.vue index 61efe69..776caba 100644 --- a/src/views/modules/production-issue/productionPickingDetail.vue +++ b/src/views/modules/production-issue/productionPickingDetail.vue @@ -177,7 +177,7 @@ export default { materialListLoading: false, isRemoveMode: false, // 默认为添加模式 pickingLoading: false, - isPartial: false, + isPartial: true, quantityDialogVisible: false, currentEditLabel: {}, currentEditIndex: -1, diff --git a/src/views/modules/production-return/productionReturnIssueList.vue b/src/views/modules/production-return/productionReturnIssueList.vue index 6ba2987..0897e6f 100644 --- a/src/views/modules/production-return/productionReturnIssueList.vue +++ b/src/views/modules/production-return/productionReturnIssueList.vue @@ -136,6 +136,7 @@ export default { releaseNo: this.releaseNo, sequenceNo: this.sequenceNo, wdrNo: item.WAIV_DEV_REJ_NO , + engChgLevel: item.ENG_CHG_LEVEL || '1', }, }); }, diff --git a/src/views/modules/production-return/productionReturnPDAIssueList.vue b/src/views/modules/production-return/productionReturnPDAIssueList.vue index 758f51a..82234ad 100644 --- a/src/views/modules/production-return/productionReturnPDAIssueList.vue +++ b/src/views/modules/production-return/productionReturnPDAIssueList.vue @@ -19,6 +19,7 @@ {{ "移除" }} {{ "添加" }} + 新标签 @@ -297,6 +298,54 @@ + + +
+
+ + + + + +
+
@@ -342,6 +391,16 @@ export default { locationId: '', quantity: 0, }, + // 新标签弹框相关 + showNewLabelDialog: false, + newLabelForm: { + partNo: '', + partDesc: '', + wdrNo: '', + locationId: '', + height: 0, + quantity: 0, + }, editIndex: -1, // 当前编辑的标签索引 unissureQty: 0, // 需求数量 itemNo: '', // 物料ID @@ -491,6 +550,72 @@ export default { this.editIndex = -1 }, + // 打开新标签弹框 + openNewLabelDialog() { + this.newLabelForm = { + partNo: this.partNo || this.orderInfo.partNo || '', + partDesc: this.orderInfo.description || '', + wdrNo: this.wdrNo || '*', + locationId: '', + height: 0, + quantity: 0, + } + this.showNewLabelDialog = true + }, + + // 关闭新标签弹框 + closeNewLabelDialog() { + this.showNewLabelDialog = false + this.newLabelForm = { + partNo: '', + partDesc: '', + wdrNo: '', + locationId: '', + height: 0, + quantity: 0, + } + }, + + // 确认添加新标签 + confirmNewLabel() { + if (!this.newLabelForm.wdrNo || !this.newLabelForm.wdrNo.trim()) { + this.$message.warning('请输入物料wdr') + return + } + if (!this.newLabelForm.locationId || !this.newLabelForm.locationId.trim()) { + this.$message.warning('请输入库位') + return + } + if (!this.newLabelForm.height || this.newLabelForm.height < 0) { + this.$message.warning('请输入有效的高度') + return + } + if (!this.newLabelForm.quantity || this.newLabelForm.quantity <= 0) { + this.$message.warning('请输入有效的数量') + return + } + + const labelCode = `NEW-${Date.now()}` + const partNo = (this.newLabelForm.partNo || '').trim() + + this.labelList.push({ + id: Date.now(), + labelCode, + partNo, + quantity: Number(this.newLabelForm.quantity), + batchNo: this.batchNo || '', + locationId: this.newLabelForm.locationId || '', + warehouseId: '', + wdrNo: this.newLabelForm.wdrNo || '*', + engChgLevel: '1', + height: Number(this.newLabelForm.height) || 0, + newPrint: 'NEW', + }) + + this.$message.success('添加成功') + this.closeNewLabelDialog() + }, + // 确认编辑 confirmEdit() { // 验证必填字段 @@ -555,6 +680,7 @@ export default { wdrNo: label.wdrNo || '*', engChgLevel: label.engChgLevel || '1', height: label.height, + newPrint: label.newPrint || 'OLD', })), } this.loading = true @@ -857,6 +983,8 @@ export default { this.lineItemNo = this.$route.query.material.lineItemNo this.releaseNo = this.$route.query.material.releaseNo this.sequenceNo = this.$route.query.material.sequenceNo + this.wdrNo = this.$route.query.material.wdrNo + this.engChgLevel = this.$route.query.material.engChgLevel if (!this.orderNo) { this.$message.error('参数错误') @@ -932,6 +1060,27 @@ export default { margin-right: 12px; } +.new-label-btn { + border: 1px solid #17b3a3; + background: #17b3a3; + color: white; + border-radius: 6px; + padding: 8px 16px; + font-size: 14px; + cursor: pointer; + transition: all 0.2s ease; + margin-left: auto; +} + +.new-label-btn:hover { + background: #13998c; + border-color: #13998c; +} + +.new-label-btn:active { + transform: scale(0.98); +} + /* 紧凑型输入框样式 */ .compact-input ::v-deep .el-input__inner { height: 36px; diff --git a/src/views/modules/production-return/productionReturnPDAList.vue b/src/views/modules/production-return/productionReturnPDAList.vue index a4a24f1..d903856 100644 --- a/src/views/modules/production-return/productionReturnPDAList.vue +++ b/src/views/modules/production-return/productionReturnPDAList.vue @@ -135,6 +135,8 @@ export default { lineItemNo:this.lineItemNo, releaseNo:this.releaseNo, sequenceNo:this.sequenceNo, + wdrNo: item.WAIV_DEV_REJ_NO , + engChgLevel: item.ENG_CHG_LEVEL || '1', } }, }); diff --git a/src/views/modules/production-return/productionReturnPickingDetail.vue b/src/views/modules/production-return/productionReturnPickingDetail.vue index 8baefe8..8c50bf7 100644 --- a/src/views/modules/production-return/productionReturnPickingDetail.vue +++ b/src/views/modules/production-return/productionReturnPickingDetail.vue @@ -19,6 +19,7 @@ {{ "移除" }} {{ "添加" }} + 新标签
@@ -144,6 +145,66 @@
+ +
+
+ + + + + +
+
+
@@ -244,10 +305,20 @@ export default { height: 0, }, editIndex: -1, // 当前编辑的标签索引 + // 新标签弹框相关 + showNewLabelDialog: false, + newLabelForm: { + partNo: '', + wdrNo: '', + locationId: '', + height: 0, + quantity: 0, + }, loading: false, releaseNo: '', sequenceNo: '', wdrNo: '', + engChgLevel: '', } }, computed: { @@ -470,6 +541,75 @@ export default { this.editIndex = -1 }, + // 打开新标签弹框 + openNewLabelDialog() { + this.newLabelForm = { + partNo: this.componentPartNo, + partDesc: this.componentPartDesc, + wdrNo: this.wdrNo|| '*', + locationId: '', + height: 0, + quantity: 0, + } + this.showNewLabelDialog = true + }, + + // 关闭新标签弹框 + closeNewLabelDialog() { + this.showNewLabelDialog = false + this.newLabelForm = { + partNo: '', + partDesc: '', + wdrNo: '', + locationId: '', + height: 0, + quantity: 0, + } + }, + + // 确认添加新标签 + confirmNewLabel() { + // 验证必填字段 + if (!this.newLabelForm.wdrNo || !this.newLabelForm.wdrNo.trim()) { + this.$message.warning('请输入物料wdr') + return + } + if (!this.newLabelForm.locationId || !this.newLabelForm.locationId.trim()) { + this.$message.warning('请输入库位') + return + } + if (!this.newLabelForm.height || this.newLabelForm.height < 0) { + this.$message.warning('请输入有效的高度') + return + } + + if (!this.newLabelForm.quantity || this.newLabelForm.quantity <= 0) { + this.$message.warning('请输入有效的数量') + return + } + + // 生成一个唯一的标签条码(使用时间戳) + const labelCode = `NEW-${Date.now()}` + + // 添加到标签列表 + this.labelList.push({ + id: Date.now(), + labelCode: labelCode, + partNo: this.newLabelForm.partNo.trim(), + quantity: Number(this.newLabelForm.quantity), + batchNo: this.batchNo || '', + locationId: this.newLabelForm.locationId || '', + warehouseId: '', + wdrNo: this.newLabelForm.wdrNo || '*', + engChgLevel: this.engChgLevel || '1', + height: Number(this.newLabelForm.height) || 0, + newPrint: 'NEW', + }) + + this.$message.success('添加成功') + this.closeNewLabelDialog() + }, + // 确认编辑 confirmEdit() { // 验证必填字段 @@ -531,6 +671,7 @@ export default { wdrNo: label.wdrNo || '*', engChgLevel: label.engChgLevel || '1', height: label.height, + newPrint: label.newPrint || 'OLD', })), } this.loading = true @@ -698,13 +839,16 @@ export default { this.releaseNo = this.$route.query.releaseNo this.sequenceNo = this.$route.query.sequenceNo this.wdrNo = this.$route.query.wdrNo + this.engChgLevel = this.$route.query.engChgLevel console.log( '订单号:', this.orderNo, '订单类型:', this.orderType, '物料编码:', - this.partNo + this.partNo, + '关联单号:', + this.engChgLevel, ) if (!this.orderNo) { @@ -778,10 +922,30 @@ export default { } .search-container .el-input { - width: 240px; + width: 250px; +} + +.new-label-btn { + border: 1px solid #17b3a3; + background: #17b3a3; + color: white; + border-radius: 6px; + padding: 8px 16px; + font-size: 14px; + cursor: pointer; + transition: all 0.2s ease; margin-right: 12px; } +.new-label-btn:hover { + background: #13998c; + border-color: #13998c; +} + +.new-label-btn:active { + transform: scale(0.98); +} + .manual-btn { border: 1px solid #1abc4a; @@ -1426,6 +1590,7 @@ export default { border-radius: 12px; width: 100%; max-width: 400px; + max-height: 90vh; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); overflow: hidden; display: flex; @@ -1439,6 +1604,7 @@ export default { display: flex; justify-content: space-between; align-items: center; + flex-shrink: 0; } .edit-modal .modal-title { @@ -1464,6 +1630,9 @@ export default { .edit-modal .modal-body { padding: 20px; + overflow-y: auto; + flex: 1; + min-height: 0; } .edit-modal .form-group { @@ -1511,6 +1680,7 @@ export default { gap: 12px; justify-content: flex-end; border-top: 1px solid #f0f0f0; + flex-shrink: 0; } .edit-modal .btn-cancel {