yyb
10 小时以前 0a3ebcfddbb20e880c3e1d7c8879e9eaf0d56c70
pages/wareHouse/nuclearScale/index.vue
@@ -5,38 +5,38 @@
      <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">
         <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">
         <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">
         <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">
         <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">
         <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">
         <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">
         <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">
         <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">
         <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">
         <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">
            :label-width="260" style="font-size: small">
         </u-form-item>
      </u-form>
      <view class="wrap">
@@ -45,7 +45,9 @@
               <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">{{ index + 1 }}</view>
                     <view class="content-header-title">{{
                ScanCodeRecord.length - index
              }}</view>
                  </view>
                  <view class="content-body">
                     <view class="row-list">
@@ -61,7 +63,7 @@
                           <view class="_label-name">零件描述:</view>
                        </view>
                        <view class="_content">
                           {{ item.netWeight }}
                           {{ item.partName }}
                        </view>
                     </view>
                     <view class="row-list">
@@ -85,7 +87,7 @@
                           <view class="_label-name">盘重:</view>
                        </view>
                        <view class="_content">
                           {{ item.trayWeight }}
                           {{ item.tareWeight }}
                        </view>
                     </view>
                     <view class="row-list">
@@ -101,35 +103,52 @@
            </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 style=" min-width: 80px;">
                        <text style="font-size:16px">核磅重量:</text>
                     </view>
                     <view class="packing-registration-param-item-right">
                        <u-input class="item-one item-two" v-model="modalList.suppliedQuantity" />
                        <u-input  v-model="modalList.verificationWeight" :custom-style="{
                fontSize: '16px',
                height: '40px',
                lineHeight: '40px'
              }" :input-style="{
                fontSize: '16px',
                height: '40px',
                lineHeight: '40px'
              }" />
                     </view>
                  </view>
                  <view class="packing-registration-param-item param-extra">
                     <view class="packing-registration-param-item-left">
                        <text class="item-one">叉车盘重:</text>
                     <view style=" min-width: 80px;">
                        <text style="font-size:16px">叉车盘重:</text>
                     </view>
                     <view class="packing-registration-param-item-right">
                        <u-input class="item-one item-two" v-model="modalList.suppliedQuantity" />
                        <u-input v-model="modalList.forkliftWeight" :custom-style="{
                fontSize: '16px',
                height: '40px',
                lineHeight: '40px'
              }" :input-style="{
                fontSize: '16px',
                height: '40px',
                lineHeight: '40px'
              }" />
                     </view>
                  </view>
               </view>
            </view>
         </view>
      </u-modal>
      <u-button type="primary" class="bottom-button" @click="submit">提交</u-button>
      <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="this.form" @update="handleUpdate" />
      <saveForm ref="saveForm" :operationTaskList="form" @update="handleUpdate" />
      <scan></scan>
   </div>
