yyb
10 小时以前 13862edbc722e99f15a2661b72e09a528c7f485a
pages/product/WorkshopOrderIssued/index.vue
@@ -31,18 +31,69 @@
        </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.value2 == "" ? "点击选择" : registerInfo.value2
              registerInfo.partNo == "" ? "点击选择" : registerInfo.partNo
            }}</text>
            <u-icon
              name="arrow-right"
              color="#687792"
              size="28"
              @click="seachComp()"
              v-show="registerInfo.value2 == ''"
              v-show="registerInfo.partNo == ''"
            ></u-icon>
          </view>
        </view>
@@ -51,7 +102,7 @@
            <text class="item-one">零件描述</text>
          </view>
          <view class="packing-registration-param-item-right">
            <text class="item-one item-two">{{ registerInfo.value3 }}</text>
            <text class="item-one item-two">{{ registerInfo.partName }}</text>
          </view>
        </view>
        <view class="packing-registration-param-item param-extra">
@@ -83,7 +134,7 @@
                  <view class="_label-name">批号:</view>
                </view>
                <view class="_content">
                  {{ item.value0 }}
                  {{ item.outBatchNo }}
                </view>
              </view>
              <view class="row-list">
@@ -91,7 +142,7 @@
                  <view class="_label-name">下发数量:</view>
                </view>
                <view class="_content">
                  {{ item.value1 }}
                  {{ item.suppliedQuantity }}
                </view>
              </view>
            </view>
@@ -116,7 +167,19 @@
                <text class="item-one">批号</text>
              </view>
              <view class="packing-registration-param-item-right">
                <text class="item-one item-two">{{ modalList.moNO }}</text>
                <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">
@@ -124,7 +187,10 @@
                <text class="item-one">下发数量</text>
              </view>
              <view class="packing-registration-param-item-right">
                <u-input class="item-one item-two" v-model="modalList.value1" />
                <u-input
                  class="item-one item-two"
                  v-model="modalList.suppliedQuantity"
                />
              </view>
            </view>
          </view>
@@ -154,84 +220,172 @@
        whiteSpace: "nowrap",
      },
      // 弹窗列表
      modalList: {
        partNo: "",
        moNo: "",
      },
      modalList: {},
      //   主页面列表
      registerInfo: {
        operationTaskId: "",
        id: "",
        moNo: "",
        value2: "",
        value3: "",
        partNo: "",
        partName: "",
        optaskNo: "",
        workstationId: "",
      },
      //   下发记录列表
      hasScanSnList: [],
      codeInfoId: "",
      showModal: false,
      machineIndex: null,
      machineList: [],
    };
  },
  onShow() {
    let that = this;
    uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器
    if (registerInfo.moNO == null) {
      uni.showToast({
        icon: "none",
        title: "请先选择子件!",
        duration: 2 * 1000,
      });
      return;
    }
    uni.$on("scan", function (data) {
      console.log("onscan");
      if (that.registerInfo.partNo == "") {
        uni.showToast({
          icon: "none",
          title: "请先选择子件!",
          duration: 2 * 1000,
        });
        return;
      }
      if (that.registerInfo.workstationId == "") {
        uni.showToast({
          icon: "none",
          title: "请先选择机台!",
          duration: 2 * 1000,
        });
        return;
      }
      if (data.code) {
        //扫码成功后的回调,你可以写自己的逻辑代码在这里
        console.log("扫码结果:", data.code);
        let codeInfo = JSON.parse(data.code);
        this.codeInfoId = codeInfo.id;
        if (codeInfo.moOn) {
        that.codeInfoId = codeInfo.id;
        if (codeInfo.partNo) {
          if (that.registerInfo.partNo != codeInfo.partNo) {
            this.$u.toast("当前子件和扫码子件不一致!");
            return;
          }
          // 扫描报工单二维码
          that.scanHandle(data.code);
          that.scanHandle(codeInfo);
          that.$forceUpdate();
          that.getHandelList();
          // that.getHandelList();
        }
      }
      //扫码成功后的回调,你可以写自己的逻辑代码在这里
      console.log("扫码结果:", data.code);
    });
  },
  methods: {
    getHandelList() {
      this.$u.api.workReporting
        .getProductMainV1({
          current: 1,
          size: -1,
          id: this.codeInfoId,
        })
        .then((res) => {
          this.hasScanSnList = res.data.productOutputList;
        });
    //机台
    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.workReporting._(this.modalList).then((res) => {
        console.log("res", res);
      this.showModal = false;
             this.getHandelList();
      this.$u.api.WorkshopOrderIssued.feeding({
        feedingFrom: "stocker",
        operationTaskId: this.registerInfo.operationTaskId,
        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.value2 = val.value2;
      this.registerInfo.value3 = val.value2;
      this.registerInfo.partNo = val.partNo;
      this.registerInfo.partName = val.partName;
    },
    // 订单号回显
    setNo(val) {
      console.log("11111", val);
      this.registerInfo.moNo = val.moNo;
      this.registerInfo.value2 = val.value2;
      (this.registerInfo = {
        operationTaskId: "",
        id: val.id,
        moNo: val.moNo,
        partNo: "",
        partName: "",
        optaskNo: "",
        workstationId: "",
      }),
        (this.machineList = []);
      this.machineIndex = null;
      this.hasScanSnList = [];
    },
    //订单号
    seachPersonnelNo() {
@@ -242,25 +396,62 @@
    },
    //子件
    seachComp() {
      if (this.registerInfo.moNO == null) {
      if (this.registerInfo.optaskNo == "") {
        this.$u.toast("请选择工单号");
        return;
      }
      console.log("子件");
      // 使用uni.navigateTo方法跳转,并通过queryParams传递参数
      uni.navigateTo({
        url:
          "/pages/product/WorkshopOrderIssued/comp?operationTaskId=" +
          encodeURIComponent(JSON.stringify(this.registerInfo.operationTaskId)),
      });
    },
    //工单
    seachWork() {
      if (this.registerInfo.moNo == "") {
        this.$u.toast("请选择订单号");
        return;
      }
      console.log("子件");
      // 使用uni.navigateTo方法跳转,并通过queryParams传递参数
      uni.navigateTo({
        url: "/pages/product/WorkshopOrderIssued/comp",
        url:
          "/pages/product/WorkshopOrderIssued/WorkOrderList?id=" +
          encodeURIComponent(JSON.stringify(this.registerInfo.id)),
      });
    },
    // 扫码后数据回显
    scanHandle(val) {
      let { moNo } = val;
      this.modalList.moNo = moNo;
      this.showModal = true;
      const { outBatchNo } = val;
      const { workstationId, operationTaskId } = this.registerInfo;
      const obj = {
        outBatchNo: outBatchNo,
        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.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");
@@ -293,7 +484,7 @@
  }
  .packing-registration-param-view {
    height: 345rpx;
    height: 550rpx;
    background-color: #fff;
    border-radius: 10rpx;
    padding: 0rpx 23rpx;
@@ -320,7 +511,7 @@
        .item-one {
          font-size: 30rpx;
          color: #333333;
          color: #060505;
          margin-right: 6rpx;
        }