yyb
2 天以前 d3cff99cd833fedf7714cbe42e052f1402136a84
联调车间订单下发页面
已修改3个文件
733 ■■■■ 文件已修改
common/http.api.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/product/WorkshopOrderIssued/comp.vue 622 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/product/WorkshopOrderIssued/index.vue 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
common/http.api.js
@@ -504,6 +504,17 @@
        cancelReporting: {
            // 取消报工确认
            cancelDTAOfWorkApplication: (params = {}) => vm.$u.get('mes/product/cancelDTAOfWorkApplication', params),
        },
        // 车间订单下发
        WorkshopOrderIssued: {
            // 查询子件
            manufacturingOrder: (params = {}) => vm.$u.get('mes/plan/manufacturingOrder/' + params.id),
            // 检查校验
            checkRawPart: (params = {}) => vm.$u.post('/mes/product/checkRawPart/'+ params.operationTaskId,params),
        },
        // 车间订单取消下发
        WorkshopOrderCancellationIssued: {
        }
    };
pages/product/WorkshopOrderIssued/comp.vue
@@ -1,325 +1,351 @@
<template>
    <view class="page">
        <view class="finishProductIn-locno-bg" />
        <u-navbar title="车间订单物料" :background="background" :border-bottom="false" :title-bold="true" title-color="#000"
            back-icon-color="#000" />
        <view class="finishProductIn-locno-search">
            <u-search v-model="keywords" shape="square" bg-color="rgba(250,252,255,0.36)" :show-action="false"
                placeholder="请输入零件号" @clear="search" @custom="search" @search="search">
            </u-search>
        </view>
        <view class="wrap">
            <scroll-view class="finishProductIn-locno-scroll-list" scroll-y="true" @scrolltolower="getmoreList()">
                <u-cell-group class="finishProductIn-locno-scroll-list-group" :border="false">
                    <view class="content" v-for="(item, index) in list" :key="item.locNo" :index="index"
                        @click="selectNo(item)">
                        <view class="content-header">
                            <view class="content-header-title">{{ item.index }}</view>
                        </view>
                        <view class="content-body">
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-icon-1">
                                    </view>
                                    <view class="_label-name">行号:</view>
                                </view>
                                <view class="_content">
                                    {{ item.value0 }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-icon-2">
                                    </view>
                                    <view class="_label-name">下发至库位:</view>
                                </view>
                                <view class="_content">
                                    {{ item.value1 }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-icon-1">
                                    </view>
                                    <view class="_label-name">零件号:</view>
                                </view>
                                <view class="_content">
                                    {{ item.value3 }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-icon-3">
                                    </view>
                                    <view class="_label-name">零件描述:</view>
                                </view>
                                <view class="_content">
                                    {{ item.value2 }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-icon-2">
                                    </view>
                                    <view class="_label-name">零件下发数量:</view>
                                </view>
                                <view class="_content">
                                    {{ item.value4 }}
                                </view>
                            </view>
                            <view class="row-list">
                                <view class="_label">
                                    <view class="_label-icon-3">
                                    </view>
                                    <view class="_label-name">物料行状态:</view>
                                </view>
                                <view class="_content">
                                    {{ item.value5 }}
                                </view>
                            </view>
                        </view>
                    </view>
                </u-cell-group>
                <view class="loadmore" @click="getmoreList()">
                    <u-loadmore :status="status" :load-text="loadText" @loadmore="getmoreList()" />
                </view>
            </scroll-view>
        </view>
    </view>
  <view class="page">
    <view class="finishProductIn-locno-bg" />
    <u-navbar
      title="车间订单物料"
      :background="background"
      :border-bottom="false"
      :title-bold="true"
      title-color="#000"
      back-icon-color="#000"
    />
    <view class="finishProductIn-locno-search">
      <u-search
        v-model="keywords"
        shape="square"
        bg-color="rgba(250,252,255,0.36)"
        :show-action="false"
        placeholder="请输入零件号"
        @clear="search"
        @custom="search"
        @search="search"
      >
      </u-search>
    </view>
    <view class="wrap">
      <scroll-view
        class="finishProductIn-locno-scroll-list"
        scroll-y="true"
        @scrolltolower="getmoreList()"
      >
        <u-cell-group
          class="finishProductIn-locno-scroll-list-group"
          :border="false"
        >
          <view
            class="content"
            v-for="(item, index) in list"
            :key="item.locNo"
            :index="index"
            @click="selectNo(item)"
          >
            <view class="content-header">
              <view class="content-header-title">{{ item.index }}</view>
            </view>
            <view class="content-body">
              <view class="row-list">
                <view class="_label">
                  <view class="_label-icon-1"> </view>
                  <view class="_label-name">行号:</view>
                </view>
                <view class="_content">
                  {{ item.value0 }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-icon-2"> </view>
                  <view class="_label-name">下发至库位:</view>
                </view>
                <view class="_content">
                  {{ item.value1 }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-icon-1"> </view>
                  <view class="_label-name">零件号:</view>
                </view>
                <view class="_content">
                  {{ item.partNo }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-icon-3"> </view>
                  <view class="_label-name">零件描述:</view>
                </view>
                <view class="_content">
                  {{ item.partName }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-icon-2"> </view>
                  <view class="_label-name">零件下发数量:</view>
                </view>
                <view class="_content">
                  {{ item.qpa }}
                </view>
              </view>
              <view class="row-list">
                <view class="_label">
                  <view class="_label-icon-3"> </view>
                  <view class="_label-name">物料行状态:</view>
                </view>
                <view class="_content">
                  {{ item.value5 }}
                </view>
              </view>
            </view>
          </view>
        </u-cell-group>
        <view class="loadmore" @click="getmoreList()">
          <u-loadmore
            :status="status"
            :load-text="loadText"
            @loadmore="getmoreList()"
          />
        </view>
      </scroll-view>
    </view>
  </view>
</template>
<script>
    import content_bg from '@/static/custom/finishProductIn/locNoBg.png'
    export default {
        data() {
            return {
                background: {
                    backgroundImage: `url(${content_bg})`,
                    backgroundAttachment: 'fixed',
                    backgroundSize: '100% auto',
                    backgroundRepeat: 'no-repeat',
                },
                keywords: '',
                list: [],
                total: 0,
                pageNum: 1,
                pageSize: 10,
                status:'loading',
                loadText: {
                    loadmore: "加载更多...",
                    loading: "努力加载中...",
                    nomore: "没有更多了",
                },
            };
import content_bg from "@/static/custom/finishProductIn/locNoBg.png";
export default {
  data() {
    return {
      background: {
        backgroundImage: `url(${content_bg})`,
        backgroundAttachment: "fixed",
        backgroundSize: "100% auto",
        backgroundRepeat: "no-repeat",
      },
      keywords: "",
      list: [],
      total: 0,
      pageNum: 1,
      pageSize: 10,
      status: "loading",
      loadText: {
        loadmore: "加载更多...",
        loading: "努力加载中...",
        nomore: "没有更多了",
        },
        onLoad() {
            this.getlist();
        },
        methods: {
            getmoreList() {
                if (this.pageSize >= this.total) {
                    this.status = "nomore";
                    return;
                }
                this.status = "loading";
                setTimeout(() => {
                    this.pageSize += this.pageSize;
                    this.getlist();
                }, 1000);
            },
            getlist() {
                this.$u.api.workReporting
                    ._({
                        current: this.pageNum,
                        size: this.pageSize
                    })
                    .then((res) => {
                        console.log("res", res);
                        this.list = res.data.records;
                        this.total = res.data.total;
                        if (this.pageSize >= this.total) {
                            this.status = "nomore";
                        } else {
                            this.status = "loadmore";
                        }
                    });
            },
            search(value) {
                console.log("111", value);
                if (value) {
                    this.list = [];
                    this.pageSize = 10;
                    this.$u.api.workReporting
                        ._({
                            current: this.pageNum,
                            size: this.pageSize,
                            moNo: value,
                        })
                        .then((res) => {
                            console.log("res", res);
                            this.list = res.data.records;
                            this.total = res.data.total;
                            if (this.pageSize >= this.total) {
                                this.status = "nomore";
                            } else {
                                this.status = "loadmore";
                            }
                        });
                } else {
                    this.getlist();
                }
            },
            selectNo(no) {
                this.refreshLastPage(no)
            },
      id:''
    };
  },
  onLoad(options) {
      console.log('22@@', options);
this.id = JSON.parse(decodeURIComponent(options.id))
    this.getlist();
    },
  methods: {
    getmoreList() {
      if (this.pageSize >= this.total) {
        this.status = "nomore";
        return;
      }
      this.status = "loading";
      setTimeout(() => {
        this.pageSize += this.pageSize;
        this.getlist();
      }, 1000);
    },
    getlist() {
      this.$u.api.WorkshopOrderIssued.manufacturingOrder({
        current: this.pageNum,
          size: this.pageSize,
        id:this.id
      }).then((res) => {
        console.log("res", res);
        this.list = res.data.bomRoot.children;
        this.total = res.data.bomRoot.children.length + 1;
        if (this.pageSize >= this.total) {
          this.status = "nomore";
        } else {
          this.status = "loadmore";
        }
      });
    },
    search(value) {
      console.log("111", value);
      if (value) {
        this.list = [];
        this.pageSize = 10;
        this.$u.api.workReporting
          ._({
            current: this.pageNum,
            size: this.pageSize,
            moNo: value,
          })
          .then((res) => {
            console.log("res", res);
            this.list = res.data.records;
            this.total = res.data.total;
            if (this.pageSize >= this.total) {
              this.status = "nomore";
            } else {
              this.status = "loadmore";
            }
          });
      } else {
        this.getlist();
      }
    },
    selectNo(no) {
      this.refreshLastPage(no);
    },
            //刷新上一个页面
            refreshLastPage(no) {
                // 告知 A.vue 更新数据
                // 获取页面栈
                let pages = getCurrentPages()
    //刷新上一个页面
    refreshLastPage(no) {
      // 告知 A.vue 更新数据
      // 获取页面栈
      let pages = getCurrentPages();
                // 获取上一页栈
                let prevPage = pages[pages.length - 2]
      // 获取上一页栈
      let prevPage = pages[pages.length - 2];
                // 触发上一页 upData 函数(并携带参数)
                prevPage.$vm.compNo(no)
      // 触发上一页 upData 函数(并携带参数)
      prevPage.$vm.compNo(no);
                // 返回上一页
                uni.navigateBack({
                    delta: 1
                })
            },
        }
    };
      // 返回上一页
      uni.navigateBack({
        delta: 1,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
    .finishProductIn-locno-bg {
        background-color: #F6F9FF;
        background-image: url('~@/static/custom/finishProductIn/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;
    }
.finishProductIn-locno-bg {
  background-color: #f6f9ff;
  background-image: url("~@/static/custom/finishProductIn/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;
}
    .finishProductIn-locno-search {
        padding: 40rpx 30rpx 20rpx 30rpx;
    }
.finishProductIn-locno-search {
  padding: 40rpx 30rpx 20rpx 30rpx;
}
    .wrap .finishProductIn-locno-scroll-list {
        height: calc(100vh - var(--window-top) - var(--window-bottom) - 242rpx);
        width: 100%;
    }
.wrap .finishProductIn-locno-scroll-list {
  height: calc(100vh - var(--window-top) - var(--window-bottom) - 242rpx);
  width: 100%;
}
    .finishProductIn-locno-scroll-list-group {
        ::v-deep .u-cell-item-box {
            background-color: rgba(250, 252, 255, 0.36) !important;
            padding: 0rpx 30rpx;
        }
.finishProductIn-locno-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: #333333;
                }
            }
      .content-header-title {
        margin-left: 11rpx;
        font-size: 26rpx;
        font-weight: bold;
        color: #333333;
      }
    }
            .content-body {
                flex: 1;
                background: #F5F9FF;
                border-radius: 10rpx;
                padding: 0rpx 23rpx;
    .content-body {
      flex: 1;
      background: #f5f9ff;
      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-icon-1 {
                        background-image: url('~@/static/custom/moveWareHouse/label-icon-1.png');
                        background-size: 100% auto;
                        background-repeat: no-repeat;
                        height: 26rpx;
                        width: 26rpx;
                    }
        ._label-icon-1 {
          background-image: url("~@/static/custom/moveWareHouse/label-icon-1.png");
          background-size: 100% auto;
          background-repeat: no-repeat;
          height: 26rpx;
          width: 26rpx;
        }
                    ._label-icon-2 {
                        background-image: url('~@/static/custom/moveWareHouse/label-icon-2.png');
                        background-size: 100% auto;
                        background-repeat: no-repeat;
                        height: 26rpx;
                        width: 26rpx;
                    }
        ._label-icon-2 {
          background-image: url("~@/static/custom/moveWareHouse/label-icon-2.png");
          background-size: 100% auto;
          background-repeat: no-repeat;
          height: 26rpx;
          width: 26rpx;
        }
                    ._label-icon-3 {
                        background-image: url('~@/static/custom/moveWareHouse/label-icon-3.png');
                        background-size: 100% auto;
                        background-repeat: no-repeat;
                        height: 26rpx;
                        width: 26rpx;
                    }
        ._label-icon-3 {
          background-image: url("~@/static/custom/moveWareHouse/label-icon-3.png");
          background-size: 100% auto;
          background-repeat: no-repeat;
          height: 26rpx;
          width: 26rpx;
        }
                    ._label-name {
                        width: 70px;
                        margin-left: 11rpx;
                        font-size: 26rpx;
                        font-weight: 500;
                        color: #666666;
                    }
                }
        ._label-name {
          width: 80px;
          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>
pages/product/WorkshopOrderIssued/index.vue
@@ -35,14 +35,14 @@
          </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 +51,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 +83,7 @@
                  <view class="_label-name">批号:</view>
                </view>
                <view class="_content">
                  {{ item.value0 }}
                  {{ item.outBatchNo }}
                </view>
              </view>
              <view class="row-list">
@@ -91,7 +91,7 @@
                  <view class="_label-name">下发数量:</view>
                </view>
                <view class="_content">
                  {{ item.value1 }}
                  {{ item.qpa }}
                </view>
              </view>
            </view>
@@ -116,7 +116,9 @@
                <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">
@@ -124,7 +126,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>
@@ -155,45 +160,48 @@
      },
      // 弹窗列表
      modalList: {
        operationTaskId: "",
        partNo: "",
        moNo: "",
      },
      //   主页面列表
      registerInfo: {
        id: "",
        moNo: "",
        value2: "",
        value3: "",
        partNo: "",
        partName: "",
      },
      //   下发记录列表
      hasScanSnList: [],
      codeInfoId: "",
      showModal: false,
    };
  },
  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 (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) {
          // 扫描报工单二维码
          that.scanHandle(data.code);
          that.$forceUpdate();
          that.getHandelList();
        }
      }
      //扫码成功后的回调,你可以写自己的逻辑代码在这里
      console.log("扫码结果:", data.code);
    });
  },
  methods: {
@@ -211,12 +219,25 @@
    // 点击确认后获取下发记录
    confirm() {
      // 处理确认逻辑
      this.$u.api.workReporting._(this.modalList).then((res) => {
          console.log("res", res);
      this.showModal = false;
             this.getHandelList();
      });
      this.$u.api.WorkshopOrderIssued.checkRawPart(this.modalList).then(
        (res) => {
          console.log("res", res);
          if (res.data.code === 0) {
          this.confirmList();
          }
        }
      );
    },
    // 订单下发
    confirmList() {
      this.$u.api.WorkshopOrderIssued.checkRawPart(this.modalList).then(
        (res) => {
          console.log("res", res);
          if (res.data.code === 0) {
            this.showModal = false;
          }
        }
      );
    },
    // 模态框取消
    cancel() {
@@ -224,14 +245,15 @@
    },
    // 子件回显
    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.value2 = val.value2;
      this.registerInfo.id = val.id;
    },
    //订单号
    seachPersonnelNo() {
@@ -242,25 +264,35 @@
    },
    //子件
    seachComp() {
      if (this.registerInfo.moNO == null) {
      if (this.registerInfo.moNo == "") {
        this.$u.toast("请选择订单号");
        return;
      }
      console.log("子件");
      // 使用uni.navigateTo方法跳转,并通过queryParams传递参数
      uni.navigateTo({
        url: "/pages/product/WorkshopOrderIssued/comp",
        url:
          "/pages/product/WorkshopOrderIssued/comp?id=" +
          encodeURIComponent(JSON.stringify(this.registerInfo.id)),
      });
    },
    // 扫码后数据回显
    scanHandle(val) {
      let { moNo } = val;
      this.modalList.moNo = moNo;
      this.modalList = val;
      this.showModal = true;
    },
  },
};
</script>
<style lang="scss" scoped>
.popup-content {
  width: 600rpx;
  height: 250rpx;
  background-color: #fff;
  border-radius: 8px;
  z-index: 10;
  /* 确保内容在蒙版之上 */
}
.packing-registration-bg {
  background-color: #f6f9ff;
  background-image: url("~@/static/custom/packing/backBg.png");