<template>
|
<default-header-page-layout ref="page" title="入库作业" >
|
<view class="page-frame with-action-user-row" :style="{height:pageBodyHeight+'px'}" v-if="pageBodyHeight">
|
<action-user-row />
|
<view class="with-action-user-row-page-content">
|
<scan-input-form-item
|
class="forma-item"
|
label="批次号"
|
v-model="form.orderNo"
|
:msg="msg.orderNo"
|
:msg-type="msgType.orderNo"
|
@search="onSearchOrderNo"
|
@clear="onClearOrderNo"
|
/>
|
|
<template v-if="materialObj.id">
|
<view class="material-block">
|
<view class="material-block-item">
|
<view class="label">批次号:</view>
|
<view class="content auto-wrap">{{materialObj.batch}}</view>
|
</view>
|
<view class="material-block-item">
|
<view class="label auto-wrap">流水号:</view>
|
<view class="content">
|
<input class="easy-input" v-model="materialObj.serialNo" />
|
</view>
|
</view>
|
<view class="material-block-item">
|
<view class="label">长:</view>
|
<view class="content auto-wrap">{{materialObj.long}}</view>
|
</view>
|
<view class="material-block-item">
|
<view class="label">宽:</view>
|
<view class="content auto-wrap">{{materialObj.wide}}</view>
|
</view>
|
<view class="material-block-item">
|
<view class="label">高:</view>
|
<view class="content auto-wrap">{{materialObj.high}}</view>
|
</view>
|
</view>
|
|
<easy-select-form-item
|
label="入库口"
|
v-model="form.entranceId"
|
:msg="msg.entranceId"
|
:msg-type="msgType.entranceId"
|
:list="selectList.entrances"
|
value-field="code"
|
label-field="name"
|
:clearable="false"
|
/>
|
</template>
|
|
</view>
|
|
</view>
|
<template v-slot:footer>
|
<view class="bottom-btns-row">
|
<u-button type="primary" text="提交入库" :disabled="confirmBtnDisabled" @click="onSubmit"></u-button>
|
</view>
|
</template>
|
</default-header-page-layout>
|
</template>
|
|
<script>
|
import DefaultHeaderPageLayout from '@/components/DefaultHeaderPageLayout.vue'
|
import ActionUserRow from '@/components/ActionUserRow.vue'
|
import ScanInputFormItem from '@/components/ScanInputFormItem.vue'
|
import EasySelectFormItem from '@/components/EasySelectFormItem.vue'
|
import { $alert, $successInfo, regexValidate } from '@/static/js/utils/index.js'
|
let initInterVal = null;
|
const defaultForm = {
|
orderNo:'',
|
entranceId:''
|
}
|
export default {
|
name:'fapaoInStorePage',
|
components:{DefaultHeaderPageLayout,ActionUserRow,ScanInputFormItem,EasySelectFormItem},
|
data(){
|
return {
|
pageBodyHeight:0,
|
step:1,
|
form:{...defaultForm},
|
msg:{
|
orderNo:'',
|
entranceId:''
|
},
|
msgType:{
|
orderNo:'error',
|
entranceId:'error'
|
},
|
materialObj:{},
|
selectList:{
|
entrances:[]
|
}
|
}
|
},
|
computed:{
|
confirmBtnDisabled(){
|
let res = true;
|
if (this.materialObj.id && this.form.entranceId) {
|
res = false
|
}
|
return res;
|
}
|
},
|
methods:{
|
/* 单据编号搜索 */
|
onSearchOrderNo(){
|
if (!this.form.orderNo) {
|
this.msg.orderNo = '请输入批次号!';
|
return false;
|
}
|
this.msg.orderNo = '';
|
this.getSearchInfo()
|
},
|
/* 清除单据编号 */
|
onClearOrderNo(){
|
this.resetOrderNo()
|
},
|
/* 清除单据编号信息 */
|
resetOrderNo(){
|
this.msg.orderNo = '';
|
this.form.orderNo = ''
|
this.materialObj = {};
|
this.form.entranceId = null
|
},
|
getSelectOptions(callback){
|
this.$api.get('PdaGetWarehouseEntrance',{Id:this.materialObj.id},{block:'fapaoIn',loading:false}).then(d=>{
|
this.selectList.entrances = d.outEntranceListOutputList || []
|
this.form.entranceId = d.defaultCode
|
callback && callback(true)
|
}).catch((errmsg)=>{
|
callback && callback(false,errmsg)
|
})
|
},
|
getSearchInfo(callback,needloding=true){
|
if (needloding) {
|
uni.showLoading({
|
title: '加载中...',
|
mask:true
|
});
|
}
|
this.getInMaterilaInfo((f,msg1)=>{
|
if (f){
|
this.getSelectOptions((fx,msg2)=>{
|
if (needloding) {
|
uni.hideLoading();
|
if (!fx) {
|
$alert(msg2)
|
}
|
}
|
callback && callback(fx,msg2)
|
})
|
} else {
|
if (needloding) {
|
uni.hideLoading();
|
$alert(msg1)
|
}
|
callback && callback(false,msg1)
|
}
|
})
|
},
|
/* 获取入库物料信息 */
|
getInMaterilaInfo(callback){
|
let params = {Batch:this.form.orderNo}
|
this.$api.get('GetDetail',params,{block:'fapaoIn',loading:false,warn:false}).then((d)=>{
|
this.materialObj = d
|
callback && callback(true)
|
}).catch((_errmsg)=>{
|
this.resetOrderNo()
|
callback && callback(false,_errmsg)
|
})
|
},
|
inputCheck(){
|
let res = true, msg = '';
|
if (!this.materialObj.serialNo) {
|
msg = '请输入流水号';
|
res = false
|
}
|
|
if (res && !regexValidate.positiveInteger(this.materialObj.serialNo)) {
|
msg = '请输入只能是正整数';
|
res = false
|
}
|
|
if (res && Number(this.materialObj.serialNo)<=0) {
|
msg = '请输入只能是正整数';
|
res = false
|
}
|
|
if (!res) {
|
$alert(msg)
|
}
|
|
return res;
|
},
|
/* 响应提交按钮 */
|
onSubmit(){
|
if (!this.inputCheck()) return false;
|
uni.showLoading({
|
title: '加载中...',
|
mask:true
|
});
|
this.dealConfirm((f,_errmsg1)=>{
|
if (f) {
|
setTimeout(()=>{
|
this.getSearchInfo((fx,_errmsg2)=>{
|
uni.hideLoading();
|
if (fx) {
|
$successInfo('入库成功')
|
} else {
|
$alert(`入库成功,但:${_errmsg2}`)
|
}
|
},false)
|
},5000)
|
} else {
|
uni.hideLoading();
|
$alert(_errmsg1)
|
}
|
})
|
},
|
/* 提交接口调用 */
|
dealConfirm(callback){
|
let params = {
|
batch:this.materialObj.batch,
|
serialNo:this.materialObj.serialNo,
|
entranceCode:this.form.entranceId
|
}
|
this.$api.post('FoamingPdaAutomaticWarehouse',params,{block:'fapaoIn',loading:false,warn:false}).then(()=>{
|
callback && callback(true)
|
}).catch((e)=>{
|
callback && callback(false,e)
|
})
|
},
|
/* 页面初始化获取页面body高度的定时器 */
|
startInitInterval(callback){
|
initInterVal = setInterval(()=>{
|
if (this.pageBodyHeight) {
|
this.clearInitInterval()
|
callback && callback()
|
} else {
|
this.pageBodyHeight = this.$refs.page.getBodyHeight()
|
}
|
},200)
|
},
|
/* 清除定时器 */
|
clearInitInterval(){
|
try{
|
clearInterval(initInterVal)
|
initInterVal = null
|
}catch(e){
|
//TODO handle the exception
|
}
|
}
|
},
|
onReady(){
|
this.startInitInterval(()=>{
|
/* 页面初始化后需要执行的代码在这边调用 */
|
})
|
},
|
onUnload(){
|
this.clearInitInterval()
|
}
|
}
|
</script>
|
|
<style scoped lang="scss">
|
.bottom-btns-row{
|
padding: 10rpx;
|
background-color: $uni-bg-color;
|
}
|
.forma-item{
|
margin-bottom: 24rpx;
|
}
|
.material-block{
|
background-color: $uni-bg-color;
|
padding: 8rpx 16rpx;
|
font-size: 1.1em;
|
margin-bottom: 24rpx;
|
border-width: 2rpx 0;
|
border-style: solid;
|
border-color: $uni-border-color;
|
.material-block-item{
|
border-bottom: 2rpx dashed $uni-text-color-grey;
|
display: flex;
|
&>.label{
|
opacity: .7;
|
flex-shrink: 0;
|
width: 130rpx;
|
text-align: right;
|
padding-top: 11rpx;
|
}
|
&>.content{
|
width: 1px;
|
flex-grow: 1;
|
line-height: 1.5em;
|
padding: 8rpx 0;
|
}
|
&:last-child{
|
border-bottom: 0;
|
}
|
}
|
.easy-input{
|
font-size: inherit;
|
color: $uni-color-primary;
|
text-decoration: underline;
|
}
|
}
|
</style>
|