From 7dd2ff240b91aac2cca43f877e5169b453470479 Mon Sep 17 00:00:00 2001
From: whycq <913841844@qq.com>
Date: 星期六, 08 二月 2025 13:57:42 +0800
Subject: [PATCH] ###

---
 pages/phyz/bcp/orderCar.vue            |  310 ++++++++++++++++++++++++++++++++++++++++++++
 pages/phyz/order/preview.vue           |    2 
 pages/phyz/orderOut/orderCheck.vue     |   24 ++
 pages/phyz/comOrder/checkOut.vue       |   24 ++
 pages.json                             |    8 +
 pages/phyz/processOrder/orderCheck.vue |   24 ++
 6 files changed, 376 insertions(+), 16 deletions(-)

diff --git a/pages.json b/pages.json
index 32b9941..7cf68e0 100644
--- a/pages.json
+++ b/pages.json
@@ -323,6 +323,14 @@
         		"enablePullDownRefresh" : false
         	}
         },
+		{
+			"path" : "pages/phyz/bcp/orderCar",
+			"style" : 
+			{
+				"navigationBarTitleText" : "寰呯粍鎵樺垪琛�",
+				"enablePullDownRefresh" : false
+			}
+		},
         {
         	"path" : "pages/home/locMastManage",
         	"style" : 
diff --git a/pages/phyz/bcp/orderCar.vue b/pages/phyz/bcp/orderCar.vue
new file mode 100644
index 0000000..e120117
--- /dev/null
+++ b/pages/phyz/bcp/orderCar.vue
@@ -0,0 +1,310 @@
+<template>
+	<view>
+		<view class="list list-font-color shop-car" :class="orderDetl.color" v-for="(orderDetl,index) in orderCarList" :key="index">
+			<view class="list-left">
+				<view class="detl-threeCode">{{orderDetl.threeCode}}</view>
+				<view>涓诲崟鍙凤細{{orderDetl.orderNo}}</view>
+				<view>缂栧彿锛歿{orderDetl.matnr}}</view>
+				<view>鍚嶇О锛歿{orderDetl.maktx}}</view>
+				<view>鎵瑰彿锛歿{orderDetl.batch}}</view>
+				<view>鎬绘暟閲忥細{{orderDetl.anfme}}</view>
+				<view>鍏ュ簱鏁伴噺锛歿{orderDetl.pakinQty}}</view>
+			</view>
+			<view class="list-right" @click="chageDetl(index)">
+				<uni-icons type="settings" size="25"  color="#fff"></uni-icons>
+			</view>
+		</view>
+		<!-- 鍨珮 -->
+		<view style="height: 120rpx;"></view>
+		<!-- 搴曢儴鎿嶄綔鎸夐挳 -->
+		<view class="buttom">
+			<button size="mini" type="primary" @click="agvStart('warn')">鍚姩鍏ュ簱</button>
+		</view>
+		<!-- 寮圭獥 -->
+		<view>
+			<uni-popup ref="chageDetl" type="dialog">
+				<view class="popup">
+					<!-- 鏍囬 -->
+					<view class="title">鍏ュ簱鏁伴噺</view>
+					<view class="popup-item">
+						<!-- <view class="popup-item-left">鍏ュ簱鏁伴噺:</view> -->
+						<view class="popup-item-right" style="border: none;"><uni-number-box :value="count" :step='0.01' :max="9999999" color="#747474" @change="changeValue" /></view>
+						
+					</view>
+					<!-- <view class="popup-item">
+						<view class="popup-item-left">鎵瑰彿:</view>
+						<view class="popup-item-right"><input type="text" v-model="batch"></view>
+					</view> -->
+					<view class="btn">
+						<view class="btn-left" @click="remove()">绉婚櫎鐗╂枡</view>
+						<view class="btn-right" @click="changeCount()">淇敼鏁伴噺</view>
+					</view>
+				</view>
+			</uni-popup>
+		</view>
+		<!-- 寮圭獥 -->
+		<view>
+			<uni-popup ref="agvStart" type="dialog">
+				<view class="popup">
+					<!-- 鏍囬 -->
+					<view class="title">鍚姩鍏ュ簱</view>
+					<view class="popup-item">
+						<view class="popup-item-left">璐ф灦鐮�:</view>
+						<view class="popup-item-right"><input type="text" v-model="barcode"></view>
+					</view>
+					<view class="popup-item">
+						<view class="popup-item-left">绔欑偣鐮�:</view>
+						<view class="popup-item-right"><input type="text" v-model="agvDevp"></view>
+					</view>
+					<view class="popup-item">
+						<view class="popup-item-left">鐩爣妤煎眰:</view>
+						<view class="popup-item-right" style="border: none;">
+							<uni-combox style="height: 50rpx;" :candidates="floorList" placeholder="璇烽�夋嫨鐩爣妤煎眰" v-model="floor">
+						</uni-combox></view>
+					</view>
+					<view class="btn">
+						<button class="btn-left" @click="agvStartClose()">鍙栨秷</button>
+						<button class="btn-right" @click="agvStartConfirm()" :disabled="agvStartDis">鍏ュ簱</button>
+					</view>
+				</view>
+			</uni-popup>
+		</view>
+	</view>
+</template>
+
+<script>
+	// todo: 璐墿杞︿紭鍖�,瀛樺偍璐墿杞﹀唴瀹�,閫�鍑洪〉闈㈠啀杩涘悗璐墿杞﹁繕鍦�
+	export default {
+		data() {
+			return {
+				orderCarList: [],
+				batch: '',
+				count: 0,
+				index: 0,
+				barcode: '',
+				agvDevp: '',
+				agvStartDis: false,
+				floorList:['浜屽巶','涓夊巶'],
+				floor: '',
+			}
+		},
+		onShow() {
+			let _this = 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('item', function(data) {
+				_this.orderCarList = data.item
+				for (let k of _this.orderCarList) {
+					if (k.threeCode) {
+						if (k.threeCode.includes("B")) {
+							_this.floor = '浜屽巶'
+						} else if (k.threeCode.includes("G")) {
+							_this.floor = '涓夊巶'
+						} else {
+							_this.floor = ''
+						}
+					}
+				}
+			})
+		},
+		methods: {
+			chageDetl(index) {
+				this.index = index
+				this.count = this.orderCarList[index].pakinQty
+				this.batch = this.orderCarList[index].batch
+				this.$refs.chageDetl.open()
+			},
+			// 淇敼鏁伴噺
+			changeCount() {
+				if (this.count > this.orderCarList[this.index].anfme) {
+					uni.showToast({ title: '鏁伴噺涓嶅悎娉曪紒', icon: "none", position: 'top' })
+					return
+				}
+				this.orderCarList[this.index].pakinQty = this.count
+				this.orderCarList[this.index].batch = this.batch
+				this.$forceUpdate() // 寮哄埗鍒锋柊
+				this.$refs.chageDetl.close()
+			},
+			// 绉婚櫎鐗╂枡
+			remove() {
+				this.orderCarList.splice(this.index, 1)
+				this.$refs.chageDetl.close()
+			},
+			changeValue(value) {
+				this.count = value
+			},
+			agvStart() {
+				this.$refs.agvStart.open()
+			},
+			agvStartClose() {
+				this.barcode = ''
+				this.agvDevp = ''
+				this.$refs.agvStart.close()
+			},
+			agvStartConfirm() {
+				this.barcode = this.barcode.replace(/\s+/g, '')
+				this.agvDevp = this.agvDevp.replace(/\s+/g, '')
+				let _this = this
+				if (_this.barcode === '') {
+					uni.showToast({ title: '璐ф灦鐮佷负绌猴紒', icon: "error", position: 'top' })
+					return;
+				}
+				if (_this.agvDevp === '') {
+					uni.showToast({ title: '绔欑偣鐮佷负绌猴紒', icon: "error", position: 'top' })
+					return;
+				}
+				if (_this.orderCarList.length === 0) {
+					uni.showToast({ title: '缁勬墭鍒楄〃涓虹┖锛�', icon: "error", position: 'top' })
+					return;
+				}
+				for (let k of _this.orderCarList) {
+					if (k.pakinQty == 0) {
+						uni.showToast({ title: `${k.matnr}鏁伴噺涓嶈兘涓� 0 锛乣, icon: "error", position: 'top' })
+						return;
+					} 
+				}
+				let combMat = { orderNo:'', barcode: '', locNo: '', combMats: [] }
+				let combMats = []
+				for (let item of _this.orderCarList) {
+					combMat.orderNo = item.orderNo
+					combMat.barcode = _this.barcode
+					combMat.locNo = _this.agvDevp
+					combMat.combMats = []
+					let combM = {csocode: item.threeCode,isoseq: item.deadTime,matnr: item.matnr,batch: item.batch,anfme: item.pakinQty,maktx: item.maktx,specs: item.specs,processSts: item.processSts}
+					combMat.combMats.push(combM)
+					combMats.push({...combMat})
+				}
+				this.comb(combMats)
+				
+			},
+			comb(combMats) {
+				let _this = this;
+				let factor = ''
+				if (!this.floor) {
+					uni.showToast({ title: '璇烽�夋嫨妤煎眰', icon: "error", position: 'top' })
+					return
+				}
+				if (this.floor == '浜屽巶') {
+					factor = 'B'
+				} else if (this.floor == '涓夊巶') {
+					factor = 'G'
+				}
+				this.agvStartDis = true
+				uni.request({
+					url: _this.baseUrl + '/agvMobile/start/pakin/auth/v2',
+					data: JSON.stringify({
+						barcode: _this.barcode,
+						containerCode: _this.barcode,
+						devNo: _this.agvDevp,
+						combParams: combMats,
+						factory: factor
+					}),
+					method: 'POST',
+					header: {
+						'token': uni.getStorageSync('token')
+					},
+					success(result) {
+						var res = result.data
+						_this.agvStartDis = false
+						if (res.code === 200) {
+							_this.orderCarList = []
+							_this.$refs.agvStart.close()
+							uni.showToast({ title: '鍚姩鎴愬姛锛�', icon: "success", position: 'top' })
+							setTimeout(()=> {
+								_this.getOpenerEventChannel().emit('acceptDataFromOpenedPage', {data: 1});
+								uni.navigateBack({delta:2})
+							},1000)
+						} else if (res.code == 403) {
+							uni.showToast({ title: res.msg, icon: "error", position: 'top' })
+							setTimeout(() => { uni.reLaunch({ url: '../../login/login' }); }, 1000);
+						} else {
+							uni.showToast({ title: res.msg, icon: "error", position: 'top' })
+						}
+					},
+					fail(res) {
+						_this.agvStartDis = false
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	@import url('../../../static/css/common/order.css');
+	.shop-car {
+		background-color: #2299ff;
+		color: #fff;
+	}
+	.detl-threeCode {
+		font-size: 28px;
+		font-weight: bold;
+	}
+	.popup {
+		width: 80vw;
+		min-height: 100rpx;
+		background-color: #FFF;
+		border-radius: 25rpx;
+		position: relative;
+	}
+	.title {
+		height: 100rpx;
+		line-height: 100rpx;
+		width: 100%;
+		color: #606266;
+		text-align: center;
+		font-size: 16px;
+	}
+	.popup-item {
+		height: 80rpx;
+		line-height: 80rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
+	.popup-item-left {
+		max-width: 20vw;
+		padding-right: 20rpx;
+		text-align: right;
+		color: #606266;
+	}
+	.popup-item-right {
+		display: flex;
+		align-items: center;
+		width: 50vw;
+		height: 50rpx;
+		padding: 2px 5px;
+		border: 1px solid #E4E7ED;
+		border-radius: 5rpx;
+	}
+	.popup-item-right input{
+		color: #606266;
+	}
+	.btn {
+		display: flex;
+		height: 90rpx;
+		margin-top: 20rpx;
+		border-top: 1px solid #DCDFE6;
+		justify-content: center;
+		align-items: center;
+	}
+	.btn-left {
+		display: flex;
+		flex: 1;
+		height: 100%;
+		justify-content: center;
+		align-items: center;
+		color: #e2231a;
+		border-right: 1px solid #DCDFE6;
+	}
+	.btn-right {
+		display: flex;
+		flex: 1;
+		justify-content: center;
+		align-items: center;
+		color: #409EFF;
+	}
+</style>
diff --git a/pages/phyz/comOrder/checkOut.vue b/pages/phyz/comOrder/checkOut.vue
index 467262d..dd4d967 100644
--- a/pages/phyz/comOrder/checkOut.vue
+++ b/pages/phyz/comOrder/checkOut.vue
@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<view class="list shop-car" v-for="item in dataList">
+		<view class="list shop-car" v-for="(item,index) in dataList" :key="index">
 			<view class="list-left">
 				<view class="detl-threeCode" style="padding: 16rpx 0;">{{item.csocode}}</view>
 				<view>搴撲綅锛歿{item.locNo}}</view>
@@ -18,13 +18,14 @@
 				</view>
 				
 				<view class="detl-threeCode" style="display: flex;padding: 0 0 32rpx 0;font-size: 24px;">鍑哄簱绔欙細
-					<view class="dropdown" @click="toggleDropdown(item)">
+						<!-- @click="toggleDropdown(item)" -->
+					<view class="dropdown" >
 						<!-- <view style="height: 100%;width: 100%; position: fixed;background-color: rgba(0,0,0,.4);left:0;top:0" v-if = "item.isOpen"></view> -->
-						<input type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="璇烽�夋嫨鍑哄簱绔�" placeholder-style="color: #fff">
+						<input @input="staInput(item.agvStaNo,item.agvStaNos,index)" type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="璇烽�夋嫨鍑哄簱绔�" placeholder-style="color: #fff">
 						<uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#fff" style="margin-left: 10rpx;"></uni-icons>
-						<scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen">
+						<!-- <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen">
 							<view class="dropdown-item" v-for="option in options" @click="selected(option,item)">{{option}}</view>
-						</scroll-view>
+						</scroll-view> -->
 					</view>
 				</view>
 				<button @click="combConfirm(item)" :disabled="combDis">绔嬪嵆鍑哄簱</button>
@@ -115,6 +116,18 @@
 			selected(option,item) {
 				item.agvStaNo = option
 			},
+			staInput(item,items,index) {
+				var flag = false
+				for (let k of items) {
+					if (k == item) flag = true 
+				}
+				if(!flag) {
+					uni.showToast({ title: '褰撳墠绔欑偣鏃犳硶浣跨敤锛屽凡澶嶄綅', icon: "error", position: 'top' })
+					setTimeout(() => {
+						this.dataList[index].agvStaNo = ''
+					}, 100);
+				}
+			},
 			// 璁㈠崟鏄庣粏
 			getPakoutList(ids,locNo) {
 				let _this = this
@@ -130,6 +143,7 @@
 								if (k.locNo != null) {
 									k['isOpen'] = false
 									k['count'] = k.anfme
+									k.agvStaNo = ''
 									k.anfme = 0
 									if (_this.orderType == 'bcp') {
 										if (k.locNo.substring(k.locNo.length - 1, k.locNo.length) == 1) {
diff --git a/pages/phyz/order/preview.vue b/pages/phyz/order/preview.vue
index 8dd7c69..49163a9 100644
--- a/pages/phyz/order/preview.vue
+++ b/pages/phyz/order/preview.vue
@@ -22,7 +22,7 @@
 				<view class="card-id">{{i + 1}}</view>
 				<view>璐т綅锛歿{item.locNo}}</view>
 				<view style="display: flex;">鍑哄簱绔欙細
-					<view class="dropdown" @click="toggleDropdown(item)">
+					<view class="dropdown" >
 						<input type="text" style="width: 270rpx;" v-model="item.agvStaNo" placeholder="璇烽�夋嫨鍑哄簱绔�">
 						<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">
diff --git a/pages/phyz/orderOut/orderCheck.vue b/pages/phyz/orderOut/orderCheck.vue
index 8322a53..9cb2142 100644
--- a/pages/phyz/orderOut/orderCheck.vue
+++ b/pages/phyz/orderOut/orderCheck.vue
@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<view class="list shop-car" v-for="item in dataList">
+		<view class="list shop-car" v-for="(item,index) in dataList" :key="index">
 			<view class="list-left">
 				<view class="detl-threeCode" style="padding: 16rpx 0;">{{item.csocode}}</view>
 				<view>搴撲綅锛歿{item.locNo}}</view>
@@ -18,13 +18,14 @@
 				</view>
 				
 				<view class="detl-threeCode" style="display: flex;padding: 0 0 32rpx 0;font-size: 24px;">鍑哄簱绔欙細
-					<view class="dropdown" @click="toggleDropdown(item)">
+						<!-- @click="toggleDropdown(item)" -->
+					<view class="dropdown" >
 						<!-- <view style="height: 100%;width: 100%; position: fixed;background-color: rgba(0,0,0,.4);left:0;top:0" v-if = "item.isOpen"></view> -->
-						<input type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="璇烽�夋嫨鍑哄簱绔�" placeholder-style="color: #fff">
+						<input @input="staInput(item.agvStaNo,item.agvStaNos,index)" type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="璇烽�夋嫨鍑哄簱绔�" placeholder-style="color: #fff">
 						<uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#fff" style="margin-left: 10rpx;"></uni-icons>
-						<scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen">
+						<!-- <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen">
 							<view class="dropdown-item" v-for="option in options" @click="selected(option,item)">{{option}}</view>
-						</scroll-view>
+						</scroll-view> -->
 					</view>
 				</view>
 				<button @click="combConfirm(item)" :disabled="combDis">绔嬪嵆鍑哄簱</button>
@@ -120,6 +121,18 @@
 			selected(option,item) {
 				item.agvStaNo = option
 			},
+			staInput(item,items,index) {
+				var flag = false
+				for (let k of items) {
+					if (k == item) flag = true 
+				}
+				if(!flag) {
+					uni.showToast({ title: '褰撳墠绔欑偣鏃犳硶浣跨敤锛屽凡澶嶄綅', icon: "error", position: 'top' })
+					setTimeout(() => {
+						this.dataList[index].agvStaNo = ''
+					}, 100);
+				}
+			},
 			// 璁㈠崟鏄庣粏
 			getPakoutList(ids,bcp) {
 				let _this = this
@@ -135,6 +148,7 @@
 								if (k.locNo != null) {
 									k['isOpen'] = false
 									k['count'] = k.anfme
+									k.agvStaNo = ''
 									k.anfme = 0
 									if (_this.orderType == 'bcp') {
 										if (k.locNo.substring(k.locNo.length - 1, k.locNo.length) == 1) {
diff --git a/pages/phyz/processOrder/orderCheck.vue b/pages/phyz/processOrder/orderCheck.vue
index aa79992..3131174 100644
--- a/pages/phyz/processOrder/orderCheck.vue
+++ b/pages/phyz/processOrder/orderCheck.vue
@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<view class="list shop-car" v-for="item in dataList">
+		<view class="list shop-car" v-for="(item,index) in dataList" :key="index">
 			<view class="list-left">
 				<view class="detl-threeCode" style="padding: 16rpx 0;">{{item.csocode}}</view>
 				<view>搴撲綅锛歿{item.locNo}}</view>
@@ -18,13 +18,14 @@
 				</view>
 				
 				<view class="detl-threeCode" style="display: flex;padding: 0 0 32rpx 0;font-size: 24px;">鍑哄簱绔欙細
-					<view class="dropdown" @click="toggleDropdown(item)">
+						<!-- @click="toggleDropdown(item)" -->
+					<view class="dropdown" >
 						<!-- <view style="height: 100%;width: 100%; position: fixed;background-color: rgba(0,0,0,.4);left:0;top:0" v-if = "item.isOpen"></view> -->
-						<input type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="璇烽�夋嫨鍑哄簱绔�" placeholder-style="color: #fff">
+						<input @input="staInput(item.agvStaNo,item.agvStaNos,index)" type="text" style="width: 270rpx;font-size: 20px;" v-model="item.agvStaNo" placeholder="璇烽�夋嫨鍑哄簱绔�" placeholder-style="color: #fff">
 						<uni-icons :type="item.isOpen ? 'top' : 'bottom'" color="#fff" style="margin-left: 10rpx;"></uni-icons>
-						<scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen">
+						<!-- <scroll-view scroll-y="ture" class="dropdown-content" v-if="item.isOpen">
 							<view class="dropdown-item" v-for="option in options" @click="selected(option,item)">{{option}}</view>
-						</scroll-view>
+						</scroll-view> -->
 					</view>
 				</view>
 				<button @click="combConfirm(item)" :disabled="combDis">绔嬪嵆鍑哄簱</button>
@@ -115,6 +116,18 @@
 			selected(option,item) {
 				item.agvStaNo = option
 			},
+			staInput(item,items,index) {
+				var flag = false
+				for (let k of items) {
+					if (k == item) flag = true 
+				}
+				if(!flag) {
+					uni.showToast({ title: '褰撳墠绔欑偣鏃犳硶浣跨敤锛屽凡澶嶄綅', icon: "error", position: 'top' })
+					setTimeout(() => {
+						this.dataList[index].agvStaNo = ''
+					}, 100);
+				}
+			},
 			// 璁㈠崟鏄庣粏
 			getPakoutList(ids,locNo) {
 				let _this = this
@@ -130,6 +143,7 @@
 								if (k.locNo != null) {
 									k['isOpen'] = false
 									k['count'] = k.anfme
+									k.agvStaNo = ''
 									k.anfme = 0
 									if (_this.orderType == 'bcp') {
 										if (k.locNo.substring(k.locNo.length - 1, k.locNo.length) == 1) {

--
Gitblit v1.9.1