From 2e25e96baa73c7a26c71f3af1a14431b52ebf805 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期三, 27 三月 2024 15:37:13 +0800
Subject: [PATCH] #

---
 pages/phyz/order/orderList.vue |   36 ++++
 pages/phyz/order/preview.vue   |  265 +++++++++++++++++++++++++++++++++++++
 pages.json                     |    8 +
 static/css/common/order.css    |   24 +++
 pages/phyz/AGV/AGVPakin3.vue   |   46 ++++++
 5 files changed, 373 insertions(+), 6 deletions(-)

diff --git a/pages.json b/pages.json
index 7b7c1b8..db1793c 100644
--- a/pages.json
+++ b/pages.json
@@ -514,6 +514,14 @@
 				"navigationBarTitleText" : "缁勬墭鍏ュ簱",
 				"enablePullDownRefresh" : false
 			}
+		},
+		{
+			"path" : "pages/phyz/order/preview",
+			"style" : 
+			{
+				"navigationBarTitleText" : "鍑哄簱棰勮",
+				"enablePullDownRefresh" : false
+			}
 		}
 		
 		
diff --git a/pages/phyz/AGV/AGVPakin3.vue b/pages/phyz/AGV/AGVPakin3.vue
index 1f45943..8074439 100644
--- a/pages/phyz/AGV/AGVPakin3.vue
+++ b/pages/phyz/AGV/AGVPakin3.vue
@@ -6,8 +6,17 @@
 					@input="findOrder()">
 			</view>
 			<view class="item">
-				<input type="text" placeholder=" 鎵爜 / 杈撳叆 鏂欑鐮�" v-model="barcode" :focus="barcodeFocus"
+				<input type="text" placeholder=" 鎵爜 / 杈撳叆 璐ф灦鐮�" v-model="barcode" :focus="barcodeFocus"
 					@input="barcodeInput()">
+			</view>
+			<view class="item">
+				<view class="dropdown" @click="toggleDropdown()">
+					<input type="text" style="width: 650rpx;" v-model="containerType">
+					<uni-icons :type="isOpen ? 'top' : 'bottom'" color="#c1c1c1" style="margin-left: 10rpx;"></uni-icons>
+					<scroll-view scroll-y="ture" class="dropdown-content" v-if="isOpen">
+						<view class="dropdown-item" v-for="option in selects" @click="selected(option)">{{option}}</view>
+					</scroll-view>
+				</view>
 			</view>
 			<view class="item">
 				<input type="text" placeholder=" 鎵爜 / 杈撳叆 鏆傚瓨浣�" v-model="stationCode" :focus="stationCodeFocus"
@@ -150,6 +159,7 @@
 				barcode: '',
 				orderNo: '',
 				stationCode: '',
+				containerType: '',
 				dataList: [],
 				count: 0,
 				rowNum: '',
@@ -171,7 +181,9 @@
 				flag: 0,
 				tempOrderInfo: {csocode: '',isoseq: ''},
 				hide: true,
-				hidebg: 'kb-bgtr'
+				hidebg: 'kb-bgtr',
+				isOpen: false,
+				selects: ['1鍙�','2鍙�']
 			}
 		},
 		onLoad() {
@@ -210,6 +222,12 @@
 				} else {
 					this.hidebg = 'kb-bgfa'
 				}
+			},
+			toggleDropdown() {
+				this.isOpen = !this.isOpen
+			},
+			selected(option) {
+				this.containerType = option
 			},
 			findOrder() {
 				let that = this
@@ -689,7 +707,6 @@
 		/* font-family: PingFang SC; uniapp 榛樿瀛椾綋涓嶅眳涓� */
 		font-size: 36upx;
 		font-family: PingFang SC;
-		width: 55vw;
 
 	}
 
@@ -716,4 +733,27 @@
 		text-align: center;
 		box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 0.5);
 	}
+	.dropdown {
+		position: relative;
+		display: flex;
+		align-items: center;
+		padding: 0rpx 20rpx;
+	}
+	.dropdown-content {
+		position: absolute;
+		top: calc(100% + 15rpx);
+		left: 0;
+		width: calc(100% - 20rpx);
+		max-height: 300rpx;
+		background-color: #fff;
+		box-shadow: 0 0px 6px rgba(0, 0, 0, 0.3);
+		border-radius: 8rpx;
+		z-index: 10;
+	}
+	.dropdown-item {
+		padding: 12rpx;
+		line-height: 1.2;
+		font-size: 12rpx;
+		color: #3a3a3a;
+	}
 </style>
