<template> 
 | 
  <div class="page"> 
 | 
    <!--    头部信息(转库单)    --> 
 | 
    <div class="page_info" v-if="info.wtransfer && route.query.type == 7"> 
 | 
      <div class="page_info_title">计划出库日期:{{ info.wtransfer.outPlandate }}</div> 
 | 
      <div class="page_info_list"> 
 | 
        <div class="page_info_list_item"> 
 | 
          <div class="page_info_list_item_label">来源类型:</div> 
 | 
          <div class="page_info_list_item_nr" v-if="info.wtransfer.originType === 0">采购订单</div> 
 | 
          <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 1">生产工单</div> 
 | 
          <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 2">销售订单</div> 
 | 
          <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 3">转库单</div> 
 | 
          <div class="page_info_list_item_nr" v-else-if="info.wtransfer.originType === 4">盘点单</div> 
 | 
          <div class="page_info_list_item_nr" v-else>-</div> 
 | 
        </div> 
 | 
        <!--                <div class="page_info_list_item">--> 
 | 
        <!--                    <div class="page_info_list_item_label">申领工序:</div>--> 
 | 
        <!--                    <div class="page_info_list_item_nr">{{info.wtransfer.procedureName ? info.wtransfer.procedureName : '-'}}</div>--> 
 | 
        <!--                </div>--> 
 | 
        <div class="page_info_list_item"> 
 | 
          <div class="page_info_list_item_label">来源单号:</div> 
 | 
          <div class="page_info_list_item_nr">{{ info.wtransfer.originCode ? info.wtransfer.originCode : '-' }}</div> 
 | 
        </div> 
 | 
        <div class="page_info_list_item"> 
 | 
          <div class="page_info_list_item_label">申请人员:</div> 
 | 
          <div class="page_info_list_item_nr">{{ info.wtransfer.outUserName }}/{{ info.wtransfer.outDepartName }}</div> 
 | 
        </div> 
 | 
        <div class="page_info_list_item"> 
 | 
          <div class="page_info_list_item_label">入库接收人:</div> 
 | 
          <div class="page_info_list_item_nr">{{ info.wtransfer.inUserName }}</div> 
 | 
        </div> 
 | 
        <div class="page_info_list_item"> 
 | 
          <div class="page_info_list_item_label">申请时间:</div> 
 | 
          <div class="page_info_list_item_nr">{{ info.wtransfer.createTime ? info.wtransfer.createTime : '-' }}</div> 
 | 
        </div> 
 | 
      </div> 
 | 
      <div class="page_info_bz" v-if="info.wtransfer.abstracts"> 
 | 
        <div class="page_info_bz_title">转库备注:</div> 
 | 
        <div class="page_info_bz_nr">{{ info.wtransfer.abstracts }}</div> 
 | 
      </div> 
 | 
    </div> 
 | 
    <!--    头部信息(出库单)    --> 
 | 
    <div class="page_info" v-if="info.woutbound && route.query.type == 8"> 
 | 
      <div class="page_info_title">计划出库日期:{{ info.woutbound.planDate }}</div> 
 | 
      <div class="page_info_list"> 
 | 
        <div class="page_info_list_item"> 
 | 
          <div class="page_info_list_item_label">来源类型:</div> 
 | 
          <div class="page_info_list_item_nr" v-if="info.woutbound.originType === 0">采购订单</div> 
 | 
          <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 1">生产工单</div> 
 | 
          <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 2">销售订单</div> 
 | 
          <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 3">转库单</div> 
 | 
          <div class="page_info_list_item_nr" v-else-if="info.woutbound.originType === 4">盘点单</div> 
 | 
          <div class="page_info_list_item_nr" v-else>-</div> 
 | 
        </div> 
 | 
        <!--                <div class="page_info_list_item">--> 
 | 
        <!--                    <div class="page_info_list_item_label">申领工序:</div>--> 
 | 
        <!--                    <div class="page_info_list_item_nr">{{info.woutbound.procedureName ? info.woutbound.procedureName : '-'}}</div>--> 
 | 
        <!--                </div>--> 
 | 
        <div class="page_info_list_item"> 
 | 
          <div class="page_info_list_item_label">来源单号:</div> 
 | 
          <div class="page_info_list_item_nr">{{ info.woutbound.originCode ? info.woutbound.originCode : '-' }}</div> 
 | 
        </div> 
 | 
        <div class="page_info_list_item"> 
 | 
          <div class="page_info_list_item_label">申请人员:</div> 
 | 
          <div class="page_info_list_item_nr">{{ info.woutbound.userName }}/{{ info.woutbound.userDepartName }}</div> 
 | 
        </div> 
 | 
        <div class="page_info_list_item"> 
 | 
          <div class="page_info_list_item_label">申请时间:</div> 
 | 
          <div class="page_info_list_item_nr">{{ info.woutbound.createTime ? info.woutbound.createTime : '-' }}</div> 
 | 
        </div> 
 | 
      </div> 
 | 
      <div class="page_info_bz" v-if="info.woutbound.abstracts"> 
 | 
        <div class="page_info_bz_title">转库备注:</div> 
 | 
        <div class="page_info_bz_nr">{{ info.woutbound.abstracts }}</div> 
 | 
      </div> 
 | 
    </div> 
 | 
    <div class="page_h"></div> 
 | 
    <!--    打开选择工装    --> 
 | 
    <!--        <div class="switch" v-if="type === QRCodeType.ZKD.toString()">--> 
 | 
    <!--            <button @click="openxz"><img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt="">手动选择</button>--> 
 | 
    <!--        </div>--> 
 | 
    <!--        <div class="page_h" v-if="type === QRCodeType.ZKD.toString()"></div>--> 
 | 
    <!--    待出物料    --> 
 | 
    <van-collapse v-model="activeNames"> 
 | 
      <!--        转库单(多个仓库)        --> 
 | 
      <template v-if="route.query.type == 7"> 
 | 
        <van-collapse-item :name="String(index + 1)" v-for="(item, index) in info.wtransferWarehouseList" :key="index"> 
 | 
          <template #title> 
 | 
            <div class="page_sfq"><img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{ item.warehouseName }}</div> 
 | 
          </template> 
 | 
          <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="(items, idx) in item.wtransferDetailList" :key="idx"> 
 | 
            <div class="page_content_title"> 
 | 
              <div class="page_content_title_top"> 
 | 
                <span>{{ items.materialName }} | {{ items.materialCode }}</span> 
 | 
                <span>待出 <span>{{ items.outPlannum }}</span> {{ items.unitName }}</span> 
 | 
              </div> 
 | 
              <div class="page_content_title_bottom"> 
 | 
                <span class="green" v-if="items.qualityType === 0">合格 / </span> 
 | 
                <span class="warning" v-else-if="items.qualityType === 1">不良 / </span> 
 | 
                <span class="error" v-else-if="items.qualityType === 2">报废 / </span> 
 | 
                <span v-else>- / </span> 
 | 
                <span>{{ items.procedureName ? items.procedureName : '-' }} / </span> 
 | 
                <span>{{ items.batch ? items.batch : '-' }}</span> 
 | 
              </div> 
 | 
            </div> 
 | 
            <div class="page_content_list" v-for="(childer, idxs) in items.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 class="page_content_list_item"> 
 | 
                <div class="page_content_list_item_label">批次号:</div> 
 | 
                <div class="page_content_list_item_nr">{{ childer.batch ? childer.batch : '-' }}</div> 
 | 
              </div> 
 | 
            </div> 
 | 
          </div> 
 | 
        </van-collapse-item> 
 | 
      </template> 
 | 
      <!--        出库单(一个仓库)        --> 
 | 
      <template v-if="route.query.type == 8"> 
 | 
        <van-collapse-item name="1"> 
 | 
          <template #title> 
 | 
            <div class="page_sfq" v-if="info.woutbound"> 
 | 
              <img src="@/assets/icon/chuku_ic_cangku@2x.png" alt="" /> {{ info.woutbound.warehouseName }} 
 | 
            </div> 
 | 
          </template> 
 | 
          <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 info.woutboundDetailsWait" :key="index"> 
 | 
            <div class="page_content_title"> 
 | 
              <!--                            <span>{{item.materialName}} | {{item.materialCode}}</span>--> 
 | 
              <!--                            <span>待出 <span>{{item.num}}</span> {{item.unitName}}</span>--> 
 | 
              <div class="page_content_title_top"> 
 | 
                <span>{{ item.materialName }} | {{ item.materialCode }}</span> 
 | 
                <span>待出 <span>{{ item.num }}</span> {{ item.unitName }}</span> 
 | 
              </div> 
 | 
              <div class="page_content_title_bottom"> 
 | 
                <span class="green" v-if="item.qualityType === 0">合格 / </span> 
 | 
                <span class="warning" v-else-if="item.qualityType === 1">不良 / </span> 
 | 
                <span class="error" v-else-if="item.qualityType === 2">报废 / </span> 
 | 
                <span v-else>- / </span> 
 | 
                <span>{{ item.procedureName ? item.procedureName : '-' }} / </span> 
 | 
                <span>{{ item.batch ? item.batch : '-' }}</span> 
 | 
              </div> 
 | 
            </div> 
 | 
            <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">批次号:</div> 
 | 
                <div class="page_content_list_item_nr">{{ items.batch ? items.batch : '-' }}</div> 
 | 
              </div> 
 | 
              <div class="page_content_list_items"> 
 | 
                <div class="page_content_list_item_label">数量:</div> 
 | 
                <div class="page_content_list_item_nr">{{ items.num }}{{ items.umodel.name }}</div> 
 | 
              </div> 
 | 
              <div class="page_content_list_item" v-if="items.lmodel"> 
 | 
                <div class="page_content_list_item_label">出库货位:</div> 
 | 
                <div class="page_content_list_item_nr">{{ items.lmodel.unionName }}</div> 
 | 
              </div> 
 | 
            </div> 
 | 
          </div> 
 | 
        </van-collapse-item> 
 | 
      </template> 
 | 
    </van-collapse> 
 | 
    <div class="page_h"></div> 
 | 
    <!--    已选物料    --> 
 | 
    <div class="page_yxwl"> 
 | 
      <!--        转库单(多个仓库)        --> 
 | 
      <!-- <template v-if="route.query.type == 7"> 
 | 
                <div class="page_yxwl_title"> 
 | 
                    <div class="left"> 
 | 
                        <div class="page_yxwl_title_x"></div> 
 | 
                        <span>已选择物料</span> 
 | 
                    </div> 
 | 
                    <div class="right" v-if="type === QRCodeType.ZKD.toString()" @click="openxz"> 
 | 
                        <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""><span>手动出库</span> 
 | 
                    </div> 
 | 
                    <div v-else></div> 
 | 
                </div> 
 | 
                <div class="page_yxwl_list" v-if="info.wtransferRedisCodeBeanList && info.wtransferRedisCodeBeanList.length > 0"> 
 | 
                    <template v-for="(item, index) in info.wtransferWarehouseList" :key="index"> 
 | 
                        <div class="page_yxwl_list_item" v-for="(item1, idx) in item.wtScanMaterialBeanList" :key="idx"> 
 | 
                            <div class="page_yxwl_list_item_top"> 
 | 
                                <div class="page_yxwl_list_item_top_left">{{item1.materialName}} | {{item1.materialCode}} </div> 
 | 
                                <div class="page_yxwl_list_item_top_right"> 
 | 
                                    <span>已选 <span>{{item1.scanNum}}</span> {{item1.unitName}}</span> 
 | 
                                </div> 
 | 
                            </div> 
 | 
                            <div class="page_yxwl_list_item_sx"> 
 | 
                                <span class="green" v-if="item1.qualityType === 0">合格 <span>/</span></span> 
 | 
                                <span class="yellow" v-else-if="item1.qualityType === 1">不良 <span>/</span></span> 
 | 
                                <span class="red" v-else-if="item1.qualityType === 2">报废 <span>/</span></span> 
 | 
                                <span> {{item1.procedureName ? item1.procedureName : '-'}} <span>/</span></span> 
 | 
                                <span> {{item1.batch ? item1.batch : '-'}}</span> 
 | 
                            </div> 
 | 
                            <div class="page_yxwl_list_item_num" v-for="(item2, idx1) in item1.wtransferRedisCodeBeanList" :key="idx1"> 
 | 
                                <div class="item"> 
 | 
                                    <div class="label"></div> 
 | 
                                    <div class="nr" v-if="item2.batch">{{item2.scanCode}} - {{item2.batch}}</div> 
 | 
                                    <div class="nr" v-else>{{item2.scanCode}}</div> 
 | 
                                </div> 
 | 
                                <div class="item"> 
 | 
                                    <div class="label">数量:</div> 
 | 
                                    <div class="nr">{{item2.num}}{{item2.unitName}}</div> 
 | 
                                </div> 
 | 
                                <div class="dele" @click="dele(item2)"> 
 | 
                                    <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" /> 
 | 
                                </div> 
 | 
                            </div> 
 | 
                        </div> 
 | 
                    </template> 
 | 
                </div> 
 | 
                <div class="page_yxwl_kong" v-else><span>暂无数据</span></div> 
 | 
            </template> --> 
 | 
      <!--        出库单(一个仓库)        --> 
 | 
      <!-- <template v-if="route.query.type == 8"> --> 
 | 
      <div class="page_yxwl_title"> 
 | 
        <!--                    <div class="page_yxwl_title_x"></div>--> 
 | 
        <!--                    <span>已选择物料</span>--> 
 | 
        <div class="left"> 
 | 
          <div class="page_yxwl_title_x"></div> 
 | 
          <span>已选择物料</span> 
 | 
        </div> 
 | 
        <div class="right" @click="openxz"> 
 | 
          <img src="@/assets/icon/gongdan_ic_shoudong@2x.png" alt=""><span>手动出库</span> 
 | 
        </div> 
 | 
        <!-- <div></div> --> 
 | 
      </div> 
 | 
      <div class="page_yxwl_list" v-if="outboundList.length > 0"> 
 | 
        <!-- <template> --> 
 | 
        <div class="page_yxwl_list_item" v-for="(item, index) in outboundList" :key="index"> 
 | 
          <div class="page_yxwl_list_item_top"> 
 | 
            <div class="page_yxwl_list_item_top_left">{{ item.materialName }} | {{ item.materialCode }} </div> 
 | 
            <!-- <div class="page_yxwl_list_item_top_right"> 
 | 
                                    <span>已选:<span>{{item.outPlannum}}</span> {{item.unitName}}</span> 
 | 
                                </div> --> 
 | 
          </div> 
 | 
          <div class="page_yxwl_list_item_sx"> 
 | 
            <span class="green" v-if="item.qualityType == 0">合格 <span>/</span></span> 
 | 
            <span class="yellow" v-else-if="item.qualityType == 1">不良 <span>/</span></span> 
 | 
            <span class="red" v-else-if="item.qualityType == 2">报废 <span>/</span></span> 
 | 
            <span v-else>- / </span> 
 | 
            <span> {{ item.procedureName ? item.procedureName : '-' }} / </span> 
 | 
            <span> {{ item.batch ? item.batch : '-' }}</span> 
 | 
          </div> 
 | 
          <div class="page_yxwl_list_item_num"> 
 | 
            <div class="item"> 
 | 
              <div class="label">出库货位:</div> 
 | 
              <div class="nr"> 
 | 
                <span>{{ item.locationName }}</span> 
 | 
              </div> 
 | 
            </div> 
 | 
            <div class="item"> 
 | 
              <div class="label">数量:</div> 
 | 
              <div class="nr"> 
 | 
                <!-- @input="changeNum(item)" --> 
 | 
                <input type="number" v-model="item.num" placeholder="请输入"> 
 | 
                <span>{{ item.unitName }}</span> 
 | 
              </div> 
 | 
            </div> 
 | 
            <div class="dele" @click="dele(index)"> 
 | 
              <img src="@/assets/icon/chuku_ic_delete@2x.png" alt="" /> 
 | 
            </div> 
 | 
          </div> 
 | 
        </div> 
 | 
        <!-- </template> --> 
 | 
      </div> 
 | 
      <div class="page_yxwl_kong" v-else><span>暂无数据</span></div> 
 | 
      <!-- </template> --> 
 | 
    </div> 
 | 
    <div class="page_zw"></div> 
 | 
    <!--    操作按钮    --> 
 | 
    <div class="page_footer"> 
 | 
      <button class="page_footer_qrck" v-preventReClick @click="submit"> 
 | 
        <span>确认出库</span> 
 | 
      </button> 
 | 
    </div> 
 | 
    <Access :show="show" :transferId="(route.query.id as string)" :warehouseId="warehouseId" @close="closeBox" 
 | 
      @value="getValue" /> 
 | 
  </div> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
