diff --git a/src/api/outsourcing/outsourcing.js b/src/api/outsourcing/outsourcing.js
new file mode 100644
index 0000000..7619873
--- /dev/null
+++ b/src/api/outsourcing/outsourcing.js
@@ -0,0 +1,4 @@
+import { createAPI } from "@/utils/httpRequest.js";
+
+// 获取委外订单信息
+export const getOutsourceOrderInfo = data => createAPI(`/pda/outsourcing/issue/getOutsourceOrderInfo`,'post',data)
\ No newline at end of file
diff --git a/src/api/production/production-return.js b/src/api/production/production-return.js
index c9e1051..4110243 100644
--- a/src/api/production/production-return.js
+++ b/src/api/production/production-return.js
@@ -1,8 +1,11 @@
import { createAPI } from "@/utils/httpRequest.js";
+// 获取工单信息
+export const getReturnWorkOrderInfo = data => createAPI(`/pda/production/return/getReturnWorkOrderInfo`,'post',data)
-export const getWorkOrderMaterials = data => createAPI(`/pda/production/issue/getWorkOrderMaterials`,'post',data)
+export const getIssueForShopOrder = data => createAPI(`/pda/production/return/getIssueForShopOrder`,'post',data)
+export const getInventoryPart = data => createAPI(`/pda/production/return/getInventoryPart`,'post',data)
export const parseMaterialLabel = data => createAPI(`/pda/production/issue/parseMaterialLabel`,'post',data)
export const directReturn = data => createAPI(`/pda/production/issue/directReturn`,'post',data)
diff --git a/src/router/index.js b/src/router/index.js
index ea48de5..5f585ee 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -51,7 +51,9 @@ const globalRoutes = [
//生产退料
{path: "/productionreturn",name: "productionreturn", component: resolve => require(["@/views/modules/production-return/production.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}},
{path: "/productionReturnPicking", name: "productionReturnPicking", component: resolve => require(["@/views/modules/production-return/productionReturnPicking.vue"], resolve), meta: { transition: 'instant', preload: true, keepAlive: true } },
- {path: "/productionReturnPickingDetail/:orderNo/:orderType", name: "productionReturnPickingDetail", component: resolve => require(["@/views/modules/production-return/productionReturnPickingDetail.vue"], resolve), meta: { transition: 'instant', preload: true, keepAlive: true } },
+ {path: "/productionReturnIssueList", name: "productionReturnIssueList", component: resolve => require(["@/views/modules/production-return/productionReturnIssueList.vue"], resolve), meta: { transition: 'instant', preload: true, keepAlive: true } },
+ {path: "/productionReturnPickingDetail/:orderNo/:orderType/:partNo/:transactionId/:quantity/:batchNo", name: "productionReturnPickingDetail", component: resolve => require(["@/views/modules/production-return/productionReturnPickingDetail.vue"], resolve), meta: { transition: 'instant', preload: true, keepAlive: true } },
+ {path: "/productionReturnPDA", name: "productionReturnPDA", component: resolve => require(["@/views/modules/production-return/productionReturnPDA.vue"], resolve), meta: { transition: 'instant', preload: true, keepAlive: true } },
{path: '/production-return/pick/:orderNo',
name: 'ProductionIssuePick',component: resolve => require(["@/views/modules/production-return/pick.vue"], resolve),
meta: { transition: 'instant' ,preload: true,keepAlive: true}},
@@ -62,7 +64,9 @@ const globalRoutes = [
{path: "/inboundRegister",name: "inboundRegister", component: resolve => require(["@/views/modules/production-inbound/inboundRegister.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}},
{path: "/inboundRegisterDetail/:inboundNo",name: "inboundRegisterDetail", component: resolve => require(["@/views/modules/production-inbound/inboundRegisterDetail.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}},
- // 委外
+ // 委外发料
+ { path: "/outsource",name: "outsource", component: resolve => require(["@/views/modules/outsourcing-issue/index.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}},
+ { path:"/outsourcingDirectIssue",name:"outsourcingDirectIssue",component: resolve => require(["@/views/modules/outsourcing-issue/outsourcingDirectIssue.vue"], resolve), meta: { transition: 'instant' ,preload: true,keepAlive: true}},
{ path: "/outsourcingPicking", name: "outsourcingPicking", component: resolve => require(["@/views/modules/outsourcing-issue/outsourcingPicking.vue"], resolve), meta: { transition: 'instant', preload: true, keepAlive: true } },
{ path: "/outsourcingPickingDetail/:outsourcingNo", name: "outsourcingPickingDetail", component: resolve => require(["@/views/modules/outsourcing-issue/outsourcingPickingDetail.vue"], resolve), meta: { transition: 'instant', preload: true, keepAlive: true } },
diff --git a/src/views/modules/outsourcing-issue/index.vue b/src/views/modules/outsourcing-issue/index.vue
index 2a22000..1433f6c 100644
--- a/src/views/modules/outsourcing-issue/index.vue
+++ b/src/views/modules/outsourcing-issue/index.vue
@@ -35,7 +35,7 @@ export default {
icon: "scan",
label: "直接发料",
iconClass: "direct",
- to: "outsourcingPicking",
+ to: "outsourcingDirectIssue",
disabled: false,
},
{
diff --git a/src/views/modules/outsourcing-issue/outsourcingDirectIssue.vue b/src/views/modules/outsourcing-issue/outsourcingDirectIssue.vue
new file mode 100644
index 0000000..9fbbdd6
--- /dev/null
+++ b/src/views/modules/outsourcing-issue/outsourcingDirectIssue.vue
@@ -0,0 +1,481 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 委外订单号:{{ order.poNumber }}
+ {{ order.supplierName || order.supplierNo || '-' }}
+
+
+
+ 申请单:{{ order.requestNo || '-' }}
+
+
+
+
+
计划数量
+
{{ order.qty || 0 }}
+
+
+
已发数量
+
{{ order.recvQty || 0 }}
+
+
+
单位
+
{{ order.uom || '个' }}
+
+
+
+
+
+
+
+
+
+ 物料编码:{{ material.partNo }} 行号:{{
+ material.lineNo || index + 1
+ }}
+
+
+
+ {{ material.partDesc || material.materialDesc }}
+
+
+
+
+
需求数量
+
{{ material.qty || material.requiredQty || 0 }}
+
+
+
已发数量
+
{{ material.issuedQty || material.pickedQty || 0 }}
+
+
+
单位
+
{{ material.uom || '个' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/modules/outsourcing-issue/outsourcingDirectIssueDetail.vue b/src/views/modules/outsourcing-issue/outsourcingDirectIssueDetail.vue
new file mode 100644
index 0000000..8f56a22
--- /dev/null
+++ b/src/views/modules/outsourcing-issue/outsourcingDirectIssueDetail.vue
@@ -0,0 +1,478 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ '移除' }}
+ {{ '添加' }}
+
+
+
+
+
+
+
+ 委外订单号:{{ outsourcingNo }}
+
+
+
+ 物料编码:{{ componentPartNo }}
+
+
+ 物料名称:{{ componentPartDesc }}
+
+
+
+
+
需求数量
+
{{ requiredQty }}
+
+
+
已发数量
+
{{ issuedQty }}
+
+
+
本次
+
{{ totalScannedQty }}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ index+1 }}
+
{{ label.labelCode }}
+
{{label.warehouseId}}
+
{{ label.batchNo || '-' }}
+
{{ label.quantity }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/modules/production-issue/directIssue.vue b/src/views/modules/production-issue/directIssue.vue
index ac41184..c50939d 100644
--- a/src/views/modules/production-issue/directIssue.vue
+++ b/src/views/modules/production-issue/directIssue.vue
@@ -30,7 +30,7 @@
@click="selectWorkOrder(workOrder)"
>
- 工单号:{{ workOrder.orderNo }}
+ 工单号:{{ workOrder.orderNo }}-{{workOrder.releaseNo}}-{{workOrder.sequenceNo}}
{{ workOrder.partNo }}
@@ -70,7 +70,7 @@
物料编码:{{ material.componentPartNo }} 行号:{{
- material.lineNo || index + 1
+ material.lineItemNo
}}
@@ -226,7 +226,7 @@ export default {
this.$router.push({
name: "directIssueDetail",
params: {
- workOrderNo: this.selectedWorkOrder.orderNo,
+ workOrderNo: this.selectedWorkOrder.orderNo+'-'+this.selectedWorkOrder.releaseNo+'-'+this.selectedWorkOrder.sequenceNo,
partNo: material.componentPartNo,
partDesc: material.componentPartDesc,
requiredQty: material.qtyRequired,
diff --git a/src/views/modules/production-issue/directIssueDetail.vue b/src/views/modules/production-issue/directIssueDetail.vue
index 76996e1..f90434a 100644
--- a/src/views/modules/production-issue/directIssueDetail.vue
+++ b/src/views/modules/production-issue/directIssueDetail.vue
@@ -23,7 +23,7 @@
-
+
@@ -88,11 +88,11 @@
-
@@ -139,7 +139,7 @@ export default {
},
validateAndAddLabel(labelCode) {
const params = {
- labelCode,
+ scannedLabel: labelCode,
workOrderNo: this.workOrderNo,
componentPartNo: this.componentPartNo,
site: this.$store.state.user.site,
@@ -187,31 +187,40 @@ export default {
}
},
clearScannedLabels() {
- if (this.scannedLabels.length === 0) return
- this.$confirm('确定清空所有已扫描的标签吗?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning',
- })
- .then(() => {
- this.scannedLabels = []
- this.$message.success('已清空')
+ if (this.scannedLabels.length > 0) {
+ this.$confirm('确定清空所有已扫描的标签吗?', '提示', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning',
})
- .catch(() => {})
+ .then(() => {
+ this.scannedLabels = []
+ this.$router.back()
+ this.$message.success('已清空')
+ })
+ .catch(() => {})
+ } else {
+ this.$router.back()
+ }
},
confirmIssue() {
if (this.scannedLabels.length === 0) {
this.$message.warning('请先扫描材料标签')
return
}
+ console.log('1231', localStorage.getItem('userName'))
+
const params = {
site: this.$store.state.user.site,
workOrderNo: this.workOrderNo,
componentPartNo: this.componentPartNo,
- labels: this.scannedLabels.map((l) => ({
+ operatorName: localStorage.getItem('userName'),
+ selectedMaterials: this.scannedLabels.map((l, i) => ({
+ itemNo: i + 1,
labelCode: l.labelCode,
- quantity: l.quantity,
+ issueQty: l.quantity,
batchNo: l.batchNo,
+ warehouseId: l.warehouseId,
materialCode: l.materialCode,
})),
}
@@ -421,7 +430,7 @@ export default {
margin: 0 16px;
margin-top: 4px;
border-radius: 8px 8px 0 0;
- border-bottom: 2px solid #17B3A3;
+ border-bottom: 2px solid #17b3a3;
}
/* 物料描述行 */
diff --git a/src/views/modules/production-return/production.vue b/src/views/modules/production-return/production.vue
index 7ce0168..2c61b67 100644
--- a/src/views/modules/production-return/production.vue
+++ b/src/views/modules/production-return/production.vue
@@ -32,7 +32,7 @@ export default {
return {
buttons: [
{ icon: 'scan', label: '直接退料', iconClass: 'direct', to: 'productionReturnPicking', disabled: false },
- { icon: 'records', label: '申请单退料', iconClass: 'request', to: 'productionReturnPicking', disabled: false },
+ { icon: 'records', label: '申请单退料', iconClass: 'request', to: 'productionReturnPDA', disabled: false },
{ icon: 'logistics', label: '移库退料', iconClass: 'move', to: 'productionReturnPicking', disabled: true },
{ icon: 'revoke', label: '退料撤销', iconClass: 'cancel', to: 'productionReturnPicking', disabled: true },
]
diff --git a/src/views/modules/production-return/productionReturnIssueList.vue b/src/views/modules/production-return/productionReturnIssueList.vue
new file mode 100644
index 0000000..36efc95
--- /dev/null
+++ b/src/views/modules/production-return/productionReturnIssueList.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+ 物料编码:{{ partNo }} 领料号:{{ item.TRANSACTION_ID }}
+
+
+
+ 批次号:{{ item.LOT_BATCH_NO || '-' }}
+
+
+
+
领料数量
+
{{ item.QUANTITY }}
+
+
+
撤销数量
+
{{ item.QTY_REVERSED || 0 }}
+
+
+
单位
+
{{ item.uom || '个' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/modules/production-return/productionReturnPDA.vue b/src/views/modules/production-return/productionReturnPDA.vue
index 1ca8476..22088fe 100644
--- a/src/views/modules/production-return/productionReturnPDA.vue
+++ b/src/views/modules/production-return/productionReturnPDA.vue
@@ -1,29 +1,17 @@
-
-
-
-
上一页
-
{{ functionTitle }}
-
🏠首页
+
+
+