\ No newline at end of file
diff --git a/pages/phyz/order/orderList.vue b/pages/phyz/order/orderList.vue
index 6e816e0..815d4a6 100644
--- a/pages/phyz/order/orderList.vue
+++ b/pages/phyz/order/orderList.vue
@@ -30,9 +30,15 @@
 		<view style="height: 100rpx;"></view>
 		
 		<!-- 搴曢儴鎿嶄綔鎸夐挳 -->
-		<view class="buttom">
+		<view class="buttom" v-if="orderType == 'in'">
 			<button size="mini" @click="reset('warn')">閲嶇疆</button>
 			<button size="mini" type="primary" @click="combConfirm('warn')">鍘荤粍鎵�</button>
+		</view>
+		
+		<!-- 搴曢儴鎿嶄綔鎸夐挳 -->
+		<view class="buttom" v-if="orderType == 'out'">
+			<button size="mini" @click="reset('warn')">閲嶇疆</button>
+			<button size="mini" type="primary" @click="combConfirm2('warn')">鍘诲嚭搴�</button>
 		</view>
 		
 	</view>
@@ -53,6 +59,7 @@
 				newDataList: [],
 				allCheck: false,
 				allCheckBtnTitle: '鍏ㄩ��',
+				orderType: 'out'
 			}
 		},
 		onLoad() {
@@ -72,17 +79,18 @@
 					
 				})
 				that.getOrderDetl(data.item.id)
-				
+				that.orderType = 'in'
 			})
 			eventChannel.on('item1', function(data) {
 				console.log(data);
 				that.orderId = data.item.orderId 
+				console.log(data.item.id);
 				uni.setNavigationBarTitle({
 					title: data.item.orderNo,
 					
 				})
 				that.getOrderDetl(data.item.id)
-				
+				that.orderType = 'out'
 			})
 		},
 		onShow() {
@@ -205,6 +213,28 @@
 					},
 				});
 			},
+			combConfirm2(type) {
+				let _this = this
+				let combList = []
+				for (let k of _this.dataList) {
+					if (k.checked) {
+						combList.push(k)
+					}
+				}
+				if (combList.length == 0) {
+					uni.showToast({ title: '璇烽�夋嫨鍑哄簱鍟嗗搧', icon: "error", position: 'top'})
+					return
+				}
+				uni.navigateTo({
+					url: "./preview",
+					success: function(res) {
+						// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�   鍚戝彟澶栦竴涓〉闈紶閫掑�肩殑
+						res.eventChannel.emit('mats', {
+							mats: combList
+						})
+					},
+				});
+			},
 		}
 	}
 </script>
