jiangping
2023-10-26 519b464e4ed3d07bd5aa23a4067e5869058de2e5
minipro_standard/pages_inspect/pages/OutOperation/OutOperation.vue
@@ -1,8 +1,10 @@
<template>
   <page-meta :page-style="ban ?'overflow: hidden;': ''"/>
   <view>
      <InOutInfo :info="info" />
      <uni-collapse @change="change" @close="close" @open="open">
         <uni-collapse-item :open="item1.wtransferDetailList.length" v-if="type==7" v-for="(item1, index) in warehouseList" :key="index">
         <uni-collapse-item :open="item1.wtransferDetailList.length" v-if="type==7"
            v-for="(item1, index) in warehouseList" :key="index">
            <view class="p30 cY" style="border-bottom: 4rpx solid #f7f7f7;" slot="title">
               <image src="../../../static/chuku_ic_cangku@2x.png" class="img36 mr10" mode=""></image>
               <view>{{ item1.warehouseName }}</view>
@@ -22,18 +24,15 @@
                        <span>待出<span>{{ item.outPlannum }}</span> {{ item.unitName }}</span>
                     </div>
                     <div class="page_content_title_bottom">
                        <span class="green" v-if="item.qualityType === 0">合格&nbsp;<span
                              class="black">/</span>&nbsp;</span>
                        <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span
                              class="black">/</span>&nbsp;</span>
                        <span class="error" v-else-if="item.qualityType === 2">报废&nbsp;<span
                              class="black">/</span>&nbsp;</span>
                        <span v-else>-&nbsp;/&nbsp;</span>
                        <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
                        <span class="green" v-if="item.qualityType === 0">合格<text class="c6" decode>{{ split}}</text></span>
                        <span class="warning" v-else-if="item.qualityType === 1">不良<text class="c6" decode>{{ split}}</text></span>
                        <span class="error" v-else-if="item.qualityType === 2">报废<text class="c6" decode>{{ split}}</text></span>
                        <span v-else>-<text class="c6" decode>{{ split}}</text></span>
                        <span>{{item.procedureName || '-'}}<text class="c6" decode>{{ split}}</text></span>
                        <span>{{item.batch ? item.batch : '-'}}</span>
                     </div>
                  </div>
                  <div class="page_content_list" v-for="(childer, idxs) in item.wstockExtListVOList"  v-if="childer.batch == item.batch"  :key="idxs">
                  <div class="page_content_list" v-for="(childer, idxs) in item.wstockExtListVOList" :key="idxs">
                     <div class="page_content_list_item">
                        <div class="page_content_list_item_label">出库货位:</div>
                        <div class="page_content_list_item_nr">{{ childer.locationName }}</div>
@@ -69,20 +68,17 @@
                        <span>待出 <span>{{ item.num }}</span> {{ item.unitName }}</span>
                     </div>
                     <div class="page_content_title_bottom">
                        <span class="green" v-if="item.qualityType === 0">合格&nbsp;<span
                              class="black">/</span>&nbsp;</span>
                        <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span
                              class="black">/</span>&nbsp;</span>
                        <span class="error" v-else-if="item.qualityType === 2">报废&nbsp;<span
                              class="black">/</span>&nbsp;</span>
                        <span v-else>-&nbsp;/&nbsp;</span>
                        <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;/&nbsp;</span>
                        <span class="green" v-if="item.qualityType === 0">合格<text class="c6" decode>{{ split}}</text></span>
                        <span class="warning" v-else-if="item.qualityType === 1">不良<text class="c6" decode>{{ split}}</text></span>
                        <span class="error" v-else-if="item.qualityType === 2">报废<text class="c6" decode>{{ split}}</text></span>
                        <span v-else>-<text class="c6" decode>{{ split}}</text></span>
                        <span>{{item.procedureName ? item.procedureName : '-'}}<text class="c6" decode>{{ split}}</text></span>
                        <span>{{item.batch ? item.batch : '-'}}</span>
                     </div>
                  </div>
                  <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" v-if="items.batch == item.batch" :key="ind">
                  <div class="page_content_list" v-for="(items, ind) in item.wstockExtListVOList" :key="ind">
                     <div class="page_content_list_item">
                        <div class="page_content_list_item_label">批次号1:</div>
                        <div class="page_content_list_item_label">批次号:</div>
                        <div class="page_content_list_item_nr">{{ items.batch ? items.batch : '-' }}</div>
                     </div>
                     <div class="page_content_list_items">
