From 94d565b9bc2d441972f203ace2423dc1fe156934 Mon Sep 17 00:00:00 2001
From: lbq <1065079612@qq.com>
Date: 星期二, 23 十二月 2025 13:44:55 +0800
Subject: [PATCH] WMS3.0,PDA端,平湖银座五期

---
 pages/outbound/productDirectDelivery.vue |  283 ++
 static/img/toux80.png                    |    0 
 locale/zh-Hans.json                      |   24 
 pages/outbound/matPreparation.vue        |  287 ++
 pages/workInfo/locInfo.vue               |  239 ++
 locale/en.json                           |    6 
 pages/emptyTray/inBound.vue              |  264 ++
 pages/inbound/orderIn.vue                |  382 +++
 common/request.js                        |    2 
 pages/transfer/orderTransferItem.vue     |  291 ++
 pages/home/orderManage.vue               |   13 
 pages/emptyTray/outBound.vue             |  235 ++
 pages/home/index.vue                     |  314 ++
 pages/listing/unPakin.vue                |   17 
 pages/transfer/orderTransfer.vue         |  287 ++
 pages/outbound/matDirectDelivery.vue     |  283 ++
 pages/inspect/bad.vue                    |    3 
 pages/outbound/orderOutExecute.vue       |  295 ++
 pages/inbound/buffStore.vue              |  309 ++
 pages/outbound/orderPick.vue             |  287 ++
 pages/listing/matnrPalletising.vue       |   25 
 pages/inspect/check.vue                  |   10 
 pages/transfer/transferType.vue          |  382 +++
 pages/outbound/productionMatCall.vue     |    8 
 pages/workInfo/taskInfo.vue              |  296 ++
 pages.json                               |  135 +
 pages/outbound/matPreparationItem.vue    |  329 ++
 pages/outbound/orderOutItem.vue          |  291 ++
 pages/inbound/orderInItem.vue            |  291 ++
 pages/inbound/orderInExecute.vue         |  296 ++
 pages/AGV/StartInTask.vue                |   47 
 pages/listing/labour.vue                 |    9 
 pages/workInfo/stationInfo.vue           |  234 ++
 pages/transfer/matTransfer.vue           |  265 ++
 pages/outbound/orderOut.vue              |  382 +++
 35 files changed, 6,677 insertions(+), 144 deletions(-)

diff --git a/common/request.js b/common/request.js
index 7645f4e..d0bc13c 100644
--- a/common/request.js
+++ b/common/request.js
@@ -16,7 +16,7 @@
 		const token = uni.getStorageSync('token');
 		// const URL = 'http://47.76.147.249:8080/rsf-server/pda' + url;
 		// const URL = 'http://test.zoneyung.net:8080/rsf-server/pda' + url;
-		const URL = 'http://192.168.51.35:8085/rsf-server/pda' + url;
+		const URL = 'http://127.0.0.1:8085/rsf-server/pda' + url;
 		uni.request({
 			url: URL,
 			data: postData,
diff --git a/locale/en.json b/locale/en.json
index a960e47..1a32564 100644
--- a/locale/en.json
+++ b/locale/en.json
@@ -35,8 +35,10 @@
 	"language-change-confirm":"chenge",
 	"hello":"Hello, welcome to log in to the WMS system!",
 	"intro":"Make manufacturing and logistics more efficient",
-	"checkOrder":"checkOrder"
-  	
+	"checkOrder":"checkOrder",
+	"emptyTrayInBound":"EmptyTray InBound",
+	"emptyTrayOutBound":"EmptyTray OutBound",
+  	"orderPick":"Order Pick"
   	
   },
   "other":{
diff --git a/locale/zh-Hans.json b/locale/zh-Hans.json
index ff7223c..fd0a7e1 100644
--- a/locale/zh-Hans.json
+++ b/locale/zh-Hans.json
@@ -23,11 +23,11 @@
 		"palletizing": "鍗曟嵁缁勬墭",
 		"palletBuilding":"缁勬墭瑙g粦",
 		"inspectionRequest":"鎶ユ",
-		"qualityInspection":"璐ㄦ",
-		"defectiveMarking":"涓嶈壇鏍囪",
+		"qualityInspection":"璐ㄦ瑙i攣",
+		"defectiveMarking":"璐ㄦ涓婇攣",
 		"manualPutaway":"浜哄伐涓婃灦",
 		"stationBinding":"绔欑偣缁戝畾",
-		"inboundInitiation":"鍚姩鍏ュ簱",
+		"inboundInitiation":"AGV鍏ュ簱",
 		"stationUnbinding":"绔欑偣瑙g粦",
 		"bindAndInbound":"缁戝畾&鍏ュ簱",
 		"quickPicking":"蹇�熸嫞璐�",
@@ -36,7 +36,23 @@
 		"language-change-confirm":"纭畾鍒囨崲?",
 		"hello":"鎮ㄥソ锛屾杩庣櫥褰昗MS绯荤粺锛�",
 		"intro":"璁╁埗閫犱笌鐗╂祦鏇撮珮鏁�",
-		"checkOrder":"鐩樼偣"
+		"checkOrder":"鐩樼偣",
+		"emptyOutBound":"绌烘墭鍑哄簱",
+		"emptyInBound":"绌烘墭鍏ュ簱",
+		"orderPick":"璁㈠崟鍑哄簱",
+		"orderPickGroup":"鍑哄簱璁㈠崟",
+		"orderTransfer":"璋冩嫧璁㈠崟",
+		"orderIn":"鍏ュ簱璁㈠崟",
+		"orderInItem":"鍏ュ簱璁㈠崟璇︽儏",
+		"matTransfer":"绉诲簱",
+		"buffStore":"鐏屾《鍏ュ簱",
+		"stationInfo":"绔欑偣缁存姢",
+		"locInfo":"搴撲綅缁存姢",
+		"taskInfo":"宸ヤ綔浠诲姟",
+		"productionMatCall":"鐢熶骇鍙枡",
+		"matDirectDelivery":"鐢熶骇鐩撮��",
+		"productDirectDelivery":"鎴愬搧鐩村嚭",
+		"matPreparation":"鐢熶骇澶囨枡"
 		
 		
 	},
diff --git a/pages.json b/pages.json
index 6b96799..150f997 100644
--- a/pages.json
+++ b/pages.json
@@ -13,6 +13,132 @@
 			}
 		},
 		{
+			"path": "pages/emptyTray/outBound",
+			"style": {
+				"navigationBarTitleText": "绌烘墭鍑哄簱"
+			}
+		},
+		{
+			"path": "pages/emptyTray/inBound",
+			"style": {
+				"navigationBarTitleText": "绌烘墭鍏ュ簱"
+			}
+		},
+		{
+			"path": "pages/outbound/orderPick",
+			"style": {
+				"navigationBarTitleText": "璁㈠崟鍑哄簱"
+			}
+		},
+		{
+			"path": "pages/outbound/orderOut",
+			"style": {
+				"navigationBarTitleText": "鍑哄簱璁㈠崟"
+			}
+		},
+		{
+			"path": "pages/outbound/orderOutItem",
+			"style": {
+				"navigationBarTitleText": "璁㈠崟鍑哄簱璇︽儏"
+			}
+		},
+		{
+			"path": "pages/outbound/matPreparation",
+			"style": {
+				"navigationBarTitleText": "鐢熶骇澶囨枡"
+			}
+		},
+		{
+			"path": "pages/outbound/matPreparationItem",
+			"style": {
+				"navigationBarTitleText": "鐢熶骇澶囨枡璇︽儏"
+			}
+		},
+		{
+			"path": "pages/inbound/orderIn",
+			"style": {
+				"navigationBarTitleText": "鍏ュ簱璁㈠崟"
+			}
+		},
+		{
+			"path": "pages/inbound/orderInExecute",
+			"style": {
+				"navigationBarTitleText": "鍏ュ簱璁㈠崟鍒楄〃"
+			}
+		},
+		{
+			"path": "pages/inbound/orderInItem",
+			"style": {
+				"navigationBarTitleText": "鍏ュ簱璁㈠崟璇︽儏"
+			}
+		},
+		{
+			"path": "pages/transfer/transferType",
+			"style": {
+				"navigationBarTitleText": "璋冩嫧绫诲瀷"
+			}
+		},
+		{
+			"path": "pages/transfer/orderTransfer",
+			"style": {
+				"navigationBarTitleText": "璋冩嫧璁㈠崟"
+			}
+		},
+		{
+			"path": "pages/transfer/orderTransferItem",
+			"style": {
+				"navigationBarTitleText": "璋冩嫧璁㈠崟璇︽儏"
+			}
+		},
+		{
+			"path": "pages/transfer/matTransfer",
+			"style": {
+				"navigationBarTitleText": "绉诲簱"
+			}
+		},
+		{
+			"path": "pages/workInfo/taskInfo",
+			"style": {
+				"navigationBarTitleText": "宸ヤ綔浠诲姟"
+			}
+		},
+		{
+			"path": "pages/workInfo/stationInfo",
+			"style": {
+				"navigationBarTitleText": "绔欑偣淇℃伅"
+			}
+		},
+		{
+			"path": "pages/workInfo/locInfo",
+			"style": {
+				"navigationBarTitleText": "搴撲綅淇℃伅"
+			}
+		},
+		{
+			"path": "pages/inbound/buffStore",
+			"style": {
+				"navigationBarTitleText": "鐏屾《鍏ュ簱"
+			}
+		},
+		{
+			"path": "pages/outbound/matDirectDelivery",
+			"style": {
+				"navigationBarTitleText": "鐢熶骇鐩撮��"
+			}
+		},
+		{
+			"path": "pages/outbound/productDirectDelivery",
+			"style": {
+				"navigationBarTitleText": "鎴愬搧鐩村嚭"
+			}
+		},
+		{
+			"path": "pages/outbound/productionMatCall",
+			"style": {
+				"navigationBarTitleText": "鐢熶骇鍙枡"
+			}
+		},
+		{
 			"path": "pages/outbound/wavePick",
 			"style": {
 				"navigationBarTitleText": "娉㈡鎷h揣"
@@ -75,7 +201,7 @@
 		{
 			"path": "pages/AGV/StartInTask",
 			"style": {
-				"navigationBarTitleText": "AGV鍚姩鍏ュ簱"
+				"navigationBarTitleText": "AGV鍏ュ簱"
 			}
 		},
 		{
@@ -112,13 +238,13 @@
 		{
 			"path": "pages/inspect/check",
 			"style": {
-				"navigationBarTitleText": "璐ㄦ"
+				"navigationBarTitleText": "璐ㄦ瑙i攣"
 			}
 		},
 		{
 			"path": "pages/inspect/bad",
 			"style": {
-				"navigationBarTitleText": "涓嶈壇鏍囩"
+				"navigationBarTitleText": "璐ㄦ涓婇攣"
 			}
 		},
 		{
@@ -275,9 +401,6 @@
 				"enablePullDownRefresh": false
 			}
 		}
-
-
-
 		, {
 			"path": "pages/phyz/AGV/emptyOut",
 			"style": {
diff --git a/pages/AGV/StartInTask.vue b/pages/AGV/StartInTask.vue
index d43db9e..f59316a 100644
--- a/pages/AGV/StartInTask.vue
+++ b/pages/AGV/StartInTask.vue
@@ -1,11 +1,19 @@
 <template>
 	<view class="has-foot">
 		<form>
-			<view class="cu-form-group ">
-				<view class="title">鎺ラ┏绔�</view>
-				<input placeholder="璇锋壂鎻忔帴椹崇珯鏉$爜" v-model="barcode" ></input>
+			<view class="cu-form-group margin-top">
+				<view class="title">鎺ラ┏绔欑偣</view>
+				<input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+				<!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+			</view>	
+			<view class="cu-form-group">
+				<view class="title">瀹瑰櫒鍙�</view>
+				<input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="barcode" ></input>
 				<text class='cuIcon-search text-blue' @click="search"></text>
 			</view>	
+<!-- 			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-blue margin-left">瀹瑰櫒鐮�:{{container}}</view>				
+			</view> -->
 			<view class="cu-form-group">
 				<view class="title">鐩爣搴撳尯</view>
 				<view style="width: 75%;">
@@ -14,11 +22,6 @@
 				</view>
 			</view>
 		</form>
-		<view class="flex solid-bottom padding-sm justify-between">
-			<view class="text-blue">瀹瑰櫒鐮�:{{container}}</view>
-			
-		</view>
-
 
 
 		<view class="cu-list det menu sm-border  padding">
@@ -70,7 +73,7 @@
 
 		<view class="cu-bar btn-group foot">
 			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
-			<button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍚姩</button>
+			<button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button>
 		</view>
 
 		
@@ -106,7 +109,10 @@
 		computed: {
 			...mapState('user', ['dynamicFields']),
 		},
-		mounted() {},
+		mounted() {
+			this.getRece()
+			this.whAreaId = uni.getStorageSync('whAreaId')
+		},
 		methods: {	
 			selChange(val) {
 				uni.setStorageSync('whAreaId', val)
@@ -166,7 +172,7 @@
 			async confirm() {				
 				if(this.barcode === '' || this.barcode ===null){
 					uni.showToast({
-						title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+						title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
 						icon: "none",
 					})
 					return ;
@@ -177,7 +183,7 @@
 						icon: "none",
 					})
 					return ;
-				}
+				} 
 				this.repeatClick = true
 				const {
 					code,
@@ -200,10 +206,21 @@
 					})
 				}
 				this.repeatClick = false
-
-
 			},
-
+			
+			async getRece() {				
+				const {
+					code,
+					data,
+					msg
+				} = await request('/areas/receipt', {}, 'get')
+				if (code === 200) {
+					this.range = data.map(item => ({
+						value: item.id,
+						text: item.warehouseId$ + "-- " + item.name
+					}));
+				}
+			},
 		}
 	}
 </script>
