Mr.Shi
2023-09-13 26c8212a1e8ba902798be21e97629c9295b2f405
minipro_standard/pages_inspect/pages/InOperation/InOperation.vue
ÎļþÃû´Ó minipro_standard/pages/InOperation/InOperation.vue ÐÞ¸Ä
@@ -1,389 +1,389 @@
<template>
   <view>
      <InOutInfo :info="info" />
      <uni-collapse @change="change" @close="close" @open="open">
         <uni-collapse-item v-if="type==7" v-for="(item1, index) in wtransferWarehouseList" :key="index"
            :open="item1.wtransferDetailList.length">
            <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>
            </view>
            <view class="p30">
               <div class="page_dck">
                  <div class="page_dck_title">
                     <div class="page_dck_title_x"></div>
                     <span>待入库物料</span>
                  </div>
               </div>
               <div class="page_content" v-for="(item, index) in item1.wtransferDetailList" :key="index"
                  :name="index">
                  <div class="page_content_title">
                     <div class="page_content_title_top">
                        <span v-if="item.batch">{{ item.materialName + ' | ' + item.materialCode }}</span>
<template>
   <view>
      <InOutInfo :info="info" />
      <uni-collapse @change="change" @close="close" @open="open">
         <uni-collapse-item v-if="type==7" v-for="(item1, index) in wtransferWarehouseList" :key="index"
            :open="item1.wtransferDetailList.length">
            <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>
            </view>
            <view class="p30">
               <div class="page_dck">
                  <div class="page_dck_title">
                     <div class="page_dck_title_x"></div>
                     <span>待入库物料</span>
                  </div>
               </div>
               <div class="page_content" v-for="(item, index) in item1.wtransferDetailList" :key="index"
                  :name="index">
                  <div class="page_content_title">
                     <div class="page_content_title_top">
                        <span v-if="item.batch">{{ item.materialName + ' | ' + item.materialCode }}</span>
                        <span v-else>{{ item.materialName + ' | ' + item.materialCode }}</span>
                        <span>{{item.outActnum}}{{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>{{item.batch ? item.batch : '-'}}</span>
                     </div>
                  </div>
                  <!-- <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>
                     </div>
                     <div class="page_content_list_items">
                        <div class="page_content_list_item_label">数量:</div>
                        <div class="page_content_list_item_nr">{{ childer.num }}{{ childer.unitName }}</div>
                     </div>
                  </div> -->
               </div>
            </view>
         </uni-collapse-item>
      </uni-collapse>
      <div class="page_h"></div>
      <div class="page_yxwl">
         <div class="page_yxwl_title">
            <div class="left">
               <div class="page_yxwl_title_x"></div>
               <span>已选择物料</span>
            </div>
            <div class="right" v-if="isZKD" @click="openxz">
               <image src="../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>手动入库</span>
               <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""> -->
            </div>
         </div>
         <!--        å…¥åº“单(单个仓库)        -->
         <template v-if="type == 9 && woScanMaterialBeanList && woScanMaterialBeanList.length > 0">
            <div class="page_yxwl_list">
               <div class="page_yxwl_list_item" v-for="(item, index) in woScanMaterialBeanList" :key="index">
                  <div class="page_yxwl_list_item_top">
                     <!--                            <div class="page_yxwl_list_item_top_left" v-if="item.batch">{{item.materialName}} | {{item.materialCode}}|{{item.batch}}</div>-->
                     <div class="page_yxwl_list_item_top_left">{{item.materialName}} | {{item.materialCode}}
                     </div>
                  </div>
                  <div class="page_yxwl_list_item_sx">
                     <span class="green" v-if="item.qualityType === 0">合格&nbsp;<span>/</span>&nbsp;</span>
                     <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span>/</span>&nbsp;</span>
                     <span class="red" v-else-if="item.qualityType === 2">报废&nbsp;<span>/</span>&nbsp;</span>
                     <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</span>
                     <span>{{item.batch ? item.batch : '-'}}</span>
                  </div>
                  <div class="page_yxwl_list_item_num">
                     <div class="dis">
                        <div class="item">
                           <div class="label">入库货位:</div>
                           <div class="nr">
                              <span>{{item.locationName ? item.locationName : '-'}}</span>
                           </div>
                        </div>
                        <div class="items">
                           <div class="label">数量:</div>
                           <div class="nr">
                              <input type="text" v-model="item.scanNum" placeholder="请输入" />
                              <span>{{item.unitName}}</span>
                           </div>
                        </div>
                     </div>
                     <div class="itemy" v-for="(item1, idx) in item.woutboundRedisCodeBeanList" :key="idx">
                        <div class="label">工装{{item1.scanCode}}:</div>
                        <div class="nr">{{item1.num}}{{item1.unitName}}</div>
                        <div class="dele" @click="dele(item1)">
                           <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
                        </div>
                     </div>
                  </div>
               </div>
            </div>
         </template>
         <!--        è½¬åº“单(多个仓库)        -->
         <template v-else-if="type == 7 && seleMateriaList.length > 0">
            <!-- <template v-for="(item, index) in info.wtransferWarehouseList" :key="index"> -->
            <div class="page_yxwl_list">
               <div class="page_yxwl_list_item" v-for="(item1, idx) in seleMateriaList" :key="idx">
                  <div class="page_yxwl_list_item_top">
                     <!--                                <div class="page_yxwl_list_item_top_left" v-if="item1.batch">{{item1.materialName}} | {{item1.materialCode}}|{{item1.batch}}</div>-->
                     <div class="page_yxwl_list_item_top_left">{{item1.materialName}} | {{item1.materialCode}}
                     </div>
                  </div>
                  <div class="page_yxwl_list_item_sx">
                     <span class="green" v-if="item1.qualityType === 0">合格&nbsp;<span>/</span>&nbsp;</span>
                     <span class="yellow" v-else-if="item1.qualityType === 1">不良&nbsp;<span>/</span>&nbsp;</span>
                     <span class="red" v-else-if="item1.qualityType === 2">报废&nbsp;<span>/</span>&nbsp;</span>
                     <span>{{item1.procedureName ? item1.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</span>
                     <span>{{item1.batch ? item1.batch : '-'}}</span>
                  </div>
                  <div class="page_yxwl_list_item_num">
                     <div class="itemy">
                        <div class="itemy_item">
                           <div class="label">入库货位:</div>
                           <div class="nr">
                              <span>{{item1.locationName}}</span>
                           </div>
                        </div>
                        <div class="itemy_item">
                           <div class="label">数量:</div>
                           <div class="nr">
                              <!-- @input="inputNum(item1)"  -->
                              <input type="number" v-model="item1.outActnum" placeholder="请输入" />
                              <span>{{item1.unitName}}</span>
                           </div>
                        </div>
                        <!-- @click="dele()" -->
                        <div class="dele" @click="dele(idx)">
                           <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
                        </div>
                     </div>
                  </div>
               </div>
            </div>
            <!-- </template> -->
         </template>
         <div class="page_yxwl_kong" v-else>暂无数据</div>
      </div>
      <div class="page_zw"></div>
      <!--    æäº¤æŒ‰é’®    -->
      <div class="page_footer">
         <div class="page_footer_ck" @click="submit">
            <span>确认入库</span>
         </div>
      </div>
      <SelectLoaction ref="selectLoaction" @selected="selectLocation" />
      <MaterialIn ref="materialIn" @selected="selectMaterial" />
   </view>
</template>
<script>
   import InOutInfo from '@/components/InOutInfo.vue'
   import SelectLoaction from '@/components/SelectLoaction.vue'
   import MaterialIn from '@/components/materialIn.vue'
   import {
      QRCodeType
   } from '@/common/config.js'
   import {
      getList,
      outScanAppliances,
      getLocationInfo,
      saveIn,
      getInByWTransferId,
      wTransferForInOut,
      wOutBoundForInOut,
      wOutBoundForUpload,
      transferToInNew
   } from '@/util/api/ExWarehouse'
   import {
      wTransferForInOutUpload
   } from '@/util/api/ExWarehouse'
   import {
      getBarcodeContent,
      getListByCondition,
      getListByWarehouseId
   } from '@/util/api/WorkOrderAPI'
   import {
      getDB
   } from '@/util/api/agencyAPI'
   export default {
      components: {
         InOutInfo,
         SelectLoaction,
         MaterialIn
      },
      data() {
         return {
            type: '',
            id: '',
            wareHouseId: '',
            isZKD: false,
            show: false,
            info: {},
                        <span>{{item.outActnum}}{{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>{{item.batch ? item.batch : '-'}}</span>
                     </div>
                  </div>
                  <!-- <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>
                     </div>
                     <div class="page_content_list_items">
                        <div class="page_content_list_item_label">数量:</div>
                        <div class="page_content_list_item_nr">{{ childer.num }}{{ childer.unitName }}</div>
                     </div>
                  </div> -->
               </div>
            </view>
         </uni-collapse-item>
      </uni-collapse>
      <div class="page_h"></div>
      <div class="page_yxwl">
         <div class="page_yxwl_title">
            <div class="left">
               <div class="page_yxwl_title_x"></div>
               <span>已选择物料</span>
            </div>
            <div class="right" v-if="isZKD" @click="openxz">
               <image src="../../static/gongdan_ic_shoudong@2x.png" class="img36" mode=""></image><span>手动入库</span>
               <!-- <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""> -->
            </div>
         </div>
         <!--        å…¥åº“单(单个仓库)        -->
         <template v-if="type == 9 && woScanMaterialBeanList && woScanMaterialBeanList.length > 0">
            <div class="page_yxwl_list">
               <div class="page_yxwl_list_item" v-for="(item, index) in woScanMaterialBeanList" :key="index">
                  <div class="page_yxwl_list_item_top">
                     <!--                            <div class="page_yxwl_list_item_top_left" v-if="item.batch">{{item.materialName}} | {{item.materialCode}}|{{item.batch}}</div>-->
                     <div class="page_yxwl_list_item_top_left">{{item.materialName}} | {{item.materialCode}}
                     </div>
                  </div>
                  <div class="page_yxwl_list_item_sx">
                     <span class="green" v-if="item.qualityType === 0">合格&nbsp;<span>/</span>&nbsp;</span>
                     <span class="warning" v-else-if="item.qualityType === 1">不良&nbsp;<span>/</span>&nbsp;</span>
                     <span class="red" v-else-if="item.qualityType === 2">报废&nbsp;<span>/</span>&nbsp;</span>
                     <span>{{item.procedureName ? item.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</span>
                     <span>{{item.batch ? item.batch : '-'}}</span>
                  </div>
                  <div class="page_yxwl_list_item_num">
                     <div class="dis">
                        <div class="item">
                           <div class="label">入库货位:</div>
                           <div class="nr">
                              <span>{{item.locationName ? item.locationName : '-'}}</span>
                           </div>
                        </div>
                        <div class="items">
                           <div class="label">数量:</div>
                           <div class="nr">
                              <input type="text" v-model="item.scanNum" placeholder="请输入" />
                              <span>{{item.unitName}}</span>
                           </div>
                        </div>
                     </div>
                     <div class="itemy" v-for="(item1, idx) in item.woutboundRedisCodeBeanList" :key="idx">
                        <div class="label">工装{{item1.scanCode}}:</div>
                        <div class="nr">{{item1.num}}{{item1.unitName}}</div>
                        <div class="dele" @click="dele(item1)">
                           <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
                        </div>
                     </div>
                  </div>
               </div>
            </div>
         </template>
         <!--        è½¬åº“单(多个仓库)        -->
         <template v-else-if="type == 7 && seleMateriaList.length > 0">
            <!-- <template v-for="(item, index) in info.wtransferWarehouseList" :key="index"> -->
            <div class="page_yxwl_list">
               <div class="page_yxwl_list_item" v-for="(item1, idx) in seleMateriaList" :key="idx">
                  <div class="page_yxwl_list_item_top">
                     <!--                                <div class="page_yxwl_list_item_top_left" v-if="item1.batch">{{item1.materialName}} | {{item1.materialCode}}|{{item1.batch}}</div>-->
                     <div class="page_yxwl_list_item_top_left">{{item1.materialName}} | {{item1.materialCode}}
                     </div>
                  </div>
                  <div class="page_yxwl_list_item_sx">
                     <span class="green" v-if="item1.qualityType === 0">合格&nbsp;<span>/</span>&nbsp;</span>
                     <span class="yellow" v-else-if="item1.qualityType === 1">不良&nbsp;<span>/</span>&nbsp;</span>
                     <span class="red" v-else-if="item1.qualityType === 2">报废&nbsp;<span>/</span>&nbsp;</span>
                     <span>{{item1.procedureName ? item1.procedureName : '-'}}&nbsp;<span>/</span>&nbsp;</span>
                     <span>{{item1.batch ? item1.batch : '-'}}</span>
                  </div>
                  <div class="page_yxwl_list_item_num">
                     <div class="itemy">
                        <div class="itemy_item">
                           <div class="label">入库货位:</div>
                           <div class="nr">
                              <span>{{item1.locationName}}</span>
                           </div>
                        </div>
                        <div class="itemy_item">
                           <div class="label">数量:</div>
                           <div class="nr">
                              <!-- @input="inputNum(item1)"  -->
                              <input type="number" v-model="item1.outActnum" placeholder="请输入" />
                              <span>{{item1.unitName}}</span>
                           </div>
                        </div>
                        <!-- @click="dele()" -->
                        <div class="dele" @click="dele(idx)">
                           <image src="../../static/chuku_ic_delete@2x.png" class="img36" mode=""></image>
                        </div>
                     </div>
                  </div>
               </div>
            </div>
            <!-- </template> -->
         </template>
         <div class="page_yxwl_kong" v-else>暂无数据</div>
      </div>
      <div class="page_zw"></div>
      <!--    æäº¤æŒ‰é’®    -->
      <div class="page_footer">
         <div class="page_footer_ck" @click="submit">
            <span>确认入库</span>
         </div>
      </div>
      <SelectLoaction ref="selectLoaction" @selected="selectLocation" />
      <MaterialIn ref="materialIn" @selected="selectMaterial" />
   </view>
</template>
<script>
   import InOutInfo from '@/components/InOutInfo.vue'
   import SelectLoaction from '@/components/SelectLoaction.vue'
   import MaterialIn from '@/components/materialIn.vue'
   import {
      QRCodeType
   } from '@/common/config.js'
   import {
      getList,
      outScanAppliances,
      getLocationInfo,
      saveIn,
      getInByWTransferId,
      wTransferForInOut,
      wOutBoundForInOut,
      wOutBoundForUpload,
      transferToInNew
   } from '@/util/api/ExWarehouse'
   import {
      wTransferForInOutUpload
   } from '@/util/api/ExWarehouse'
   import {
      getBarcodeContent,
      getListByCondition,
      getListByWarehouseId
   } from '@/util/api/WorkOrderAPI'
   import {
      getDB
   } from '@/util/api/agencyAPI'
   export default {
      components: {
         InOutInfo,
         SelectLoaction,
         MaterialIn
      },
      data() {
         return {
            type: '',
            id: '',
            wareHouseId: '',
            isZKD: false,
            show: false,
            info: {},
            ids: [],
            mainOrder: '',
            location: '',
            locationName: '',
            wtransferWarehouseList: [],
            MateriaList: [],
            woScanMaterialBeanList: [],
            seleMateriaList: [] // å·²é€‰ç‰©æ–™
         };
      },
      onLoad(option) {
         this.type = option.type
         this.id = option.id
         this.isZKD = this.type == QRCodeType.ZKD
         if (option.dbid) {
            this.getDBs(option.dbid)
         } else {
            this.getInfo()
         }
      },
      methods: {
         getDBs(dbid) {
            getDB(dbid)
               .then(res => {
                  let {
                     data
                  } = res
                  if (data.status == 1) {
                     // å·²å®Œæˆ
                  } else {
                     this.getInfo()
                  }
               })
               .catch(err => {})
         },
         getInfo() {
            let infoAction
            let data = {
               id: this.id
            }
            // console.log(this.type, QRCodeType.CKD);
            if (this.type == QRCodeType.RKD) {
               infoAction = wOutBoundForInOut
               data.wOutboundType = '1'
            } else if (this.type == QRCodeType.ZKD) {
               infoAction = wTransferForInOut
               data.wTransferType = '1'
            }
            mainOrder: '',
            location: '',
            locationName: '',
            wtransferWarehouseList: [],
            MateriaList: [],
            woScanMaterialBeanList: [],
            seleMateriaList: [] // å·²é€‰ç‰©æ–™
         };
      },
      onLoad(option) {
         this.type = option.type
         this.id = option.id
         this.isZKD = this.type == QRCodeType.ZKD
         if (option.dbid) {
            this.getDBs(option.dbid)
         } else {
            this.getInfo()
         }
      },
      methods: {
         getDBs(dbid) {
            getDB(dbid)
               .then(res => {
                  let {
                     data
                  } = res
                  if (data.status == 1) {
                     // å·²å®Œæˆ
                  } else {
                     this.getInfo()
                  }
               })
               .catch(err => {})
         },
         getInfo() {
            let infoAction
            let data = {
               id: this.id
            }
            // console.log(this.type, QRCodeType.CKD);
            if (this.type == QRCodeType.RKD) {
               infoAction = wOutBoundForInOut
               data.wOutboundType = '1'
            } else if (this.type == QRCodeType.ZKD) {
               infoAction = wTransferForInOut
               data.wTransferType = '1'
            }
            infoAction(data).then(res => {
               this.mainOrder = res.data.id
               if (this.isZKD) {
                  this.info = res.data.wtransfer
                  this.wareHouseId = res.data.wtransfer.inWarehouseId
                  this.wtransferWarehouseList = res.data.wtransferWarehouseList
                  this.MateriaList = res.data.wtransferWarehouseList[0].wtransferDetailList
               } else {
                  this.info = res.data.woutbound
                  this.woutboundDetailsWait = res.data.woutboundDetailsWait
                  this.woScanMaterialBeanList = res.data.woScanMaterialBeanList
               }
            }).catch(err => {
               uni.$u.toast(err)
               uni.navigateBack()
            })
         },
         change() {},
         close() {},
         open() {},
         openxz() {
            getListByWarehouseId({
                  wareHouseId: this.wareHouseId
               })
               .then(res => {
                  if (res.data.length === 1) {
                     this.location = res.data[0].id
                     this.locationName = res.data[0].unionName
                     this.$refs.materialIn.open({
                        list: this.MateriaList
                     })
                  } else {
                     this.$refs.selectLoaction.open({
                        wareHouseId: this.wareHouseId
                     })
                  }
               })
         },
         selectLocation(item) {
            this.location = item.id
            this.locationName = item.unionName
            this.$refs.materialIn.open({
               list: this.MateriaList
            })
         },
         selectMaterial(val) {
            let material = JSON.parse(JSON.stringify(val))
            let tempMaterial = this.seleMateriaList.find(item => item.locationId == this.location)
            if (tempMaterial) {
               if (tempMaterial.qualityType == material.qualityType && tempMaterial.procedureId == material
                  .procedureId &&
                  tempMaterial.batch == material.batch && tempMaterial.materialId == material.materialId) {
                  uni.$u.toast('相同货位,同一个物料只能有一个')
                  return
               }
            }
            let materialNum = 0
            let num = 0
            this.seleMateriaList.forEach(item => {
               if (item.id === material.id) {
                  materialNum += Number(item.outActnum)
               }
            })
            this.MateriaList.forEach(item => {
               if (item.id === material.id) {
                  num = item.outActnum - materialNum
               }
            })
            material.outActnum = num
            this.seleMateriaList.push({
               ...material,
               locationId: this.location,
               locationName: this.locationName
            })
         },
         submit() {
            if (this.type == QRCodeType.ZKD) {
               if (!this.seleMateriaList.length) {
                  uni.$u.toast('转入物料不能为空')
                  return
               }
               let result = this.seleMateriaList.reduce((a, b) => {
                  if (a[b.id]) {
                     a[b.id].push(b);
                  } else {
                     a[b.id] = [b];
                  }
                  return a;
               }, {});
               for (let i = 0; i < this.MateriaList.length; i++) {
                  for (let a in result) {
                     if (this.MateriaList[i].id == a) {
                        let total = 0
                        for (let b = 0; b < result[a].length; b++) {
                           total = Number(total) + Number(result[a][b].outActnum)
                        }
               this.mainOrder = res.data.id
               if (this.isZKD) {
                  this.info = res.data.wtransfer
                  this.wareHouseId = res.data.wtransfer.inWarehouseId
                  this.wtransferWarehouseList = res.data.wtransferWarehouseList
                  this.MateriaList = res.data.wtransferWarehouseList[0].wtransferDetailList
               } else {
                  this.info = res.data.woutbound
                  this.woutboundDetailsWait = res.data.woutboundDetailsWait
                  this.woScanMaterialBeanList = res.data.woScanMaterialBeanList
               }
            }).catch(err => {
               uni.$u.toast(err)
               uni.navigateBack()
            })
         },
         change() {},
         close() {},
         open() {},
         openxz() {
            getListByWarehouseId({
                  wareHouseId: this.wareHouseId
               })
               .then(res => {
                  if (res.data.length === 1) {
                     this.location = res.data[0].id
                     this.locationName = res.data[0].unionName
                     this.$refs.materialIn.open({
                        list: this.MateriaList
                     })
                  } else {
                     this.$refs.selectLoaction.open({
                        wareHouseId: this.wareHouseId
                     })
                  }
               })
         },
         selectLocation(item) {
            this.location = item.id
            this.locationName = item.unionName
            this.$refs.materialIn.open({
               list: this.MateriaList
            })
         },
         selectMaterial(val) {
            let material = JSON.parse(JSON.stringify(val))
            let tempMaterial = this.seleMateriaList.find(item => item.locationId == this.location)
            if (tempMaterial) {
               if (tempMaterial.qualityType == material.qualityType && tempMaterial.procedureId == material
                  .procedureId &&
                  tempMaterial.batch == material.batch && tempMaterial.materialId == material.materialId) {
                  uni.$u.toast('相同货位,同一个物料只能有一个')
                  return
               }
            }
            let materialNum = 0
            let num = 0
            this.seleMateriaList.forEach(item => {
               if (item.id === material.id) {
                  materialNum += Number(item.outActnum)
               }
            })
            this.MateriaList.forEach(item => {
               if (item.id === material.id) {
                  num = item.outActnum - materialNum
               }
            })
            material.outActnum = num
            this.seleMateriaList.push({
               ...material,
               locationId: this.location,
               locationName: this.locationName
            })
         },
         submit() {
            if (this.type == QRCodeType.ZKD) {
               if (!this.seleMateriaList.length) {
                  uni.$u.toast('转入物料不能为空')
                  return
               }
               let result = this.seleMateriaList.reduce((a, b) => {
                  if (a[b.id]) {
                     a[b.id].push(b);
                  } else {
                     a[b.id] = [b];
                  }
                  return a;
               }, {});
               for (let i = 0; i < this.MateriaList.length; i++) {
                  for (let a in result) {
                     if (this.MateriaList[i].id == a) {
                        let total = 0
                        for (let b = 0; b < result[a].length; b++) {
                           total = Number(total) + Number(result[a][b].outActnum)
                        }
                        if (!total || total <= 0) {
                           uni.$u.toast('入库数量不能小于0')
                           uni.$u.toast('入库数量不能小于0')
                           return 
                           // Toast.fail({
                           //    message: '入库数量不能小于0',
                           //    forbidClick: true,
                           //    duration: 2000
                           // })
                        }
                           // Toast.fail({
                           //    message: '入库数量不能小于0',
                           //    forbidClick: true,
                           //    duration: 2000
                           // })
                        }
                        if (total > this.MateriaList[i].outActnum) {
                           uni.$u.toast('入库数量不能大于待入库数量')
                           uni.$u.toast('入库数量不能大于待入库数量')
                           return 
                           // Toast.fail({
                           //    message: '入库数量不能大于待入库数量',
                           //    forbidClick: true,
                           //    duration: 2000
                           // })
                        }
                     }
                  }
               }
               let submitTransferInDetailDTOList = []
               this.seleMateriaList.forEach(item => {
                  submitTransferInDetailDTOList.push({
                     inNum: item.outActnum,
                     locationId: item.locationId,
                     wtransferDetailId: item.id
                  })
               })
               transferToInNew({
                  submitTransferInDetailDTOList,
                  wtransferId: this.id
               }).then(res => {
                  if (res.code === 200) {
                           // Toast.fail({
                           //    message: '入库数量不能大于待入库数量',
                           //    forbidClick: true,
                           //    duration: 2000
                           // })
                        }
                     }
                  }
               }
               let submitTransferInDetailDTOList = []
               this.seleMateriaList.forEach(item => {
                  submitTransferInDetailDTOList.push({
                     inNum: item.outActnum,
                     locationId: item.locationId,
                     wtransferDetailId: item.id
                  })
               })
               transferToInNew({
                  submitTransferInDetailDTOList,
                  wtransferId: this.id
               }).then(res => {
                  if (res.code === 200) {
                     this.$store.dispatch('getUpcomingNum')
                     uni.$u.toast('操作成功')
                     if (this.type == '4') { // è·³è½¬å®Œå·¥å…¥åº“详情
@@ -404,530 +404,530 @@
                     uni.redirectTo({
                        url: `/pages_adjust/pages/outboundDetails/outboundDetails?id=${this.id}`
                     })
                     // setTimeout(() => {
                        // if (route.query.Type == '4') { // è·³è½¬å®Œå·¥å…¥åº“详情
                        //    router.push({
                        //       name: 'completionDetails',
                        //       query: {
                        //          id: route.query.id,
                        //          dbid: route.query.dbid,
                        //          type: 7,
                        //          isShow: 2
                        //       }
                        //    })
                        //    return
                        // }
                        // router.replace({
                        //    name: 'wTransferDetail',
                        //    query: {
                        //       id: route.query.id
                        //    }
                        // })
                     // }, 2000)
                  }
               })
            } else if (this.type === QRCodeType.RKD) {
               wOutBoundForUpload({
                  id: this.info.id,
                  wOutboundType: 1
               }).then(res => {
                  if (res.code === 200) {
                     // setTimeout(() => {
                        // if (route.query.Type == '4') { // è·³è½¬å®Œå·¥å…¥åº“详情
                        //    router.push({
                        //       name: 'completionDetails',
                        //       query: {
                        //          id: route.query.id,
                        //          dbid: route.query.dbid,
                        //          type: 7,
                        //          isShow: 2
                        //       }
                        //    })
                        //    return
                        // }
                        // router.replace({
                        //    name: 'wTransferDetail',
                        //    query: {
                        //       id: route.query.id
                        //    }
                        // })
                     // }, 2000)
                  }
               })
            } else if (this.type === QRCodeType.RKD) {
               wOutBoundForUpload({
                  id: this.info.id,
                  wOutboundType: 1
               }).then(res => {
                  if (res.code === 200) {
                     this.$store.dispatch('getUpcomingNum')
                     uni.$u.toast('操作成功')
                     uni.redirectTo({
                        url: `/pages_adjust/pages/warehousingDetails1/warehousingDetails1?id=${this.id}`
                     })
                     // Toast.success({
                     //    message: '操作成功',
                     //    forbidClick: true,
                     //    duration: 2000
                     // })
                     // setTimeout(() => {
                     //    // router.go(-1)
                     //    router.replace({
                     //       name: 'wInboundDetail',
                     //       query: {
                     //          id: this.id
                     //       }
                     //    })
                     // }, 2000)
                  }
               })
            }
         }
      }
   }
</script>
<style lang="scss">
   .page_dck {
      .page_dck_title {
         display: flex;
         align-items: center;
         .page_dck_title_x {
            width: 8rpx;
            height: 30rpx;
            background: #4275FC;
            border-radius: 2rpx;
            margin-right: 16rpx;
         }
         span {
            font-size: 32rpx;
            font-weight: 500;
            color: #222222;
         }
      }
   }
   .page_content {
      margin-top: 36rpx;
      .page_content_title {
         display: flex;
         flex-direction: column;
         margin-bottom: 10rpx;
         .page_content_title_top {
            display: flex;
            align-items: center;
            justify-content: space-between;
            span {
               &:nth-child(1) {
                  font-size: 30rpx;
                  font-weight: 500;
                  color: #222222;
               }
               &:nth-child(2) {
                  flex-shrink: 0;
                  font-size: 24rpx;
                  font-weight: 400;
                  color: #333333;
                  span {
                     font-size: 24rpx;
                     color: $nav-color;
                  }
               }
            }
         }
         .page_content_title_bottom {
            .green {
               color: $nav-stateColor7 !important;
               .black {
                  color: black !important;
               }
            }
            .warning {
               color: $nav-stateColor5 !important;
               .black {
                  color: black !important;
               }
            }
            .error {
               color: $nav-stateColor4 !important;
               .black {
                  color: black !important;
               }
            }
            span {
               font-size: 24rpx;
               font-weight: 400;
               color: #666666;
            }
         }
      }
      .lineBorder {
         border: none !important;
         padding-bottom: 0 !important;
         margin-bottom: 24rpx;
      }
      .page_content_list {
         width: 100%;
         display: flex;
         align-items: center;
         flex-wrap: wrap;
         &:first-child {
            margin: 0;
         }
         &:last-child {
            border: none;
         }
         .page_content_list_nums {
            width: 30%;
            display: flex;
            .page_content_list_num_label {
               font-size: 26rpx;
               font-weight: 400;
               color: #666666;
            }
            .page_content_list_num_nr {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
         .page_content_list_num {
            width: 70%;
            display: flex;
            .page_content_list_num_label {
               font-size: 26rpx;
               font-weight: 400;
               color: #666666;
            }
            .page_content_list_num_nr {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
         .page_content_list_items {
            width: 30%;
            display: flex;
            margin-top: 24rpx;
            .page_content_list_item_label {
               font-size: 26rpx;
               font-weight: 400;
               color: #666666;
               flex-shrink: 0;
            }
            .page_content_list_item_nr {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
         .page_content_list_item {
            width: 70%;
            display: flex;
            .page_content_list_item_label {
               font-size: 26rpx;
               font-weight: 400;
               color: #666666;
               flex-shrink: 0;
            }
            .page_content_list_item_nr {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
      }
   }
   .page_h {
      height: 20rpx;
   }
   .page_yxwl {
      padding: 30rpx;
      background: #ffffff;
      .page_yxwl_title {
         display: flex;
         align-items: center;
         justify-content: space-between;
         .page_yxwl_title_x {
            width: 8rpx;
            height: 30rpx;
            background: #4275FC;
            border-radius: 2rpx;
            margin-right: 16rpx;
         }
         span {
            font-size: 32rpx;
            font-weight: 500;
            color: #222222;
         }
         .left {
            display: flex;
            align-items: center;
            .page_yxwl_title_x {
               width: 8rpx;
               height: 30rpx;
               background: #4275FC;
               border-radius: 2rpx;
               margin-right: 16rpx;
            }
            span {
               font-size: 32rpx;
               font-weight: 500;
               color: #222222;
            }
         }
         .right {
            display: flex;
            align-items: center;
            img {
               width: 28rpx;
               height: 28rpx;
               margin-right: 14rpx;
            }
            span {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
      }
      .page_yxwl_list {
         display: flex;
         flex-direction: column;
         padding-bottom: 30rpx;
         border-bottom: 1rpx solid #ececec;
         &:last-child {
            margin-bottom: 0;
            border: none;
         }
         .page_yxwl_list_item {
            margin-top: 28rpx;
            .page_yxwl_list_item_top {
               display: flex;
               align-items: center;
               justify-content: space-between;
               .page_yxwl_list_item_top_left {
                  font-size: 30rpx;
                  font-weight: 500;
                  color: #222222;
               }
            }
            .page_yxwl_list_item_sx {
               display: flex;
               align-items: center;
               margin-top: 15rpx;
            }
            .page_yxwl_list_item_num {
               display: flex;
               flex-direction: column;
               // margin-top: 30rpx;
               &:first-child {
                  margin-top: 0;
               }
               .dis {
                  display: flex;
               }
               .itemy {
                  margin-top: 20rpx;
                  width: 100%;
                  display: flex;
                  align-items: center;
                  position: relative;
                  .itemy_item {
                     flex: 1;
                     display: flex;
                     align-items: center;
                     .label {
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #666666;
                        flex-shrink: 0;
                     }
                     .nr {
                        display: flex;
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #222222;
                        input {
                           width: 100rpx;
                           height: 35rpx;
                           border-radius: 8rpx;
                           border: 1rpx solid #E5E5E5;
                           margin-right: 10rpx;
                           margin-left: 5rpx;
                        }
                        span {
                           font-size: 26rpx;
                           font-weight: 400;
                           color: #222222;
                        }
                     }
                  }
                  .dele {
                     position: absolute;
                     right: -30rpx;
                     width: 48rpx;
                     height: 48rpx;
                     img {
                        width: 100%;
                        height: 100%;
                     }
                  }
               }
               .items {
                  width: 50%;
                  display: flex;
                  align-items: center;
                  .label {
                     font-size: 26rpx;
                     font-weight: 400;
                     color: #666666;
                     flex-shrink: 0;
                  }
                  .nr {
                     font-size: 26rpx;
                     font-weight: 400;
                     color: #222222;
                     input {
                        width: 100rpx;
                        height: 40rpx;
                        margin-right: 10rpx;
                     }
                     span {
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #222222;
                     }
                  }
               }
               .item {
                  width: 70%;
                  display: flex;
                  align-items: center;
                  .label {
                     font-size: 26rpx;
                     font-weight: 400;
                     color: #666666;
                     flex-shrink: 0;
                  }
                  .nr {
                     font-size: 26rpx;
                     font-weight: 400;
                     color: #222222;
                     input {
                        width: 100rpx;
                        height: 40rpx;
                        margin-right: 10rpx;
                     }
                     span {
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #222222;
                     }
                  }
               }
            }
         }
      }
      .page_yxwl_kong {
         padding: 50rpx 0;
         font-size: 25rpx;
         display: flex;
         align-items: center;
         justify-content: center;
      }
   }
   .page_zw {
      height: 160rpx;
   }
   .page_footer {
      width: calc(100% - 60rpx);
      background: #F7F7F7;
      display: flex;
      align-items: center;
      justify-content: space-between;
      position: fixed;
      bottom: 0;
      left: 30rpx;
      padding-bottom: 68rpx;
      .page_footer_qr {
         flex: 1;
         height: 88rpx;
         background: #fff;
         box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
         border-radius: 8rpx;
         font-size: 32rpx;
         font-weight: 500;
         color: $nav-color;
         display: flex;
         align-items: center;
         justify-content: center;
         img {
            width: 30rpx;
            height: 30rpx;
            margin-right: 12rpx;
         }
      }
      .page_footer_ck {
         flex: 1;
         height: 88rpx;
         background: $nav-color;
         box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
         border-radius: 8rpx;
         font-size: 32rpx;
         font-weight: 500;
         color: #FFFFFF;
         display: flex;
         align-items: center;
         justify-content: center;
      }
   }
                     })
                     // Toast.success({
                     //    message: '操作成功',
                     //    forbidClick: true,
                     //    duration: 2000
                     // })
                     // setTimeout(() => {
                     //    // router.go(-1)
                     //    router.replace({
                     //       name: 'wInboundDetail',
                     //       query: {
                     //          id: this.id
                     //       }
                     //    })
                     // }, 2000)
                  }
               })
            }
         }
      }
   }
</script>
<style lang="scss">
   .page_dck {
      .page_dck_title {
         display: flex;
         align-items: center;
         .page_dck_title_x {
            width: 8rpx;
            height: 30rpx;
            background: #4275FC;
            border-radius: 2rpx;
            margin-right: 16rpx;
         }
         span {
            font-size: 32rpx;
            font-weight: 500;
            color: #222222;
         }
      }
   }
   .page_content {
      margin-top: 36rpx;
      .page_content_title {
         display: flex;
         flex-direction: column;
         margin-bottom: 10rpx;
         .page_content_title_top {
            display: flex;
            align-items: center;
            justify-content: space-between;
            span {
               &:nth-child(1) {
                  font-size: 30rpx;
                  font-weight: 500;
                  color: #222222;
               }
               &:nth-child(2) {
                  flex-shrink: 0;
                  font-size: 24rpx;
                  font-weight: 400;
                  color: #333333;
                  span {
                     font-size: 24rpx;
                     color: $nav-color;
                  }
               }
            }
         }
         .page_content_title_bottom {
            .green {
               color: $nav-stateColor7 !important;
               .black {
                  color: black !important;
               }
            }
            .warning {
               color: $nav-stateColor5 !important;
               .black {
                  color: black !important;
               }
            }
            .error {
               color: $nav-stateColor4 !important;
               .black {
                  color: black !important;
               }
            }
            span {
               font-size: 24rpx;
               font-weight: 400;
               color: #666666;
            }
         }
      }
      .lineBorder {
         border: none !important;
         padding-bottom: 0 !important;
         margin-bottom: 24rpx;
      }
      .page_content_list {
         width: 100%;
         display: flex;
         align-items: center;
         flex-wrap: wrap;
         &:first-child {
            margin: 0;
         }
         &:last-child {
            border: none;
         }
         .page_content_list_nums {
            width: 30%;
            display: flex;
            .page_content_list_num_label {
               font-size: 26rpx;
               font-weight: 400;
               color: #666666;
            }
            .page_content_list_num_nr {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
         .page_content_list_num {
            width: 70%;
            display: flex;
            .page_content_list_num_label {
               font-size: 26rpx;
               font-weight: 400;
               color: #666666;
            }
            .page_content_list_num_nr {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
         .page_content_list_items {
            width: 30%;
            display: flex;
            margin-top: 24rpx;
            .page_content_list_item_label {
               font-size: 26rpx;
               font-weight: 400;
               color: #666666;
               flex-shrink: 0;
            }
            .page_content_list_item_nr {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
         .page_content_list_item {
            width: 70%;
            display: flex;
            .page_content_list_item_label {
               font-size: 26rpx;
               font-weight: 400;
               color: #666666;
               flex-shrink: 0;
            }
            .page_content_list_item_nr {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
      }
   }
   .page_h {
      height: 20rpx;
   }
   .page_yxwl {
      padding: 30rpx;
      background: #ffffff;
      .page_yxwl_title {
         display: flex;
         align-items: center;
         justify-content: space-between;
         .page_yxwl_title_x {
            width: 8rpx;
            height: 30rpx;
            background: #4275FC;
            border-radius: 2rpx;
            margin-right: 16rpx;
         }
         span {
            font-size: 32rpx;
            font-weight: 500;
            color: #222222;
         }
         .left {
            display: flex;
            align-items: center;
            .page_yxwl_title_x {
               width: 8rpx;
               height: 30rpx;
               background: #4275FC;
               border-radius: 2rpx;
               margin-right: 16rpx;
            }
            span {
               font-size: 32rpx;
               font-weight: 500;
               color: #222222;
            }
         }
         .right {
            display: flex;
            align-items: center;
            img {
               width: 28rpx;
               height: 28rpx;
               margin-right: 14rpx;
            }
            span {
               font-size: 26rpx;
               font-weight: 400;
               color: #222222;
            }
         }
      }
      .page_yxwl_list {
         display: flex;
         flex-direction: column;
         padding-bottom: 30rpx;
         border-bottom: 1rpx solid #ececec;
         &:last-child {
            margin-bottom: 0;
            border: none;
         }
         .page_yxwl_list_item {
            margin-top: 28rpx;
            .page_yxwl_list_item_top {
               display: flex;
               align-items: center;
               justify-content: space-between;
               .page_yxwl_list_item_top_left {
                  font-size: 30rpx;
                  font-weight: 500;
                  color: #222222;
               }
            }
            .page_yxwl_list_item_sx {
               display: flex;
               align-items: center;
               margin-top: 15rpx;
            }
            .page_yxwl_list_item_num {
               display: flex;
               flex-direction: column;
               // margin-top: 30rpx;
               &:first-child {
                  margin-top: 0;
               }
               .dis {
                  display: flex;
               }
               .itemy {
                  margin-top: 20rpx;
                  width: 100%;
                  display: flex;
                  align-items: center;
                  position: relative;
                  .itemy_item {
                     flex: 1;
                     display: flex;
                     align-items: center;
                     .label {
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #666666;
                        flex-shrink: 0;
                     }
                     .nr {
                        display: flex;
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #222222;
                        input {
                           width: 100rpx;
                           height: 35rpx;
                           border-radius: 8rpx;
                           border: 1rpx solid #E5E5E5;
                           margin-right: 10rpx;
                           margin-left: 5rpx;
                        }
                        span {
                           font-size: 26rpx;
                           font-weight: 400;
                           color: #222222;
                        }
                     }
                  }
                  .dele {
                     position: absolute;
                     right: -30rpx;
                     width: 48rpx;
                     height: 48rpx;
                     img {
                        width: 100%;
                        height: 100%;
                     }
                  }
               }
               .items {
                  width: 50%;
                  display: flex;
                  align-items: center;
                  .label {
                     font-size: 26rpx;
                     font-weight: 400;
                     color: #666666;
                     flex-shrink: 0;
                  }
                  .nr {
                     font-size: 26rpx;
                     font-weight: 400;
                     color: #222222;
                     input {
                        width: 100rpx;
                        height: 40rpx;
                        margin-right: 10rpx;
                     }
                     span {
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #222222;
                     }
                  }
               }
               .item {
                  width: 70%;
                  display: flex;
                  align-items: center;
                  .label {
                     font-size: 26rpx;
                     font-weight: 400;
                     color: #666666;
                     flex-shrink: 0;
                  }
                  .nr {
                     font-size: 26rpx;
                     font-weight: 400;
                     color: #222222;
                     input {
                        width: 100rpx;
                        height: 40rpx;
                        margin-right: 10rpx;
                     }
                     span {
                        font-size: 26rpx;
                        font-weight: 400;
                        color: #222222;
                     }
                  }
               }
            }
         }
      }
      .page_yxwl_kong {
         padding: 50rpx 0;
         font-size: 25rpx;
         display: flex;
         align-items: center;
         justify-content: center;
      }
   }
   .page_zw {
      height: 160rpx;
   }
   .page_footer {
      width: calc(100% - 60rpx);
      background: #F7F7F7;
      display: flex;
      align-items: center;
      justify-content: space-between;
      position: fixed;
      bottom: 0;
      left: 30rpx;
      padding-bottom: 68rpx;
      .page_footer_qr {
         flex: 1;
         height: 88rpx;
         background: #fff;
         box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
         border-radius: 8rpx;
         font-size: 32rpx;
         font-weight: 500;
         color: $nav-color;
         display: flex;
         align-items: center;
         justify-content: center;
         img {
            width: 30rpx;
            height: 30rpx;
            margin-right: 12rpx;
         }
      }
      .page_footer_ck {
         flex: 1;
         height: 88rpx;
         background: $nav-color;
         box-shadow: 0 0 12rpx 0 rgba(0, 0, 0, 0.08);
         border-radius: 8rpx;
         font-size: 32rpx;
         font-weight: 500;
         color: #FFFFFF;
         display: flex;
         align-items: center;
         justify-content: center;
      }
   }
</style>