</template>
@@ -145,12 +164,13 @@
      },
      data() {
         return {
            commitList: [],
            modalList: {},
            showModal: false,
            productTypeMap: {
               1: "导体",
               2: "铜杆",
               3: "导体2.6",
               DTO1: "导体",
               TG01: "铜杆",
               DT02: "导体2.6",
            },
            ScanCodeRecord: [],
            background: {
@@ -160,19 +180,7 @@
               backgroundRepeat: "no-repeat",
            },
            show: false,
            form: {
               value0: "",
               verificationNo: "",
               productType: "",
               licensePlate: "",
               shippingNoticeNo1: "",
               customerName1: "",
               weighingOperator: "",
               forkliftOperator: "",
               value8: "",
               shippingNoticeNo2: "",
               customerName2: "",
            },
            form: {},
            rules: {
               verificationNo: [{
                  required: true,
@@ -201,85 +209,221 @@
            //扫码成功后的回调,你可以写自己的逻辑代码在这里
            console.log("页面扫码结果:", data.code);
            if (data.code) {
               try {
                  let codeInfo = JSON.parse(data.code);
               } catch (e) {
               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: "扫码数据解析失败,请重试!",
                     title: "请勿重复扫码!",
                     duration: 2 * 1000,
                  });
                  return;
               }
               if (codeInfo.CN != that.form.customerName1) {
                  // 扫描报工单二维码
                  uni.showModal({
                     title: "提示",
                     content: "客户不一致:" +
                        codeInfo.CN +
                        "||" +
                        that.form.customerName1,
                     showCancel: true,
                     success: function() {
                        if (that.form.productType == "2") {
                           that.$refs.saveForm.open(codeInfo);
                        } else {
                           that.ScanCodeRecord.push(codeInfo);
                        }
                     },
                  });
               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 (that.form.productType == "TG01") {
                  that.$refs.saveForm.open(ScanCodeRecordList);
               } else {
                  if (that.form.productType == "2") {
                     that.$refs.saveForm.open(codeInfo);
                  } else {
                     that.ScanCodeRecord.push(codeInfo);
                  if (that.form.workshop == "ZF01") {
                     that.$refs.saveForm.open(ScanCodeRecordList);
                  }
                  that.queryCustomName(codeInfo, ScanCodeRecordList);
               }
            }
         });
      },
      methods: {
         queryCustomName(codeInfo, ScanCodeRecordList) {
            // 查询客户名称
            this.$u.api.NuclearScaleEntry.queryCustomName({
               BN: codeInfo.BN,
            }).then((res) => {
               console.log("客户名称:", res);
               if (res.data != this.form.customerName1) {
                  let that = this;
                  // 扫描报工单二维码
                  uni.showModal({
                     title: "提示",
                     content: "客户不一致:" + res.data + " || " + that.form.customerName1,
                     showCancel: true,
                     success: function(res) {
                        if (res.confirm) {
                           that.ScanCodeRecord.unshift(ScanCodeRecordList);
                        } else if (res.cancel) {
                           return;
                        }
                     },
                  });
               } else {
                  this.ScanCodeRecord.unshift(ScanCodeRecordList);
               }
            });
         },
         // 取消扫码记录
         cancelReport(item) {
            this.ScanCodeRecord = this.ScanCodeRecord.filter(a => a.outBatchNo !== item.outBatchNo);
            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() {
                  const magnetic =
        Number(this.form.h) - Number(this.form.children) - Number(this.form.m);
            console.log("保存", this.form.verificationNo);
            // 计算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
            ).toFixed(1);
            this.form.verificationWeight = this.modalList.verificationWeight;
            this.form.forkliftWeight = this.modalList.forkliftWeight;
            switch (this.form.productType) {
               case "导体":
                  if (magnetic > 0 && magnetic < 3) {
                     this.ScanCodeRecord.push(this.form);
               case "DT01":
                  if (Number(magnetic) >= -3 && Number(magnetic) <= 3) {
                     let that = this;
                     uni.showModal({
                        title: "提示",
                        content: "磅差:" + magnetic + ",是否确认提交?",
                        success: function(res) {
                           if (res.confirm) {
                              that.allSubmit();
                           } else if (res.cancel) {
                              return;
                           }
                        },
                     });
                  } else {
                     this.$u.toast("生产核查");
                     this.$u.toast("磅差:" + magnetic + ",请车间核查");
                  }
                  break;
               case "导体2.6":
                  if (magnetic > -0.5 && magnetic < 0.5) {
                     this.ScanCodeRecord.push(this.form);
               case "DT02":
                  if (Number(magnetic) >= -0.5 && Number(magnetic) <= 0.5) {
                     // this.ScanCodeRecord.push(this.form);
                     this.allSubmit();
                  } else {
                     this.$u.toast("生产核查");
                     this.$u.toast("磅差:" + magnetic + ",请车间核查");
                  }
                  break;
            }
         },
         allSubmit() {
            console.log("进来了", this.ScanCodeRecord);
            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) => {
                  console.log("err", err);
                  // uni.hideLoading();
                  uni.showModal({
                     title: "提示",
                     content: err.message || "网络异常,请重试",
                     showCancel: true,
                     success: function(res) {},
                  });
               });
         },
         // 取消
         cancelDt() {
            this.showModal = false;
         },
         handleUpdate(Obj) {
            this.ScanCodeRecord.push(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((err) => {
                  uni.hideLoading();
                  this.$refs.saveForm.cancel();
                  uni.showModal({
                     title: "提示",
                     content: err.message || "网络异常,请重试",
                     showCancel: true,
                     success: function(res) {},
                  });
               });
         },
         // 提交按钮
         submit() {
            this.showModal = true;
            if (this.form.productType != "TG01") {
               this.modalList = {
                  verificationWeight: "",
                  forkliftWeight: this.form.productType == "DT01" ? "" : 0,
               };
               this.showModal = true;
            } else {
               this.allSubmit();
            }
         },
         // 弹框保存
         confirm() {
            console.log("保存", this.form.verificationNo);
            // 请求接口,根据工单号查询其他信息并赋值
            // this.allSubmit();
         },
         // 选择订单号
         openList() {
@@ -289,7 +433,7 @@
         },
         //核磅记录
         openNuclearScaleRecord() {
            if (this.form.verificationNo == "") {
            if (!this.form.verificationNo) {
               uni.showToast({
                  icon: "none",
                  title: "请先选择核磅单号!",
@@ -298,12 +442,14 @@
               return;
            }
            uni.navigateTo({
               url: "/pages/wareHouse/nuclearScale/nuclearscalerecord",
               url: "/pages/wareHouse/nuclearScale/nuclearscalerecord?verificationNo=" +
                  encodeURIComponent(JSON.stringify(this.form.verificationNo)),
            });
         },
         // 存订单号
         setNo(val) {
            this.form = val;
            this.ScanCodeRecord = [];
         },
         // 回显扫码的信息-报工单
         // saveForm(val) {