// 车间订单下发 
 | 
<template> 
 | 
  <view 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" 
 | 
    /> 
 | 
    <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" @click="seachPersonnelNo()">{{ 
 | 
              registerInfo.ifsOrderNo == "" 
 | 
                ? "点击选择" 
 | 
                : registerInfo.ifsOrderNo 
 | 
            }}</text> 
 | 
            <u-icon 
 | 
              name="arrow-right" 
 | 
              color="#687792" 
 | 
              size="28" 
 | 
              @click="seachPersonnelNo()" 
 | 
              v-show="registerInfo.ifsOrderNo == ''" 
 | 
            ></u-icon> 
 | 
          </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" @click="seachWork()">{{ 
 | 
              registerInfo.optaskNo == "" ? "点击选择" : registerInfo.optaskNo 
 | 
            }}</text> 
 | 
            <u-icon 
 | 
              name="arrow-right" 
 | 
              color="#687792" 
 | 
              size="28" 
 | 
              @click="seachWork()" 
 | 
              v-show="registerInfo.optaskNo == ''" 
 | 
            ></u-icon> 
 | 
          </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"> 
 | 
            <picker 
 | 
              class="item-one item-two" 
 | 
              style="width: 100%; text-align: right" 
 | 
              @change="machineChange($event, machineList)" 
 | 
              :value="machineIndex" 
 | 
              :range="machineList" 
 | 
              range-key="label" 
 | 
            > 
 | 
              <view> 
 | 
                <text 
 | 
                  :style="{ 
 | 
                    color: machineIndex == null ? '#a5abb4' : '#a5abb4', 
 | 
                  }" 
 | 
                  >{{ 
 | 
                    machineIndex == null 
 | 
                      ? "点击选择" 
 | 
                      : machineList[machineIndex].label 
 | 
                  }}</text 
 | 
                > 
 | 
              </view> 
 | 
            </picker> 
 | 
            <u-icon 
 | 
              v-if="machineIndex == null" 
 | 
              name="arrow-right" 
 | 
              color="#687792" 
 | 
              size="28" 
 | 
            ></u-icon> 
 | 
          </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" @click="seachComp()">{{ 
 | 
              registerInfo.partNo == "" ? "点击选择" : registerInfo.partNo 
 | 
            }}</text> 
 | 
            <u-icon 
 | 
              name="arrow-right" 
 | 
              color="#687792" 
 | 
              size="28" 
 | 
              @click="seachComp()" 
 | 
              v-show="registerInfo.partNo == ''" 
 | 
            ></u-icon> 
 | 
          </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">{{ registerInfo.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> 
 | 
      </view> 
 | 
    </view> 
 | 
    <view class="wrap"> 
 | 
      <scroll-view class="packing-registration-scroll-list" scroll-y="true"> 
 | 
        <u-cell-group 
 | 
          class="packing-registration-scroll-list-group" 
 | 
          :border="false" 
 | 
        > 
 | 
          <!-- <div class="tip" style="text-align: center;" v-if="hasScanSnList.length==0">-请扫码-</div> --> 
 | 
          <view 
 | 
            class="content" 
 | 
            v-for="(item, index) in hasScanSnList" 
 | 
            :key="index" 
 | 
            :index="index" 
 | 
          > 
 | 
            <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.suppliedQuantity }} 
 | 
                </view> 
 | 
              </view> 
 | 
            </view> 
 | 
          </view> 
 | 
        </u-cell-group> 
 | 
      </scroll-view> 
 | 
      <scan></scan> 
 | 
    </view> 
 | 
    <u-modal 
 | 
      v-model="showModal" 
 | 
      title="" 
 | 
      :show-cancel-button="true" 
 | 
      :show-confirm-button="true" 
 | 
      @confirm="confirm" 
 | 
      @cancel="cancel" 
 | 
    > 
 | 
      <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"> 
 | 
                <text class="item-one item-two">{{ 
 | 
                  modalList.outBatchNo 
 | 
                }}</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">{{ 
 | 
                  modalList.locationNo 
 | 
                }}</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="modalList.suppliedQuantity" 
 | 
                /> 
 | 
              </view> 
 | 
            </view> 
 | 
          </view> 
 | 
        </view> 
 | 
      </view> 
 | 
    </u-modal> 
 | 
  </view> 
 | 
