yyb
3 天以前 a7d23db4e3bcf4c44b7f8b37e79699a7660a399e
移库页面
已修改2个文件
798 ■■■■ 文件已修改
common/http.api.js 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/wareHouse/moveWareHouse/index.vue 786 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/http.api.js
@@ -503,12 +503,12 @@
        // 报工
        cancelReporting: {
            // 取消报工确认
            cancelDTAOfWorkApplication: (params = {}) => vm.$u.get('mes/product/cancelDTAOfWorkApplication', params),
            cancelDTAOfWorkApplication: (params = {}) => vm.$u.get('/mes/product/cancelDTAOfWorkApplication', params),
        },
        // 车间订单下发
        WorkshopOrderIssued: {
            // 查询子件
            manufacturingOrder: (params = {}) => vm.$u.get('mes/plan/manufacturingOrder/' + params.id),
            manufacturingOrder: (params = {}) => vm.$u.get('/mes/plan/manufacturingOrder/' + params.id),
            // 检查校验
            checkRawPart: (params = {}) => vm.$u.post('/mes/product/checkRawPart/'+ params.operationTaskId,params),
            
@@ -516,6 +516,14 @@
        // 车间订单取消下发
        WorkshopOrderCancellationIssued: {
        },
        // 移库
        shiftingParking: {
            // 零件信息
            selPartInfoPDA: (params = {}) => vm.$u.get('/mes/stock/selPartInfoPDA/' + params.outBatchNo),
            // 确认移库
            moveHousePDA: (params = {}) => vm.$u.post('/mes/applyPart/moveHousePDA', params),
        }
    };
pages/wareHouse/moveWareHouse/index.vue
@@ -1,413 +1,449 @@
<template>
    <view class="page">
        <view class="movewarehouse-index-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">{{
              registerInfo.proposedLocation == ""
  <view class="page">
    <view class="movewarehouse-index-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">{{
              registerInfo.toLocationNo == ""
                ? "请扫描库位"
                : registerInfo.proposedLocation
                : registerInfo.toLocationNo
            }}</text>
                    </view>
                </view>
                <view class="packing-registration-param-item param-extra">
                    <view class="packing-registration-param-item-left">
                        <text class="item-one">{{
              `移库记录(${hasScanSnList.length + 1}条):`
          </view>
        </view>
        <view class="packing-registration-param-item param-extra">
          <view class="packing-registration-param-item-left">
            <text class="item-one">{{
              `移库记录(${hasScanSnList.length}条):`
            }}</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">
                    <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.partNo }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-name">批次号:</view>
                                </view>
                                <view class="_content">
                                    {{ item.moNo }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-name">库位号:</view>
                                </view>
                                <view class="_content">
                                    {{ item.proposedLocation }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-name">盘点数量:</view>
                                </view>
                                <view class="_content">
                                    {{ item.value1 }}
                                </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="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">{{ detailedList.moNo }}</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">{{
          </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"
        >
          <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.partNo }}
                </view>
              </view>
              <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.locationNo }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-name">盘点数量:</view>
                </view>
                <view class="_content">
                  {{ item.qtyAvailable }}
                </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="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">{{
                  detailedList.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">{{
                  detailedList.partName
                }}</text>
                            </view>
                        </view>
                        <view class="packing-registration-param-item param-extra">
                            <view class="packing-registration-param-item-left">
                                <text class="item-one">WDR</text>
                            </view>
                            <view class="packing-registration-param-item-right">
                                <text class="item-one item-two">{{ detailedList.WDR }}</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">{{ 111 }}</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">{{
                  detailedList.proposedLocation
              </view>
            </view>
            <view class="packing-registration-param-item param-extra">
              <view class="packing-registration-param-item-left">
                <text class="item-one">WDR</text>
              </view>
              <view class="packing-registration-param-item-right">
                <text class="item-one item-two">{{
                  detailedList.waivDevRejNo
                }}</text>
                            </view>
                        </view>
                    </view>
                </view>
            </view>
        </u-modal>
        <scan></scan>
    </view>
              </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">{{
                  detailedList.qtyAvailable
                }}</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">{{
                  detailedList.locationNo
                }}</text>
              </view>
            </view>
          </view>
        </view>
      </view>
    </u-modal>
    <scan></scan>
  </view>