diff --git a/pages/emptyTray/inBound.vue b/pages/emptyTray/inBound.vue
new file mode 100644
index 0000000..f7dd07f
--- /dev/null
+++ b/pages/emptyTray/inBound.vue
@@ -0,0 +1,264 @@
+<template>
+	<view class="has-foot">
+		<form>
+			<view class="cu-form-group margin-top">
+				<view class="title">瀹瑰櫒鍙�</view>
+				<input placeholder="璇锋壂瀹瑰櫒鏉$爜" v-model="container"></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>
+			<view class="cu-form-group ">
+				<view class="title">鎺ラ┏绔欑偣</view>
+				<input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+			</view>
+		</form>
+
+
+
+		<view class="cu-list det menu sm-border  padding">
+			<block v-for="(item, index) in list" :key="index">
+				<view class="cu-bar bg-white solid-bottom margin-top-sm">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+						<view class="text-blue">
+							{{`${item.maktx}`}}
+						</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-black">ASN:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.asnCode}}</text>
+					</view>
+				</view>
+
+				
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鎵规:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.batch}}</text>
+					</view>
+				</view>
+
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鏀惰揣鏁伴噺:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.anfme}}</text>
+					</view>
+				</view>
+
+			</block>
+		</view>
+
+
+		<view class="cu-bar btn-group foot">
+			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+			<button class="cu-btn bg-blue shadow-blur" @click="confirm">鍥炲簱</button>
+		</view>
+
+		<uni-popup ref="popup" class="cu-popup">
+			<view class="popup-content">
+				<view class="head">
+					<text>鎺ㄨ崘</text>
+					<text class='cuIcon-close text-red close' @click="close"></text>
+				</view>
+
+				<div class="body">
+					<view class="cu-list grid col-3 no-border">
+						<view class="item" v-for="el in range">
+							<view class="cu-btn round  sm" :class="[el===curCode?'bg-blue':'line-blue']"
+								@click="itemChange(el)">{{el}}</view>
+						</view>
+					</view>
+				</div>
+
+				<view class="cu-bar btn-group ">
+					<button class="cu-btn bg-blue shadow-blur" @click="popupSubmit">鎻愪氦</button>
+				</view>
+			</view>
+		</uni-popup>
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				barcode: '',
+				areaName: '',
+				locCode: '',
+				container: '',
+				list: [],
+				range: [],
+				curCode: ''
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+		},
+		mounted() {},
+		methods: {
+			async search() {
+				const {
+					code,
+					data,
+					msg
+				} = await request('/stock/operate/list', {					
+					barcode: this.container,
+					sta: this.barcode
+				})
+				if (code === 200) {
+					// const find = this.list.find(el => el.id === data.id);
+					// !find &&
+					 this.list = data
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+			},
+
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				
+				this.container = ''
+				this.barcode = ''
+			},
+
+			open() {
+				this.$refs.popup.open()
+			},
+
+			close() {
+				this.$refs.popup.close()
+			},
+
+			popupSubmit() {
+				this.$refs.popup.close()
+			},
+			itemChange(el) {
+				this.curCode = el
+			},
+
+			async confirm() {
+				if(this.container === '' || this.container ===null){
+					uni.showToast({
+						title: "瀹瑰櫒鐮佷笉鑳戒负绌�",
+						icon: "none",
+					})
+					return ;
+				}
+				if(this.barcode === '' || this.barcode ===null){
+					uni.showToast({
+						title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/AGV/staBind',{
+						barcode: this.container,
+						sta: this.barcode
+					}
+				)
+				if (code === 200) {
+					uni.showToast({
+						title: '缁戝畾鎴愬姛'
+					})
+					this.clear()
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+
+
+
+			},
+
+		}
+	}
+</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;
+	}
+
+	.uni-file-picker {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.uni-select__selector {
+		z-index: 999;
+	}
+
+	.tj {
+		height: auto;
+		padding: 6px 8px;
+		display: inline-block;
+		border-radius: 6px;
+	}
+
+	.item {
+		display: flex;
+		justify-content: center;
+	}
+
+	.item .cu-btn {
+		font-size: 26upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/emptyTray/outBound.vue b/pages/emptyTray/outBound.vue
new file mode 100644
index 0000000..a0ef4e2
--- /dev/null
+++ b/pages/emptyTray/outBound.vue
@@ -0,0 +1,235 @@
+<template>
+	<view class="has-foot">
+		<form>
+			<view class="cu-form-group margin-top">
+				<view class="title">鎺ラ┏绔欑偣</view>
+				<input placeholder=" 璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+			</view>		
+			
+			<view class="cu-form-group margin-bottom">
+				<view class="title">瀹瑰櫒绫诲瀷</view>
+				<view style="width: 78%;">
+					<uni-data-select style="min-width: 80%; max-width: 80%;" v-model="palletTypeId" :localdata="range"
+						placement="bottom" @change="selChange"></uni-data-select>
+				</view>
+			</view>
+		</form>
+
+		
+		<view class="cu-bar btn-group foot">
+			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+			<button class="cu-btn bg-blue shadow-blur" @click="confirm">鍛煎彨</button>
+		</view>		
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				barcode: '',
+				areaName: '',
+				locCode: '',
+				container: '',
+				list: [],
+				range: [],
+				curCode: ''
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+		},
+		mounted() {
+			this.getPalletType(),
+			this.palletTypeId = uni.getStorageSync('palletTypeId')
+		},
+		methods: {
+			selChange(val) {
+				uni.setStorageSync('palletTypeId', val.value)
+			},
+			// async search() {
+			// 	const {
+			// 		code,
+			// 		data,
+			// 		msg
+			// 	} = await request('/stock/operate/list', {					
+			// 		barcode: this.container,
+			// 		sta: this.barcode
+			// 	})
+			// 	if (code === 200) {
+			// 		// const find = this.list.find(el => el.id === data.id);
+			// 		// !find &&
+			// 		 this.list = data
+			// 	} else {
+			// 		uni.showToast({
+			// 			title: msg,
+			// 			icon: "none",
+			// 		})
+			// 	}
+			// },
+
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.palletTypeId = ''
+				this.container = ''
+				this.barcode = ''
+			},
+
+			open() {
+				this.$refs.popup.open()
+			},
+
+			close() {
+				this.$refs.popup.close()
+			},
+
+			popupSubmit() {
+				this.$refs.popup.close()
+			},
+			itemChange(el) {
+				this.curCode = el
+			},
+			
+			async getPalletType() {
+				const {
+					code,
+					data,
+					msg
+				} = await request('/info/palletType/list', {}, 'get')
+				if (code === 200) {
+					this.range = data.map(item => ({
+						value: item.id,
+						text: item.group === null ? item.label : item.group + "-- " + item.label
+					}));
+				}
+			},
+
+			async confirm() {
+				if(this.barcode === '' || this.barcode === null){
+					uni.showToast({
+						title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				}				
+				if(this.palletTypeId === '' || this.palletTypeId === null){
+					uni.showToast({
+						title: "璇烽�夋嫨鎵樼洏绫诲瀷",
+						icon: "none",
+					})
+					return ;
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						palletTypeId: this.palletTypeId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鍛煎彨绌烘墭鐩樹腑锛岃绋嶄綔绛夊緟'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}				
+				}				
+				
+				// const {
+				// 	code,
+				// 	data,
+				// 	msg
+				// } = await request('/AGV/staBind',{
+				// 		barcode: this.container,
+				// 		sta: this.barcode
+				// 	}
+				// )
+				// if (code === 200) {
+				// 	uni.showToast({
+				// 		title: '缁戝畾鎴愬姛'
+				// 	})
+				// 	this.clear()
+				// } else {
+				// 	uni.showToast({
+				// 		title: msg,
+				// 		icon: "none",
+				// 	})
+				// }
+			},
+
+		}
+	}
+</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;
+	}
+
+	.uni-file-picker {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.uni-select__selector {
+		z-index: 999;
+	}
+
+	.tj {
+		height: auto;
+		padding: 6px 8px;
+		display: inline-block;
+		border-radius: 6px;
+	}
+
+	.item {
+		display: flex;
+		justify-content: center;
+	}
+
+	.item .cu-btn {
+		font-size: 26upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/home/index.vue b/pages/home/index.vue
index 5ccdfae..14543a6 100644
--- a/pages/home/index.vue
+++ b/pages/home/index.vue
@@ -3,61 +3,84 @@
 		<view class="user-bg">
 			<image src="../../static/img/toux.png" class="tx" mode="widthFix"></image>
 			<view class="text-xl margin-top-sm margin-left-lg">
-				<view class="text-blue text-bold text-xxl">
+				<view class="text-blue text-bold text-xl">
 					{{user.username}}
 				</view>
-				<view class="text-gray">浠撳簱涓荤 | zy32423423</view>
+				<view class="text-gray text-l">{{user.code}}</view>
 			</view>
-
+			<view class="cu-btn bg-red margin-tb-sm lg round" style="position: absolute; right: 20px; width: 30%; height: 50%;" @click="equit">{{$t('index.outLogin')}}</view>
 		</view>
-
-		<view class="cu-bar bg-white solid-bottom margin-top">
+		
+		<view class="cu-bar bg-white solid-bottom margin-top-sm">
 			<view class="action">
-				<text class="cuIcon-title text-orange "></text> 鏀惰揣
+				<text class="cuIcon-title text-orange "></text> 鍏ュ簱
 			</view>
-
-		</view>
-
+		</view>		
 		<view class="cu-list grid col-4 no-border">
-			<!-- <view class="cu-item">
+			<!-- 绌烘墭鍏ュ簱 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/emptyTray/inBound" navigateTo>
+					<view class="cuIcon-pulldown text-blue"></view>
+					<text>{{$t('index.emptyInBound')}}</text>
+				</navigator>
+			</view>
+			<view class="cu-item">
 				<navigator hover-class='none' url="/pages/rece/standard" navigateTo>
 					<view class="cuIcon-apps text-blue">
 					</view>
 					<text>鏍囧噯鏀惰揣</text>
 				</navigator>
-			</view> -->
-
+			</view> 
+			<!-- 鍗曟嵁缁勬墭 -->
 			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/listing/matnrPalletising" navigateTo>
+					<view class="cuIcon-cardboard text-blue"></view>
+					<text>{{$t('index.palletizing')}}</text>
+				</navigator>
+			</view>
+			<!-- 缁勬墭瑙g粦 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/listing/unPakin" navigateTo>
+					<view class="cuIcon-cardboardforbid text-blue"></view>
+					<text>{{$t('index.palletBuilding')}}</text>
+				</navigator>
+			</view>
+			<!-- 鍚姩鍏ュ簱 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/AGV/StartInTask" navigateTo>
+					<view class="cuIcon-pulldown text-blue"></view>
+					<text>{{$t('index.inboundInitiation')}}</text>
+				</navigator>
+			</view>
+			<!-- 鍏ュ簱璁㈠崟 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/inbound/orderIn" navigateTo>
+					<view class="cuIcon-addressbook text-blue"></view>
+					<text>{{$t('index.orderIn')}}</text>
+				</navigator>
+			</view>
+			<!-- 浜哄伐涓婃灦 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/listing/labour" navigateTo>
+					<view class="cuIcon-friendadd text-blue"></view>
+					<text>{{$t('index.manualPutaway')}}</text>
+				</navigator>
+			</view>
+			<!-- 鐏屾《鍏ュ簱锛氱紦瀛樺尯琚嬭濉戞枡绮掑瓙鐏屾《鍚庡叆搴� -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/inbound/buffStore" navigateTo>
+					<view class="cuIcon-all text-blue"></view>
+					<text>{{$t('index.buffStore')}}</text>
+				</navigator>
+			</view>
+			
+<!-- 			<view class="cu-item">
 				<navigator hover-class='none' url="/pages/rece/other" navigateTo>
 					<view class="cuIcon-taoxiaopu text-blue">
 					</view>
 					<text>{{$t('index.GR')}}</text>
 				</navigator>
 			</view>
-
-			<!-- <view class="cu-item">
-				<navigator hover-class='none' url="/pages/listing/disc" navigateTo>
-					<view class="cuIcon-cardboard text-blue">
-					</view>
-					<text>缁勭洏</text>
-				</navigator>
-			</view> -->
-			<view class="cu-item">
-				<navigator hover-class='none' url="/pages/listing/matnrPalletising" navigateTo>
-					<view class="cuIcon-cardboard text-blue">
-					</view>
-					<text>{{$t('index.palletizing')}}</text>
-				</navigator>
-			</view>
-
-			<view class="cu-item">
-				<navigator hover-class='none' url="/pages/listing/unPakin" navigateTo>
-					<view class="cuIcon-cardboardforbid text-blue">
-					</view>
-					<text>{{$t('index.palletBuilding')}}</text>
-				</navigator>
-			</view>
-
 			<view class="cu-item">
 				<navigator hover-class='none' url="/pages/inspect/report" navigateTo>
 					<view class="cuIcon-edit text-blue">
@@ -65,35 +88,164 @@
 					<text>{{$t('index.inspectionRequest')}}</text>
 				</navigator>
 			</view>
-
+			
 			<view class="cu-item">
-				<navigator hover-class='none' url="/pages/inspect/check" navigateTo>
-					<view class="cuIcon-warn text-blue">
+				<navigator hover-class='none' url="/pages/listing/disc" navigateTo>
+					<view class="cuIcon-cardboard text-blue">
 					</view>
-					<text>{{$t('index.qualityInspection')}}</text>
+					<text>缁勭洏</text>
+				</navigator>
+			</view> -->
+		</view>
+		
+		
+		<view class="cu-bar bg-white solid-bottom margin-top-sm">
+			<view class="action">
+				<text class="cuIcon-title text-orange "></text> 鍑哄簱
+			</view>
+		</view>		
+		<view class="cu-list grid col-4 no-border">
+			<!-- 绌烘墭鍑哄簱 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/emptyTray/outBound" navigateTo>
+					<view class="cuIcon-pullup text-blue"></view>
+					<text>{{$t('index.emptyOutBound')}}</text>
 				</navigator>
 			</view>
-
+			<!-- 璁㈠崟鍑哄簱 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/outbound/orderPick" navigateTo>
+					<view class="cuIcon-addressbook text-blue"></view>
+					<text>{{$t('index.orderPick')}}</text>
+				</navigator>
+			</view>			
+			<!-- 鐢熶骇鐩撮�侊細鍘熸潗鏂欎笉鍏ュ簱鐩存帴閫佷骇绾� -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/outbound/matDirectDelivery" navigateTo>
+					<view class="cuIcon-deliver text-blue"></view>
+					<text>{{$t('index.matDirectDelivery')}}</text>
+				</navigator>
+			</view>
+			<!-- 鎴愬搧鐩村嚭锛氭垚鍝佷笉鍏ョ珛搴撶洿鎺ュ嚭搴� -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/outbound/productDirectDelivery" navigateTo>
+					<view class="cuIcon-deliver_fill text-blue"></view>
+					<text>{{$t('index.productDirectDelivery')}}</text>
+				</navigator>
+			</view>			
+			<!-- 鍑哄簱璁㈠崟 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/outbound/orderOut" navigateTo>
+					<view class="cuIcon-addressbook text-blue"></view>
+					<text>{{$t('index.orderPickGroup')}}</text>
+				</navigator>
+			</view>
+			<!-- 鐢熶骇澶囨枡 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/outbound/matPreparation" navigateTo>
+					<view class="cuIcon-present text-blue"></view>
+					<text>{{$t('index.matPreparation')}}</text>
+				</navigator>
+			</view>
+			
+			<!-- 鐢熶骇鍙枡 -->
+<!-- 			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/outbound/productionMatCall" navigateTo>
+					<view class="cuIcon-apps text-blue">
+					</view>
+					<text>{{$t('index.productionMatCall')}}</text>
+				</navigator>
+			</view> -->
+		</view>
+		
+		
+		<view class="cu-bar bg-white solid-bottom margin-top-sm">
+			<view class="action">
+				<text class="cuIcon-title text-orange "></text> 缁煎悎
+			</view>
+		</view>		
+		<view class="cu-list grid col-4 no-border">
+			<!-- 璋冩嫧璁㈠崟 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/transfer/transferType" navigateTo>
+					<view class="cuIcon-addressbook text-blue"></view>
+					<text>{{$t('index.orderTransfer')}}</text>
+				</navigator>
+			</view>
+			<!-- 绉诲簱 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/transfer/matTransfer" navigateTo>
+					<view class="cuIcon-location text-blue"></view>
+					<text>{{$t('index.matTransfer')}}</text>
+				</navigator>
+			</view>
+			<!-- 鐩樼偣 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/check/checkOrder" navigateTo>
+					<view class="cuIcon-roundcheck text-blue"></view>
+					<text>{{$t('index.checkOrder')}}</text>
+				</navigator>
+			</view>
+			<!-- 璐ㄦ涓婇攣 -->
 			<view class="cu-item">
 				<navigator hover-class='none' url="/pages/inspect/bad" navigateTo>
-					<view class="cuIcon-appreciate text-blue">
-					</view>
+					<view class="cuIcon-lock text-blue"></view>
 					<text>{{$t('index.defectiveMarking')}}</text>
 				</navigator>
 			</view>
-
-
+			<!-- 璐ㄦ瑙i攣 -->
 			<view class="cu-item">
-				<navigator hover-class='none' url="/pages/listing/labour" navigateTo>
-					<view class="cuIcon-friendadd text-blue">
-					</view>
-					<text>{{$t('index.manualPutaway')}}</text>
+				<navigator hover-class='none' url="/pages/inspect/check" navigateTo>
+					<view class="cuIcon-unlock text-blue"></view>
+					<text>{{$t('index.qualityInspection')}}</text>
 				</navigator>
 			</view>
-			
-			
+			<!-- 宸ヤ綔浠诲姟 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/workInfo/taskInfo" navigateTo>
+					<view class="cuIcon-tagfill text-blue"></view>
+					<text>{{$t('index.taskInfo')}}</text>
+				</navigator>
+			</view>
+			<!-- 绔欑偣缁存姢 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/workInfo/stationInfo" navigateTo>
+					<view class="cuIcon-service text-blue"></view>
+					<text>{{$t('index.stationInfo')}}</text>
+				</navigator>
+			</view>
+			<!-- 搴撲綅缁存姢 -->
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/workInfo/locInfo" navigateTo>
+					<view class="cuIcon-servicefill text-blue"></view>
+					<text>{{$t('index.locInfo')}}</text>
+				</navigator>
+			</view>
+				
+			<!-- <view class="cu-item">
+				<navigator hover-class='none' url="/pages/outbound/fastPicking" navigateTo>
+					<view class="cuIcon-apps text-blue">
+					</view>
+					<text>{{$t('index.quickPicking')}}</text>
+				</navigator>
+			</view>
+			<view class="cu-item">
+				<navigator hover-class='none' url="/pages/outbound/wavePickItem" navigateTo>
+					<view class="cuIcon-apps text-blue">
+					</view>
+					<text>{{$t('index.wavePick')}}</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>
-		<view class="cu-bar bg-white solid-bottom margin-top">
+		
+		
+		<!-- <view class="cu-bar bg-white solid-bottom margin-top-sm">
 			<view class="action">
 				<text class="cuIcon-title text-orange "></text> AGV
 			</view>
@@ -127,51 +279,51 @@
 					</view>
 					<text>{{$t('index.bindAndInbound')}}</text>
 				</navigator>
-			</view>
-		
-		</view>
+			</view>		
+		</view> -->
 
-		<view class="cu-bar bg-white solid-bottom margin-top">
+
+		<!-- <view class="cu-bar bg-white solid-bottom margin-top-sm">
 			<view class="action">
-				<text class="cuIcon-title text-orange "></text> 浣滀笟
+				<text class="cuIcon-title text-orange "></text> 寮�鍙�
 			</view>
 		</view>
-
+		
 		<view class="cu-list grid col-4 no-border">
 			<view class="cu-item">
-				<navigator hover-class='none' url="/pages/outbound/fastPicking" navigateTo>
-					<view class="cuIcon-apps text-blue">
+				<navigator hover-class='none' url="/pages/phyz/stationManage/stationManage" navigateTo>
+					<view class="cuIcon-punch text-blue">
 					</view>
-					<text>{{$t('index.quickPicking')}}</text>
+					<text>{{$t('index.stationBinding')}}</text>
 				</navigator>
 			</view>
 			<view class="cu-item">
-				<navigator hover-class='none' url="/pages/outbound/wavePickItem" navigateTo>
-					<view class="cuIcon-apps text-blue">
+				<navigator hover-class='none' url="/pages/home/orderManage" navigateTo>
+					<view class="cuIcon-punch text-blue">
 					</view>
-					<text>{{$t('index.wavePick')}}</text>
+					<text>{{$t('index.stationBinding')}}</text>
 				</navigator>
 			</view>
 			<view class="cu-item">
-				<navigator hover-class='none' url="/pages/check/checkOrder" navigateTo>
-					<view class="cuIcon-apps text-blue">
+				<navigator hover-class='none' url="/pages/home/locMastManage" navigateTo>
+					<view class="cuIcon-punch text-blue">
 					</view>
-					<text>{{$t('index.checkOrder')}}</text>
+					<text>{{$t('index.stationBinding')}}</text>
 				</navigator>
 			</view>
 			<view class="cu-item">
-				<navigator hover-class='none' url="/pages/check/firstCheck" navigateTo>
-					<view class="cuIcon-apps text-blue">
+				<navigator hover-class='none' url="/pages/home/wrkMastManage" navigateTo>
+					<view class="cuIcon-punch text-blue">
 					</view>
-					<text>{{$t('index.checkOrder')}}</text>
+					<text>{{$t('index.stationBinding')}}</text>
 				</navigator>
-			</view>
-
+			</view> -->
 		</view>
+		
 
-		<view class="padding flex flex-direction">
+<!-- 		<view class="padding flex flex-direction">
 			<view class="cu-btn bg-red margin-tb-sm lg round" @click="equit">{{$t('index.outLogin')}}</view>
-		</view>
+		</view> -->
 	</view>
 	</view>
 </template>
@@ -180,15 +332,11 @@
 	export default {
 		data() {
 			return {
-				user:{
-					
+				user:{					
 				}
 			}
 		},
-		
 		onShow() {
-			
-			
 			this.user = uni.getStorageSync('userData');			
 		},
 		methods: {
@@ -217,27 +365,23 @@
 		display: flex;
 		flex-direction: row;
 		background-size: cover;
-		height: 280rpx;
+		height: 150rpx;
 		position: relative;
 		color: #000;
 		align-items: center;
 		justify-content: start;
 		padding: 0 40rpx;
 		background-color: #fff;
-
 	}
-
 	.tx {
-		width: 160rpx;
+		width: 100rpx;
 		border-radius: 50%;
 		border: 1px solid #e9e9e9;
 	}
-
 	.left {
 		display: flex;
 		flex-direction: column;
 	}
-
 	.avatar {
 		width: 160rpx;
 		height: 160rpx;
diff --git a/pages/home/orderManage.vue b/pages/home/orderManage.vue
index 6a8d160..4a01019 100644
--- a/pages/home/orderManage.vue
+++ b/pages/home/orderManage.vue
@@ -1,11 +1,20 @@
 <template>
 	<view>
+<!-- 		<form >
+			<view class="cu-form-group margin-top" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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>
+		</form>	 -->
+		
 		<scroll-view scroll-y class="page">
 			<view class="nav-list">
 				<!-- :url="'/pages' + item.url + '?param=' + item.param"  navigateTo-->
 				<view hover-class='none'  class="nav-li"  @click="toOrder(item)"
 					:class="'bg-'+item.color" :style="[{animation: 'show ' + ((index+1)*0.2+1) + 's 1'}]"
-					v-for="(item,index) in elements" :key="index">
+					v-for="(item,index) in elements2" :key="index">
 					<view class="nav-title">{{item.title}}</view>
 					<view class="nav-name">{{item.name}}</view>
 					<text :class="'cuIcon-' + item.cuIcon"></text>
@@ -31,7 +40,7 @@
 						title: '寰呭寘瑁呭叆搴撳崟',
 						name: 'pakinOrder',
 						color: 'blue',
-						url: `/phyz/waitOrder/waitOrderIn`
+						url: `/outbound/orderPick`
 					},
 					{
 						title: '寰呭寘瑁呭嚭搴撳崟',
diff --git a/pages/inbound/buffStore.vue b/pages/inbound/buffStore.vue
new file mode 100644
index 0000000..6ce4095
--- /dev/null
+++ b/pages/inbound/buffStore.vue
@@ -0,0 +1,309 @@
+<template>
+	<view class="has-foot">
+		<form>
+			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-grey margin-left">宸查�夌墿鏂欎俊鎭細{{container}}</view>
+			</view>
+			
+			<view class="cu-form-group margin-top">
+				<view class="title">绌烘《鎺ラ┏绔欑偣</view>
+				<input placeholder="璇锋壂鎻忕┖妗舵帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+				<!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+			</view>	
+			
+			<view class="cu-bar btn-group top margin-top">
+				<button class="cu-btn text-blue line-blue shadow" @click="clear">1.鍛煎彨绌烘《</button>
+				<!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">2.鍛煎彨琚嬭鏂版枡</button> -->
+<!-- 				<button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨琚嬭鏂版枡</button>
+				<button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨绌烘《</button> -->
+				<!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button> -->
+			</view>
+			
+			<view class="cu-form-group margin-top">
+							<view class="title">琚嬭鏂版枡鎺ラ┏绔欑偣</view>
+							<input placeholder="璇锋壂鎻忚瑁呮柊鏂欐帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+							<!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+						</view>	
+						
+						<view class="cu-bar btn-group top margin-top">
+							<!-- <button class="cu-btn text-blue line-blue shadow" @click="clear">1.鍛煎彨绌烘《</button> -->
+							<button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">2.鍛煎彨琚嬭鏂版枡</button>
+			<!-- 				<button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨琚嬭鏂版枡</button>
+							<button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨绌烘《</button> -->
+							<!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button> -->
+						</view>
+			
+			<view class="cu-form-group margin-top">
+				<view class="title">瀹瑰櫒鍙�</view>
+				<input placeholder="璇锋壂闇�瑕佸叆搴撳鍣ㄦ潯鐮�" v-model="container"></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>
+			
+
+			
+<!-- 			<view class="cu-form-group">
+				<view class="title">鐩爣搴撳尯</view>
+				<view style="width: 75%;">
+					<uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
+						placement="bottom" @change="selChange"></uni-data-select>
+				</view>
+			</view> -->
+			
+			<view class="cu-bar btn-group top margin-top">
+				<button class="cu-btn bg-green shadow-blur" @click="clear">3.妗惰鏂版枡鍏ュ簱</button>
+			</view>
+		</form>
+
+
+		<view class="cu-list det menu sm-border  padding">
+			<block v-for="(item, index) in list" :key="index">
+				<view class="cu-bar bg-white solid-bottom margin-top-sm">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+						<view class="text-blue">
+							{{`${item.maktx}`}}
+						</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-black">ASN:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.asnCode}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鎵规:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.batch}}</text>
+					</view>
+				</view>
+
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鏀惰揣鏁伴噺:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.anfme}}</text>
+					</view>
+				</view>
+
+			</block>
+		</view>
+
+
+<!-- 		<view class="cu-bar btn-group foot">
+			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+			<button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button>
+		</view> -->
+
+		
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				barcode: '',
+				areaName: '',
+				locCode: '',
+				container: '',
+				list: [],
+				range: [],
+				curCode: '',
+				whAreaId:'',
+				repeatClick: false,
+				
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+		},
+		mounted() {
+			this.getRece()
+			this.whAreaId = uni.getStorageSync('whAreaId')
+		},
+		methods: {	
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async search() {
+				let that = this
+				const {
+					code,
+					data,
+					msg
+				} = await request('/staBind/list', {
+					sta: this.barcode
+				})
+				if (code === 200) {	
+					if(data.list.length >0){
+						that.container = data.barcode						
+						that.list = data.list
+					}
+					that.range = data.warehouseAreasList.map(item => ({
+						value: item.id,
+						text: item.name
+					}));
+					that.whAreaId = data.area
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+			},
+
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				
+				this.container = ''
+				this.barcode = ''
+			},
+
+			open() {
+				this.$refs.popup.open()
+			},
+
+			close() {
+				this.$refs.popup.close()
+			},
+
+			popupSubmit() {
+				this.$refs.popup.close()
+			},
+			itemChange(el) {
+				this.curCode = el
+			},
+
+			async confirm() {				
+				if(this.barcode === '' || this.barcode ===null){
+					uni.showToast({
+						title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				}
+				if(this.whAreaId === '' || this.whAreaId ===null){
+					uni.showToast({
+						title: "鐩爣搴撳尯涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				} 
+				this.repeatClick = true
+				const {
+					code,
+					data,
+					msg
+				} = await request('/AGV/task/start',{						
+						sta: this.barcode,
+						area: this.whAreaId
+					}
+				)
+				if (code === 200) {
+					uni.showToast({
+						title: '鍚姩鎴愬姛'
+					})
+					this.clear()
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+				this.repeatClick = false
+			},
+			
+			async getRece() {				
+				const {
+					code,
+					data,
+					msg
+				} = await request('/areas/receipt', {}, 'get')
+				if (code === 200) {
+					this.range = data.map(item => ({
+						value: item.id,
+						text: item.warehouseId$ + "-- " + item.name
+					}));
+				}
+			},
+		}
+	}
+</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;
+	}
+
+	.uni-file-picker {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.uni-select__selector {
+		z-index: 999;
+	}
+
+	.tj {
+		height: auto;
+		padding: 6px 8px;
+		display: inline-block;
+		border-radius: 6px;
+	}
+
+	.item {
+		display: flex;
+		justify-content: center;
+	}
+
+	.item .cu-btn {
+		font-size: 26upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/inbound/orderIn.vue b/pages/inbound/orderIn.vue
new file mode 100644
index 0000000..850d251
--- /dev/null
+++ b/pages/inbound/orderIn.vue
@@ -0,0 +1,382 @@
+<template>
+	<view>
+<!-- 		<form >
+			<view class="cu-form-group margin-top" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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>
+		</form>	 -->
+		
+		<scroll-view scroll-y class="page">
+			<view class="nav-list">
+				<!-- :url="'/pages' + item.url + '?param=' + item.param"  navigateTo-->
+				<view hover-class='none'  class="nav-li"  @click="toOrder(item)"
+					:class="'bg-'+item.color" :style="[{animation: 'show ' + ((index+1)*0.2+1) + 's 1'}]"
+					v-for="(item,index) in elements2" :key="index">
+					<view class="nav-title">{{item.title}}</view>
+					<view class="nav-name">{{item.name}}</view>
+					<text :class="'cuIcon-' + item.cuIcon"></text>
+				</view>
+			</view>
+			<view class="cu-tabbar-height"></view>
+		</scroll-view>
+		<view style="height: 50rpx;"></view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				baseUrl: '',
+				token: '',
+				icon: '',
+				elements: [],
+				project: 'tzsk',
+				elements2: [
+					{
+						title: '寰呭寘瑁呭叆搴撳崟',
+						name: 'pakinOrder',
+						color: 'blue',
+						url: `/inbound/orderInExecute`
+					},
+					// {
+					// 	title: '寰呭寘瑁呭嚭搴撳崟',
+					// 	name: 'pakinOrder',
+					// 	color: 'blue',
+					// 	url: `/phyz/waitOrder/waitOrderOut`
+					// },
+					{
+						title: '閲囪喘鍏ュ簱鍗�',
+						name: 'pakinOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/inbound/orderInExecute`
+					},
+					// {
+					// 	title: '鍑哄簱鍗�',
+					// 	name: 'outOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/order/outOrder`
+					// },
+					// {
+					// 	title: '鍏ュ簱鍗曟祴璇曠敤',
+					// 	name: 'pakin',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/order/purchaseOrder`
+					// },
+					// {
+					// 	title: '閲囪喘鍑哄簱',
+					// 	name: 'outOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/orderOut/orderOutSelect`
+					// },
+					{
+						title: '鍗婃垚鍝佸叆搴撳崟',
+						name: 'bcpOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/inbound/orderInExecute`
+					},
+					{
+						title: '鍗婃垚鍝佸叆搴撳崟_鍚稿',
+						name: 'bcpOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/inbound/orderInExecute`
+					},
+					// {
+					// 	title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+					// 	name: 'bcpDbOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/bcp/bcpDbOrder`
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+					// 	name: 'bcpDbOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/bcp/bcpDbOrderV2`
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佸嚭搴撳崟',
+					// 	name: 'bcpOutOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/orderOut/bcpOrderOutSelect`
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佸嚭搴撳崟_浜屽巶',
+					// 	name: 'bcpOutOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/orderOut/bcpOrderOutSelect_2`,
+					// 	param: {orderType: [1,2,3]}
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佸姞宸ュ崟',
+					// 	name: 'processOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/processOrder/processOrder`
+					// },
+					{
+						title: '鍗婃垚鍝佸洖娴佸崟',
+						name: 'backStock',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/inbound/orderInExecute`
+					},
+					{
+						title: '鍏ュ簱鍗�',
+						name: 'orderIn',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/inbound/orderInExecute`
+					},
+					// {
+					// 	title: '鍑哄簱鍗�',
+					// 	name: 'orderOut',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/comOrder/orderOut`
+					// },
+					
+				],
+				menu: [],
+				colorList: ['cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive','cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive' ]
+			};
+		},
+		// onShow() {
+		// 	this.baseUrl = uni.getStorageSync('baseUrl');
+		// 	this.token = uni.getStorageSync('token');
+		// 	this.project = uni.getStorageSync('project')
+		// 	// this.getAuth()
+		// 	this.backGroundRepeat()
+		// },
+		onLoad(option) {
+			this.baseUrl = uni.getStorageSync('baseUrl');
+			this.token = uni.getStorageSync('token');
+			this.project = uni.getStorageSync('project');
+			this.menu = uni.getStorageSync('menu');
+			this.getAuth2(option.id)
+			this.backGroundRepeat()
+		},
+		methods: {
+			backGroundRepeat() {
+				let len = this.colorList.length
+				let i = 0
+				for (let k in this.elements2) {
+					if (i == len) {
+						i = 0
+					}
+					this.elements2[k].color = this.colorList[i]
+					i++
+				}
+			},
+			toOrder(item) { 
+				uni.navigateTo({
+					url: `/pages${item.url}`,
+					success(res) {
+						res.eventChannel.emit('param', {
+							param: item.param
+						})
+					}
+				})
+			},
+			getAuth2(id) {
+				let secMenu = []
+				for (let k of this.menu) {
+					if (id == k.id) {
+						secMenu = k.children
+					}
+				}
+				for (let i in secMenu) {
+					this.getIcon(secMenu[i].title)
+					// 鍏煎2025 02 18 鑿滃崟param
+					if (secMenu[i].param) {
+						this.elements.unshift({
+							title: secMenu[i].name,
+							name: secMenu[i].title,
+							color: this.colorList[i],
+							cuIcon: this.icon,
+							id: secMenu[i].id,
+							param: JSON.parse(secMenu[i].param),
+							url: `${secMenu[i].code}`
+						})
+					} else {
+						this.elements.unshift({
+							title: secMenu[i].name,
+							name: secMenu[i].title,
+							color: this.colorList[i],
+							cuIcon: this.icon,
+							id: secMenu[i].id,
+							url: `${secMenu[i].code}`
+						})
+					}
+				}
+				console.log(this.elements);
+			},
+			getAuth(id) {
+				let that = this
+				uni.request({
+					url: that.baseUrl + '/menu/pda/auth',
+					data: {level:2 ,id: id},
+					header: { 'token': uni.getStorageSync('token') },
+					method: 'POST',
+					success(res) {
+						console.log(res);
+						if (res.statusCode === 404) {
+							that.elements = that.elements2
+							return
+						}
+						res = res.data
+						that.elements = []
+						if (res.code === 200) {
+							if (res.data == undefined || res.data == null || res.data == "") {
+								if (res.data.length == 0) {
+									return
+								} else {
+									that.elements = that.elements2
+								}
+							}
+							for (var i = 0; i < res.data.length; i++) {
+								if (res.data.length < 0) {
+									break;
+								}
+								that.getIcon(res.data[i].title)
+								that.elements.unshift({
+									title: res.data[i].name,
+									name: res.data[i].title,
+									color: that.colorList[i],
+									cuIcon: that.icon,
+									url: `${res.data[i].code}`
+								})
+							}
+						} else if (res.code === 403) {
+							uni.showToast({
+								title: res.msg,
+								icon: "none",
+								position: 'top'
+							})
+							setTimeout(() => {
+								uni.reLaunch({
+									url: '../login/login'
+								});
+							}, 1000);
+						} else if(res.status === 404) {
+							that.elements = that.elements2
+							// uni.showToast({
+							// 	title: '榛樿涓婚〉',
+							// 	icon: "none",
+							// 	position: 'top'
+							// })
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: "none",
+								position: 'top'
+							})
+						}
+					},
+					fail(err) {
+						console.log(err);
+					}
+				})
+			},
+			getIcon(e) {
+				const ways = ['pakin','orderPakin','orderPutOn']
+				if (ways.includes(e)) {
+					this.icon = 'pullup'
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+	.page {
+		height: 100vh;
+	}
+
+	.bg-red {
+		background-color: #e54d42;
+		color: #ffffff;
+	}
+
+	.bg-orange {
+		background-color: #f37b1d;
+		color: #ffffff;
+	}
+
+	.bg-yellow {
+		background-color: #fbbd08;
+		color: #333333;
+	}
+
+	.bg-olive {
+		background-color: #8dc63f;
+		color: #ffffff;
+	}
+
+	.bg-green {
+		background-color: #39b54a;
+		color: #ffffff;
+	}
+
+	.bg-cyan {
+		background-color: #1cbbb4;
+		color: #ffffff;
+	}
+
+	.bg-blue {
+		background-color: #0081ff;
+		color: #ffffff;
+	}
+
+	.bg-purple {
+		background-color: #6739b6;
+		color: #ffffff;
+	}
+
+	.bg-mauve {
+		background-color: #9c26b0;
+		color: #ffffff;
+	}
+
+	.bg-pink {
+		background-color: #e03997;
+		color: #ffffff;
+	}
+
+	.bg-brown {
+		background-color: #a5673f;
+		color: #ffffff;
+	}
+
+	.bg-grey {
+		background-color: #8799a3;
+		color: #ffffff;
+	}
+
+	.bg-gray {
+		background-color: #f0f0f0;
+		color: #333333;
+	}
+
+	.bg-black {
+		background-color: #333333;
+		color: #ffffff;
+	}
+
+	.bg-white {
+		background-color: #ffffff;
+		color: #666666;
+	}
+</style>
diff --git a/pages/inbound/orderInExecute.vue b/pages/inbound/orderInExecute.vue
new file mode 100644
index 0000000..273e09a
--- /dev/null
+++ b/pages/inbound/orderInExecute.vue
@@ -0,0 +1,296 @@
+<template>
+	<view class="has-foot">
+		<form >
+			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-blue">&nbsp;璁㈠崟绫诲瀷锛氬緟鍖呰鍏ュ簱鍗�</view>				
+			</view>
+			<view class="cu-form-group" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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>
+		</form>	
+				
+
+		<view class="cu-list det menu sm-border padding">
+			<block  v-for="(item, index) in list" :key="index" >
+				<view class="cu-list det menu" @click="clickTaskItem(index)">
+				
+<!-- 				<view class="cu-bar bg-white solid-bottom">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+					</view>
+					<view class="content2">
+						<text class="text-gray"><text class="text-black ">{{item.status$}}</text></text>
+					</view>
+				</view> -->
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁㈠崟鍙凤細<text class="text-black">{{item.orderCode}}</text></text>
+					</view>
+<!-- 					<view class="content">
+						<text class="text-black">{{item.status$}}</text>
+					</view> -->
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁㈠崟鏃堕棿锛�<text class="text-black ">{{item.createTime$}}</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.workQty}}</text></text>
+					</view>
+					<view class="content">
+						<text class="text-gray">搴旀敹鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+					</view>	
+				</view>
+<!-- 				<view class="cu-item">
+					<view class="content">
+						<progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+					</view>
+				</view>	 -->				
+				</view>
+			</block>
+		</view>
+
+
+<!-- 		<view class="text-blue text-right padding-lr" v-show="isconfirm">
+			鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+		</view>
+
+		<view class="cu-form-group " v-show="isconfirm">
+			<view class="title">鏀惰揣鍖�</view>
+			<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+				@change="selChange"></uni-data-select>
+		</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-blue shadow-blur" @click="next">鍑哄簱</button>
+		</view> -->
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				isClickItem:false,
+				clickItem:'',
+				QRbarcode:null,
+				barcode: '',
+				whAreaId: '',
+				list: [],
+				range: [],
+				isconfirm: false,							
+				itemStyle: {
+				        backgroundColor: '#42b983',				        
+				        borderColor: '#42b983'
+				},
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+			allCount() {
+				return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+			}
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			clickTaskItem(index){
+				let that = this
+				uni.navigateTo({
+					url: "./orderInItem",
+					// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+					success: function(res) {
+						res.eventChannel.emit('checkItem', {
+							data: that.list[index]
+						})
+					}
+					
+				});				
+			},
+			typeChange(e){
+				this.typeSelect = e.value
+				this.search()
+			},
+			toOrderItem(item) {
+				uni.navigateTo({
+					url: `/pages/inbound/orderInItem`,
+					success(res) {
+						res.eventChannel.emit('param', {
+							param: item.param
+						})
+					}
+				})
+			},
+			async search() {
+				this.list = []
+				if(this.barcode === '' || this.barcode ===null){
+					this.barcode = 'OS2509030230';
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/outStockItem/page',{
+					orderId:this.barcode
+				}	
+				)
+				if (code === 200) {					
+					if (Object.keys(data).length === 0){
+						uni.showToast({
+							title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+							icon: "none",
+							position: 'top'
+						})
+					}
+					this.list.push(...data)
+					
+				}else if(code == 401){
+					setTimeout(() => {
+						uni.removeStorageSync('token');
+						uni.reLaunch({
+							url: "/pages/login/login"
+						});
+					}, 1000);
+				}else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+						position: 'top'
+					})
+				}
+
+
+			},
+			clearCode() {
+				this.barcode = ''
+			},
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.barcode = ''
+			},
+			next() {
+				if (this.list.length) {
+					this.isconfirm = true
+				} else {
+					uni.showToast({
+						icon: "none",
+						title: '鏈�夌墿鏂欐爣绛�'
+					})
+				}
+			},
+			prev() {
+				this.isconfirm = false
+			},
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async confirm() {
+				const newArr = this.list.map(item => {
+					return {
+						...item,
+						receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+					};
+				});
+				if (this.whAreaId === '') {
+					uni.showToast({
+						icon: "none",
+						title: '璇烽�夋嫨鏀惰揣鍖�'
+					})
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						whAreaId: this.whAreaId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鏀惰揣鎴愬姛'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}
+
+				}
+			},
+			
+			DateChange(e, item) {
+				item.prodTime = e.detail.value
+			}
+		}
+	}
+</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;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/inbound/orderInItem.vue b/pages/inbound/orderInItem.vue
new file mode 100644
index 0000000..1044ea7
--- /dev/null
+++ b/pages/inbound/orderInItem.vue
@@ -0,0 +1,291 @@
+<template>
+	<view class="has-foot">
+		<form >
+			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-gray">&nbsp;璁㈠崟鍙凤細IN250807152830</view>				
+			</view>
+<!-- 			<view class="cu-form-group" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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> -->
+		</form>	
+				
+
+		<view class="cu-list det menu sm-border  padding">
+			<block  v-for="(item, index) in list" :key="index" >
+				<view  class="cu-list det menu  "  @click="clickTaskItem(index)">
+					
+				
+				<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 margin-right-sm"><text class="text-black ">{{item.status$}}</text></text>
+					</view>
+				</view>
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁″垝璺熻釜鍙凤細<text class="text-black ">{{item.orderCode}}</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.workQty}}</text></text>
+					</view>
+					<view class="content">
+						<text class="text-gray">搴旀敹鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+					</view>	
+				</view>	
+				<!-- <view class="cu-item">						
+					<view class="content">
+						<text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+					</view>
+				</view> -->
+				<view class="cu-item">
+					<view class="content">
+						<progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+					</view>
+				</view>
+					
+				</view>
+			</block>
+		</view>
+
+
+<!-- 		<view class="text-blue text-right padding-lr" v-show="isconfirm">
+			鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+		</view>
+
+		<view class="cu-form-group " v-show="isconfirm">
+			<view class="title">鏀惰揣鍖�</view>
+			<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+				@change="selChange"></uni-data-select>
+		</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-blue shadow-blur" @click="next">鍒锋柊</button>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				isClickItem:false,
+				clickItem:'',
+				QRbarcode:null,
+				barcode: '',
+				whAreaId: '',
+				list: [],
+				range: [],
+				isconfirm: false,							
+				itemStyle: {
+				        backgroundColor: '#42b983',				        
+				        borderColor: '#42b983'
+				},
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+			allCount() {
+				return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+			}
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			clickTaskItem(index){
+				let that = this
+				
+				// uni.navigateTo({
+				// 	url: "./orderInItem",
+				// 	// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+				// 	success: function(res) {
+				// 		res.eventChannel.emit('checkItem', {
+				// 			data: that.list[index]
+				// 		})
+				// 	}
+					
+				// });				
+			},
+			typeChange(e){
+				this.typeSelect = e.value
+				this.search()
+			},
+			async search() {
+				this.list = []
+				if(this.barcode === '' || this.barcode ===null){
+					this.barcode = 'OS2509030230';
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/outStockItem/page',{
+					orderId:this.barcode
+				}	
+				)
+				if (code === 200) {					
+					if (Object.keys(data).length === 0){
+						uni.showToast({
+							title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+							icon: "none",
+							position: 'top'
+						})
+					}
+					this.list.push(...data)
+					
+				}else if(code == 401){
+					setTimeout(() => {
+						uni.removeStorageSync('token');
+						uni.reLaunch({
+							url: "/pages/login/login"
+						});
+					}, 1000);
+				}else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+						position: 'top'
+					})
+				}
+
+
+			},
+			clearCode() {
+				this.barcode = ''
+			},
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.barcode = ''
+			},
+			next() {
+				if (this.list.length) {
+					this.isconfirm = true
+				} else {
+					uni.showToast({
+						icon: "none",
+						title: '鏈�夌墿鏂欐爣绛�'
+					})
+				}
+			},
+			prev() {
+				this.isconfirm = false
+			},
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async confirm() {
+				const newArr = this.list.map(item => {
+					return {
+						...item,
+						receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+					};
+				});
+				if (this.whAreaId === '') {
+					uni.showToast({
+						icon: "none",
+						title: '璇烽�夋嫨鏀惰揣鍖�'
+					})
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						whAreaId: this.whAreaId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鏀惰揣鎴愬姛'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}
+
+				}
+			},
+			
+			DateChange(e, item) {
+				item.prodTime = e.detail.value
+			}
+		}
+	}
+</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;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/inspect/bad.vue b/pages/inspect/bad.vue
index 5e3b9ea..cbf4133 100644
--- a/pages/inspect/bad.vue
+++ b/pages/inspect/bad.vue
@@ -91,7 +91,8 @@
 		</view>
 
 		<view class="cu-bar btn-group foot">
