Browse Source

修改到货检验参数

wms3.0_pda
lijuncheng 1 year ago
parent
commit
da79f72625
  1. 29
      common/basic.js
  2. 1
      mycomponents/qty/RecommendQty.vue
  3. 11
      pages/inspect/coms/inspectComDetailCard.vue
  4. 108
      pages/inspect/job/inspectDetail.vue
  5. 16
      pages/inspect/job/inspectJob.vue
  6. 206
      pages/inspect/job/inspectResult.vue
  7. 7
      pages/purchaseReceipt/job/receiptDetail.vue
  8. 880
      pages/putaway/record/putawayRecord.vue

29
common/basic.js

@ -4,7 +4,7 @@ export {
}
let jobStatusList = [];
let itemStatusList =[];
let itemStatusList = [];
let locationTypeList = [];
let uomList = [];
let inventoryStatusList = [];
@ -635,12 +635,12 @@ export function queryManageModel(managementList, itemCode) {
}
}
export function getPackingNumberAndBatch(managementList, itemCode,packingNumber,batch) {
export function getPackingNumberAndBatch(managementList, itemCode, packingNumber, batch) {
var itemInfo = {
packingNumber: "",
batch: ""
}
var manageType = queryManageModel(managementList, itemCode)
if (manageType == "BY_QUANTITY") {
itemInfo.packingNumber = ""
@ -677,19 +677,26 @@ export function getPackingNumberAndBatch(managementList, itemCode,packingNumber,
// scanErrorAudio();
// }
export function compare(key) {
export function compareTime() {
return function(a, b) {
// 按照时间降序
return Date.parse(a.time) - Date.parse(a.time)
}
}
//升序
export function compareAsc(key) {
return function(a, b) {
var val1 = a[key];
var val2 = b[key];
return val2 - val1;
return val1 - val2;
}
}
//倒序
export function compareDesc(key) {
return function(a, b) {
var val1 = a[key];
var val2 = b[key];
return val1 - val2;
return val2 - val1;
}
}
@ -704,9 +711,9 @@ export function goHome() {
*/
export function getTodayDate() {
var startTime = new Date(new Date().toLocaleDateString()).getTime();
var endTime = startTime+24*60*60*1000-1
console.log("获取时间",startTime+","+endTime)
return startTime+","+endTime;
var endTime = startTime + 24 * 60 * 60 * 1000 - 1
console.log("获取时间", startTime + "," + endTime)
return startTime + "," + endTime;
}
export function getCurrDate() {
@ -835,7 +842,7 @@ export function getDataSource(subList) {
item.subList.push(newDetail);
items.push(item)
} else {
item.qty += Number(detail.qty)
item.qty += Number(detail.qty)
let newDetail = createDetailInfo(detail); //
item.subList.push(newDetail);
}

1
mycomponents/qty/RecommendQty.vue

@ -1,6 +1,5 @@
<template>
<view>
推荐
<view class="uni-flex uni-row center">
<status v-if="isShowStatus" :status='dataContent.inventoryStatus'></status>
<view class="text_recommend ">

11
pages/inspect/coms/inspectComDetailCard.vue

@ -2,6 +2,9 @@
<view class="" style="background-color: #fff;">
<view class="">
<view class="" style="font-size: 32rpx;margin-left: 20rpx;">
<view class="">
检验类型 : {{getInspectType(jobContent.inspectType)}}
</view>
<view class="">
收货数量 : {{jobContent.receiveQty}}{{getUnitInfo(jobContent.uom)}}
</view>
@ -73,9 +76,9 @@
getDetailEditRemoveOption,
getDetailRemoveOption
} from '@/common/array.js';
import {
getUnitInfo
getUnitInfo,
getInspectType
} from '@/common/directory.js';
export default {
@ -144,6 +147,10 @@
},
methods: {
getInspectType(value){
return getInspectType(value)
},
swipeClick(e, item,index) {
if (e.content.text == "详情") {
this.detail(item)

108
pages/inspect/job/inspectDetail.vue

@ -45,7 +45,7 @@
} from '@/common/basic.js';
import {
getInventoryStatusName,
} from '@/common/directory.js';
import {
@ -89,25 +89,28 @@
locationTypeList: [],
managementList: [],
selectedItem: {},
failedQty:0,
crackQty:0
failedQty: 0,
crackQty: 0,
inspectType: ""
};
},
onLoad(option) {
this.id = option.id;
this.failedQty = option.failedQty;
this.crackQty = option.crackQty;
if (this.id != undefined) {
this.inspectType = option.inspectType;
if (this.id != undefined && this.inspectType == "FULL") {
// //
// if (option.status == "1") {
// this.receive((callback => {
// this.received = true;
// this.getDetail();
// }));
// } else {
// this.getDetail();
// }
if (option.status == "1") {
this.receive((callback => {
this.received = true;
this.getDetail();
}));
} else {
this.getDetail();
}
} else {
this.getDetail();
}
@ -119,24 +122,24 @@
}
},
// onBackPress(e) {
// //
// if (e.from == 'backbutton') {
// if (this.received) {
// //
// cancleTakeInspectJob(this.id).then(res => {
// uni.navigateBack();
// }).catch(error => {
// uni.navigateBack();
// })
// } else {
// uni.navigateBack();
// }
// return true;
// }
// },
onBackPress(e) {
//
if (e.from == 'backbutton') {
if (this.received) {
//
cancleTakeInspectJob(this.id).then(res => {
uni.navigateBack();
}).catch(error => {
uni.navigateBack();
})
} else {
uni.navigateBack();
}
return true;
}
},
onPullDownRefresh() {
this.getDetail();
@ -178,7 +181,7 @@
} else {
if (res.data.subList.length > 0) {
that.jobContent = res.data;
that.jobContent.failedQty= this.failedQty
that.jobContent.failedQty = this.failedQty
that.jobContent.crackQty = this.crackQty;
that.subList = res.data.subList;
that.subList.forEach(res => {
@ -318,13 +321,9 @@
this.showErrorMessage("扫描数为0,请先扫描")
return;
}
//
if (this.scanCount == this.subList.length) {
this.submitJob();
} else if (this.scanCount < this.subList.length) {
//
if (this.jobContent.allowPartialComplete == "TRUE") {
//
//
if (this.inspectType == "FULL") {
if (this.scanCount == this.subList.length) {
this.submitJob();
} else {
//
@ -336,7 +335,28 @@
}
});
}
} else {
//
if (this.scanCount == this.subList.length) {
this.submitJob();
} else if (this.scanCount < this.subList.length) {
//
if (this.jobContent.allowPartialComplete == "TRUE") {
//
this.submitJob();
} else {
//
this.$refs.comMessage.showErrorMessage('请完成扫描后,再进行提交<br>' + "已经扫描[" + this.scanCount +
"]箱总共[" + this
.subList.length + "]箱", res => {
if (res) {
this.openScanPopup();
}
});
}
}
}
},
submitJob() {
@ -442,12 +462,12 @@
}
// detail.singlePrice = detail.balance.singlePrice;
// detail.amount = detail.balance.singlePrice * detail.handleQty;
// detail.arriveDate = detail.balance.arriveDate;
// detail.produceDate = detail.balance.produceDate;
// detail.expireDate = detail.balance.expireDate;
}else {
} else {
detail.sampleQty = detail.qty;
detail.failedQty = 0;
detail.crackQty = 0;
@ -456,7 +476,7 @@
detail.inspectUser = this.$store.state.user.id
detail.toInventoryStatus = "OK"
}
list.push(detail)
})
})
@ -473,7 +493,7 @@
})
},
}
}