</template>
<script>
    import scan from "@/components/scan/scan.vue";
    import content_bg from "@/static/custom/moveWareHouse/locNoBg.png";
    export default {
        components: {
            scan,
        },
import scan from "@/components/scan/scan.vue";
import content_bg from "@/static/custom/moveWareHouse/locNoBg.png";
export default {
  components: {
    scan,
  },
        data() {
            return {
                background: {
                    backgroundImage: `url(${content_bg})`,
                    backgroundAttachment: "fixed",
                    backgroundSize: "100% auto",
                    backgroundRepeat: "no-repeat",
                },
                registerInfo: {
                    storageLocation: "",
                    num: 0,
                },
                showModal: false, // 控制弹窗显示隐藏的变量
                hasScanSnList: [],
                detailedList: {
                    moNo: "",
                    partNo: "",
                    proposedLocation: "",
                    WDR: "",
                },
                codeInfoId: '',
            };
        },
        onLoad() {},
        onShow() {
            let that = this;
            uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器
            uni.$on("scan", function(data) {
                console.log("onscan");
                //扫码成功后的回调,你可以写自己的逻辑代码在这里
                console.log("页面扫码结果:", data.code);
                if (data.code) {
                    let codeInfo = JSON.parse(data.code);
                    // 扫描报工单二维码
                    // 判断扫描的是库位码还是流转码
                    if (codeInfo.LN) {
                        that.saveForm(codeInfo)
                    } else {
                        that.codeInfoId = codeInfo.id
                        that.saveModalForm(codeInfo)
                        that.getHandelList();
                    }
                }
            });
        },
        methods: {
            getHandelList() {
                this.$u.api.workReporting
                    .getProductMainV1({
                        current: 1,
                        size: -1,
                        id: this.codeInfoId,
                    })
                    .then((res) => {
                        this.hasScanSnList = res.data.productOutputList;
                    });
            },
            confirm() {
                // 处理确认逻辑
                // 点击确认移库
                if (true) {
                    uni.showToast({
                        icon: "none",
                        title: "你无法将零件移到相同位置",
                        duration: 2 * 1000,
                    });
                    return
                }
                this.getHandelList()
                this.show = false;
            },
            cancel() {
                this.show = false; // 关闭弹窗
            },
            // 回显扫码的信息
            saveForm(val) {
                this.registerInfo.proposedLocation = val.LN
            },
            saveModalForm(val) {
                this.detailedList = {
                        moNo: val.moNo,
                        partNo: val.partNo,
                        proposedLocation: val.proposedLocation,
                        WDR: val.WDR,
                    },
                    this.show = true;
            }
        },
    };
  data() {
    return {
      background: {
        backgroundImage: `url(${content_bg})`,
        backgroundAttachment: "fixed",
        backgroundSize: "100% auto",
        backgroundRepeat: "no-repeat",
      },
      registerInfo: {
        toLocationNo: "",
        num: 0,
      },
      showModal: false, // 控制弹窗显示隐藏的变量
      hasScanSnList: [],
      detailedList: {},
      codeInfoId: "",
    };
  },
  onLoad() {},
  onShow() {
    let that = this;
    uni.$off("scan"); // 每次进来先 移除全局自定义事件监听器
    uni.$on("scan", function (data) {
      console.log("onscan");
      //扫码成功后的回调,你可以写自己的逻辑代码在这里
      console.log("页面扫码结果:", data.code);
      if (data.code) {
        let codeInfo = JSON.parse(data.code);
        // 扫描报工单二维码
        // 判断扫描的是库位码还是流转码
        if (codeInfo.LN) {
          that.saveForm(codeInfo);
        } else {
          if (!that.registerInfo.toLocationNo) {
            that.$u.toast("请先扫描库位");
            return;
          }
          that.hasScanSnList = [];
          that.codeInfoId = codeInfo.id;
          that.saveModalForm(codeInfo);
          //   that.getHandelList();
        }
      }
    });
  },
  methods: {
    // getHandelList() {
    //   this.$u.api.workReporting
    //     .getProductMainV1({
    //       current: 1,
    //       size: -1,
    //       id: this.codeInfoId,
    //     })
    //     .then((res) => {
    //       this.hasScanSnList = res.data.productOutputList;
    //     });
    // },
    confirm() {
      // 点击确认移库
      if (this.registerInfo.toLocationNo == this.detailedList.locationNo) {
        uni.showToast({
          icon: "none",
          title: "你无法将零件移到相同位置",
          duration: 2 * 1000,
        });
        return;
      }
      // 处理确认逻辑
      this.$u.api.shiftingParking
        .moveHousePDA({
          ...this.detailedList,
          toLocationNo: this.registerInfo.toLocationNo,
        })
        .then((res) => {
          console.log("移库记录", res);
          this.hasScanSnList.push(res.data);
          console.log("移库记录", this.hasScanSnList);
          this.$u.toast("移库成功");
        });
    },
    cancel() {
      this.showModal = false; // 关闭弹窗
    },
    // 回显扫码的信息
    saveForm(val) {
      this.registerInfo.toLocationNo = val.LN;
    },
    saveModalForm(val) {
      this.$u.api.shiftingParking
        .selPartInfoPDA({
          outBatchNo: val.outBatchNo,
        })
        .then((res) => {
          this.detailedList = res.data;
          this.showModal = true;
        });
    },
  },
};
</script>
<style lang="scss" scoped>
    .person-btn-view {
        display: flex;
        justify-content: space-between;
        margin-top: 300rpx;
    }
