|
|
|
<template>
|
|
|
|
<u-navbar title="人工上架" bgColor='#D3832A' leftIconColor='#ffffff' titleStyle='color:#ffffff' placeholder
|
|
|
|
:autoBack="true" leftIconSize='35'></u-navbar>
|
|
|
|
<image mode="widthFix" class="bgimg" src="/pagesHome/static/bgby.png"></image>
|
|
|
|
<view class="scanqcview">
|
|
|
|
<image src="/pagesHome/static/scanqc.png"></image>
|
|
|
|
<view>请直接扫描库位码</view>
|
|
|
|
</view>
|
|
|
|
<view class="topviewbox">
|
|
|
|
<view class="oebox">
|
|
|
|
<image src="/pagesHome/static/changku.png"></image>
|
|
|
|
<view>
|
|
|
|
{{(reqobj.warehouseName||'')+'-'+(reqobj.areaTitle||'')+'-'+(reqobj.shelfTitle||"")+'排'+(reqobj.positionInfo||'')}}
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="contview">
|
|
|
|
<view>
|
|
|
|
<view>
|
|
|
|
<image src="/pagesHome/static/uname.png"></image>
|
|
|
|
<view>仓库名称</view>
|
|
|
|
</view>
|
|
|
|
<view>{{reqobj.warehouseName}}</view>
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
<view>
|
|
|
|
<image src="/pagesHome/static/changkuquyu.png"></image>
|
|
|
|
<view>仓库区域</view>
|
|
|
|
</view>
|
|
|
|
<view>{{reqobj.areaTitle}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="numbox">
|
|
|
|
<view>
|
|
|
|
<view>
|
|
|
|
<view>订单总数</view>
|
|
|
|
<view>{{reqobj.totalNum||0}}</view>
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
<view>订单单数</view>
|
|
|
|
<view>{{reqobj.orderNum||0}}</view>
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
<view>库存品总数</view>
|
|
|
|
<view>{{reqobj.stockTotalNum||0}}</view>
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
<view>库存品数</view>
|
|
|
|
<view>{{reqobj.stockNum||0}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="tabchecklist">
|
|
|
|
<view @click="setstate(1)" :class="checkstate==1?'xz':''">
|
|
|
|
<view>待上架数据</view>
|
|
|
|
<view></view>
|
|
|
|
</view>
|
|
|
|
<view @click="setstate(2)" :class="checkstate==2?'xz':''">
|
|
|
|
<view>库位数据</view>
|
|
|
|
<view></view>
|
|
|
|
</view>
|
|
|
|
<view @click="setstate(3)" :class="checkstate==3?'xz':''">
|
|
|
|
<view>库位托盘</view>
|
|
|
|
<view></view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="scview">
|
|
|
|
<scroll-view class="sclcs" scroll-y="true">
|
|
|
|
<view class="visc">
|
|
|
|
<view class="item1" v-for="item in uplistarr" v-if="checkstate==1">
|
|
|
|
<view class="tpbx" v-if="item.goodsType==0">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>包条码:{{item.orderPackageCode}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx" v-if="item.goodsType==0" @click.stop="goorderdetail(item)">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>订单号:{{item.orderCode}}</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 定制品 -->
|
|
|
|
<template v-if="item.goodsType === 1">
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>服务号:{{item.serviceNum}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx" @click.stop="goorderdetail(item)">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>订单号:{{item.orderCode}}</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<!-- 零担 -->
|
|
|
|
<template v-else-if="item.goodsType === 2">
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>运单号:{{item.waybillNo}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>订单号:{{item.orderCode}}</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<!-- 库存品 -->
|
|
|
|
<template v-else-if="item.goodsType === 3">
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>物料编码:{{item.materialCode}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>物料名称:{{item.materialName }}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>订单号:{{item.orderCode || '暂无数据'}}</view>
|
|
|
|
</view>
|
|
|
|
<!-- <view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>商场名称:{{item.marketName || '暂无数据'}}</view>
|
|
|
|
</view> -->
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>批次号:{{item.incomingBatch}}</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>总包数:{{item.totalNumber}}</view>
|
|
|
|
<view>上架数:{{item.enterNum}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="item2" v-for="item in datalist" v-if="checkstate==2">
|
|
|
|
<view class="tpbx" v-if="item.goodsType==0">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>包条码:{{item.orderPackageCode}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx" v-if="item.goodsType==0" @click.stop="goorderdetail(item)">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>订单号:{{item.orderCode}}</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 定制品 -->
|
|
|
|
<template v-if="item.goodsType === 1">
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>服务号:{{item.serviceNum}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx" @click.stop="goorderdetail(item)">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>订单号:{{item.orderCode}}</view>
|
|
|
|
</view>
|
|
|
|
<!-- <view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>仓库地址:{{dtilobj.warehouseName}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>库位信息:{{dtilobj.areaTitle + '-' + dtilobj.allocationTitle}}</view>
|
|
|
|
</view> -->
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<!-- 零担 -->
|
|
|
|
<template v-else-if="item.goodsType === 2">
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>运单号:{{item.waybillNo}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>订单号:{{item.orderCode}}</view>
|
|
|
|
</view>
|
|
|
|
<!-- <view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>仓库地址:{{dtilobj.warehouseName}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>库位信息:{{dtilobj.areaTitle + '-' + dtilobj.allocationTitle}}</view>
|
|
|
|
</view> -->
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<!-- 库存品 -->
|
|
|
|
<template v-else-if="item.goodsType === 3">
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>物料编码:{{item.materialCode}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>物料名称:{{item.materialName}}</view>
|
|
|
|
</view>
|
|
|
|
<!-- <view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>仓库地址:{{dtilobj.warehouseName}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>库位信息:{{dtilobj.areaTitle + '-' + dtilobj.allocationTitle}}</view>
|
|
|
|
</view> -->
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>订单号:{{item.orderCode}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>商场名称:{{item.marketName}}</view>
|
|
|
|
</view>
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>批次号:{{item.incomingBatch}}</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<view class="tpbx">
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view class="flex-c-sb" style="flex: 1">
|
|
|
|
<view>总包数:{{item.totalNum}}</view>
|
|
|
|
<view>上架数:{{item.shelfNum}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="downloadBtn" @click="handleDownLoad(item)">
|
|
|
|
下架
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<image v-if="Number(details.upshelfScanType)!=3" class="qtimgzt"
|
|
|
|
:src="item.totalNum==item.shelfNum?'/pagesHome/static/qitao.png':'/pagesHome/static/weiqitao.png'">
|
|
|
|
</image>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="item1" v-if="checkstate==3&&reqobj.trayCode">
|
|
|
|
<view>
|
|
|
|
<image src="/pagesHome/static/kuweiicon.png"></image>
|
|
|
|
<view>托盘码:{{reqobj.trayCode + `(${reqobj.trayName})`}}</view>
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
<image src="/pagesHome/static/scanicon.png"></image>
|
|
|
|
<view>扫码包数:{{reqobj.trayNum}}</view>
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
<view class="downloadBtn" @click="handleDownLoadByTray">
|
|
|
|
下架
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</scroll-view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="butbox">
|
|
|
|
<view @click="setshowstate(2)">
|
|
|
|
{{upshelfScanType=='1'?'添加运单':upshelfScanType=='2'?'添加订单':upshelfScanType=='3'?'添加物料':'添加物料'}}
|
|
|
|
</view>
|
|
|
|
<view @click="uplist">上架</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="tanchuangbg" v-if="showstate">
|
|
|
|
<view class="inputbox" @click.stop.prevent v-if="showstate==2">
|
|
|
|
<view class="makinp" @click="checkmake" v-if="details.upshelfScanType=='3'||details.upshelfScanType=='4'">
|
|
|
|
{{Marketlist[checkmakindex]?.marketName||'没有商场'}}
|
|
|
|
</view>
|
|
|
|
<view class="inputscan">
|
|
|
|
<input
|
|
|
|
:placeholder="'输入'+(details.upshelfScanType=='1'?'运单号':details.upshelfScanType=='2'?'订单自编号':details.upshelfScanType=='3'?'物料编号':'物料名称')"
|
|
|
|
v-model="waybillCode" />
|
|
|
|
<view class="scanbt" @click="scanlist">搜索</view>
|
|
|
|
</view>
|
|
|
|
<scroll-view scroll-y="true" class="scvbw">
|
|
|
|
<view class="scboxitem">
|
|
|
|
<view class="items" @click="setchecl(index)" v-for="(item,index) in codelist">
|
|
|
|
<template v-if="details.upshelfScanType === 3 || details.upshelfScanType === 4">
|
|
|
|
<view class="type1s">
|
|
|
|
<view>
|
|
|
|
<view class="title">物料编码:</view>
|
|
|
|
<view>{{item.materialCode||'暂无数据'}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="type1s">
|
|
|
|
<view>
|
|
|
|
<view class="title">物料名称:</view>
|
|
|
|
<view>{{item.materialName||'暂无数据'}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<view class="type1s">
|
|
|
|
<view>
|
|
|
|
<view>订单号:</view>
|
|
|
|
<view>{{item.orderCode}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="type1s">
|
|
|
|
<view>
|
|
|
|
<view class="title">剩余件数:</view>
|
|
|
|
<view>{{item.residueNumber||0}}件</view>
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
<view class="title">总件数:</view>
|
|
|
|
<view>{{item.totalNumber||0}}件</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="type1s">
|
|
|
|
<view>
|
|
|
|
<view class="title">物料编码:</view>
|
|
|
|
<view>{{item.materialCode||'暂无数据'}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="type1s">
|
|
|
|
<view>
|
|
|
|
<view class="title">物料名称:</view>
|
|
|
|
<view>{{item.materialName||'暂无数据'}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="type1s">
|
|
|
|
<view>
|
|
|
|
<view class="title">批次号:</view>
|
|
|
|
<view>{{item.incomingBatch||'暂无数据'}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="rksu" @click.stop.prevent>
|
|
|
|
<view>
|
|
|
|
<view class="title">上架数:</view>
|
|
|
|
<input placeholder="请输入上架数" v-model="item.enterNum" @input="inputNum(item)" />
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="lisbite" v-if="checkinarr.indexOf(index)!=-1">
|
|
|
|
<view class="itembox" v-for="ite in item.list">
|
|
|
|
<view>库位:
|
|
|
|
<text v-if="ite.areaName">{{ite.areaName}}</text>
|
|
|
|
<text v-if="ite.allocationName">{{'-'+ite.allocationName}}</text>
|
|
|
|
</view>
|
|
|
|
<view>托盘码:{{ite.trayCode + `(${ite.trayName})`}}</view>
|
|
|
|
<view>数量:{{ite.num}}</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</scroll-view>
|
|
|
|
<view class="btx">
|
|
|
|
<view class="cancel" @click="setshowstate(0)">取消</view>
|
|
|
|
<view class="confirm" @click="confirmlist">确认</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<!-- #ifdef APP -->
|
|
|
|
<saomiao2 :ishidestop="scanState !== 0"></saomiao2>
|
|
|
|
<!-- #endif -->
|
|
|
|
<tips ref="tip"></tips>
|
|
|
|
<tiplist ref="tiplists"></tiplist>
|
|
|
|
|
|
|
|
<!-- 下架 -- 包条 -->
|
|
|
|
<PopUp ref="downLoadByOrder">
|
|
|
|
<view class="downLoadByOrder_control">
|
|
|
|
<!-- 全选 -->
|
|
|
|
<image
|
|
|
|
v-show="chooseOrderPackageCodeList.length === details.orderPackageCodeList.length&&chooseOrderPackageCodeList.length !== 0"
|
|
|
|
src="/pagesHome/static/downcheck.png" @click="handleCloseCheck"></image>
|
|
|
|
|
|
|
|
<!-- 部分选 -->
|
|
|
|
<image v-show="
|
|
|
|
chooseOrderPackageCodeList.length !== details.orderPackageCodeList.length
|
|
|
|
&& chooseOrderPackageCodeList.length > 0
|
|
|
|
" src="/pagesHome/static/miniqc.png" @click="handleCheckAll"></image>
|
|
|
|
|
|
|
|
<!-- 全未选 -->
|
|
|
|
<image v-show="chooseOrderPackageCodeList.length === 0" src="/pagesHome/static/downnocheck.png"
|
|
|
|
@click="handleCheckAll"></image>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<scroll-view scroll-y="true" style="height: 35vh;">
|
|
|
|
<block v-for="item in details.orderPackageCodeList" :key="item.code">
|
|
|
|
<view class="downloadRow" @click="handleCheck(item)">
|
|
|
|
<image v-if="!item.checked" src="/pagesHome/static/downnocheck.png"></image>
|
|
|
|
<image v-if="item.checked" src="/pagesHome/static/downcheck.png"></image>
|
|
|
|
<view>{{item.code}}</view>
|
|
|
|
</view>
|
|
|
|
</block>
|
|
|
|
</scroll-view>
|
|
|
|
</PopUp>
|
|
|
|
|
|
|
|
<!-- 下架 -- 库存品 || 零担 -->
|
|
|
|
<PopUp ref="downLoadByStock">
|
|
|
|
<view style="word-break: break-all;">
|
|
|
|
<text>
|
|
|
|
{{details.stockItem.goodsType === 2?'运单号': '物料名称'}}:
|
|
|
|
</text>
|
|
|
|
<text>
|
|
|
|
{{details.stockItem.goodsType === 2?details.stockItem.waybillNo: details.stockItem.materialName }}
|
|
|
|
</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="mt10">
|
|
|
|
<text>
|
|
|
|
上架数:
|
|
|
|
</text>
|
|
|
|
<text>
|
|
|
|
{{details.stockItem.shelfNum}}
|
|
|
|
</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="downLoadByStock_row mt10">
|
|
|
|
<view>
|
|
|
|
下架数:
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<input v-model="details.enterNum" type="number" />
|
|
|
|
</view>
|
|
|
|
</PopUp>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script lang="ts" setup>
|
|
|
|
import {
|
|
|
|
warehouseTrayTypefindAllMarket,
|
|
|
|
warehouseUpdownTypeupShelfScanAllocation,
|
|
|
|
warehouseUpdownTypegetZeroOrderByCode,
|
|
|
|
warehouseUpdownTypeupShelfZeroOrder,
|
|
|
|
warehouseUpdownTypegetStockByParam,
|
|
|
|
warehouseUpdownTypeupShelfStockList,
|
|
|
|
postorderUpshelfDetailByAllocationId,
|
|
|
|
warehouseUpdownTypedownPackage,
|
|
|
|
warehouseUpdownTypedownStock,
|
|
|
|
warehouseUpdownTypedownZeroOrder,
|
|
|
|
warehouseUpdownTypedownTrayCode
|
|
|
|
} from '@/api/user.js'
|
|
|
|
import {
|
|
|
|
onLoad,
|
|
|
|
onShow,
|
|
|
|
onHide,
|
|
|
|
onPullDownRefresh
|
|
|
|
} from '@dcloudio/uni-app'
|
|
|
|
import { reactive, ref, toRefs, watchEffect } from "vue";
|
|
|
|
import utils from '@/utils/utils';
|
|
|
|
import useSystemSettingsStore from '@/store/useSystemSettingsStore';
|
|
|
|
import useStorageStore from '@/store/useStorageStore.js';
|
|
|
|
import { storeToRefs } from 'pinia';
|
|
|
|
|
|
|
|
const { scanState } = storeToRefs(useSystemSettingsStore())
|
|
|
|
const { HANDLE_ISSTORAGECODE } = useStorageStore()
|
|
|
|
|
|
|
|
// 组件实例
|
|
|
|
const tip = ref(null)
|
|
|
|
const tiplists = ref(null)
|
|
|
|
/** 下架 -- 包条 */
|
|
|
|
const downLoadByOrder = ref()
|
|
|
|
const downLoadByStock = ref()
|
|
|
|
|
|
|
|
let details = reactive({
|
|
|
|
checkstate: 1,
|
|
|
|
upshelfScanType: '',
|
|
|
|
scancode: '',
|
|
|
|
allocationId: '',//库位id
|
|
|
|
datalist: [],
|
|
|
|
reqobj: {} as any,
|
|
|
|
uplistarr: [],
|
|
|
|
showstate: 0,
|
|
|
|
waybillCode: '',
|
|
|
|
codelist: [],
|
|
|
|
Marketlist: [],
|
|
|
|
checkmakindex: 0,
|
|
|
|
checkinarr: [],
|
|
|
|
pageName: "",
|
|
|
|
/** 是否执行扫描函数 */
|
|
|
|
isScan: true,
|
|
|
|
/** 包件list */
|
|
|
|
orderPackageCodeList: [],
|
|
|
|
/** 库存品 || 零担 提交数 */
|
|
|
|
enterNum: 0,
|
|
|
|
/** 库存品 || 零担被选中的数据 */
|
|
|
|
stockItem: {}
|
|
|
|
})
|
|
|
|
|
|
|
|
/** 被选中的包件 */
|
|
|
|
const chooseOrderPackageCodeList = ref([])
|
|
|
|
|
|
|
|
onLoad((op) => {
|
|
|
|
details.pageName = op.pageName
|
|
|
|
details.upshelfScanType = op.type
|
|
|
|
if (op.pageName) utils.ttsspke(`当前上架方式为 ${op.pageName}, 请扫描货位`)
|
|
|
|
})
|
|
|
|
|
|
|
|
onShow(() => {
|
|
|
|
// #ifdef APP
|
|
|
|
uni.$off('scancodedate')
|
|
|
|
uni.$on('scancodedate', function (code) {
|
|
|
|
if (code) {
|
|
|
|
// console.log(code);
|
|
|
|
details.scancode = code
|
|
|
|
|
|
|
|
if (details.isScan) scandata()
|
|
|
|
else details.waybillCode = code
|
|
|
|
}
|
|
|
|
})
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
initmarke()
|
|
|
|
})
|
|
|
|
|
|
|
|
/* onHide(() => {
|
|
|
|
uni.$off('scancodedate')
|
|
|
|
}) */
|
|
|
|
|
|
|
|
onPullDownRefresh(() => {
|
|
|
|
const timer = setTimeout(() => {
|
|
|
|
// 重置数据
|
|
|
|
details.scancode = ''
|
|
|
|
details.allocationId = ''
|
|
|
|
details.datalist = []
|
|
|
|
details.reqobj = {}
|
|
|
|
details.uplistarr = []
|
|
|
|
details.waybillCode = ''
|
|
|
|
details.codelist = []
|
|
|
|
details.Marketlist = []
|
|
|
|
details.checkmakindex = 0
|
|
|
|
details.checkinarr = []
|
|
|
|
|
|
|
|
initmarke()
|
|
|
|
|
|
|
|
// 关闭刷新动画
|
|
|
|
uni.stopPullDownRefresh()
|
|
|
|
clearTimeout(timer)
|
|
|
|
}, 500)
|
|
|
|
})
|
|
|
|
|
|
|
|
function stop() {
|
|
|
|
|
|
|
|
}
|
|
|
|
watchEffect(() => {
|
|
|
|
if (Number(details.upshelfScanType) == 1 || Number(details.upshelfScanType) == 2) {
|
|
|
|
details.uplistarr = fn2(details.uplistarr, 'orderCode')
|
|
|
|
} else if (Number(details.upshelfScanType) == 3 || Number(details.upshelfScanType) == 4) {
|
|
|
|
details.uplistarr = fn2(details.uplistarr, 'materialCode,incomingBatch')
|
|
|
|
}
|
|
|
|
})
|
|
|
|
function goorderdetail(item) {
|
|
|
|
uni.navigateTo({
|
|
|
|
url: '/pagesHome/pages/orderDetails/orderDetails?orderCode=' + item.orderCode
|
|
|
|
})
|
|
|
|
}
|
|
|
|
function checkmake() {
|
|
|
|
let list = []
|
|
|
|
details.Marketlist.map(item => {
|
|
|
|
list.push(item?.marketName)
|
|
|
|
})
|
|
|
|
tiplists.value.setdetails({
|
|
|
|
title: '请选择商场',
|
|
|
|
isshow: true,
|
|
|
|
tipstate: 2,
|
|
|
|
list,
|
|
|
|
checklist: [],
|
|
|
|
inputtext: '',
|
|
|
|
confirmTxt: '确认选择',
|
|
|
|
isonecheck: true,
|
|
|
|
success: (deta) => {
|
|
|
|
if (deta.checklist.length == 0) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '请选择商场',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
details.checkmakindex = deta.checklist[0]
|
|
|
|
tiplists.value.setdetails({ isshow: false })
|
|
|
|
details.codelist = []
|
|
|
|
},
|
|
|
|
cancel: (details) => {
|
|
|
|
tiplists.value.setdetails({ isshow: false })
|
|
|
|
},
|
|
|
|
close: (details) => {
|
|
|
|
tiplists.value.setdetails({ isshow: false })
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
async function initmarke() {
|
|
|
|
let data = {
|
|
|
|
warehouseCode: 'LQ'
|
|
|
|
}
|
|
|
|
let res = await warehouseTrayTypefindAllMarket(data)
|
|
|
|
if (res.code !== 200) return
|
|
|
|
console.log(res.data);
|
|
|
|
details.Marketlist = res.data
|
|
|
|
}
|
|
|
|
async function scanlist() {
|
|
|
|
try {
|
|
|
|
uni.showLoading({
|
|
|
|
mask: true
|
|
|
|
})
|
|
|
|
details.codelist = []
|
|
|
|
let response = null
|
|
|
|
if (Number(details.upshelfScanType) == 1 || Number(details.upshelfScanType) == 2) {
|
|
|
|
let data = {
|
|
|
|
zeroType: Number(details.upshelfScanType) == 1 ? 2 : 1,
|
|
|
|
code: details.waybillCode
|
|
|
|
}
|
|
|
|
response = await warehouseUpdownTypegetZeroOrderByCode(data)
|
|
|
|
} else if (Number(details.upshelfScanType) == 3 || Number(details.upshelfScanType) == 4) {
|
|
|
|
let data = {
|
|
|
|
stockType: Number(details.upshelfScanType) == 3 ? 1 : 2,
|
|
|
|
value: details.waybillCode,
|
|
|
|
marketId: details.Marketlist[details.checkmakindex].marketId
|
|
|
|
}
|
|
|
|
response = await warehouseUpdownTypegetStockByParam(data)
|
|
|
|
}
|
|
|
|
if (response.code !== 200) return
|
|
|
|
|
|
|
|
if (response.data.length === 0) {
|
|
|
|
return uni.showToast({
|
|
|
|
title: '系统查不到该物料信息',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
details.codelist = response.data
|
|
|
|
details.codelist.map(item => {
|
|
|
|
item['enterNum'] = 0
|
|
|
|
return item
|
|
|
|
})
|
|
|
|
|
|
|
|
} catch (e) {
|
|
|
|
//TODO handle the exception
|
|
|
|
} finally {
|
|
|
|
uni.hideLoading()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function confirmlist() {
|
|
|
|
details.codelist.map(item => {
|
|
|
|
if (item.enterNum > 0 && item.enterNum <= item.residueNumber) {
|
|
|
|
item.marketId = details.Marketlist[details.checkmakindex].marketId
|
|
|
|
details.uplistarr.push(item)
|
|
|
|
// details.uplistarr.map((it,index)=>{
|
|
|
|
// if(item.orderCode==it.orderCode){
|
|
|
|
// details.uplistarr.splice(index,1,item)
|
|
|
|
// }else if(item.materialCode==it.materialCode){
|
|
|
|
// details.uplistarr.splice(index,1,item)
|
|
|
|
// }
|
|
|
|
// })
|
|
|
|
}
|
|
|
|
})
|
|
|
|
details.uplistarr = fn2(details.uplistarr, 'materialCode,incomingBatch')
|
|
|
|
details.showstate = 0
|
|
|
|
details.codelist = []
|
|
|
|
details.waybillCode = ''
|
|
|
|
details.isScan = true
|
|
|
|
}
|
|
|
|
function setshowstate(state : number) {
|
|
|
|
details.showstate = state
|
|
|
|
if (details.showstate !== 0) details.isScan = false
|
|
|
|
else details.isScan = true
|
|
|
|
}
|
|
|
|
async function scandata() {
|
|
|
|
if (!details.isScan) return
|
|
|
|
//是否有库位id,有库位ID就扫描包条码否则只能扫描库位码
|
|
|
|
// if (Number(details.upshelfScanType) == 1 || Number(details.upshelfScanType) == 2) {
|
|
|
|
|
|
|
|
// }
|
|
|
|
const { scancode } = details
|
|
|
|
if (!HANDLE_ISSTORAGECODE(scancode)) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '请扫描库位码',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke('请扫描库位码')
|
|
|
|
// #endif
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
let data = {
|
|
|
|
allocationId: scancode,
|
|
|
|
}
|
|
|
|
let res = await warehouseUpdownTypeupShelfScanAllocation(data)
|
|
|
|
console.log(res);
|
|
|
|
if (res.code == 200) {
|
|
|
|
details.reqobj = res.data
|
|
|
|
const _positionArr = details.reqobj.allocationTitle.split('-')
|
|
|
|
details.reqobj.positionInfo = _positionArr[0] + '层' + _positionArr[1] + '列'
|
|
|
|
details.allocationId = res.data.allocationId
|
|
|
|
details.datalist = (res.data?.list) || []
|
|
|
|
// 清除扫描数据
|
|
|
|
// details.uplistarr = []
|
|
|
|
|
|
|
|
console.log('details.pageName.slice(0, details.pageName.length - 3) :>> ', details.pageName);
|
|
|
|
// utils.ttsspke('请输入' + details.pageName.slice(0, details.pageName.length - 2))
|
|
|
|
} else {
|
|
|
|
uni.showToast({
|
|
|
|
title: res.msg,
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
function uplist() {
|
|
|
|
if (details.uplistarr.length == 0) {
|
|
|
|
let content = ''
|
|
|
|
let msg = ''
|
|
|
|
if (details.allocationId === '') {
|
|
|
|
content = '请先扫描库位'
|
|
|
|
msg = '请先扫描库位'
|
|
|
|
}
|
|
|
|
else if (Number(details.upshelfScanType) == 4) {
|
|
|
|
content = '请先扫描托盘码'
|
|
|
|
msg = '请先扫描托盘码'
|
|
|
|
} else {
|
|
|
|
content = '请先扫描包件数据'
|
|
|
|
msg = '请先扫描包件'
|
|
|
|
}
|
|
|
|
uni.showToast({
|
|
|
|
title: content,
|
|
|
|
icon: "none"
|
|
|
|
})
|
|
|
|
utils.ttsspke(msg)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// 计算扫描件数总数
|
|
|
|
// const _totalShelfNum = uplistarr.value.reduce((curr, item) => curr + item.shelfNum, 0)
|
|
|
|
|
|
|
|
// utils.ttsspke(`当前待上架${_totalShelfNum}件, 是否进行上架`)
|
|
|
|
|
|
|
|
tip.value.setdetails({
|
|
|
|
title: '提示',
|
|
|
|
content: '确认上架?',
|
|
|
|
confirmTxt: '确认',
|
|
|
|
isshow: true,
|
|
|
|
isshowcancel: true,
|
|
|
|
success: async () => {
|
|
|
|
try {
|
|
|
|
uni.showLoading({
|
|
|
|
mask: true,
|
|
|
|
title: '上架中'
|
|
|
|
})
|
|
|
|
let res
|
|
|
|
details.uplistarr.map(item => {
|
|
|
|
if (item.enterNum > item.totalNumber) {
|
|
|
|
item.enterNum = item.totalNumber
|
|
|
|
}
|
|
|
|
})
|
|
|
|
if (Number(details.upshelfScanType) == 1 || Number(details.upshelfScanType) == 2) {
|
|
|
|
let data = {
|
|
|
|
allocationId: details.allocationId,
|
|
|
|
upShelfZeroOrderList: details.uplistarr,
|
|
|
|
}
|
|
|
|
res = await warehouseUpdownTypeupShelfZeroOrder(data)
|
|
|
|
} else if (Number(details.upshelfScanType) == 3 || Number(details.upshelfScanType) == 4) {
|
|
|
|
let data = {
|
|
|
|
allocationId: details.allocationId,
|
|
|
|
upShelfStockList: details.uplistarr,
|
|
|
|
}
|
|
|
|
res = await warehouseUpdownTypeupShelfStockList(data)
|
|
|
|
}
|
|
|
|
|
|
|
|
const { code } = res
|
|
|
|
if (code !== 200) return
|
|
|
|
details.uplistarr = []
|
|
|
|
|
|
|
|
tip.value.setisshow(false)
|
|
|
|
} catch (e) {
|
|
|
|
//TODO handle the exception
|
|
|
|
} finally {
|
|
|
|
// 关闭loading
|
|
|
|
uni.hideLoading()
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
cancel: () => {
|
|
|
|
tip.value.setisshow(false)
|
|
|
|
},
|
|
|
|
close: () => {
|
|
|
|
tip.value.setisshow(false)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
function setchecl(index : number) {
|
|
|
|
if (details.checkinarr.indexOf(index) == -1) {
|
|
|
|
details.checkinarr.push(index)
|
|
|
|
} else {
|
|
|
|
details.checkinarr.splice(details.checkinarr.indexOf(index), 1)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function setstate(state : number) {
|
|
|
|
details.checkstate = state
|
|
|
|
}
|
|
|
|
//去重
|
|
|
|
function fn2(tempArr, fnname : string) {
|
|
|
|
// 根据筛选条件组成的数组
|
|
|
|
const _fnnameArr = fnname.split(',')
|
|
|
|
console.log('_fnnameArr :>> ', _fnnameArr);
|
|
|
|
console.log('tempArr :>> ', tempArr);
|
|
|
|
|
|
|
|
let result = [];
|
|
|
|
tempArr.map((item) => {
|
|
|
|
if (result.length == 0) {
|
|
|
|
item.enterNum = Number(item.enterNum)
|
|
|
|
result.push(item)
|
|
|
|
} else {
|
|
|
|
/* let ckindex = -1
|
|
|
|
result.map((ite, index) => {
|
|
|
|
if (ite[fnname] == item[fnname]) {
|
|
|
|
ckindex = index
|
|
|
|
}
|
|
|
|
}) */
|
|
|
|
|
|
|
|
const _ckindex = result.findIndex(ite => {
|
|
|
|
return _fnnameArr.every(key => {
|
|
|
|
console.log('key :>> ', key);
|
|
|
|
console.log('ite[key] == item[key] :>> ', ite[key] == item[key]);
|
|
|
|
return ite[key] == item[key]
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
console.log('_ckindex :>> ', _ckindex);
|
|
|
|
|
|
|
|
|
|
|
|
if (_ckindex != -1) {
|
|
|
|
result[_ckindex].enterNum += Number(item.enterNum)
|
|
|
|
} else {
|
|
|
|
item.enterNum = Number(item.enterNum)
|
|
|
|
result.push(item)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
console.log('result :>> ', result);
|
|
|
|
return result;
|
|
|
|
};
|
|
|
|
|
|
|
|
// 输入防抖并限制输入数字的最大和最小值
|
|
|
|
let isClick = null
|
|
|
|
function inputNum(item) {
|
|
|
|
console.log('item :>> ', item);
|
|
|
|
if (isClick) clearTimeout(isClick)
|
|
|
|
isClick = setTimeout(() => {
|
|
|
|
item.enterNum = parseInt(item.enterNum)
|
|
|
|
// 当值不是数字为NaN时, item.enterNum为0
|
|
|
|
if (item.enterNum !== item.enterNum) item.enterNum = 0
|
|
|
|
// 最大限制
|
|
|
|
if (item.enterNum >= item.residueNumber) item.enterNum = item.residueNumber
|
|
|
|
// 最小限制
|
|
|
|
if (item.enterNum <= 0) item.enterNum = 0
|
|
|
|
clearTimeout(isClick)
|
|
|
|
}, 200)
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 按托盘下架 */
|
|
|
|
const handleDownLoadByTray = () => {
|
|
|
|
if (!details.reqobj.trayCode) return uni.showToast({
|
|
|
|
title: '托盘数据有存在异常',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
|
|
|
|
tip.value.setdetails({
|
|
|
|
title: '提示',
|
|
|
|
content: '确认下架?',
|
|
|
|
confirmTxt: '确认',
|
|
|
|
isshow: true,
|
|
|
|
isshowcancel: true,
|
|
|
|
success: async () => {
|
|
|
|
let res : any = null
|
|
|
|
const data = {
|
|
|
|
trayCode: details.reqobj.trayCode
|
|
|
|
}
|
|
|
|
res = await warehouseUpdownTypedownTrayCode(data, { isShowLoading: true })
|
|
|
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
// utils.ttsspke(`成功上架${_totalShelfNum}件`)
|
|
|
|
details.uplistarr = []
|
|
|
|
details.scancode = details.allocationId
|
|
|
|
details.allocationId = ''
|
|
|
|
scandata()
|
|
|
|
}
|
|
|
|
|
|
|
|
tip.value.setisshow(false)
|
|
|
|
},
|
|
|
|
cancel: () => {
|
|
|
|
tip.value.setisshow(false)
|
|
|
|
},
|
|
|
|
close: () => {
|
|
|
|
tip.value.setisshow(false)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 移除待上架数据 */
|
|
|
|
const handleRemove = (index : number) => {
|
|
|
|
details.uplistarr.splice(index, 1)
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 下架 -- 订单 -- 全选 */
|
|
|
|
const handleCheckAll = () => {
|
|
|
|
const _arr = []
|
|
|
|
|
|
|
|
for (let iterator of details.orderPackageCodeList) {
|
|
|
|
iterator.checked = true
|
|
|
|
_arr.push(iterator.code)
|
|
|
|
}
|
|
|
|
|
|
|
|
chooseOrderPackageCodeList.value = _arr
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 下架 -- 订单 -- 全部取消选择 */
|
|
|
|
const handleCloseCheck = () => {
|
|
|
|
chooseOrderPackageCodeList.value = []
|
|
|
|
|
|
|
|
for (let iterator of details.orderPackageCodeList) {
|
|
|
|
iterator.checked = false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 下架 -- 订单 -- 单个点击 */
|
|
|
|
const handleCheck = (item) => {
|
|
|
|
if (item.checked) chooseOrderPackageCodeList.value.splice(chooseOrderPackageCodeList.value.indexOf(item.code), 1)
|
|
|
|
else chooseOrderPackageCodeList.value.push(item.code)
|
|
|
|
|
|
|
|
item.checked = !item.checked
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/** 下架库位中订单内包件 */
|
|
|
|
const handleDownLoadByOrder = async (item : any) => {
|
|
|
|
console.log('item :>> ', item);
|
|
|
|
|
|
|
|
const res = await postorderUpshelfDetailByAllocationId({
|
|
|
|
orderCode: item.orderCode,
|
|
|
|
allocationId: details.allocationId
|
|
|
|
})
|
|
|
|
|
|
|
|
if (res.code !== 200) return
|
|
|
|
|
|
|
|
details.orderPackageCodeList = res.data && res.data.map(val => {
|
|
|
|
return {
|
|
|
|
code: val,
|
|
|
|
checked: true
|
|
|
|
}
|
|
|
|
}) || []
|
|
|
|
|
|
|
|
chooseOrderPackageCodeList.value = res.data || []
|
|
|
|
|
|
|
|
downLoadByOrder.value.setDetails({
|
|
|
|
title: '包件下架',
|
|
|
|
showPopUp: true,
|
|
|
|
async success() {
|
|
|
|
if (details.orderPackageCodeList.length === 0) return uni.showToast({
|
|
|
|
title: '没有需要下架的数据',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
|
|
|
|
if (chooseOrderPackageCodeList.value.length === 0) return uni.showToast({
|
|
|
|
title: '最少选择一条需要下架的数据',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
|
|
|
|
const submitData = {
|
|
|
|
upShelfPackageList: chooseOrderPackageCodeList.value.map((val) => {
|
|
|
|
return { orderPackageCode: val }
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
const res = await warehouseUpdownTypedownPackage(submitData)
|
|
|
|
if (res.code !== 200) return
|
|
|
|
|
|
|
|
details.scancode = details.allocationId
|
|
|
|
scandata()
|
|
|
|
downLoadByOrder.value.details.showPopUp = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 下架库位中零担 || 库存品 */
|
|
|
|
const handleDownLoadByStock = async (item : any) => {
|
|
|
|
const content = item.goodsType === 2 ? '零担下架' : '库存品下架'
|
|
|
|
details.stockItem = item
|
|
|
|
details.enterNum = item.shelfNum
|
|
|
|
|
|
|
|
downLoadByStock.value.setDetails({
|
|
|
|
title: content,
|
|
|
|
showPopUp: true,
|
|
|
|
async success() {
|
|
|
|
let content = ''
|
|
|
|
|
|
|
|
if (!utils.isNumber(details.enterNum)) {
|
|
|
|
content = '请输入数字'
|
|
|
|
} else {
|
|
|
|
// 去除小数位
|
|
|
|
details.enterNum = Math.floor(details.enterNum)
|
|
|
|
|
|
|
|
if (details.enterNum <= 0) content = '请输入大于0的数量'
|
|
|
|
else if (details.enterNum > details.stockItem.shelfNum) content = '不能大于上架数量'
|
|
|
|
}
|
|
|
|
|
|
|
|
if (content) return uni.showToast({
|
|
|
|
title: content,
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
|
|
|
|
let res = {}
|
|
|
|
|
|
|
|
if (details.stockItem.goodsType === 2) {
|
|
|
|
// 零担下架
|
|
|
|
const data = {
|
|
|
|
upShelfZeroOrderList: [
|
|
|
|
{
|
|
|
|
waybillCode: details.stockItem.waybillNo,
|
|
|
|
orderCode: details.stockItem.orderCode,
|
|
|
|
enterNum: details.enterNum,
|
|
|
|
allocationId: details.allocationId,
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
res = await warehouseUpdownTypedownZeroOrder(data)
|
|
|
|
} else {
|
|
|
|
//
|
|
|
|
const data = {
|
|
|
|
upShelfStockList: [{
|
|
|
|
marketId: details.stockItem.marketId,
|
|
|
|
materialCode: details.stockItem.materialCode,
|
|
|
|
incomingBatch: details.stockItem.incomingBatch,
|
|
|
|
enterNum: details.enterNum,
|
|
|
|
allocationId: details.allocationId,
|
|
|
|
}]
|
|
|
|
}
|
|
|
|
res = await warehouseUpdownTypedownStock(data)
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log('res :>> ', res);
|
|
|
|
|
|
|
|
if (res.code !== 200) return
|
|
|
|
|
|
|
|
details.scancode = details.allocationId
|
|
|
|
scandata()
|
|
|
|
downLoadByStock.value.details.showPopUp = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
const handleDownLoad = (item) => {
|
|
|
|
const { goodsType } = item
|
|
|
|
|
|
|
|
if (goodsType === 0 || goodsType === 1) handleDownLoadByOrder(item)
|
|
|
|
else if (goodsType === 2) handleDownLoadByStock(item)
|
|
|
|
else if (goodsType === 3) handleDownLoadByStock(item)
|
|
|
|
}
|
|
|
|
|
|
|
|
const {
|
|
|
|
checkinarr,
|
|
|
|
checkmakindex,
|
|
|
|
Marketlist,
|
|
|
|
codelist,
|
|
|
|
waybillCode,
|
|
|
|
showstate,
|
|
|
|
uplistarr,
|
|
|
|
checkstate,
|
|
|
|
upshelfScanType,
|
|
|
|
allocationId,
|
|
|
|
datalist,
|
|
|
|
reqobj
|
|
|
|
} = toRefs(details)
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
.tanchuangbg {
|
|
|
|
width: 100%;
|
|
|
|
height: 100%;
|
|
|
|
position: fixed;
|
|
|
|
z-index: 99;
|
|
|
|
left: 0;
|
|
|
|
top: 0;
|
|
|
|
background-color: #00000050;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
transition: all 1s;
|
|
|
|
|
|
|
|
.makinp {
|
|
|
|
width: 590upx;
|
|
|
|
border: 2upx solid #00000020;
|
|
|
|
color: #020B18;
|
|
|
|
box-sizing: border-box;
|
|
|
|
margin-bottom: 10upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
font-size: 28upx;
|
|
|
|
padding: 10upx 20upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.inputbox {
|
|
|
|
width: 670upx;
|
|
|
|
// height: 600upx;
|
|
|
|
background-color: #ffffff;
|
|
|
|
box-sizing: border-box;
|
|
|
|
border-radius: 10upx;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
padding: 30upx;
|
|
|
|
|
|
|
|
.inputscan {
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-around;
|
|
|
|
|
|
|
|
>input {
|
|
|
|
width: 440upx;
|
|
|
|
height: 64upx;
|
|
|
|
border: 2upx solid #092C4D30;
|
|
|
|
border-radius: 8upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
font-size: 28upx;
|
|
|
|
padding: 0upx 20upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
.scanbt {
|
|
|
|
width: 128upx;
|
|
|
|
height: 64upx;
|
|
|
|
background: #D3832A;
|
|
|
|
border-radius: 8upx;
|
|
|
|
opacity: 1;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
font-size: 30upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #FFFFFF;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.scvbw {
|
|
|
|
width: 100%;
|
|
|
|
height: 450upx;
|
|
|
|
margin-top: 30upx;
|
|
|
|
|
|
|
|
.scboxitem {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
.items {
|
|
|
|
width: 590upx;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
box-shadow: 0upx 2upx 10upx 0upx #e2e2e3;
|
|
|
|
margin-top: 10upx;
|
|
|
|
padding: 20upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
>.lisbite {
|
|
|
|
width: 100%;
|
|
|
|
// display: flex;
|
|
|
|
// align-items: center;
|
|
|
|
// justify-content: center;
|
|
|
|
|
|
|
|
// position: absolute;
|
|
|
|
>.itembox {
|
|
|
|
width: 100%;
|
|
|
|
margin-bottom: 20upx;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: flex-start;
|
|
|
|
justify-content: space-between;
|
|
|
|
font-size: 28upx;
|
|
|
|
color: #020B18;
|
|
|
|
border: 2upx solid #D3832A;
|
|
|
|
padding: 10upx 20upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
border-radius: 20upx;
|
|
|
|
color: #D3832A;
|
|
|
|
|
|
|
|
&:last-child {
|
|
|
|
margin-bottom: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view {
|
|
|
|
word-wrap: break-word;
|
|
|
|
word-break: break-all;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
>.type1s {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
margin-bottom: 20upx;
|
|
|
|
|
|
|
|
.title {
|
|
|
|
white-space: nowrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view {
|
|
|
|
flex: 1;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
font-size: 28upx;
|
|
|
|
|
|
|
|
>view:nth-of-type(1) {
|
|
|
|
color: #90A0AF;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view:nth-of-type(2) {
|
|
|
|
color: #092C4D;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.rksu {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
margin-bottom: 20upx;
|
|
|
|
|
|
|
|
>view {
|
|
|
|
// width: 50%;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
font-size: 28upx;
|
|
|
|
|
|
|
|
>view:nth-of-type(1) {
|
|
|
|
color: #90A0AF;
|
|
|
|
}
|
|
|
|
|
|
|
|
>input {
|
|
|
|
width: 200upx;
|
|
|
|
padding: 0 15upx;
|
|
|
|
border: 2upx solid #00000020;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.btx {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-around;
|
|
|
|
margin-top: 50upx;
|
|
|
|
|
|
|
|
>view {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
width: 260upx;
|
|
|
|
height: 76upx;
|
|
|
|
border-radius: 7upx;
|
|
|
|
font-size: 28upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
>.cancel {
|
|
|
|
background-color: #F5F5F6;
|
|
|
|
color: #5A6875;
|
|
|
|
margin-right: 20upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
>.confirm {
|
|
|
|
background-color: #D3832A;
|
|
|
|
color: #FFFFFF;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.butbox {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
margin-top: 15upx;
|
|
|
|
|
|
|
|
>view {
|
|
|
|
width: 320upx;
|
|
|
|
height: 96upx;
|
|
|
|
background: #D3832A;
|
|
|
|
border-radius: 20upx;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
color: #FFFFFF;
|
|
|
|
font-size: 32upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
|
|
|
&:nth-last-child(1) {
|
|
|
|
margin-left: 30upx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.sclcs {
|
|
|
|
width: 686upx;
|
|
|
|
height: 27vh;
|
|
|
|
margin: auto;
|
|
|
|
|
|
|
|
.visc {
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
.item1 {
|
|
|
|
width: 686upx;
|
|
|
|
padding: 0 24upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
background-color: #FFFFFF;
|
|
|
|
border-radius: 30upx;
|
|
|
|
position: relative;
|
|
|
|
margin-bottom: 30upx;
|
|
|
|
|
|
|
|
&:nth-last-child(1) {
|
|
|
|
margin-bottom: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.removeicons {
|
|
|
|
position: absolute;
|
|
|
|
right: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.qtimgzt {
|
|
|
|
width: 96upx;
|
|
|
|
height: 96upx;
|
|
|
|
position: absolute;
|
|
|
|
right: 0;
|
|
|
|
top: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// >view:nth-last-child(1){
|
|
|
|
// border-bottom: none !important;
|
|
|
|
// }
|
|
|
|
>view {
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
padding: 18upx 24upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
border-bottom: 4upx solid #EEEEEE;
|
|
|
|
|
|
|
|
&:nth-last-child(1) {
|
|
|
|
border-bottom: 0upx solid #EEEEEE00 !important;
|
|
|
|
}
|
|
|
|
|
|
|
|
>image {
|
|
|
|
width: 32upx;
|
|
|
|
height: 32upx;
|
|
|
|
margin-right: 15upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view {
|
|
|
|
font-size: 28upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #020B18;
|
|
|
|
word-wrap: break-word;
|
|
|
|
word-break: break-all;
|
|
|
|
|
|
|
|
.numb {
|
|
|
|
font-size: 28upx;
|
|
|
|
color: #178AF2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.item2 {
|
|
|
|
width: 686upx;
|
|
|
|
padding: 0 24upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
background-color: #FFFFFF;
|
|
|
|
border-radius: 30upx;
|
|
|
|
position: relative;
|
|
|
|
margin-bottom: 30upx;
|
|
|
|
|
|
|
|
.qtimgzt {
|
|
|
|
width: 96upx;
|
|
|
|
height: 96upx;
|
|
|
|
position: absolute;
|
|
|
|
right: 0;
|
|
|
|
top: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
>.tpbx {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
padding: 18upx 24upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
border-bottom: 4upx solid #EEEEEE;
|
|
|
|
|
|
|
|
>image {
|
|
|
|
width: 32upx;
|
|
|
|
height: 32upx;
|
|
|
|
margin-right: 15upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view {
|
|
|
|
font-size: 28upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #020B18;
|
|
|
|
|
|
|
|
.numb {
|
|
|
|
font-size: 28upx;
|
|
|
|
color: #178AF2;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
>.viewnum {
|
|
|
|
height: 100upx;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-around;
|
|
|
|
|
|
|
|
>view {
|
|
|
|
font-size: 28upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #020B18;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.tabchecklist {
|
|
|
|
width: 684upx;
|
|
|
|
height: 100upx;
|
|
|
|
margin: auto;
|
|
|
|
margin-top: 30upx;
|
|
|
|
margin-bottom: 20upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-around;
|
|
|
|
|
|
|
|
.xz {
|
|
|
|
>view:nth-of-type(1) {
|
|
|
|
color: #D3832A !important;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view:nth-of-type(2) {
|
|
|
|
background-color: #D3832A !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
>view {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
>view:nth-of-type(1) {
|
|
|
|
font-size: 32upx;
|
|
|
|
font-weight: 400;
|
|
|
|
margin-bottom: 20upx;
|
|
|
|
color: #020B18;
|
|
|
|
transition: all 0.2s;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view:nth-of-type(2) {
|
|
|
|
width: 96upx;
|
|
|
|
height: 8upx;
|
|
|
|
background-color: #D3832A00;
|
|
|
|
border-radius: 4upx;
|
|
|
|
transition: all 0.2s;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.topviewbox {
|
|
|
|
width: 686upx;
|
|
|
|
// height: 456upx;
|
|
|
|
background: #FFFFFF;
|
|
|
|
border-radius: 20upx 20upx 20upx 20upx;
|
|
|
|
opacity: 1;
|
|
|
|
box-sizing: border-box;
|
|
|
|
position: relative;
|
|
|
|
margin: auto;
|
|
|
|
margin-top: 20upx;
|
|
|
|
|
|
|
|
>.oebox {
|
|
|
|
padding: 20upx 25upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
border-bottom: 4upx solid #EEEEEE;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
|
|
|
|
>view {
|
|
|
|
font-size: 32upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #020B18;
|
|
|
|
}
|
|
|
|
|
|
|
|
>image {
|
|
|
|
width: 32upx;
|
|
|
|
height: 32upx;
|
|
|
|
margin-right: 14upx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.numbox {
|
|
|
|
width: 100%;
|
|
|
|
padding: 20upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
>view {
|
|
|
|
width: 640upx;
|
|
|
|
height: 160upx;
|
|
|
|
background: #F5F7FB;
|
|
|
|
border-radius: 8upx 8upx 8upx 8upx;
|
|
|
|
opacity: 1;
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-around;
|
|
|
|
|
|
|
|
>view {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
&:nth-of-type(1) {
|
|
|
|
>view:nth-of-type(2) {
|
|
|
|
color: #FF9545 !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&:nth-of-type(2) {
|
|
|
|
>view:nth-of-type(2) {
|
|
|
|
color: #178AF2 !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
>view:nth-of-type(1) {
|
|
|
|
font-size: 28upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #020B18;
|
|
|
|
margin-bottom: 18upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view:nth-of-type(2) {
|
|
|
|
font-size: 36upx;
|
|
|
|
font-weight: 400;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
>.contview {
|
|
|
|
display: flex;
|
|
|
|
flex-direction: column;
|
|
|
|
width: 100%;
|
|
|
|
padding: 20upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
>view {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: flex-start;
|
|
|
|
margin-bottom: 20upx;
|
|
|
|
|
|
|
|
&:nth-last-child(1) {
|
|
|
|
margin-bottom: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view:nth-of-type(1) {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
margin-right: 30upx;
|
|
|
|
|
|
|
|
>image {
|
|
|
|
width: 48upx;
|
|
|
|
height: 48upx;
|
|
|
|
margin-right: 12upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view {
|
|
|
|
font-size: 28upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #020B18;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
>view:nth-of-type(2) {
|
|
|
|
font-size: 28upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #020B18;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.bgimg {
|
|
|
|
position: absolute;
|
|
|
|
left: 0;
|
|
|
|
top: 0;
|
|
|
|
width: 100%;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
.scanqcview {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: center;
|
|
|
|
position: relative;
|
|
|
|
margin-top: 10upx;
|
|
|
|
|
|
|
|
>image {
|
|
|
|
width: 72upx;
|
|
|
|
height: 72upx;
|
|
|
|
margin-right: 16upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view {
|
|
|
|
font-size: 32upx;
|
|
|
|
font-weight: 400;
|
|
|
|
color: #FFFFFF;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 下架按钮
|
|
|
|
.downloadBtn {
|
|
|
|
flex: none;
|
|
|
|
width: fit-content;
|
|
|
|
background: var(--subjectColor);
|
|
|
|
color: #fff !important;
|
|
|
|
margin: 10upx auto;
|
|
|
|
padding: 20upx 40upx;
|
|
|
|
font-size: 0.9rem;
|
|
|
|
border-radius: 10upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 下架 -- 包件
|
|
|
|
.downloadRow {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
padding: 18upx 24upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
border-bottom: 4upx solid #EEEEEE;
|
|
|
|
|
|
|
|
image {
|
|
|
|
flex: none;
|
|
|
|
width: 52upx;
|
|
|
|
height: 52upx;
|
|
|
|
margin-right: 15upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
>view {
|
|
|
|
font-size: 0.9rem;
|
|
|
|
font-weight: bold;
|
|
|
|
color: #020B18;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.downLoadByOrder_control {
|
|
|
|
>image {
|
|
|
|
width: 52upx;
|
|
|
|
height: 52upx;
|
|
|
|
margin-left: 20upx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 零担 || 库存品下架
|
|
|
|
.downLoadByStock_row {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
>view {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 0.9rem;
|
|
|
|
}
|
|
|
|
|
|
|
|
>input {
|
|
|
|
flex: 1;
|
|
|
|
background: #F4F8FB;
|
|
|
|
padding: 10upx 20upx;
|
|
|
|
border-radius: 10upx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.mt10 {
|
|
|
|
margin-top: 20upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.flex-c-sb {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
}
|
|
|
|
</style>
|