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 | 584 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 336 insertions(+), 248 deletions(-) diff --git a/pages/product/report/components/saveForm.vue b/pages/product/report/components/saveForm.vue index 364259c..ec1c7f5 100644 --- a/pages/product/report/components/saveForm.vue +++ b/pages/product/report/components/saveForm.vue @@ -1,241 +1,398 @@ <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 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.value0" - 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.value1" /> + <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.value1" - disabled + v-model="detailedList.suppliedQuantity" /> - </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.value1" /> - </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.value1" /> - </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> + </view> + </u-modal> + </view> </template> <script> export default { props: { - operationTaskId: { - type: String, + operationTaskList: { + type: Object, required: true, default: () => ({}), + }, + dutyId: { + type: Number, + required: true, + default: "", }, }, data() { return { + showModal: false, + detailedList: {}, show: false, - form: { - outerDiameter: null, - voltage: null, - speed: null, - pressure: null, - productionSpeed: null, - grossWeight: null, - reelNumber: null, - value7: null, - value8: null, - value9: null, - value10: null, - value11: null, - }, - // rules: { - // value1: [ - // { required: true, message: '璇疯緭鍏ラ暱搴�', trigger: ['blur', 'change'] }, - // ], - // value3: [ - // { required: true, message: '璇疯緭鍏ョ洏鍙�', trigger: ['blur', 'change'] }, - // ], - // value4: [ - // { required: true, message: '璇疯緭鍏ユ瘺閲�', trigger: ['blur', 'change'] }, - // ], - // value5: [ - // { required: true, message: '璇疯緭鍏ュ噣閲�', trigger: ['blur', 'change'] }, - // ], - // value7: [ - // { required: true, message: '璇疯緭鍏ユ垚鍝佸寰勬祴閲忓��', trigger: ['blur', 'change'] }, - // ], - // value8: [ - // { required: true, message: '璇疯緭鍏ラ��鐏數鍘�', trigger: ['blur', 'change'] }, - // ], - // value9: [ - // { required: true, message: '璇疯緭鍏ヨ浆閫�', trigger: ['blur', 'change'] }, - // ], - // value10: [ - // { required: true, message: '璇疯緭鍏ュ閮ㄦ皵鍘�', trigger: ['blur', 'change'] } - // ], - // value11: [ - // { required: true, message: '璇疯緭鍏ョ敓浜ч�熷害', trigger: ['blur', 'change'] } - // ] - // }, + form: {}, + ifsBatchNo: [], + productInputList: [], + loading: false, }; }, watch: { - show(val) { - if (val) { - this.$nextTick(() => { - // this.$refs.uFormSave.setRules(this.rules); - console.log("1222222"); - this.$u.api.workReporting - .operationTask({ - id: this.operationTaskId, - }) - .then((res) => { - console.log("res", res); - this.form = res.data.records; - }); - }); + "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("璇疯緭鍏ュ閮ㄦ皵鍘�"); + if (this.form.productInputList.length == 0) { + this.$u.toast("鎶曟枡鎵规涓嶈兘涓虹┖锛岃鎵爜鎶曟枡"); this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵�� return; } - if (!this.form.productionSpeed) { - 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.form, operationTaskId: this.operationTaskId }) + .submitPDA(this.operationTaskList) .then((res) => { - console.log("res", res); + 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 = []; }, - open() { + 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; + }); }, }, }; @@ -249,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