From 112c71dbe86fdffffe3dceb13fc7881e7fbe7881 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期一, 26 五月 2025 18:18:49 +0800
Subject: [PATCH] 123

---
 pages/basics/order.vue |  444 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 354 insertions(+), 90 deletions(-)

diff --git a/pages/basics/order.vue b/pages/basics/order.vue
index 0bd3f53..0647679 100644
--- a/pages/basics/order.vue
+++ b/pages/basics/order.vue
@@ -8,24 +8,12 @@
 				</view>
 				<view class="square-content">
 					<view class="content-input">
-						<input  v-model="barcode" type="text" placeholder="鎵爜 / 杈撳叆" maxlength="8">
+						<input  v-model="barcode" type="text" placeholder="鎵爜 / 杈撳叆" maxlength="10"
+						:focus="barcodeFocus" @input="barcodeInput" placeholder-style="line-height:  85rpx;">
 						<uni-icons type="closeempty" size="20" color="#dadada" @click="removeBarcode()"></uni-icons>
 					</view>
 				</view>
 			</view>
-			
-			<!-- <view class="pak-seach-box">
-				<view class="box-top">
-					<view class="color-block-blue"></view>
-					<text class="title">鎵樼洏鏉$爜</text>
-				</view>
-				<view class="box-buttom">
-					<input v-model="barcode" type="text" placeholder="鎵爜 / 杈撳叆" maxlength="8">
-					<view class="search-icon">
-						<uni-icons type="closeempty" size="20" color="#a5a5a5" @click="removeBarcode()"></uni-icons>
-					</view>
-				</view>
-			</view> -->
 			
 			<view class="square-2">
 				<view class="square-title">
@@ -34,68 +22,92 @@
 				</view>
 				<view class="square-content">
 					<view class="content-input">
-						<input v-model="order" type="text" placeholder="鎵爜 / 杈撳叆" @input="findOrder()">
+						<input v-model="order" type="text" placeholder="鎵爜 / 杈撳叆" @input="findOrder()"
+						:focus="focus" placeholder-style="line-height:  85rpx;">
 						<uni-icons type="closeempty" size="20" color="#dadada" @click="removeOrder()"></uni-icons>
 					</view>
 				</view>
 			</view>
 			
-			<!-- <view class="pak-seach-box">
-				<view class="box-top">
-					<view class="color-block-blue"></view>
-					<text class="title">鍗曟嵁缂栧彿</text>
+			<view class="square-2">
+				<view class="square-title">
+					<view class="title-sign"><view class="sign"></view></view>
+					<view class="title-text"><text>鐗╂枡鏉$爜</text></view>
 				</view>
-				<view class="box-buttom">
-					<input v-model="order" type="text" placeholder="鎵爜 / 杈撳叆" @input="findOrder()">
-					<view class="search-icon">
-						<uni-icons type="closeempty" size="20" color="#a5a5a5" @click="removeOrder()"></uni-icons>
+				<view class="square-content">
+					<view class="content-input">
+						<input v-model="tiaoma" type="text" placeholder="鎵爜 / 杈撳叆" @input="findTiaoMa()"
+						:focus="tmfocus" placeholder-style="line-height:  85rpx;">
+						<uni-icons type="closeempty" size="20" color="#dadada" @click="removeTm()"></uni-icons>
 					</view>
 				</view>
-			</view> -->
+			</view>
+			
 			<view class="square-1">
 				<view class="square-title">
 					<view class="title-sign"><view class="sign"></view></view>
 					<view class="title-text"><text>鍟嗗搧鍒楄〃</text></view>
+					<view v-show="matList.length != 0" class="lable">
+						<!-- <label class="label-btn" style="width: 170rpx;line-height: 95rpx;"  >
+							<checkbox :checked="check" @click="allChecked()">{{checkText}}</checkbox>
+						</label> -->
+						<!-- <label class="label-btn"  >
+							<text  @click="reChecked()">鍙嶉��</text>
+						</label>
+						<label >
+							<uni-icons type="trash" size="25" color="#a5a5a5" @click="remove()"></uni-icons>
+						</label> -->
+					</view>
 				</view>