import { ref, onMounted } from 'vue' 
 | 
import { useRoute, useRouter } from "vue-router" 
 | 
import { Toast } from 'vant' 
 | 
import { QRCodeType } from '@/enum' 
 | 
import { 
 | 
  outScanAppliances, 
 | 
  wTransferForInOut, 
 | 
  wTransferForInOutUpload, 
 | 
  wOutBoundForInOut, 
 | 
  wOutBoundForUpload, 
 | 
  transferToOutNew 
 | 
} from '@/apis/ExWarehouse' 
 | 
import { useStore } from 'vuex' 
 | 
import { getDB } from '@/apis/agencyAPI' 
 | 
import Access from '@/components/common/Access.vue' 
 | 
  
 | 
const route = useRoute() 
 | 
const store = useStore() 
 | 
const router = useRouter() 
 | 
  
 | 
let dataItem: any = null    // 已扫数据 
 | 
  
 | 
let show = ref<boolean>(false) 
 | 
let ids = ref<string>('')   // 已选 
 | 
let warehouseId = ref('')  // 仓库id 
 | 
let outboundList = ref<any[]>([])  // 出库数据 
 | 
// 控制扫码显示隐藏 
 | 
const openCode = ref<boolean>(false) 
 | 
  
 | 
// 出库类型 
 | 
