Browse Source

成品发货

master
shenzhouyu 6 days ago
parent
commit
9117ac69b5
  1. 44
      src/views/modules/customerIssue/customerIssuePDAIssueList.vue

44
src/views/modules/customerIssue/customerIssuePDAIssueList.vue

@ -187,7 +187,7 @@
返回修改 返回修改
</el-button> </el-button>
<el-button class="btn-confirm" @click="proceedIssueConfirm" :disabled="loading"> <el-button class="btn-confirm" @click="proceedIssueConfirm" :disabled="loading">
{{ loading ? '发料中...' : '确定发料' }}
{{ loading ? '发料中...' : '确定预留发料' }}
</el-button> </el-button>
</div> </div>
</div> </div>
@ -409,6 +409,7 @@ export default {
extra: [], extra: [],
}, },
pendingIssueParams: null, pendingIssueParams: null,
shipmentLine: [],
} }
}, },
computed: { computed: {
@ -430,6 +431,14 @@ export default {
} }
return Number.isInteger(num) ? num : Number(num.toFixed(3)) return Number.isInteger(num) ? num : Number(num.toFixed(3))
}, },
//
safeAdd(a, b) {
const num1 = Number(a) || 0
const num2 = Number(b) || 0
// 4
const factor = 10000
return Math.round((num1 * factor + num2 * factor)) / factor
},
pickFieldValue(item, candidates = [], defaultValue = null) { pickFieldValue(item, candidates = [], defaultValue = null) {
if (!item || !candidates || candidates.length === 0) { if (!item || !candidates || candidates.length === 0) {
return defaultValue return defaultValue
@ -462,7 +471,7 @@ export default {
qty: 0, qty: 0,
} }
} }
map[normalizedKey].qty += qtyValue
map[normalizedKey].qty = this.safeAdd(map[normalizedKey].qty, qtyValue)
}) })
return map return map
}, },
@ -663,8 +672,6 @@ export default {
this.$message.warning('扫描数量不能大于总发料数量和已发数量的差!') this.$message.warning('扫描数量不能大于总发料数量和已发数量的差!')
return return
} }
this.pendingIssueParams = this.buildIssueParams()
this.summaryLoading = true this.summaryLoading = true
try { try {
await this.prepareComparisonData() await this.prepareComparisonData()
@ -699,9 +706,11 @@ export default {
wdrNo: label.wdrNo || '*', wdrNo: label.wdrNo || '*',
engChgLevel: label.engChgLevel || '1', engChgLevel: label.engChgLevel || '1',
})), })),
shipmentLine: this.shipmentLine || [],
} }
}, },
async prepareComparisonData() { async prepareComparisonData() {
this.shipmentLine = []
const params = { const params = {
site: localStorage.getItem('site'), site: localStorage.getItem('site'),
workOrderNo: this.orderNo, workOrderNo: this.orderNo,
@ -712,16 +721,33 @@ export default {
throw new Error((data && data.msg) || '获取申请单物料失败') throw new Error((data && data.msg) || '获取申请单物料失败')
} }
const materials = data.data || [] const materials = data.data || []
this.$set(this,'shipmentLine',data.data)
const labelMap = this.aggregateMaterials( const labelMap = this.aggregateMaterials(
this.labelList, this.labelList,
['partNo'], ['partNo'],
['qtyToIssue', 'quantity', 'issueQty'] ['qtyToIssue', 'quantity', 'issueQty']
) )
const orderMap = this.aggregateMaterials(
materials,
['INVENTORY_PART_NO'],
['INVENTORY_QTY', 'QTY_ASSIGNED', 'QTY_PICKED', 'QTY_SHIPPED']
)
// INVENTORY_QTY - QTY_ASSIGNED
const orderMap = {}
materials.forEach((item) => {
const partNo = this.pickFieldValue(item, ['INVENTORY_PART_NO'])
const normalizedKey =
typeof partNo === 'string' ? partNo.trim() : partNo
if (!normalizedKey) {
return
}
const inventoryQty = Number(this.pickFieldValue(item, ['INVENTORY_QTY'], 0)) || 0
const qtyAssigned = Number(this.pickFieldValue(item, ['QTY_ASSIGNED'], 0)) || 0
const requiredQty = this.safeAdd(inventoryQty, -qtyAssigned)
if (!orderMap[normalizedKey]) {
orderMap[normalizedKey] = {
partNo: normalizedKey,
qty: 0,
}
}
orderMap[normalizedKey].qty = this.safeAdd(orderMap[normalizedKey].qty, requiredQty)
})
const existing = [] const existing = []
const missing = [] const missing = []

Loading…
Cancel
Save