</template> 
 | 
<script> 
 | 
import scan from "@/components/scan/scan.vue"; 
 | 
import content_bg from "@/static/custom/packing/backBg.png"; 
 | 
export default { 
 | 
  components: { 
 | 
    scan, 
 | 
  }, 
 | 
  
 | 
  data() { 
 | 
    return { 
 | 
      background: { 
 | 
        backgroundImage: `url(${content_bg})`, 
 | 
        backgroundAttachment: "fixed", 
 | 
        backgroundSize: "100% auto", 
 | 
        backgroundRepeat: "no-repeat", 
 | 
      }, 
 | 
      labelStyle: { 
 | 
        fontSize: "32rpx", 
 | 
        whiteSpace: "nowrap", 
 | 
      }, 
 | 
      // 弹窗列表 
 | 
      modalList: {}, 
 | 
      //   主页面列表 
 | 
      registerInfo: { 
 | 
        operationTaskId: "", 
 | 
        id: "", 
 | 
        ifsOrderNo: "", 
 | 
        partNo: "", 
 | 
        partName: "", 
 | 
        optaskNo: "", 
 | 
        workstationId: "", 
 | 
        ifsLineItemNo: "", 
 | 
      }, 
 | 
      //   下发记录列表 
 | 
      hasScanSnList: [], 
 | 
      codeInfoId: "", 
 | 
      showModal: false, 
 | 
      machineIndex: null, 
 | 
      machineList: [], 
 | 
    }; 
 | 
  }, 
 | 
  onShow() { 
 | 
    let that = this; 
 | 
    uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器 
 | 
    uni.$on("scan", function (data) { 
 | 
      console.log("onscan"); 
 | 
      if (data.code) { 
 | 
        //扫码成功后的回调,你可以写自己的逻辑代码在这里 
 | 
        console.log("扫码结果:", data.code); 
 | 
        let codeInfo = JSON.parse(data.code); 
 | 
        that.codeInfoId = codeInfo.id; 
 | 
        if (codeInfo.PN) { 
 | 
          if (that.registerInfo.partNo != codeInfo.PN) { 
 | 
            this.$u.toast("当前物料结构和扫码物料结构不一致!"); 
 | 
            return; 
 | 
          } 
 | 
          // 扫描报工单二维码 
 | 
          that.scanHandle(codeInfo); 
 | 
          that.$forceUpdate(); 
 | 
          // that.getHandelList(); 
 | 
        } 
 | 
        if (codeInfo.moOn) { 
 | 
          this.$u.api.WorkshopOrderIssued.getManuOrder({ 
 | 
            moOn: codeInfo.moOn, 
 | 
          }).then((res) => { 
 | 
            if (res.code === 0) { 
 | 
              that.registerInfo = { 
 | 
                operationTaskId: "", 
 | 
                id: res.data.id, 
 | 
                ifsOrderNo: res.data.ifsOrderNo, 
 | 
                partNo: "", 
 | 
                partName: "", 
 | 
                optaskNo: "", 
 | 
                workstationId: "", 
 | 
                ifsLineItemNo: "", 
 | 
              }; 
 | 
            } 
 | 
          }) 
 | 
          .catch((err) => { 
 | 
          }) 
 | 
        } 
 | 
      } 
 | 
    }); 
 | 
  }, 
 | 
  methods: { 
 | 
    //机台 
 | 
    machineChange(e, storage, code) { 
 | 
      this.hasScanSnList = []; 
 | 
      if (storage.length <= 0) { 
 | 
        this.machineIndex = null; 
 | 
        return; 
 | 
      } 
 | 
      this.machineIndex = e.target.value; 
 | 
      this.registerInfo.workstationId = storage[this.machineIndex].value; 
 | 
    }, 
 | 
    // getHandelList() { 
 | 
    //   this.$u.api.workReporting 
 | 
    //     .getProductMainV1({ 
 | 
    //       current: 1, 
 | 
    //       size: -1, 
 | 
    //       id: this.codeInfoId, 
 | 
    //     }) 
 | 
    //     .then((res) => { 
 | 
    //       this.hasScanSnList = res.data.productOutputList; 
 | 
    //     }); 
 | 
    // }, 
 | 
    // 点击确认后获取下发记录 
 | 
    confirm() { 
 | 
      if (!this.modalList.outBatchNo) { 
 | 
        this.$u.toast("批号为空不能提交"); 
 | 
        this.$refs.uModal.clearLoading(); // 清除加载状态 
 | 
        return; 
 | 
      } 
 | 
      if (!this.modalList.locationNo) { 
 | 
        this.$u.toast("库位为空不能提交"); 
 | 
        this.$refs.uModal.clearLoading(); // 清除加载状态 
 | 
        return; 
 | 
      } 
 | 
      if (!this.modalList.suppliedQuantity) { 
 | 
        this.$u.toast("请输入取消下发数量"); 
 | 
        this.$refs.uModal.clearLoading(); // 清除加载状态 
 | 
        return; 
 | 
      } 
 | 
      // 处理确认逻辑 
 | 
      this.$u.api.WorkshopOrderIssued.feedingPDA({ 
 | 
        feedingFrom: "stocker", 
 | 
        moId: this.registerInfo.id, 
 | 
        feeds: [ 
 | 
          { 
 | 
            ...this.modalList, 
 | 
          }, 
 | 
        ], 
 | 
      }).then((res) => { 
 | 
        console.log("res", res); 
 | 
        if (res.code === 0) { 
 | 
          this.$u.toast("提交成功"); 
 | 
          this.showModal = false; 
 | 
          const obj = { 
 | 
            suppliedQuantity: this.modalList.suppliedQuantity, 
 | 
            outBatchNo: this.modalList.outBatchNo, 
 | 
          }; 
 | 
          this.hasScanSnList.push(obj); 
 | 
        } 
 | 
      }); 
 | 
    }, 
 | 
    // 模态框取消 
 | 
    cancel() { 
 | 
      this.showModal = false; // 关闭弹窗 
 | 
    }, 
 | 
    // 工单回显 
 | 
    workNo(val) { 
 | 
      this.machineList = []; 
 | 
      this.machineIndex = null; 
 | 
      this.registerInfo.workstationId = ""; 
 | 
      this.registerInfo.partName = ""; 
 | 
      this.registerInfo.partNo = ""; 
 | 
      this.$u.api.WorkshopOrderIssued.selWorkStation(val).then((res) => { 
 | 
        console.log("111", res); 
 | 
        if (res.code === 0 && res.data.length > 0) { 
 | 
          res.data.forEach((i) => { 
 | 
            const obj = Object.assign({ 
 | 
              label: i.name, 
 | 
              value: i.id, 
 | 
            }); 
 | 
            this.machineList.push(obj); 
 | 
          }); 
 | 
        } 
 | 
      }); 
 | 
      this.registerInfo.optaskNo = val.optaskNo; 
 | 
      this.registerInfo.operationTaskId = val.id; 
 | 
      this.hasScanSnList = []; 
 | 
    }, 
 | 
    // 子件回显 
 | 
    compNo(val) { 
 | 
      this.registerInfo.partNo = val.partNo; 
 | 
      this.registerInfo.partName = val.partName; 
 | 
      this.registerInfo.ifsLineItemNo = val.ifsLineItemNo; 
 | 
    }, 
 | 
    // 订单号回显 
 | 
    setNo(val) { 
 | 
      console.log("11111", val); 
 | 
      (this.registerInfo = { 
 | 
        operationTaskId: "", 
 | 
        id: val.id, 
 | 
        ifsOrderNo: val.ifsOrderNo, 
 | 
        partNo: "", 
 | 
        partName: "", 
 | 
        optaskNo: "", 
 | 
        workstationId: "", 
 | 
        ifsLineItemNo: "", 
 | 
      }), 
 | 
        (this.machineList = []); 
 | 
      this.machineIndex = null; 
 | 
      this.hasScanSnList = []; 
 | 
    }, 
 | 
    //订单号 
 | 
    seachPersonnelNo() { 
 | 
      console.log("车间订单号"); 
 | 
      uni.navigateTo({ 
 | 
        url: "/pages/product/report/orderList", 
 | 
      }); 
 | 
    }, 
 | 
    //子件 
 | 
    seachComp() { 
 | 
      // if (this.registerInfo.optaskNo == "") { 
 | 
      //   this.$u.toast("请选择工单号"); 
 | 
      //   return; 
 | 
      // } 
 | 
      if (this.registerInfo.ifsOrderNo == "") { 
 | 
        this.$u.toast("请选择订单号"); 
 | 
        return; 
 | 
      } 
 | 
      console.log("子件"); 
 | 
      // 使用uni.navigateTo方法跳转,并通过queryParams传递参数 
 | 
      uni.navigateTo({ 
 | 
        url: 
 | 
          "/pages/product/WorkshopOrderIssued/comp?operationTaskId=" + 
 | 
          encodeURIComponent(JSON.stringify(this.registerInfo.id)), 
 | 
      }); 
 | 
    }, 
 | 
    //工单 
 | 
    seachWork() { 
 | 
      if (this.registerInfo.ifsOrderNo == "") { 
 | 
        this.$u.toast("请选择订单号"); 
 | 
        return; 
 | 
      } 
 | 
      console.log("子件"); 
 | 
      // 使用uni.navigateTo方法跳转,并通过queryParams传递参数 
 | 
      uni.navigateTo({ 
 | 
        url: 
 | 
          "/pages/product/WorkshopOrderIssued/WorkOrderList?id=" + 
 | 
          encodeURIComponent(JSON.stringify(this.registerInfo.id)), 
 | 
      }); 
 | 
    }, 
 | 
    // 扫码后数据回显 
 | 
    scanHandle(val) { 
 | 
      const { BN } = val; 
 | 
      const { workstationId, operationTaskId } = this.registerInfo; 
 | 
      const obj = { 
 | 
        outBatchNo: BN, 
 | 
        // workstationId: workstationId, 
 | 
        // operationTaskId: operationTaskId, 
 | 
      }; 
 | 
      this.$u.api.WorkshopOrderIssued.checkRawPartPDA(obj).then((res) => { 
 | 
        console.log("res", res); 
 | 
        if (res.code === 0) { 
 | 
          (res.data.workstationId = workstationId), (this.modalList = res.data); 
 | 
          this.modalList.ifsLineItemNo = this.registerInfo.ifsLineItemNo; 
 | 
          this.showModal = true; 
 | 
        } 
 | 
      }); 
 | 
    }, 
 | 
  }, 
 | 
}; 
 | 