let type: any = route.query.type 
 | 
  
 | 
const activeNames = ref(['1']); 
 | 
  
 | 
// 详情数据 
 | 
let info: any = ref({}) 
 | 
  
 | 
// 打开手动选择工装弹框 
 | 
const openxz = () => { 
 | 
  let arr: any = [] 
 | 
  if (info.value.wtransferRedisCodeBeanList.length !== 0) { 
 | 
    info.value.wtransferRedisCodeBeanList.forEach((element: any) => { 
 | 
      arr.push(element.appliancesId) 
 | 
    }) 
 | 
    ids.value = arr.join(',') 
 | 
  } else { 
 | 
    ids.value = '' 
 | 
  } 
 | 
  show.value = true 
 | 
} 
 | 
  
 | 
const closeBox = () => { 
 | 
  show.value = false 
 | 
} 
 | 
  
 | 
const changeNum = (item: any) => { 
 | 
  info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((row: any) => { 
 | 
    if (row.materialId === item.materialId) { 
 | 
      if (Number(item.num) > Number(row.outPlannum)) { 
 | 
        item.num = 0 
 | 
        Toast.fail({ message: "出库物料数量不能大于待出库物料数量" }) 
 | 
      } 
 | 
    } 
 | 
  }) 
 | 
} 
 | 
  
 | 
