yyb
3 天以前 1f017a1ebe252ef945e42dc868ac8c24e2b6d534
pages/product/report/components/saveForm.vue
@@ -1,261 +1,373 @@
<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%;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.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>
   <view>
      <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%;
            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: () => ({}),
    },
  },
  data() {
    return {
      show: false,
      form: {},
      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("请输入成品外径测量值");
      //   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;
      }
      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.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.$refs.uModal.cancel();
        })
        .finally(() => {
          this.loading = false;
          this.$refs.uModal.clearLoading();
        });
    },
    cancel() {
      this.show = false;
      this.form = {};
    },
    open(val) {
      this.show = true;
      this.form = val.data;
    },
  },
};
   export default {
      props: {
         operationTaskList: {
            type: Object,
            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.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();
            //   })
            //   .finally(() => {
            //     this.loading = false;
            //     this.$refs.uModal.clearLoading();
            //   });
            this.$emit("update", this.form);
            this.$refs.uModal.clearLoading();
            this.$refs.uModal.cancel();
         },
         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>
<style lang="scss" scoped>
::v-deep .u-model__title {
  padding-top: 0 !important;
}
   ::v-deep .u-model__title {
      padding-top: 0 !important;
   }
::v-deep .u-input__input {
  text-align: right !important;
}
@import "../index.scss";
   ::v-deep .u-input__input {
      text-align: right !important;
   }
   @import "../index.scss";
</style>