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