<template> 
 | 
  <!-- 核磅录入 --> 
 | 
  <div class="page"> 
 | 
    <view class="packing-registration-bg" /> 
 | 
    <u-navbar 
 | 
      title="核磅录入" 
 | 
      :background="background" 
 | 
      :border-bottom="false" 
 | 
      :title-bold="true" 
 | 
      title-color="#000" 
 | 
      back-icon-color="#000" 
 | 
    /> 
 | 
    <u-form 
 | 
      :model="form" 
 | 
      ref="uForm" 
 | 
      :label-width="200" 
 | 
      :rules="rules" 
 | 
      :error-type="['toast']" 
 | 
      class="uForm" 
 | 
    > 
 | 
      <u-form-item 
 | 
        label="核磅单号" 
 | 
        :border-bottom="false" 
 | 
        prop="verificationNo" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input 
 | 
          v-model="form.verificationNo" 
 | 
          type="select" 
 | 
          placeholder="请选择核磅单号" 
 | 
          @click="openList" 
 | 
        /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        label="产品类型" 
 | 
        :border-bottom="false" 
 | 
        prop="productType" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input 
 | 
          v-model="productTypeMap[form.productType] || form.productType" 
 | 
          placeholder="" 
 | 
          disabled 
 | 
        /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        label="车牌号" 
 | 
        :border-bottom="false" 
 | 
        prop="licensePlate" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input v-model="form.licensePlate" placeholder="" disabled /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        label="发货通知单1" 
 | 
        :border-bottom="false" 
 | 
        prop="shippingNoticeNo1" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input v-model="form.shippingNoticeNo1" placeholder="" disabled /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        label="客户名称1" 
 | 
        :border-bottom="false" 
 | 
        prop="customerName1" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input v-model="form.customerName1" placeholder="" disabled /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        label="发货通知单2" 
 | 
        :border-bottom="false" 
 | 
        prop="shippingNoticeNo2" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input v-model="form.shippingNoticeNo2" placeholder="" disabled /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        label="客户名称2" 
 | 
        :border-bottom="false" 
 | 
        prop="customerName2" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input v-model="form.customerName2" placeholder="" disabled /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        label="司磅员" 
 | 
        :border-bottom="false" 
 | 
        prop="weighingOperator" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input v-model="form.weighingOperator" placeholder="" disabled /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        label="叉车司机" 
 | 
        :border-bottom="false" 
 | 
        prop="forkliftOperator" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input v-model="form.forkliftOperator" placeholder="" disabled /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        label="核磅记录" 
 | 
        :border-bottom="false" 
 | 
        prop="value8" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
        <u-input type="select" placeholder="" @click="openNuclearScaleRecord" /> 
 | 
      </u-form-item> 
 | 
      <u-form-item 
 | 
        :label="`扫码记录(${ScanCodeRecord.length}条):`" 
 | 
        :border-bottom="false" 
 | 
        prop="shippingNoticeNo1" 
 | 
        :label-width="260" 
 | 
        style="font-size: small" 
 | 
      > 
 | 
      </u-form-item> 
 | 
    </u-form> 
 | 
    <view class="wrap"> 
 | 
      <scroll-view class="packing-registration-scroll-list" scroll-y="true"> 
 | 
        <u-cell-group 
 | 
          class="packing-registration-scroll-list-group" 
 | 
          :border="false" 
 | 
        > 
 | 
          <view 
 | 
            class="content" 
 | 
            v-for="(item, index) in ScanCodeRecord" 
 | 
            :key="index" 
 | 
            :index="index" 
 | 
            @click="cancelReport(item)" 
 | 
          > 
 | 
            <view class="content-header"> 
 | 
              <view class="content-header-title">{{ ScanCodeRecord.length - index }}</view> 
 | 
            </view> 
 | 
            <view class="content-body"> 
 | 
              <view class="row-list"> 
 | 
                <view class="_label"> 
 | 
                  <view class="_label-name">批号:</view> 
 | 
                </view> 
 | 
                <view class="_content"> 
 | 
                  {{ item.outBatchNo }} 
 | 
                </view> 
 | 
              </view> 
 | 
              <view class="row-list"> 
 | 
                <view class="_label"> 
 | 
                  <view class="_label-name">零件描述:</view> 
 | 
                </view> 
 | 
                <view class="_content"> 
 | 
                  {{ item.partName }} 
 | 
                </view> 
 | 
              </view> 
 | 
              <view class="row-list"> 
 | 
                <view class="_label"> 
 | 
                  <view class="_label-name">零件号:</view> 
 | 
                </view> 
 | 
                <view class="_content"> 
 | 
                  {{ item.partNo }} 
 | 
                </view> 
 | 
              </view> 
 | 
              <view class="row-list"> 
 | 
                <view class="_label"> 
 | 
                  <view class="_label-name">毛重:</view> 
 | 
                </view> 
 | 
                <view class="_content"> 
 | 
                  {{ item.grossWeight }} 
 | 
                </view> 
 | 
              </view> 
 | 
              <view class="row-list"> 
 | 
                <view class="_label"> 
 | 
                  <view class="_label-name">盘重:</view> 
 | 
                </view> 
 | 
                <view class="_content"> 
 | 
                  {{ item.tareWeight }} 
 | 
                </view> 
 | 
              </view> 
 | 
              <view class="row-list"> 
 | 
                <view class="_label"> 
 | 
                  <view class="_label-name">净重:</view> 
 | 
                </view> 
 | 
                <view class="_content"> 
 | 
                  {{ item.netWeight }} 
 | 
                </view> 
 | 
              </view> 
 | 
            </view> 
 | 
          </view> 
 | 
        </u-cell-group> 
 | 
      </scroll-view> 
 | 
    </view> 
 | 
    <!-- 铜杆 --> 
 | 
    <u-modal 
 | 
      v-model="showModal" 
 | 
      title="" 
 | 
      :show-cancel-button="true" 
 | 
      :show-confirm-button="true" 
 | 
      @confirm="confirmDt" 
 | 
      @cancel="cancelDt" 
 | 
    > 
 | 
      <view class="popup-content"> 
 | 
        <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"> 
 | 
                <u-input 
 | 
                type="number" 
 | 
                  class="item-one item-two" 
 | 
                  v-model="modalList.verificationWeight" 
 | 
                /> 
 | 
              </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 
 | 
                type="number" 
 | 
                  class="item-one item-two" 
 | 
                  v-model="modalList.forkliftWeight" 
 | 
                /> 
 | 
              </view> 
 | 
            </view> 
 | 
          </view> 
 | 
        </view> 
 | 
      </view> 
 | 
    </u-modal> 
 | 
    <u-button 
 | 
      type="primary" 
 | 
      class="bottom-button" 
 | 
      @click="submit" 
 | 
      :disabled="ScanCodeRecord.length == 0" 
 | 
      v-show="form.productType != 'TG01'" 
 | 
      >提交</u-button 
 | 
    > 
 | 
    <u-modal 
 | 
      v-model="show" 
 | 
      @confirm="confirm" 
 | 
      content="是否确认提交" 
 | 
      show-cancel-button 
 | 
    ></u-modal> 
 | 
    <saveForm ref="saveForm" :operationTaskList="form" @update="handleUpdate" /> 
 | 
    <scan></scan> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import scan from "@/components/scan/scan.vue"; 
 | 
