From b2455e18b7880638faeda23cb559e7741b734339 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 15 一月 2025 20:44:26 +0800
Subject: [PATCH] #  拍灯容器流动流程修改  发货确认功能开发 部分功能优化

---
 pages/pakin/putOn.vue           |    6 
 pages/order/pickOrderList.vue   |  225 +++++++++++++++++++++++++
 pages/order/orderOutConfirm.vue |  288 +++++++++++++++++++++++--------
 3 files changed, 437 insertions(+), 82 deletions(-)

diff --git a/pages/order/orderOutConfirm.vue b/pages/order/orderOutConfirm.vue
index beb6ea0..a59a9cf 100644
--- a/pages/order/orderOutConfirm.vue
+++ b/pages/order/orderOutConfirm.vue
@@ -1,17 +1,41 @@
 <template>
 	<view>
+		<view class="code">
+			<view class="item">
+				<view class="code-decs">璁㈠崟鍙�:</view>
+				<input type="text" placeholder=" 鎵爜 / 杈撳叆" v-model="orderNo" :focus="barcodeFocus"
+					@input="barcodeInput()">
+			</view>
+			<uni-section title="鍟嗗搧鍒楄〃" type="line" class="mat-list-title"></uni-section>
+			<uni-row :gutter="10" v-if="range.length > 0">
+				<checkbox-group @change="checkboAll"> 
+					<uni-col :span="3" style="padding: 10px;">
+						<checkbox value="鍏ㄩ��" checked></checkbox>
+					</uni-col>
+					<uni-col :span="20">
+						
+					</uni-col>
+				</checkbox-group>
+			</uni-row>
+		</view>
 		<view class="list-view">
 			<scroll-view style="overflow: hidden;overflow-y: scroll;height: auto;">
-				<view>
-					<uni-row :gutter="10">
-						<uni-col :span="3" style="margin: auto;align-items: center;justify-content: center;">
-							<uni-data-checkbox mode="list" icon="left" v-model="value" :localdata="range" @change="change" :multiple="true" />
-						</uni-col>
-						<uni-col :span="20">
-							<view>1112244</view>
-						</uni-col>
-					</uni-row>
-				</view>
+				<checkbox-group @change="checkboxChange">
+					<label class="order__list" v-for="(item, index) in range" :key="index">
+						<view class="order__list__right">
+							<checkbox :value="item.id" :checked="item.checked" style="transform:scale(0.7)" />
+						</view>
+						<view class="order__list__left">
+							<view>No锛歿{index + 1}}</view>
+							<view>璁㈠崟鍙凤細{{item.orderNo}}</view>
+							<view>娉㈡鍙凤細{{item.waveNo}}</view>
+							<view>鏂欏彿锛歿{item.matnr}}</view>
+							<view>鎵瑰彿锛歿{item.batch}}</view>
+							<view>璁㈠崟鏁伴噺锛歿{item.anfme}}</view>
+							<view>瀹炲彂鏁伴噺锛歿{item.workQty}}</view>
+						</view>
+					</label>
+				</checkbox-group>
 			</scroll-view>
 		</view>
 		<!-- 搴曢儴鎿嶄綔鎸夐挳 -->