</script> 
 | 
<style lang="scss" scoped> 
 | 
.popup-content { 
 | 
  width: 600rpx; 
 | 
  height: 350rpx; 
 | 
  background-color: #fff; 
 | 
  border-radius: 8px; 
 | 
  z-index: 10; 
 | 
  /* 确保内容在蒙版之上 */ 
 | 
} 
 | 
  
 | 
.packing-registration-bg { 
 | 
  background-color: #f6f9ff; 
 | 
  background-image: url("~@/static/custom/packing/backBg.png"); 
 | 
  padding: 0 20rpx; 
 | 
  background-attachment: fixed; 
 | 
  background-size: 100% auto; 
 | 
  background-repeat: no-repeat; 
 | 
  position: fixed; 
 | 
  top: 0; 
 | 
  bottom: 0; 
 | 
  width: 100%; 
 | 
  z-index: -1; 
 | 
} 
 | 
  
 | 
.packing-registration-param { 
 | 
  padding: 40rpx 30rpx 10rpx 30rpx; 
 | 
  
 | 
  .packing-registration-param-title { 
 | 
    display: flex; 
 | 
    flex-direction: row; 
 | 
    align-items: center; 
 | 
    margin-bottom: 30rpx; 
 | 
  
 | 
    .title-label { 
 | 
      margin-left: 14rpx; 
 | 
      font-size: 34rpx; 
 | 
      font-weight: bold; 
 | 
      color: #283e65; 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .packing-registration-param-view { 
 | 
    height: 350rpx; 
 | 
    background-color: #fff; 
 | 
    border-radius: 10rpx; 
 | 
    padding: 0rpx 23rpx; 
 | 
    margin-bottom: 30rpx; 
 | 
  
 | 
    .packing-registration-param-item { 
 | 
      height: 90rpx; 
 | 
      border: 1px solid #adc8e4; 
 | 
      line-height: 90rpx; 
 | 
      display: flex; 
 | 
      justify-content: space-between; 
 | 
      border: none; 
 | 
  
 | 
      .packing-registration-param-item-left { 
 | 
        .item-one { 
 | 
          font-size: small; 
 | 
          color: #232222; 
 | 
        } 
 | 
      } 
 | 
  
 | 
      .packing-registration-param-item-right { 
 | 
        display: flex; 
 | 
        justify-content: space-between; 
 | 
  
 | 
        .item-one { 
 | 
          font-size: 30rpx; 
 | 
          color: #060505; 
 | 
          margin-right: 6rpx; 
 | 
        } 
 | 
  
 | 
        .item-two { 
 | 
          font-size: small; 
 | 
          color: #a6b4cc; 
 | 
          margin-right: 6rpx; 
 | 
        } 
 | 
  
 | 
        .item-three { 
 | 
          font-size: 30rpx; 
 | 
          color: #214ded; 
 | 
          margin-right: 6rpx; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  
 | 
    .param-extra { 
 | 
      border-bottom: 1px solid #ededed; 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
.wrap .packing-registration-scroll-list { 
 | 
  height: calc(100vh - var(--window-top) - var(--window-bottom) - 550rpx); 
 | 
  width: 100%; 
 | 
} 
 | 
  
 | 
.packing-registration-scroll-list-group { 
 | 
  ::v-deep .u-cell-item-box { 
 | 
    background-color: rgba(250, 252, 255, 0.36) !important; 
 | 
    padding: 0rpx 30rpx; 
 | 
  } 
 | 
  
 | 
  .content { 
 | 
    font-size: 12px; 
 | 
    background-color: #ffffff; 
 | 
    box-sizing: border-box; 
 | 
    border-radius: 10rpx; 
 | 
    margin: 0rpx 0rpx 16rpx; 
 | 
    padding: 20rpx 8rpx; 
 | 
    box-shadow: none; 
 | 
    display: flex; 
 | 
    align-items: center; 
 | 
  
 | 
    .content-header { 
 | 
      width: 40rpx; 
 | 
      height: 90rpx; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
  
 | 
      .content-header-icon { 
 | 
        background-image: url("~@/static/custom/moveWareHouse/header_icon.png"); 
 | 
        background-size: 100% auto; 
 | 
        background-repeat: no-repeat; 
 | 
        height: 28rpx; 
 | 
        width: 28rpx; 
 | 
      } 
 | 
  
 | 
      .content-header-title { 
 | 
        margin-left: 11rpx; 
 | 
        font-size: 26rpx; 
 | 
        font-weight: bold; 
 | 
        color: #626369; 
 | 
      } 
 | 
    } 
 | 
  
 | 
    .content-body { 
 | 
      flex: 1; 
 | 
      background-color: #ffffff; 
 | 
      border-radius: 10rpx; 
 | 
      padding: 0rpx 23rpx; 
 | 
  
 | 
      .row-list { 
 | 
        height: 60rpx; 
 | 
        display: flex; 
 | 
        flex-direction: row; 
 | 
        padding: 0px; 
 | 
        align-items: center; 
 | 
      } 
 | 
  
 | 
      .row-list ._label { 
 | 
        display: flex; 
 | 
        flex: 0.8; 
 | 
        color: #909399; 
 | 
        align-items: center; 
 | 
  
 | 
        ._label-name { 
 | 
          margin-left: 11rpx; 
 | 
          font-size: small; 
 | 
          font-weight: 500; 
 | 
          color: #666666; 
 | 
        } 
 | 
      } 
 | 
  
 | 
      .row-list ._content { 
 | 
        flex: 1.5; 
 | 
        text-align: right; 
 | 
        color: #909399; 
 | 
        font-size: small; 
 | 
      } 
 | 
  
 | 
      .row-list .s1 { 
 | 
        color: #d35651; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</style> 
 |