-			<button class="cu-btn bg-blue shadow-blur" @click="confirm">鎻愪氦</button>
+			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+			<button class="cu-btn bg-blue shadow-blur" @click="confirm">涓婇攣</button>
 		</view>
 
 	</view>
diff --git a/pages/inspect/check.vue b/pages/inspect/check.vue
index f3f1bbb..a8ebbce 100644
--- a/pages/inspect/check.vue
+++ b/pages/inspect/check.vue
@@ -2,14 +2,14 @@
 	<view class="has-foot">
 		<form>
 			<view class="cu-form-group margin-top">
-				<view class="title">璐ㄦ鍗�</view>
-				<input placeholder="璇锋壂鎻忚川妫�鍗�" v-model="isptCode" focus></input>
+				<view class="title">瀹瑰櫒鍙�</view>
+				<input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="isptCode" focus></input>
 				<text class='cuIcon-search text-blue' @click="search"></text>
 			</view>
 
 			<view class="cu-form-group ">
-				<view class="title">鐗╂枡鐮�</view>
-				<input placeholder="璇锋壂鎻忕墿鏂欑爜" v-model="barcode"></input>
+				<view class="title">鐗╂枡鍙�</view>
+				<input placeholder="璇锋壂鎻忕墿鏂欑紪鐮�" v-model="barcode"></input>
 				<text class='cuIcon-search text-blue' @click="scrollTo"></text>
 			</view>
 		</form>
