<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> 
 |