<template>
|
<view class="has-foot">
|
<form>
|
<view class="cu-form-group margin-top" v-show="!isconfirm">
|
<view class="title">物料标签</view>
|
<input placeholder="请扫描物料标签" v-model="barcode" focus></input>
|
<text class='cuIcon-close text-gray margin-right-xs' v-show="asncode!==''" @click="clearCode"></text>
|
<text class='cuIcon-search text-blue' @click="search"></text>
|
</view>
|
|
</form>
|
|
<view class="cu-list det menu sm-border padding">
|
<block v-for="(item, index) in list" :key="index">
|
<view class="cu-bar bg-white solid-bottom margin-top-sm">
|
<view class="action">
|
<view class="index">
|
{{index+1}}
|
</view>
|
<view class="text-blue">
|
{{`${item.maktx}`}}
|
</view>
|
</view>
|
<view class="action" v-if="!isconfirm">
|
<text @click="remove(index)" class="cuIcon-close text-red" style="font-size: 24px;"></text>
|
</view>
|
</view>
|
|
<view class="cu-item">
|
<view class="content">
|
<text class="text-black">ASN:</text>
|
</view>
|
<view class="action">
|
<text class="text-grey ">{{item.asnCode}}</text>
|
</view>
|
</view>
|
|
<!-- <view class="cu-item">
|
<view class="content">
|
<text class="text-black">供应商批次:</text>
|
</view>
|
<view class="action">
|
<text class="text-grey ">{{item.splrBatch}}</text>
|
</view>
|
</view> -->
|
|
<view class="cu-item">
|
<view class="content">
|
<text class="text-black">最大库存: <text class="text-grey ">{{item.maxQty}}</text></text>
|
</view>
|
<view class="content">
|
<text class="text-black">实时库存: <text class="text-grey ">{{item.stockQty}}</text></text>
|
</view>
|
</view>
|
|
|
|
<view class="cu-item">
|
<view class="content">
|
<text class="text-black">平台行号: <text class="text-grey ">{{item.platformId}}</text></text>
|
</view>
|
<view class="content">
|
<text class="text-black">质检结果: <text class="text-grey ">{{item.inspect}}</text></text>
|
</view>
|
</view>
|
|
<view class="cu-item">
|
<view class="content">
|
<text class="text-black">采购单位:<text class="text-grey ">{{item.purUnit}}</text></text>
|
</view>
|
<view class="content">
|
<text class="text-black">库存单位: <text class="text-grey ">{{item.stockUnit}}</text></text>
|
</view>
|
</view>
|
|
<view class="cu-item">
|
<view class="content">
|
<text class="text-blue">计划收货数量:<text class="text-grey ">{{item.anfme}}</text></text>
|
</view>
|
<view class="content" v-if="!isconfirm">
|
<view class="cu-form-group padding-lr-0">
|
<view class="title text-blue">收货数量:</view>
|
<input type="number" placeholder="请输入收货数量" v-model="item.receiptQty"></input>
|
</view>
|
</view>
|
<view class="content" v-else>
|
<text class="text-black">收货数量:<text class="text-grey ">{{item.receiptQty}}</text></text>
|
</view>
|
</view>
|
|
<view class="cu-item">
|
<view class="content" v-if="!isconfirm">
|
<view class="cu-form-group padding-lr-0">
|
<view class="title text-blue">供应商批次:</view>
|
<input type="number" placeholder="请输入供应商批次" v-model="item.splrBatch"></input>
|
</view>
|
</view>
|
<view class="content" v-else>
|
<text class="text-black">供应商批次:<text class="text-grey ">{{item.splrBatch}}</text></text>
|
</view>
|
</view>
|
|
<view class="cu-item">
|
<view class="content" v-if="!isconfirm">
|
<view class="cu-form-group padding-lr-0">
|
<view class="title text-blue">生产日期:</view>
|
<picker mode="date" v-model="item.prodTime" @change="DateChange($event,item)"
|
placeholder="请输入生产日期">
|
<view class="picker text-left">
|
{{item.prodTime|| '请选择日期'}}
|
</view>
|
</picker>
|
</view>
|
</view>
|
<view class="content" v-else>
|
<text class="text-black">生产日期:<text class="text-grey ">{{item.prodTime}}</text></text>
|
</view>
|
</view>
|
|
|
<view class="cu-item grid col-1" v-if="!isconfirm">
|
<view v-for="el in dynamicFields" :key="el.id">
|
<view class="cu-form-group padding-lr-0">
|
<view class="title text-blue">{{el.fieldsAlise}}:</view>
|
<input :placeholder='`请输入${el.fieldsAlise}`' v-model="item[el.fields]"></input>
|
</view>
|
</view>
|
</view>
|
|
|
<view class="cu-item grid col-2" v-if="isconfirm">
|
<view class="item" v-for="el in dynamicFields" :key="el.id">
|
<text class="text-black">{{el.fieldsAlise}}:
|
<text class="text-grey ">{{item[el.fields]}}</text></text>
|
</view>
|
|
</view>
|
</block>
|
</view>
|
|
|
<view class="text-blue text-right padding-lr" v-show="isconfirm">
|
本次收货总数量:{{allCount}}
|
</view>
|
|
<view class="cu-form-group " v-show="isconfirm">
|
<view class="title">收货区</view>
|
<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
|
@change="selChange"></uni-data-select>
|
</view>
|
|
<view class="cu-bar btn-group foot" v-show="!isconfirm">
|
<button class="cu-btn text-blue line-blue shadow" @click="clear">清空</button>
|
<button class="cu-btn bg-blue shadow-blur" @click="next">下一步</button>
|
</view>
|
|
<view class="cu-bar btn-group foot" v-show="isconfirm">
|
<button class="cu-btn text-blue line-blue shadow" @click="prev">上一步</button>
|
<button class="cu-btn bg-blue shadow-blur" @click="confirm">提交收货</button>
|
</view>
|
|
</view>
|
</template>
|
|
<script>
|
import {
|
request
|
} from '../../common/request.js'
|
import {
|
mapState,
|
mapMutations,
|
mapActions,
|
mapGetters
|
} from 'vuex';
|
export default {
|
data() {
|
return {
|
barcode: '',
|
whAreaId: '',
|
list: [],
|
range: [],
|
isconfirm: false
|
}
|
},
|
computed: {
|
...mapState('user', ['dynamicFields']),
|
allCount() {
|
return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
|
}
|
},
|
mounted() {
|
this.getRece()
|
},
|
methods: {
|
async search() {
|
const {
|
code,
|
data,
|
msg
|
} = await request('/orders/' + this.barcode, {}, "get")
|
if (code === 200) {
|
this.list.push(...data)
|
} else {
|
uni.showToast({
|
title: msg,
|
icon: "none",
|
position: 'top'
|
})
|
}
|
|
|
},
|
clearCode() {
|
this.asncode = ''
|
},
|
remove(index) {
|
this.list.splice(index, 1);
|
},
|
clear() {
|
this.list = []
|
this.barcode = ''
|
},
|
next() {
|
if (this.list.length) {
|
this.isconfirm = true
|
} else {
|
uni.showToast({
|
icon: "none",
|
title: '未选物料标签'
|
})
|
}
|
},
|
prev() {
|
this.isconfirm = false
|
},
|
selChange(val) {
|
uni.setStorageSync('whAreaId', val)
|
},
|
async confirm() {
|
const newArr = this.list.map(item => {
|
return {
|
...item,
|
receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
|
};
|
});
|
if (this.whAreaId === '') {
|
uni.showToast({
|
icon: "none",
|
title: '请选择收货区'
|
})
|
} else {
|
const {
|
code,
|
data,
|
msg
|
} = await request('/orders/confirm', {
|
receipts: newArr,
|
whAreaId: this.whAreaId
|
})
|
if (code === 200) {
|
uni.showToast({
|
title: '收货成功'
|
})
|
this.list = []
|
this.barcode = ''
|
this.isconfirm = false
|
} else {
|
uni.showToast({
|
title: msg,
|
icon: "none",
|
position: 'top'
|
})
|
}
|
|
}
|
},
|
async getRece() {
|
const {
|
code,
|
data,
|
msg
|
} = await request('/areas/receipt', {}, 'get')
|
if (code === 200) {
|
this.range = data.map(item => ({
|
value: item.id,
|
text: item.name
|
}));
|
}
|
},
|
DateChange(e, item) {
|
item.prodTime = e.detail.value
|
}
|
}
|
}
|
</script>
|
|
<style>
|
.index {
|
border: 1px solid #e54d42;
|
color: #e54d42;
|
border-radius: 50%;
|
display: block;
|
width: 50rpx;
|
height: 50rpx;
|
line-height: 48rpx;
|
text-align: center;
|
margin-right: 20rpx;
|
font-size: 30rpx;
|
}
|
|
.text-blue {
|
color: #0081ff !important;
|
|
}
|
|
.item {
|
position: relative;
|
display: flex;
|
min-height: 80upx;
|
align-items: center;
|
}
|
</style>
|