// 提交工装 
 | 
const getValue = async (val: any, i: number) => { 
 | 
  // if (i === 0) { 
 | 
  show.value = false 
 | 
  // } 
 | 
  
 | 
  
 | 
  for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) { 
 | 
    if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].materialId == val.materialId && 
 | 
      info.value.wtransferWarehouseList[0].wtransferDetailList[i].procedureId == val.procedureId && 
 | 
      info.value.wtransferWarehouseList[0].wtransferDetailList[i].qualityType == val.qualityType && 
 | 
      info.value.wtransferWarehouseList[0].wtransferDetailList[i].batch == val.batch) { 
 | 
  
 | 
      for (let s = 0; s < outboundList.value.length; s++) { 
 | 
        if (outboundList.value[s].newId == info.value.wtransferWarehouseList[0].wtransferDetailList[i].id) { 
 | 
          return Toast.fail({ message: "该物料批次已存在" }) 
 | 
        } 
 | 
      } 
 | 
  
 | 
      let obj = JSON.parse(JSON.stringify(val)) 
 | 
      obj.newId = info.value.wtransferWarehouseList[0].wtransferDetailList[i].id 
 | 
      outboundList.value.push(obj) 
 | 
  
 | 
    } 
 | 
  } 
 | 
  
 | 
  console.log(outboundList.value) 
 | 
  // let res = await outScanAppliances({ 
 | 
  //     barCode: val.prefix + val.code, 
 | 
  //     pId: info.value.wtransfer.id, 
 | 
  //     type: 1 
 | 
  // }) 
 | 
  // if (res.code === 200) { 
 | 
  //     let isData: string = '' 
 | 
  //     info.value.wtransferWarehouseList.forEach((item: any) => { 
 | 
  //         if (res.data.warehouseId === item.warehouseId) { 
 | 
  //             item.wtransferDetailList.forEach((item1: any) => { 
 | 
  //                 if (item1.materialId !== res.data.materialId) { 
 | 
  //                     isData = 'wl' 
 | 
  //                 } else if (res.data.qualityType !== item1.qualityType) { 
 | 
  //                     isData = 'lx' 
 | 
  //                 } else if (res.data.procedureId !== item1.procedureId) { 
 | 
  //                     isData = 'gx' 
 | 
  //                 } else if (item1.batch ? res.data.batch !== item1.batch : false) { 
 | 
  //                     isData = 'pc' 
 | 
  //                 } else { 
 | 
  //                     isData = '' 
 | 
  //                 } 
 | 
  //                 if (item1.materialId == res.data.materialId && res.data.qualityType == item1.qualityType && res.data.procedureId == item1.procedureId && item1.batch ? res.data.batch == item1.batch : true) { 
 | 
  //                     dataItem = res.data 
 | 
  //                     dataItem.wtransferDetailId = item1.id 
 | 
  //                     dataItem.wtransferId = item1.transferId 
 | 
  //                     dataItem.appliancesId = res.data.id 
 | 
  //                     let rul = upload() 
 | 
  //                     return; 
 | 
  //                 } 
 | 
  //             }) 
 | 
  //         } else { 
 | 
  //             isData = 'ck' 
 | 
  //         } 
 | 
  //         if (isData === 'ck') { 
 | 
  //             Toast.fail({ message: "仓库不一致" }) 
 | 
  //         } else if (isData === 'wl') { 
 | 
  //             Toast.fail({ message: "物料不一致" }) 
 | 
  //         } else if (isData === 'lx') { 
 | 
  //             Toast.fail({ message: "质量类型不一致" }) 
 | 
  //         } else if (isData === 'gx') { 
 | 
  //             Toast.fail({ message: "工序不一致" }) 
 | 
  //         } else if (isData === 'pc') { 
 | 
  //             Toast.fail({ message: "批次不一致" }) 
 | 
  //         } 
 | 
  //     }) 
 | 
  // } 
 | 
  // show.value = false 
 | 
} 
 | 
  
 | 