@@ -115,7 +115,7 @@
 		</view>
 		<view class="cu-bar btn-group foot">
 			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
-			<button class="cu-btn bg-blue shadow-blur" @click="confirm">鎻愪氦</button>
+			<button class="cu-btn bg-blue shadow-blur" @click="confirm">瑙i攣</button>
 		</view>
 
 	</view>
diff --git a/pages/listing/labour.vue b/pages/listing/labour.vue
index 5b27e05..b9a05a4 100644
--- a/pages/listing/labour.vue
+++ b/pages/listing/labour.vue
@@ -2,13 +2,14 @@
 	<view class="has-foot">
 		<form>
 			<view class="cu-form-group ">
-				<view class="title">瀹瑰櫒鐮�</view>
-				<input placeholder="璇锋壂鎻忓鍣ㄧ爜" v-model="container"></input>
+				<view class="title">瀹瑰櫒鍙�</view>
+				<input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="container"></input>
 				<text class='cuIcon-search text-blue' @click="search"></text>
 			</view>
 			<view class="cu-form-group">
-				<view class="title">搴撲綅鐮�</view>
-				<input placeholder="璇锋壂鎻忓簱浣嶇爜" v-model="locCode"></input>
+				<view class="title">搴撲綅鍙�</view>
+				<input placeholder="璇锋壂鎻忓簱浣嶇紪鐮�" v-model="locCode"></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
 			</view>
 		</form>
 		<view class="cu-list det menu sm-border  padding">
diff --git a/pages/listing/matnrPalletising.vue b/pages/listing/matnrPalletising.vue
index 50618e4..e4d4f34 100644
--- a/pages/listing/matnrPalletising.vue
+++ b/pages/listing/matnrPalletising.vue
@@ -4,24 +4,25 @@
 		
 		<form>
 			<view class="cu-form-group margin-top">
-				<view class="title">瀹瑰櫒鍙�</view>
-				<input placeholder="璇锋壂鎻忓鍣ㄥ彿" v-model="container" focus></input>
-				<text class='cuIcon-search text-blue' @click="getList"></text>
-			</view>			
-			<view class="cu-form-group">
-				<view class="title">鐗╂枡缂栫爜</view>
-				<input placeholder="璇锋壂鎻忕墿鏂欑紪鐮�" v-model="matnrCode"></input>
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇疯緭鍏ヨ鍗曞彿" v-model="asnCode"></input>
 				<text class='cuIcon-search text-blue' @click="search"></text>
 			</view>
 			<view class="cu-form-group">
-				<view class="title">ASN鍗曞彿</view>
-				<input placeholder="璇疯緭鍏SN鍗曞彿" v-model="asnCode"></input>
+				<view class="title">瀹瑰櫒鍙�</view>
+				<input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="container" focus></input>
+				<text class='cuIcon-search text-blue' @click="getList"></text>
+			</view>			
+			<view class="cu-form-group">
+				<view class="title">鐗╂枡鍙�</view>
+				<input placeholder="璇锋壂鎻忕墿鏂欑紪鐮�" v-model="matnrCode"></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
 			</view>
 		</form>
 
 		<view class="flex solid-bottom padding-sm justify-between">
-			<view class="text-blue">鐗╂枡鎬荤被:{{list.length}}</view>
-			<view class="text-blue">缁勭洏鎬绘暟:{{allCount}}</view>
+			<view class="text-blue">鐗╂枡绉嶇被:{{list.length}}</view>
+			<view class="text-blue">缁勬墭鎬绘暟:{{allCount}}</view>
 		</view>
 		
 		</view>
@@ -115,7 +116,7 @@
 		</view>
 		<view class="cu-bar btn-group foot">
 			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
-			<button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">缁勭洏</button>
+			<button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">缁勬墭</button>
 		</view>
 	</view>
 </template>
diff --git a/pages/listing/unPakin.vue b/pages/listing/unPakin.vue
index dab82c2..77cf212 100644
--- a/pages/listing/unPakin.vue
+++ b/pages/listing/unPakin.vue
@@ -2,21 +2,24 @@
 	<view class="has-foot">
 		<view>
 			<form>
-				<view class="cu-form-group ">
+				<view class="cu-form-group margin-top">
 					<view class="title">瀹瑰櫒鍙�</view>
-					<input placeholder="璇锋壂鎻忓鍣ㄥ彿" v-model="container" focus></input>
+					<input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="container" focus></input>
 					<text class='cuIcon-search text-blue' @click="getList"></text>
 				</view>
+				<view class="flex solid-bottom padding-sm justify-between">
+					<view class="text-blue margin-left">鐗╂枡淇℃伅:{{container}}</view>				
+				</view>
 				<view class="cu-form-group">
-					<view class="title">缂栫爜</view>
-					<input placeholder="璇锋壂鎻忕粍鎵樻。缂栫爜" v-model="pkCode"></input>
+					<view class="title">璁㈠崟鍙�</view>
+					<input placeholder="璇锋悳绱㈣鍗曞彿" v-model="pkCode"></input>
 					<text class='cuIcon-search text-blue' @click="getList"></text>
 				</view>
 			</form>
-			<view class="flex solid-bottom padding-sm justify-between">
-				<view class="text-blue">鐗╂枡鎬荤被:{{list.length}}</view>
+<!-- 			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-blue">鐗╂枡绉嶇被:{{list.length}}</view>
 				<view class="text-blue">缁勭洏鎬绘暟:{{allCount}}</view>
-			</view>
+			</view> -->
 		</view>
 		<view class="padding-lr margin-top-sm">
 			<block v-for="(item, index) in list" :key="index">