@@ -108,7 +104,8 @@
            </div>
            <div class="right" v-if="isZKD" @click="openxz">
               <image src="../../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>手动出库</span>
               <image src="../../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image>
               <span>手动出库</span>
            </div>
         </div>
         <div class="page_yxwl_list" v-if="outboundList.length > 0">
@@ -119,12 +116,12 @@
               </div>
               <div class="page_yxwl_list_item_sx">
                  <span class="green" v-if="item.qualityType == 0">合格&nbsp;<span>/</span></span>
                  <span class="yellow" v-else-if="item.qualityType == 1">不良&nbsp;<span>/</span></span>
                  <span class="red" v-else-if="item.qualityType == 2">报废&nbsp;<span>/</span></span>
                  <span v-else>-&nbsp;/&nbsp;</span>
                  <span>&nbsp;{{ item.procedureName ? item.procedureName : '-' }}&nbsp;/&nbsp;</span>
                  <span>&nbsp;{{ item.batch ? item.batch : '-' }}</span>
                  <span class="green" v-if="item.qualityType == 0">合格<text class="c6" decode>{{ split}}</text></span>
                  <span class="yellow" v-else-if="item.qualityType == 1">不良<text class="c6" decode>{{ split}}</text></span>
                  <span class="red" v-else-if="item.qualityType == 2">报废<text class="c6" decode>{{ split}}</text></span>
                  <span v-else>-<text class="c6" decode>{{ split}}</text></span>
                  <span>{{ item.procedureName ? item.procedureName : '-' }}<text class="c6" decode>{{ split}}</text></span>
                  <span>{{ item.batch ? item.batch : '-' }}</span>
               </div>
               <div class="page_yxwl_list_item_num">
                  <div class="item">
@@ -133,7 +130,7 @@
                        <span>{{ item.locationName }}</span>
                     </div>
                  </div>
                  <div class="item">
                  <div class="item f24">
                     <div class="label">数量:</div>
                     <div class="nr">
                        <!-- @input="changeNum(item)" -->
@@ -143,7 +140,7 @@
                  </div>
                  <div class="dele" @click="dele(index)">
                     <!-- <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" /> -->
                     <image src="../../../static/chuku_ic_delete@2x.png" class="img24" mode=""></image>
                     <image src="../../../static/chuku_ic_delete@2x.png" class="img48" mode=""></image>
                  </div>
               </div>
            </div>
@@ -157,7 +154,7 @@
            <span>确认出库</span>
         </div>
      </div>
      <SelectTraMultipleMaterial ref="selectTraMultipleMaterial" @selectes="selectMaterail" />
      <SelectTraMultipleMaterial ref="selectTraMultipleMaterial" @close="ban = false" @selectes="selectMaterail" />
   </view>
