yyb
2025-08-12 66a4579ac674f0f3958f2f365718c34e3bac49da
pages/wareHouse/nuclearScale/index.vue
@@ -1,325 +1,487 @@
<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">
            <u-input v-model="form.verificationNo" type="select" placeholder="请选择核磅单号" @click="openList" />
         </u-form-item>
         <u-form-item label="产品类型" :border-bottom="false" prop="productType">
            <u-input v-model="productTypeMap[form.productType] || form.productType" placeholder="" disabled />
         </u-form-item>
         <u-form-item label="车牌号" :border-bottom="false" prop="licensePlate">
            <u-input v-model="form.licensePlate" placeholder="" disabled />
         </u-form-item>
         <u-form-item label="发货通知单1" :border-bottom="false" prop="shippingNoticeNo1">
            <u-input v-model="form.shippingNoticeNo1" placeholder="" disabled />
         </u-form-item>
         <u-form-item label="客户名称1" :border-bottom="false" prop="customerName1">
            <u-input v-model="form.customerName1" placeholder="" disabled />
         </u-form-item>
         <u-form-item label="发货通知单2" :border-bottom="false" prop="shippingNoticeNo2">
            <u-input v-model="form.shippingNoticeNo2" placeholder="" disabled />
         </u-form-item>
         <u-form-item label="客户名称2" :border-bottom="false" prop="customerName2">
            <u-input v-model="form.customerName2" placeholder="" disabled />
         </u-form-item>
         <u-form-item label="司磅员" :border-bottom="false" prop="weighingOperator">
            <u-input v-model="form.weighingOperator" placeholder="" disabled />
         </u-form-item>
         <u-form-item label="叉车司机" :border-bottom="false" prop="forkliftOperator">
            <u-input v-model="form.forkliftOperator" placeholder="" disabled />
         </u-form-item>
         <u-form-item label="核磅记录" :border-bottom="false" prop="value8">
            <u-input type="select" placeholder="" @click="openNuclearScaleRecord" />
         </u-form-item>
         <u-form-item :label="`扫码记录(${ScanCodeRecord.length}条):`" :border-bottom="false" prop="shippingNoticeNo1"
            :label-width="260">
         </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">{{ index + 1 }}</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.netWeight }}
                        </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.trayWeight }}
                        </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 class="item-one item-two" v-model="modalList.suppliedQuantity" />
                     </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="modalList.suppliedQuantity" />
                     </view>
                  </view>
               </view>
            </view>
         </view>
      </u-modal>
      <u-button type="primary" class="bottom-button" @click="submit">提交</u-button>
      <u-modal v-model="show" @confirm="confirm" content="是否确认提交" show-cancel-button></u-modal>
      <saveForm ref="saveForm" :operationTaskList="this.form" @update="handleUpdate" />
      <scan></scan>
   </div>
  <!-- 核磅录入 -->
  <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">{{ index + 1 }}</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.trayWeight }}
                </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
                  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
                  class="item-one item-two"
                  v-model="modalList.suppliedQuantity"
                />
              </view>
            </view>
          </view>
        </view>
      </view>
    </u-modal>
    <u-button type="primary" class="bottom-button" @click="submit"
      >提交</u-button
    >
    <u-modal
      v-model="show"
      @confirm="confirm"
      content="是否确认提交"
      show-cancel-button
    ></u-modal>
    <saveForm
      ref="saveForm"
      :operationTaskList="this.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 {
            modalList: {},
            showModal: false,
            productTypeMap: {
               1: "导体",
               2: "铜杆",
               3: "导体2.6",
            },
            ScanCodeRecord: [],
            background: {
               backgroundImage: `url(${content_bg})`,
               backgroundAttachment: "fixed",
               backgroundSize: "100% auto",
               backgroundRepeat: "no-repeat",
            },
            show: false,
            form: {
               value0: "",
               verificationNo: "",
               productType: "",
               licensePlate: "",
               shippingNoticeNo1: "",
               customerName1: "",
               weighingOperator: "",
               forkliftOperator: "",
               value8: "",
               shippingNoticeNo2: "",
               customerName2: "",
            },
            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) {
               try {
                  let codeInfo = JSON.parse(data.code);
               } catch (e) {
                  uni.showToast({
                     icon: "none",
                     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);
                        }
                     },
                  });
               } else {
                  if (that.form.productType == "2") {
                     that.$refs.saveForm.open(codeInfo);
                  } else {
                     that.ScanCodeRecord.push(codeInfo);
                  }
               }
            }
         });
      },
      methods: {
         // 取消扫码记录
         cancelReport(item) {
            this.ScanCodeRecord = this.ScanCodeRecord.filter(a => a.outBatchNo !== item.outBatchNo);
         },
         // 导体提交
         confirmDt() {
                  const magnetic =
        Number(this.form.h) - Number(this.form.children) - Number(this.form.m);
            console.log("保存", this.form.verificationNo);
            switch (this.form.productType) {
               case "导体":
                  if (magnetic > 0 && magnetic < 3) {
                     this.ScanCodeRecord.push(this.form);
                  } else {
                     this.$u.toast("生产核查");
                  }
                  break;
               case "导体2.6":
                  if (magnetic > -0.5 && magnetic < 0.5) {
                     this.ScanCodeRecord.push(this.form);
                  } else {
                     this.$u.toast("生产核查");
                  }
                  break;
            }
         },
         // 取消
         cancelDt() {
            this.showModal = false;
         },
         handleUpdate(Obj) {
            this.ScanCodeRecord.push(Obj);
         },
         // 提交按钮
         submit() {
            this.showModal = true;
         },
         // 弹框保存
         confirm() {
            console.log("保存", this.form.verificationNo);
            // 请求接口,根据工单号查询其他信息并赋值
         },
         // 选择订单号
         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",
            });
         },
         // 存订单号
         setNo(val) {
            this.form = val;
         },
         // 回显扫码的信息-报工单
         // saveForm(val) {
         //    let {
         //       WorkNo,
         //       ProcessName,
         //       ORDER_NO
         //    } = val;
         //    this.form.verificationNo = WorkNo;
         //    this.form.productType = ProcessName;
         //    this.form.licensePlate = ORDER_NO;
         // },
      },
   };
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: {
        1: "导体",
        2: "铜杆",
        3: "导体2.6",
      },
      ScanCodeRecord: [],
      background: {
        backgroundImage: `url(${content_bg})`,
        backgroundAttachment: "fixed",
        backgroundSize: "100% auto",
        backgroundRepeat: "no-repeat",
      },
      show: false,
      form: {
        value0: "",
        verificationNo: "",
        productType: "",
        licensePlate: "",
        shippingNoticeNo1: "",
        customerName1: "",
        weighingOperator: "",
        forkliftOperator: "",
        value8: "",
        shippingNoticeNo2: "",
        customerName2: "",
      },
      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);
        // try {
        // } catch (e) {
        //    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,
          partNo: codeInfo.partNo,
          partName: codeInfo.ST,
          originalLength: codeInfo.LN, // 长度
          palletNo: codeInfo.PNO, // 盘号
          waivDevRejNo: codeInfo.WDR ? codeInfo.WDR : "*", // wdr号
        };
        if (codeInfo.CN != that.form.customerName1) {
          // 扫描报工单二维码
          uni.showModal({
            title: "提示",
            content:
              "客户不一致:" + codeInfo.CN + "||" + that.form.customerName1,
            showCancel: true,
            success: function () {
              if (that.form.productType == "TG01") {
                that.$refs.saveForm.open(ScanCodeRecordList);
              } else {
                that.ScanCodeRecord.push(ScanCodeRecordList);
              }
            },
          });
        } else {
          if (that.form.productType == "TG01") {
            that.$refs.saveForm.open(ScanCodeRecordList);
          } else {
            that.ScanCodeRecord.push(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() {
      const magnetic =
        Number(this.form.verificationWeight) -
        Number(this.form.voltage) -
        Number(this.form.reelWeight);
      console.log("保存", this.form.verificationNo);
      switch (this.form.productType) {
        case "导体":
          if (magnetic > 0 && magnetic < 3) {
            this.allSubmit();
            // this.ScanCodeRecord.push(this.form);
          } else {
            this.$u.toast("生产核查");
          }
          break;
        case "导体2.6":
          if (magnetic > -0.5 && magnetic < 0.5) {
            // this.ScanCodeRecord.push(this.form);
            this.allSubmit();
          } else {
            this.$u.toast("生产核查");
          }
          break;
      }
    },
    allSubmit() {
      this.form = {
        ...this.form,
        weighingVerificationList: this.ScanCodeRecord,
      };
      // 处理提交逻辑
      this.$u.api.NuclearScaleEntry.createDetail(this.form)
        .then((res) => {
          if (res.success) {
            this.$u.toast("提交成功");
          } else {
            this.$u.toast(res.message || "提交失败");
          }
        })
        .catch(() => {
          uni.hideLoading();
          this.$u.toast("网络异常,请重试");
        });
    },
    // 取消
    cancelDt() {
      this.showModal = false;
    },
    handleUpdate(Obj) {
      this.ScanCodeRecord.push(Obj);
    },
    // 提交按钮
    submit() {
      if (that.form.productType != "TG01") {
        this.showModal = true;
      } else {
        this.allSubmit();
      }
    },
    // 弹框保存
    confirm() {
      console.log("保存", this.form.verificationNo);
      // 请求接口,根据工单号查询其他信息并赋值
    },
    // 选择订单号
    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",
      });
    },
    // 存订单号
    setNo(val) {
      this.form = val;
    },
    // 回显扫码的信息-报工单
    // 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";
@import "index.scss";
</style>