pages/product/report/components/saveForm.vue
@@ -1,124 +1,217 @@
<template>
  <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%">
  <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.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" />
            </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"
                v-model="detailedList.suppliedQuantity"
              />
            </view>
          </view>
        </view>
      </scroll-view>
    </view>
  </u-modal>
      </view>
    </u-modal>
  </view>
</template>
<script>
@@ -129,44 +222,94 @@
      required: true,
      default: () => ({}),
    },
    dutyId: {
      type: Number,
      required: true,
      default: "",
    },
  },
  data() {
    return {
      showModal: false,
      detailedList: {},
      show: false,
      form: {},
      loading: false
      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.loading) return;
      if (!this.form.outerDiameter) {
        this.$u.toast("请输入成品外径测量值");
      // 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);
@@ -174,7 +317,7 @@
      this.$u.api.workReporting
        .submitPDA(this.operationTaskList)
        .then((res) => {
          this.$emit("update");
          this.$emit("update",this.operationTaskList);
          this.$refs.uModal.cancel();
        })
        .finally(() => {
@@ -185,11 +328,72 @@
    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;
        });
    },
  },
};
</script>