From 0043a1a24cbed3ddd40c56c7931da9c5d14e4bc2 Mon Sep 17 00:00:00 2001 From: yyb <995253665@qq.com> Date: 星期二, 19 八月 2025 17:09:40 +0800 Subject: [PATCH] PDA报工页面增加投料功能,扫描二维码取消获取产出记录列表,放开取消报工页面,编写取消报工逻辑,联调取消报工接口 --- pages/product/report/components/saveForm.vue | 507 ++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 329 insertions(+), 178 deletions(-) diff --git a/pages/product/report/components/saveForm.vue b/pages/product/report/components/saveForm.vue index a918cd4..ec1c7f5 100644 --- a/pages/product/report/components/saveForm.vue +++ b/pages/product/report/components/saveForm.vue @@ -1,115 +1,217 @@ <template> - <u-modal - v-model="show" - ref="uModal" - title="" - :show-cancel-button="true" - @confirm="confirm" - @cancel="cancel" - :async-close="true" - > - <view class="packing-registration-param"> - <scroll-view scroll-y="true" style="height: 100%"> + <view> + <u-modal + v-model="show" + ref="uModal" + title="" + :show-cancel-button="true" + @confirm="confirm" + @cancel="cancel" + :async-close="true" + :loading="loading" + > + <view class="packing-registration-param"> + <scroll-view + scroll-y="true" + style=" + height: 100%; + transform: translateZ(0); + -webkit-font-smoothing: antialiased; + " + > + <view class="packing-registration-param-view"> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鎵瑰彿</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input class="item-one item-two" v-model="form.outBatchNo" /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鎶曟枡鎵规</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input + class="item-one item-two" + v-model="form.ifsBatchNoArr" + disabled + /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">闀垮害</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input + class="item-one item-two" + v-model="form.overallLength" + /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">搴撲綅</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input + class="item-one item-two" + v-model="form.proposedLocation" + disabled + /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鐩樺彿</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input class="item-one item-two" v-model="form.reelNumber" /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鐩橀噸</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input class="item-one item-two" v-model="form.reelWeight" /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">姣涢噸</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input class="item-one item-two" v-model="form.grossWeight" /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鍑�閲�</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input + class="item-one item-two" + v-model="form.netWeight" + disabled + /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">搴熸枡</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input class="item-one item-two" v-model="form.waste" /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">宸ュ簭</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input + class="item-one item-two" + v-model="form.name" + disabled + /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鎴愬搧澶栧緞娴嬮噺鍊�</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input + class="item-one item-two" + v-model="form.outerDiameter" + /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">閫�鐏數鍘�</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input class="item-one item-two" v-model="form.voltage" /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">杞��</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input class="item-one item-two" v-model="form.speed" /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">澶栭儴姘斿帇</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input class="item-one item-two" v-model="form.pressure" /> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one item-two">鐢熶骇閫熷害</text> + </view> + <view class="packing-registration-param-item-right"> + <u-input + class="item-one item-two" + v-model="form.productionSpeed" + /> + </view> + </view> + </view> + </scroll-view> + </view> + </u-modal> + <u-modal + v-model="showModal" + title="" + :show-cancel-button="true" + :show-confirm-button="true" + @confirm="confirmTl" + @cancel="cancelTl" + > + <view class="packing-registration-param"> <view class="packing-registration-param-view"> <view class="packing-registration-param-item param-extra"> <view class="packing-registration-param-item-left"> - <text class="item-one">闀垮害</text> + <text class="item-one">鎵瑰彿</text> </view> <view class="packing-registration-param-item-right"> - <u-input class="item-one item-two" v-model="form.overallLength" /> + <text class="item-one item-two">{{ + detailedList.ifsBatchNo + }}</text> </view> </view> <view class="packing-registration-param-item param-extra"> <view class="packing-registration-param-item-left"> - <text class="item-one">搴撲綅</text> + <text class="item-one">闆朵欢鎻忚堪</text> + </view> + <view class="packing-registration-param-item-right"> + <text class="item-one item-two">{{ detailedList.partName }}</text> + </view> + </view> + <view class="packing-registration-param-item param-extra"> + <view class="packing-registration-param-item-left"> + <text class="item-one">鏁伴噺</text> </view> <view class="packing-registration-param-item-right"> <u-input class="item-one item-two" - v-model="form.proposedLocation" - disabled - /> - </view> - </view> - <view class="packing-registration-param-item param-extra"> - <view class="packing-registration-param-item-left"> - <text class="item-one">鐩樺彿</text> - </view> - <view class="packing-registration-param-item-right"> - <u-input class="item-one item-two" v-model="form.reelNumber" /> - </view> - </view> - <view class="packing-registration-param-item param-extra"> - <view class="packing-registration-param-item-left"> - <text class="item-one">姣涢噸</text> - </view> - <view class="packing-registration-param-item-right"> - <u-input class="item-one item-two" v-model="form.grossWeight" /> - </view> - </view> - <view class="packing-registration-param-item param-extra"> - <view class="packing-registration-param-item-left"> - <text class="item-one">鍑�閲�</text> - </view> - <view class="packing-registration-param-item-right"> - <u-input class="item-one item-two" v-model="form.theoryWeight" /> - </view> - </view> - <view class="packing-registration-param-item param-extra"> - <view class="packing-registration-param-item-left"> - <text class="item-one">宸ュ簭</text> - </view> - <view class="packing-registration-param-item-right"> - <u-input class="item-one item-two" v-model="form.name" /> - </view> - </view> - <view class="packing-registration-param-item param-extra"> - <view class="packing-registration-param-item-left"> - <text class="item-one">鎴愬搧澶栧緞娴嬮噺鍊�</text> - </view> - <view class="packing-registration-param-item-right"> - <u-input class="item-one item-two" v-model="form.outerDiameter" /> - </view> - </view> - <view class="packing-registration-param-item param-extra"> - <view class="packing-registration-param-item-left"> - <text class="item-one">閫�鐏數鍘�</text> - </view> - <view class="packing-registration-param-item-right"> - <u-input class="item-one item-two" v-model="form.voltage" /> - </view> - </view> - <view class="packing-registration-param-item param-extra"> - <view class="packing-registration-param-item-left"> - <text class="item-one">杞��</text> - </view> - <view class="packing-registration-param-item-right"> - <u-input class="item-one item-two" v-model="form.speed" /> - </view> - </view> - <view class="packing-registration-param-item param-extra"> - <view class="packing-registration-param-item-left"> - <text class="item-one">澶栭儴姘斿帇</text> - </view> - <view class="packing-registration-param-item-right"> - <u-input class="item-one item-two" v-model="form.pressure" /> - </view> - </view> - <view class="packing-registration-param-item param-extra"> - <view class="packing-registration-param-item-left"> - <text class="item-one item-two">鐢熶骇閫熷害</text> - </view> - <view class="packing-registration-param-item-right"> - <u-input - class="item-one item-two" - v-model="form.productionSpeed" + v-model="detailedList.suppliedQuantity" /> </view> </view> </view> - </scroll-view> - </view> - </u-modal> + </view> + </u-modal> + </view> </template> <script> @@ -120,59 +222,177 @@ required: true, default: () => ({}), }, + dutyId: { + type: Number, + required: true, + default: "", + }, }, data() { return { + showModal: false, + detailedList: {}, show: false, form: {}, + ifsBatchNo: [], + productInputList: [], + loading: false, }; + }, + watch: { + "form.grossWeight"(val) { + if (val === "") { + this.form.netWeight = ""; + } else if (this.form.reelWeight) { + this.form.netWeight = + parseFloat(val) - parseFloat(this.form.reelWeight); + } + }, + "form.reelWeight"(val) { + if (this.form.grossWeight && val) { + this.form.netWeight = + parseFloat(this.form.grossWeight) - parseFloat(val); + } + }, }, methods: { confirm() { - if (!this.form.outerDiameter) { - this.$u.toast("璇疯緭鍏ユ垚鍝佸寰勬祴閲忓��"); + if (this.loading) return; + // if (!this.form.outerDiameter) { + // this.$u.toast("璇疯緭鍏ユ垚鍝佸寰勬祴閲忓��"); + // this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� + // return; + // } + // if (!this.form.voltage) { + // this.$u.toast("璇疯緭鍏ラ��鐏數鍘�"); + // this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� + // return; + // } + // if (!this.form.speed) { + // this.$u.toast("璇疯緭鍏ヨ浆閫�"); + // this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� + // return; + // } + // if (!this.form.pressure) { + // this.$u.toast("璇疯緭鍏ュ閮ㄦ皵鍘�"); + // this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� + // return; + // } + // if (!this.form.productionSpeed) { + // this.$u.toast("璇疯緭鍏ョ敓浜ч�熷害"); + // this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� + // return; + // } + if (!this.form.outBatchNo) { + this.$u.toast("璇疯緭鍏ユ壒鍙�"); this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� return; } - if (!this.form.voltage) { - this.$u.toast("璇疯緭鍏ラ��鐏數鍘�"); + if (Number(this.form.netWeight) == 0) { + this.$u.toast("鍑�閲嶄笉涓�0"); this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� return; } - if (!this.form.speed) { - this.$u.toast("璇疯緭鍏ヨ浆閫�"); + if (!this.form.waste) { + this.$u.toast("璇疯緭鍏ュ簾鏂�"); this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� return; } - if (!this.form.pressure) { - this.$u.toast("璇疯緭鍏ュ閮ㄦ皵鍘�"); - this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� - return; - } - if (!this.form.productionSpeed) { - this.$u.toast("璇疯緭鍏ョ敓浜ч�熷害"); + if (this.form.productInputList.length == 0) { + this.$u.toast("鎶曟枡鎵规涓嶈兘涓虹┖锛岃鎵爜鎶曟枡"); this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� return; } this.operationTaskList.operationTaskId = this.operationTaskList.id; this.form.operationTaskId = this.operationTaskList.id; + this.form.status = this.operationTaskList.status; + this.form.Persons = this.operationTaskList.Persons; + this.form.productStaffIds = this.operationTaskList.productStaffIds; + this.form.productStaffs = this.operationTaskList.productStaffs; + this.form.dutyRecordId = this.dutyId; this.operationTaskList.productOutputList = []; // 鍒涘缓涓�涓┖鏁扮粍 this.operationTaskList.productOutputList.push(this.form); // 鍚戞暟缁勪腑娣诲姞鍏冪礌 console.log("this.operationTaskList", this.operationTaskList); + this.loading = true; this.$u.api.workReporting .submitPDA(this.operationTaskList) .then((res) => { - this.$emit("update"); + this.$emit("update",this.operationTaskList); this.$refs.uModal.cancel(); + }) + .finally(() => { + this.loading = false; + this.$refs.uModal.clearLoading(); }); }, cancel() { this.show = false; this.form = {}; + this.ifsBatchNo = []; + this.productInputList = []; + }, + cancelTl() { + this.showModal = false; + this.detailedList = {}; + }, + updateArray(arr, newObj) { + // 鏌ユ壘鏁扮粍涓槸鍚︽湁鐩稿悓鐨� id + let index = arr.findIndex(item => item.ifsBatchNo === newObj.ifsBatchNo); + + if (index !== -1) { + // 濡傛灉鎵惧埌鐩稿悓 id 鐨勫璞★紝鏇挎崲鍘熸湁瀵硅薄 + arr[index] = newObj; + } else { + // 濡傛灉娌℃湁鎵惧埌鐩稿悓 id 鐨勫璞★紝鐩存帴鎺ㄥ叆鏂板璞� + arr.push(newObj); + } + return arr; +}, + confirmTl() { + let ifsBatchNoArr = []; + let updatedArrayList = this.updateArray(this.productInputList, this.detailedList); + console.log("updatedArrayList", updatedArrayList); + // this.productInputList.push(updatedArrayList); + this.$set(this.form, "productInputList", this.productInputList); + + this.productInputList.forEach((item) => { + ifsBatchNoArr.push(item.ifsBatchNo) + }) + console.log("ifsBatchNoArr", ifsBatchNoArr); + // this.ifsBatchNo.push(ifsBatchNoArr); + this.$set(this.form, "ifsBatchNoArr", ifsBatchNoArr); + console.log("this.form", this.form); + this.showModal = false; + this.detailedList = {}; }, open(val) { this.show = true; this.form = val.data; + }, + // 鍥炴樉鎵爜鐨勪俊鎭�-鎶ュ伐鍗� + saveForm(val) { + this.$u.api.cancelReporting + .selInputPartInfoPDA({ + outBatchNo: val.BN, + partNo: val.PN, + moOn: this.operationTaskList.moOn, + }) + .then((res) => { + const list = { + suppliedQuantity: res.data.suppliedQuantity, + ifsBatchNo: res.data.ifsBatchNo, + partNo: res.data.partNo, + partName: res.data.partName, + locationNo: res.data.locationNo, + ifsLineItemNo: res.data.ifsLineItemNo, + serialNo: res.data.serialNo, + engChgLevel: res.data.engChgLevel, + ifsWdr: res.data.waivDevRejNo, + activitySeq: res.data.activitySeq, + }; + this.detailedList = list; + this.showModal = true; + }); }, }, }; @@ -186,74 +406,5 @@ ::v-deep .u-input__input { text-align: right !important; } -.packing-registration-param { - padding: 40rpx 30rpx 10rpx 30rpx; - height: 350px; - overflow: hidden; - - .packing-registration-param-title { - display: flex; - flex-direction: row; - align-items: center; - margin-bottom: 30rpx; - - .title-label { - margin-left: 14rpx; - font-size: 34rpx; - font-weight: bold; - color: #283e65; - } - } - - .packing-registration-param-view { - height: 177rpx; - background-color: #fff; - border-radius: 10rpx; - padding: 0rpx 23rpx; - margin-bottom: 30rpx; - - .packing-registration-param-item { - height: 90rpx; - border: 1px solid #adc8e4; - line-height: 90rpx; - display: flex; - justify-content: space-between; - border: none; - - .packing-registration-param-item-left { - .item-one { - font-size: 30rpx; - color: #666666; - } - } - - .packing-registration-param-item-right { - display: flex; - justify-content: space-between; - - .item-one { - font-size: 15rpx; - color: #060505; - margin-right: 6rpx; - } - - .item-two { - font-size: 15rpx; - color: #a6b4cc; - margin-right: 6rpx; - } - - .item-three { - font-size: 30rpx; - color: #214ded; - margin-right: 6rpx; - } - } - } - - .param-extra { - border-bottom: 1px solid #ededed; - } - } -} +@import "../index.scss"; </style> \ No newline at end of file -- Gitblit v1.9.3