.person-btn-view {
  display: flex;
  justify-content: space-between;
  margin-top: 300rpx;
}
    .popup-content {
        width: 600rpx;
        height: 500rpx;
        background-color: #fff;
        border-radius: 8px;
        z-index: 10;
        /* 确保内容在蒙版之上 */
    }
.popup-content {
  width: 600rpx;
  height: 500rpx;
  background-color: #fff;
  border-radius: 8px;
  z-index: 10;
  /* 确保内容在蒙版之上 */
}
    .movewarehouse-index-bg {
        background-color: #f6f9ff;
        background-image: url("~@/static/custom/moveWareHouse/locNoBg.png");
        // background: linear-gradient(180deg,rgba(206,227,254,1),rgba(206,227,254,1) 20%,rgba(206,227,254,0.5) 40%,rgba(206,227,254,0.25) 60%,rgba(206,227,254,0.08) 80%,rgba(206,227,254,0));
        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;
    }
.movewarehouse-index-bg {
  background-color: #f6f9ff;
  background-image: url("~@/static/custom/moveWareHouse/locNoBg.png");
  // background: linear-gradient(180deg,rgba(206,227,254,1),rgba(206,227,254,1) 20%,rgba(206,227,254,0.5) 40%,rgba(206,227,254,0.25) 60%,rgba(206,227,254,0.08) 80%,rgba(206,227,254,0));
  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 {
  padding: 40rpx 30rpx 10rpx 30rpx;
        .packing-registration-param-title {
            display: flex;
            flex-direction: row;
            align-items: center;
            margin-bottom: 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;
            }
        }
    .title-label {
      margin-left: 14rpx;
      font-size: 34rpx;
      font-weight: bold;
      color: #283e65;
    }
  }
        .packing-registration-param-view {
            height: 177rpx;
            background-color: #fff;
            border-radius: 10rpx;
            padding: 0rpx 23rpx;
            margin-bottom: 30rpx;
  .packing-registration-param-view {
    height: 177rpx;
    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 {
      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: 30rpx;
                        color: #666666;
                    }
                }
      .packing-registration-param-item-left {
        .item-one {
          font-size: 30rpx;
          color: #666666;
        }
      }
                .packing-registration-param-item-right {
                    display: flex;
                    justify-content: space-between;
      .packing-registration-param-item-right {
        display: flex;
        justify-content: space-between;
                    .item-one {
                        font-size: 30rpx;
                        color: #333333;
                        margin-right: 6rpx;
                    }
        .item-one {
          font-size: 30rpx;
          color: #333333;
          margin-right: 6rpx;
        }
                    .item-two {
                        font-size: 30rpx;
                        color: #a6b4cc;
                        margin-right: 6rpx;
                    }
        .item-two {
          font-size: 30rpx;
          color: #a6b4cc;
          margin-right: 6rpx;
        }
                    .item-three {
                        font-size: 30rpx;
                        color: #214ded;
                        margin-right: 6rpx;
                    }
                }
            }
        .item-three {
          font-size: 30rpx;
          color: #214ded;
          margin-right: 6rpx;
        }
      }
    }
            .param-extra {
                border-bottom: 1px solid #ededed;
            }
        }
    }
    .param-extra {
      border-bottom: 1px solid #ededed;
    }
  }
}
    .wrap .packing-registration-scroll-list {
        height: calc(100vh - var(--window-top) - var(--window-bottom) - 360rpx);
        width: 100%;
    }
.wrap .packing-registration-scroll-list {
  height: calc(100vh - var(--window-top) - var(--window-bottom) - 360rpx);
  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;
        }
.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 {
    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 {
      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-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-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;
    .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 {
        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;
      .row-list ._label {
        display: flex;
        flex: 0.8;
        color: #909399;
        align-items: center;
                    ._label-name {
                        margin-left: 11rpx;
                        font-size: 26rpx;
                        font-weight: 500;
                        color: #666666;
                    }
                }
        ._label-name {
          margin-left: 11rpx;
          font-size: 26rpx;
          font-weight: 500;
          color: #666666;
        }
      }
                .row-list ._content {
                    flex: 1.5;
                    text-align: right;
                    color: #909399;
                    font-size: 24rpx;
                }
      .row-list ._content {
        flex: 1.5;
        text-align: right;
        color: #909399;
        font-size: 24rpx;
      }
                .row-list .s1 {
                    color: #d35651;
                }
            }
        }
    }
      .row-list .s1 {
        color: #d35651;
      }
    }
  }
}
</style>