// 获取详情 (转库单/出库单) 
 | 
const getInfo = () => { 
 | 
  let type: string = route.query.type as string 
 | 
  if (type === QRCodeType.CKD.toString()) { 
 | 
    console.log('出库单') 
 | 
    wOutBoundForInOut({ 
 | 
      id: Number(route.query.id), 
 | 
      wOutboundType: 0 
 | 
    }).then(res => { 
 | 
      if (res.code === 200) { 
 | 
        info.value = res.data 
 | 
        warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString() 
 | 
      } else { 
 | 
        Toast.fail({ message: res.message, forbidClick: true, duration: 2000 }) 
 | 
        setTimeout(() => { 
 | 
          router.go(-1) 
 | 
        }, 2000) 
 | 
      } 
 | 
    }) 
 | 
  } else if (type === QRCodeType.ZKD.toString()) { 
 | 
    console.log('转库单') 
 | 
    wTransferForInOut({ 
 | 
      id: Number(route.query.id), 
 | 
      wTransferType: 0 
 | 
    }).then(res => { 
 | 
      if (res.code === 200) { 
 | 
        info.value = res.data 
 | 
        warehouseId.value = info.value.wtransferWarehouseList[0].warehouseId.toString() 
 | 
      } else { 
 | 
        Toast.fail({ message: res.message, forbidClick: true, duration: 2000 }) 
 | 
        setTimeout(() => { 
 | 
          router.go(-1) 
 | 
        }, 2000) 
 | 
      } 
 | 
    }) 
 | 
  } 
 | 
} 
 | 
  
 | 
// 删除对应的批次 
 | 
const dele = (index: Number) => { 
 | 
  outboundList.value.forEach((item: any, i: number) => { 
 | 
    if (index === i) { 
 | 
      outboundList.value.splice(i, 1) 
 | 
    } 
 | 
  }) 
 | 
} 
 | 
  
 | 
// 上传工装 
 | 
const upload = () => { 
 | 
  if (type === QRCodeType.ZKD.toString()) { 
 | 
    wTransferForInOut({ 
 | 
      id: Number(route.query.id), 
 | 
      optType: 1, 
 | 
      wTransferType: 0, 
 | 
      jsonBean: dataItem 
 | 
    }).then(res => { 
 | 
      if (res.code === 200) { 
 | 
        getInfo() 
 | 
      } 
 | 
    }) 
 | 
  } else if (type === QRCodeType.CKD.toString()) { 
 | 
    wOutBoundForInOut({ 
 | 
      id: Number(route.query.id), 
 | 
      optType: 1, 
 | 
      wOutboundType: 0, 
 | 
      jsonBean: dataItem 
 | 
    }).then(res => { 
 | 
      if (res.code === 200) { 
 | 
        getInfo() 
 | 
      } 
 | 
    }) 
 | 
  } 
 | 
} 
 | 
  
 | 
// 点击扫码出库 
 | 
const ck = () => { 
 | 
  openCode.value = true 
 | 
} 
 | 
  
 | 
// 提交操作 
 | 