@@ -38,29 +62,132 @@
 	export default {
 		data() {
 			return {
+				barcodeFocus: '',
+				orderNo: '',
 				msgType1: 'success',
 				msgType: 'success',
 				messageText: '',
 				title: '',
 				content: '',
-				dataList: [],
+				dataList: [{}],
 				barcode: '',
 				matFocus: '',
-				value: 0,
-				range: [{"value": 0,"texts": "绡悆"	},{"value": 1,"texts": "瓒崇悆"},{"value": 2,"texts": "娓告吵"}]
+				value: '0',
+				range: []
 			}
 		},
+		onShow() {
+			this.baseUrl = uni.getStorageSync('baseUrl');
+			this.token = uni.getStorageSync('token');
+		},
+		
 		methods: {
-			change(data) {
-				console.log(data)
-			}
+			barcodeInput() {
+				let that = this
+				setTimeout(() => {
+					that.getOrderDetl()
+				}, 600)
+			},
+			/**
+			 * 鑾峰彇鍙戣揣璁㈠崟鏄庣粏淇℃伅
+			 */
+			getOrderDetl() {
+				if (this.orderNo.trim() == undefined || this.orderNo.trim() == null || this.orderNo == '') {
+					this.messageToggle('error', '璁㈠崟缂栫爜涓嶈兘涓虹┖锛侊紒')
+					return
+				}
+				
+				let that = this
+				this.$toast.loading('鍔犺浇涓�...')
+				uni.request({
+					url: that.baseUrl + '/pda/shipping/order/detl',
+					data: JSON.stringify({
+						orderNo: this.orderNo.trim(),
+					}),
+					method: 'POST',
+					header: {
+						'token': uni.getStorageSync('token')
+					},
+					success(result) {
+						var res = result.data
+						if (res.code === 200) {
+							that.messageToggle('success', '鏁版嵁鎷夊彇鎴愬姛锛侊紒')
+							that.range = res.data.map(item => {
+								return {...item, checked: true}
+							})
+						} else {
+							that.messageText = res.msg
+							that.messageToggle('error')
+						}
+					},
+					complete() {
+						that.resst()
+						that.$toast.hideLoading()
+					}
+				});
+			},
+			
+			/**
+			 * 杈撳叆妗嗛噸缃�
+			 */
+			resst() {
+				this.orderNo = ''
+			},
+			/**
+			 * checkbox閫変腑浜嬩欢
+			 * @param {Object} e
+			 */
+			checkboxChange: function (e) {
+				var items = this.range,	values = e.detail.value;
+				for (var i = 0, lenI = items.length; i < lenI; ++i) {
+					const item = items[i]
+					if(values.indexOf(item.id) >= 0){
+						this.$set(item,'checked',true)
+					}else {
+						this.$set(item,'checked',false)
+					}
+				}
+			},
+			/**
+			 * checkbox鍏ㄩ�変簨浠�
+			 * @param {Object} e
+			 */
+			checkboAll(e) {
+				let detl = e.detail.value
+				if (detl.length < 1) {
+					this.range.map(item => {
+					   return item.checked = false
+					})
+				} else {
+					this.range.map(item => {
+					   return item.checked = true
+					})
+				}
+			},
+			
+			//dialog寮规淇℃伅
+			dialogToggle(type,title, msg) {
+				this.msgType = type
+				this.title = title
+				this.content = msg
+				this.$refs.combConfirm.open()
+			},
+			
+			//娑堟伅寮规
+			messageToggle(type, msg) {
+				this.msgType1 = type
+				if (msg != undefined || msg != null) {
+					this.messageText = msg
+				} 
+				this.$refs.message.open()
+			},
+			
 		}
 	}
 </script>
 
 <style>
 	@import url('../../static/css/wms.css/wms.css');
-	
 	
 	.uni-section {
 		margin-top: 0rpx;
@@ -69,79 +196,84 @@
 			font-size: 16px !important;
 		}
 	}
-	
 	.buttom uni-button {
 		width: 60%;
-	}
-	
-	.list-view {
-		width: 100%;
-		position: relative;
-		
-		.uni-data-checklist .checklist-group .checklist-box.is--list {
-			padding-left: 30rpx;
-		}
-		
-	}
-	
-	.list {
-		display: flex;
-		min-height: 80rpx;
-		background-color: #FFF;
-		margin: 20rpx;
-		border-radius: 20rpx;
-		box-shadow: 0px 0px 30px 0px rgba(0,0,0,0.2);
-	}
-	.list:first-child {
-		margin-top: 300rpx;
-	}
-	.list:last-child {
-		margin-bottom: 120rpx;
 	}
 	.code {
 		width: 100%;
-		position: fixed;
+		top: 76rpx;
+		position: sticky;
 		background: white;
 		min-height: 200rpx;
 		background-color: #FFF;
-		z-index: 10;
-	}
-	.item {
-		display: flex;
-		align-items: center;
-		height: 100rpx;
-		margin-left: 20rpx;
-		border-bottom: 1px solid #DCDFE6;
-	}
-	
-	.item input {
-		height: 50rpx;
-		line-height: 50rpx;
-		/* font-family: PingFang SC; uniapp 榛樿瀛椾綋涓嶅眳涓� */
-		font-size: 36upx;
-		font-family: PingFang SC;
-		width: 55vw;
-	
-	}
-	
-	.code-decs {
-		width: 20vw;
-		font-size: 18px;
-		color: #303133;
-	}
+		z-index: 10;
+		
+		.item {
+			display: flex;
+			align-items: center;
+			height: 100rpx;
+			margin-left: 20rpx;
+			border-bottom: 1px solid #DCDFE6;
+			
+			.code-decs {
+				width: 20vw;
+				font-size: 18px;
+				color: #303133;
+			}
+		}
+		
+		.item input {
+			height: 50rpx;
+			line-height: 50rpx;
+			/* font-family: PingFang SC; uniapp 榛樿瀛椾綋涓嶅眳涓� */
+			font-size: 36upx;
+			font-family: PingFang SC;
+			width: 55vw;
+		
+		}
+		
+		.mat-list-title {
+			height: 80rpx;
+			line-height: 80rpx;
+			font-size: 24px;
+			width: 100%;
+			background: white;
+			font-weight: 500;
+		}
+		
+	}
+	
+	.list-view {
+		padding-bottom: 92rpx;
+	}
 	
 	.item-right {
 		margin-left: auto;
 		margin-right: 20rpx;
 	}
