From ee9e214c91e6a98a7c7d6d1f8a9eacb26227f882 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期六, 21 六月 2025 15:48:03 +0800
Subject: [PATCH] #
---
pages/outbound/wavePickItem.vue | 234 +++++++++++++++++++++++
locale/zh-Hans.json | 1
pages/home/index.vue | 7
pages.json | 12 +
locale/en.json | 1
pages/outbound/wavePick.vue | 286 ++++++++++++++++++++++++++++
6 files changed, 541 insertions(+), 0 deletions(-)
diff --git a/locale/en.json b/locale/en.json
index 4f42730..6285cbf 100644
--- a/locale/en.json
+++ b/locale/en.json
@@ -30,6 +30,7 @@
"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!",
diff --git a/locale/zh-Hans.json b/locale/zh-Hans.json
index 51e1137..65b55d3 100644
--- a/locale/zh-Hans.json
+++ b/locale/zh-Hans.json
@@ -31,6 +31,7 @@
"stationUnbinding":"绔欑偣瑙g粦",
"bindAndInbound":"缁戝畾&鍏ュ簱",
"quickPicking":"蹇�熸嫞璐�",
+ "wavePick":"娉㈡鎷h揣",
"outLogin":"閫�鍑虹櫥褰�",
"language-change-confirm":"纭畾鍒囨崲?",
"hello":"鎮ㄥソ锛屾杩庣櫥褰昗MS绯荤粺锛�",
diff --git a/pages.json b/pages.json
index 505d8a6..8e9a351 100644
--- a/pages.json
+++ b/pages.json
@@ -13,6 +13,18 @@
}
},
{
+ "path": "pages/outbound/wavePick",
+ "style": {
+ "navigationBarTitleText": "娉㈡鎷h揣"
+ }
+ },
+ {
+ "path": "pages/outbound/wavePickItem",
+ "style": {
+ "navigationBarTitleText": "娉㈡鎷h揣"
+ }
+ },
+ {
"path": "pages/rece/standard",
"style": {
"navigationBarTitleText": "鏍囧噯鏀惰揣"
diff --git a/pages/home/index.vue b/pages/home/index.vue
index e94efa4..39631dc 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -145,6 +145,13 @@
<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>
diff --git a/pages/outbound/wavePick.vue b/pages/outbound/wavePick.vue
new file mode 100644
index 0000000..d7b1ef9
--- /dev/null
+++ b/pages/outbound/wavePick.vue
@@ -0,0 +1,286 @@
+<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>
\ No newline at end of file
diff --git a/pages/outbound/wavePickItem.vue b/pages/outbound/wavePickItem.vue
new file mode 100644
index 0000000..b1e1546
--- /dev/null
+++ b/pages/outbound/wavePickItem.vue
@@ -0,0 +1,234 @@
+<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">鏈鎷h揣鏁伴噺:<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>
\ No newline at end of file
--
Gitblit v1.9.1