+				
 			</view>
-			<view class="square-none" v-show="orderList.length === 0">
+			<view class="square-none" v-show="matList.length === 0">
 				<view class="v-show">鏆傛棤鏇村鏁版嵁...</view>
 			</view>
 			
-			<!-- <view class="pak-data-box">
-				<view class="box-top">
-					<view class="color-block-blue"></view>
-					<text class="title">鍟嗗搧鍒楄〃</text>
-				</view>
-			</view>
-			<view class="pak-data-box"  v-show="orderList.length === 0">
-				<view style="text-align: center;">鏆傛棤鏇村鏁版嵁</view>
-			</view> -->
-			<checkbox-group>
-				<view v-for="(item,index) in orderList" :key="index" class="data-list bg-false" :class="'bg-'+item.checked" >
-					<view class="data-list-left">
-						<view class="matnr"><text style="width: 400rpx;">缂栫爜锛歿{item.matnr}}</text></view>
-						<view><text style="width: 400rpx;">鍝佸悕锛歿{item.maktx}}</text></view>
-						<view><text style="width: 400rpx;">鎵瑰彿锛歿{item.batch}}</text></view>
+			<checkbox-group @change="checkbox">
+				<view v-for="(item,index) in matList" :key="index" v-if="item.anfme>0"  class="data-list bg-false" :class="'bg-'+item.checked" >
+					<label class="left-check-box" >
+						<checkbox :value="item.id+''" :checked="true" style="display: block;" />
+					</label>
+					<view class="data-list-left" >
+						<view class="matnr"><text style="width: 700rpx;">鍝佸彿锛歿{item.matnr}}</text></view>
+						<view><text style="width: 700rpx;">鍝佸悕锛歿{item.maktx}}</text></view>
+						<view><text style="width: 700rpx;">鎵瑰彿锛歿{item.batch}}</text></view>
 						<view>
-							<text style="width: 400rpx;">鏁伴噺锛歿{item.anfme}}</text>
+							<text style="width: 700rpx;">鎬绘暟閲忥細{{item.count}}</text>
+						</view>
+						<view>
+							<text style="width: 700rpx;">鍙粍鎵樻渶澶ф暟閲忥細{{item.anfme}}</text>
 						</view>
 					</view>
 					<view class="data-list-right">
 						<label><uni-icons type="compose" size="20" color="#a5a5a5" @click="revise(item,index)"></uni-icons></label>
-						<label><uni-icons type="trash" size="25" color="#a5a5a5" @click="remove(item,index)"></uni-icons></label>
+						<!-- list涓垹闄ら敭 -->
+						<!-- <label><uni-icons type="trash" size="25" color="#a5a5a5" @click="remove(item,index)"></uni-icons></label> -->
 					</view>
 				</view>
 			</checkbox-group>
 		</scroll-view>
+		
+		<!-- 搴曢儴鎸夐挳 -->
 		<view class="footer flex justify-around">
-			<view>
-				<button class="cu-btn lg" @click="resst()">閲嶇疆</button>
-			</view>
-			<view>
-				<button class="cu-btn lg pakin-btn bg-blue" @click="comb()">缁勬墭</button>
-			</view>
+			<!-- 搴曢儴鍏ㄩ�� 鍙嶉�夋寜閽� -->
+			<!-- <label class="label-btn" style="width: 170rpx;">
+				<checkbox :checked="check" @click="allChecked()">{{checkText}}</checkbox>
+			</label>
+			<label class="label-btn" style="width: 100rpx;">
+				<text  @click="reChecked()">鍙嶉��</text>
+			</label> -->
+			
+			<label class="label-btn" style="width: 150rpx;">
+				<button class="cu-btn" @click="resst()">閲嶇疆</button>
+			</label>
+			<label class="label-btn">
+				<button class="cu-btn bg-blue " @click="comb()">缁勬墭</button>
+			</label>
 		</view>
+		
 		<view>
 			<!-- 淇敼鏁伴噺 -->
 			<uni-popup ref="revise" background-color="#fff" @change="change">