</template>
@@ -184,7 +181,9 @@
         SelectTraMultipleMaterial
      },
      data() {
         return {
            ban: false,
            type: '',
            id: '',
            dbid: '',
@@ -193,6 +192,7 @@
            info: {
            },
            split: '&nbsp;/&nbsp;',
            mainOrder: '',
            warehouseId: '',
            ids: [],
@@ -262,44 +262,85 @@
         close() {},
         open() {},
         openxz() {
            this.ban = true
            this.$refs.selectTraMultipleMaterial.open({
               transferId: this.id,
               warehouseId: this.warehouseId
            })
         },
         selectMaterail(v) {
            this.ban = false
            let tempList = this.warehouseList[0].wtransferDetailList
            let materials = v.materials
            materials.forEach(materail => {
               tempList.forEach(item => {
            let materials = JSON.parse(JSON.stringify(v.materials))
            tempList.forEach(item => {
               let isOutList = false
               this.outboundList.forEach(selected => {
                  if (selected.newId == item.id) {
                     isOutList = true
                     return
                  }
               })
               if (!isOutList) {
                  item.wstockExtListVOList.forEach(hw => {
                     if (materail.materialId == hw.materialId && materail.procedureId == hw
                        .procedureId && materail.qualityType == hw.qualityType && materail.batch ==
                        hw.batch) {
                        let isExist = false
                        this.outboundList.forEach(selected => {
                           if (selected.newId == item.id) {
                              isExist = true
                     materials.forEach((materail, index) => {
                        if (hw.materialId == materail.materialId &&
                              hw.procedureId == materail.procedureId &&
                              hw.qualityType == materail.qualityType &&
                              hw.locationId == materail.locationId &&
                              hw.batch == materail.batch
                           ) {
                              this.addToOutList(materail, item)
                              materials.splice(index, 1)
                              return
                           }
                        })
                        if (isExist) {
                           uni.$u.toast('该物料已存在')
                           return
                        }
                        let obj = JSON.parse(JSON.stringify(materail))
                        obj.newId = item.id
                        this.outboundList.push(obj)
                     }
                     })
                  })
                  
               })
                     // if (item.batch) {
                     //    // 精确匹配
                     //    if (materail.materialId == item.materialId &&
                     //          materail.procedureId == item.procedureId &&
                     //          materail.qualityType == item.qualityType &&
                     //          materail.batch == item.batch
                     //       ) {
                     //          this.addToOutList(materail, item)
                     //          materials.splice(index, 1)
                     //          return
                     //    }
                     // } else {
                     //    if (materail.materialId == item.materialId &&
                     //          materail.procedureId == item.procedureId &&
                     //          materail.qualityType == item.qualityType
                     //       ) {
                     //       this.addToOutList(materail, item)
                     //       materials.splice(index, 1)
                     //       return
                     //    }
                     // }
               }
            })
         },
         addToOutList(materail, item) {
            let isExist = false
            this.outboundList.forEach(selected => {
               if (selected.newId == materail.id) {
                  isExist = true
                  return
               }
            })
            if (isExist) {
               uni.$u.toast('该物料已存在')
            } else {
               let obj = JSON.parse(JSON.stringify(materail))
               obj.newId = item.id
               this.outboundList.push(obj)
               console.log(this.outboundList);
            }
         },
         dele(index) {
             this.outboundList.splice(index, 1)
            this.outboundList.splice(index, 1)
         },
         submit() {
            if (this.type == QRCodeType.ZKD) {
@@ -352,6 +393,7 @@
                     if (res.code === 200) {
                        this.$store.dispatch('getUpcomingNum')
                        uni.$u.toast('操作成功')
                        uni.$emit('success')
                        uni.redirectTo({
                           url: `/pages_adjust/pages/warehousingDetails/warehousingDetails?id=${this.id}&dbid=${this.dbid}`
                        })
@@ -371,6 +413,7 @@
                  if (res.code === 200) {
                     this.$store.dispatch('getUpcomingNum')
                     uni.$u.toast('操作成功')
                     uni.$emit('success')
                     uni.redirectTo({
                        url: `/pages_adjust/pages/outboundDetails/outboundDetails?id=${this.id}`
                     })
@@ -662,63 +705,64 @@
               display: flex;
               align-items: center;
               margin-top: 15rpx;
               font-size: 24rpx;
            }
            .page_yxwl_list_item_num {
                      display: flex;
                      position: relative;
                      margin-top: 36rpx;
                      &:first-child {
                        margin-top: 0;
                      }
                      .dele {
                        position: absolute;
                        right: -30rpx;
                        width: 48rpx;
                        height: 48rpx;
                        img {
                          width: 100%;
                          height: 100%;
                        }
                      }
                      .item {
                        width: 50%;
                        display: flex;
                        align-items: center;
                        .label {
                          flex-shrink: 0;
                          font-size: 26rpx;
                          font-weight: 400;
                          color: #666666;
                          flex-shrink: 0;
                        }
                        .nr {
                          flex: 1;
                          display: flex;
                          align-items: center;
                          input {
                            width: 130rpx;
                            height: 40rpx;
                            border-radius: 8rpx;
                            border: 1rpx solid #E5E5E5;
                            margin-right: 10rpx;
                          }
                          span {
                            font-size: 26rpx;
                            font-weight: 400;
                            color: #222222;
                          }
                        }
                      }
                    }
               display: flex;
               position: relative;
               margin-top: 36rpx;
               &:first-child {
                  margin-top: 0;
               }
               .dele {
                  position: absolute;
                  right: -30rpx;
                  width: 48rpx;
                  height: 48rpx;
                  img {
                     width: 100%;
                     height: 100%;
                  }
               }
               .item {
                  width: 50%;
                  display: flex;
                  align-items: center;
                  .label {
                     flex-shrink: 0;
                     font-size: 26rpx;
                     font-weight: 400;
                     color: #666666;
                     flex-shrink: 0;
                  }
                  .nr {
                     flex: 1;
                     display: flex;
                     align-items: center;
                     input {
                        width: 130rpx;
                        height: 40rpx;
                        border-radius: 8rpx;
                        border: 1rpx solid #E5E5E5;
                        margin-right: 10rpx;
                     }
                     span {
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #222222;
                     }
                  }
               }
            }
         }
      }
@@ -746,6 +790,7 @@
      left: 30rpx;
      padding-bottom: 68rpx;
      z-index: 9999;
      .page_footer_qr {
         flex: 1;
         height: 88rpx;