From f26f29d84e0a68831a6af14dab3eec5500496d2e Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期三, 28 五月 2025 16:48:52 +0800
Subject: [PATCH] 初始化项目

---
 pages/wareHouse/materialReturn/index.vue |  641 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 641 insertions(+), 0 deletions(-)

diff --git a/pages/wareHouse/materialReturn/index.vue b/pages/wareHouse/materialReturn/index.vue
new file mode 100644
index 0000000..6dcbbad
--- /dev/null
+++ b/pages/wareHouse/materialReturn/index.vue
@@ -0,0 +1,641 @@
+<template>
+	<view class="page">
+	  <view class="warehouse-materialreturn-bg"/>
+	  <u-navbar title="鎵爜閫�鏂�" :background="background" :border-bottom="false" :title-bold="true" title-color="#000" back-icon-color="#000"/>
+	  <view class="warehouse-materialreturn-param">
+	  		  <view class="warehouse-materialreturn-param-view">
+	  			  <view class="warehouse-materialreturn-param-item">
+	  			  	<view class="warehouse-materialreturn-param-item-left">
+	  			  	  <text class="item-one">宸ヤ綔绔�</text>
+	  			  	</view>
+	  			  	<view class="warehouse-materialreturn-param-item-right">
+	  			  	   <text class="item-one" @click="toWorkstation">{{tailHandle.workstationName}}</text>
+					   <view class="scan" style="margin-right: 24rpx;" @click="goScan">
+					   </view>
+	  			  	   <u-icon name="arrow-right" color="#687792" size="28" @click="toWorkstation"></u-icon>
+	  			  	</view>
+	  			  </view>
+	  		  </view>
+	  </view>
+	  <view class="materialreturn-index-body-title">
+	  	<view>
+	  		<u-line style="border:5rpx solid #264DE9" length="33rpx"  direction="col" color="#264DE9" :hair-line="false"></u-line>
+	  	</view>
+	  	<view class="title-label">鏈哄彴鐗╂枡</view>
+	  </view>
+	  <view class="wrap"> 
+		<scroll-view class="warehouse-materialreturn-scroll-list" scroll-y="true">	
+		  <u-cell-group class="warehouse-materialreturn-scroll-list-group" :border="false">
+				<div class="tip" style="text-align:center;" v-if="list.length==0">-鏆傛棤鐗╂枡-</div>
+				<view class="content" v-for="(item, index) in list" :key="item.id" :index="index" @click="selectRow(item)">
+					<view class="content-header">
+							<view class="header-item">
+								<view class="content-header-icon-one"></view>
+								<view class="content-header-title">{{ item.partBatchNo }}</view>
+							</view>
+							<view class="header-item">
+								<view class="content-header-icon-two"></view>
+								<view class="content-header-title-ne">{{ item.partName }}</view>
+							</view>
+							<view :class="[item.isSelected?'header-item-toolbar-selected':'header-item-toolbar-unselected']">
+								
+							</view>
+						</view>
+						<view class="content-body">
+							<view class="row-list">
+								<view class="_label">
+									闆朵欢缂栧彿锛�
+								</view>
+								<view class="_content">
+									{{ item.partNo }}
+								</view>
+							</view>
+							<view class="row-list">
+								<view class="_label">
+									erp鎵� 鍙凤細
+								</view>
+								<view class="_content">
+									{{ item.ifsBatchNo }}
+								</view>
+							</view>
+							<view class="row-list">
+								<view class="_label">
+									鍙敤鏁伴噺锛�
+								</view>
+								<view class="_content">
+									<text class="_content-text">{{ item.availableStockQuantity+'('+item.unit+')' }}</text>
+								</view>
+							</view>
+							<view class="row-list">
+								<view class="_label s1">
+									閫�鏂欐暟閲忥細
+								</view>
+								<view class="_content _input">
+									<u-input placeholder="璇疯緭鍏ラ��鏂欐暟閲�" v-model="item.returnValue" type="digit"></u-input>
+									<view class="edit_icon"></view>
+								</view>
+							</view>
+						</view>
+				</view>
+				</u-cell-group>
+			</scroll-view>
+			
+		<view class="materialReturn-form-footer">
+			<u-button class="btn" type="primary" @click="goSubmit">閫�鍥�</u-button>
+		</view>
+		<scan></scan>	
+		<u-modal v-model="showConfirm" :title="''" content="鏄惁纭灏嗗熬鏂欐墸闄わ紝姝ゆ搷浣滀笉鍙�嗭紒"  @confirm="confirm" :show-cancel-button="true">
+			<view class="slot-content">
+				<view @click="showPicker=true" style="padding: 20rpx;">
+					<view>
+						<text style="margin-right: 20rpx;">閫�鏂欏簱浣�</text>
+						<text style="color: #e6db74;">{{active}}</text>
+					</view>
+				</view>
+			</view>
+		</u-modal>
+				<u-picker v-model="showPicker" mode="selector" :range="arr" range-key="locName" @confirm="confirmPicker"></u-picker>
+	</view>
+    </view>
+</template>
+<script>
+	import scan from "@/components/scan/scan.vue";
+	import content_bg from '@/static/custom/materialReturn/backBg.png'
+	export default {
+		components: {
+			scan
+		},
+		data() {
+			return {
+				background:{
+					backgroundImage: `url(${content_bg})`,
+					backgroundAttachment: 'fixed',
+					backgroundSize: '100% auto',
+					backgroundRepeat: 'no-repeat',
+				},
+				showPicker:false,
+				tailHandle:{
+					workstationId: null,
+					workstationNo: null,
+					workstationName: null
+				},	
+				list:[{partNo:'88.118.1/A0138298',partName:'鍦伴搧鍙婅建閬撶敤杞數缂嗗拰杞嚎 /1000V 1脳35 A0',partBatchNo:'231115000002N',ifsBatchNo:'231115000002N',availableStockQuantity:56.3,unit:'绫�',returnValue:56.6},
+				   {partNo:'BS-1704',partName:'涓夊眰鍏辨尋杈撴恫鐢ㄨ啘',partBatchNo:'231115000002N',ifsBatchNo:'231115000002N',availableStockQuantity:72.3,unit:'绫�',returnValue:84},
+				   {partNo:'BS-1704',partName:'涓夊眰鍏辨尋杈撴恫鐢ㄨ啘',partBatchNo:'231115000002N',ifsBatchNo:'231115000002N',availableStockQuantity:72.3,unit:'绫�',returnValue:84}
+				],
+				showConfirm:false,
+				arr:[],
+				active:'鐐瑰嚮閫夋嫨搴撲綅',
+				obj:{}
+			};
+		},
+		onLoad() {
+		
+		},
+		onShow() {
+			let that = this		
+			uni.$off('scan') // 姣忔杩涙潵鍏� 绉婚櫎鍏ㄥ眬鑷畾涔変簨浠剁洃鍚櫒
+			uni.$on('scan', function(data) {
+				//鎵爜鎴愬姛鍚庣殑鍥炶皟锛屼綘鍙互鍐欒嚜宸辩殑閫昏緫浠g爜鍦ㄨ繖閲�
+				console.log('鎵爜缁撴灉锛�', data.code);
+				// console.log(data.code.replace(/\n/g,'').replace(/\s*/g,''))
+				// console.log('鎵爜缁撴灉1锛�', JSON.parse(data.code.replace(/\n/g,"").replace(/\s*/g,'')));
+								
+				that.loadList(data.code);
+				that.$forceUpdate();
+			})
+		},
+		onNavigationBarButtonTap(e) {
+			this.goScan()
+		},
+		methods: {
+			confirmPicker(val) {
+				this.obj = {}
+				this.active = this.arr[val[0]].locName
+				this.obj = this.arr[val[0]]
+			},
+			goScan(){
+				 //let scanresult={"part_no":"88.118.1/A0044193","package_code":"TP092022101200001","unit_meas":"璺�","wdr":"*","lot_batch_no":"*","qty_arrived":12}
+				 //this.scanHandle(JSON.stringify(scanresult))
+				
+				uni.scanCode({
+					scanType: ['qrCode'],
+					success: res => {
+						try {
+							console.log('鎵爜缁撴灉锛�', res);
+							this.scanHandle(res.result)
+						} catch (e) {}
+					}
+				});
+			},
+			//鏍规嵁鏈哄彴鍙凤紝鏌ヨ鏈哄彴淇℃伅锛屽啀鏌ヨ鐗╂枡淇℃伅
+			scanHandle(workstationNo){
+				if(workstationNo!=''){
+					this.$u.api.pigxFeed.fetchWorkstationList({workstationNo:workstationNo}).then(resp => {
+						
+						if (!resp.data.records || resp.data.records.length == 0) {
+							this.$u.toast('銆�'+workstationNo+'銆�,鏈煡璇㈠埌鏈哄彴淇℃伅')
+						}else{
+							let workstationList=resp.data.records
+							let scanWorkstationInfo=workstationList[0]
+							this.tailHandle.workstationId = scanWorkstationInfo.id
+							this.tailHandle.workstationNo = scanWorkstationInfo.workstationNo
+							this.tailHandle.workstationName = scanWorkstationInfo.name
+							this.list=[]
+							this.$u.api.returnMaterial.getFeedingStockByWorkstationNo({workstationNo:scanWorkstationInfo.workstationNo}).then(res => {
+												   let reList = []					   
+												   reList = res.data;	
+												   if(reList.length!=0)
+													{
+														// 鎸夊彲鐢ㄦ暟閲忔帓涓簭
+														reList.sort(this.compare('availableStockQuantity'))
+														reList.forEach((item)=>{
+															this.list.push({
+																locationId:item.locationId,
+																locNo:item.locNo,
+																partBatchNo:item.partBatchNo,
+																partId:item.partId,
+																partNo:item.partNo,
+																partName:item.partName,
+																availableStockQuantity:item.availableStockQuantity,
+																unit:item.unit,
+																ifsBatchNo:item.ifsBatchNo,
+																id:item.id,
+																systemNo:item.systemNo,
+																isSelected:false
+															})
+														})
+													}
+							})
+						}								
+					})
+				}else{
+					this.$u.toast('鏈壂鎻忓埌鏈哄彴鍙�')
+				}
+			},
+			selectRow(stock){
+				stock.isSelected=!stock.isSelected	
+				if(stock.isSelected) {
+					stock.returnValue = stock.availableStockQuantity
+				} else {
+					stock.returnValue = ''
+				}
+				/*this.list.forEach((item,index)=>{
+					if(item.id ==stock.id){
+						this.list.splice(index,1)
+						return;
+					}
+				})*/
+				//if(stock.isSelected){
+					//灞曠ず鍦ㄥ垪琛ㄦ渶涓婃柟
+				//	this.list.unshift(stock)
+				//}else{
+					//灞曠ず鍦ㄥ垪琛ㄦ渶涓嬫柟
+				//	this.list.push(stock)
+				//}
+				
+			},
+			setWorkstation(workstation) {
+				this.list=[]
+				this.tailHandle.workstationId = workstation.id
+				this.tailHandle.workstationNo = workstation.workstationNo
+				this.tailHandle.workstationName = workstation.name
+				this.$u.api.returnMaterial.getFeedingStockByWorkstationNo({workstationNo:workstation.workstationNo}).then(res => {
+									   let reList = []					   
+									   reList = res.data;	
+									   if(reList.length!=0)
+										{
+											// 鎸夊彲鐢ㄦ暟閲忔帓涓簭
+											reList.sort(this.compare('availableStockQuantity'))
+											reList.forEach((item)=>{
+												this.list.push({
+													locationId:item.locationId,
+													locNo:item.locNo,
+													partBatchNo:item.partBatchNo,
+													partId:item.partId,
+													partNo:item.partNo,
+													partName:item.partName,
+													availableStockQuantity:item.availableStockQuantity,
+													unit:item.unit,
+													ifsBatchNo:item.ifsBatchNo,
+													id:item.id,
+													systemNo:item.systemNo,
+													isSelected:false
+												})
+											})
+										}
+				});
+			},
+			toWorkstation() {
+				uni.navigateTo({
+					url: '/pages/product/tailHandle/workstationList'
+				})
+			},
+			loadList(sanCode) {
+				let that = this
+				if(sanCode!="")
+				{
+					//鏍规嵁鎵叆鐨勫瓧绗︿覆淇℃伅锛屽垽鏂壂鐨勬槸鏉″舰鐮侊紝杩樻槸浜岀淮鐮�
+					let snNo
+					if (sanCode.indexOf('sn_no') != -1) {
+					    // 浜岀淮鐮�
+					    const scanContentJson = JSON.parse(
+					        sanCode.replace(/\n/g, '').replace(/\s*/g, '')
+					    )
+						snNo=scanContentJson.sn_no
+					    
+					} else {
+					    // 鏉″舰鐮�
+					    snNo = sanCode										    
+					}				   
+				    //鏍规嵁sn鍙烽�変腑鐗╂枡
+					let exsitMaterial=this.list.find((item)=>{
+						return item.partBatchNo==snNo
+					})
+					if(exsitMaterial){
+						exsitMaterial.isSelected=true
+						/*this.list.forEach((item,index)=>{
+							if(item.id ==exsitMaterial.id){
+								this.list.splice(index,1)
+								return;
+							}
+						})*/
+						//灞曠ず鍦ㄥ垪琛ㄦ渶涓婃柟
+						//this.list.unshift(exsitMaterial)
+						
+					}
+				}			
+			},
+			goSubmit(){
+				let stockIds = []
+				this.list.forEach((item) => {
+					if(item.isSelected){
+						stockIds.push(item)
+					}
+				})
+				if(stockIds.length>0){
+					this.showConfirm=true
+					this.$u.api.returnMaterial.getReturnLocations({workstationId:this.tailHandle.workstationId}).then((res) => {
+						console.log(res);
+						console.log(stockIds);
+						this.arr = res.data
+					})
+				} else {
+					this.$u.toast('璇烽�夋嫨闇�鍙戞斁鐨勭墿鏂�!')
+				}
+			},
+			confirm(){
+				let stockIds = []
+				if(this.active === '鐐瑰嚮閫夋嫨搴撲綅') {
+					this.$u.toast('璇烽�夋嫨搴撲綅')
+					this.showConfirm = true
+				} else {
+					this.list.forEach((item) => {
+						if(item.isSelected){
+							stockIds.push({
+								id:item.id,
+								partBatchNo:item.partBatchNo,
+								partId:item.partId,
+								returnLocationId:this.obj.id,
+								returnQuantity:item.returnValue,
+								systemNo:item.systemNo,
+								workstationId:this.tailHandle.workstationId
+							})
+						}
+					})
+					if(stockIds.length>0){
+						this.$u.api.returnMaterial.returnMaterial(stockIds).then(res => {
+							let reData = res.data;
+							this.$u.toast('閫�鏂欐垚鍔�!')
+							this.getWorkstationMaterial(this.tailHandle.workstationNo)
+						})	
+					}
+				}
+			},
+			getWorkstationMaterial(workstationNo){
+				this.list=[]
+				this.$u.api.returnMaterial.getFeedingStockByWorkstationNo({workstationNo:workstationNo}).then(res => {
+									   let reList = []					   
+									   reList = res.data;	
+									   if(reList.length!=0)
+										{
+											// 鎸夊彲鐢ㄦ暟閲忔帓涓簭
+											reList.sort(this.compare('availableStockQuantity'))
+											reList.forEach((item)=>{
+												this.list.push({
+													locationId:item.locationId,
+													locNo:item.locNo,
+													partBatchNo:item.partBatchNo,
+													partId:item.partId,
+													partNo:item.partNo,
+													partName:item.partName,
+													availableStockQuantity:item.availableStockQuantity,
+													unit:item.unit,
+													ifsBatchNo:item.ifsBatchNo,
+													id:item.id,
+													systemNo:item.systemNo,
+													isSelected:false
+												})
+											})
+										}
+				});
+			},
+			compare(pro){
+				return function(obj1, obj2) {
+				    const val1 = obj1[pro]
+				    const val2 = obj2[pro]
+				    if (val2 < val1) {
+				      // 姝e簭
+				      return 1
+				    } else if (val2 > val1) {
+				      return -1
+				    } else {
+				      return 0
+				    }
+				  }
+			}
+		}
+	};
+</script>
+<style lang="scss" scoped>	
+    .warehouse-materialreturn-bg{
+		background-color: #F6F9FF;
+		background-image: url('~@/static/custom/materialReturn/backBg.png');
+		// background: linear-gradient(180deg,rgba(206,227,254,1),rgba(206,227,254,1) 20%,rgba(206,227,254,0.5) 40%,rgba(206,227,254,0.25) 60%,rgba(206,227,254,0.08) 80%,rgba(206,227,254,0));
+		padding: 0 20rpx;
+		background-attachment: fixed;
+		background-size: 100% auto;
+		background-repeat: no-repeat;
+		position: fixed;
+		top: 0;
+		bottom: 0;
+		width: 100%;
+		z-index: -1;
+	}
+	
+	.warehouse-materialreturn-param{
+		padding: 50rpx 30rpx 0rpx 30rpx;
+		.warehouse-materialreturn-param-view{
+			height: 100rpx;
+			background: rgba(255,255,255,0.61);
+			box-shadow: 0rpx 6rpx 8rpx 0rpx rgba(110,120,135,0.09);
+			border-radius: 10rpx;
+			padding:0rpx 23rpx;
+			margin-bottom: 30rpx;
+			.warehouse-materialreturn-param-item{
+				height: 100rpx;
+				border: 1px solid #ADC8E4;
+				line-height: 100rpx;
+				display:flex;
+				justify-content: space-between;
+				border: none;
+				.warehouse-materialreturn-param-item-left{
+					.item-one{
+						font-size: 30rpx;
+						color: #4F4F4F;
+					}
+				}
+				.warehouse-materialreturn-param-item-right{
+					display: flex;
+					align-items: center;
+					.item-one{
+						font-size: 30rpx;
+						color: #333333;
+						margin-right: 6rpx;
+					}
+					.item-two{
+						font-size: 30rpx;
+						color: #A6B4CC;
+						margin-right: 6rpx;
+					}
+					.item-three{
+						font-size: 30rpx;
+						color: #214DED;
+						margin-right: 6rpx;
+					}
+					.scan{
+						background-image: url('~@/static/custom/materialReturn/scan.png');
+						background-size: 100% auto;
+						background-repeat: no-repeat;
+						height:32rpx;
+						width:32rpx;
+					}
+				}
+			}
+			.param-extra{
+				border-bottom: 1px solid #E8EBEE;
+			}
+		}
+	}
+	
+	.materialreturn-index-body-title{
+		padding: 0rpx 30rpx 0rpx 30rpx;
+		margin-bottom: 32rpx;
+		display: flex;
+		flex-direction: row;
+		align-items: center;
+		.title-label{
+			margin-left: 14rpx;
+			font-size: 34rpx;
+			font-weight: bold;
+			color: #283E65;
+		}
+	}
+	
+	.wrap .warehouse-materialreturn-scroll-list{
+		height:calc(100vh - var(--window-top) - var(--window-bottom) - 494rpx);
+	    width:100%;
+	}
+	
+	.warehouse-materialreturn-scroll-list-group{
+		::v-deep .u-cell-item-box {
+			background-color:rgba(250,252,255,0.36) !important;
+			padding:0rpx 30rpx ;
+		}
+		.content {
+			font-size: 12px;
+			background-color: #FFFFFF;
+			box-sizing: border-box;
+			border-radius: 10rpx;
+			margin: 0rpx 0rpx 24rpx;
+			height: 382rpx;
+			padding: 10rpx 20rpx;
+			box-shadow:0rpx 6rpx 12rpx 2rpx rgba(127, 127, 127, 0.1) !important;
+			position:relative;
+			.content-header{
+				.header-item{
+					height: 50rpx;
+					display: flex;
+					align-items:center;
+					.content-header-icon-one{
+						background-image: url('~@/static/custom/materialReturn/label-icon-1.png');
+						background-size: 100% auto;
+						background-repeat: no-repeat;
+						height:28rpx;
+						width:28rpx;
+					}
+					.content-header-icon-two{
+						background-image: url('~@/static/custom/materialReturn/label-icon-2.png');
+						background-size: 100% auto;
+						background-repeat: no-repeat;
+						height:28rpx;
+						width:28rpx;
+					}
+					.content-header-title{
+						margin-left: 11rpx;
+						font-size: 26rpx;
+						font-weight: bold;
+						color: #333333;
+					}
+					.content-header-title-ne{
+						margin-left: 11rpx;
+						font-size: 26rpx;
+						color: #333333;
+					}
+			    }
+				.header-item-toolbar-selected{
+					position: absolute;
+					background-image: url('~@/static/custom/materialReturn/selected-btn-1.png');
+					background-size: 100% auto;
+					background-repeat: no-repeat;
+					height:50rpx;
+					width:50rpx;
+					right:20rpx;
+					top:12rpx;
+					display: flex;
+					justify-content: flex-end;
+					padding-top: 10rpx;
+					padding-right: 18rpx;
+				}
+				.header-item-toolbar-unselected{
+					position: absolute;
+					background-image: url('~@/static/custom/materialReturn/unselected-btn-1.png');
+					background-size: 100% auto;
+					background-repeat: no-repeat;
+					height:50rpx;
+					width:50rpx;
+					right:20rpx;
+					top:12rpx;
+					display: flex;
+					justify-content: flex-end;
+					padding-top: 10rpx;
+					padding-right: 18rpx;
+				}
+			}
+			
+			.content-body{
+				height:250rpx;
+				background: #F5F9FF;
+				border-radius: 10rpx;
+				padding: 25rpx 23rpx;
+				.row-list {
+					height: 50rpx;
+					display: flex;
+					flex-direction: row;
+					padding: 0px;
+					align-items: center;
+					justify-content: space-between;
+				}
+				.row-list ._label {
+					display: flex;
+					color: #666666;
+					font-size:26rpx;
+					align-items: center;
+					width: 170rpx;
+				}
+				
+				.row-list ._content {
+					text-align: right;
+					color: #909399;
+					font-size: 24rpx;
+					._content-text{
+						color:#214ded;
+					}
+				}
+				.row-list ._input {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					border-bottom: 1px solid #4FA0FF;
+					height: 56rpx;
+					.edit_icon{
+						background-image: url('~@/static/custom/materialReturn/icon_edit.png');
+						background-size: 100% auto;
+						background-repeat: no-repeat;
+						height:26rpx;
+						width:26rpx;
+					}
+					::v-deep .uni-input-input{
+						color:#D35651;
+					}
+				}
+				
+				.row-list .s1 {
+					display: flex;
+					color: #214DED;
+					font-size:26rpx;
+					align-items: center;
+					width: 170rpx;
+				}
+			}
+		}
+	}
+	
+	.materialReturn-form-footer{
+		display: flex;
+		margin-top: 10rpx;
+		margin-bottom: 10rpx;
+		margin-left: 20rpx;
+		margin-right: 20rpx;
+		padding-bottom: 14rpx;
+		.btn {
+		  flex: 1;
+		  margin: 10rpx;
+		  background: #214DED;
+		  box-shadow: 0rpx 6rpx 8rpx 0rpx rgba(4,49,212,0.3);
+		  font-weight: bold;
+		  color: #FEFEFE;
+		  font-family: PingFang SC;
+		}
+	}
+</style>

--
Gitblit v1.9.3