Browse Source

修改发料和发料记录箱码重复校验

intex
lijuncheng 5 days ago
parent
commit
d6da3ee64a
  1. 13
      src/api/request2.js
  2. 8
      src/mycomponents/recommend/recommend.vue
  3. 8
      src/pages/issue/coms/comIssueDetailCardBatch.vue
  4. 251
      src/pages/issue/job/issueDetailBatch.vue
  5. 77
      src/pages/issue/record/directIssueByBatch.vue
  6. 1
      src/pages/issue/request/issueScanRequest.vue

13
src/api/request2.js

@ -1528,6 +1528,19 @@ export function getIssueJobDetail(id) {
});
}
/**
* 发料校验
* @param {*} 任务id
*
*/
export function issueCheck(packNumber) {
return request({
url: baseApi + "/wms/issue-record-main/selectRecordByPackNumber?packNumber=" + packNumber,
method: "get",
data: {},
});
}
/**
* 获取推荐明细接口

8
src/mycomponents/recommend/recommend.vue

@ -5,7 +5,7 @@
<view style="word-break: break-all;">
<!-- <container v-if="isShowContainer&&detail.containerNumber!=null" :container="detail.containerNumber">
</container> -->
<pack v-if="isShowPack && detail.packingNumber" :packingCode="detail.packingNumber"></pack>
<pack v-if="isShowPack && detail.packingNumber" :isShowPackingNumberProps="isShowPackingNumberProps" :packingCode="detail.packingNumber"></pack>
<batch v-if="isShowBatch && detail.batch!=null" :batch="detail.batch"></batch>
<location v-if="isShowFromLocation" :title="formLocationTitle" :locationCode="detail.fromLocationCode">
</location>
@ -94,6 +94,12 @@
type: String,
default: '来源库位'
},
isShowPackingNumberProps: {
type: Boolean,
default: false
},
},
watch: {

8
src/pages/issue/coms/comIssueDetailCardBatch.vue

@ -16,7 +16,7 @@
<uni-swipe-action-item
:right-options="(item.scaned&&settingParam.allowModifyQty == 'TRUE')?editAndRemoveOptions : item.scaned? removeOptions:[]" @click="itemCoceClick($event,item,index)">
<view class="" :class="item.scaned?'scan_view':''">
<recommend :detail="item" :isShowLocation="false" :isShowFromLocation="true" :isShowToLocation="settingParam.allowModifyLocation=='TRUE'"></recommend>
<recommend :isShowPackingNumberProps="true" :isShowPack="true" :detail="item" :isShowLocation="false" :isShowFromLocation="true" :isShowToLocation="item.isRecommTaskItem?true:false"></recommend>
</view>
</uni-swipe-action-item>
</uni-swipe-action>
@ -79,6 +79,12 @@
type: Boolean,
default: true
},
isShowPackingNumberProps: {
type: Boolean,
default: true
},
},
watch: {

251
src/pages/issue/job/issueDetailBatch.vue

@ -17,7 +17,8 @@
<scroll-view scroll-y="true" class="page-main-scroll">
<view v-for="(toLocation, index) in detailSource">
<comIssueDetailCardBatch ref='comIssueDetailCardBatch' :dataContent="toLocation" :settingParam="jobContent"
@updateData='updateData'>
@updateData='updateData'
>
</comIssueDetailCardBatch>
<view class="split_line"></view>
</view>
@ -53,7 +54,8 @@
takeIssueJob,
cancleTakeIssueJob,
getIssueJobDetail,
issueJobSubmit
issueJobSubmit,
issueCheck
} from '@/api/request2.js';
import {
@ -265,42 +267,63 @@
},
getScanResult(result, managementTypeParams) {
this.managementType = managementTypeParams
let array1 = []//
let array2 = []//
this.detailSource.forEach(item=>{
item.subList.forEach(cur=>{
array1.push(cur.fromLocationCode)
array2.push(cur.batch)
})
})
//
const obj1 = array1.find(item=>item == result.fromLocationCode)
const obj2 = array2.find(item=>item == result.label.batch)
if(this.jobContent.allowModifyLocation == 'FALSE'){
if(!obj1){
this.showErrorMessage(`不可以扫描推荐库位【${array1.join(',')}】以外的库位`)
return
}
if(!result.package.number){
this.showErrorMessage("包装号不能为空")
return;
}
if(this.jobContent.allowModifyBatch == 'FALSE'){
if(!obj2){
this.showErrorMessage(`不可以扫描推荐批次【${array2.join(',')}】以外的批次`)
return
uni.showLoading({
title:"校验中...",
mask:true
})
//
issueCheck(result.package.number).then(res=>{
uni.hideLoading()
if(res.data.length==0){
this.managementType = managementTypeParams
let array1 = []//
let array2 = []//
this.detailSource.forEach(item=>{
item.subList.forEach(cur=>{
array1.push(cur.fromLocationCode)
array2.push(cur.batch)
})
})
//
const obj1 = array1.find(item=>item == result.fromLocationCode)
const obj2 = array2.find(item=>item == result.label.batch)
if(this.jobContent.allowModifyLocation == 'FALSE'){
if(!obj1){
this.showErrorMessage(`不可以扫描推荐库位【${array1.join(',')}】以外的库位`)
return
}
}
if(this.jobContent.allowModifyBatch == 'FALSE'){
if(!obj2){
this.showErrorMessage(`不可以扫描推荐批次【${array2.join(',')}】以外的批次`)
return
}
}
if(!obj1){
this.recommendQty = 0
}else{
this.recommendQty = result.balance.qty
}
// this.managementType = managementTypeParams
if(managementTypeParams == "BY_BATCH" ||managementTypeParams == "BY_QUANTITY" ){
this.setDataBatch(result)
}
}else {
this.showErrorMessage("箱码["+result.package.number+"]已经发过料")
}
}
if(!obj1){
this.recommendQty = 0
}else{
this.recommendQty = result.balance.qty
}
// this.managementType = managementTypeParams
if(managementTypeParams == "BY_BATCH" ||managementTypeParams == "BY_QUANTITY" ){
this.setDataBatch(result)
}
}).catch(error=>{
uni.hideLoading()
this.showErrorMessage(error.message)
})
},
setDataBatch(result) {
setDataBatch11(result) {
console.log(result)
try {
let that = this
@ -324,7 +347,9 @@
var itemDetail = detail.subList.find(r => {
return r.batch == batch &&
r.fromLocationCode == result.fromLocationCode
r.fromLocationCode == result.fromLocationCode&&
r.packingNumber==packingNumber
})
if (itemDetail == undefined) {
var isExit;
@ -348,6 +373,7 @@
// .fromLocationCode + "")
detail.subList.push({
scaned:true,
packingNumber:packingNumber,
fromLocationCode:this.fromLocationCode,
toLocationCode:this.toLocationCode,
batch:result.label.batch,
@ -401,7 +427,9 @@
detail.subList.forEach(item=>{
item.handleQty =item.handleQty || 0
detail.handleQty = calc.add(detail.handleQty,item.handleQty)
// item.packList.forEach(cur=>{ // cur.handleQty = calc.add(detail.handleQty,item.handleQty) // })
// item.packList.forEach(cur=>{
// cur.handleQty = calc.add(detail.handleQty,item.handleQty)
// })
})
// calcHandleQtyAdd(this.detailSource, result.label);
}
@ -452,7 +480,9 @@
console.log(item.handleQty)
item.handleQty =item.handleQty || 0
detail.handleQty = calc.add(detail.handleQty,item.handleQty)
// item.packList.forEach(cur=>{ // cur.handleQty = calc.add(detail.handleQty,item.handleQty) // })
// item.packList.forEach(cur=>{
// cur.handleQty = calc.add(detail.handleQty,item.handleQty)
// })
})
// calcTreeHandleQty(this.detailSource);
this.continueScan()
@ -460,11 +490,80 @@
}
}
}
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
detail.packingNumber = ''
})
})
// this.detailSource.forEach(item => {
// item.subList.forEach(detail => {
// detail.packingNumber = ''
// })
// })
} catch (e) {
this.showMessage(e.message)
}
},
setDataBatch(result) {
try {
let that = this
this.balanceinfo = result.balance
var packingNumber = result.label.packingNumber;
var batch = result.label.batch;
var qty = result.label.qty;
var itemCode = result.label.itemCode;
var locationCode = result.fromLocationCode;
if (!result.balance) {
this.showMessage("没有库存余额")
return;
}
// var inventoryStatus = "OK";
var detail = this.detailSource.find(r => r.itemCode == itemCode);
if (detail == undefined) {
this.showErrorMessage("物料号【" + itemCode + "】不在列表中")
} else {
var itemDetail = detail.subList.find(r => {
return r.batch == batch &&
r.fromLocationCode == result.fromLocationCode&&
r.packingNumber==packingNumber
})
//
if (itemDetail == undefined) {
var item ={
scaned:true,
packingNumber:packingNumber,
fromLocationCode:this.fromLocationCode,
toLocationCode:this.toLocationCode,
batch:result.label.batch,
handleQty:result.label.qty,
qty:0,
inventoryStatus:result.balance.inventoryStatus,
toLocation:result.balance.toLocation,
balance:result.balance,
balanceQty:result.balance.qty,
packQty:result.package.packQty,
packUnit:result.package.packUnit,
uom:result.balance.uom,
isRecommTaskItem:false,//
}
detail.subList.push(item)
//
detail.handleQty = 0
detail.qty = 0
detail.subList.forEach(item=>{
item.handleQty =item.handleQty || 0
detail.handleQty = calc.add(detail.handleQty,item.handleQty)
detail.qty = calc.add(detail.qty,item.qty)
})
setTimeout(r => {
that.resizeCollapse();
that.$forceUpdate()
}, 100)
}else {
this.showErrorMessage("包装号["+packingNumber+"]已经扫描")
}
}
} catch (e) {
this.showMessage(e.message)
}
@ -506,7 +605,6 @@
submitJob() {
var params = this.setParams()
console.log(params)
// if (!params.subList || params.subList.length == 0) {
// uni.hideLoading()
@ -563,7 +661,7 @@
obj1.qty =record.qty;
obj1.scaned =record.scaned;
obj1.toLocationCode =record.toLocationCode;
obj1.fromPackingNumber ='';
obj1.fromPackingNumber =record.packingNumber;
obj1.fromBatch = record.batch;
obj1.toBatch = record.batch;
obj1.toInventoryStatus = record.inventoryStatus;
@ -629,8 +727,71 @@
this.resizeCollapse();
// this.autoCommit()
},
autoCommit(){
let str=""
let str1=""
let str2=""
let str3=""
let isTrue = true
this.detailSource.forEach(detail=>{
var itemHandleQty=0
detail.subList.forEach(item=>{
//
if(item.scaned){
itemHandleQty=calc.add(itemHandleQty,item.handleQty)
}
})
if(itemHandleQty<detail.qty){
str += `物料号【${detail.itemCode}】提交数量【${detail.handleQty}】不允许小于任务数量【${detail.qty}\n`
}
if(itemHandleQty>detail.qty){
str1 += `物料号【${detail.itemCode}】提交数量【${detail.handleQty}】不允许大于任务数量【${detail.qty}\n】`
}
})
if (this.jobContent.allowSmallerQty == "FALSE") {
if (str) {
str = '不允许提交\n' + str
this.showErrorMessage(str)
return
}
}
if (this.jobContent.allowBiggerQty == 'FALSE') {
if (str1) {
str1 = '不允许提交\n' + str1
this.showErrorMessage(str1)
return
}
}
if (str2) {
str2 = '不允许提交\n' + str2
this.showErrorMessage(str2)
return
}
console.log(str3)
if(str3){
str3 = str3+"是否提交"
this.$refs.comMessage.showQuestionMessage1(str3, 'red', res => {
if (res) {
//
this.$throttle(this.submit, 2000, this)()
} else {
this.scanPopupGetFocus()
}
});
}else {
//
this.$throttle(this.submit, 2000, this)()
}
},
autoCommit11(){
// this.$throttle(this.submit, 2000, this)()
// this.jobContent.allowSmallerQty = 'FALSE'
// this.jobContent.allowBiggerQty = 'FALSE'

77
src/pages/issue/record/directIssueByBatch.vue

@ -12,8 +12,7 @@
<record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent"
:isShowFromLocation="true" @removeItem="removeItem(index,item)"
:isShowToLocation="false" :isShowParentToLocation="false" @updateData="updateData"
:allowModifyQty="true"
@removePack="removePack">
:allowModifyQty="true" :isShowPackingNumberProps="true" @removePack="removePack">
</record-com-detail-card>
</view>
@ -57,7 +56,8 @@
import {
issueRecordSubmit,
getWorkShopLineStation,
getBalanceByFilter
getBalanceByFilter,
issueCheck
} from '@/api/request2.js';
import {
@ -142,7 +142,7 @@
resultData: {},
itemCode: "",
managementType: '',
fifoSwitch:false
fifoSwitch: false
};
},
onLoad(option) {
@ -197,13 +197,36 @@
});
},
getScanResult(result, managementTypeParams) {
getScanResult(result, managementTypeParams) {
this.managementType = managementTypeParams
if (managementTypeParams == "BY_BATCH" || managementTypeParams == "BY_QUANTITY") {
this.setDataBatch(result);
} else {
this.setData(result);
// if (managementTypeParams == "BY_BATCH" || managementTypeParams == "BY_QUANTITY") {
// this.setDataBatch(result);
// } else {
// this.setData(result);
// }
if(!result.package.number){
this.showErrorMessage("包装号不能为空")
return;
}
uni.showLoading({
title:"校验中...",
mask:true
})
//
issueCheck(result.package.number).then(res=>{
uni.hideLoading()
if(res.data.length==0){
this.setData(result);
}else {
this.showErrorMessage("箱码["+result.package.number+"]已经发过料")
}
}).catch(error=>{
uni.hideLoading()
this.showErrorMessage(error.message)
})
},
async setData(result) {
let balance = result.balance;
@ -217,11 +240,12 @@
if (item == undefined) {
var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); //
newDetail.packingNumber = pack.number
itemp.subList.push(newDetail);
this.detailSource.push(itemp)
} else {
var detail = item.subList.find(r => {
if (r.packingNumber == balance.packingNumber &&
if (r.packingNumber == pack.number &&
r.batch == balance.batch &&
r.locationCode == balance.locationCode &&
r.inventoryStatus == balance.inventoryStatus) {
@ -230,17 +254,18 @@
})
if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack);
newDetail.packingNumber = pack.number
item.subList.push(newDetail);
} else {
if (detail.scaned == true) {
this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]重复扫描")
this.showErrorMessage("箱码[" + pack.number + "]已经扫描")
}
}
}
calcHandleQty(this.detailSource)
},
setDataBatch(result) {
setDataBatch(result) {
let balance = result.balance;
let label = result.label;
let pack = result.package;
@ -251,8 +276,9 @@
})
if (item == undefined) {
var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack,label);
newDetail.handleQty =label.qty
let newDetail = createDetailInfo(balance, pack, label);
newDetail.handleQty = label.qty
itemp.subList.push(newDetail);
this.detailSource.push(itemp)
} else {
@ -264,11 +290,12 @@
}
})
if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack,label);
newDetail.handleQty =label.qty
let newDetail = createDetailInfo(balance, pack, label);
newDetail.handleQty = label.qty
newDetail.packingNumber = pack.number
item.subList.push(newDetail);
} else {
detail.handleQty =calc.add(detail.handleQty, result.label.qty)
detail.handleQty = calc.add(detail.handleQty, result.label.qty)
}
}
@ -395,17 +422,18 @@
this.showErrorMessage("请选择生产线")
return
}
var commitHint=""
var commitHint = ""
this.detailSource.forEach((item) => {
item.subList.forEach(cur=>{
if(cur.scaned){
if(parseFloat(cur.handleQty)>parseFloat(cur.qty)){
commitHint += `物料号【${item.itemCode}】批次【${cur.batch}】实际提交数量【${cur.handleQty}】不可以大于库存数量【${cur.qty}\n`
item.subList.forEach(cur => {
if (cur.scaned) {
if (parseFloat(cur.handleQty) > parseFloat(cur.qty)) {
commitHint +=
`物料号【${item.itemCode}】批次【${cur.batch}】实际提交数量【${cur.handleQty}】不可以大于库存数量【${cur.qty}\n`
}
}
})
})
if(commitHint){
if (commitHint) {
this.showErrorMessage(commitHint)
return;
}
@ -479,7 +507,7 @@
submitItem.recordList = [{
toInventoryStatus: detail.inventoryStatus,
fromParentPackingNumber: detail.parentNumber,
fromPackingNumber: info.packingNumber,
fromPackingNumber: detail.packingNumber,
fromBatch: info.batch,
toPackingNumber: info.packingNumber,
toBatch: info.batch,
@ -501,6 +529,7 @@
this.dataContent.subList = subList
this.dataContent.creator = creator;
this.dataContent.fromWarehouseCode = this.fromWarehouseCode;
this.dataContent.sourceType="record"
return this.dataContent;
},

1
src/pages/issue/request/issueScanRequest.vue

@ -111,6 +111,7 @@
setParams() {
this.detailSource.dueTime = getCurrDateOneMonthsTimes();
this.detailSource.isCallMaterialsLabel = "TRUE";
this.detailSource.sourceType ="scan"
return this.detailSource
},
submit() {

Loading…
Cancel
Save