diff --git a/pages/phyz/order/preview.vue b/pages/phyz/order/preview.vue
new file mode 100644
index 0000000..6fbca48
--- /dev/null
+++ b/pages/phyz/order/preview.vue
@@ -0,0 +1,265 @@
+<template>
+	<view>
+		<view class="code">
+			<!-- <uni-search-bar :focus="matFocus" v-model="matnr"  @input="matInput()" ma
+				maxlength="500" ancel="cancel" @clear="clear" placeholder="杈撳叆 / 鎵弿鍟嗗搧">
+			</uni-search-bar> -->
+			<view class="code-title">
+				<view></view>
+				<view>鍟嗗搧鍒楄〃</view>
+				<view @click="allChecked">{{allCheckBtnTitle}}</view>
+			</view>
+		</view>
+		<view class="list" v-for="(item,i) in dataList">
+			<view class="list-left">
+				<view>缂栧彿锛歿{item.matnr}}</view>
+				<view>鍚嶇О锛歿{item.maktx}}</view>
+				<view>瑙勬牸锛歿{item.specs}}</view>
+				<view>鎵瑰彿锛歿{item.batch}}</view>
+				<view class="list-anfme">鏁伴噺锛歿{item.anfme}}</view>
+				<view class="list-qty-1" v-if="item.anfme > item.qty">浣滀笟鏁伴噺锛歿{item.qty}}</view>
+				<view class="list-qty-2" v-if="item.anfme <= item.qty">浣滀笟鏁伴噺锛歿{item.qty}}</view>
+				<view class="card-id">{{i + 1}}</view>
+				<view>璐т綅锛歿{item.locNo}}</view>
+				<view style="display: flex;">鍑哄簱绔欙細
+					<view class="dropdown" @click="toggleDropdown(item)">
+						<input type="text" style="width: 270rpx;" v-model="item.agvStaNo">
+						<uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#c1c1c1" style="margin-left: 10rpx;"></uni-icons>
+						<scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen">
+							<view class="dropdown-item" v-for="option in selects" @click="selected(option,item)">{{option.value}}</view>
+						</scroll-view>
+					</view>
+				</view>
+			</view>
+			<view class="list-right" @click="checkboxChange(item)">
+				<label >
+					<checkbox :value="item.orderNo" :checked="item.checked" color="" :disabled="item.anfme <= item.qty" style="transform:scale(0.7)" /><text></text>
+				</label>
+			</view>
+		</view>
+		<view style="height: 100rpx;"></view>
+		
+		<!-- 搴曢儴鎿嶄綔鎸夐挳 -->
+		<view class="buttom">
+			<button size="mini" @click="reset('warn')">绋嶅悗澶勭悊</button>
+			<button size="mini" type="primary" @click="combConfirm('warn')">绔嬪嵆鍑哄簱</button>
+		</view>
+		
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				baseUrl: '',
+				token: '',
+				orderId: '',
+				matFocus: true,
+				matnr: '',
+				checck: true,
+				dataList: [{}],
+				oldDataList: [],
+				newDataList: [],
+				allCheck: false,
+				allCheckBtnTitle: '鍏ㄩ��',
+				orderType: 'out',
+				ids: [],
+				isOpen: false,
+				selects: [
+					{value: "CS-101-001-01@1"},
+					{value: "CS-101-001-02@1"},
+					{value: "CS-101-001-03@1"},
+					{value: "CS-101-002-01@1"},
+					{value: "CS-101-002-02@1"},
+					{value: "CS-101-002-03@1"},
+				]
+			}
+		},
+		onLoad() {
+			let that = this
+			this.baseUrl = uni.getStorageSync('baseUrl');
+			this.token = uni.getStorageSync('token');
+			// const eventChannel = this.$scope.eventChannel; // 鍏煎APP-NVUE
+			const eventChannel = this.getOpenerEventChannel();
+			
+			// 鐩戝惉acceptDataFromOpenerPage浜嬩欢锛岃幏鍙栦笂涓�椤甸潰閫氳繃eventChannel浼犻�佸埌褰撳墠椤甸潰鐨勬暟鎹�
+			eventChannel.on('mats', function(data) {
+				console.log(data);
+				for (let item of data.mats) {
+					that.ids.push(item.id)
+				}
+				that.getPakoutList(that.ids)
+			})
+		},
+		onShow() {
+			if (this.dataList.length > 0) {
+				this.oldDataList = [...this.dataList]
+			}
+		},
+		methods: {
+			toggleDropdown(item) {
+				item.isOpen = !item.isOpen;
+			},
+			selected(option,item) {
+				item.agvStaNo = option.value
+			},
+			// 璁㈠崟鏄庣粏
+			getPakoutList(ids) {
+				let _this = this
+				uni.request({
+					url: `${_this.baseUrl}/out/pakout/preview/auth`,
+					header: {'token': uni.getStorageSync('token')},
+					data: ids,
+					method: 'POST',
+					success(res) {
+						res = res.data
+						if (res.code === 200) {
+							for (let k of res.data) {
+								k['isOpen'] = false
+							}
+							_this.dataList = res.data
+							_this.oldDataList = [..._this.dataList]
+						} 
+					}
+				})
+			},
+			matInput() {
+				let count = 0
+				let sign = 0
+				if (this.oldDataList.length > 0) {
+					this.dataList = [...this.oldDataList]
+				}
+				this.newDataList = []
+				for (let k in this.dataList) {
+					if (!this.dataList[k].matnr.includes(this.matnr)) {
+						count++;
+					} else {
+						this.newDataList.push(this.dataList[k])
+					}
+				}
+				if (this.matnr != '') {
+					for (let j in this.dataList) {
+						if (!this.dataList[j].maktx.includes(this.matnr)) {
+						} else {
+							for (let i in this.newDataList) {
+								if (this.newDataList[i].matnr ==  this.dataList[j].matnr) {
+									sign++
+								}
+							}
+							if (sign == 0) {
+								this.newDataList.push(this.dataList[j])
+							}
+						}
+					}
+				}
+				this.dataList = this.newDataList
+			},
+			checkboxChange(e) {
+				let items = this.dataList,
+				values = e.orderNo;
+				if (e.checked) {
+					this.$set(e,'checked',false)
+				} else {
+					if (e.anfme == e.qty) {
+						this.$set(e,'checked',false)
+					} else {
+						this.$set(e,'checked',true)
+					}
+					
+				}
+			},
+			allChecked() {
+				if (this.allCheck) {
+					this.allCheck = false
+					this.allCheckBtnTitle = '鍏ㄩ��'
+				} else {
+					this.allCheck = true
+					this.allCheckBtnTitle = '鍙栨秷'
+				}
+				for (let item of this.dataList) {
+					if (this.allCheck) {
+						if (item.anfme == item.qty) {
+							this.$set(item,'checked',false)
+						} else {
+							this.$set(item,'checked',true)
+						}
+					} else {
+						this.$set(item,'checked',false)
+					}
+				}
+			},
+			clear() {
+				this.matnr = ''
+				this.dataList = [...this.oldDataList]
+			},
+			combConfirm(type) {
+				let _this = this
+				let combList = []
+				for (let k of _this.dataList) {
+					if (k.checked) {
+						if (k.agvStaNo == null) {
+							uni.showToast({ title: `${k.locNo}褰撳墠璐т綅娌℃湁閫夋嫨鍑哄簱绔檂, icon: "error", position: 'top'})
+							return
+						} else {
+							combList.push(k)
+						}
+					}
+				}
+				if (combList.length == 0) {
+					uni.showToast({ title: '璇烽�夋嫨鍑哄簱鍟嗗搧', icon: "error", position: 'top'})
+					return
+				}
+				uni.request({
+					url: `${_this.baseUrl}/out/pakout/auth`,
+					header: {'token': uni.getStorageSync('token')},
+					data: combList,
+					method: 'POST',
+					success(res) {
+						res = res.data
+						console.log(res);
+					}
+				})
+			},
+			combConfirm2(type) {
+				let _this = this
+				let combList = []
+				for (let k of _this.dataList) {
+					if (k.checked) {
+						combList.push(k)
+					}
+				}
+				if (combList.length == 0) {
+					uni.showToast({ title: '璇烽�夋嫨鍑哄簱鍟嗗搧', icon: "error", position: 'top'})
+					return
+				}
+				uni.navigateTo({
+					url: "../AGV/AGVPakin2",
+					success: function(res) {
+						// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�   鍚戝彟澶栦竴涓〉闈紶閫掑�肩殑
+						res.eventChannel.emit('mats', {
+							mats: combList
+						})
+					},
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	@import url('../../../static/css/common/order.css');
+	.list-anfme {
+		color: #0082ff;
+		font-weight: bold;
+	}
+	.list-qty-1 {
+		color: #33ba43;
+		font-weight: bold;
+	}
+	.list-qty-2 {
+		color: #e2231a;
+		font-weight: bold;
+	}
+</style>
\ No newline at end of file
diff --git a/static/css/common/order.css b/static/css/common/order.css
index 4665071..d5a20e3 100644
--- a/static/css/common/order.css
+++ b/static/css/common/order.css
@@ -93,4 +93,28 @@
 		background-color: #e6f7ff;
 		border: 1px solid #91d5ff;
 		border-radius: 6rpx;
+	}
+	.dropdown {
+		position: relative;
+		display: flex;
+		align-items: center;
+		border-bottom: 1px solid #333;
+		padding: 0rpx 20rpx;
+	}
+	.dropdown-content {
+		position: absolute;
+		top: calc(100% + 15rpx);
+		left: 0;
+		width: calc(100%);
+		max-height: 300rpx;
+		background-color: #fff;
+		box-shadow: 0 0px 6px rgba(0, 0, 0, 0.3);
+		border-radius: 8rpx;
+		z-index: 10;
+	}
+	.dropdown-item {
+		padding: 12rpx;
+		line-height: 1.2;
+		font-size: 12rpx;
+		color: #3a3a3a;
 	}
\ No newline at end of file

--
Gitblit v1.9.1