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 |  484 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 377 insertions(+), 107 deletions(-)

diff --git a/pages/product/report/components/saveForm.vue b/pages/product/report/components/saveForm.vue
index b99e88b..ec1c7f5 100644
--- a/pages/product/report/components/saveForm.vue
+++ b/pages/product/report/components/saveForm.vue
@@ -1,132 +1,401 @@
 <template>
-  <u-modal v-model="show" ref="uModal" title="" :show-cancel-button="true" @confirm="confirm" @cancel="cancel"
-    :async-close="true">
-    <view style="padding: 20rpx;">
-      <u-form :model="form" ref="uFormSave" :label-width="280" :rules="rules" :error-type="['toast']">
-        <u-form-item label="鎵瑰彿" :border-bottom="false" prop="value0">
-          <u-input v-model="form.value0" disabled />
-        </u-form-item>
-        <u-form-item label="闀垮害" :border-bottom="false" prop="value1">
-          <u-input v-model="form.value1" />
-        </u-form-item>
-        <u-form-item label="搴撲綅" :border-bottom="false" prop="value2">
-          <u-input v-model="form.value2" disabled />
-        </u-form-item>
-        <u-form-item label="鐩樺彿" :border-bottom="false" prop="value3">
-          <u-input v-model="form.value3" />
-        </u-form-item>
-        <u-form-item label="姣涢噸" :border-bottom="false" prop="value4">
-          <u-input v-model="form.value4" />
-        </u-form-item>
-        <u-form-item label="鍑�閲�" :border-bottom="false" prop="value5">
-          <u-input v-model="form.value5" />
-        </u-form-item>
-        <u-form-item label="宸ュ簭" :border-bottom="false" prop="value6">
-          <u-input v-model="form.value6" disabled />
-        </u-form-item>
-        <u-form-item label="鎴愬搧澶栧緞娴嬮噺鍊�" :border-bottom="false" prop="value7">
-          <u-input v-model="form.value7" />
-        </u-form-item>
-        <u-form-item label="閫�鐏數鍘�" :border-bottom="false" prop="value8">
-          <u-input v-model="form.value8" />
-        </u-form-item>
-        <u-form-item label="杞��" prop="value9" :border-bottom="false">
-          <u-input v-model="form.value9" />
-        </u-form-item>
-        <u-form-item label="澶栭儴姘斿帇" prop="value10" :border-bottom="false">
-          <u-input v-model="form.value10" />
-        </u-form-item>
-        <u-form-item label="鐢熶骇閫熷害" prop="value11" :border-bottom="false">
-          <u-input v-model="form.value11" />
-        </u-form-item>
-      </u-form>
-    </view>
-
-  </u-modal>
+  <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>
+            </view>
+            <view class="packing-registration-param-item-right">
+              <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>
+            </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="detailedList.suppliedQuantity"
+              />
+            </view>
+          </view>
+        </view>
+      </view>
+    </u-modal>
+  </view>
 </template>
 
 <script>
 export default {
+  props: {
+    operationTaskList: {
+      type: Object,
+      required: true,
+      default: () => ({}),
+    },
+    dutyId: {
+      type: Number,
+      required: true,
+      default: "",
+    },
+  },
   data() {
     return {
+      showModal: false,
+      detailedList: {},
       show: false,
-      form: {
-        value0: null,
-        value1: null,
-        value2: null,
-        value3: null,
-        value4: null,
-        value5: null,
-        value6: 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);
-        });
+    "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() {
-      this.$refs.uFormSave.validate((valid) => {
-        if (valid) {
-          console.log('楠岃瘉閫氳繃');
-          // 鎵ц鎻愪氦閫昏緫锛堝API璇锋眰锛�
-          // 鎻愪氦鎴愬姛鍚庡叧闂ā鎬佹
+      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 (Number(this.form.netWeight) == 0) {
+        this.$u.toast("鍑�閲嶄笉涓�0");
+        this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵��
+        return;
+      }
+      if (!this.form.waste) {
+        this.$u.toast("璇疯緭鍏ュ簾鏂�");
+        this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵��
+        return;
+      }
+      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.operationTaskList);
           this.$refs.uModal.cancel();
-        } else {
-          console.log('楠岃瘉澶辫触');
-          // 鏄剧ず閿欒淇℃伅
-          this.$refs.uModal.clearLoading(); // 娓呴櫎鍔犺浇鐘舵��
-        }
-      });
+        })
+        .finally(() => {
+          this.loading = false;
+          this.$refs.uModal.clearLoading();
+        });
     },
     cancel() {
       this.show = false;
+      this.form = {};
+      this.ifsBatchNo = [];
+      this.productInputList = [];
     },
-    open() {
-      this.show = true;
+    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;
+        });
+    },
   },
-}
+};
 </script>
 
 <style lang="scss" scoped>
@@ -137,4 +406,5 @@
 ::v-deep .u-input__input {
   text-align: right !important;
 }
+@import "../index.scss";
 </style>
\ No newline at end of file

--
Gitblit v1.9.3