-	
-	.mat-list-title {
-		height: 80rpx;
-		position: fixed;
-		line-height: 80rpx;
-		font-size: 24px;
-		width: 100%;
-		background: white;
-		font-weight: 500;
+	
+	.order__list {
+		margin: 20rpx;
+		font-size: 14px;
+		background-color: #fff;
+		border-radius: 20rpx;
+		border: 1px solid #eeeeee;
+		display: flex;
+		position: relative;
+		background-color: #3eb689;
+		color: #FFF;
 	}
+	.order__list__left {
+		flex: 1;
+		padding: 20rpx;
+		position: relative;
+	}
+	.order__list__right {
+		width: 70rpx;
+		border-right: 1rpx solid #eeeeee;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
+	
 </style>
diff --git a/pages/order/pickOrderList.vue b/pages/order/pickOrderList.vue
new file mode 100644
index 0000000..e9dd46a
--- /dev/null
+++ b/pages/order/pickOrderList.vue
@@ -0,0 +1,225 @@
+<template>
+	<view>
+		<view class="status_bar">
+			<!-- 杩欓噷鏄姸鎬佹爮 -->
+		</view>
+		<uni-nav-bar left-icon="left" background-color="#f8f8f8" title="璁㈠崟鐗╂枡" @clickLeft="back"  :fixed="true"
+			:border="false" rightWidth="160rpx" leftWidth="160rpx"
+			>
+			<block slot="right">
+				<view class="city">
+					<view>
+						<text class="uni-nav-bar-text">{{store}}</text>
+					</view>
+				</view>
+			</block>
+		 </uni-nav-bar>
+		 
+		<view class="code">
+			<view style="display: flex;align-items: center;">
+				<view style="width: 70rpx;padding-left: 20rpx;" @click="changeST">{{searchType}}</view>
+				<view style="flex: 1;margin-left: -8rpx;">
+					<uni-search-bar  v-model="searchValue"
+						maxlength="500" ancel="cancel" @confirm="getMatList()" @clear="clear" placeholder="杈撳叆 / 鎵弿">
+					</uni-search-bar>
+				</view>
+				
+			</view>
+			<view class="code-title">
+				<view style="flex: 1;"></view>
+				<view style="flex: 1;width: 100%;text-align: center;margin: 16rpx 0;">{{searchValue}} 鎬绘暟閲忥細- {{total}} -</view>
+				<view style="flex: 1;display: flex;align-items: center;"><button size="mini" type="primary" @click="allSelect()">{{seltitle}}</button></view>
+			</view>
+		</view>
+		
+		<view class="order__list" v-for="(orderDetl,index) in dataList" :key="index">
+			<view class="order__list__left">
+				<view>No锛歿{index + 1}}</view>
+				<view>璁㈠崟鍙凤細{{orderDetl.orderNo}}</view>
+				<view>鏂欏彿锛歿{orderDetl.matnr}}</view>
+				<view>鏂欏悕锛歿{orderDetl.maktx}}</view>
+				<view>鎵瑰彿锛歿{orderDetl.batch}}</view>
+				<view>鍙敤鏁伴噺锛歿{orderDetl.count}}</view>
+			</view>
+			<view class="order__list__right">
+				<!-- <view class="order__list__right" @click="addItem(orderDetl)"> -->
+				<label @click="checkboxChange(orderDetl)">
+					<checkbox :value="orderDetl.matnr" :checked="orderDetl.checked" style="transform:scale(0.7)" /><text></text>
+				</label>
+			</view>
+		</view>
+		<!-- 搴曢儴鎿嶄綔鎸夐挳 -->
+		<view class="buttom">
+			<button size="mini" type="primary" @click="addItems()">鎻愬彇</button>
+		</view>
+		<view style="height: 100rpx;width: 100%;text-align: center;line-height: 100rpx;">- 宸茬粡鍒板簳浜� -</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				baseUrl: '',
+				token: '',
+				storeId: 0,
+				store: '',
+				total: 0,
+				searchType: '鐗╂枡',
+				searchValue: '',
+				dataList: [],
+				selectedList: [],
+				seltitle: '鍏ㄩ��'
+			}
+		},
+		onShow() {
+			let _this = this
+			this.baseUrl = uni.getStorageSync('baseUrl');
+			this.token = uni.getStorageSync('token');
+			this.storeId = uni.getStorageSync('store')
+			if (this.storeId == 1) {
+				this.store = '瀹佹尝浠�'
+			}
+			if (this.storeId == 2) {
+				this.store = '鏂版槍浠�'
+			}
+			const eventChannel = this.getOpenerEventChannel();
+			eventChannel.on('matList', function(data) {
+				_this.selectedList = data.matList
+			})
+			this.getMatList()
+		},
+		methods: {
+			back() { uni.navigateBack({}) },
+			checkboxChange(e) {
+				let items = this.dataList,
+				values = e.matnr;
+				if (e.checked) {
+					this.$set(e,'checked',false)
+				} else {
+					this.$set(e,'checked',true)
+				}
+				var count = 0
+				for (let k of items) {
+					if (k.checked) {
+						count++
+					}
+				}
+				if (count == items.length && count > 0) {
+					this.seltitle = '鍙栨秷鍏ㄩ��'
+				} else {
+					this.seltitle = '鍏ㄩ��'
+				}
+			},
+			allSelect() {
+				if (this.seltitle == '鍏ㄩ��') {
+					for (let k of this.dataList) {
+						k.checked = true
+					}
+					this.seltitle = '鍙栨秷鍏ㄩ��'
+				} else {
+					for (let k of this.dataList) {
+						k.checked = false
+					}
+					this.seltitle = '鍏ㄩ��'
+				}
+				
+			},
+			set(e) {
+				var ck = this.dataList[e].checked
+				this.dataList[e].checked = ck ? false : true
+			},
+			changeST() {
+				if (this.searchType == '鐗╂枡') this.searchType = '璁㈠崟' 
+				else this.searchType = '鐗╂枡'
+			},
+			getMatList() {
+				let that = this
+				let searchParam = {}
+				if (this.searchType == '鐗╂枡') searchParam = {matnr: that.searchValue}
+				else searchParam = {orderNo: that.searchValue}
+				console.log(searchParam);
+				uni.request({
+					url: that.baseUrl + '/mobile/pick/mat/list',
+					header: {
+						'token': uni.getStorageSync('token')
+					},
+					data: searchParam,
+					method: 'GET',
+					success(res) {
+						res = res.data;
+						if (res.code === 200) {
+							that.total = res.data.length
+							const result1 = res.data.filter(obj1 => 
+							    !that.selectedList.some(obj2 => obj1.matnr === obj2.matnr && obj1.orderNo === obj2.orderNo)
+							);
+							that.dataList = result1
+							that.total = result1.length
+						} else if (res.code == 403) {
+							uni.showToast({ title: res.msg, icon: "error", position: 'center' })
+							setTimeout(() => { uni.reLaunch({ url: '../login/login' }); }, 1000);
+						} else {
+							uni.showToast({ title: res.msg, icon: "error", position: 'center' })
+						}
+					}
+				})
+				
+			},
+			addItems() {
+				let pickList = []
+				for (let k of this.dataList) {
+					if (k.checked) {
+						pickList.push(k)
+					}
+				}
+				this.getOpenerEventChannel().emit('pickList', {data: pickList});
+				uni.navigateBack({
+					
+				})
+			},
+			// addItem(mat) {
+			// 	this.getOpenerEventChannel().emit('sMat', {data: mat});
+			// 	uni.navigateBack({
+					
+			// 	})
+			// }
+		}
+	}
+</script>
+
+<style>
+	@import url('../../static/css/wms.css/wms.css');
+	.code {
+		background-color: #d9d9d9;
+		z-index: 99;
+		position: sticky;
+		top: 0rpx;
+		left: 0;
+	}
+	.code-title {
+		display: flex;
+	}
+	.order__list {
+		margin: 20rpx;
+		font-size: 14px;
+		background-color: #fff;
+		border-radius: 20rpx;
+		border: 1px solid #eeeeee;
+		display: flex;
+		position: relative;
+		background-color: #3eb689;
+		color: #FFF;
+	}
+	.order__list__left {
+		flex: 1;
+		padding: 20rpx;
+		position: relative;
+	}
+	.order__list__right {
+		width: 70rpx;
+		border-left: 1px solid #eeeeee;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
+</style>
diff --git a/pages/pakin/putOn.vue b/pages/pakin/putOn.vue
index c3fbbb4..38ca44c 100644
--- a/pages/pakin/putOn.vue
+++ b/pages/pakin/putOn.vue
@@ -17,9 +17,7 @@
 		</view>
 		<view class="list-view">
 			<scroll-view style="overflow: hidden;overflow-y: scroll;height: auto;">
-						<uni-data-checkbox mode="list" icon="left" v-model="value" :localdata="range" @change="change"></uni-data-checkbox>
-
-				<!-- <view class="list" v-for="(item,i) in dataList" :key="i">
+				<view class="list" v-for="(item,i) in dataList" :key="i">
 					<view class="list-left">
 						<view class="list-left-item">
 							<view class="desc">No锛�</view>
@@ -48,7 +46,7 @@
 							<view class="left-item">{{item.anfme}}</view>
 						</view>
 					</view>
-				</view> -->
+				</view>
 			</scroll-view>
 		</view>
 		<!-- 搴曢儴鎿嶄綔鎸夐挳 -->

--
Gitblit v1.9.1