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

---
 pages/product/outputRegister/addProductOut.vue |  506 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 506 insertions(+), 0 deletions(-)

diff --git a/pages/product/outputRegister/addProductOut.vue b/pages/product/outputRegister/addProductOut.vue
new file mode 100644
index 0000000..dd7401f
--- /dev/null
+++ b/pages/product/outputRegister/addProductOut.vue
@@ -0,0 +1,506 @@
+<template>
+	<view class="wrap">
+		<view class="row-list" v-if="info.type!='shift'">
+			<u-row justify="space-between" class="product-out-main-row">
+				<u-col span="4">
+					<span class="span-lable">浜哄憳</span>
+				</u-col>
+				<u-col span="8">
+					<view class="product-out-main-info">
+						<view>
+							<u-button size="mini" @click="toDutyPerson">鐐瑰嚮閫夋嫨</u-button>
+						</view>
+					</view>
+				</u-col>
+			</u-row>
+		</view>
+		<view class="row-list">
+			<u-form class="product-out-form" :model="productOutForm" ref="productOutForm" label-width="180"
+				:label-style="{paddingLeft:'10rpx'}">
+				<u-form-item label="闆朵欢缂栧彿">
+					<u-input v-model="productOutForm.partNo" disabled placeholder="" />
+				</u-form-item>
+				<u-form-item label="闆朵欢鍚嶇О">
+					<u-input v-model="productOutForm.partName" disabled placeholder="" />
+				</u-form-item>
+				<u-form-item label="鐩樻暟">
+					<input v-model="productOutForm.disNumber" placeholder="璇疯緭鍏ョ洏鏁�" type="digit" />
+				</u-form-item>
+				<u-form-item label="璧峰绫虫爣">
+					<input v-model="productOutForm.startMeterMark" placeholder="璇疯緭鍏ヨ捣濮嬬背鏍�" @blur="startMeterBlur"
+						type="digit" />
+				</u-form-item>
+				<u-form-item label="鎴绫虫爣">
+					<input v-model="productOutForm.endMeterMark" placeholder="璇疯緭鍏ユ埅姝㈢背鏍�" @blur="endMeterBlur"
+						type="digit" />
+				</u-form-item>
+				<u-form-item label="姣忕洏浜ч噺">
+					<u-input v-model="productOutForm.productQty" placeholder="璇疯緭鍏ユ瘡鐩樹骇閲�" disabled type="digit" />
+				</u-form-item>
+				<u-form-item label="鎶ュ簾鏁伴噺">
+					<input   v-model="productOutForm.scrapQty" placeholder="璇疯緭鍏ユ姤搴熸暟閲�" type="digit" />
+				</u-form-item>
+				<u-form-item label="杞藉叿缂栧彿">
+					<input v-model="productOutForm.reelNumber" placeholder="璇疯緭鍏ヨ浇鍏风紪鍙�" />
+				</u-form-item>
+				<u-form-item label="鍗曚綅">
+					<u-input v-model="productOutForm.unit" disabled placeholder="" />
+				</u-form-item>
+				<u-form-item label="鍒嗘鎻忚堪">
+					<input v-model="productOutForm.segmentDesc" />
+				</u-form-item>
+				<u-form-item label="鐢熶骇浜哄憳">{{productOutForm.staffName}}</u-form-item>
+				<u-form-item label="浜у嚭鏃ユ湡">
+					<u-input v-model="productOutForm.date" disabled />
+				</u-form-item>
+			</u-form>
+		</view>
+		<view class="product-out-bottom-view" style="margin-top: 15px;">
+			<u-button text="纭畾" type="success" size="medium"  @click="addProudctOut">
+				纭畾</u-button>
+		</view>
+	</view>
+</template>
+<script>
+	export default {
+
+		data() {
+
+			const currentDateTime = this.getDateTime();
+			return {
+				productOutForm: {
+					partNo: null,
+					partName: null,
+					intro: null,
+					date: currentDateTime,
+					staffName:""
+				},
+				info: {},
+				personInitList: [],
+				personBoardList: [],
+				products: []
+
+			};
+		},
+		onLoad(option) {
+			//type:shift  鎸夌彮缁�  person 鎸変汉鍛� 
+			this.info.type = option.type
+			this.info.dutyId = option.dutyId
+			this.info.workstationId = option.workstationId
+
+
+			this.productOutForm.workstationId = option.workstationId
+			this.productOutForm.operationTaskId = option.operationTaskId
+			this.productOutForm.partId = option.partId
+			this.productOutForm.partName = option.partName == "null" ? "" : option.partName
+			this.productOutForm.partNo = option.partNo == "null" ? "" : option.partNo
+			this.productOutForm.unit = option.unit == "null" ? "" : option.unit
+			//鑾峰彇褰撶彮浜哄憳
+			this.getPerson()
+		},
+		onShow() {
+
+
+		},
+		methods: {
+			getDateTime() {
+				let year = new Date().getFullYear(); //骞�
+				let month = new Date().getMonth() + 1; //娉ㄦ剰锛佹湀浠芥槸浠�0鏈堝紑濮嬭幏鍙栫殑锛屾墍浠ヨ+1;
+				let day = new Date().getDate(); //鏃�
+				let hour = new Date().getHours(); //鏃�
+				let minute = new Date().getMinutes(); //鍒�
+				let second = new Date().getSeconds(); //绉�
+				//鎷兼帴鏃ユ湡 YYYY/MM/DD HH:mm
+				let currentDate =
+					year +
+					'/' +
+					(month >= 10 ? month : '0' + month) +
+					'/' +
+					(day >= 10 ? day : '0' + day);
+				let currentTime =
+					(hour >= 10 ? hour : '0' + hour) +
+					':' +
+					(minute >= 10 ? minute : '0' + minute) +
+					':' +
+					(second >= 10 ? second : '0' + second);
+
+				return currentDate + " " + currentTime
+			},
+			async getPerson() {
+				let queryParam = {
+					id: this.info.workstationId
+				}
+
+				let res = await this.$u.api.outputRegister.getDutyRecordByWorkstationId(queryParam)
+
+				this.dutyForm = res.data
+				if (this.dutyForm && this.dutyForm.id) {
+
+					let queryUserParam = {
+						id: this.dutyForm.id
+					}
+					
+					let resUser = await this.$u.api.outputRegister.getPersonByDutyRecordId(queryUserParam)
+
+					let userList = resUser.data
+					if (userList.length > 0) {
+						this.personInitList = []
+						this.$set(this.productOutForm, 'staffName', "");
+						let staffName = ""
+						userList.map((item, index) => {
+
+							if (index == userList.length - 1) {
+								staffName = staffName + item.staffName
+							} else {
+								staffName = staffName + item.staffName + ","
+							}
+
+							let data = {
+								staffId: item.staffId,
+								staffName: item.staffName,
+								staffNo: item.staffNo,
+								checked: false
+							}
+
+							this.personInitList.push(data)
+						});
+
+						//type:shift  鎸夌彮缁�  person 鎸変汉鍛�
+						if (this.info.type == "shift") {
+							this.personBoardList = this.personInitList
+							this.$set(this.productOutForm, 'staffName', staffName);
+						} else {
+							this.personBoardList = []
+							this.$set(this.productOutForm, 'staffName', "");
+						}
+
+					}
+				}
+
+			},
+			setProducts() {
+				let productStaffs = []
+				let productStaffIds = []
+				let newProduct = {}
+				this.products = []
+				//type:shift  鎸夌彮缁�  person 鎸変汉鍛�
+				if (this.info.type == "shift") {
+					// 鎸夌彮缁勬姤宸ワ紝涓�鏉¤褰�
+					let staffName = ''
+					let staffNo = ''
+					for (let i = 0; i < this.personBoardList.length; i++) {
+						staffName += this.personBoardList[i].staffName + ','
+						staffNo += this.personBoardList[i].staffNo + ','
+						productStaffs.push(this.personBoardList[i].staffNo)
+						productStaffIds.push(this.personBoardList[i].staffId)
+					}
+
+					staffName = staffName.substring(0, staffName.length - 1)
+					staffNo = staffNo.substring(0, staffNo.length - 1)
+
+					newProduct = {}
+					newProduct.staffName = staffName
+					newProduct.staffNo = staffNo
+					newProduct.productNo = null
+					newProduct.partId = this.productOutForm.partId
+					newProduct.partNo = this.productOutForm.partNo
+					newProduct.partName = this.productOutForm.partName
+					newProduct.outBatchNo = null
+					newProduct.disNumber = this.productOutForm.disNumber
+					newProduct.productQty = 0
+					newProduct.sproductQty = 0
+					newProduct.ifsBatchNo = null
+					newProduct.unit = this.productOutForm.unit
+					newProduct.productStaffs = productStaffs
+					newProduct.productStaffIds = productStaffIds
+					newProduct.status = false
+					newProduct.systemNo = null
+					newProduct.date = this.productOutForm.date
+					newProduct.dutyRecordId = this.info.dutyId
+					newProduct.startMeterMark = this.productOutForm.startMeterMark
+					newProduct.endMeterMark = this.productOutForm.endMeterMark
+					newProduct.scrapQty = this.productOutForm.scrapQty
+					newProduct.segmentDesc = this.productOutForm.segmentDesc
+					newProduct.remark = null
+					newProduct.outBatchNo = null
+					newProduct.reelNumber = this.productOutForm.reelNumber
+					this.products.push(newProduct)
+
+				} else {
+					let newProduct
+					for (let i = 0; i < this.personBoardList.length; i++) {
+						newProduct = {}
+						productStaffs = []
+						productStaffIds = []
+						productStaffIds.push(this.personBoardList[i].staffId)
+						productStaffs.push(this.personBoardList[i].staffNo)
+						newProduct.staffName = this.personBoardList[i].staffName
+						newProduct.staffNo = this.personBoardList[i].staffNo
+						newProduct.productNo = null
+						newProduct.partId = this.productOutForm.partId
+						newProduct.partNo = this.productOutForm.partNo
+						newProduct.partName = this.productOutForm.partName
+						newProduct.outBatchNo = null
+						newProduct.disNumber = this.productOutForm.disNumber
+						newProduct.productQty = 0
+						newProduct.sproductQty = 0
+						newProduct.unit = this.productOutForm.unit
+						newProduct.productStaffs = productStaffs
+						newProduct.productStaffIds = productStaffIds
+						newProduct.status = true
+						newProduct.systemNo = null
+						newProduct.date = this.productOutForm.date
+						newProduct.dutyRecordId = this.info.dutyId
+						newProduct.startMeterMark = this.productOutForm.startMeterMark
+				 	newProduct.endMeterMark = this.productOutForm.endMeterMark
+						newProduct.reelNumber = this.productOutForm.reelNumber
+						newProduct.ifsBatchNo = null
+						newProduct.scrapQty = this.productOutForm.scrapQty
+						newProduct.segmentDesc = this.productOutForm.segmentDesc
+						newProduct.remark = null
+						this.products.push(newProduct)
+					}
+				}
+
+			},
+			toDutyPerson() {
+
+				if (this.personInitList.length > 0) {
+					uni.navigateTo({
+						url: '/pages/product/outputRegister/dutyPersonList?item=' + encodeURIComponent(JSON
+							.stringify(this.personInitList))
+					})
+				}
+			},
+			setProductPerson(userList) {
+				//type:shift  鎸夌彮缁�  person 鎸変汉鍛�
+				if (this.info.type == "person") {
+					//杩囨护鎺夐�変腑鐨勪汉鍛樹俊鎭�
+					userList = userList.filter(item => item.checked == true)
+					this.personBoardList = []
+					this.$set(this.productOutForm, 'staffName', "");
+					// this.personBoardList = userList
+					if (userList.length > 0) {
+						let staffName = ""
+						userList.map((item, index) => {
+
+							if (index == userList.length - 1) {
+								staffName = staffName + item.staffName
+							} else {
+								staffName = staffName + item.staffName + ","
+							}
+
+							let data = {
+								staffId: item.staffId,
+								staffName: item.staffName,
+								staffNo: item.staffNo,
+								checked: item.checked
+							}
+
+							this.personBoardList.push(data)
+						});
+						this.$set(this.productOutForm, 'staffName', staffName);
+					}
+				}
+			},
+			startMeterBlur(obj) {
+				if ((this.productOutForm.startMeterMark != "" ) && (this.productOutForm.endMeterMark!= "")) {
+					let qty = parseFloat(this.productOutForm.endMeterMark) - parseFloat(this.productOutForm.startMeterMark)
+					qty = parseFloat(qty.toFixed(4))
+					this.$set(this.productOutForm, 'productQty', qty);
+				}	
+			},
+			endMeterBlur(obj) {
+				
+				if ((this.productOutForm.startMeterMark != "" ) && (this.productOutForm.endMeterMark!= "")) {
+					let qty = parseFloat(this.productOutForm.endMeterMark) - parseFloat(this.productOutForm.startMeterMark)
+					qty = parseFloat(qty.toFixed(4))
+					this.$set(this.productOutForm, 'productQty', qty);
+				}
+			},
+			async addProudctOut() {
+								
+				// 鐢熶骇浜哄憳
+				if (this.productOutForm.staffName==""||this.productOutForm.staffName==undefined||this.productOutForm.staffName==null) {
+				
+					this.$u.toast('鐢熶骇浜哄憳涓嶈兘涓虹┖')
+					return
+				}
+                
+				//璁剧疆宸ュ崟淇℃伅
+				this.setProducts();
+
+				for (let i = 0; i < this.products.length; i++) {
+
+					// 鐩樻暟鏍¢獙
+					if (!this.isPositiveIntegerNumber(this.products[i].disNumber)) {
+
+						this.$u.toast('绗�' + (i + 1) + '琛岋紝銆愮洏鏁般�戣杈撳叆姝f暣鏁帮紒')
+						return
+					}
+					// 璧峰绫虫爣鏍¢獙
+					if (!this.isNumber(this.products[i].startMeterMark)) {
+						this.$u.toast('绗�' + (i + 1) + '琛岋紝銆愯捣濮嬬背鏍囥�戣杈撳叆闈炶礋鏁帮紝灏忔暟浣嶆渶澶�4浣嶏紒')
+						return
+					}
+					// 鎴绫虫爣鏍¢獙
+					if (!this.isNumber(this.products[i].endMeterMark)) {
+						this.$u.toast('绗�' + (i + 1) + '琛岋紝銆愭埅姝㈢背鏍囥�戣杈撳叆闈炶礋鏁帮紝灏忔暟浣嶆渶澶�4浣嶏紒')
+						return
+					}
+					// 鎴绫虫爣闇�澶т簬寮�濮嬬背鏍�
+					if (
+						Number(this.products[i].endMeterMark) <
+						Number(this.products[i].startMeterMark)
+					) {
+						this.$u.toast('绗�' + (i + 1) + '琛岋紝銆愭埅姝㈢背鏍囥�戦渶澶т簬銆愯捣濮嬬背鏍囥��')
+						return
+					}
+				}
+
+				// 褰撳墠鏄骇鍑虹殑鏂板
+				const list = []
+				for (let i = 0; i < this.products.length; i++) {
+					let productVo = {}
+					productVo.isChangeShift = false
+					productVo.id = null
+					productVo.workstationId = this.productOutForm.workstationId
+					productVo.operationTaskId = this.productOutForm.operationTaskId
+					productVo.discsNumber = this.products[i].disNumber
+					let productOuts = []
+					let productOut = {}
+					productOut.workstationId = this.productOutForm.workstationId
+					productOut.operationTaskId = this.productOutForm.operationTaskId
+					productOut.partId = this.products[i].partId
+					productOut.disNumber = this.products[i].disNumber
+					productOut.productQty = this.products[i].productQty
+					productOut.sproductQty = this.products[i].sproductQty
+					productOut.productStaffs = this.products[i].productStaffs
+					productOut.productStaffIds = this.products[i].productStaffIds
+					productOut.outBatchNo = this.products[i].outBatchNo
+					productOut.status = this.products[i].status
+					productOut.dutyRecordId = this.products[i].dutyRecordId
+					productOut.startMeterMark = this.products[i].startMeterMark
+					productOut.endMeterMark = this.products[i].endMeterMark
+
+					productOut.outBatchNo = this.products[i].outBatchNo
+					productOut.reelNumber = this.products[i].reelNumber
+					productOut.ifsBatchNo = this.products[i].ifsBatchNo
+					productOut.scrapQty = this.products[i].scrapQty
+					productOut.segmentDesc = this.products[i].segmentDesc
+					productOut.remark = this.products[i].remark
+
+					productOuts.push(productOut)
+					productVo.productOutputList = productOuts
+					list.push(productVo)
+				}				
+
+				let res = await this.$u.api.outputRegister.batchSaveProductMain(list)
+				let that = this
+			
+				if (res.code == 0) {
+					uni.showModal({
+						title: '鎻愮ず',
+						content: '鎻愪氦鎴愬姛',
+						showCancel: false,
+						success: function() {
+							that.refreshLastPage()
+						}
+					})
+
+				} else {
+					uni.showModal({
+						title: '鎻愮ず',
+						content: '鎻愪氦澶辫触',
+						showCancel: false,
+						success: function() {}
+					})
+				}
+			},
+			isNumber(value) {
+				var reg = /^[0-9]+(.[0-9]{1,4})?$/
+				if (
+					value == undefined ||
+					value == null ||
+					value === '' ||
+					value.trim === ''
+				) {
+					return false
+			 } else {
+					if (!reg.test(value)) {
+						return false
+					} else {
+						return true
+					}
+				}
+			},
+			isPositiveIntegerNumber(value) {
+				var reg = /^[1-9]\d*$/
+				if (
+					value == undefined ||
+					value == null ||
+					value === '' ||
+					value.trim === ''
+				) {
+					return false
+				} else {
+					if (!reg.test(value)) {
+						return false
+					} else {
+						return true
+					}
+				}
+			},
+			//鍒锋柊涓婁竴涓〉闈�
+			refreshLastPage() {
+				// 鍛婄煡 A.vue 鏇存柊鏁版嵁
+				// 鑾峰彇椤甸潰鏍�
+				let pages = getCurrentPages()
+
+				// 鑾峰彇涓婁竴椤垫爤
+				let prevPage = pages[pages.length - 2]
+
+				// 瑙﹀彂涓婁竴椤� upData 鍑芥暟(骞舵惡甯﹀弬鏁�)
+				prevPage.$vm.refreshTrackingRecord()
+
+				// 杩斿洖涓婁竴椤�
+				uni.navigateBack({
+					delta: 1
+				})
+			}
+		}
+	};
+</script>
+<style lang="scss">
+	.product-out-main-info {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+	}
+
+	.product-out-main-row {
+		padding-bottom: 2px;
+		padding-top: 2px;
+	}
+
+	.product-out-form {
+		.u-form-item {
+			padding: 7rpx;
+		}
+	}
+
+	.product-out-bottom-view {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		height: calc(100vh - var(--window-top) - var(--window-bottom) - 1062rpx);
+	}
+</style>
+
+
+<style scoped>
+	
+	.uni-input-placeholder{font-size: 12px;color: rgb(192, 196, 204);}
+	
+	>>>.uni-input-input{font-size: 12px;}
+</style>

--
Gitblit v1.9.3