16
pages/inspect/job/inspectJob.vue

@ -173,14 +173,22 @@
},
openJobDetail(item) {
// uni.navigateTo({
// url: './inspectDetail?id=' + item.id + '&status=' + item.status
// });
uni.navigateTo({
url: './inspectResult?id=' + item.id + '&status=' + item.status
});
if(item.inspectType=="FULL"){
uni.navigateTo({
url: './inspectDetail?id=' + item.id + '&status=' + item.status+'&inspectType=' + item.inspectType
});
}else {
uni.navigateTo({
url: './inspectResult?id=' + item.id + '&status=' + item.status
});
}
},
showItemList(itemList) {

206
pages/inspect/job/inspectResult.vue

@ -50,9 +50,9 @@
<view class="pda-list-cell-left">
<view class="uni-label">不合格数量</view>
</view>
<view class="pda-list-cell-db" >
<uni-easyinput :inputBorder="true" type="number" placeholder="请输入数字"
v-model="jobContent.failedQty" @blur="failedQtyConfirm" class="count-input">
<view class="pda-list-cell-db">
<uni-easyinput :inputBorder="true" type="number" placeholder="请输入数字" v-model="jobContent.failedQty"
@blur="failedQtyConfirm" class="count-input">
</uni-easyinput>
</view>
</view>
@ -62,18 +62,18 @@
<view class="pda-list-cell-left">
<view class="uni-label">报废数量</view>
</view>
<view class="pda-list-cell-db" >
<view class="pda-list-cell-db">
<uni-easyinput placeholder="请输入数字" type="number" v-model="jobContent.crackQty" @blur=""
class="count-input">
</uni-easyinput>
</view>
</view>
<view class="pda-list-cell" >
<view class="pda-list-cell">
<view class="pda-list-cell-left">
<view class="uni-label">下一步动作</view>
</view>
<view class="pda-list-cell-db" >
<view class="pda-list-cell-db">
<uni-data-picker class='uni-data-picker' placeholder="请选择下一步动作" popup-title="下一步动作"
@change="nextStepChange" :localdata="nextActionList" v-model="nextAction">
</uni-data-picker>
@ -84,9 +84,9 @@
<view class="pda-list-cell-left">
<view class="uni-label">最终不合格</view>
</view>
<view class="pda-list-cell-db" >
<uni-easyinput placeholder="待计算" type="number" :disabled="true"
v-model="jobContent.notPassedQty" class="count-input">
<view class="pda-list-cell-db">
<uni-easyinput placeholder="待计算" type="number" :disabled="true" v-model="jobContent.notPassedQty"
class="count-input">
</uni-easyinput>
</view>
</view>
@ -148,7 +148,7 @@
cancleTakeInspectJob,
inspectJobSubmit
} from '@/api/request2.js';
import {
getInspectFailedReasonList,
getNextActionList,
@ -211,28 +211,28 @@
} else {
uni.navigateBack();
}
return true;
}
},
methods: {
//
receive(callback) {
uni.showLoading({
title: "加载中....",
mask: true
});
if (this.id != null) {
takeInspectJob(this.id).then(res => {
uni.hideLoading();
callback();
}).catch(error => {
uni.hideLoading();
this.showErrorMessage(error)
})
}
},
//
receive(callback) {
uni.showLoading({
title: "加载中....",
mask: true
});
if (this.id != null) {
takeInspectJob(this.id).then(res => {
uni.hideLoading();
callback();
}).catch(error => {
uni.hideLoading();
this.showErrorMessage(error)
})
}
},
getDetail() {
var that = this;
uni.showLoading({
@ -248,11 +248,11 @@
if (res.data.subList.length > 0) {
that.jobContent = res.data;
that.detailList = res.data.subList;
that.inspectType =that.jobContent.inspectType;
that.inspectType = that.jobContent.inspectType;
that.jobContent.goodQty = null, //
that.jobContent.failedQty = null,//
that.jobContent.crackQty = null,//
that.jobContent.notPassedQty = null; //
that.jobContent.failedQty = null, //
that.jobContent.crackQty = null, //
that.jobContent.notPassedQty = null; //
} else {
that.showMessage('列表数据为0');
}
@ -290,36 +290,37 @@
getUnitInfo(value) {
return getUnitInfo(value).label
},
nextStepChange(e){
nextStepChange(e) {
this.nextAction = e.detail.value[0].value;
this.calcNotPassQty();
},
calcNotPassQty(){
calcNotPassQty() {
var failedQty = Number(this.jobContent.failedQty == null ? 0 : this.jobContent.failedQty)
//()
if (this.inspectType == 'FUll' ) {
if (this.inspectType == 'FUll') {
//
this.jobContent.notPassedQty = failedQty
}else if(this.inspectType == 'SAMPLING'){
} else if (this.inspectType == 'SAMPLING') {
//
//
//
if (this.nextAction == "FULL_INSPECT"||this.nextAction == "PARTIAL_OK") {
if (this.nextAction == "FULL_INSPECT" || this.nextAction == "PARTIAL_OK") {
// =
this.jobContent.notPassedQty = failedQty
}else if(this.nextAction=="ALL_NOK"){
} else if (this.nextAction == "ALL_NOK") {
//=-
this.jobContent.notPassedQty = Number(this.jobContent.receiveQty)-Number(this.jobContent.crackQty==null?0:this.jobContent.crackQty)
this.jobContent.notPassedQty = Number(this.jobContent.receiveQty) - Number(this.jobContent
.crackQty == null ? 0 : this.jobContent.crackQty)
}
}
},
commit() {
if (this.jobContent.failedQty == null) {
this.showMessage("请输入不合格数量")
return
@ -342,24 +343,38 @@
//==0()
if (failedQty == 0) {
//
this.jobContent.subList.forEach(res=>{
res.handleQty = res.qty
res.failedQty = 0;
res.notPassedQty = 0;
res.crackQty = 0;
res.goodQty = this.jobContent.receiveQty;
res.toInventoryStatus = res.inventoryStatus
res.failedReason ="";
res.photos = ""
res.inspectResult =""
res.inspectUser =this.$store.state.user.id
})
this.jobContent.nextAction = this.nextAction;
this.submitJob(this.jobContent)
if (crackQty == 0) {
//==0
this.jobContent.subList.forEach(res => {
res.handleQty = res.qty
res.failedQty = 0;
res.notPassedQty = 0;
res.crackQty = 0;
res.goodQty = res.qty;
res.failedReason = "";
res.photos = ""
res.inspectResult = ""
res.toInventoryStatus = "OK"
res.inspectUser = this.$store.state.user.id
})
this.jobContent.nextAction = "";
this.jobContent.goodQty = this.jobContent.receiveQty
this.submitJob(this.jobContent)
} else {
//0
//
uni.navigateTo({
url: './inspectDetail?id=' + this.id +
'&status=' + this.status +
'&failedQty=' + this.jobContent.failedQty +
'&crackQty=' + this.jobContent.crackQty
});
}
} else {
//>0
//
if (this.nextAction == null) {
@ -369,79 +384,88 @@
//
if (this.nextAction == "ALL_NOK") {
//
this.jobContent.subList.forEach(res=>{
this.jobContent.subList.forEach(res => {
res.handleQty = res.qty
res.failedQty = this.jobContent.receiveQty;
res.notPassedQty = this.jobContent.receiveQty;
res.failedQty = res.qty;
res.notPassedQty = res.qty;
res.crackQty = 0;
res.goodQty = 0;
res.toInventoryStatus = "NOK"
res.failedReason ="";
res.failedReason = "";
res.photos = ""
res.inspectResult =""
re.inspectUser =this.$store.state.user.id
res.inspectResult = ""
res.toInventoryStatus = "NOK"
re.inspectUser = this.$store.state.user.id
})
this.jobContent.nextAction = this.nextAction;
this.jobContent.goodQty = 0
this.submitJob(this.jobContent)
//
//
} else if (this.nextAction == "PARTIAL_OK") {
//
uni.navigateTo({
url: './inspectDetail?id=' + this.id +
'&status=' + this.status+
'&failedQty=' + this.jobContent.failedQty+
'&crackQty=' + this.jobContent.crackQty
'&status=' + this.status +
'&failedQty=' + this.jobContent.failedQty +
'&crackQty=' + this.jobContent.crackQty
});
//===
//
} else if (this.nextAction == "FULL_INSPECT") {
//
this.jobContent.subList.forEach(res=>{
this.jobContent.subList.forEach(res => {
res.handleQty = res.qty
res.failedQty = 0;
res.failedQty = 0;
res.notPassedQty = 0;
res.crackQty = 0;
res.goodQty = this.jobContent.receiveQty;
res.toInventoryStatus = res.inventoryStatus
res.failedReason ="";
res.goodQty = res.qty;
res.failedReason = "";
res.photos = ""
res.inspectResult =""
res.inspectResult = ""
res.toInventoryStatus = "OK"
res.inspectUser = this.$store.state.user.id
})
this.jobContent.goodQty = this.jobContent.receiveQty
this.jobContent.nextAction = this.nextAction;
this.submitJob(this.jobContent)
}
}
},
submitJob(params){
submitJob(params) {
uni.showLoading({
title: "提交中....",
mask: true
});
console.log("提交参数", JSON.stringify(params));
inspectJobSubmit(params).then(res=>{
inspectJobSubmit(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成到货检验记录" + res.data, )
var hint="";
if(this.jobContent.nextAction=="FULL_INSPECT"){
hint ="提交成功<br>生成到货检验任务" + res.data
}else {
hint ="提交成功<br>生成到货检验记录" + res.data
}
this.showCommitSuccessMessage(hint)
} else {
this.showErrorMessage("提交失败["+res.msg+"]")
this.showErrorMessage("提交失败[" + res.msg + "]")
}
}).catch(error=>{
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
uni.navigateTo({
url: './inspectJob'
})
uni.navigateTo({
url: './inspectJob'
})
})
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
if (res) {}
});
},

7
pages/purchaseReceipt/job/receiptDetail.vue

@ -45,7 +45,8 @@
goHome,
getCurrDateTime,
getPackingNumberAndBatch,
updateTitle
updateTitle,
compareAsc
} from '@/common/basic.js';
import {
@ -107,7 +108,6 @@
} else {
this.getDetail();
}
}
},
//
@ -208,11 +208,14 @@
this.showMessage("箱码【" + packingNumber + "】已经扫描")
} else {
itemDetail.scaned = true;
this.detailSource[0].subList.sort(compareAsc('scaned')); //
itemDetail.handleQty = Number(result.label.qty);
itemDetail.toLocationCode = this.toLocationCode;
itemDetail.labelQty = Number(result.label.qty);
calcHandleQty(this.detailSource);
this.continueScan()
this.$forceUpdate()
var list =this.detailSource[0].subList;
}
}
}

880
pages/putaway/record/putawayRecord.vue

@ -1,439 +1,441 @@
<template>
<view class="page-wraper">
<view class="">
<com-blank-view @goScan='showFromLocationPopup' v-if="detailSource.length==0"></com-blank-view>
</view>
<view class="page-wraper" v-if="detailSource.length>0">
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<record-com-detail-card :dataContent="item" :index="index" :settingParam="jobContent"
@removeItem="removeItem(index,item)" @updateData="updateData" @removePack="removePack">
</record-com-detail-card>
</view>
<u-line />
</view>
</scroll-view>
</view>
<requiredLocation v-if="showToLoaction" title="目标库位" :locationCode="toLocationCode" @getLocation='getToLocationCode'
:locationTypeList="tolocationTypeList"></requiredLocation>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class="">
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult'></win-scan-pack-and-location>
<comMessage ref="comMessage"></comMessage>
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation'
:locationTypeList="fromlocationTypeList"></win-scan-location>
</view>
</template>
<script>
import {
putawayRequestSubmit,
putawayRecordSubmit
} from '@/api/request2.js';
import {
goHome,
updateTitle,
getCurrDateTime,
getPackingNumberAndBatch
} from '@/common/basic.js';
import {
getInventoryStatusDesc,
getDirectoryItemArray
} from '@/common/directory.js';
import {
getDetailOption,
getDetailRemoveOption,
getDetailEditRemoveOption
} from '@/common/array.js';
import {
getBusinessType,
createItemInfo,
createDetailInfo,
calcHandleQty
} from '@/common/record.js';
import {
getManagementPrecisions
} from '@/common/balance.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import comMessage from '@/mycomponents/common/comMessage.vue'
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
export default {
components: {
winScanButton,
winScanPack,
requiredLocation,
comBlankView,
winScanLocation,
comMessage,
winScanPackAndLocation,
recordComDetailCard
},
data() {
return {
id: '',
receiptJob: {},
received: false,
jobContent: {}, //
detailSource: [], //
locationTypeList: [],
businessTypeInfo: {},
fromLocationInfo: {},
fromLocationCode: "",
toLocationCode: "",
isShowLocation: false,
fromlocationTypeList: [],
tolocationTypeList: [],
inInventoryStatus: "", //
outInventoryStatus: "", //
businessType: {},
fromType: "",
showToLoaction:true
};
},
onLoad(option) {
this.fromType = option.fromType
if(this.fromType=="requestType"){ this.showToLoaction=false
updateTitle("原料上架申请") }else {
updateTitle("原料上架记录")
this.showToLoaction=true
}
var typeCode = "PurchasePutaway"
getBusinessType(typeCode, res => {
if (res.success) {
this.businessType = res.businessType;
this.fromlocationTypeList = res.fromlocationTypeList;
this.tolocationTypeList = res.tolocationTypeList;
this.showFromLocationPopup();
} else {
this.$refs.comMessage.showBreakMessage(res.message );
}
});
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
//
onBackPress(e) {},
onPullDownRefresh() {},
mounted() {
},
methods: {
getScanResult(result) {
let balance = result.balance;
let label = result.label;
let pack = result.package;
var item = this.detailSource.find(res => {
if (res.itemCode == balance.itemCode) {
return res
}
})
if (item == undefined) {
var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); //
itemp.subList.push(newDetail);
this.detailSource.push(itemp)
} else {
var detail = item.subList.find(r => {
if (r.packingNumber == balance.packingNumber &&
r.batch == balance.batch &&
r.locationCode == balance.locationCode &&
r.inventoryStatus == balance.inventoryStatus) {
return r;
}
})
if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack);
item.subList.push(newDetail);
} else {
if (detail.scaned == true) {
this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]已经在列表中")
}
}
}
this.calcHandleQty();
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
calcHandleQty() {
for (let item of this.detailSource) {
item.qty = 0;
for (let detail of item.subList) {
if (detail != undefined) {
item.qty += Number(detail.qty)
}
}
}
this.$forceUpdate();
},
updateData() {
this.calcHandleQty();
},
removeItem(index, item) {
this.detailSource.splice(index, 1)
},
removePack() {
for (var i = 0; i < this.detailSource.length; i++) {
var item = this.detailSource[i];
if (item.subList.length == 0) {
this.detailSource.splice(i, 1)
}
}
this.updateData();
},
openScanPopup() {
if (this.fromLocationCode == "") {
this.showFromLocationPopup();
return
}
this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType);
},
showFromLocationPopup() {
this.$nextTick(() => {
this.$refs.scanLocationCode.openScanPopup();
})
},
closeScanPopup() {
this.$refs.scanPopup.closeScanPopup();
},
scanPopupGetFocus() {
this.$refs.scanPopup.getfocus();
},
scanLocationCode(location, code) {
this.toLocationCode = code
this.toLocationCode = location;
},
commit() {
if (this.showToLoaction &&this.toLocationCode == "") {
this.showMessage("请先选择目标库位")
return;
}
uni.showLoading({
title: "提交中....",
mask: true
});
if(this.fromType=="requestType"){
var params = this.setParams(false)
console.log("提交" + JSON.stringify(params))
// putawayRequestSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
}else {
//
var itemCodes = []
this.detailSource.forEach(item => {
itemCodes.push(item.itemCode)
})
//
getManagementPrecisions(itemCodes, this.toLocationCode, res => {
if (res.success) {
this.managementList = res.list;
var params = this.setParams(true)
console.log("提交参数", JSON.stringify(params));
// putawayRecordSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
} else {
uni.hideLoading();
this.showErrorMessage(res.message);
}
});
}
},
setParams(queryModel) {
var subList = []
var creator = this.$store.state.user.id
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
// var subItem = {};
// Object.assign(subItem, detail)
if (queryModel) {
var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
detail.packingNumber, detail.batch);
detail.toPackingNumber = info.packingNumber;;
detail.toContainerNumber = detail.containerNumber
detail.toBatch = info.batch;
detail.toInventoryStatus = detail.inventoryStatus
detail.toLocationCode = this.toLocationCode
} else {
detail.toPackingNumber = detail.packingNumber;
detail.toContainerNumber = detail.containerNumber
detail.toBatch = detail.toBatch;
detail.toInventoryStatus = detail.inventoryStatus
detail.toLocationCode = ""
}
subList.push(detail)
}
})
})
this.jobContent.subList = subList
this.jobContent.creator = creator;
return this.jobContent;
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {}
});
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
afterCloseMessage() {
this.scanPopupGetFocus();
},
closeScanMessage() {
this.scanPopupGetFocus();
},
getLocation(location, code) {
this.getFromLocationCode(location, code)
},
getFromLocationCode(location, code) {
this.fromLocationInfo = location;
this.fromLocationCode = code;
this.openScanPopup();
},
getToLocationCode(location, code) {
if (this.fromLocationCode == code) {
uni.showToast({
title: "来源库位[" + this.fromLocationCode + "]不能与目标库位[" + code + "]一致",
duration: 2000
})
return
}
this.toLocationCode = code;
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
this.fromLocationCode = '';
})
},
updateData() {
this.calcHandleQty();
for (var i = 0; i < this.detailSource.length; i++) {
let item = this.detailSource[i];
if (item.qty == 0) {
this.detailSource.splice(i, 1)
}
}
}
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
</style>
<template>
<view class="page-wraper">
<view class="">
<com-blank-view @goScan='showFromLocationPopup' v-if="detailSource.length==0"></com-blank-view>
</view>
<view class="page-wraper" v-if="detailSource.length>0">
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<record-com-detail-card :dataContent="item" :index="index" :settingParam="jobContent"
@removeItem="removeItem(index,item)" @updateData="updateData" @removePack="removePack">
</record-com-detail-card>
</view>
<u-line />
</view>
</scroll-view>
</view>
<requiredLocation v-if="showToLoaction" title="目标库位" :locationCode="toLocationCode"
@getLocation='getToLocationCode' :locationTypeList="tolocationTypeList"></requiredLocation>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class="">
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult'></win-scan-pack-and-location>
<comMessage ref="comMessage"></comMessage>
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation'
:locationTypeList="fromlocationTypeList"></win-scan-location>
</view>
</template>
<script>
import {
putawayRequestSubmit,
putawayRecordSubmit
} from '@/api/request2.js';
import {
goHome,
updateTitle,
getCurrDateTime,
getPackingNumberAndBatch
} from '@/common/basic.js';
import {
getInventoryStatusDesc,
getDirectoryItemArray
} from '@/common/directory.js';
import {
getDetailOption,
getDetailRemoveOption,
getDetailEditRemoveOption
} from '@/common/array.js';
import {
getBusinessType,
createItemInfo,
createDetailInfo,
calcHandleQty
} from '@/common/record.js';
import {
getManagementPrecisions
} from '@/common/balance.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import comMessage from '@/mycomponents/common/comMessage.vue'
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
export default {
components: {
winScanButton,
winScanPack,
requiredLocation,
comBlankView,
winScanLocation,
comMessage,
winScanPackAndLocation,
recordComDetailCard
},
data() {
return {
id: '',
receiptJob: {},
received: false,
jobContent: {}, //
detailSource: [], //
locationTypeList: [],
businessTypeInfo: {},
fromLocationInfo: {},
fromLocationCode: "",
toLocationCode: "",
isShowLocation: false,
fromlocationTypeList: [],
tolocationTypeList: [],
inInventoryStatus: "", //
outInventoryStatus: "", //
businessType: {},
fromType: "",
showToLoaction: true
};
},
onLoad(option) {
this.fromType = option.fromType
if (this.fromType == "requestType") {
this.showToLoaction = false
updateTitle("原料上架申请")
} else {
updateTitle("原料上架记录")
this.showToLoaction = true
}
var typeCode = "PurchasePutaway"
getBusinessType(typeCode, res => {
if (res.success) {
this.businessType = res.businessType;
this.fromlocationTypeList = res.fromlocationTypeList;
this.tolocationTypeList = res.tolocationTypeList;
this.showFromLocationPopup();
} else {
this.$refs.comMessage.showBreakMessage(res.message);
}
});
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
//
onBackPress(e) {},
onPullDownRefresh() {},
mounted() {},
methods: {
getScanResult(result) {
let balance = result.balance;
let label = result.label;
let pack = result.package;
var item = this.detailSource.find(res => {
if (res.itemCode == balance.itemCode) {
return res
}
})
if (item == undefined) {
var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); //
itemp.subList.push(newDetail);
this.detailSource.push(itemp)
} else {
var detail = item.subList.find(r => {
if (r.packingNumber == balance.packingNumber &&
r.batch == balance.batch &&
r.locationCode == balance.locationCode &&
r.inventoryStatus == balance.inventoryStatus) {
return r;
}
})
if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack);
item.subList.push(newDetail);
} else {
if (detail.scaned == true) {
this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]已经在列表中")
}
}
}
this.calcHandleQty();
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
calcHandleQty() {
for (let item of this.detailSource) {
item.qty = 0;
for (let detail of item.subList) {
if (detail != undefined) {
item.qty += Number(detail.qty)
}
}
}
this.$forceUpdate();
},
updateData() {
this.calcHandleQty();
},
removeItem(index, item) {
this.detailSource.splice(index, 1)
},
removePack() {
for (var i = 0; i < this.detailSource.length; i++) {
var item = this.detailSource[i];
if (item.subList.length == 0) {
this.detailSource.splice(i, 1)
}
}
this.updateData();
},
openScanPopup() {
if (this.fromLocationCode == "") {
this.showFromLocationPopup();
return
}
this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType);
},
showFromLocationPopup() {
this.$nextTick(() => {
this.$refs.scanLocationCode.openScanPopup();
})
},
closeScanPopup() {
this.$refs.scanPopup.closeScanPopup();
},
scanPopupGetFocus() {
this.$refs.scanPopup.getfocus();
},
scanLocationCode(location, code) {
this.toLocationCode = code
this.toLocationCode = location;
},
commit() {
if (this.showToLoaction && this.toLocationCode == "") {
this.showMessage("请先选择目标库位")
return;
}
uni.showLoading({
title: "提交中....",
mask: true
});
if (this.fromType == "requestType") {
var params = this.setParams(false)
console.log("提交" + JSON.stringify(params))
// putawayRequestSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
} else {
//
var itemCodes = []
this.detailSource.forEach(item => {
itemCodes.push(item.itemCode)
})
//
getManagementPrecisions(itemCodes, this.toLocationCode, res => {
if (res.success) {
this.managementList = res.list;
var params = this.setParams(true)
console.log("提交参数", JSON.stringify(params));
// putawayRecordSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
} else {
uni.hideLoading();
this.showErrorMessage(res.message);
}
});
}
},
setParams(queryModel) {
var subList = []
var creator = this.$store.state.user.id
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
// var subItem = {};
// Object.assign(subItem, detail)
if (queryModel) {
var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
detail.packingNumber, detail.batch);
detail.toPackingNumber = info.packingNumber;;
detail.toContainerNumber = detail.containerNumber
detail.toBatch = info.batch;
detail.toInventoryStatus = detail.inventoryStatus
detail.toLocationCode = this.toLocationCode
} else {
detail.toPackingNumber = detail.packingNumber;
detail.toContainerNumber = detail.containerNumber
detail.toBatch = detail.toBatch;
detail.toInventoryStatus = detail.inventoryStatus
detail.toLocationCode = ""
}
subList.push(detail)
}
})
})
this.jobContent.subList = subList
this.jobContent.creator = creator;
return this.jobContent;
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {}
});
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
afterCloseMessage() {
this.scanPopupGetFocus();
},
closeScanMessage() {
this.scanPopupGetFocus();
},
getLocation(location, code) {
this.getFromLocationCode(location, code)
},
getFromLocationCode(location, code) {
this.fromLocationInfo = location;
this.fromLocationCode = code;
this.openScanPopup();
},
getToLocationCode(location, code) {
if (this.fromLocationCode == code) {
uni.showToast({
title: "来源库位[" + this.fromLocationCode + "]不能与目标库位[" + code + "]一致",
duration: 2000
})
return
}
this.toLocationCode = code;
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
this.fromLocationCode = '';
})
},
updateData() {
this.calcHandleQty();
for (var i = 0; i < this.detailSource.length; i++) {
let item = this.detailSource[i];
if (item.qty == 0) {
this.detailSource.splice(i, 1)
}
}
}
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
</style>

Loading…
Cancel
Save