const submit = () => { 
 | 
  if (type === QRCodeType.ZKD.toString()) { 
 | 
    if (outboundList.value.length > 0) { 
 | 
      let result = outboundList.value.reduce((a, b) => { 
 | 
        if (a[b.newId]) { 
 | 
          a[b.newId].push(b); 
 | 
        } else { 
 | 
          a[b.newId] = [b]; 
 | 
        } 
 | 
        return a; 
 | 
      }, {}); 
 | 
  
 | 
      for (let i = 0; i < info.value.wtransferWarehouseList[0].wtransferDetailList.length; i++) { 
 | 
        for (let a in result) { 
 | 
          if (info.value.wtransferWarehouseList[0].wtransferDetailList[i].id == a) { 
 | 
            let total = 0 
 | 
            for (let b = 0; b < result[a].length; b++) { 
 | 
              total = Number(total) + Number(result[a][b].num) 
 | 
            } 
 | 
            console.log(total, info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum) 
 | 
            if (!total || total <= 0) { 
 | 
              return Toast.fail({ message: '出库物料数量必须大于0', forbidClick: true, duration: 2000 }) 
 | 
            } 
 | 
            if (total > info.value.wtransferWarehouseList[0].wtransferDetailList[i].outPlannum) { 
 | 
              return Toast.fail({ message: '出库数量不能大于待出库数量', forbidClick: true, duration: 2000 }) 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
  
 | 
      let submitTransferOutDetailDTOList: any = [] 
 | 
      outboundList.value.forEach((item: any) => { 
 | 
        info.value.wtransferWarehouseList[0].wtransferDetailList.forEach((child: any) => { 
 | 
          if (item.newId == child.id) { 
 | 
            submitTransferOutDetailDTOList.push({ 
 | 
              outNum: item.num, 
 | 
              wstockId: item.id, 
 | 
              wtransferDetailId: child.id 
 | 
            }) 
 | 
          } 
 | 
        }) 
 | 
      }) 
 | 
      transferToOutNew({ 
 | 
        submitTransferOutDetailDTOList, 
 | 
        wtransferId: route.query.id 
 | 
      }).then(res => { 
 | 
        if (res.code === 200) { 
 | 
          store.dispatch('getUpcomingNum') 
 | 
          Toast.success({ message: '操作成功', forbidClick: true, duration: 2000 }) 
 | 
          setTimeout(() => { 
 | 
            router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } }) 
 | 
          }, 2000) 
 | 
        } 
 | 
      }) 
 | 
    } else { 
 | 
      Toast.fail({ message: '请选择出库物料', forbidClick: true, duration: 2000 }) 
 | 
    } 
 | 
    // let yx: number = 0 
 | 
    // let dc: number = 0 
 | 
    // info.value.wtransferRedisCodeBeanList.forEach((element: any) => { 
 | 
    //     yx = yx + element.num 
 | 
    // }) 
 | 
    // info.value.wtransferWarehouseList.forEach((element: any) => { 
 | 
    //     element.wtransferDetailList.forEach((elementChilder: any) => { 
 | 
    //         dc = dc + elementChilder.outPlannum 
 | 
    //     }) 
 | 
    // }) 
 | 
    // if (yx < dc) { 
 | 
    //     Dialog.confirm({ 
 | 
    //         title: '提示', 
 | 
    //         message: '待出物料与已出物料数量不一致,是否确认出库', 
 | 
    //     }) 
 | 
    //     .then(() => { 
 | 
    //         wTransferForInOutUpload({ 
 | 
    //             id: info.value.wtransfer.id, 
 | 
    //             wTransferType: 0 
 | 
    //         }).then(res => { 
 | 
    //             if (res.code === 200) { 
 | 
    //                 store.dispatch('getUpcomingNum') 
 | 
    //                 Toast.success({ message: '操作成功', forbidClick: true, duration: 2000 }) 
 | 
    //                 setTimeout(() => { 
 | 
    //                     // router.go(-1) 
 | 
    //                     router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } }) 
 | 
    //                 }, 2000) 
 | 
    //             } 
 | 
    //         }) 
 | 
    //         return 
 | 
    //     }) 
 | 
    //     .catch(() => { 
 | 
  
 | 
    //     }); 
 | 
    // } else { 
 | 
    //     wTransferForInOutUpload({ 
 | 
    //         id: info.value.wtransfer.id, 
 | 
    //         wTransferType: 0 
 | 
    //     }).then(res => { 
 | 
    //         if (res.code === 200) { 
 | 
    //             store.dispatch('getUpcomingNum') 
 | 
    //             Toast.success({ message: '操作成功', forbidClick: true, duration: 2000 }) 
 | 
    //             setTimeout(() => { 
 | 
    //                 // router.go(-1) 
 | 
    //                 router.replace({ name: 'wTransferDetail', query: { id: info.value.wtransfer.id, dbid: route.query.dbid } }) 
 | 
    //             }, 2000) 
 | 
    //         } 
 | 
    //     }) 
 | 
    // } 
 | 
  } else if (type === QRCodeType.CKD.toString()) { 
 | 
    wOutBoundForUpload({ 
 | 
      id: info.value.woutbound.id, 
 | 
      wOutboundType: 0 
 | 
    }).then(res => { 
 | 
      if (res.code === 200) { 
 | 
        store.dispatch('getUpcomingNum') 
 | 
        Toast.success({ message: '操作成功', forbidClick: true, duration: 2000 }) 
 | 
        setTimeout(() => { 
 | 
          // router.go(-1) 
 | 
          router.replace({ name: 'wOutboundDetail', query: { id: info.value.wtransfer.id } }) 
 | 
        }, 2000) 
 | 
      } 
 | 
    }) 
 | 
  } 
 | 
} 
 | 
  
 | 
// 获取待办详情(判断当前待办是否已处理) 
 | 
const getDBs = async (id: string): Promise<any> => { 
 | 
  let res = await getDB(id) 
 | 
  if (res.code === 200) { 
 | 
    if (res.data.status === 1) { 
 | 
      if (type === QRCodeType.CKD.toString()) { 
 | 
        await router.replace({ name: 'wOutboundDetail', query: { id: route.query.id } }) 
 | 
      } else if (type === QRCodeType.ZKD.toString()) { 
 | 
        await router.replace({ name: 'wTransferDetail', query: { id: route.query.id } }) 
 | 
      } 
 | 
    } else { 
 | 
      await getInfo() 
 | 
    } 
 | 
  } 
 | 
} 
 | 
  
 | 
onMounted(() => { 
 | 
  if (route.query.dbid) { 
 | 
    getDBs(route.query.dbid as string) 
 | 
  } else { 
 | 
    getInfo() 
 | 
  } 
 | 
}) 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
.page { 
 | 
  width: 100%; 
 | 
  height: 100%; 
 | 
  position: absolute; 
 | 
  background: #F7F7F7; 
 | 
  
 | 
  .page_info { 
 | 
    padding: 30px; 
 | 
    background: #ffffff; 
 | 
  
 | 
    .page_info_title { 
 | 
      font-size: 32px; 
 | 
      font-weight: 500; 
 | 
      color: #4275FC; 
 | 
    } 
 | 
  
 | 
    .page_info_list { 
 | 
      display: flex; 
 | 
      flex-wrap: wrap; 
 | 
      margin: 30px 0 0 0; 
 | 
  
 | 
      .page_info_list_item { 
 | 
        width: 100%; 
 | 
        display: flex; 
 | 
        margin-top: 24px; 
 | 
  
 | 
        &:nth-child(1) { 
 | 
          margin-top: 0; 
 | 
        } 
 | 
  
 | 
        /*&:nth-child(2) {*/ 
 | 
        /*    margin-top: 0;*/ 
 | 
        /*}*/ 
 | 
        .page_info_list_item_label { 
 | 
          flex-shrink: 0; 
 | 
          font-size: 26px; 
 | 
          font-weight: 400; 
 | 
          color: #666666; 
 | 
        } 
 | 
  
 | 
        .page_info_list_item_nr { 
 | 
          flex: 1; 
 | 
          font-size: 26px; 
 | 
          font-weight: 400; 
 | 
          color: #222222; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  
 | 
    .page_info_bz { 
 | 
      padding: 24px; 
 | 
      background: #F7F7F7; 
 | 
      margin-top: 30px; 
 | 
  
 | 
      .page_info_bz_title { 
 | 
        font-size: 26px; 
 | 
        font-weight: 500; 
 | 
        color: #222222; 
 | 
        margin-bottom: 20px; 
 | 
      } 
 | 
  
 | 
      .page_info_bz_nr { 
 | 
        font-size: 24px; 
 | 
        font-weight: 400; 
 | 
        color: #333333; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .switch { 
 | 
    padding: 0 30px; 
 | 
  
 | 
    button { 
 | 
      width: 100%; 
 | 
      border: none; 
 | 
      height: 76px; 
 | 
      background: #ffffff; 
 | 
      border-radius: 36px; 
 | 
      font-size: 26px; 
 | 
      font-weight: 400; 
 | 
      color: black; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: center; 
 | 
  
 | 
      img { 
 | 
        width: 28px; 
 | 
        height: 28px; 
 | 
        margin-right: 14px; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .page_h { 
 | 
    height: 20px; 
 | 
  } 
 | 
  
 | 
  .page_sfq { 
 | 
    font-size: 32px; 
 | 
    font-weight: 500; 
 | 
    color: #222222; 
 | 
    display: flex; 
 | 
    align-items: center; 
 | 
  
 | 
    img { 
 | 
      width: 36px; 
 | 
      height: 36px; 
 | 
      margin-right: 16px; 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .page_dck { 
 | 
    .page_dck_title { 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
  
 | 
      .page_dck_title_x { 
 | 
        width: 8px; 
 | 
        height: 30px; 
 | 
        background: #4275FC; 
 | 
        border-radius: 2px; 
 | 
        margin-right: 16px; 
 | 
      } 
 | 
  
 | 
      span { 
 | 
        font-size: 32px; 
 | 
        font-weight: 500; 
 | 
        color: #222222; 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .page_content { 
 | 
    margin-top: 28px; 
 | 
  
 | 
    .page_content_title { 
 | 
      display: flex; 
 | 
      flex-direction: column; 
 | 
  
 | 
      .page_content_title_top { 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
        justify-content: space-between; 
 | 
  
 | 
        span { 
 | 
          &:nth-child(1) { 
 | 
            font-size: 30px; 
 | 
            font-weight: 500; 
 | 
            color: #222222; 
 | 
          } 
 | 
  
 | 
          &:nth-child(2) { 
 | 
            flex-shrink: 0; 
 | 
            font-size: 24px; 
 | 
            font-weight: 400; 
 | 
            color: #333333; 
 | 
  
 | 
            span { 
 | 
              font-size: 24px; 
 | 
              color: $nav-color; 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
  
 | 
      .page_content_title_bottom { 
 | 
        .green { 
 | 
          color: $nav-stateColor7 !important; 
 | 
        } 
 | 
  
 | 
        .warning { 
 | 
          color: $nav-stateColor5 !important; 
 | 
        } 
 | 
  
 | 
        .error { 
 | 
          color: $nav-stateColor4 !important; 
 | 
        } 
 | 
  
 | 
        span { 
 | 
          font-size: 24px; 
 | 
          font-weight: 400; 
 | 
          color: #666666; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  
 | 
    .page_content_list { 
 | 
      width: 100%; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      flex-wrap: wrap; 
 | 
      padding-bottom: 30px; 
 | 
      margin-top: 28px; 
 | 
      border-bottom: 1px solid #E5E5E5; 
 | 
  
 | 
      &:first-child { 
 | 
        margin: 0; 
 | 
      } 
 | 
  
 | 
      &:last-child { 
 | 
        border: none; 
 | 
      } 
 | 
  
 | 
      .page_content_list_items { 
 | 
        width: 30%; 
 | 
        display: flex; 
 | 
        margin-top: 24px; 
 | 
  
 | 
        .page_content_list_item_label { 
 | 
          font-size: 26px; 
 | 
          font-weight: 400; 
 | 
          color: #666666; 
 | 
          flex-shrink: 0; 
 | 
        } 
 | 
  
 | 
        .page_content_list_item_nr { 
 | 
          font-size: 26px; 
 | 
          font-weight: 400; 
 | 
          color: #222222; 
 | 
        } 
 | 
      } 
 | 
  
 | 
      .page_content_list_item { 
 | 
        width: 70%; 
 | 
        display: flex; 
 | 
  
 | 
        .page_content_list_item_label { 
 | 
          font-size: 26px; 
 | 
          font-weight: 400; 
 | 
          color: #666666; 
 | 
          flex-shrink: 0; 
 | 
        } 
 | 
  
 | 
        .page_content_list_item_nr { 
 | 
          font-size: 26px; 
 | 
          font-weight: 400; 
 | 
          color: #222222; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .page_yxwl { 
 | 
    padding: 30px; 
 | 
    background: #ffffff; 
 | 
  
 | 
    .page_yxwl_title { 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: space-between; 
 | 
  
 | 
      .page_yxwl_title_x { 
 | 
        width: 8px; 
 | 
        height: 30px; 
 | 
        background: #4275FC; 
 | 
        border-radius: 2px; 
 | 
        margin-right: 16px; 
 | 
      } 
 | 
  
 | 
      span { 
 | 
        font-size: 32px; 
 | 
        font-weight: 500; 
 | 
        color: #222222; 
 | 
      } 
 | 
  
 | 
      .left { 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
  
 | 
        .page_yxwl_title_x { 
 | 
          width: 8px; 
 | 
          height: 30px; 
 | 
          background: #4275FC; 
 | 
          border-radius: 2px; 
 | 
          margin-right: 16px; 
 | 
        } 
 | 
  
 | 
        span { 
 | 
          font-size: 32px; 
 | 
          font-weight: 500; 
 | 
          color: #222222; 
 | 
        } 
 | 
      } 
 | 
  
 | 
      .right { 
 | 
        display: flex; 
 | 
        align-items: center; 
 | 
  
 | 
        img { 
 | 
          width: 28px; 
 | 
          height: 28px; 
 | 
          margin-right: 14px; 
 | 
        } 
 | 
  
 | 
        span { 
 | 
          font-size: 26px; 
 | 
          font-weight: 400; 
 | 
          color: #222222; 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  
 | 
    .page_yxwl_kong { 
 | 
      padding: 50px 0; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: center; 
 | 
  
 | 
      span { 
 | 
        font-size: 25px; 
 | 
        color: black; 
 | 
      } 
 | 
    } 
 | 
  
 | 
    .page_yxwl_list { 
 | 
      display: flex; 
 | 
      flex-direction: column; 
 | 
      padding-bottom: 30px; 
 | 
      border-bottom: 1px solid #ececec; 
 | 
  
 | 
      &:last-child { 
 | 
        margin-bottom: 0; 
 | 
        border: none; 
 | 
      } 
 | 
  
 | 
      .page_yxwl_list_item { 
 | 
        margin-top: 28px; 
 | 
  
 | 
        .page_yxwl_list_item_sx { 
 | 
          margin-top: 10px; 
 | 
  
 | 
          span { 
 | 
            color: black; 
 | 
          } 
 | 
        } 
 | 
  
 | 
        .page_yxwl_list_item_top { 
 | 
          display: flex; 
 | 
          align-items: center; 
 | 
          justify-content: space-between; 
 | 
  
 | 
          .page_yxwl_list_item_top_left { 
 | 
            font-size: 30px; 
 | 
            font-weight: 500; 
 | 
            color: #222222; 
 | 
          } 
 | 
  
 | 
          .page_yxwl_list_item_top_right { 
 | 
            span { 
 | 
              font-size: 24px; 
 | 
              font-weight: 400; 
 | 
              color: #333333; 
 | 
  
 | 
              span { 
 | 
                font-size: 24px; 
 | 
                font-weight: 400; 
 | 
                color: $nav-color; 
 | 
              } 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
  
 | 
        .page_yxwl_list_item_num { 
 | 
          display: flex; 
 | 
          position: relative; 
 | 
          margin-top: 36px; 
 | 
  
 | 
          &:first-child { 
 | 
            margin-top: 0; 
 | 
          } 
 | 
  
 | 
          .dele { 
 | 
            position: absolute; 
 | 
            right: -30px; 
 | 
            width: 48px; 
 | 
            height: 48px; 
 | 
  
 | 
            img { 
 | 
              width: 100%; 
 | 
              height: 100%; 
 | 
            } 
 | 
          } 
 | 
  
 | 
          .item { 
 | 
            width: 50%; 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
  
 | 
            .label { 
 | 
              flex-shrink: 0; 
 | 
              font-size: 26px; 
 | 
              font-weight: 400; 
 | 
              color: #666666; 
 | 
              flex-shrink: 0; 
 | 
            } 
 | 
  
 | 
            .nr { 
 | 
              flex: 1; 
 | 
              display: flex; 
 | 
              align-items: center; 
 | 
  
 | 
              input { 
 | 
                width: 130px; 
 | 
                height: 40px; 
 | 
                border-radius: 8px; 
 | 
                border: 1PX solid #E5E5E5; 
 | 
                margin-right: 10px; 
 | 
              } 
 | 
  
 | 
              span { 
 | 
                font-size: 26px; 
 | 
                font-weight: 400; 
 | 
                color: #222222; 
 | 
              } 
 | 
            } 
 | 
          } 
 | 
        } 
 | 
      } 
 | 
    } 
 | 
  } 
 | 
  
 | 
  .page_zw { 
 | 
    height: 160px; 
 | 
  } 
 | 
  
 | 
  .page_footer { 
 | 
    position: fixed; 
 | 
    bottom: 0; 
 | 
    left: 0; 
 | 
    width: 100%; 
 | 
    padding: 0 30px 68px 30px; 
 | 
    box-sizing: border-box; 
 | 
    display: flex; 
 | 
    align-items: center; 
 | 
    justify-content: space-between; 
 | 
  
 | 
    .page_footer_smck { 
 | 
      width: 334px; 
 | 
      height: 88px; 
 | 
      border: none; 
 | 
      background: #FFFFFF; 
 | 
      box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08); 
 | 
      border-radius: 8px; 
 | 
      font-size: 32px; 
 | 
      font-weight: 500; 
 | 
      color: $nav-color; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: center; 
 | 
  
 | 
      img { 
 | 
        width: 30px; 
 | 
        height: 30px; 
 | 
        margin-right: 10px; 
 | 
      } 
 | 
    } 
 | 
  
 | 
    .page_footer_qrck { 
 | 
      // width: 334px; 
 | 
      flex: 1; 
 | 
      height: 88px; 
 | 
      border: none; 
 | 
      background: $nav-color; 
 | 
      box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08); 
 | 
      border-radius: 8px; 
 | 
      font-size: 32px; 
 | 
      font-weight: 500; 
 | 
      color: #FFFFFF; 
 | 
      display: flex; 
 | 
      align-items: center; 
 | 
      justify-content: center; 
 | 
    } 
 | 
  } 
 | 
}</style> 
 |