From 07598634258732d130db5f07c130bc5812cb1724 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 05 十一月 2025 17:08:18 +0800
Subject: [PATCH] 盘点功能优化
---
pages/check/TempCheck.vue | 416 ++++++++++++++++++++++++++++++++++++++++++++++++++++
locale/zh-Hans.json | 3
pages/home/index.vue | 9 +
pages.json | 7
locale/en.json | 4
5 files changed, 434 insertions(+), 5 deletions(-)
diff --git a/locale/en.json b/locale/en.json
index a960e47..275c759 100644
--- a/locale/en.json
+++ b/locale/en.json
@@ -35,8 +35,8 @@
"language-change-confirm":"chenge",
"hello":"Hello, welcome to log in to the WMS system!",
"intro":"Make manufacturing and logistics more efficient",
- "checkOrder":"checkOrder"
-
+ "checkOrder":"checkOrder",
+ "tempCheck": "TempCheck"
},
"other":{
diff --git a/locale/zh-Hans.json b/locale/zh-Hans.json
index ff7223c..76ac425 100644
--- a/locale/zh-Hans.json
+++ b/locale/zh-Hans.json
@@ -36,7 +36,8 @@
"language-change-confirm":"纭畾鍒囨崲?",
"hello":"鎮ㄥソ锛屾杩庣櫥褰昗MS绯荤粺锛�",
"intro":"璁╁埗閫犱笌鐗╂祦鏇撮珮鏁�",
- "checkOrder":"鐩樼偣"
+ "checkOrder":"鍗曟嵁鐩樼偣",
+ "tempCheck": "涓存椂鐩樼偣"
},
diff --git a/pages.json b/pages.json
index 6b96799..3dbe06f 100644
--- a/pages.json
+++ b/pages.json
@@ -35,6 +35,12 @@
"style": {
"navigationBarTitleText": "鍒濈洏"
}
+ },
+ {
+ "path": "pages/check/TempCheck",
+ "style": {
+ "navigationBarTitleText": "涓存椂鐩樼偣"
+ }
},
{
"path": "pages/outbound/wavePickItem",
@@ -485,7 +491,6 @@
"navigationBarTitleText": "鍗婃垚鍝佸嚭搴撳崟",
"enablePullDownRefresh": false
}
-
}
, {
diff --git a/pages/check/TempCheck.vue b/pages/check/TempCheck.vue
new file mode 100644
index 0000000..600d372
--- /dev/null
+++ b/pages/check/TempCheck.vue
@@ -0,0 +1,416 @@
+<template>
+ <view class="has-foot">
+ <form>
+ <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>
+ <view class="cu-form-group" v-show="isconfirm">
+ <view class="title">鐗╂枡鐮�</view>
+ <input placeholder="璇锋壂鎻忕墿鏂欑爜" v-model="matnr" focus></input>
+ <text class='cuIcon-close text-gray margin-right-xs' v-show="matnr!==''" @click="clearCode"></text>
+ <text class='cuIcon-search text-blue' @click="addMatnr" v-show="matnr!==''"></text>
+ </view>
+ </form>
+
+ <view class="cu-list det menu sm-border padding">
+ <block v-for="(item, index) in list" v-if="!isconfirm">
+ <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.matnrCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡鍚嶇О:<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鎵规:<text class="text-black ">{{item.batch}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item" v-if="item.extendFields">
+ <view class="content">
+ <view class="cu-form-group padding-lr-0">
+ <text class="text-blue">绁ㄥ彿:</text>
+ <text class="text-black">{{item.extendFields.crushNo}}</text>
+ </view>
+ </view>
+ </view>
+ <view class="cu-item" v-if="check.checkType === 0">
+ <view class="content">
+ <text class="text-gray">鎵樼洏搴撳瓨鏁�:<text class="text-black ">{{item.anfme}}</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="item.checkQty"
+ :step='1'></uni-number-box>
+ </view>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <view class="cu-form-group padding-lr-0">
+ <text class=" text-blue">澶囨敞:</text>
+ <input placeholder="璇疯緭鍏ュ娉�" v-model="item.memo"></input>
+ </view>
+ </view>
+ </view>
+ <view class="cu-item" v-if="item.checkQty !== item.anfme && check.checkType === 0">
+ <view class="content">
+ <view class="cu-form-group padding-lr-0">
+ <view class=" text-blue">宸紓鍘熷洜:</view>
+ <view style="width: 80%;">
+ <uni-data-select style="min-width: 90%; max-width: 90%;" v-model="item.reason"
+ :localdata="reasons" placement="top"></uni-data-select>
+ </view>
+ </view>
+ </view>
+ </view>
+ </view>
+ </block>
+
+ <block v-for="(item, index) in matnrList">
+ <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="action">
+ <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-gray">鐗╂枡缂栫爜:<text class="text-black ">{{item.matnrCode}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <text class="text-gray">鐗╂枡鍚嶇О:<text class="text-black ">{{item.maktx}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item" v-if="check.checkType === 0">
+ <view class="content">
+ <text class="text-gray">搴撳瓨鏁�:<text class="text-black ">{{item.anfme}}</text></text>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <view class="cu-form-group padding-lr-0">
+ <text class=" text-blue">鎵规:</text>
+ <input placeholder="璇疯緭鍏ユ壒娆�" v-model="item.batch"></input>
+ </view>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <view class="cu-form-group padding-lr-0">
+ <text class=" text-blue">绁ㄥ彿:</text>
+ <input placeholder="璇疯緭鍏ョエ鍙�" v-model="item.fieldsIndex"></input>
+ </view>
+ </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="item.checkQty"
+ :step='1'></uni-number-box>
+ </view>
+ </view>
+ </view>
+ <view class="cu-item">
+ <view class="content">
+ <view class="cu-form-group padding-lr-0">
+ <text class=" text-blue">澶囨敞:</text>
+ <input placeholder="璇疯緭鍏ュ娉�" v-model="item.memo"></input>
+ </view>
+ </view>
+ </view>
+ <view class="cu-item" v-if="item.checkQty !== item.anfme && check.checkType === 0">
+ <view class="content">
+ <view class="cu-form-group padding-lr-0">
+ <view class=" text-blue">宸紓鍘熷洜</view>
+ <view style="width: 80%;">
+ <uni-data-select style="min-width: 90%; max-width: 90%;" v-model="item.reason"
+ :localdata="reasons" placement="top"></uni-data-select>
+ </view>
+ </view>
+ </view>
+ </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-orange shadow-blur" @click="returnPage">娣诲姞鏄庣粏</button>
+ <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="complete">鎻愪氦</button>
+ </view>
+
+ <view class="cu-bar btn-group foot" v-show="isconfirm">
+ <button class="cu-btn text-blue line-blue shadow" @click="returnPage">杩斿洖</button>
+ <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="sureAdd">纭畾娣诲姞</button>
+ </view>
+ </view>
+</template>
+
+<script>
+ import {
+ request
+ } from '../../common/request.js'
+ import {
+ mapState,
+ mapMutations,
+ mapActions,
+ mapGetters
+ } from 'vuex';
+ export default {
+ data() {
+ return {
+ check: '',
+ list: [],
+ isconfirm: false,
+ barcode: '',
+ max: 99999999,
+ repeatClick: false,
+ reasons: [],
+ matnr: '',
+ matnrList:[]
+
+ }
+ },
+ computed: {
+ ...mapState('user', ['dynamicFields']),
+ ...mapState('user', {
+ dynFields: state => state.dynamicFields
+ }),
+ allCount() {
+ return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+ }
+ },
+ mounted() {
+ this.getReasons()
+ },
+ onLoad() {
+ let that = this
+ const eventChannel = this.getOpenerEventChannel();
+
+ eventChannel.on('checkItem', function(data) {
+ that.check = data.data
+
+ })
+
+ },
+ methods: {
+ sureAdd(){
+ if(this.matnrList.length === 0){
+ uni.showToast({
+ title: "璇锋坊鍔犵墿鏂欐槑缁�",
+ icon: "none",
+ position: 'top'
+ })
+ return;
+ }
+ this.list.push(...this.matnrList)
+ this.matnrList = []
+ this.isconfirm = !this.isconfirm
+ },
+ remove(index) {
+ this.matnrList.splice(index, 1);
+ },
+
+ async confirmAddMatnr() {
+ let that = this
+ const { code, data, msg } = await request('/select/matnr/confirm', {
+ barcode: that.barcode,
+ matnrs: this.matnrList
+ })
+ if (code === 200) {
+
+ } else {
+
+ }
+ },
+ async addMatnr() {
+ const {
+ code,
+ data,
+ msg
+ } = await request('/selectAddMatnr', {
+ matnr: this.matnr,
+ })
+ if (code === 200) {
+ this.matnrList.push(data)
+ this.matnr = ''
+ }
+ },
+ returnPage() {
+ this.matnrList = []
+ this.isconfirm = !this.isconfirm
+ },
+ async getReasons() {
+ const { code, data, msg } = await request('/getCheckDiffReasonList', {}, 'get')
+ if (code === 200) {
+ this.reasons = data.map(item => ({
+ value: item.id,
+ text: item.label
+ }));
+ }
+ },
+ clear() {
+ this.barcode = ''
+ this.list = []
+ },
+ clearCode() {
+ this.barcode = ''
+ this.matnr = ''
+ },
+ async search() {
+ this.list = []
+ // if(this.barcode === '' || this.barcode ===null){
+ // return ;
+ // }
+ const { code, data, msg } = await request('/check/temp/items', {
+ barcode: this.barcode
+ })
+ if (code === 200) {
+ if (Object.keys(data).length === 0) {
+ uni.showToast({
+ title: "璇ユ爣绛炬湭鏌ヨ鍒版暟鎹�",
+ icon: "none",
+ position: 'top'
+ })
+ }
+ // for (var i = 0; i < data.checkDiffItems.length; i++) {
+ // data.checkDiffItems[i].checkQty = data.checkDiffItems[i].anfme
+ // }
+ this.list = data;//checkDiffItems
+ console.log(this.list);
+ // this.check = data.checkDiff
+
+ } else if (code == 401) {
+ setTimeout(() => {
+ uni.removeStorageSync('token');
+ uni.reLaunch({
+ url: "/pages/login/login"
+ });
+ }, 1000);
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ position: 'top'
+ })
+ }
+
+
+ },
+ async complete() {
+ let that = this
+ if (that.barcode === '' || that.barcode === null) {
+ uni.showToast({
+ title: "瀹瑰櫒鍙蜂负绌�",
+ icon: "error",
+ })
+ return;
+ }
+ if (that.list === [] || that.list.length === 0) {
+ uni.showToast({
+ title: "浠诲姟鏄庣粏涓虹┖",
+ icon: "error",
+ })
+ return;
+ }
+ this.repeatClick = true
+ const {
+ code,
+ data,
+ msg
+ } = await request('/saveCheckDiff', {
+ container: that.barcode,
+ checkId: that.check.id,
+ checkDiffItems: that.list
+ })
+ if (code === 200) {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ that.clear()
+ } else {
+ uni.showToast({
+ title: msg,
+ icon: "none",
+ })
+ }
+ this.repeatClick = false
+ },
+ }
+ }
+</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
diff --git a/pages/home/index.vue b/pages/home/index.vue
index 5ccdfae..519db7f 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -159,12 +159,19 @@
<text>{{$t('index.checkOrder')}}</text>
</navigator>
</view>
- <view class="cu-item">
+<!-- <view class="cu-item">
<navigator hover-class='none' url="/pages/check/firstCheck" navigateTo>
<view class="cuIcon-apps text-blue">
</view>
<text>{{$t('index.checkOrder')}}</text>
</navigator>
+ </view> -->
+ <view class="cu-item">
+ <navigator hover-class='none' url="/pages/check/TempCheck" navigateTo>
+ <view class="cuIcon-apps text-blue">
+ </view>
+ <text>{{$t('index.tempCheck')}}</text>
+ </navigator>
</view>
</view>
--
Gitblit v1.9.1