diff --git a/pages/outbound/matDirectDelivery.vue b/pages/outbound/matDirectDelivery.vue
new file mode 100644
index 0000000..30000b4
--- /dev/null
+++ b/pages/outbound/matDirectDelivery.vue
@@ -0,0 +1,283 @@
+<template>
+	<view class="has-foot">
+		<form>
+			<view class="cu-form-group margin-top">
+				<view class="title">鎺ラ┏绔欑偣</view>
+				<input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+				<!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+			</view>	
+			<view class="cu-form-group">
+				<view class="title">瀹瑰櫒鍙�</view>
+				<input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="barcode" ></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>	
+<!-- 			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-blue margin-left">瀹瑰櫒鐮�:{{container}}</view>				
+			</view> -->
+			<view class="cu-form-group">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" ></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>	
+			<view class="cu-form-group">
+				<view class="title">鐩爣绔欑偣</view>
+				<view style="width: 75%;">
+					<uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
+						placement="bottom" @change="selChange"></uni-data-select>
+				</view>
+			</view>
+		</form>
+
+
+		<view class="cu-list det menu sm-border  padding">
+			<block v-for="(item, index) in list" :key="index">
+				<view class="cu-bar bg-white solid-bottom margin-top-sm">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+						<view class="text-blue">
+							{{`${item.maktx}`}}
+						</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-black">ASN:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.asnCode}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鎵规:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.batch}}</text>
+					</view>
+				</view>
+
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鏀惰揣鏁伴噺:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.anfme}}</text>
+					</view>
+				</view>
+
+			</block>
+		</view>
+
+
+		<view class="cu-bar btn-group foot">
+			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+			<button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">杩愰��</button>
+		</view>
+
+		
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				barcode: '',
+				areaName: '',
+				locCode: '',
+				container: '',
+				list: [],
+				range: [],
+				curCode: '',
+				whAreaId:'',
+				repeatClick: false,
+				
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+		},
+		mounted() {
+			this.getRece()
+			this.whAreaId = uni.getStorageSync('whAreaId')
+		},
+		methods: {	
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async search() {
+				let that = this
+				const {
+					code,
+					data,
+					msg
+				} = await request('/staBind/list', {
+					sta: this.barcode
+				})
+				if (code === 200) {	
+					if(data.list.length >0){
+						that.container = data.barcode						
+						that.list = data.list
+					}
+					that.range = data.warehouseAreasList.map(item => ({
+						value: item.id,
+						text: item.name
+					}));
+					that.whAreaId = data.area
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+			},
+
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				
+				this.container = ''
+				this.barcode = ''
+			},
+
+			open() {
+				this.$refs.popup.open()
+			},
+
+			close() {
+				this.$refs.popup.close()
+			},
+
+			popupSubmit() {
+				this.$refs.popup.close()
+			},
+			itemChange(el) {
+				this.curCode = el
+			},
+
+			async confirm() {				
+				if(this.barcode === '' || this.barcode ===null){
+					uni.showToast({
+						title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				}
+				if(this.whAreaId === '' || this.whAreaId ===null){
+					uni.showToast({
+						title: "鐩爣搴撳尯涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				} 
+				this.repeatClick = true
+				const {
+					code,
+					data,
+					msg
+				} = await request('/AGV/task/start',{						
+						sta: this.barcode,
+						area: this.whAreaId
+					}
+				)
+				if (code === 200) {
+					uni.showToast({
+						title: '鍚姩鎴愬姛'
+					})
+					this.clear()
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+				this.repeatClick = false
+			},
+			
+			async getRece() {				
+				const {
+					code,
+					data,
+					msg
+				} = await request('/areas/receipt', {}, 'get')
+				if (code === 200) {
+					this.range = data.map(item => ({
+						value: item.id,
+						text: item.warehouseId$ + "-- " + item.name
+					}));
+				}
+			},
+		}
+	}
+</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;
+	}
+
+	.uni-file-picker {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.uni-select__selector {
+		z-index: 999;
+	}
+
+	.tj {
+		height: auto;
+		padding: 6px 8px;
+		display: inline-block;
+		border-radius: 6px;
+	}
+
+	.item {
+		display: flex;
+		justify-content: center;
+	}
+
+	.item .cu-btn {
+		font-size: 26upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/outbound/matPreparation.vue b/pages/outbound/matPreparation.vue
new file mode 100644
index 0000000..5216d16
--- /dev/null
+++ b/pages/outbound/matPreparation.vue
@@ -0,0 +1,287 @@
+<template>
+	<view class="has-foot">
+		<form >
+			<view class="cu-form-group margin-top" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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>
+		</form>	
+				
+
+		<view class="cu-list det menu sm-border  padding">
+			<block  v-for="(item, index) in list" :key="index">
+				<view  class="cu-list det menu  "  @click="clickTaskItem(index)">
+					
+				
+<!-- 				<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.status$}}</text></text>
+					</view>
+				</view> -->
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">澶囨枡鍗曞彿锛�<text class="text-black ">{{item.orderCode}}</text></text>
+					</view>						
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">澶囨枡鍗曟椂闂达細<text class="text-black ">{{item.createTime$}}</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.workQty}}</text></text>
+					</view>
+					<view class="content">
+						<text class="text-gray">搴斿鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+					</view>	
+				</view>	
+<!-- 				<view class="cu-item">						
+					<view class="content">
+						<text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+					</view>
+				</view> -->
+	<!-- 			<view class="cu-item">
+					<view class="content">
+						<progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+					</view>
+				</view> -->
+					
+				</view>
+			</block>
+		</view>
+
+
+<!-- 		<view class="text-blue text-right padding-lr" v-show="isconfirm">
+			鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+		</view>
+
+		<view class="cu-form-group " v-show="isconfirm">
+			<view class="title">鏀惰揣鍖�</view>
+			<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+				@change="selChange"></uni-data-select>
+		</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-blue shadow-blur" @click="next">鍑哄簱</button>
+		</view> -->
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				isClickItem:false,
+				clickItem:'',
+				QRbarcode:null,
+				barcode: '',
+				whAreaId: '',
+				list: [],
+				range: [],
+				isconfirm: false,							
+				itemStyle: {
+				        backgroundColor: '#42b983',				        
+				        borderColor: '#42b983'
+				},
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+			allCount() {
+				return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+			}
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			clickTaskItem(index){
+				let that = this
+				uni.navigateTo({
+					url: "./matPreparationItem",
+					// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+					success: function(res) {
+						res.eventChannel.emit('checkItem', {
+							data: that.list[index]
+						})
+					}
+					
+				});
+			},
+			typeChange(e){
+				this.typeSelect = e.value
+				this.search()
+			},
+			async search() {
+				this.list = []
+				if(this.barcode === '' || this.barcode ===null){
+					this.barcode = 'OS2509030230';
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/outStockItem/page',{
+					orderId:this.barcode
+				}	
+				)
+				if (code === 200) {					
+					if (Object.keys(data).length === 0){
+						uni.showToast({
+							title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+							icon: "none",
+							position: 'top'
+						})
+					}
+					this.list.push(...data)
+					
+				}else if(code == 401){
+					setTimeout(() => {
+						uni.removeStorageSync('token');
+						uni.reLaunch({
+							url: "/pages/login/login"
+						});
+					}, 1000);
+				}else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+						position: 'top'
+					})
+				}
+
+
+			},
+			clearCode() {
+				this.barcode = ''
+			},
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.barcode = ''
+			},
+			next() {
+				if (this.list.length) {
+					this.isconfirm = true
+				} else {
+					uni.showToast({
+						icon: "none",
+						title: '鏈�夌墿鏂欐爣绛�'
+					})
+				}
+			},
+			prev() {
+				this.isconfirm = false
+			},
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async confirm() {
+				const newArr = this.list.map(item => {
+					return {
+						...item,
+						receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+					};
+				});
+				if (this.whAreaId === '') {
+					uni.showToast({
+						icon: "none",
+						title: '璇烽�夋嫨鏀惰揣鍖�'
+					})
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						whAreaId: this.whAreaId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鏀惰揣鎴愬姛'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}
+
+				}
+			},
+			
+			DateChange(e, item) {
+				item.prodTime = e.detail.value
+			}
+		}
+	}
+</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;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/outbound/matPreparationItem.vue b/pages/outbound/matPreparationItem.vue
new file mode 100644
index 0000000..98a0809
--- /dev/null
+++ b/pages/outbound/matPreparationItem.vue
@@ -0,0 +1,329 @@
+<template>
+	<view class="has-foot">
+		<form>
+			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-grey margin-left">鐗╂枡娓呭崟锛�1銆佹媺鏉� 10涓� 2銆佺毊濂� 2绫�</view>
+				<!-- <view class="text-grey margin-left">  2銆佺毊濂� 2绫�</view> -->
+				
+			</view>
+			
+			<view class="cu-form-group margin-top">
+							<view class="title">澶囨枡鎺ラ┏绔欑偣</view>
+							<input placeholder="璇锋壂鎻忓鏂欐帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+							<!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+						</view>	
+						
+						<view class="cu-bar btn-group top margin-top">
+							<!-- <button class="cu-btn text-blue line-blue shadow" @click="clear">1.鍛煎彨绌烘《</button> -->
+							<button class="cu-btn text-blue line-blue shadow" :disabled="repeatClick" @click="confirm">1.鍛煎彨澶囨枡</button>
+			<!-- 				<button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨琚嬭鏂版枡</button>
+							<button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨绌烘《</button> -->
+							<!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button> -->
+						</view>
+			
+			
+			<view class="cu-form-group margin-top">
+				<view class="title">绌烘枡鏋舵帴椹崇珯鐐�</view>
+				<input placeholder="璇锋壂鎻忕┖鏂欐灦鎺ラ┏绔欑偣鏉$爜" v-model="barcode" ></input>
+				<!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+			</view>	
+			
+			<view class="cu-bar btn-group top margin-top">
+				<button class="cu-btn bg-blue shadow-blur" @click="clear">2.鍛煎彨绌烘枡鏋�</button>
+				<!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">2.鍛煎彨琚嬭鏂版枡</button> -->
+<!-- 				<button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨琚嬭鏂版枡</button>
+				<button class="ccu-btn bg-blue shadow-blur shadow-blur" @click="clear">鍛煎彨绌烘《</button> -->
+				<!-- <button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button> -->
+			</view>
+			
+
+			<view class="cu-form-group margin-top">
+				<view class="title">澶囨枡鏋跺彿</view>
+				<input placeholder="璇锋壂澶囨枡瀹屾垚鐨勬枡鏋舵潯鐮�" v-model="container"></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>
+			
+			<view class="cu-form-group">
+				<view class="title">澶囨枡鏋舵帴椹崇珯鐐�</view>
+				<input placeholder="璇锋壂澶囨枡鏋舵帴椹崇珯鐐规潯鐮�" v-model="container"></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>
+			
+
+			
+<!-- 			<view class="cu-form-group">
+				<view class="title">鐩爣搴撳尯</view>
+				<view style="width: 75%;">
+					<uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
+						placement="bottom" @change="selChange"></uni-data-select>
+				</view>
+			</view> -->
+			
+			<view class="cu-bar btn-group top margin-top">
+				<button class="cu-btn bg-green shadow-blur" @click="clear">3.瀹屾垚澶囨枡鍥炲簱</button>
+			</view>
+			
+			<view class="flex solid-bottom padding-sm justify-between margin-top-sm">
+				<view class="text-grey margin-left">鍓╀綑鐗╂枡娓呭崟锛�1銆佹媺鏉� 2涓� 2銆佺毊濂� 1绫�</view>
+				<!-- <view class="text-grey margin-left">  2銆佺毊濂� 2绫�</view> -->
+				
+			</view>
+			
+			<view class="cu-bar btn-group top margin-top">
+				<button class="cu-btn bg-yellow shadow-blur" @click="clear">4.浣欐枡鍥炲簱</button>
+			</view>
+		</form>
+
+
+		<view class="cu-list det menu sm-border  padding">
+			<block v-for="(item, index) in list" :key="index">
+				<view class="cu-bar bg-white solid-bottom margin-top-sm">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+						<view class="text-blue">
+							{{`${item.maktx}`}}
+						</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-black">ASN:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.asnCode}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鎵规:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.batch}}</text>
+					</view>
+				</view>
+
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鏀惰揣鏁伴噺:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.anfme}}</text>
+					</view>
+				</view>
+
+			</block>
+		</view>
+
+
+<!-- 		<view class="cu-bar btn-group foot">
+			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+			<button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">鍏ュ簱</button>
+		</view> -->
+
+		
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				barcode: '',
+				areaName: '',
+				locCode: '',
+				container: '',
+				list: [],
+				range: [],
+				curCode: '',
+				whAreaId:'',
+				repeatClick: false,
+				
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+		},
+		mounted() {
+			this.getRece()
+			this.whAreaId = uni.getStorageSync('whAreaId')
+		},
+		methods: {	
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async search() {
+				let that = this
+				const {
+					code,
+					data,
+					msg
+				} = await request('/staBind/list', {
+					sta: this.barcode
+				})
+				if (code === 200) {	
+					if(data.list.length >0){
+						that.container = data.barcode						
+						that.list = data.list
+					}
+					that.range = data.warehouseAreasList.map(item => ({
+						value: item.id,
+						text: item.name
+					}));
+					that.whAreaId = data.area
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+			},
+
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				
+				this.container = ''
+				this.barcode = ''
+			},
+
+			open() {
+				this.$refs.popup.open()
+			},
+
+			close() {
+				this.$refs.popup.close()
+			},
+
+			popupSubmit() {
+				this.$refs.popup.close()
+			},
+			itemChange(el) {
+				this.curCode = el
+			},
+
+			async confirm() {				
+				if(this.barcode === '' || this.barcode ===null){
+					uni.showToast({
+						title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				}
+				if(this.whAreaId === '' || this.whAreaId ===null){
+					uni.showToast({
+						title: "鐩爣搴撳尯涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				} 
+				this.repeatClick = true
+				const {
+					code,
+					data,
+					msg
+				} = await request('/AGV/task/start',{						
+						sta: this.barcode,
+						area: this.whAreaId
+					}
+				)
+				if (code === 200) {
+					uni.showToast({
+						title: '鍚姩鎴愬姛'
+					})
+					this.clear()
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+				this.repeatClick = false
+			},
+			
+			async getRece() {				
+				const {
+					code,
+					data,
+					msg
+				} = await request('/areas/receipt', {}, 'get')
+				if (code === 200) {
+					this.range = data.map(item => ({
+						value: item.id,
+						text: item.warehouseId$ + "-- " + item.name
+					}));
+				}
+			},
+		}
+	}
+</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;
+	}
+
+	.uni-file-picker {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.uni-select__selector {
+		z-index: 999;
+	}
+
+	.tj {
+		height: auto;
+		padding: 6px 8px;
+		display: inline-block;
+		border-radius: 6px;
+	}
+
+	.item {
+		display: flex;
+		justify-content: center;
+	}
+
+	.item .cu-btn {
+		font-size: 26upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/outbound/orderOut.vue b/pages/outbound/orderOut.vue
new file mode 100644
index 0000000..5d2e469
--- /dev/null
+++ b/pages/outbound/orderOut.vue
@@ -0,0 +1,382 @@
+<template>
+	<view>
+<!-- 		<form >
+			<view class="cu-form-group margin-top" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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>
+		</form>	 -->
+		
+		<scroll-view scroll-y class="page">
+			<view class="nav-list">
+				<!-- :url="'/pages' + item.url + '?param=' + item.param"  navigateTo-->
+				<view hover-class='none'  class="nav-li"  @click="toOrder(item)"
+					:class="'bg-'+item.color" :style="[{animation: 'show ' + ((index+1)*0.2+1) + 's 1'}]"
+					v-for="(item,index) in elements2" :key="index">
+					<view class="nav-title">{{item.title}}</view>
+					<view class="nav-name">{{item.name}}</view>
+					<text :class="'cuIcon-' + item.cuIcon"></text>
+				</view>
+			</view>
+			<view class="cu-tabbar-height"></view>
+		</scroll-view>
+		<view style="height: 50rpx;"></view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				baseUrl: '',
+				token: '',
+				icon: '',
+				elements: [],
+				project: 'tzsk',
+				elements2: [
+					// {
+					// 	title: '寰呭寘瑁呭叆搴撳崟',
+					// 	name: 'pakinOrder',
+					// 	color: 'blue',
+					// 	url: `/outbound/orderPick`
+					// },
+					{
+						title: '寰呭寘瑁呭嚭搴撳崟',
+						name: 'pakinOrder',
+						color: 'blue',
+						url: `/outbound/orderPick`
+					},
+					// {
+					// 	title: '閲囪喘鍏ュ簱鍗�',
+					// 	name: 'pakinOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/order/pakinOrderSelect`
+					// },
+					// {
+					// 	title: '鍑哄簱鍗�',
+					// 	name: 'outOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/order/outOrder`
+					// },
+					// {
+					// 	title: '鍏ュ簱鍗曟祴璇曠敤',
+					// 	name: 'pakin',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/order/purchaseOrder`
+					// },
+					{
+						title: '閲囪喘鍑哄簱',
+						name: 'outOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/outbound/orderPick`
+					},
+					// {
+					// 	title: '鍗婃垚鍝佸叆搴撳崟',
+					// 	name: 'bcpOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/bcp/bcpOrder`
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佸叆搴撳崟_鍚稿',
+					// 	name: 'bcpOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/bcp/bcpOrder_xs`
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+					// 	name: 'bcpDbOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/bcp/bcpDbOrder`
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+					// 	name: 'bcpDbOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/bcp/bcpDbOrderV2`
+					// },
+					{
+						title: '鍗婃垚鍝佸嚭搴撳崟',
+						name: 'bcpOutOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/outbound/orderPick`
+					},
+					{
+						title: '鍗婃垚鍝佸嚭搴撳崟_浜屽巶',
+						name: 'bcpOutOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/outbound/orderPick`,
+						param: {orderType: [1,2,3]}
+					},
+					{
+						title: '鍗婃垚鍝佸姞宸ュ崟',
+						name: 'processOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/outbound/orderPick`
+					},
+					// {
+					// 	title: '鍗婃垚鍝佸洖娴佸崟',
+					// 	name: 'backStock',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/backStock/backStocksOrder`
+					// },
+					// {
+					// 	title: '鍏ュ簱鍗�',
+					// 	name: 'orderIn',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/comOrder/orderIn`
+					// },
+					{
+						title: '鍑哄簱鍗�',
+						name: 'orderOut',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/outbound/orderPick`
+					},
+					
+				],
+				menu: [],
+				colorList: ['cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive','cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive' ]
+			};
+		},
+		// onShow() {
+		// 	this.baseUrl = uni.getStorageSync('baseUrl');
+		// 	this.token = uni.getStorageSync('token');
+		// 	this.project = uni.getStorageSync('project')
+		// 	// this.getAuth()
+		// 	this.backGroundRepeat()
+		// },
+		onLoad(option) {
+			this.baseUrl = uni.getStorageSync('baseUrl');
+			this.token = uni.getStorageSync('token');
+			this.project = uni.getStorageSync('project');
+			this.menu = uni.getStorageSync('menu');
+			this.getAuth2(option.id)
+			this.backGroundRepeat()
+		},
+		methods: {
+			backGroundRepeat() {
+				let len = this.colorList.length
+				let i = 0
+				for (let k in this.elements2) {
+					if (i == len) {
+						i = 0
+					}
+					this.elements2[k].color = this.colorList[i]
+					i++
+				}
+			},
+			toOrder(item) { 
+				uni.navigateTo({
+					url: `/pages${item.url}`,
+					success(res) {
+						res.eventChannel.emit('param', {
+							param: item.param
+						})
+					}
+				})
+			},
+			getAuth2(id) {
+				let secMenu = []
+				for (let k of this.menu) {
+					if (id == k.id) {
+						secMenu = k.children
+					}
+				}
+				for (let i in secMenu) {
+					this.getIcon(secMenu[i].title)
+					// 鍏煎2025 02 18 鑿滃崟param
+					if (secMenu[i].param) {
+						this.elements.unshift({
+							title: secMenu[i].name,
+							name: secMenu[i].title,
+							color: this.colorList[i],
+							cuIcon: this.icon,
+							id: secMenu[i].id,
+							param: JSON.parse(secMenu[i].param),
+							url: `${secMenu[i].code}`
+						})
+					} else {
+						this.elements.unshift({
+							title: secMenu[i].name,
+							name: secMenu[i].title,
+							color: this.colorList[i],
+							cuIcon: this.icon,
+							id: secMenu[i].id,
+							url: `${secMenu[i].code}`
+						})
+					}
+				}
+				console.log(this.elements);
+			},
+			getAuth(id) {
+				let that = this
+				uni.request({
+					url: that.baseUrl + '/menu/pda/auth',
+					data: {level:2 ,id: id},
+					header: { 'token': uni.getStorageSync('token') },
+					method: 'POST',
+					success(res) {
+						console.log(res);
+						if (res.statusCode === 404) {
+							that.elements = that.elements2
+							return
+						}
+						res = res.data
+						that.elements = []
+						if (res.code === 200) {
+							if (res.data == undefined || res.data == null || res.data == "") {
+								if (res.data.length == 0) {
+									return
+								} else {
+									that.elements = that.elements2
+								}
+							}
+							for (var i = 0; i < res.data.length; i++) {
+								if (res.data.length < 0) {
+									break;
+								}
+								that.getIcon(res.data[i].title)
+								that.elements.unshift({
+									title: res.data[i].name,
+									name: res.data[i].title,
+									color: that.colorList[i],
+									cuIcon: that.icon,
+									url: `${res.data[i].code}`
+								})
+							}
+						} else if (res.code === 403) {
+							uni.showToast({
+								title: res.msg,
+								icon: "none",
+								position: 'top'
+							})
+							setTimeout(() => {
+								uni.reLaunch({
+									url: '../login/login'
+								});
+							}, 1000);
+						} else if(res.status === 404) {
+							that.elements = that.elements2
+							// uni.showToast({
+							// 	title: '榛樿涓婚〉',
+							// 	icon: "none",
+							// 	position: 'top'
+							// })
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: "none",
+								position: 'top'
+							})
+						}
+					},
+					fail(err) {
+						console.log(err);
+					}
+				})
+			},
+			getIcon(e) {
+				const ways = ['pakin','orderPakin','orderPutOn']
+				if (ways.includes(e)) {
+					this.icon = 'pullup'
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+	.page {
+		height: 100vh;
+	}
+
+	.bg-red {
+		background-color: #e54d42;
+		color: #ffffff;
+	}
+
+	.bg-orange {
+		background-color: #f37b1d;
+		color: #ffffff;
+	}
+
+	.bg-yellow {
+		background-color: #fbbd08;
+		color: #333333;
+	}
+
+	.bg-olive {
+		background-color: #8dc63f;
+		color: #ffffff;
+	}
+
+	.bg-green {
+		background-color: #39b54a;
+		color: #ffffff;
+	}
+
+	.bg-cyan {
+		background-color: #1cbbb4;
+		color: #ffffff;
+	}
+
+	.bg-blue {
+		background-color: #0081ff;
+		color: #ffffff;
+	}
+
+	.bg-purple {
+		background-color: #6739b6;
+		color: #ffffff;
+	}
+
+	.bg-mauve {
+		background-color: #9c26b0;
+		color: #ffffff;
+	}
+
+	.bg-pink {
+		background-color: #e03997;
+		color: #ffffff;
+	}
+
+	.bg-brown {
+		background-color: #a5673f;
+		color: #ffffff;
+	}
+
+	.bg-grey {
+		background-color: #8799a3;
+		color: #ffffff;
+	}
+
+	.bg-gray {
+		background-color: #f0f0f0;
+		color: #333333;
+	}
+
+	.bg-black {
+		background-color: #333333;
+		color: #ffffff;
+	}
+
+	.bg-white {
+		background-color: #ffffff;
+		color: #666666;
+	}
+</style>
diff --git a/pages/outbound/orderOutExecute.vue b/pages/outbound/orderOutExecute.vue
new file mode 100644
index 0000000..cfcd85a
--- /dev/null
+++ b/pages/outbound/orderOutExecute.vue
@@ -0,0 +1,295 @@
+<template>
+	<view class="has-foot">
+		<form >
+			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-gray">&nbsp;璁㈠崟鍙凤細IN25102330271</view>				
+			</view>
+<!-- 			<view class="cu-form-group" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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> -->
+		</form>	
+				
+
+		<view class="cu-list det menu sm-border  padding">
+			<block  v-for="(item, index) in list" :key="index">
+				<view  class="cu-list det menu"  @click="clickTaskItem(index)">
+					
+				
+<!-- 				<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.status$}}</text></text>
+					</view>
+				</view> -->
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁㈠崟鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+					</view>						
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁㈠崟鏃堕棿锛�<text class="text-black ">{{item.createTime$}}</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.matnrCode}}</text></text>
+					</view>					
+				</view>	
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">瀹屾垚鏁伴噺:<text class="text-black ">{{item.workQty}}</text></text>
+					</view>
+					<view class="content">
+						<text class="text-gray">鎬绘暟閲�:<text class="text-black ">{{item.anfme}}</text></text>
+					</view>	
+				</view>	
+				<!-- <view class="cu-item">						
+					<view class="content">
+						<text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+					</view>
+				</view> -->
+				<view class="cu-item">
+					<view class="content">
+						<progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+					</view>
+				</view>
+					
+				</view>
+			</block>
+		</view>
+
+
+<!-- 		<view class="text-blue text-right padding-lr" v-show="isconfirm">
+			鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+		</view>
+
+		<view class="cu-form-group " v-show="isconfirm">
+			<view class="title">鏀惰揣鍖�</view>
+			<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+				@change="selChange"></uni-data-select>
+		</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-blue shadow-blur" @click="next">鍑哄簱</button>
+		</view> -->
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				isClickItem:false,
+				clickItem:'',
+				QRbarcode:null,
+				barcode: '',
+				whAreaId: '',
+				list: [],
+				range: [],
+				isconfirm: false,							
+				itemStyle: {
+				        backgroundColor: '#42b983',				        
+				        borderColor: '#42b983'
+				},
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+			allCount() {
+				return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+			}
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			clickTaskItem(index){
+				let that = this
+				uni.navigateTo({
+					url: "./checkOrderItem",
+					// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+					success: function(res) {
+						res.eventChannel.emit('checkItem', {
+							data: that.list[index]
+						})
+					}
+					
+				});				
+			},
+			typeChange(e){
+				this.typeSelect = e.value
+				this.search()
+			},
+			async search() {
+				this.list = []
+				if(this.barcode === '' || this.barcode ===null){
+					this.barcode = 'OS2509030230';
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/outStockItem/page',{
+					orderId:this.barcode
+				}	
+				)
+				if (code === 200) {					
+					if (Object.keys(data).length === 0){
+						uni.showToast({
+							title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+							icon: "none",
+							position: 'top'
+						})
+					}
+					this.list.push(...data)
+					
+				}else if(code == 401){
+					setTimeout(() => {
+						uni.removeStorageSync('token');
+						uni.reLaunch({
+							url: "/pages/login/login"
+						});
+					}, 1000);
+				}else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+						position: 'top'
+					})
+				}
+
+
+			},
+			clearCode() {
+				this.barcode = ''
+			},
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.barcode = ''
+			},
+			next() {
+				if (this.list.length) {
+					this.isconfirm = true
+				} else {
+					uni.showToast({
+						icon: "none",
+						title: '鏈�夌墿鏂欐爣绛�'
+					})
+				}
+			},
+			prev() {
+				this.isconfirm = false
+			},
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async confirm() {
+				const newArr = this.list.map(item => {
+					return {
+						...item,
+						receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+					};
+				});
+				if (this.whAreaId === '') {
+					uni.showToast({
+						icon: "none",
+						title: '璇烽�夋嫨鏀惰揣鍖�'
+					})
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						whAreaId: this.whAreaId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鏀惰揣鎴愬姛'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}
+
+				}
+			},
+			
+			DateChange(e, item) {
+				item.prodTime = e.detail.value
+			}
+		}
+	}
+</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;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/outbound/orderOutItem.vue b/pages/outbound/orderOutItem.vue
new file mode 100644
index 0000000..fa589b5
--- /dev/null
+++ b/pages/outbound/orderOutItem.vue
@@ -0,0 +1,291 @@
+<template>
+	<view class="has-foot">
+		<form >
+			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-gray">&nbsp;璁㈠崟鍙凤細OS250807152830</view>				
+			</view>
+<!-- 			<view class="cu-form-group" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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> -->
+		</form>	
+				
+
+		<view class="cu-list det menu sm-border  padding">
+			<block  v-for="(item, index) in list" :key="index" >
+				<view  class="cu-list det menu  "  @click="clickTaskItem(index)">
+					
+				
+				<view class="cu-bar bg-white solid-bottom">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+					</view>
+					<view class="content2">
+						<text class="text-gray margin-right-sm"><text class="text-black ">{{item.status$}}</text></text>
+					</view>
+				</view>
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁″垝璺熻釜鍙凤細<text class="text-black ">{{item.orderCode}}</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.workQty}}</text></text>
+					</view>
+					<view class="content">
+						<text class="text-gray">搴斿彂鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+					</view>	
+				</view>	
+				<!-- <view class="cu-item">						
+					<view class="content">
+						<text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+					</view>
+				</view> -->
+				<view class="cu-item">
+					<view class="content">
+						<progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+					</view>
+				</view>
+					
+				</view>
+			</block>
+		</view>
+
+
+<!-- 		<view class="text-blue text-right padding-lr" v-show="isconfirm">
+			鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+		</view>
+
+		<view class="cu-form-group " v-show="isconfirm">
+			<view class="title">鏀惰揣鍖�</view>
+			<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+				@change="selChange"></uni-data-select>
+		</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-blue shadow-blur" @click="next">鍑哄簱</button>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				isClickItem:false,
+				clickItem:'',
+				QRbarcode:null,
+				barcode: '',
+				whAreaId: '',
+				list: [],
+				range: [],
+				isconfirm: false,							
+				itemStyle: {
+				        backgroundColor: '#42b983',				        
+				        borderColor: '#42b983'
+				},
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+			allCount() {
+				return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+			}
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			clickTaskItem(index){
+				let that = this
+				
+				// uni.navigateTo({
+				// 	url: "./orderInItem",
+				// 	// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+				// 	success: function(res) {
+				// 		res.eventChannel.emit('checkItem', {
+				// 			data: that.list[index]
+				// 		})
+				// 	}
+					
+				// });				
+			},
+			typeChange(e){
+				this.typeSelect = e.value
+				this.search()
+			},
+			async search() {
+				this.list = []
+				if(this.barcode === '' || this.barcode ===null){
+					this.barcode = 'OS2509030230';
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/outStockItem/page',{
+					orderId:this.barcode
+				}	
+				)
+				if (code === 200) {					
+					if (Object.keys(data).length === 0){
+						uni.showToast({
+							title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+							icon: "none",
+							position: 'top'
+						})
+					}
+					this.list.push(...data)
+					
+				}else if(code == 401){
+					setTimeout(() => {
+						uni.removeStorageSync('token');
+						uni.reLaunch({
+							url: "/pages/login/login"
+						});
+					}, 1000);
+				}else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+						position: 'top'
+					})
+				}
+
+
+			},
+			clearCode() {
+				this.barcode = ''
+			},
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.barcode = ''
+			},
+			next() {
+				if (this.list.length) {
+					this.isconfirm = true
+				} else {
+					uni.showToast({
+						icon: "none",
+						title: '鏈�夌墿鏂欐爣绛�'
+					})
+				}
+			},
+			prev() {
+				this.isconfirm = false
+			},
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async confirm() {
+				const newArr = this.list.map(item => {
+					return {
+						...item,
+						receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+					};
+				});
+				if (this.whAreaId === '') {
+					uni.showToast({
+						icon: "none",
+						title: '璇烽�夋嫨鏀惰揣鍖�'
+					})
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						whAreaId: this.whAreaId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鏀惰揣鎴愬姛'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}
+
+				}
+			},
+			
+			DateChange(e, item) {
+				item.prodTime = e.detail.value
+			}
+		}
+	}
+</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;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/outbound/orderPick.vue b/pages/outbound/orderPick.vue
new file mode 100644
index 0000000..35bac76
--- /dev/null
+++ b/pages/outbound/orderPick.vue
@@ -0,0 +1,287 @@
+<template>
+	<view class="has-foot">
+		<form >
+			<view class="cu-form-group margin-top" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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>
+		</form>	
+				
+
+		<view class="cu-list det menu sm-border  padding">
+			<block  v-for="(item, index) in list" :key="index">
+				<view  class="cu-list det menu  "  @click="clickTaskItem(index)">
+					
+				
+<!-- 				<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.status$}}</text></text>
+					</view>
+				</view> -->
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁㈠崟鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+					</view>						
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁㈠崟鏃堕棿锛�<text class="text-black ">{{item.createTime$}}</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.workQty}}</text></text>
+					</view>
+					<view class="content">
+						<text class="text-gray">搴斿嚭鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+					</view>	
+				</view>	
+				<!-- <view class="cu-item">						
+					<view class="content">
+						<text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+					</view>
+				</view> -->
+	<!-- 			<view class="cu-item">
+					<view class="content">
+						<progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+					</view>
+				</view> -->
+					
+				</view>
+			</block>
+		</view>
+
+
+<!-- 		<view class="text-blue text-right padding-lr" v-show="isconfirm">
+			鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+		</view>
+
+		<view class="cu-form-group " v-show="isconfirm">
+			<view class="title">鏀惰揣鍖�</view>
+			<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+				@change="selChange"></uni-data-select>
+		</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-blue shadow-blur" @click="next">鍑哄簱</button>
+		</view> -->
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				isClickItem:false,
+				clickItem:'',
+				QRbarcode:null,
+				barcode: '',
+				whAreaId: '',
+				list: [],
+				range: [],
+				isconfirm: false,							
+				itemStyle: {
+				        backgroundColor: '#42b983',				        
+				        borderColor: '#42b983'
+				},
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+			allCount() {
+				return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+			}
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			clickTaskItem(index){
+				let that = this
+				uni.navigateTo({
+					url: "./orderOutItem",
+					// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+					success: function(res) {
+						res.eventChannel.emit('checkItem', {
+							data: that.list[index]
+						})
+					}
+					
+				});
+			},
+			typeChange(e){
+				this.typeSelect = e.value
+				this.search()
+			},
+			async search() {
+				this.list = []
+				if(this.barcode === '' || this.barcode ===null){
+					this.barcode = 'OS2509030230';
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/outStockItem/page',{
+					orderId:this.barcode
+				}	
+				)
+				if (code === 200) {					
+					if (Object.keys(data).length === 0){
+						uni.showToast({
+							title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+							icon: "none",
+							position: 'top'
+						})
+					}
+					this.list.push(...data)
+					
+				}else if(code == 401){
+					setTimeout(() => {
+						uni.removeStorageSync('token');
+						uni.reLaunch({
+							url: "/pages/login/login"
+						});
+					}, 1000);
+				}else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+						position: 'top'
+					})
+				}
+
+
+			},
+			clearCode() {
+				this.barcode = ''
+			},
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.barcode = ''
+			},
+			next() {
+				if (this.list.length) {
+					this.isconfirm = true
+				} else {
+					uni.showToast({
+						icon: "none",
+						title: '鏈�夌墿鏂欐爣绛�'
+					})
+				}
+			},
+			prev() {
+				this.isconfirm = false
+			},
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async confirm() {
+				const newArr = this.list.map(item => {
+					return {
+						...item,
+						receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+					};
+				});
+				if (this.whAreaId === '') {
+					uni.showToast({
+						icon: "none",
+						title: '璇烽�夋嫨鏀惰揣鍖�'
+					})
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						whAreaId: this.whAreaId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鏀惰揣鎴愬姛'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}
+
+				}
+			},
+			
+			DateChange(e, item) {
+				item.prodTime = e.detail.value
+			}
+		}
+	}
+</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;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/outbound/productDirectDelivery.vue b/pages/outbound/productDirectDelivery.vue
new file mode 100644
index 0000000..30000b4
--- /dev/null
+++ b/pages/outbound/productDirectDelivery.vue
@@ -0,0 +1,283 @@
+<template>
+	<view class="has-foot">
+		<form>
+			<view class="cu-form-group margin-top">
+				<view class="title">鎺ラ┏绔欑偣</view>
+				<input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+				<!-- <text class='cuIcon-search text-blue' @click="search"></text> -->
+			</view>	
+			<view class="cu-form-group">
+				<view class="title">瀹瑰櫒鍙�</view>
+				<input placeholder="璇锋壂鎻忓鍣ㄧ紪鐮�" v-model="barcode" ></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>	
+<!-- 			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-blue margin-left">瀹瑰櫒鐮�:{{container}}</view>				
+			</view> -->
+			<view class="cu-form-group">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" ></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>	
+			<view class="cu-form-group">
+				<view class="title">鐩爣绔欑偣</view>
+				<view style="width: 75%;">
+					<uni-data-select style="min-width: 50%; max-width: 100%;" v-model="whAreaId" :localdata="range"
+						placement="bottom" @change="selChange"></uni-data-select>
+				</view>
+			</view>
+		</form>
+
+
+		<view class="cu-list det menu sm-border  padding">
+			<block v-for="(item, index) in list" :key="index">
+				<view class="cu-bar bg-white solid-bottom margin-top-sm">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+						<view class="text-blue">
+							{{`${item.maktx}`}}
+						</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-black">ASN:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.asnCode}}</text>
+					</view>
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鎵规:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.batch}}</text>
+					</view>
+				</view>
+
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鏀惰揣鏁伴噺:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.anfme}}</text>
+					</view>
+				</view>
+
+			</block>
+		</view>
+
+
+		<view class="cu-bar btn-group foot">
+			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+			<button class="cu-btn bg-blue shadow-blur" :disabled="repeatClick" @click="confirm">杩愰��</button>
+		</view>
+
+		
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				barcode: '',
+				areaName: '',
+				locCode: '',
+				container: '',
+				list: [],
+				range: [],
+				curCode: '',
+				whAreaId:'',
+				repeatClick: false,
+				
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+		},
+		mounted() {
+			this.getRece()
+			this.whAreaId = uni.getStorageSync('whAreaId')
+		},
+		methods: {	
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async search() {
+				let that = this
+				const {
+					code,
+					data,
+					msg
+				} = await request('/staBind/list', {
+					sta: this.barcode
+				})
+				if (code === 200) {	
+					if(data.list.length >0){
+						that.container = data.barcode						
+						that.list = data.list
+					}
+					that.range = data.warehouseAreasList.map(item => ({
+						value: item.id,
+						text: item.name
+					}));
+					that.whAreaId = data.area
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+			},
+
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				
+				this.container = ''
+				this.barcode = ''
+			},
+
+			open() {
+				this.$refs.popup.open()
+			},
+
+			close() {
+				this.$refs.popup.close()
+			},
+
+			popupSubmit() {
+				this.$refs.popup.close()
+			},
+			itemChange(el) {
+				this.curCode = el
+			},
+
+			async confirm() {				
+				if(this.barcode === '' || this.barcode ===null){
+					uni.showToast({
+						title: "鎺ラ┏绔欑偣涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				}
+				if(this.whAreaId === '' || this.whAreaId ===null){
+					uni.showToast({
+						title: "鐩爣搴撳尯涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				} 
+				this.repeatClick = true
+				const {
+					code,
+					data,
+					msg
+				} = await request('/AGV/task/start',{						
+						sta: this.barcode,
+						area: this.whAreaId
+					}
+				)
+				if (code === 200) {
+					uni.showToast({
+						title: '鍚姩鎴愬姛'
+					})
+					this.clear()
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+				this.repeatClick = false
+			},
+			
+			async getRece() {				
+				const {
+					code,
+					data,
+					msg
+				} = await request('/areas/receipt', {}, 'get')
+				if (code === 200) {
+					this.range = data.map(item => ({
+						value: item.id,
+						text: item.warehouseId$ + "-- " + item.name
+					}));
+				}
+			},
+		}
+	}
+</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;
+	}
+
+	.uni-file-picker {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.uni-select__selector {
+		z-index: 999;
+	}
+
+	.tj {
+		height: auto;
+		padding: 6px 8px;
+		display: inline-block;
+		border-radius: 6px;
+	}
+
+	.item {
+		display: flex;
+		justify-content: center;
+	}
+
+	.item .cu-btn {
+		font-size: 26upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/outbound/productionMatCall.vue b/pages/outbound/productionMatCall.vue
new file mode 100644
index 0000000..02409e3
--- /dev/null
+++ b/pages/outbound/productionMatCall.vue
@@ -0,0 +1,8 @@
+<template>
+</template>
+
+<script>
+</script>
+
+<style>
+</style>
\ No newline at end of file
diff --git a/pages/transfer/matTransfer.vue b/pages/transfer/matTransfer.vue
new file mode 100644
index 0000000..efd6e63
--- /dev/null
+++ b/pages/transfer/matTransfer.vue
@@ -0,0 +1,265 @@
+<template>
+	<view class="has-foot">
+		<form>
+			<view class="cu-form-group margin-top">
+				<view class="title">璧峰搴撲綅鎵樼洏鍙�</view>
+				<input placeholder="璇锋壂璧峰搴撲綅鎵樼洏鍙�" v-model="container"></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>
+			<view class="cu-form-group ">
+				<view class="title">鐩爣搴撲綅鍙�</view>
+				<input placeholder="璇烽�夋嫨鐩爣搴撲綅鍙�" v-model="barcode" ></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>
+		</form>
+
+
+
+		<view class="cu-list det menu sm-border  padding">
+			<block v-for="(item, index) in list" :key="index">
+				<view class="cu-bar bg-white solid-bottom margin-top-sm">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+						<view class="text-blue">
+							{{`${item.maktx}`}}
+						</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-black">ASN:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.asnCode}}</text>
+					</view>
+				</view>
+
+				
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鎵规:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.batch}}</text>
+					</view>
+				</view>
+
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-black">鏀惰揣鏁伴噺:</text>
+					</view>
+					<view class="action">
+						<text class="text-grey ">{{item.anfme}}</text>
+					</view>
+				</view>
+
+			</block>
+		</view>
+
+
+		<view class="cu-bar btn-group foot">
+			<button class="cu-btn text-blue line-blue shadow" @click="clear">娓呯┖</button>
+			<button class="cu-btn bg-blue shadow-blur" @click="confirm">绉诲簱</button>
+		</view>
+
+		<uni-popup ref="popup" class="cu-popup">
+			<view class="popup-content">
+				<view class="head">
+					<text>鎺ㄨ崘</text>
+					<text class='cuIcon-close text-red close' @click="close"></text>
+				</view>
+
+				<div class="body">
+					<view class="cu-list grid col-3 no-border">
+						<view class="item" v-for="el in range">
+							<view class="cu-btn round  sm" :class="[el===curCode?'bg-blue':'line-blue']"
+								@click="itemChange(el)">{{el}}</view>
+						</view>
+					</view>
+				</div>
+
+				<view class="cu-bar btn-group ">
+					<button class="cu-btn bg-blue shadow-blur" @click="popupSubmit">鎻愪氦</button>
+				</view>
+			</view>
+		</uni-popup>
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				barcode: '',
+				areaName: '',
+				locCode: '',
+				container: '',
+				list: [],
+				range: [],
+				curCode: ''
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+		},
+		mounted() {},
+		methods: {
+			async search() {
+				const {
+					code,
+					data,
+					msg
+				} = await request('/stock/operate/list', {					
+					barcode: this.container,
+					sta: this.barcode
+				})
+				if (code === 200) {
+					// const find = this.list.find(el => el.id === data.id);
+					// !find &&
+					 this.list = data
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+			},
+
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				
+				this.container = ''
+				this.barcode = ''
+			},
+
+			open() {
+				this.$refs.popup.open()
+			},
+
+			close() {
+				this.$refs.popup.close()
+			},
+
+			popupSubmit() {
+				this.$refs.popup.close()
+			},
+			itemChange(el) {
+				this.curCode = el
+			},
+
+			async confirm() {
+				if(this.container === '' || this.container ===null){
+					uni.showToast({
+						title: "瀹瑰櫒鐮佷笉鑳戒负绌�",
+						icon: "none",
+					})
+					return ;
+				}
+				if(this.barcode === '' || this.barcode ===null){
+					uni.showToast({
+						title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/AGV/staBind',{
+						barcode: this.container,
+						sta: this.barcode
+					}
+				)
+				if (code === 200) {
+					uni.showToast({
+						title: '缁戝畾鎴愬姛'
+					})
+					this.clear()
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+
+
+
+			},
+
+		}
+	}
+</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;
+	}
+
+	.uni-file-picker {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.uni-select__selector {
+		z-index: 999;
+	}
+
+	.tj {
+		height: auto;
+		padding: 6px 8px;
+		display: inline-block;
+		border-radius: 6px;
+	}
+
+	.item {
+		display: flex;
+		justify-content: center;
+	}
+
+	.item .cu-btn {
+		font-size: 26upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/transfer/orderTransfer.vue b/pages/transfer/orderTransfer.vue
new file mode 100644
index 0000000..215c97e
--- /dev/null
+++ b/pages/transfer/orderTransfer.vue
@@ -0,0 +1,287 @@
+<template>
+	<view class="has-foot">
+		<form >
+			<view class="cu-form-group margin-top" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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>
+		</form>	
+				
+
+		<view class="cu-list det menu sm-border  padding">
+			<block  v-for="(item, index) in list" :key="index">
+				<view  class="cu-list det menu  "  @click="clickTaskItem(index)">
+					
+				
+<!-- 				<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.status$}}</text></text>
+					</view>
+				</view> -->
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁㈠崟鍙凤細<text class="text-black ">{{item.orderCode}}</text></text>
+					</view>						
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁㈠崟鏃堕棿锛�<text class="text-black ">{{item.createTime$}}</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.workQty}}</text></text>
+					</view>
+					<view class="content">
+						<text class="text-gray">璋冩嫧鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+					</view>	
+				</view>	
+				<!-- <view class="cu-item">						
+					<view class="content">
+						<text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+					</view>
+				</view> -->
+	<!-- 			<view class="cu-item">
+					<view class="content">
+						<progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+					</view>
+				</view> -->
+					
+				</view>
+			</block>
+		</view>
+
+
+<!-- 		<view class="text-blue text-right padding-lr" v-show="isconfirm">
+			鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+		</view>
+
+		<view class="cu-form-group " v-show="isconfirm">
+			<view class="title">鏀惰揣鍖�</view>
+			<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+				@change="selChange"></uni-data-select>
+		</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-blue shadow-blur" @click="next">鍑哄簱</button>
+		</view> -->
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				isClickItem:false,
+				clickItem:'',
+				QRbarcode:null,
+				barcode: '',
+				whAreaId: '',
+				list: [],
+				range: [],
+				isconfirm: false,							
+				itemStyle: {
+				        backgroundColor: '#42b983',				        
+				        borderColor: '#42b983'
+				},
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+			allCount() {
+				return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+			}
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			clickTaskItem(index){
+				let that = this
+				uni.navigateTo({
+					url: "./orderTransferItem",
+					// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+					success: function(res) {
+						res.eventChannel.emit('checkItem', {
+							data: that.list[index]
+						})
+					}
+					
+				});
+			},
+			typeChange(e){
+				this.typeSelect = e.value
+				this.search()
+			},
+			async search() {
+				this.list = []
+				if(this.barcode === '' || this.barcode ===null){
+					this.barcode = 'OS2509030230';
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/outStockItem/page',{
+					orderId:this.barcode
+				}	
+				)
+				if (code === 200) {					
+					if (Object.keys(data).length === 0){
+						uni.showToast({
+							title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+							icon: "none",
+							position: 'top'
+						})
+					}
+					this.list.push(...data)
+					
+				}else if(code == 401){
+					setTimeout(() => {
+						uni.removeStorageSync('token');
+						uni.reLaunch({
+							url: "/pages/login/login"
+						});
+					}, 1000);
+				}else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+						position: 'top'
+					})
+				}
+
+
+			},
+			clearCode() {
+				this.barcode = ''
+			},
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.barcode = ''
+			},
+			next() {
+				if (this.list.length) {
+					this.isconfirm = true
+				} else {
+					uni.showToast({
+						icon: "none",
+						title: '鏈�夌墿鏂欐爣绛�'
+					})
+				}
+			},
+			prev() {
+				this.isconfirm = false
+			},
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async confirm() {
+				const newArr = this.list.map(item => {
+					return {
+						...item,
+						receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+					};
+				});
+				if (this.whAreaId === '') {
+					uni.showToast({
+						icon: "none",
+						title: '璇烽�夋嫨鏀惰揣鍖�'
+					})
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						whAreaId: this.whAreaId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鏀惰揣鎴愬姛'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}
+
+				}
+			},
+			
+			DateChange(e, item) {
+				item.prodTime = e.detail.value
+			}
+		}
+	}
+</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;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/transfer/orderTransferItem.vue b/pages/transfer/orderTransferItem.vue
new file mode 100644
index 0000000..66aa345
--- /dev/null
+++ b/pages/transfer/orderTransferItem.vue
@@ -0,0 +1,291 @@
+<template>
+	<view class="has-foot">
+		<form >
+			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-gray">&nbsp;璁㈠崟鍙凤細OS250807152830</view>				
+			</view>
+<!-- 			<view class="cu-form-group" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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> -->
+		</form>	
+				
+
+		<view class="cu-list det menu sm-border  padding">
+			<block  v-for="(item, index) in list" :key="index" >
+				<view  class="cu-list det menu  "  @click="clickTaskItem(index)">
+					
+				
+				<view class="cu-bar bg-white solid-bottom">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+					</view>
+					<view class="content2">
+						<text class="text-gray margin-right-sm"><text class="text-black ">{{item.status$}}</text></text>
+					</view>
+				</view>
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">璁″垝璺熻釜鍙凤細<text class="text-black ">{{item.orderCode}}</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.workQty}}</text></text>
+					</view>
+					<view class="content">
+						<text class="text-gray">璋冩嫧鏁伴噺:<text class="text-black ">{{item.anfme}}</text></text>
+					</view>	
+				</view>	
+				<!-- <view class="cu-item">						
+					<view class="content">
+						<text class="text-gray">鐩樼偣绫诲瀷:<text class="text-black ">{{item.checkType$}}</text></text>
+					</view>
+				</view> -->
+				<view class="cu-item">
+					<view class="content">
+						<progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+					</view>
+				</view>
+					
+				</view>
+			</block>
+		</view>
+
+
+<!-- 		<view class="text-blue text-right padding-lr" v-show="isconfirm">
+			鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+		</view>
+
+		<view class="cu-form-group " v-show="isconfirm">
+			<view class="title">鏀惰揣鍖�</view>
+			<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+				@change="selChange"></uni-data-select>
+		</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-blue shadow-blur" @click="next">璋冩嫧</button>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				isClickItem:false,
+				clickItem:'',
+				QRbarcode:null,
+				barcode: '',
+				whAreaId: '',
+				list: [],
+				range: [],
+				isconfirm: false,							
+				itemStyle: {
+				        backgroundColor: '#42b983',				        
+				        borderColor: '#42b983'
+				},
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+			allCount() {
+				return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+			}
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			clickTaskItem(index){
+				let that = this
+				
+				// uni.navigateTo({
+				// 	url: "./orderInItem",
+				// 	// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+				// 	success: function(res) {
+				// 		res.eventChannel.emit('checkItem', {
+				// 			data: that.list[index]
+				// 		})
+				// 	}
+					
+				// });				
+			},
+			typeChange(e){
+				this.typeSelect = e.value
+				this.search()
+			},
+			async search() {
+				this.list = []
+				if(this.barcode === '' || this.barcode ===null){
+					this.barcode = 'OS2509030230';
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/outStockItem/page',{
+					orderId:this.barcode
+				}	
+				)
+				if (code === 200) {					
+					if (Object.keys(data).length === 0){
+						uni.showToast({
+							title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+							icon: "none",
+							position: 'top'
+						})
+					}
+					this.list.push(...data)
+					
+				}else if(code == 401){
+					setTimeout(() => {
+						uni.removeStorageSync('token');
+						uni.reLaunch({
+							url: "/pages/login/login"
+						});
+					}, 1000);
+				}else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+						position: 'top'
+					})
+				}
+
+
+			},
+			clearCode() {
+				this.barcode = ''
+			},
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.barcode = ''
+			},
+			next() {
+				if (this.list.length) {
+					this.isconfirm = true
+				} else {
+					uni.showToast({
+						icon: "none",
+						title: '鏈�夌墿鏂欐爣绛�'
+					})
+				}
+			},
+			prev() {
+				this.isconfirm = false
+			},
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async confirm() {
+				const newArr = this.list.map(item => {
+					return {
+						...item,
+						receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+					};
+				});
+				if (this.whAreaId === '') {
+					uni.showToast({
+						icon: "none",
+						title: '璇烽�夋嫨鏀惰揣鍖�'
+					})
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						whAreaId: this.whAreaId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鏀惰揣鎴愬姛'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}
+
+				}
+			},
+			
+			DateChange(e, item) {
+				item.prodTime = e.detail.value
+			}
+		}
+	}
+</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;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/transfer/transferType.vue b/pages/transfer/transferType.vue
new file mode 100644
index 0000000..176bde8
--- /dev/null
+++ b/pages/transfer/transferType.vue
@@ -0,0 +1,382 @@
+<template>
+	<view>
+<!-- 		<form >
+			<view class="cu-form-group margin-top" v-show="!isconfirm">
+				<view class="title">璁㈠崟鍙�</view>
+				<input placeholder="璇烽�夋嫨璁㈠崟缂栫爜" v-model="barcode" @input="search()" 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>
+		</form>	 -->
+		
+		<scroll-view scroll-y class="page">
+			<view class="nav-list">
+				<!-- :url="'/pages' + item.url + '?param=' + item.param"  navigateTo-->
+				<view hover-class='none'  class="nav-li"  @click="toOrder(item)"
+					:class="'bg-'+item.color" :style="[{animation: 'show ' + ((index+1)*0.2+1) + 's 1'}]"
+					v-for="(item,index) in elements2" :key="index">
+					<view class="nav-title">{{item.title}}</view>
+					<view class="nav-name">{{item.name}}</view>
+					<text :class="'cuIcon-' + item.cuIcon"></text>
+				</view>
+			</view>
+			<view class="cu-tabbar-height"></view>
+		</scroll-view>
+		<view style="height: 50rpx;"></view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				baseUrl: '',
+				token: '',
+				icon: '',
+				elements: [],
+				project: 'tzsk',
+				elements2: [
+					// {
+					// 	title: '寰呭寘瑁呭叆搴撳崟',
+					// 	name: 'pakinOrder',
+					// 	color: 'blue',
+					// 	url: `/outbound/orderPick`
+					// },
+					// {
+					// 	title: '寰呭寘瑁呭嚭搴撳崟',
+					// 	name: 'pakinOrder',
+					// 	color: 'blue',
+					// 	url: `/phyz/waitOrder/waitOrderOut`
+					// },
+					// {
+					// 	title: '閲囪喘鍏ュ簱鍗�',
+					// 	name: 'pakinOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/order/pakinOrderSelect`
+					// },
+					// {
+					// 	title: '鍑哄簱鍗�',
+					// 	name: 'outOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/order/outOrder`
+					// },
+					// {
+					// 	title: '鍏ュ簱鍗曟祴璇曠敤',
+					// 	name: 'pakin',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/order/purchaseOrder`
+					// },
+					// {
+					// 	title: '閲囪喘鍑哄簱',
+					// 	name: 'outOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/orderOut/orderOutSelect`
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佸叆搴撳崟',
+					// 	name: 'bcpOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/bcp/bcpOrder`
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佸叆搴撳崟_鍚稿',
+					// 	name: 'bcpOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/bcp/bcpOrder_xs`
+					// },
+					{
+						title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+						name: 'bcpDbOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/orderTransfer`
+					},
+					{
+						title: '鍗婃垚鍝佽皟鎷ㄥ崟',
+						name: 'bcpDbOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/orderTransfer`
+					},
+					// {
+					// 	title: '鍗婃垚鍝佸嚭搴撳崟',
+					// 	name: 'bcpOutOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/orderOut/bcpOrderOutSelect`
+					// },
+					// {
+					// 	title: '鍗婃垚鍝佸嚭搴撳崟_浜屽巶',
+					// 	name: 'bcpOutOrder',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/orderOut/bcpOrderOutSelect_2`,
+					// 	param: {orderType: [1,2,3]}
+					// },
+					{
+						title: '鍗婃垚鍝佸姞宸ュ崟',
+						name: 'processOrder',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/orderTransfer`
+					},
+					{
+						title: '鍗婃垚鍝佸洖娴佸崟',
+						name: 'backStock',
+						color: 'blue',
+						// cuIcon: 'pullup',
+						url: `/orderTransfer`
+					},
+					// {
+					// 	title: '鍏ュ簱鍗�',
+					// 	name: 'orderIn',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/comOrder/orderIn`
+					// },
+					// {
+					// 	title: '鍑哄簱鍗�',
+					// 	name: 'orderOut',
+					// 	color: 'blue',
+					// 	// cuIcon: 'pullup',
+					// 	url: `/phyz/comOrder/orderOut`
+					// },
+					
+				],
+				menu: [],
+				colorList: ['cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive','cyan','blue','purple','mauve','pink','brown','red','orange','yellow','olive' ]
+			};
+		},
+		// onShow() {
+		// 	this.baseUrl = uni.getStorageSync('baseUrl');
+		// 	this.token = uni.getStorageSync('token');
+		// 	this.project = uni.getStorageSync('project')
+		// 	// this.getAuth()
+		// 	this.backGroundRepeat()
+		// },
+		onLoad(option) {
+			this.baseUrl = uni.getStorageSync('baseUrl');
+			this.token = uni.getStorageSync('token');
+			this.project = uni.getStorageSync('project');
+			this.menu = uni.getStorageSync('menu');
+			this.getAuth2(option.id)
+			this.backGroundRepeat()
+		},
+		methods: {
+			backGroundRepeat() {
+				let len = this.colorList.length
+				let i = 0
+				for (let k in this.elements2) {
+					if (i == len) {
+						i = 0
+					}
+					this.elements2[k].color = this.colorList[i]
+					i++
+				}
+			},
+			toOrder(item) { 
+				uni.navigateTo({
+					url: `/pages/transfer${item.url}`,
+					success(res) {
+						res.eventChannel.emit('param', {
+							param: item.param
+						})
+					}
+				})
+			},
+			getAuth2(id) {
+				let secMenu = []
+				for (let k of this.menu) {
+					if (id == k.id) {
+						secMenu = k.children
+					}
+				}
+				for (let i in secMenu) {
+					this.getIcon(secMenu[i].title)
+					// 鍏煎2025 02 18 鑿滃崟param
+					if (secMenu[i].param) {
+						this.elements.unshift({
+							title: secMenu[i].name,
+							name: secMenu[i].title,
+							color: this.colorList[i],
+							cuIcon: this.icon,
+							id: secMenu[i].id,
+							param: JSON.parse(secMenu[i].param),
+							url: `${secMenu[i].code}`
+						})
+					} else {
+						this.elements.unshift({
+							title: secMenu[i].name,
+							name: secMenu[i].title,
+							color: this.colorList[i],
+							cuIcon: this.icon,
+							id: secMenu[i].id,
+							url: `${secMenu[i].code}`
+						})
+					}
+				}
+				console.log(this.elements);
+			},
+			getAuth(id) {
+				let that = this
+				uni.request({
+					url: that.baseUrl + '/menu/pda/auth',
+					data: {level:2 ,id: id},
+					header: { 'token': uni.getStorageSync('token') },
+					method: 'POST',
+					success(res) {
+						console.log(res);
+						if (res.statusCode === 404) {
+							that.elements = that.elements2
+							return
+						}
+						res = res.data
+						that.elements = []
+						if (res.code === 200) {
+							if (res.data == undefined || res.data == null || res.data == "") {
+								if (res.data.length == 0) {
+									return
+								} else {
+									that.elements = that.elements2
+								}
+							}
+							for (var i = 0; i < res.data.length; i++) {
+								if (res.data.length < 0) {
+									break;
+								}
+								that.getIcon(res.data[i].title)
+								that.elements.unshift({
+									title: res.data[i].name,
+									name: res.data[i].title,
+									color: that.colorList[i],
+									cuIcon: that.icon,
+									url: `${res.data[i].code}`
+								})
+							}
+						} else if (res.code === 403) {
+							uni.showToast({
+								title: res.msg,
+								icon: "none",
+								position: 'top'
+							})
+							setTimeout(() => {
+								uni.reLaunch({
+									url: '../login/login'
+								});
+							}, 1000);
+						} else if(res.status === 404) {
+							that.elements = that.elements2
+							// uni.showToast({
+							// 	title: '榛樿涓婚〉',
+							// 	icon: "none",
+							// 	position: 'top'
+							// })
+						} else {
+							uni.showToast({
+								title: res.msg,
+								icon: "none",
+								position: 'top'
+							})
+						}
+					},
+					fail(err) {
+						console.log(err);
+					}
+				})
+			},
+			getIcon(e) {
+				const ways = ['pakin','orderPakin','orderPutOn']
+				if (ways.includes(e)) {
+					this.icon = 'pullup'
+				}
+			}
+		}
+	}
+</script>
+
+<style>
+	.page {
+		height: 100vh;
+	}
+
+	.bg-red {
+		background-color: #e54d42;
+		color: #ffffff;
+	}
+
+	.bg-orange {
+		background-color: #f37b1d;
+		color: #ffffff;
+	}
+
+	.bg-yellow {
+		background-color: #fbbd08;
+		color: #333333;
+	}
+
+	.bg-olive {
+		background-color: #8dc63f;
+		color: #ffffff;
+	}
+
+	.bg-green {
+		background-color: #39b54a;
+		color: #ffffff;
+	}
+
+	.bg-cyan {
+		background-color: #1cbbb4;
+		color: #ffffff;
+	}
+
+	.bg-blue {
+		background-color: #0081ff;
+		color: #ffffff;
+	}
+
+	.bg-purple {
+		background-color: #6739b6;
+		color: #ffffff;
+	}
+
+	.bg-mauve {
+		background-color: #9c26b0;
+		color: #ffffff;
+	}
+
+	.bg-pink {
+		background-color: #e03997;
+		color: #ffffff;
+	}
+
+	.bg-brown {
+		background-color: #a5673f;
+		color: #ffffff;
+	}
+
+	.bg-grey {
+		background-color: #8799a3;
+		color: #ffffff;
+	}
+
+	.bg-gray {
+		background-color: #f0f0f0;
+		color: #333333;
+	}
+
+	.bg-black {
+		background-color: #333333;
+		color: #ffffff;
+	}
+
+	.bg-white {
+		background-color: #ffffff;
+		color: #666666;
+	}
+</style>
diff --git a/pages/workInfo/locInfo.vue b/pages/workInfo/locInfo.vue
new file mode 100644
index 0000000..21714ab
--- /dev/null
+++ b/pages/workInfo/locInfo.vue
@@ -0,0 +1,239 @@
+<template>
+	<view class="has-foot">
+		<form>
+			<view class="cu-form-group margin-top">
+				<view class="title">搴撲綅鍙�</view>
+				<input placeholder="璇锋壂鎻忓簱浣嶇紪鐮�" v-model="barcode" ></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>
+		</form>
+
+		<view class="cu-list det menu sm-border padding">
+			<block v-for="(item, index) in list" :key="index" @click="clickTaskItem(index)">
+				<view class="cu-list det menu" @click="clickTaskItem(index)">
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">搴撲綅鍙凤細</text><text class="text-black">{{item.stationName}}</text>
+						</view>			
+					</view>
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">搴撲綅绫诲瀷锛�</text><text class="text-black ">{{item.type === 1 ? '绠卞3' : '鍘熸潗鏂�'}}</text>
+						</view>
+					</view>
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">瀹瑰櫒鍙凤細</text><text class="text-black ">{{item.containerType}}</text>
+						</view>
+					</view>
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">搴撲綅鐘舵�侊細</text><text class="text-black ">{{item.status === 0 ? '鍦ㄥ簱' : '绌洪棽' }}</text>
+						</view>
+					</view>
+					<view class="cu-item">
+						<button class="cu-btn bg-red shadow-blur margin-left-xl justify-center" @click="popupSubmit">绂佺敤</button>
+						<button class="cu-btn bg-green shadow-blur margin-right-xl justify-center" @click="popupSubmit">瑙g</button>							
+							<!-- <text class="text-grey">瀹瑰櫒鍙凤細</text><text class="text-black ">{{item.anfme}}</text> -->
+						
+<!-- 						<view class="content margin-left-xl justify-center">
+						</view> -->
+					</view>
+				</view>
+			</block>
+		</view>
+
+<!-- 		<uni-popup ref="popup" class="cu-popup">
+			<view class="popup-content">
+				<view class="head">
+					<text>鎺ㄨ崘</text>
+					<text class='cuIcon-close text-red close' @click="close"></text>
+				</view>
+
+				<div class="body">
+					<view class="cu-list grid col-3 no-border">
+						<view class="item" v-for="el in range">
+							<view class="cu-btn round  sm" :class="[el===curCode?'bg-blue':'line-blue']"
+								@click="itemChange(el)">{{el}}</view>
+						</view>
+					</view>
+				</div>
+
+				<view class="cu-bar btn-group ">
+					<button class="cu-btn bg-blue shadow-blur" @click="popupSubmit">鎻愪氦</button>
+				</view>
+			</view>
+		</uni-popup> -->
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				container: '',
+				list: [],
+				range: [],
+				curCode: ''
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			async search() {
+				const {
+					code,
+					data,
+					msg
+				} = await request('/basStation/page', {
+					current: 1,
+					pageSize: 10000,
+					stationName: this.barcode
+				})
+				if (code === 200) {
+					 this.list = data.records
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+			},			
+			clickTaskItem(index){
+				let that = this
+				uni.navigateTo({
+					url: "./orderInItem",
+					// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+					success: function(res) {
+						res.eventChannel.emit('checkItem', {
+							data: that.list[index]
+						})
+					}
+					
+				});				
+			},
+
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []				
+				this.container = ''
+				this.barcode = ''
+			},
+
+			open() {
+				this.$refs.popup.open()
+			},
+
+			close() {
+				this.$refs.popup.close()
+			},
+
+			popupSubmit() {
+				this.$refs.popup.close()
+			},
+			itemChange(el) {
+				this.curCode = el
+			},
+
+			async confirm() {
+				if(this.barcode === '' || this.barcode ===null){
+					uni.showToast({
+						title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/AGV/staBind',{
+						barcode: this.container,
+						sta: this.barcode
+					}
+				)
+				if (code === 200) {
+					uni.showToast({
+						title: '缁戝畾鎴愬姛'
+					})
+					this.clear()
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+
+			},
+
+		}
+	}
+</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;
+	}
+
+	.uni-file-picker {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.uni-select__selector {
+		z-index: 999;
+	}
+
+	.tj {
+		height: auto;
+		padding: 6px 8px;
+		display: inline-block;
+		border-radius: 6px;
+	}
+
+	.item {
+		display: flex;
+		justify-content: center;
+	}
+
+	.item .cu-btn {
+		font-size: 26upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/workInfo/stationInfo.vue b/pages/workInfo/stationInfo.vue
new file mode 100644
index 0000000..da07f5b
--- /dev/null
+++ b/pages/workInfo/stationInfo.vue
@@ -0,0 +1,234 @@
+<template>
+	<view class="has-foot">
+		<form>
+			<view class="cu-form-group margin-top">
+				<view class="title">鎺ラ┏绔欑偣</view>
+				<input placeholder="璇锋壂鎻忔帴椹崇珯鐐规潯鐮�" v-model="barcode" ></input>
+				<text class='cuIcon-search text-blue' @click="search"></text>
+			</view>
+		</form>
+
+		<view class="cu-list det menu sm-border padding">
+			<block v-for="(item, index) in list" :key="index" @click="clickTaskItem(index)">
+				<view class="cu-list det menu" @click="clickTaskItem(index)">
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">绔欑偣缂栫爜锛�</text><text class="text-black">{{item.stationName}}</text>
+						</view>			
+					</view>
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">绔欑偣绫诲瀷锛�</text><text class="text-black ">{{item.type === 1 ? '鍏夌數绔欑偣' : '鏅�氱珯鐐�'}}</text>
+						</view>
+					</view>
+					<view class="cu-item">
+						<view class="content">
+							<text class="text-grey">绔欑偣鐘舵�侊細</text><text class="text-black ">{{item.status === 0 ? '姝e父' : '绂佺敤' }}</text>
+						</view>
+					</view>
+					<view class="cu-item">
+						<button class="cu-btn bg-red shadow-blur margin-left-xl justify-center" @click="popupSubmit">绂佺敤</button>
+						<button class="cu-btn bg-green shadow-blur margin-right-xl justify-center" @click="popupSubmit">瑙g</button>							
+							<!-- <text class="text-grey">瀹瑰櫒鍙凤細</text><text class="text-black ">{{item.anfme}}</text> -->
+						
+<!-- 						<view class="content margin-left-xl justify-center">
+						</view> -->
+					</view>
+				</view>
+			</block>
+		</view>
+
+<!-- 		<uni-popup ref="popup" class="cu-popup">
+			<view class="popup-content">
+				<view class="head">
+					<text>鎺ㄨ崘</text>
+					<text class='cuIcon-close text-red close' @click="close"></text>
+				</view>
+
+				<div class="body">
+					<view class="cu-list grid col-3 no-border">
+						<view class="item" v-for="el in range">
+							<view class="cu-btn round  sm" :class="[el===curCode?'bg-blue':'line-blue']"
+								@click="itemChange(el)">{{el}}</view>
+						</view>
+					</view>
+				</div>
+
+				<view class="cu-bar btn-group ">
+					<button class="cu-btn bg-blue shadow-blur" @click="popupSubmit">鎻愪氦</button>
+				</view>
+			</view>
+		</uni-popup> -->
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				container: '',
+				list: [],
+				range: [],
+				curCode: ''
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			async search() {
+				const {
+					code,
+					data,
+					msg
+				} = await request('/basStation/page', {
+					current: 1,
+					pageSize: 10000,
+					stationName: this.barcode
+				})
+				if (code === 200) {
+					 this.list = data.records
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+			},			
+			clickTaskItem(index){
+				let that = this
+				uni.navigateTo({
+					url: "./orderInItem",
+					// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+					success: function(res) {
+						res.eventChannel.emit('checkItem', {
+							data: that.list[index]
+						})
+					}
+					
+				});				
+			},
+
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []				
+				this.container = ''
+				this.barcode = ''
+			},
+
+			open() {
+				this.$refs.popup.open()
+			},
+
+			close() {
+				this.$refs.popup.close()
+			},
+
+			popupSubmit() {
+				this.$refs.popup.close()
+			},
+			itemChange(el) {
+				this.curCode = el
+			},
+
+			async confirm() {
+				if(this.barcode === '' || this.barcode ===null){
+					uni.showToast({
+						title: "鎺ラ┏绔欑爜涓嶈兘涓虹┖",
+						icon: "none",
+					})
+					return ;
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/AGV/staBind',{
+						barcode: this.container,
+						sta: this.barcode
+					}
+				)
+				if (code === 200) {
+					uni.showToast({
+						title: '缁戝畾鎴愬姛'
+					})
+					this.clear()
+				} else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+					})
+				}
+
+			},
+
+		}
+	}
+</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;
+	}
+
+	.uni-file-picker {
+		width: 100%;
+		margin-bottom: 10px;
+	}
+
+	.uni-select__selector {
+		z-index: 999;
+	}
+
+	.tj {
+		height: auto;
+		padding: 6px 8px;
+		display: inline-block;
+		border-radius: 6px;
+	}
+
+	.item {
+		display: flex;
+		justify-content: center;
+	}
+
+	.item .cu-btn {
+		font-size: 26upx;
+	}
+</style>
\ No newline at end of file
diff --git a/pages/workInfo/taskInfo.vue b/pages/workInfo/taskInfo.vue
new file mode 100644
index 0000000..951fbf6
--- /dev/null
+++ b/pages/workInfo/taskInfo.vue
@@ -0,0 +1,296 @@
+<template>
+	<view class="has-foot">
+		<form >
+<!-- 			<view class="flex solid-bottom padding-sm justify-between">
+				<view class="text-gray">&nbsp;璁㈠崟鍙凤細OS250807152830</view>				
+			</view> -->
+			<view class="cu-form-group" v-show="!isconfirm">
+				<view class="title">宸ヤ綔鍙�</view>
+				<input placeholder="璇烽�夋嫨宸ヤ綔鍙�" v-model="barcode" @input="search()" 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>
+		</form>	
+				
+
+		<view class="cu-list det menu sm-border  padding">
+			<block  v-for="(item, index) in list" :key="index" >
+				<view  class="cu-list det menu  "  @click="clickTaskItem(index)">
+					
+				
+				<view class="cu-bar bg-white solid-bottom">
+					<view class="action">
+						<view class="index">
+							{{index+1}}
+						</view>
+					</view>
+					<view class="content2">
+						<text class="text-gray margin-right-sm"><text class="text-black ">{{item.status$}}</text></text>
+					</view>
+				</view>
+
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">宸ヤ綔鍙凤細<text class="text-black ">{{item.orderCode}}</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.workQty}}</text></text>
+					</view>
+					<view class="content">
+						<text class="text-gray">鐩爣绔欑偣:<text class="text-black ">{{item.anfme}}</text></text>
+					</view>	
+				</view>
+				<view class="cu-item">
+					<view class="content">
+						<text class="text-gray">鐩爣瀹瑰櫒鍙�:<text class="text-black ">{{item.checkType$}}</text></text>
+					</view>
+				</view>
+				<view class="cu-item">						
+					<view class="content">
+						<text class="text-gray">宸ヤ綔鐘舵��:<text class="text-black ">{{item.checkType$}}</text></text>
+					</view>
+				</view>
+<!-- 				<view class="cu-item">
+					<view class="content">
+						<progress :percent="Math.trunc((item.workQty/item.anfme)*100) " show-info stroke-width="3" />
+					</view>
+				</view> -->
+					
+				</view>
+			</block>
+		</view>
+
+
+<!-- 		<view class="text-blue text-right padding-lr" v-show="isconfirm">
+			鏈鏀惰揣鎬绘暟閲�:{{allCount}}
+		</view>
+
+		<view class="cu-form-group " v-show="isconfirm">
+			<view class="title">鏀惰揣鍖�</view>
+			<uni-data-select v-model="whAreaId" :localdata="range" placement="top"
+				@change="selChange"></uni-data-select>
+		</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-blue shadow-blur" @click="next">鍑哄簱</button>
+		</view>
+
+	</view>
+</template>
+
+<script>
+	import {
+		request
+	} from '../../common/request.js'
+	import {
+		mapState,
+		mapMutations,
+		mapActions,
+		mapGetters
+	} from 'vuex';
+	export default {
+		data() {
+			return {
+				isClickItem:false,
+				clickItem:'',
+				QRbarcode:null,
+				barcode: '',
+				whAreaId: '',
+				list: [],
+				range: [],
+				isconfirm: false,							
+				itemStyle: {
+				        backgroundColor: '#42b983',				        
+				        borderColor: '#42b983'
+				},
+			}
+		},
+		computed: {
+			...mapState('user', ['dynamicFields']),
+			allCount() {
+				return this.list.reduce((acc, row) => +row.receiptQty + acc, 0)
+			}
+		},
+		mounted() {
+			this.search()
+		},
+		methods: {
+			clickTaskItem(index){
+				let that = this
+				
+				// uni.navigateTo({
+				// 	url: "./orderInItem",
+				// 	// 閫氳繃eventChannel鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+				// 	success: function(res) {
+				// 		res.eventChannel.emit('checkItem', {
+				// 			data: that.list[index]
+				// 		})
+				// 	}
+					
+				// });				
+			},
+			typeChange(e){
+				this.typeSelect = e.value
+				this.search()
+			},
+			async search() {
+				this.list = []
+				if(this.barcode === '' || this.barcode ===null){
+					this.barcode = 'OS2509030230';
+				}
+				const {
+					code,
+					data,
+					msg
+				} = await request('/outStockItem/page',{
+					orderId:this.barcode
+				}	
+				)
+				if (code === 200) {					
+					if (Object.keys(data).length === 0){
+						uni.showToast({
+							title: "鏈煡璇㈠埌璁㈠崟鏁版嵁",
+							icon: "none",
+							position: 'top'
+						})
+					}
+					this.list.push(...data)
+					
+				}else if(code == 401){
+					setTimeout(() => {
+						uni.removeStorageSync('token');
+						uni.reLaunch({
+							url: "/pages/login/login"
+						});
+					}, 1000);
+				}else {
+					uni.showToast({
+						title: msg,
+						icon: "none",
+						position: 'top'
+					})
+				}
+
+
+			},
+			clearCode() {
+				this.barcode = ''
+			},
+			remove(index) {
+				this.list.splice(index, 1);
+			},
+			clear() {
+				this.list = []
+				this.barcode = ''
+			},
+			next() {
+				if (this.list.length) {
+					this.isconfirm = true
+				} else {
+					uni.showToast({
+						icon: "none",
+						title: '鏈�夌墿鏂欐爣绛�'
+					})
+				}
+			},
+			prev() {
+				this.isconfirm = false
+			},
+			selChange(val) {
+				uni.setStorageSync('whAreaId', val)
+			},
+			async confirm() {
+				const newArr = this.list.map(item => {
+					return {
+						...item,
+						receiptQty: item.receiptQty === null ? 0 : +item.receiptQty
+					};
+				});
+				if (this.whAreaId === '') {
+					uni.showToast({
+						icon: "none",
+						title: '璇烽�夋嫨鏀惰揣鍖�'
+					})
+				} else {
+					const {
+						code,
+						data,
+						msg
+					} = await request('/orders/confirm', {
+						receipts: newArr,
+						whAreaId: this.whAreaId
+					})
+					if (code === 200) {
+						uni.showToast({
+							title: '鏀惰揣鎴愬姛'
+						})
+						this.list = []
+						this.barcode = ''
+						this.isconfirm = false
+					} else {
+						uni.showToast({
+							title: msg,
+							icon: "none",
+							position: 'top'
+						})
+					}
+
+				}
+			},
+			
+			DateChange(e, item) {
+				item.prodTime = e.detail.value
+			}
+		}
+	}
+</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;
+	}
+</style>
\ No newline at end of file
diff --git a/static/img/toux80.png b/static/img/toux80.png
new file mode 100644
index 0000000..4eace0a
--- /dev/null
+++ b/static/img/toux80.png
Binary files differ

--
Gitblit v1.9.1