import content_bg from "@/static/custom/packing/backBg.png"; 
 | 
import saveForm from "./saveForm.vue"; 
 | 
export default { 
 | 
  components: { 
 | 
    scan, 
 | 
    saveForm, 
 | 
  }, 
 | 
  data() { 
 | 
    return { 
 | 
      commitList: [], 
 | 
      modalList: {}, 
 | 
      showModal: false, 
 | 
      productTypeMap: { 
 | 
        DTO1: "导体", 
 | 
        TG01: "铜杆", 
 | 
        DT02: "导体2.6", 
 | 
      }, 
 | 
      ScanCodeRecord: [], 
 | 
      background: { 
 | 
        backgroundImage: `url(${content_bg})`, 
 | 
        backgroundAttachment: "fixed", 
 | 
        backgroundSize: "100% auto", 
 | 
        backgroundRepeat: "no-repeat", 
 | 
      }, 
 | 
      show: false, 
 | 
      form: {}, 
 | 
      rules: { 
 | 
        verificationNo: [ 
 | 
          { 
 | 
            required: true, 
 | 
            message: "请选择核磅单号", 
 | 
            trigger: ["change", "blur"], 
 | 
          }, 
 | 
        ], 
 | 
      }, 
 | 
    }; 
 | 
  }, 
 | 
  onReady() { 
 | 
    this.$refs.uForm.setRules(this.rules); 
 | 
  }, 
 | 
  onShow() { 
 | 
    let that = this; 
 | 
    uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器 
 | 
    uni.$on("scan", function (data) { 
 | 
      console.log("onscan"); 
 | 
      if (that.form.verificationNo == "") { 
 | 
        uni.showToast({ 
 | 
          icon: "none", 
 | 
          title: "请先选择核磅单号!", 
 | 
          duration: 2 * 1000, 
 | 
        }); 
 | 
        return; 
 | 
      } 
 | 
      //扫码成功后的回调,你可以写自己的逻辑代码在这里 
 | 
      console.log("页面扫码结果:", data.code); 
 | 
      if (data.code) { 
 | 
        let codeInfo = JSON.parse(data.code); 
 | 
  
 | 
        // 添加重复扫码检查 
 | 
        const batchNo = codeInfo.BN; 
 | 
        const isDuplicate = that.ScanCodeRecord.some( 
 | 
          (item) => item.outBatchNo === batchNo 
 | 
        ); 
 | 
  
 | 
        if (isDuplicate) { 
 | 
          uni.showToast({ 
 | 
            icon: "none", 
 | 
            title: "请勿重复扫码!", 
 | 
            duration: 2 * 1000, 
 | 
          }); 
 | 
          return; 
 | 
        } 
 | 
  
 | 
        let ScanCodeRecordList = { 
 | 
          outBatchNo: codeInfo.BN, 
 | 
          netWeight: codeInfo.NW, 
 | 
          tareWeight: codeInfo.TR, // 皮重 
 | 
          partNo: codeInfo.PN, 
 | 
          grossWeight: codeInfo.TW, 
 | 
          partName: codeInfo.ST, 
 | 
          originalLength: codeInfo.LN, // 长度 
 | 
          palletNo: codeInfo.PNO, // 盘号 
 | 
          waivDevRejNo: codeInfo.WDR ? codeInfo.WDR : "*", // wdr号 
 | 
          productType: that.form.productType, 
 | 
        }; 
 | 
        if (codeInfo.CN != "") { 
 | 
          if (codeInfo.CN != that.form.customerName1) { 
 | 
            // 扫描报工单二维码 
 | 
            uni.showModal({ 
 | 
              title: "提示", 
 | 
              content: 
 | 
                "客户不一致:" + codeInfo.CN + "||" + that.form.customerName1, 
 | 
              showCancel: true, 
 | 
              success: function (res) { 
 | 
                const isDuplicate = that.ScanCodeRecord.some( 
 | 
                  (item) => item.outBatchNo === codeInfo.BN 
 | 
                ); 
 | 
                if (!isDuplicate) { 
 | 
                  if (that.form.productType == "TG01") { 
 | 
                    that.$refs.saveForm.open(ScanCodeRecordList); 
 | 
                  } else { 
 | 
                    that.ScanCodeRecord.unshift(ScanCodeRecordList); 
 | 
                  } 
 | 
                } else { 
 | 
                  uni.showToast({ 
 | 
                    icon: "none", 
 | 
                    title: "请勿重复扫码!", 
 | 
                    duration: 2 * 1000, 
 | 
                  }); 
 | 
                } 
 | 
              }, 
 | 
            }); 
 | 
          } else { 
 | 
            if (that.form.productType == "TG01") { 
 | 
              that.$refs.saveForm.open(ScanCodeRecordList); 
 | 
            } else { 
 | 
              that.ScanCodeRecord.unshift(ScanCodeRecordList); 
 | 
            } 
 | 
          } 
 | 
        } else { 
 | 
          if (that.form.productType == "TG01") { 
 | 
            that.$refs.saveForm.open(ScanCodeRecordList); 
 | 
          } else { 
 | 
            that.ScanCodeRecord.unshift(ScanCodeRecordList); 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    }); 
 | 
  }, 
 | 
  methods: { 
 | 
    // 取消扫码记录 
 | 
    cancelReport(item) { 
 | 
      let that = this; 
 | 
      uni.showModal({ 
 | 
        title: "提示", 
 | 
        content: "是否确认取消选中项", 
 | 
        success: function (res) { 
 | 
          if (res.confirm) { 
 | 
            that.ScanCodeRecord = that.ScanCodeRecord.filter( 
 | 
              (a) => a.outBatchNo !== item.outBatchNo 
 | 
            ); 
 | 
          } else if (res.cancel) { 
 | 
            return; 
 | 
          } 
 | 
        }, 
 | 
      }); 
 | 
    }, 
 | 
    // 导体提交 
 | 
    confirmDt() { 
 | 
      // 计算grossWeight总和 
 | 
      let grossWeightSum = 0; 
 | 
      // 确保ScanCodeRecord是数组 
 | 
      if (Array.isArray(this.ScanCodeRecord)) { 
 | 
        this.ScanCodeRecord.forEach((item) => { 
 | 
          grossWeightSum += Number(item.grossWeight) || 0; 
 | 
        }); 
 | 
      } 
 | 
      // 使用正确的字段名suppliedQuantity,而不是voltage 
 | 
      const magnetic = 
 | 
        Number(this.modalList.verificationWeight) - 
 | 
        Number(this.modalList.forkliftWeight) - 
 | 
        grossWeightSum; 
 | 
      this.form.verificationWeight = this.modalList.verificationWeight; 
 | 
      this.form.forkliftWeight = this.modalList.forkliftWeight; 
 | 
      switch (this.form.productType) { 
 | 
        case "DT01": 
 | 
          if (magnetic >= -3 && magnetic <= 3) { 
 | 
            this.allSubmit(); 
 | 
          } else { 
 | 
            this.$u.toast("磅差:" + magnetic + ",请车间核查"); 
 | 
          } 
 | 
          break; 
 | 
        case "DT02": 
 | 
          if (magnetic >= -0.5 && magnetic <= 0.5) { 
 | 
            // this.ScanCodeRecord.push(this.form); 
 | 
            this.allSubmit(); 
 | 
          } else { 
 | 
            this.$u.toast("磅差:" + magnetic + ",请车间核查"); 
 | 
          } 
 | 
          break; 
 | 
      } 
 | 
    }, 
 | 
    allSubmit() { 
 | 
      this.ScanCodeRecord.forEach((item) => { 
 | 
        item.batchNo = item.outBatchNo; 
 | 
      }); 
 | 
      this.form = { 
 | 
        ...this.form, 
 | 
        weighingVerificationList: this.ScanCodeRecord, 
 | 
        verificationWeight: this.modalList.verificationWeight, 
 | 
        forkliftWeight: this.modalList.forkliftWeight, 
 | 
      }; 
 | 
      console.log("11111111111", this.form); 
 | 
      // 处理提交逻辑 
 | 
      this.$u.api.NuclearScaleEntry.createDetail(this.form) 
 | 
        .then((res) => { 
 | 
          this.$u.toast("提交成功"); 
 | 
          this.ScanCodeRecord = []; 
 | 
          // if (this.form.productTypeMap == "DT01") { 
 | 
            this.modalList = { 
 | 
              verificationWeight: "", 
 | 
            // }; 
 | 
          } 
 | 
        }) 
 | 
        .catch((err) => { 
 | 
          uni.hideLoading(); 
 | 
          uni.showModal({ 
 | 
            title: "提示", 
 | 
            content: err.message || "网络异常,请重试", 
 | 
            showCancel: true, 
 | 
            success: function (res) {}, 
 | 
          }); 
 | 
        }); 
 | 
    }, 
 | 
  
 | 
    // 取消 
 | 
    cancelDt() { 
 | 
      this.showModal = false; 
 | 
    }, 
 | 
    handleUpdate(Obj) { 
 | 
      console.log("1111111111111111铜杆", Obj); 
 | 
      Obj.batchNo = Obj.outBatchNo; 
 | 
      this.form = { 
 | 
        ...this.form, 
 | 
        weighingVerificationList: [Obj], 
 | 
        verificationWeight: Obj.verificationWeight, 
 | 
        forkliftWeight: Obj.forkliftWeight, 
 | 
      }; 
 | 
      console.log("11111111111", this.form); 
 | 
      // 处理提交逻辑 
 | 
      this.$u.api.NuclearScaleEntry.createDetail(this.form) 
 | 
        .then((res) => { 
 | 
          this.$u.toast("提交成功"); 
 | 
          this.ScanCodeRecord = []; 
 | 
          // this.ScanCodeRecord.unshift(Obj); 
 | 
          this.$refs.saveForm.cancel(); 
 | 
        }) 
 | 
        .catch(() => { 
 | 
          uni.hideLoading(); 
 | 
          this.$refs.saveForm.cancel(); 
 | 
          this.$u.toast("网络异常,请重试"); 
 | 
        }); 
 | 
    }, 
 | 
    // 提交按钮 
 | 
    submit() { 
 | 
      if (this.form.productType != "TG01") { 
 | 
        this.showModal = true; 
 | 
      } else { 
 | 
        this.allSubmit(); 
 | 
      } 
 | 
    }, 
 | 
    // 弹框保存 
 | 
    confirm() { 
 | 
      console.log("保存", this.form.verificationNo); 
 | 
      // 请求接口,根据工单号查询其他信息并赋值 
 | 
      // this.allSubmit(); 
 | 
    }, 
 | 
    // 选择订单号 
 | 
    openList() { 
 | 
      uni.navigateTo({ 
 | 
        url: "/pages/wareHouse/nuclearScale/nuclearScaleList", 
 | 
      }); 
 | 
    }, 
 | 
    //核磅记录 
 | 
    openNuclearScaleRecord() { 
 | 
      if (!this.form.verificationNo) { 
 | 
        uni.showToast({ 
 | 
          icon: "none", 
 | 
          title: "请先选择核磅单号!", 
 | 
          duration: 2 * 1000, 
 | 
        }); 
 | 
        return; 
 | 
      } 
 | 
      uni.navigateTo({ 
 | 
        url: 
 | 
          "/pages/wareHouse/nuclearScale/nuclearscalerecord?verificationNo=" + 
 | 
          encodeURIComponent(JSON.stringify(this.form.verificationNo)), 
 | 
      }); 
 | 
    }, 
 | 
    // 存订单号 
 | 
    setNo(val) { 
 | 
      this.form = val; 
 | 
      this.ScanCodeRecord = []; 
 | 
    }, 
 | 
    // 回显扫码的信息-报工单 
 | 
    // saveForm(val) { 
 | 
    //     let { 
 | 
    //         WorkNo, 
 | 
    //         ProcessName, 
 | 
    //         ORDER_NO 
 | 
    //     } = val; 
 | 
    //     this.form.verificationNo = WorkNo; 
 | 
    //     this.form.productType = ProcessName; 
 | 
    //     this.form.licensePlate = ORDER_NO; 
 | 
    // }, 
 | 
  }, 
 | 
}; 
 | 
</script> 
 | 
  
 | 
<style lang="scss"> 
 | 
@import "index.scss"; 
 | 
</style> 
 |