You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

412 lines
12 KiB

<template>
<view>
<uni-popup ref="popupqtyedit" type="center">
<view class="uni-popup-view" style="display: flex;flex-direction: column; width: 500rpx;">
<view
style="display: flex; justify-content: center; align-items: center; padding: 10rpx;flex-direction: column;">
<view style="padding: 10rpx; font-weight: bold; font-size: 35rpx;">{{title}}</view>
<view class="" style="width: 100%; background-color: black;height: 2rpx;">
</view>
</view>
<view style="padding: 6rpx;margin-left: 15rpx;font-size: 32rpx;">箱码 : {{dataContent.recommendPackingCode}}</view>
<view style="padding: 6rpx;margin-left: 15rpx;font-size: 32rpx;">物料号 : {{dataContent.itemCode}}</view>
<view style="padding: 6rpx;margin-left: 15rpx;font-size: 32rpx;">名称 : {{dataContent.itemName}}</view>
<view style="padding: 6rpx;margin-left: 15rpx;font-size: 32rpx;">描述 : {{dataContent.itemDesc1}}</view>
<view style="display: flex; justify-content: center;align-items: center; padding: 6rpx;margin-top: 10rpx;">
<com-number-box v-model="value" :max="99999999" :min="0" style='margin: 0px 5px' />
<view class="">
({{dataContent.uom}})
</view>
</view>
<view class="uni-popup-button-box">
<button @click="cancle" class="save-button" style="width: 220rpx;margin-top: 10rpx;margin-right: 10rpx; " type="default">取消</button>
<button @click="submit" class="save-button" style="width: 220rpx;margin-top: 10rpx;margin-left: 10rpx; " type="primary">确定</button>
</view>
</view>
<comMessage ref="refMessage" ></comMessage>
</uni-popup>
</view>
</template>
<script>
import {
showErrorMsg,
getCurrDateTime
} from '@/common/basic.js';
import {
generateNewPacking,
unPacking,
getInventoryLabel,
unPackingByPurchase,
unPackingByIssue
} from '@/api/index.js';
import comMessage from '@/mycomponents/common/comMessage.vue'
import comNumberBox from '@/mycomponents/common/comNumberBox.vue'
export default {
components: {
comMessage,
comNumberBox
},
props: {
title: {
type: String,
default: ""
}
},
data() {
return {
value: 0,
defaultValue: 0,
vaildMaxValue: {
type: Boolean,
default: true
},
//允许小于等于0
allowZero: {
type: Boolean,
default: true
},
dataContent: {},
jobContent:{},
jobType:""
}
},
created() {
},
methods: {
openPopup(qty) {
this.value = qty;
this.defaultValue = qty;
this.$refs['popupqtyedit'].open("center");
},
//vaild,提交是是否校验数量
openPopup1(qty, vaild) {
this.value = qty;
this.defaultValue = qty;
this.vaildMaxValue = vaild;
this.$refs['popupqtyedit'].open("center");
},
//vaildqty校验的数量,提交时与输入的值做比较
openPopup2(qty, vaildqty) {
this.value = qty;
this.defaultValue = vaildqty;
this.vaildMaxValue = true;
this.$refs['popupqtyedit'].open("center");
},
//qty当前数量,vaildqty校验的最大数量 , isZero数量是否允许为0
openPopup3(jobContent,item, qty, vaildqty, isZero) {
this.jobContent =jobContent
this.dataContent = item
this.jobType =jobContent.jobType
this.value = qty;
this.defaultValue = vaildqty;
this.vaildMaxValue = true;
this.allowZero = isZero;
this.$refs['popupqtyedit'].open("center");
},
//qty当前数量,不验证最大值,不允许为0
openPopup4(qty, vaildMaxValue, isZero) {
this.value = qty;
this.defaultValue = qty;
this.vaildMaxValue = vaildMaxValue;
this.allowZero = isZero;
this.$refs['popupqtyedit'].open("center");
},
cancle(){
this.$refs['popupqtyedit'].close();
},
//确定
submit() {
let that = this;
if (that.value === "") {
this.showMessage('数量不能为空');
that.value = that.defaultValue;
} else {
let qty = Number(that.value);
if (that.vaildMaxValue) {
if (qty > that.defaultValue) {
that.value = that.defaultValue;
this.showMessage('数量不能大于' + that.defaultValue);
} else {
if (!that.allowZero) //不允许0
{
if (qty == 0) {
this.showMessage('数量不能为0');
that.value = that.value;
} else if (qty < 0) {
this.showMessage('数量不能小于0');
that.value = that.value;
} else {
this.getDataInfo(qty)
}
} else {
this.getDataInfo(qty)
}
}
} else {
if (!that.allowZero) //不允许0
{
if (qty == 0) {
this.showMessage('数量不能为0');
that.value = that.defaultValue;
} else if (qty < 0) {
this.showMessage('数量不能小于0');
that.value = that.defaultValue;
} else {
this.getDataInfo(qty)
}
} else {
this.getDataInfo(qty)
}
}
}
},
callBack(qty){
var data =this.dataContent;
var params = {
fullBarcodeString:data.handledPackingCode ,
itemCode: data.itemCode,
itemName: data.itemName,
itemDesc1:data.itemDesc1 ,
itemDesc2: data.itemDesc2,
lot: data.handledLot,
supplierBatch: data.handledSupplierBatch,
arriveDate: data.handledArriveDate,
produceDate: data.handledProduceDate,
expireDate:data.handledExpireDate ,
stdPackQty: data.stdPackQty,
uom: data.uom,
qty: data.handledQty,
labelStatus: 1,
recommendLocationCode:data.handledToLocationCode,
locationErpCode: data.handledToLocationErpCode,
containerCode:data.handledContainerCode ,
supplierCode:this.jobContent.supplierCode ,
poNumber:data.poNumber,
rpNumber:this.jobContent.rpNumber ,
asnNumber: this.jobContent.asnNumber,
qLevel: "",
qualityFile:"" ,
prodLine: "",
team: "",
shift: "",
specifications:"" ,
supplierName: this.jobContent.supplierName,
supplierSimpleName: "",
supplierItemCode:"",
supplierItemName: "",
labelType: 1,
planArriveDate: this.jobContent.planArriveDate,
remark: data.remark
}
generateNewPacking(qty,params).then(res=>{
if(res){
var unPackingParams =this.setUnPackingParams(qty)
unPacking(unPackingParams).then(res=>{
this.$emit("getvalue", qty);
this.$refs['popupqtyedit'].close();
}).catch(error=>{
this.showMessage(error.message)
})
}else {
this.showMessage("生成新箱码失败")
}
}).catch(error=>{
this.showMessage(error.message)
})
},
async getDataInfo(qty){
try{
uni.showLoading({
title:"正在加载中...",
mask:true
})
var labelData = await getInventoryLabel(this.dataContent.recommendPackingCode)
var newPackingCodeParam = this.setNewPackingCodeParam(labelData,qty)
var newPackingCodeData = await generateNewPacking(1,newPackingCodeParam);
var unPackingParams;
if(this.jobType==6){
var unPackingParamsIssue= this.setUnPackingParamsByIssue(labelData,qty,newPackingCodeData[0].code)
var unPackingData = await unPackingByIssue(unPackingParamsIssue,this.dataContent.number,this.dataContent.recommendPackingCode,this.dataContent.recommendQty,newPackingCodeData[0].code,qty)
}else{
var unPackingParamsPur= this.setUnPackingParamsByReceipt(labelData,qty,newPackingCodeData[0].code)
var unPackingData = await unPackingByPurchase(unPackingParamsPur,this.dataContent.number,this.dataContent.recommendPackingCode,this.dataContent.recommendQty,newPackingCodeData[0].code,qty)
}
uni.hideLoading()
this.showMessage("生成新的箱码【"+newPackingCodeData[0].code+"】请到PC端打印标签")
this.$emit("update")
}catch(error){
uni.hideLoading()
this.showMessage(error)
}
},
setNewPackingCodeParam(labelData,qty){
var params =labelData;
params.qty = qty;
return params;
},
showMessage(message) {
this.$refs.refMessage.showMessage(message);
},
setUnPackingParamsByReceipt(labelData,qty,newPackingCode){
var data = labelData;
var itemData =this.dataContent;
var param = {
tenantId: data.tenantId,
remark: "",
extraProperties: {},
worker: localStorage.userName_CN ==""?localStorage.userName:localStorage.userName_CN,
activeDate: data.arriveDate,
confirmed: true,
confirmTime: getCurrDateTime(),
requestNumber:"",
jobNumber: "",
type: "SplitPacking",
useOnTheWayLocation: false,
details: [
{
remark: itemData.remark,
itemCode: itemData.itemCode,
itemName:itemData.itemName,
itemDesc1: itemData.itemDesc1,
itemDesc2:itemData.itemDesc2,
uom: itemData.uom,
qty: qty,
stdPackQty: itemData.stdPackQty,
fromPackingCode: itemData.recommendPackingCode,
fromContainerCode: itemData.recommendContainerCode,
fromLocationCode: itemData.recommendToLocationCode,
fromLocationArea: itemData.recommendToLocationArea,
fromLocationGroup: itemData.recommendToLocationGroup,
fromLocationErpCode: itemData.recommendToLocationErpCode,
fromWarehouseCode: itemData.recommendToWarehouseCode,
fromLot: itemData.recommendLot,
fromStatus: 1,
toPackingCode: newPackingCode,
toContainerCode: itemData.recommendContainerCode,
toLocationCode: itemData.recommendToLocationCode,
toLocationArea: itemData.recommendToLocationArea,
toLocationGroup: itemData.recommendToLocationGroup,
toLocationErpCode: itemData.recommendToLocationErpCode,
toWarehouseCode: itemData.recommendToWarehouseCode,
toLot: itemData.recommendLot,
toStatus: 1,
supplierBatch: data.supplierBatch,
arriveDate: data.arriveDate,
produceDate: data.produceDate,
expireDate: data.expireDate,
onTheWayLocationCode: "",
reason: ""
}
]
}
return param;
},
setUnPackingParamsByIssue(labelData,qty,newPackingCode){
var data = labelData;
var itemData =this.dataContent;
var param = {
tenantId: data.tenantId,
remark: "",
extraProperties: {},
worker: localStorage.userName_CN ==""?localStorage.userName:localStorage.userName_CN,
activeDate: data.arriveDate,
confirmed: true,
confirmTime: data.arriveDate,
requestNumber:"",
jobNumber: "",
type: "SplitPacking",
useOnTheWayLocation: false,
details: [
{
remark: itemData.remark,
itemCode: itemData.itemCode,
itemName:itemData.itemName,
itemDesc1: itemData.itemDesc1,
itemDesc2:itemData.itemDesc2,
uom: itemData.uom,
qty: qty,
stdPackQty: itemData.stdPackQty,
fromPackingCode: itemData.recommendPackingCode,
fromContainerCode: itemData.recommendContainerCode,
fromLocationCode: itemData.recommendFromLocationCode,
fromLocationArea: itemData.recommendFromLocationArea,
fromLocationGroup: itemData.recommendFromLocationGroup,
fromLocationErpCode: itemData.recommendFromLocationErpCode,
fromWarehouseCode: itemData.recommendFromWarehouseCode,
fromLot: itemData.recommendLot,
fromStatus: 2,
toPackingCode: newPackingCode,
toContainerCode: itemData.recommendContainerCode,
toLocationCode: itemData.recommendFromLocationCode,
toLocationArea: itemData.recommendFromLocationArea,
toLocationGroup: itemData.recommendFromLocationGroup,
toLocationErpCode: itemData.recommendFromLocationErpCode,
toWarehouseCode: itemData.recommendFromWarehouseCode,
toLot: itemData.recommendLot,
toStatus: 2,
supplierBatch: itemData.recommendSupplierBatch,
arriveDate: itemData.recommendArriveDate,
produceDate: itemData.recommendProduceDate,
expireDate: itemData.recommendExpireDate,
onTheWayLocationCode: "",
reason: ""
}
]
}
return param;
},
}
}
</script>
<!-- background-color: #fff; -->
<style scoped lang="scss">
.center {
flex: auto;
display: flex;
flex-direction: column;
justify-content: center;
// align-items: center;
}
.flex-item {
width: 50%;
text-align: center;
}
.messageButton {
border-color: #F8F8F8;
}
.messagePopup {
background-color: #fff;
border-radius: 5px;
}
/deep/ .uni-input-input {
font-size: 20px;
height: 46px;
}
</style>