From dbb4a755c136a32b1e0d6d045d95f11841f21d75 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 24 七月 2025 17:01:32 +0800
Subject: [PATCH] #

---
 pages/check/firstCheck.vue |  396 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 pages/home/index.vue       |    7 +
 pages.json                 |    6 
 3 files changed, 409 insertions(+), 0 deletions(-)

diff --git a/pages.json b/pages.json
index def2d0d..6b96799 100644
--- a/pages.json
+++ b/pages.json
@@ -31,6 +31,12 @@
 			}
 		},
 		{
+			"path": "pages/check/firstCheck",
+			"style": {
+				"navigationBarTitleText": "鍒濈洏"
+			}
+		},
+		{
 			"path": "pages/outbound/wavePickItem",
 			"style": {
 				"navigationBarTitleText": "娉㈡鎷h揣"
diff --git a/pages/check/firstCheck.vue b/pages/check/firstCheck.vue
new file mode 100644
index 0000000..b35b830
--- /dev/null
+++ b/pages/check/firstCheck.vue
@@ -0,0 +1,396 @@
+<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="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">
+								<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: {
+
+
+		},
+		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 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('/getCheckTaskItemList2', {
+					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
+					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 38b766c..5ccdfae 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -159,6 +159,13 @@
 					<text>{{$t('index.checkOrder')}}</text>
 				</navigator>
 			</view>
+			<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>
 

--
Gitblit v1.9.1