Browse Source

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

intex
lijuncheng 6 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. 185
      src/pages/issue/job/issueDetailBatch.vue
  5. 49
      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;"> <view style="word-break: break-all;">
<!-- <container v-if="isShowContainer&&detail.containerNumber!=null" :container="detail.containerNumber"> <!-- <container v-if="isShowContainer&&detail.containerNumber!=null" :container="detail.containerNumber">
</container> --> </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> <batch v-if="isShowBatch && detail.batch!=null" :batch="detail.batch"></batch>
<location v-if="isShowFromLocation" :title="formLocationTitle" :locationCode="detail.fromLocationCode"> <location v-if="isShowFromLocation" :title="formLocationTitle" :locationCode="detail.fromLocationCode">
</location> </location>
@ -94,6 +94,12 @@
type: String, type: String,
default: '来源库位' default: '来源库位'
}, },
isShowPackingNumberProps: {
type: Boolean,
default: false
},
}, },
watch: { watch: {

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

@ -16,7 +16,7 @@
<uni-swipe-action-item <uni-swipe-action-item
:right-options="(item.scaned&&settingParam.allowModifyQty == 'TRUE')?editAndRemoveOptions : item.scaned? removeOptions:[]" @click="itemCoceClick($event,item,index)"> :right-options="(item.scaned&&settingParam.allowModifyQty == 'TRUE')?editAndRemoveOptions : item.scaned? removeOptions:[]" @click="itemCoceClick($event,item,index)">
<view class="" :class="item.scaned?'scan_view':''"> <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> </view>
</uni-swipe-action-item> </uni-swipe-action-item>
</uni-swipe-action> </uni-swipe-action>
@ -79,6 +79,12 @@
type: Boolean, type: Boolean,
default: true default: true
}, },
isShowPackingNumberProps: {
type: Boolean,
default: true
},
}, },
watch: { watch: {

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

@ -17,7 +17,8 @@
<scroll-view scroll-y="true" class="page-main-scroll"> <scroll-view scroll-y="true" class="page-main-scroll">
<view v-for="(toLocation, index) in detailSource"> <view v-for="(toLocation, index) in detailSource">
<comIssueDetailCardBatch ref='comIssueDetailCardBatch' :dataContent="toLocation" :settingParam="jobContent" <comIssueDetailCardBatch ref='comIssueDetailCardBatch' :dataContent="toLocation" :settingParam="jobContent"
@updateData='updateData'> @updateData='updateData'
>
</comIssueDetailCardBatch> </comIssueDetailCardBatch>
<view class="split_line"></view> <view class="split_line"></view>
</view> </view>
@ -53,7 +54,8 @@
takeIssueJob, takeIssueJob,
cancleTakeIssueJob, cancleTakeIssueJob,
getIssueJobDetail, getIssueJobDetail,
issueJobSubmit issueJobSubmit,
issueCheck
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
@ -265,6 +267,18 @@
}, },
getScanResult(result, managementTypeParams) { getScanResult(result, managementTypeParams) {
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.managementType = managementTypeParams this.managementType = managementTypeParams
let array1 = []// let array1 = []//
let array2 = []// let array2 = []//
@ -298,9 +312,18 @@
if(managementTypeParams == "BY_BATCH" ||managementTypeParams == "BY_QUANTITY" ){ if(managementTypeParams == "BY_BATCH" ||managementTypeParams == "BY_QUANTITY" ){
this.setDataBatch(result) this.setDataBatch(result)
} }
}else {
this.showErrorMessage("箱码["+result.package.number+"]已经发过料")
}
}).catch(error=>{
uni.hideLoading()
this.showErrorMessage(error.message)
})
}, },
setDataBatch(result) { setDataBatch11(result) {
console.log(result) console.log(result)
try { try {
let that = this let that = this
@ -324,7 +347,9 @@
var itemDetail = detail.subList.find(r => { var itemDetail = detail.subList.find(r => {
return r.batch == batch && return r.batch == batch &&
r.fromLocationCode == result.fromLocationCode r.fromLocationCode == result.fromLocationCode&&
r.packingNumber==packingNumber
}) })
if (itemDetail == undefined) { if (itemDetail == undefined) {
var isExit; var isExit;
@ -348,6 +373,7 @@
// .fromLocationCode + "") // .fromLocationCode + "")
detail.subList.push({ detail.subList.push({
scaned:true, scaned:true,
packingNumber:packingNumber,
fromLocationCode:this.fromLocationCode, fromLocationCode:this.fromLocationCode,
toLocationCode:this.toLocationCode, toLocationCode:this.toLocationCode,
batch:result.label.batch, batch:result.label.batch,
@ -401,7 +427,9 @@
detail.subList.forEach(item=>{ detail.subList.forEach(item=>{
item.handleQty =item.handleQty || 0 item.handleQty =item.handleQty || 0
detail.handleQty = calc.add(detail.handleQty,item.handleQty) 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); // calcHandleQtyAdd(this.detailSource, result.label);
} }
@ -452,7 +480,9 @@
console.log(item.handleQty) console.log(item.handleQty)
item.handleQty =item.handleQty || 0 item.handleQty =item.handleQty || 0
detail.handleQty = calc.add(detail.handleQty,item.handleQty) 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); // calcTreeHandleQty(this.detailSource);
this.continueScan() this.continueScan()
@ -460,11 +490,80 @@
} }
} }
} }
this.detailSource.forEach(item => { // this.detailSource.forEach(item => {
item.subList.forEach(detail => { // item.subList.forEach(detail => {
detail.packingNumber = '' // 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) { } catch (e) {
this.showMessage(e.message) this.showMessage(e.message)
} }
@ -506,7 +605,6 @@
submitJob() { submitJob() {
var params = this.setParams() var params = this.setParams()
console.log(params)
// if (!params.subList || params.subList.length == 0) { // if (!params.subList || params.subList.length == 0) {
// uni.hideLoading() // uni.hideLoading()
@ -563,7 +661,7 @@
obj1.qty =record.qty; obj1.qty =record.qty;
obj1.scaned =record.scaned; obj1.scaned =record.scaned;
obj1.toLocationCode =record.toLocationCode; obj1.toLocationCode =record.toLocationCode;
obj1.fromPackingNumber =''; obj1.fromPackingNumber =record.packingNumber;
obj1.fromBatch = record.batch; obj1.fromBatch = record.batch;
obj1.toBatch = record.batch; obj1.toBatch = record.batch;
obj1.toInventoryStatus = record.inventoryStatus; obj1.toInventoryStatus = record.inventoryStatus;
@ -629,8 +727,71 @@
this.resizeCollapse(); this.resizeCollapse();
// this.autoCommit() // this.autoCommit()
}, },
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.$throttle(this.submit, 2000, this)()
// this.jobContent.allowSmallerQty = 'FALSE' // this.jobContent.allowSmallerQty = 'FALSE'
// this.jobContent.allowBiggerQty = 'FALSE' // this.jobContent.allowBiggerQty = 'FALSE'

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

@ -12,8 +12,7 @@
<record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent" <record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent"
:isShowFromLocation="true" @removeItem="removeItem(index,item)" :isShowFromLocation="true" @removeItem="removeItem(index,item)"
:isShowToLocation="false" :isShowParentToLocation="false" @updateData="updateData" :isShowToLocation="false" :isShowParentToLocation="false" @updateData="updateData"
:allowModifyQty="true" :allowModifyQty="true" :isShowPackingNumberProps="true" @removePack="removePack">
@removePack="removePack">
</record-com-detail-card> </record-com-detail-card>
</view> </view>
@ -57,7 +56,8 @@
import { import {
issueRecordSubmit, issueRecordSubmit,
getWorkShopLineStation, getWorkShopLineStation,
getBalanceByFilter getBalanceByFilter,
issueCheck
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
@ -199,11 +199,34 @@
getScanResult(result, managementTypeParams) { getScanResult(result, managementTypeParams) {
this.managementType = managementTypeParams this.managementType = managementTypeParams
if (managementTypeParams == "BY_BATCH" || managementTypeParams == "BY_QUANTITY") { // if (managementTypeParams == "BY_BATCH" || managementTypeParams == "BY_QUANTITY") {
this.setDataBatch(result); // this.setDataBatch(result);
} else { // } 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); this.setData(result);
}else {
this.showErrorMessage("箱码["+result.package.number+"]已经发过料")
} }
}).catch(error=>{
uni.hideLoading()
this.showErrorMessage(error.message)
})
}, },
async setData(result) { async setData(result) {
let balance = result.balance; let balance = result.balance;
@ -217,11 +240,12 @@
if (item == undefined) { if (item == undefined) {
var itemp = createItemInfo(balance, pack); var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); // let newDetail = createDetailInfo(balance, pack); //
newDetail.packingNumber = pack.number
itemp.subList.push(newDetail); itemp.subList.push(newDetail);
this.detailSource.push(itemp) this.detailSource.push(itemp)
} else { } else {
var detail = item.subList.find(r => { var detail = item.subList.find(r => {
if (r.packingNumber == balance.packingNumber && if (r.packingNumber == pack.number &&
r.batch == balance.batch && r.batch == balance.batch &&
r.locationCode == balance.locationCode && r.locationCode == balance.locationCode &&
r.inventoryStatus == balance.inventoryStatus) { r.inventoryStatus == balance.inventoryStatus) {
@ -230,10 +254,11 @@
}) })
if (detail == undefined) { if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack); let newDetail = createDetailInfo(balance, pack);
newDetail.packingNumber = pack.number
item.subList.push(newDetail); item.subList.push(newDetail);
} else { } else {
if (detail.scaned == true) { if (detail.scaned == true) {
this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]重复扫描") this.showErrorMessage("箱码[" + pack.number + "]已经扫描")
} }
} }
} }
@ -253,6 +278,7 @@
var itemp = createItemInfo(balance, pack); var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack, label); let newDetail = createDetailInfo(balance, pack, label);
newDetail.handleQty = label.qty newDetail.handleQty = label.qty
itemp.subList.push(newDetail); itemp.subList.push(newDetail);
this.detailSource.push(itemp) this.detailSource.push(itemp)
} else { } else {
@ -266,6 +292,7 @@
if (detail == undefined) { if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack, label); let newDetail = createDetailInfo(balance, pack, label);
newDetail.handleQty = label.qty newDetail.handleQty = label.qty
newDetail.packingNumber = pack.number
item.subList.push(newDetail); item.subList.push(newDetail);
} else { } else {
detail.handleQty = calc.add(detail.handleQty, result.label.qty) detail.handleQty = calc.add(detail.handleQty, result.label.qty)
@ -400,7 +427,8 @@
item.subList.forEach(cur => { item.subList.forEach(cur => {
if (cur.scaned) { if (cur.scaned) {
if (parseFloat(cur.handleQty) > parseFloat(cur.qty)) { if (parseFloat(cur.handleQty) > parseFloat(cur.qty)) {
commitHint += `物料号【${item.itemCode}】批次【${cur.batch}】实际提交数量【${cur.handleQty}】不可以大于库存数量【${cur.qty}\n` commitHint +=
`物料号【${item.itemCode}】批次【${cur.batch}】实际提交数量【${cur.handleQty}】不可以大于库存数量【${cur.qty}\n`
} }
} }
}) })
@ -479,7 +507,7 @@
submitItem.recordList = [{ submitItem.recordList = [{
toInventoryStatus: detail.inventoryStatus, toInventoryStatus: detail.inventoryStatus,
fromParentPackingNumber: detail.parentNumber, fromParentPackingNumber: detail.parentNumber,
fromPackingNumber: info.packingNumber, fromPackingNumber: detail.packingNumber,
fromBatch: info.batch, fromBatch: info.batch,
toPackingNumber: info.packingNumber, toPackingNumber: info.packingNumber,
toBatch: info.batch, toBatch: info.batch,
@ -501,6 +529,7 @@
this.dataContent.subList = subList this.dataContent.subList = subList
this.dataContent.creator = creator; this.dataContent.creator = creator;
this.dataContent.fromWarehouseCode = this.fromWarehouseCode; this.dataContent.fromWarehouseCode = this.fromWarehouseCode;
this.dataContent.sourceType="record"
return this.dataContent; return this.dataContent;
}, },

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

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

Loading…
Cancel
Save