| | |
| | | "stationUnbinding":"Station Unbinding", |
| | | "bindAndInbound":"Binding And Inbound", |
| | | "quickPicking":"Quick Picking", |
| | | "wavePick":"Wave Picking", |
| | | "outLogin":"Login Out", |
| | | "language-change-confirm":"chenge", |
| | | "hello":"Hello, welcome to log in to the WMS system!", |
| | |
| | | "stationUnbinding":"站点解绑", |
| | | "bindAndInbound":"绑定&入库", |
| | | "quickPicking":"快速拣货", |
| | | "wavePick":"波次拣货", |
| | | "outLogin":"退出登录", |
| | | "language-change-confirm":"确定切换?", |
| | | "hello":"您好,欢迎登录WMS系统!", |
| | |
| | | }
|
| | | },
|
| | | {
|
| | | "path": "pages/outbound/wavePick",
|
| | | "style": {
|
| | | "navigationBarTitleText": "波次拣货"
|
| | | }
|
| | | },
|
| | | {
|
| | | "path": "pages/outbound/wavePickItem",
|
| | | "style": {
|
| | | "navigationBarTitleText": "波次拣货"
|
| | | }
|
| | | },
|
| | | {
|
| | | "path": "pages/rece/standard",
|
| | | "style": {
|
| | | "navigationBarTitleText": "标准收货"
|
| | |
| | | <text>{{$t('index.quickPicking')}}</text>
|
| | | </navigator>
|
| | | </view>
|
| | | <view class="cu-item">
|
| | | <navigator hover-class='none' url="/pages/outbound/wavePick" navigateTo>
|
| | | <view class="cuIcon-apps text-blue">
|
| | | </view>
|
| | | <text>{{$t('index.wavePick')}}</text>
|
| | | </navigator>
|
| | | </view>
|
| | |
|
| | | </view>
|
| | |
|
New file |
| | |
| | | <template> |
| | | <view class="has-foot"> |
| | | <form> |
| | | <view class="cu-form-group" v-show="!isconfirm"> |
| | | <view class="title">波次号</view> |
| | | <input placeholder="请扫描波次号" v-model="barcode" @input="search()" focus></input> |
| | | <text class='cuIcon-close text-gray margin-right-xs' v-show="barcode!==''" @click="clearCode"></text> |
| | | </view> |
| | | |
| | | </form> |
| | | |
| | | |
| | | |
| | | <view class="cu-list det menu sm-border padding"> |
| | | <block v-for="(item, index) in list" :key="index"> |
| | | <view class="cu-list det menu " @click="clickTaskItem(index)"> |
| | | |
| | | |
| | | <view class="cu-bar bg-white solid-bottom margin-top-sm"> |
| | | <view class="action"> |
| | | <view class="index"> |
| | | {{index+1}} |
| | | </view> |
| | | </view> |
| | | <view class="content2"> |
| | | <text class="text-gray"><text class="text-black ">{{item.exceStatus$}}</text></text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">波次号:<text class="text-black ">{{item.code}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">创建时间:<text class="text-black ">{{item.createTime$}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">订单数:<text class="text-black ">{{item.orderNum}}</text></text> |
| | | </view> |
| | | <view class="content"> |
| | | <text class="text-gray">品类数量:<text class="text-black ">{{item.groupQty}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">总数量:<text class="text-black ">{{item.anfme}}</text></text> |
| | | </view> |
| | | <view class="content"> |
| | | <text class="text-gray">策略:<text class="text-black ">{{item.matnrCode}}</text></text> |
| | | </view> |
| | | </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 { |
| | | isClickItem:false, |
| | | clickItem:'', |
| | | QRbarcode:null, |
| | | barcode: '', |
| | | whAreaId: '', |
| | | list: [], |
| | | range: [], |
| | | isconfirm: false, |
| | | itemStyle: { |
| | | backgroundColor: '#42b983', |
| | | borderColor: '#42b983' |
| | | }, |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapState('user', ['dynamicFields']), |
| | | allCount() { |
| | | return this.list.reduce((acc, row) => +row.receiptQty + acc, 0) |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | clickTaskItem(index){ |
| | | let that = this |
| | | uni.navigateTo({ |
| | | url: "./wavePickItem", |
| | | // 通过eventChannel向被打开页面传送数据 |
| | | success: function(res) { |
| | | res.eventChannel.emit('waveItem', { |
| | | data: that.list[index] |
| | | }) |
| | | } |
| | | |
| | | }); |
| | | }, |
| | | typeChange(e){ |
| | | this.typeSelect = e.value |
| | | this.search() |
| | | }, |
| | | async search() { |
| | | this.list = [] |
| | | // if(this.barcode === '' || this.barcode ===null){ |
| | | // return ; |
| | | // } |
| | | const { |
| | | code, |
| | | data, |
| | | msg |
| | | } = await request('/getWaveList',{ |
| | | barcode:this.barcode |
| | | } |
| | | ) |
| | | if (code === 200) { |
| | | if (Object.keys(data).length === 0){ |
| | | uni.showToast({ |
| | | title: "未查询到波次数据", |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | } |
| | | this.list.push(...data) |
| | | |
| | | }else if(code == 401){ |
| | | setTimeout(() => { |
| | | uni.removeStorageSync('token'); |
| | | uni.reLaunch({ |
| | | url: "/pages/login/login" |
| | | }); |
| | | }, 1000); |
| | | }else { |
| | | uni.showToast({ |
| | | title: msg, |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | clearCode() { |
| | | this.barcode = '' |
| | | }, |
| | | 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' |
| | | }) |
| | | } |
| | | |
| | | } |
| | | }, |
| | | |
| | | 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; |
| | | } |
| | | .content2 { |
| | | /* background-color: coral; */ |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | margin-right: 10px; |
| | | color: #0081ff; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <view class="has-foot"> |
| | | <form> |
| | | <view class="cu-form-group" v-show="!isconfirm"> |
| | | <view class="title">波次号</view> |
| | | <text class="text-black ">{{wave.code}}</text> |
| | | </view> |
| | | <view class="cu-form-group" 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="barcode!==''" @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-list det menu "> |
| | | |
| | | |
| | | <view class="cu-bar bg-white solid-bottom margin-top-sm"> |
| | | <view class="action"> |
| | | <view class="index"> |
| | | {{index+1}} |
| | | </view> |
| | | </view> |
| | | <view class="content2"> |
| | | <text class="text-gray"><text class="text-black ">{{item.exceStatus$}}</text></text> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">物料编码:<text class="text-black ">{{item.taskItem.matnrCode}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">物料名称:<text class="text-black ">{{item.taskItem.maktx}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">总数量:<text class="text-black ">{{item.taskItem.anfme}}</text></text> |
| | | </view> |
| | | </view> |
| | | |
| | | </view> |
| | | <view class="cu-list det menu noMargin " v-for="(item2,index2) in item.asnOrderItems"> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">{{index2+1}}.</text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">订单号:<text class="text-black ">{{item2.asnCode}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">需求数量:<text class="text-black ">{{item2.anfme}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">已拣数量:<text class="text-black ">{{item2.qty}}</text></text> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <view class="cu-form-group padding-lr-0"> |
| | | <view class="title text-blue"><text |
| | | class="text-red text-xl vertical-middle">*</text>拣:</view> |
| | | <uni-number-box style="width: 70%;" :max="max" v-model="item2.receiptQty" |
| | | :step='1'></uni-number-box> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="cu-item"> |
| | | <view class="content"> |
| | | <text class="text-gray">本次拣货数量:<text class="text-black ">{{item.asnOrderItems.reduce((total, item) => total + (Number(item.receiptQty) ||0 ) , 0)}}</text></text> |
| | | </view> |
| | | </view> |
| | | |
| | | </block> |
| | | </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> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | request |
| | | } from '../../common/request.js' |
| | | import { |
| | | mapState, |
| | | mapMutations, |
| | | mapActions, |
| | | mapGetters |
| | | } from 'vuex'; |
| | | export default { |
| | | data() { |
| | | return { |
| | | wave:'', |
| | | list: [], |
| | | isconfirm: false, |
| | | barcode:'80003642', |
| | | max: 99999999, |
| | | |
| | | } |
| | | }, |
| | | computed: { |
| | | allCount() { |
| | | return this.list.reduce((acc, row) => +row.receiptQty + acc, 0) |
| | | }, |
| | | |
| | | }, |
| | | mounted() { |
| | | |
| | | }, |
| | | onLoad() { |
| | | let that = this |
| | | const eventChannel = this.getOpenerEventChannel(); |
| | | |
| | | eventChannel.on('waveItem', function(data) { |
| | | that.wave = data.data |
| | | |
| | | }) |
| | | this.search() |
| | | }, |
| | | methods: { |
| | | |
| | | clearCode() { |
| | | this.barcode = '' |
| | | }, |
| | | async search() { |
| | | this.list = [] |
| | | // if(this.barcode === '' || this.barcode ===null){ |
| | | // return ; |
| | | // } |
| | | const { |
| | | code, |
| | | data, |
| | | msg |
| | | } = await request('/getContainerWaveList',{ |
| | | barcode:this.barcode |
| | | } |
| | | ) |
| | | if (code === 200) { |
| | | if (Object.keys(data).length === 0){ |
| | | uni.showToast({ |
| | | title: "该标签未查询到数据", |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | } |
| | | this.list.push(...data) |
| | | |
| | | }else if(code == 401){ |
| | | setTimeout(() => { |
| | | uni.removeStorageSync('token'); |
| | | uni.reLaunch({ |
| | | url: "/pages/login/login" |
| | | }); |
| | | }, 1000); |
| | | }else { |
| | | uni.showToast({ |
| | | title: msg, |
| | | icon: "none", |
| | | position: 'top' |
| | | }) |
| | | } |
| | | |
| | | |
| | | }, |
| | | } |
| | | } |
| | | </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; |
| | | } |
| | | .content2 { |
| | | /* background-color: coral; */ |
| | | width: 100%; |
| | | display: flex; |
| | | flex-direction: row; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | margin-right: 10px; |
| | | color: #0081ff; |
| | | } |
| | | .noMargin{ |
| | | margin-top: 0px; |
| | | padding: 5px; |
| | | } |
| | | </style> |