@@ -107,10 +119,11 @@
 					<view class="text-box">
 						<text>鍙粍鏁伴噺锛歿{enableQty}}</text>
 					</view>
-					<view class="changeBox">
+					<view class="changeBox flex justify-around">
 						<view class="num-box">
 							<uni-number-box v-model="count" :min="minCount" :max="maxCount" color="#747474"  @change="changeValue"/>
 						</view> 
+						<button class="cu-btn" @click="changeMax">max</button>
 					</view>
 					<view class="revise-box-buttom">
 						<view>
@@ -129,20 +142,28 @@
 	export default {
 		data() {
 			return {
+				commonUrl:null,
 				barcode: '',
+				barcodeFocus:true,
+				tmfocus:false,
+				focus:false,
 				type: 'center',
 				searchBox: 'hide',
 				pick:'hide',
 				order:null,
 				orderNo:null,
-				orderList:[],
+				tiaoma:null,
+				tiaomas:[],
+				matList:[],
 				result: '',
 				count:'',
 				minCount:0,
 				maxCount:'',
 				rowNum:'',
 				enableQty:'',
-				
+				check:false,
+				checkText:'鍏ㄩ��',
+				checkedData:[],
 			}
 		},
 		mounted(){
@@ -150,21 +171,78 @@
 			this.baseIP = UIP;
 			const UPORT = uni.getStorageSync('UPORT');
 			this.basePORT = UPORT
+			const PROJ = uni.getStorageSync('UPROJ');
+			this.baseUrl = PROJ
+			this.getUrl()
 		},
 		methods: {
+			// 鑾峰彇url
+			getUrl() {
+				this.commonUrl = this.baseHttp + this.baseIP + ':' +this.basePORT + "/" +this.baseUrl
+			},
+			// barcode input 浜嬩欢
+			barcodeInput() {
+				var len = this.barcode.length
+				if (len != 8) {
+					uni.showToast({title: '鎵樼洏鐮佹湁璇閲嶈瘯', icon: "none", position: 'top'});
+					this.barcodeFocuss()
+					return;
+				}
+				if (len == 8) {
+					this.focuss()
+				}
+			},
+			// 鎵樼洏鐮佹湁璇噸缃�
+			barcodeFocuss() {
+				// #ifdef APP
+				let that = this;
+				that.barcodeFocus = false;
+				setTimeout(()=>{
+					that.barcode = '';
+					that.barcodeFocus = true;
+				}, 100);
+				// #endif
+			},
+			focuss() {
+				// #ifdef APP
+				let that = this;
+				that.focus = false;
+				setTimeout(()=>{
+					that.matnrId = '';
+					that.focus = true;
+				}, 100);
+				// #endif
+			},
 			resst() {
-				this.orderList = []
+				this.matList = []
 				this.barcode = ''
 				this.order = ''
+				this.barcodeFocuss()
 				uni.vibrateShort();
 			},
 			removeBarcode() {
 				this.barcode = ''
 				uni.vibrateShort();
+				this.barcodeFocus = false;
+				this.$nextTick(function() {
+					this.barcodeFocus = true;
+				});
 			},
 			removeOrder() {
 				this.order = ''
 				uni.vibrateShort();
+				this.focus = false;
+				this.$nextTick(function() {
+					this.focus = true;
+				});
+			},
+			removeTm() {
+				this.tiaoma = ''
+				uni.vibrateShort();
+				this.tmfocus = false;
+				this.$nextTick(function() {
+					this.focus = true;
+				});
 			},
 			eject(type) {
 				this.type = type
@@ -172,16 +250,15 @@
 				this.$refs.revise.open(type)
 			},
 			initAnfme() {
-			
-				for (var i = 0; i < this.orderList.length; i++) {
-					this.orderList[i].anfme = 0
+				for (var i = 0; i < this.matList.length; i++) {
+					this.matList[i].anfme = 0
 				}
 				uni.hideLoading();
 			},
 			revise(item,index) {
-				var maxCount = this.orderList[index].maxCount
+				var maxCount = this.matList[index].maxCount
 				if (maxCount == undefined ) {
-					this.orderList[index]["maxCount"] = item.enableQty
+					this.matList[index]["maxCount"] = item.enableQty
 				} 
 				this.enableQty = item.enableQty
 				this.count = this.minCount
@@ -189,21 +266,43 @@
 				this.rowNum = index
 				this.eject()
 			},
+			changeMax() {
+				this.count = this.enableQty
+			},
 			changeValue() {
 				
 			},
-			remove(item,index) {
-				this.orderList.splice(index,1)
+			remove() {
+				console.log(this.matList.filter(item=> item.checked !== true))
+				this.matList = this.matList.filter(item=> item.checked !== true)
+				
+				// this.matList.splice(i,1)
+				
+				// for (var i = 0; i < this.matList.length; i++) {
+				// 	if (this.matList[i].checked == true) {
+						
+				// 	}
+				// }
+				this.checkList();
 				uni.vibrateShort();
 			},
+			// 鍒楄〃涓垹闄�
+			// remove(item,index) {
+			// 	this.matList.splice(index,1)
+			// 	uni.vibrateShort();
+			// },
 			confirm() {
-				this.orderList[this.rowNum].anfme = this.count
+				this.matList[this.rowNum].anfme = this.count
 				this.$refs.revise.close()
 			},
 			comb() {
 				uni.vibrateShort();
 				let that = this;
-				if (that.barcode === '') {
+				if (!that.orderNo) {
+					uni.showToast({title: '璇锋壂鎻忓崟鎹彿', icon: "none", position: 'top'});
+					return;
+				}
+				if (!that.barcode) {
 					uni.showToast({title: '璇锋壂鎻忔墭鐩樻潯鐮�', icon: "none", position: 'top'});
 					return;
 				}
@@ -211,23 +310,24 @@
 					uni.showToast({title: '鎵樼洏鐮佸繀椤讳负8浣�', icon: "none", position: 'top'});
 					return;
 				}
-				if (that.orderList.length === 0) {
+				let mats =that.matList.filter(mat =>mat.anfme>0);
+				if (mats.length === 0) {
 					uni.showToast({title: '璇锋坊鍔犲晢鍝佸垪琛�', icon: "none", position: 'top'});
 					return;
 				}
-				for (var i = 0; i < that.orderList.length; i++) {
-					if (that.orderList[i].anfme === 0) {
-						uni.showToast({title: '鍟嗗搧缁勬墭鏁伴噺涓�0涓嶈兘缁勬墭', icon: "none", position: 'top'});
-						return;
-					}
-				}
+				// for (var i = 0; i < mats.length; i++) {
+				// 	if (that.matList[i].anfme === 0) {
+				// 		uni.showToast({title: '鍟嗗搧缁勬墭鏁伴噺涓�0涓嶈兘缁勬墭', icon: "none", position: 'top'});
+				// 		return;
+				// 	}
+				// }
 				uni.showLoading();
 				uni.request({
-				    url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + '/mobile/comb/auth',
+				    url: that.commonUrl + '/mobile/comb/auth',
 				    data: JSON.stringify({
 						orderNo: that.orderNo,
 						barcode: that.barcode,
-						combMats: that.orderList
+						combMats: mats
 					}),
 					method: 'POST',
 				    header: {
@@ -239,13 +339,10 @@
 						if (res.code === 200) {
 							uni.showToast({
 								title: res.msg,
-								position: 'bottom',
+								position: 'top',
 								duration: 1000
 							});
-							that.barcode = ''
-							that.orderNo = ''
-							that.order = ''
-							that.orderList = []
+							that.resst()
 						} else if (res.code == 403) {
 							uni.showToast({title: res.msg, icon: "none", position: 'top'})
 							setTimeout(() => {
@@ -262,7 +359,7 @@
 			findOrder() {
 				let that = this
 				uni.request({
-				    url: that.baseHttp + that.baseIP + ':' +that.basePORT + that.baseUrl + '/mobile/order/search/orderNo/auth',
+				    url: that.commonUrl + '/mobile/order/search/orderNo/auth',
 				    data: {
 						orderNo: that.order
 				    },
@@ -270,15 +367,23 @@
 						'token':uni.getStorageSync('token')
 				    },
 					success(result) {
+						console.log("result锛�");
+						console.log(result)
 						let res = result.data
-						if (res.code === 200) {
-							if(res.data) {
-									uni.showLoading();
-								that.orderList = res.data;
-								that.orderNo = that.order
-								that.initAnfme()
-								console.log(that.orderList)
-							}
+						if (res.code === 200 && res.data) {
+							uni.showLoading();
+							that.orderNo = that.order
+							// that.matList = res.data.map(item => ({
+							// 	...item,
+							// 	combMats: typeof item.combMats === 'string' ? 
+							// 			 JSON.parse(item.combMats) : item.combMats // 纭繚瀵硅薄缁撴瀯[1,2](@ref)
+							// }));
+							that.matList = res.data.combMats
+							that.initAnfme();
+						
+							console.log("that.matList锛�");
+							console.log(that.matList)
+							
 						} else if (res.code == 403) {
 							uni.showToast({title: res.msg, icon: "none", position: 'top'})
 							setTimeout(() => {
@@ -292,6 +397,66 @@
 					}
 				});
 			},
+			findTiaoMa() {
+				let that = this
+				if (!that.orderNo) {
+					uni.showToast({title: '璇锋壂鎻忓崟鎹彿', icon: "none", position: 'top'});
+					return;
+				}
+				uni.request({
+				    url: that.commonUrl + '/mobile/mat/search/auth',
+				    data: {
+						matnr: that.tiaoma
+				    },
+				    header: {
+						'token':uni.getStorageSync('token')
+				    },
+					success(result) {
+						console.log("result锛�");
+						console.log(result)
+						let res = result.data
+						if (res.code === 200 && res.data) {
+							that.checkMat(res.data)
+							//this.tiaomas.unshift(that.tiaoma)
+						} else if (res.code == 403) {
+							uni.showToast({title: res.msg, icon: "none", position: 'top'})
+							setTimeout(() => {
+								uni.reLaunch({
+									url: '../login/login'
+								});
+							}, 1000);
+						} else {
+							uni.showToast({title: res.msg, icon: "none",position: 'top'})
+						}
+					}
+				});
+			},
+			checkMat(mat) {
+				var len = this.matList.length
+				var add = true
+				for (var i = 0; i < len; i++) {
+					if (mat.matnr == this.matList[i].matnr) {
+						if ( mat.batch){
+							if( mat.batch == this.matList[i].batch){
+								this.matList[i].anfme += mat.anfme
+								this.$forceUpdate() // 寮哄埗鍒锋柊
+								add = false
+							}
+						}else{
+							this.matList[i].anfme += mat.anfme
+							this.$forceUpdate() // 寮哄埗鍒锋柊
+							add = false
+						}
+						
+					}
+				}
+				this.tiaoma = ''
+				uni.vibrateShort();
+				this.focus = false;
+				this.$nextTick(function() {
+					this.focus = true;
+				});
+			},
 			change(e) {
 				// console.log('褰撳墠妯″紡锛�' + e.type + ',鐘舵�侊細' + e.show);
 			},
@@ -300,6 +465,78 @@
 				// open 鏂规硶浼犲叆鍙傛暟 绛夊悓鍦� uni-popup 缁勪欢涓婄粦瀹� type灞炴��
 				this.$refs.goodsSearch.open(type)
 			},
+			// 鍒楄〃閫夋嫨
+			checkbox: function (e) {
+				var items = this.matList,
+					values = e.detail.value;
+				for (var i = 0, lenI = items.length; i < lenI; ++i) {
+					const item = items[i]
+					item.id = item.id + ''
+					if(values.indexOf(item.id) >= 0){
+						this.$set(item,'checked',true)
+					}else{
+						this.$set(item,'checked',false)
+					}
+				}
+				if (values.length == items.length) {
+					this.check = true
+					this.checkText = "鍙栨秷鍏ㄩ��"
+				} else {
+					this.check = false
+					this.checkText = "鍏ㄩ��"
+				}
+				uni.vibrateShort();
+			},
+			// 鍒楄〃鍙嶉��
+			reChecked() { 
+				if (this.matList.length == 0) {
+					return;
+				}
+				var checkArr = []
+				for (var i = 0; i < this.matList.length;i++) {
+					if (this.matList[i].checked == true) {
+						this.$set(this.matList[i],'checked',false)
+					}else{
+						this.$set(this.matList[i],'checked',true)
+					}
+					if (this.matList[i].checked == true) {
+						checkArr.push(this.matList[i].checked) 
+					}
+				}
+				if (checkArr.length == this.matList.length) {
+					this.check = true
+					this.checkText = "鍙栨秷鍏ㄩ��"
+				} else {
+					this.check = false
+					this.checkText = "鍏ㄩ��"
+				}
+				uni.vibrateShort();
+			},
+			// 鍒楄〃鍏ㄩ��
+			allChecked(e){ 
+				if (this.check == true) {
+					for (var i = 0; i < this.matList.length;i++) {
+						this.$set(this.matList[i],'checked',false)
+					}
+					this.check = false
+					this.checkText = "鍏ㄩ��"
+				} else {
+					for (var i = 0; i < this.matList.length;i++) {
+						this.$set(this.matList[i],'checked',true)
+					}
+					this.check = true
+					this.checkText = "鍙栨秷鍏ㄩ��"
+				}
+				uni.vibrateShort();
+			},
+			// 妫�楠屽垪琛ㄩ暱搴� 绛変簬0 鏄剧ず鍏ㄩ��  
+			checkList() {
+				if (this.matList.length == 0) {
+					this.check = false
+					this.checkText = "鍏ㄩ��"
+					return;
+				}
+			}
 		}
 	}
 </script>
@@ -307,7 +544,19 @@
 <style>
 	/* @import "../../colorui/main.css";
 	@import "../../colorui/icon.css"; */
-	
+	.square-1 .lable {
+		display: inline-block;
+		float: right;
+		height: 100%;
+		width: 400rpx;
+	}
+	.square-1 .lable label {
+		display: inline-block;
+		float: left;
+		height: 100%;
+		width: 90rpx;
+		line-height: 100rpx;
+	}
 	.pak-seach-box {
 		background-color: #FFFFFF;
 		margin: 15rpx 15rpx 0rpx 15rpx;
@@ -392,8 +641,8 @@
 	}
 	.data-list {
 		border-bottom: 1px solid #d8d8d8;
-		height: 180rpx;
-		margin: 15rpx;
+		height: 210rpx;
+		margin: 15rpx auto auto auto;
 		border-radius: 20rpx;
 	}
 	.data-list:first-child {
@@ -409,21 +658,32 @@
 		width: 100rpx;
 		height: 180rpx;
 		line-height: 180rpx;
-	} */
+	} */ 
+	.left-check-box {
+		display: inline-block;
+		/* background-color: #1E9FFF; */
+		float: left;
+		height: 100%;
+		width: 100rpx;
+		text-align: center;
+		line-height: 170rpx;
+	}
 	.data-list-left {
+		/* background-color: #ffff7f; */
 		display: inline-block;
 		float: left;
-		margin-left: 6%;
 		height: 180rpx;
+		width: 500rpx;
 		color: #676767;
 	}
 	.matnr {
 		padding-top: 10rpx;
 	}
 	.data-list-right {
+		/* background-color: #55ffff; */
 		display: inline-block;
 		float: right;
-		width: 200rpx;
+		width: 100rpx;
 		height: 180rpx;
 		line-height: 180rpx;
 	}
@@ -464,6 +724,10 @@
 	}
 	.changeBox .num-box {
 		display:  inline-block;
+		float: left;
+	}
+	.changeBox button {
+		float: left;
 	}
 	.revise-box-buttom {
 		position: absolute;

--
Gitblit v1.9.1