|
|
|
<template>
|
|
|
|
<BasicContainer ref="basicContainer" :option="option" :leftClick="leftClick">
|
|
|
|
<template #head>
|
|
|
|
<view class="head">
|
|
|
|
<!-- 顶部 -->
|
|
|
|
<view class="head_top">
|
|
|
|
<input type="text" v-model="details.searchCode" placeholder="请输入包条码" class="head_top_search" />
|
|
|
|
<view class="button" @click="handleSearch">确认</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- tabBar选项卡 -->
|
|
|
|
<view class="tabBar">
|
|
|
|
<view :class="{'tabBar-item': true, 'active': tabBarCode === 1}" @click="handleTabBarCode(1)">
|
|
|
|
有数据
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 无包条数据 -->
|
|
|
|
<view :class="{'tabBar-item': true, 'active': tabBarCode === 2}" @click="handleTabBarCode(2)">
|
|
|
|
无数据
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 控件 -->
|
|
|
|
<view class="control">
|
|
|
|
<template v-if="!showControl">
|
|
|
|
<view class="button" @click.stop="handleShowControl(1)" v-show="!showControl && tabBarCode === 1">状态修改
|
|
|
|
</view>
|
|
|
|
<!-- 合同号盘点时, 暂不支持新增 -->
|
|
|
|
<view class="button" @click.stop="handleAddZero"
|
|
|
|
v-show="!showControl && tabBarCode !== 1 && details.pageType !== 3">添加零担
|
|
|
|
</view>
|
|
|
|
<view class="button" @click.stop="handleAddStock"
|
|
|
|
v-show="!showControl && tabBarCode !== 1 && details.pageType !== 3">添加物料
|
|
|
|
</view>
|
|
|
|
<view class="button" @click.stop="handleShowControl(2)" v-show="!showControl">批量删除</view>
|
|
|
|
<view class="button" @click.stop="handleShowControl(3)"
|
|
|
|
v-show="!showControl && details.pageType !== 2 ">批量上架</view>
|
|
|
|
<view class="button" @click.stop="handleShowControl(4)" v-show="!showControl && tabBarCode === 1">批量盘点
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template v-else>
|
|
|
|
<view class="button" @click.stop="handleCheckAll">全选</view>
|
|
|
|
<view class="button" @click.stop="handleInvertSelection">反选</view>
|
|
|
|
<view class="button" @click.stop="handleClose">
|
|
|
|
取消
|
|
|
|
</view>
|
|
|
|
<view class="button" @click.stop="handleConFirm">
|
|
|
|
确认
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="checkInfo">
|
|
|
|
<view class="checkInfo_item">
|
|
|
|
<text>已盘数量/总数:</text>
|
|
|
|
<text>{{details.scanNum + '/' + (details.orderList.length + details.stockList.length)}}</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="checkInfo_item">
|
|
|
|
<!-- 随机盘点 -->
|
|
|
|
<template v-if="details.pageType === 1">
|
|
|
|
<text>订单号:</text>
|
|
|
|
<text>{{details.scanNum + '/' + details.totalNum}}</text>
|
|
|
|
</template>
|
|
|
|
<!-- 按库位盘点 -->
|
|
|
|
<template v-else-if="details.pageType === 2">
|
|
|
|
<text>库位号:</text>
|
|
|
|
<text>{{details.pageInfos.positionCode}}</text>
|
|
|
|
</template>
|
|
|
|
<!-- 按合同号盘点 -->
|
|
|
|
<template v-else-if="details.pageType === 3">
|
|
|
|
<text>合同号:</text>
|
|
|
|
<text>{{details.pageInfos.orderCode}}</text>
|
|
|
|
</template>
|
|
|
|
<!-- 按托盘盘点 -->
|
|
|
|
<template v-else-if="details.pageType === 4">
|
|
|
|
<text>托盘名称:</text>
|
|
|
|
<text>{{details.pageInfos.trayName || '暂无数据'}}</text>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template #body>
|
|
|
|
<!-- 主体内容 -->
|
|
|
|
<view class="main">
|
|
|
|
<!-- <scroll-view class="scvmabx" @scrolltolower='()=>{}' scroll-y="true" @touchmove.stop="()=>{}"> -->
|
|
|
|
<scroll-view class="scvmabx" scroll-y="true">
|
|
|
|
<!-- 有数据 -->
|
|
|
|
<block v-for="item in details.renderList" :key="item">
|
|
|
|
<!-- 定制品 -->
|
|
|
|
<view :class="{
|
|
|
|
'main_render': true,
|
|
|
|
'active': false,
|
|
|
|
'delete': false,
|
|
|
|
'edit': false
|
|
|
|
}">
|
|
|
|
<view @click.stop="handleItemChoose(item)" v-show="showControl">
|
|
|
|
<!-- 被选中 -->
|
|
|
|
<image v-show="item.isChoose" src="@/static/ck.png" class="main_render_checkImg" mode="">
|
|
|
|
</image>
|
|
|
|
<!-- 不被选中 -->
|
|
|
|
<image v-show="!item.isChoose" src="@/static/nock.png" class="main_render_checkImg" mode="">
|
|
|
|
</image>
|
|
|
|
</view>
|
|
|
|
<view class="main_render_container">
|
|
|
|
<!-- 有数据 -->
|
|
|
|
<template v-if="tabBarCode === 1">
|
|
|
|
<view class="main_render_item" @click="handleShowDetails(item)">
|
|
|
|
<view>
|
|
|
|
包条码: {{item.orderPackageCode || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
<view v-if="details.pageType !== 3"
|
|
|
|
:style="{color : (item.isManuallyAdd ? '#f00' : '#000')}" @click="editOrderCode(item)">
|
|
|
|
合同号: {{item.orderCode || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<!-- 零担 -->
|
|
|
|
<template v-else-if="tabBarCode === 2 && Number(item.questTarget) === 2">
|
|
|
|
<view class="main_render_item" :style="{color : (item.isManuallyAdd ? '#f00' : '#000')}"
|
|
|
|
@click="editZero(item)">
|
|
|
|
<view>
|
|
|
|
运单号: {{item.waybillNumber || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
<view v-if="details.pageType !== 3">
|
|
|
|
合同号: {{item.orderCode || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<!-- 库存品 -->
|
|
|
|
<template v-if="tabBarCode === 2 && Number(item.questTarget) === 3"
|
|
|
|
:style="{color : (item.isManuallyAdd ? '#f00' : '#000')}" @click="editOrderCode(item)">
|
|
|
|
<view class="main_render_item">
|
|
|
|
<view>
|
|
|
|
物料编码: {{item.materialCode || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
<view v-if="details.pageType !== 3">
|
|
|
|
合同号: {{item.orderCode || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<view class="main_render_item">
|
|
|
|
<view>
|
|
|
|
库位: {{item.positionCode || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
<template v-if="tabBarCode !== 1">
|
|
|
|
<view style="width: 65%; flex: none; margin: 0 5px;">
|
|
|
|
<!-- <view> -->
|
|
|
|
物品名称: {{item.materialName || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
<view>
|
|
|
|
数量: {{item.maxNum || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template v-else>
|
|
|
|
<view>
|
|
|
|
状态:
|
|
|
|
{{(details.stateArr.find(val => val.code === Number(item.cargoName)) || {}).title || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="main_render_item">
|
|
|
|
<template v-if="tabBarCode !== 1">
|
|
|
|
<view>
|
|
|
|
状态:
|
|
|
|
{{(details.stateArr.find(val => val.code === Number(item.cargoName)) || {}).title || '暂无数据' }}
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<view class="">
|
|
|
|
类型: <text
|
|
|
|
class="main_render_item_type">{{details.typeArr.find(val => val.code === Number(item.questTarget)).title}}</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="">
|
|
|
|
盘点状态:
|
|
|
|
<text :class="{
|
|
|
|
'main_render_item_type': true,
|
|
|
|
'active': Number(item.questStatus) !== 1
|
|
|
|
}">
|
|
|
|
{{details.checkStatus.find(val => val.code === Number(item.questStatus)).title}}
|
|
|
|
</text>
|
|
|
|
</view>
|
|
|
|
<view class="button_box">
|
|
|
|
<view class="button" @click="handleState(item)">
|
|
|
|
处理
|
|
|
|
</view>
|
|
|
|
<view class="button" v-if='details.pageType !== 4 && details.pageType !== 2'
|
|
|
|
@click="handleItemUp(item)">
|
|
|
|
上架
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</block>
|
|
|
|
<view class="main_footer">
|
|
|
|
|
|
|
|
</view>
|
|
|
|
</scroll-view>
|
|
|
|
<!-- 提交 -->
|
|
|
|
<button @click="submitCheck" class="submitButton" type="primary">提交盘点</button>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</BasicContainer>
|
|
|
|
|
|
|
|
<!-- 弹出层 -- 上架 -->
|
|
|
|
<PopUp ref="popUp_Up">
|
|
|
|
<view class="popUpTitle">
|
|
|
|
请扫描新的库位码,如果该货物已在其它库位,使用该功能会重新绑定库位
|
|
|
|
</view>
|
|
|
|
<!-- <input class="popUpInput" v-model="details.scancode" type="text" placeholder="请扫描货位码" disabled /> -->
|
|
|
|
<view class="popUpInfo">
|
|
|
|
货位信息: {{details.positionInfo.positionCode || '暂无数据'}}
|
|
|
|
</view>
|
|
|
|
</PopUp>
|
|
|
|
|
|
|
|
<!-- 弹出层 -- 状态修改 -->
|
|
|
|
<PopUp ref="popUp_EditState">
|
|
|
|
<view class="popUp_EditState_container">
|
|
|
|
<block v-for="(item, index) in details.stateArr" :key="item">
|
|
|
|
<view :class="{popUp_row: true, mr10: index % 2 === 0}">
|
|
|
|
<view class="popUp_row_item" @click.stop="handleCheck(item)">
|
|
|
|
<!-- 被选中 -->
|
|
|
|
<image v-show="item.isCheck" src="@/static/check.png" class="popUp_row_checkImg" mode=""></image>
|
|
|
|
<!-- 不被选中 -->
|
|
|
|
<image v-show="!item.isCheck" src="@/static/nocheck.png" class="popUp_row_checkImg" mode="">
|
|
|
|
</image>
|
|
|
|
<view class="popUp_row_title">{{item.title}}</view>
|
|
|
|
</view>
|
|
|
|
<!-- 输入框 -->
|
|
|
|
<input :class="{input: true, active: item.isCheck}" type="number" @blur="() => inputNum(item, index)"
|
|
|
|
:disabled=" !item.isCheck" v-model="item.value" />
|
|
|
|
<!-- <template v-if="tabBarCode === 2 && item.code !== 10">
|
|
|
|
<input :class="{input: true, active: item.isCheck}" type="number" @blur="() => inputNum(item, index)"
|
|
|
|
:disabled="item.disabled || !item.isCheck" v-model="item.value" />
|
|
|
|
</template> -->
|
|
|
|
|
|
|
|
<!-- 在库数 -->
|
|
|
|
<!-- <template v-else-if="tabBarCode === 2 && item.code === 10">
|
|
|
|
<view :class="{input: true, active: item.isCheck}">
|
|
|
|
{{item.maxNum - details.stateArr[2].value - details.stateArr[4].value - details.stateArr[5].value}}
|
|
|
|
</view>
|
|
|
|
</template> -->
|
|
|
|
</view>
|
|
|
|
</block>
|
|
|
|
</view>
|
|
|
|
</PopUp>
|
|
|
|
|
|
|
|
<!-- 弹出层 -- 删除 / 盘点 -->
|
|
|
|
<PopUp ref="popUp_Handle"></PopUp>
|
|
|
|
|
|
|
|
<!-- 弹出层 -- 是否移托 -->
|
|
|
|
<PopUp ref="popUp_RemoveTary">
|
|
|
|
<view class="">
|
|
|
|
包条码: {{details.removeTray.orderPackageCode}}
|
|
|
|
</view>
|
|
|
|
<view class="">
|
|
|
|
该包条绑定托盘: {{details.removeTray.trayCode}}
|
|
|
|
</view>
|
|
|
|
<view class="">
|
|
|
|
本托盘: {{details.pageInfos.trayCode}}
|
|
|
|
</view>
|
|
|
|
</PopUp>
|
|
|
|
|
|
|
|
<!-- 弹出层 -- 是否移库 -->
|
|
|
|
<PopUp ref="popUp_RemoveAllocation">
|
|
|
|
<view class="">
|
|
|
|
包条码: {{details.removeTray.orderPackageCode}}
|
|
|
|
</view>
|
|
|
|
<view class="">
|
|
|
|
该包条绑定库位: {{details.removeTray.positionCode}}
|
|
|
|
</view>
|
|
|
|
<view class="">
|
|
|
|
本托盘: {{details.pageInfos.trayCode}}
|
|
|
|
</view>
|
|
|
|
</PopUp>
|
|
|
|
|
|
|
|
<!-- 弹出层 -- 新增 -->
|
|
|
|
<PopUp ref="popUp_Add">
|
|
|
|
<view class="">
|
|
|
|
包条码: {{details.scancode}}
|
|
|
|
</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.orderCode" type="text" placeholder="请输入合同号" />
|
|
|
|
<view style="
|
|
|
|
display: flex;
|
|
|
|
margin-top: 20rpx;
|
|
|
|
">
|
|
|
|
<block v-for="item in details.addType" :key="item">
|
|
|
|
<view class="popUp_row_item" @click.stop="()=>{details.addType.forEach(val => val.isCheck = !val.isCheck)}">
|
|
|
|
<!-- 被选中 -->
|
|
|
|
<image v-show="item.isCheck" src="@/static/check.png" class="popUp_row_checkImg" mode=""></image>
|
|
|
|
<!-- 不被选中 -->
|
|
|
|
<image v-show="!item.isCheck" src="@/static/nocheck.png" class="popUp_row_checkImg" mode="">
|
|
|
|
</image>
|
|
|
|
<view class="popUp_row_title">{{item.title}}</view>
|
|
|
|
</view>
|
|
|
|
</block>
|
|
|
|
</view>
|
|
|
|
</PopUp>
|
|
|
|
|
|
|
|
<!-- 弹出层 -- 新增库存品 -->
|
|
|
|
<PopUp ref="popUp_AddStock" @click="handleShowSelect(0)">
|
|
|
|
|
|
|
|
<view class="popUp_Add_row">
|
|
|
|
<view>物料名称:</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.materialName" @blur="handleShowMaterial" type="text"
|
|
|
|
placeholder="请输入物料编码或物料名称" />
|
|
|
|
<template v-if="details.materialChooseIndex === 1">
|
|
|
|
<view class="select_content">
|
|
|
|
<bolck v-for="val in details.materialNameList" :key="val">
|
|
|
|
<template v-if="val">
|
|
|
|
<view @click="()=>{
|
|
|
|
details.addInfo.materialName = val.materialName
|
|
|
|
details.addInfo.materialCode = val.materialCode
|
|
|
|
handleOrderAndBatch(val.materialCode)
|
|
|
|
handleShowSelect(0)
|
|
|
|
}">
|
|
|
|
{{val.materialName}}
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</bolck>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="popUp_Add_row">
|
|
|
|
<view>合同号:</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.orderCode" @focus="handleShowSelect(2)" type="text"
|
|
|
|
placeholder="请选择或输入合同号" />
|
|
|
|
<template v-if="details.materialChooseIndex === 2">
|
|
|
|
<view class="select_content">
|
|
|
|
|
|
|
|
<template v-if="details.marketNameList.length !== 0">
|
|
|
|
<bolck v-for="val in details.materialDataList" :key="val">
|
|
|
|
<template v-if="val">
|
|
|
|
<view @click="()=>{
|
|
|
|
handleChooseMaterial(val)
|
|
|
|
}">
|
|
|
|
{{val.orderCode}}
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</bolck>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template v-else>
|
|
|
|
<view style="text-align: center;" @click="handleShowSelect(0)">
|
|
|
|
暂无数据
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 批次号 -->
|
|
|
|
<view class="popUp_Add_row">
|
|
|
|
<view>批次号:</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.incomingBatch" @focus="handleShowSelect(3)" type="text"
|
|
|
|
placeholder="请输入选择批次号" />
|
|
|
|
<!-- <template v-if="details.materialChooseIndex === 3">
|
|
|
|
<view class="select_content">
|
|
|
|
|
|
|
|
<template v-if="details.marketNameList.length !== 0">
|
|
|
|
<bolck v-for="val in details.materialDataList" :key="val">
|
|
|
|
<template v-if="val">
|
|
|
|
<view @click="()=>{
|
|
|
|
handleChooseMaterial(val)
|
|
|
|
}">
|
|
|
|
{{val.incomingBatch}}
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</bolck>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template v-else>
|
|
|
|
<view style="text-align: center;" @click="handleShowSelect(0)">
|
|
|
|
暂无数据
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
</template> -->
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<!-- 商城 -->
|
|
|
|
<view class="popUp_Add_row">
|
|
|
|
<view>商城:</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.marketName" @blur="handleShowMarket" type="text"
|
|
|
|
placeholder="请选择商城" />
|
|
|
|
<template v-if="details.showList.showMarket">
|
|
|
|
<view :class="{'select_content': true, 'show': details.showMarket}">
|
|
|
|
<bolck v-for="val in details.marketNameList" :key="val">
|
|
|
|
<template v-if="val">
|
|
|
|
<view @click="()=>{
|
|
|
|
details.addInfo.marketName = val.clientName
|
|
|
|
details.addInfo.clientName = val.clientName
|
|
|
|
details.addInfo.marketId = val.id
|
|
|
|
details.showList.showMarket = false
|
|
|
|
}">
|
|
|
|
{{val.clientName}}
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</bolck>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
<view class="popUp_Add_row">
|
|
|
|
<view>在库数量:</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.stockNum" type="number" placeholder="请输入在库数量" />
|
|
|
|
</view>
|
|
|
|
</PopUp>
|
|
|
|
|
|
|
|
<!-- 弹出层 -- 新增零担 -->
|
|
|
|
<PopUp ref="popUp_AddZero">
|
|
|
|
<view class="popUp_Add_row">
|
|
|
|
<view>运单号:</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.waybillNumber" type="text" placeholder="请输入运单号" />
|
|
|
|
</view>
|
|
|
|
<view class="popUp_Add_row">
|
|
|
|
<view>合同号:</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.orderCode" type="text" placeholder="请输入请输入合同号" />
|
|
|
|
</view>
|
|
|
|
<view class="popUp_Add_row">
|
|
|
|
<view>物料名称:</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.materialName" type="text" placeholder="请输入物料名称" />
|
|
|
|
</view>
|
|
|
|
<view class="popUp_Add_row">
|
|
|
|
<view>数量:</view>
|
|
|
|
<input class="popUpInput" v-model="details.addInfo.stockNum" type="number" placeholder="请输入数量" />
|
|
|
|
</view>
|
|
|
|
</PopUp>
|
|
|
|
|
|
|
|
<!-- 弹出层 -- 详情 -->
|
|
|
|
<PopUp ref="popUp_Details">
|
|
|
|
<view class="popUpDetails_row">
|
|
|
|
<view class="">
|
|
|
|
<text>订单号:</text> <text>{{details.detailsInfo.orderCode}}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="popUpDetails_row">
|
|
|
|
<view class="">
|
|
|
|
<text>包条码:</text> <text>{{details.detailsInfo.orderPackageCode}}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="popUpDetails_row">
|
|
|
|
<view class="">
|
|
|
|
<text>批次号:</text> <text>{{details.detailsInfo.incomingBatch}}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="popUpDetails_row">
|
|
|
|
<view class="">
|
|
|
|
<text>库位:</text> <text>{{details.detailsInfo.positionCode}}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="popUpDetails_row">
|
|
|
|
<view class="">
|
|
|
|
<text>托盘名称:</text> <text>{{details.detailsInfo.trayName}}</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="">
|
|
|
|
<text>托盘码:</text> <text>{{details.detailsInfo.trayCode}}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="popUpDetails_row">
|
|
|
|
<view class="">
|
|
|
|
<text>商场名称:</text> <text>{{details.detailsInfo.marketName}}</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="">
|
|
|
|
<text>品牌:</text> <text>{{details.detailsInfo.brandName}}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="popUpDetails_row">
|
|
|
|
<view class="">
|
|
|
|
<text>物料名称:</text> <text>{{details.detailsInfo.materialName}}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="popUpDetails_row">
|
|
|
|
<view class="">
|
|
|
|
<text>运单号:</text> <text>{{details.detailsInfo.waybillNumber}}</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="">
|
|
|
|
<text>一级品:</text> <text>{{details.detailsInfo.firsts}}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="popUpDetails_row">
|
|
|
|
<view class="">
|
|
|
|
<text>二级品:</text> <text>{{details.detailsInfo.second}}</text>
|
|
|
|
</view>
|
|
|
|
|
|
|
|
<view class="">
|
|
|
|
<text>三级品:</text> <text>{{details.detailsInfo.thirdProduct}}</text>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</PopUp>
|
|
|
|
|
|
|
|
<!-- #ifdef APP -->
|
|
|
|
<saomiao2 :ishidestop="scanState !== 0"></saomiao2>
|
|
|
|
<!-- #endif -->
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
|
import {
|
|
|
|
onShow,
|
|
|
|
onLoad,
|
|
|
|
onHide
|
|
|
|
} from '@dcloudio/uni-app'
|
|
|
|
import { reactive, toRefs, ref, onMounted, nextTick } from "vue";
|
|
|
|
import utils from '@/utils/utils.js';
|
|
|
|
import {
|
|
|
|
getWarehouseTaskgetTaskConInfo,
|
|
|
|
postWarehouseTaskSelectPackageInfo,
|
|
|
|
postWarehouseTaskQuestDetailAllocation,
|
|
|
|
postWarehouseTaskAddDataInfo,
|
|
|
|
postqueryfindMaterialList,
|
|
|
|
pgetgetMaterialName,
|
|
|
|
getWarehouseTaskDeleteQuestChild,
|
|
|
|
postFindStockList
|
|
|
|
} from '@/api/user.js';
|
|
|
|
import useSystemSettingsStore from '@/store/useSystemSettingsStore';
|
|
|
|
import useStorageStore from '@/store/useStorageStore.js';
|
|
|
|
import { storeToRefs } from 'pinia';
|
|
|
|
const { scanState } = storeToRefs(useSystemSettingsStore())
|
|
|
|
const { HANDLE_ISSTORAGECODE } = useStorageStore()
|
|
|
|
|
|
|
|
const option = reactive({
|
|
|
|
/** 页面标题 */
|
|
|
|
title: '',
|
|
|
|
/** 页面是否有数据, 默认为有 (暂时没用) */
|
|
|
|
haveData: true,
|
|
|
|
/** 页面数据是否加载完毕, (暂时无用) */
|
|
|
|
isEnd: true,
|
|
|
|
/** 页面刷新 */
|
|
|
|
async pullDownRefreshInitPage() {
|
|
|
|
details.scanNum = 0
|
|
|
|
const res = await initPage()
|
|
|
|
if (details.tabBarCode === 1) details.renderList = details.orderList
|
|
|
|
else if (details.tabBarCode === 2) details.renderList = details.stockList
|
|
|
|
return res
|
|
|
|
},
|
|
|
|
async reachBottomInitPage() {
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
const details = reactive<any>({
|
|
|
|
/** 页面级数据 */
|
|
|
|
pageInfos: {},
|
|
|
|
/** 页面类型 1: 随机盘点; 2: 按库位盘点; 3: 按合同号盘点; 4: 按托盘盘点; */
|
|
|
|
pageType: 1,
|
|
|
|
/** 选项卡页码 */
|
|
|
|
tabBarCode: 1,
|
|
|
|
/** 搜索的码值 */
|
|
|
|
searchCode: '',
|
|
|
|
/** 是否显示控件 */
|
|
|
|
showControl: false,
|
|
|
|
/** 扫描后的值 */
|
|
|
|
scancode: '',
|
|
|
|
/** 页面渲染数组 */
|
|
|
|
renderList: [],
|
|
|
|
/** 有包条数据的数组 -- 定制品 + 部分库存品 */
|
|
|
|
orderList: [],
|
|
|
|
/** 无包条数据的数组 -- 部分库存品 + 零担 */
|
|
|
|
stockList: [],
|
|
|
|
/** 批量处理类型 1: 状态修改; 2: 批量删除; 3: 批量上架; 4: 批量盘点 */
|
|
|
|
handleType: 1,
|
|
|
|
/** 是否扫描 */
|
|
|
|
isScan: true,
|
|
|
|
/** 上架扫描 */
|
|
|
|
upScan: false,
|
|
|
|
/** 有数据新增类型 */
|
|
|
|
addType: [
|
|
|
|
{ title: '定制品', isCheck: true },
|
|
|
|
{ title: '库存品', isCheck: false },
|
|
|
|
],
|
|
|
|
/** 在库状态字典 */
|
|
|
|
stateArr: [
|
|
|
|
{
|
|
|
|
title: '盘点数',
|
|
|
|
isCheck: true,
|
|
|
|
value: 1,
|
|
|
|
code: 10,
|
|
|
|
disabled: true,
|
|
|
|
name: 'stockNum',
|
|
|
|
maxNum: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '破损',
|
|
|
|
isCheck: false,
|
|
|
|
value: 0,
|
|
|
|
code: 20,
|
|
|
|
disabled: false,
|
|
|
|
name: 'wornNum',
|
|
|
|
maxNum: 0,
|
|
|
|
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '丢失',
|
|
|
|
isCheck: false,
|
|
|
|
value: 0,
|
|
|
|
code: 30,
|
|
|
|
disabled: false,
|
|
|
|
name: 'lossNum',
|
|
|
|
maxNum: 0,
|
|
|
|
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '不可修复',
|
|
|
|
isCheck: false,
|
|
|
|
value: 0,
|
|
|
|
code: 40,
|
|
|
|
disabled: false,
|
|
|
|
name: 'noRepairNum',
|
|
|
|
maxNum: 0,
|
|
|
|
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '配送',
|
|
|
|
isCheck: false,
|
|
|
|
value: 0,
|
|
|
|
code: 50,
|
|
|
|
disabled: false,
|
|
|
|
name: 'deliveNum',
|
|
|
|
maxNum: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '未入库',
|
|
|
|
isCheck: false,
|
|
|
|
value: 0,
|
|
|
|
code: 60,
|
|
|
|
disabled: false,
|
|
|
|
name: 'noReceivedNum',
|
|
|
|
maxNum: 0,
|
|
|
|
|
|
|
|
}
|
|
|
|
],
|
|
|
|
/** 盘点状态字典表 */
|
|
|
|
checkStatus: [
|
|
|
|
{ code: 0, title: '待盘点' },
|
|
|
|
{ code: 1, title: '已盘点' },
|
|
|
|
{ code: 2, title: '未盘点' },
|
|
|
|
{ code: 3, title: '已排除' },
|
|
|
|
],
|
|
|
|
/** 类型字典表 */
|
|
|
|
typeArr: [
|
|
|
|
{ code: 1, title: '定制品' },
|
|
|
|
{ code: 2, title: '零担' },
|
|
|
|
{ code: 3, title: '库存品' },
|
|
|
|
],
|
|
|
|
/** 总数 */
|
|
|
|
totalNum: 0,
|
|
|
|
/** 已扫数量 */
|
|
|
|
scanNum: 0,
|
|
|
|
/** 上架时的库位信息 */
|
|
|
|
positionInfo: {
|
|
|
|
/** 库位码 */
|
|
|
|
positionCode: '',
|
|
|
|
/** 库位ID */
|
|
|
|
allocationId: ''
|
|
|
|
},
|
|
|
|
/** 新增内容 */
|
|
|
|
addInfo: {
|
|
|
|
/** 合同号 */
|
|
|
|
orderCode: ''
|
|
|
|
},
|
|
|
|
/** 商城名称数组 */
|
|
|
|
marketNameList: [],
|
|
|
|
/** 物料名称数组 */
|
|
|
|
materialNameList: [],
|
|
|
|
/** 物料数据数组 */
|
|
|
|
materialDataList: [],
|
|
|
|
/** 是否显示弹窗 */
|
|
|
|
materialChooseIndex: 0,
|
|
|
|
/** 是否显示下拉框 */
|
|
|
|
showList: {
|
|
|
|
showMarket: false,
|
|
|
|
showMaterial: false
|
|
|
|
},
|
|
|
|
/** 是否为全选 */
|
|
|
|
isAll: false,
|
|
|
|
/** 关闭扫描监听 */
|
|
|
|
stopScan: false,
|
|
|
|
/** 被移动的包条数据 */
|
|
|
|
removeTray: {},
|
|
|
|
/** 展示详情信息 */
|
|
|
|
detailsInfo: {},
|
|
|
|
})
|
|
|
|
|
|
|
|
// 获取组件实例
|
|
|
|
/** 基本组件 */
|
|
|
|
const basicContainer = ref(null)
|
|
|
|
/** 弹出层 -- 上架 */
|
|
|
|
const popUp_Up = ref(null)
|
|
|
|
/** 弹出层 -- 状态修改 */
|
|
|
|
const popUp_EditState = ref(null)
|
|
|
|
/** 弹出层 -- 删除 / 盘点 */
|
|
|
|
const popUp_Handle = ref(null)
|
|
|
|
/** 弹出层 -- 新增 */
|
|
|
|
const popUp_Add = ref(null)
|
|
|
|
/** 弹出层 -- 新增零担 */
|
|
|
|
const popUp_AddZero = ref(null)
|
|
|
|
/** 弹出层 -- 新增库存品 */
|
|
|
|
const popUp_AddStock = ref(null)
|
|
|
|
/** 弹出层 -- 是否移托 */
|
|
|
|
const popUp_RemoveTary = ref(null)
|
|
|
|
/** 弹出层 -- 是否移库 */
|
|
|
|
const popUp_RemoveAllocation = ref(null)
|
|
|
|
/** 弹出层 -- 详情 */
|
|
|
|
const popUp_Details = ref(null)
|
|
|
|
|
|
|
|
// 页面初始化执行回调
|
|
|
|
onLoad(async (info) => {
|
|
|
|
console.log('info :>> ', info);
|
|
|
|
const infos = JSON.parse(info.info)
|
|
|
|
console.log('object :>> ', JSON.parse(info.info));
|
|
|
|
option.title = infos.title
|
|
|
|
details.pageType = infos.pageType
|
|
|
|
details.pageInfos = infos
|
|
|
|
|
|
|
|
await nextTick()
|
|
|
|
basicContainer.value.startPullDownRefresh()
|
|
|
|
})
|
|
|
|
|
|
|
|
onShow(async () => {
|
|
|
|
// #ifdef APP
|
|
|
|
// 开启监听扫描
|
|
|
|
uni.$off('scancodedate')
|
|
|
|
uni.$on('scancodedate', function (code) {
|
|
|
|
if (code) {
|
|
|
|
// 是否接受扫描的值
|
|
|
|
if (details.stopScan) return
|
|
|
|
// 获取扫描的值
|
|
|
|
details.scancode = code
|
|
|
|
|
|
|
|
// 是否进行上架扫描
|
|
|
|
if (details.upScan) scanUp()
|
|
|
|
|
|
|
|
// 是否匹配数据
|
|
|
|
else if (details.isScan) scandata()
|
|
|
|
|
|
|
|
}
|
|
|
|
})
|
|
|
|
// #endif
|
|
|
|
// 初始化请求页面数据
|
|
|
|
// initPage()
|
|
|
|
})
|
|
|
|
|
|
|
|
/** 请求页面数据 */
|
|
|
|
async function initPage() {
|
|
|
|
try {
|
|
|
|
const orderRes = initOrder()
|
|
|
|
const stockRes = initStock()
|
|
|
|
const _promiseAll = Promise.all([orderRes, stockRes])
|
|
|
|
console.log('_promiseAll :>> ', _promiseAll);
|
|
|
|
return _promiseAll
|
|
|
|
} catch (e) {
|
|
|
|
//TODO handle the exception
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 请求页面数据 -- 有数据 */
|
|
|
|
async function initOrder() {
|
|
|
|
try {
|
|
|
|
const queryData = {
|
|
|
|
typeState: 1,
|
|
|
|
type: 2,
|
|
|
|
questType: details.pageType,
|
|
|
|
code: details.pageInfos.trayCode,
|
|
|
|
questId: details.pageInfos.questId,
|
|
|
|
questNum: details.pageInfos.questNum,
|
|
|
|
}
|
|
|
|
if (details.pageType === 2) queryData.code = details.pageInfos.allocationId
|
|
|
|
else if (details.pageType === 3) queryData.code = details.pageInfos.orderCode
|
|
|
|
else if (details.pageType === 4) queryData.code = details.pageInfos.trayCode
|
|
|
|
const res = await getWarehouseTaskgetTaskConInfo(queryData)
|
|
|
|
const { code, data } = res
|
|
|
|
if (code !== 200 || !data) return
|
|
|
|
details.orderList = data.list || []
|
|
|
|
details.orderList.forEach(val => {
|
|
|
|
if (!val.questChildVOList) val.cargoName = 10
|
|
|
|
else {
|
|
|
|
// 盘点过的数据, 排查在库状态
|
|
|
|
val.questChildVOList.forEach(item => {
|
|
|
|
if (item.questNum !== 0) val.cargoName = Number(item.cargoName)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
// 记录所有已盘点的数量
|
|
|
|
if (Number(val.questStatus) === 1) {
|
|
|
|
details.scanNum++
|
|
|
|
// 该条在系统中记录已盘点
|
|
|
|
val.isTask = true
|
|
|
|
}
|
|
|
|
|
|
|
|
// 按托盘盘点
|
|
|
|
if (details.pageType === 4) {
|
|
|
|
// 是否属于本托盘
|
|
|
|
if (val.trayId !== details.pageInfos.trayId) {
|
|
|
|
val.oldTrayId = val.trayId
|
|
|
|
val.oldTrayCode = val.trayCode
|
|
|
|
|
|
|
|
val.trayCode = details.pageInfos.trayCode
|
|
|
|
val.trayId = details.pageInfos.trayId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 按库位盘点
|
|
|
|
if (details.pageType === 2) {
|
|
|
|
// 是否属于本托盘
|
|
|
|
if (val.allocationId !== details.pageInfos.allocationId) {
|
|
|
|
val.oldAllocationId = val.allocationId
|
|
|
|
val.oldAllocation = val.positionCode
|
|
|
|
|
|
|
|
val.allocationId = details.pageInfos.allocationId
|
|
|
|
val.positionCode = details.pageInfos.positionCode
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
} catch (err) {
|
|
|
|
console.log('err :>> ', err);
|
|
|
|
//TODO handle the exception
|
|
|
|
} finally {
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 请求页面数据 -- 无数据 */
|
|
|
|
async function initStock() {
|
|
|
|
try {
|
|
|
|
const queryData = {
|
|
|
|
typeState: 2,
|
|
|
|
type: 1,
|
|
|
|
questType: details.pageType,
|
|
|
|
code: details.pageInfos.trayCode,
|
|
|
|
questId: details.pageInfos.questId,
|
|
|
|
questNum: details.pageInfos.questNum,
|
|
|
|
}
|
|
|
|
if (details.pageType === 2) queryData.code = details.pageInfos.allocationId
|
|
|
|
else if (details.pageType === 3) queryData.code = details.pageInfos.orderCode
|
|
|
|
else if (details.pageType === 4) queryData.code = details.pageInfos.trayCode
|
|
|
|
const res = await getWarehouseTaskgetTaskConInfo(queryData)
|
|
|
|
const { code, data } = res
|
|
|
|
if (code !== 200 || !data) return
|
|
|
|
details.stockList = data.list || []
|
|
|
|
// 记录所有已盘点的数量
|
|
|
|
details.stockList.forEach(val => {
|
|
|
|
val.maxNum = val.stockNum
|
|
|
|
if (!val.cargoName) val.cargoName = 10
|
|
|
|
if (Number(val.questStatus) === 1) {
|
|
|
|
details.scanNum++
|
|
|
|
val.isTask = true
|
|
|
|
}
|
|
|
|
|
|
|
|
// 按托盘盘点
|
|
|
|
if (details.pageType === 4) {
|
|
|
|
// 是否属于本托盘
|
|
|
|
if (val.trayId !== details.pageInfos.trayId) {
|
|
|
|
val.oldTrayId = val.trayId
|
|
|
|
val.oldTrayCode = val.trayCode
|
|
|
|
|
|
|
|
val.trayCode = details.pageInfos.trayCode
|
|
|
|
val.trayId = details.pageInfos.trayId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 按库位盘点
|
|
|
|
if (details.pageType === 2) {
|
|
|
|
// 是否属于本库位
|
|
|
|
console.log('details.pageInfos :>> ', details.pageInfos);
|
|
|
|
if (val.allocationId !== details.pageInfos.allocationId) {
|
|
|
|
console.log('222 :>> ', 222);
|
|
|
|
val.oldAllocationId = val.allocationId
|
|
|
|
val.oldAllocation = val.positionCode
|
|
|
|
|
|
|
|
val.allocationId = details.pageInfos.allocationId
|
|
|
|
val.positionCode = details.pageInfos.positionCode
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
} catch (err) {
|
|
|
|
console.log('err :>> ', err);
|
|
|
|
//TODO handle the exception
|
|
|
|
} finally {
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 扫描后执行的回调 -- 对比包件码 */
|
|
|
|
async function scandata() {
|
|
|
|
if (details.tabBarCode !== 1) return
|
|
|
|
|
|
|
|
// 是否扫描到已有包条
|
|
|
|
let _flag = false
|
|
|
|
for (let i = 0; i <= details.renderList.length - 1; i++) {
|
|
|
|
const _item = details.renderList[i]
|
|
|
|
// 匹配包条码, 包条码一致时更改状态
|
|
|
|
if (details.scancode === _item.orderPackageCode) {
|
|
|
|
if (Number(_item.questStatus) === 1) {
|
|
|
|
uni.showToast({
|
|
|
|
title: '重复扫描',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke('重复扫描')
|
|
|
|
// #endif
|
|
|
|
_flag = true
|
|
|
|
break
|
|
|
|
}
|
|
|
|
_item.questStatus = 1
|
|
|
|
_flag = true
|
|
|
|
details.scanNum++
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke(details.scanNum + '件')
|
|
|
|
// #endif
|
|
|
|
// 退出循环
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 扫到已有包条退出函数 || 合同号盘点时不支持新增
|
|
|
|
if (_flag) return utils.handleToast('重复扫码')
|
|
|
|
else if (details.pageType === 3) return utils.handleToast('该数据不在本合同号内')
|
|
|
|
|
|
|
|
try {
|
|
|
|
// uni.showLoading({
|
|
|
|
// title: '数据加载中',
|
|
|
|
// mask: true
|
|
|
|
// });
|
|
|
|
|
|
|
|
const queryData = {
|
|
|
|
code: details.scancode,
|
|
|
|
questId: details.pageInfos.questId,
|
|
|
|
questNum: details.pageInfos.questNum
|
|
|
|
}
|
|
|
|
|
|
|
|
// 查询包条码
|
|
|
|
const res = await postWarehouseTaskSelectPackageInfo(queryData)
|
|
|
|
console.log('res :>> ', res);
|
|
|
|
const { code, data } = res
|
|
|
|
console.log('code :>> ', code);
|
|
|
|
|
|
|
|
// 当后台查询出数据时直接添加
|
|
|
|
if (code === 200 && data && data.length !== 0) {
|
|
|
|
data.forEach(val => {
|
|
|
|
// 托盘盘点 (判断该数据是否已打托)
|
|
|
|
if (details.pageType === 4 && val.trayCode) {
|
|
|
|
details.removeTray = val
|
|
|
|
popUp_RemoveTary.value.setDetails({
|
|
|
|
title: '是否移托',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
val.questStatus = 1
|
|
|
|
details.scanNum++
|
|
|
|
val.isNew = true
|
|
|
|
if (!val.cargoName) val.cargoName = 10
|
|
|
|
|
|
|
|
val.oldTrayCode = val.trayCode
|
|
|
|
val.oldTrayId = val.trayId
|
|
|
|
|
|
|
|
val.trayCode = details.pageInfos.trayCode
|
|
|
|
val.trayId = details.pageInfos.trayId
|
|
|
|
val.isChange = true
|
|
|
|
|
|
|
|
details.orderList.push(val)
|
|
|
|
console.log('val :>> ', val);
|
|
|
|
popUp_RemoveTary.value.details.showPopUp = false
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke(details.scanNum + '件')
|
|
|
|
// #endif
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// 库位盘点 (判断该数据是否已上架)
|
|
|
|
else if (details.pageType === 2 && val.allcationId) {
|
|
|
|
details.removeAllocation = val
|
|
|
|
popUp_RemoveAllocation.value.setDetails({
|
|
|
|
title: '是否移库',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
val.questStatus = 1
|
|
|
|
details.scanNum++
|
|
|
|
val.isNew = true
|
|
|
|
if (!val.cargoName) val.cargoName = 10
|
|
|
|
|
|
|
|
val.oldAllocationId = val.allocationId
|
|
|
|
val.oldAllocation = val.positionCode
|
|
|
|
|
|
|
|
val.trayCode = details.pageInfos.trayCode
|
|
|
|
val.trayId = details.pageInfos.trayId
|
|
|
|
val.isChange = true
|
|
|
|
|
|
|
|
details.orderList.push(val)
|
|
|
|
console.log('val :>> ', val);
|
|
|
|
popUp_RemoveAllocation.value.details.showPopUp = false
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke(details.scanNum + '件')
|
|
|
|
// #endif
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
val.questStatus = 1
|
|
|
|
details.scanNum++
|
|
|
|
val.isNew = true
|
|
|
|
val.isChange = true
|
|
|
|
if (!val.cargoName) val.cargoName = 10
|
|
|
|
if (details.pageType === 2) {
|
|
|
|
val.allocationId = details.pageInfos.allocationId
|
|
|
|
val.positionCode = details.pageInfos.positionCode
|
|
|
|
|
|
|
|
val.oldAllocationId = '暂无数据'
|
|
|
|
val.oldAllocation = '暂无数据'
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (details.pageType === 4) {
|
|
|
|
val.trayCode = details.pageInfos.trayCode
|
|
|
|
val.trayId = details.pageInfos.trayId
|
|
|
|
|
|
|
|
val.oldTrayCode = '暂无数据'
|
|
|
|
val.oldTrayId = '暂无数据'
|
|
|
|
}
|
|
|
|
details.orderList.push(val)
|
|
|
|
})
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke(details.scanNum + '件')
|
|
|
|
// #endif
|
|
|
|
} else if (code === 3001) {
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke('该包件已盘点')
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
uni.showToast({
|
|
|
|
title: '该包件已盘点',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
|
|
|
else if (code === 5001) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
else if (code === 5000) {
|
|
|
|
details.addInfo.orderCode = ''
|
|
|
|
details.stopScan = true
|
|
|
|
// 手动录入新增
|
|
|
|
popUp_Add.value.setDetails({
|
|
|
|
title: '新增',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
const _order : any = {
|
|
|
|
orderPackageCode: details.scancode,
|
|
|
|
questStatus: 1,
|
|
|
|
orderCode: details.addInfo.orderCode,
|
|
|
|
positionCode: '',
|
|
|
|
cargoName: 10,
|
|
|
|
isChoose: false,
|
|
|
|
/** 为手动添加 */
|
|
|
|
isManuallyAdd: true,
|
|
|
|
/** 物料类型 */
|
|
|
|
questTarget: 1
|
|
|
|
}
|
|
|
|
if (details.pageType === 2) {
|
|
|
|
_order.allocationId = details.pageInfos.allocationId
|
|
|
|
_order.positionCode = details.pageInfos.positionCode
|
|
|
|
|
|
|
|
_order.oldAllocationId = '暂无数据'
|
|
|
|
_order.oldAllocation = '暂无数据'
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (details.pageType === 4) {
|
|
|
|
_order.trayCode = details.pageInfos.trayCode
|
|
|
|
_order.trayId = details.pageInfos.trayId
|
|
|
|
|
|
|
|
_order.oldTrayCode = '暂无数据'
|
|
|
|
_order.oldTrayId = '暂无数据'
|
|
|
|
}
|
|
|
|
const _flag = details.addType.find(val => val.isCheck).title
|
|
|
|
if (_flag === '定制品') _order.questTarget = 1
|
|
|
|
else _order.questTarget = 3
|
|
|
|
details.orderList.push(_order)
|
|
|
|
details.scanNum++
|
|
|
|
// 清空数据
|
|
|
|
details.addInfo = {}
|
|
|
|
// 关闭弹窗
|
|
|
|
popUp_Add.value.details.showPopUp = false
|
|
|
|
details.stopScan = false
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
details.stopScan = false
|
|
|
|
details.addInfo = {}
|
|
|
|
popUp_Add.value.details.showPopUp = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
console.log('err :>> ', err);
|
|
|
|
//TODO handle the exception
|
|
|
|
} finally {
|
|
|
|
// uni.hideLoading()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 扫描后执行的回调 -- 上架时扫描货位码 */
|
|
|
|
async function scanUp() {
|
|
|
|
// 库位id为纯数字, 检测是否为纯数字
|
|
|
|
if (!HANDLE_ISSTORAGECODE(details.scancode)) return utils.handleToast('请扫描库位码')
|
|
|
|
|
|
|
|
try {
|
|
|
|
uni.showLoading({
|
|
|
|
title: '数据加载中',
|
|
|
|
mask: true
|
|
|
|
});
|
|
|
|
const queryData = {
|
|
|
|
questId: details.pageInfos.questId,
|
|
|
|
allocationId: details.scancode
|
|
|
|
}
|
|
|
|
const res = await postWarehouseTaskQuestDetailAllocation(queryData)
|
|
|
|
const { code, data } = res
|
|
|
|
if (code === 200 && data) details.positionInfo = data
|
|
|
|
else {
|
|
|
|
details.positionInfo.positionCode = ''
|
|
|
|
details.positionInfo.allocationId = ''
|
|
|
|
}
|
|
|
|
} catch (e) {
|
|
|
|
//TODO handle the exception
|
|
|
|
} finally {
|
|
|
|
uni.hideLoading()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 改变选项卡激活状态
|
|
|
|
function handleTabBarCode(code : number) {
|
|
|
|
if (details.tabBarCode === code) return
|
|
|
|
details.tabBarCode = code
|
|
|
|
details.showControl = false
|
|
|
|
if (details.tabBarCode === 1) details.renderList = details.orderList
|
|
|
|
else if (details.tabBarCode === 2) details.renderList = details.stockList
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 搜索 */
|
|
|
|
const handleSearch = () => {
|
|
|
|
if (!details.searchCode) return utils.handleToast('请输入包条码')
|
|
|
|
|
|
|
|
details.scancode = details.searchCode
|
|
|
|
scandata()
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 修改合同号 */
|
|
|
|
const editOrderCode = (item : any) => {
|
|
|
|
// 是否为手动添加, 手动添加才能更改
|
|
|
|
if (!item.isManuallyAdd) return
|
|
|
|
details.addInfo.orderCode = item.orderCode
|
|
|
|
popUp_Add.value.setDetails({
|
|
|
|
title: '修改合同号',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
item.orderCode = details.addInfo.orderCode
|
|
|
|
details.addInfo.orderCode = ''
|
|
|
|
details.addInfo = {}
|
|
|
|
popUp_Add.value.details.showPopUp = false
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
details.addInfo = {}
|
|
|
|
popUp_Add.value.details.showPopUp = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 修改零担 */
|
|
|
|
const editZero = (item : any) => {
|
|
|
|
// 是否为手动添加, 手动添加才能更改
|
|
|
|
if (!item.isManuallyAdd) return
|
|
|
|
// 回显数据
|
|
|
|
details.addInfo.waybillNumber = item.waybillNumber
|
|
|
|
details.addInfo.orderCode = item.orderCode
|
|
|
|
details.addInfo.stockNum = item.stockNum
|
|
|
|
details.addInfo.materialName = item.materialName
|
|
|
|
popUp_AddZero.value.setDetails({
|
|
|
|
title: '修改零担信息',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
if (!details.addInfo.orderCode) return uni.showToast({
|
|
|
|
title: '请输入合同号',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
if (!details.addInfo.materialName) return uni.showToast({
|
|
|
|
title: '请输入物料名称',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
const _number = Number(details.addInfo.stockNum)
|
|
|
|
if (_number !== _number || _number <= 0) return uni.showToast({
|
|
|
|
title: '数量为大于0的数字',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
|
|
|
|
item.orderCode = details.addInfo.orderCode
|
|
|
|
item.waybillNumber = details.addInfo.waybillNumber
|
|
|
|
item.stockNum = _number
|
|
|
|
item.materialName = details.addInfo.materialName
|
|
|
|
item.stockNum = _number
|
|
|
|
details.addInfo.orderCode = ''
|
|
|
|
details.addInfo = {}
|
|
|
|
popUp_AddZero.value.details.showPopUp = false
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
details.addInfo = {}
|
|
|
|
popUp_AddZero.value.details.showPopUp = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 开启详情弹窗 */
|
|
|
|
const handleShowDetails = (item) => {
|
|
|
|
console.log('item :>> ', item);
|
|
|
|
// 获取需要被展示的详情的信息
|
|
|
|
details.detailsInfo = item
|
|
|
|
|
|
|
|
// 开启弹窗
|
|
|
|
popUp_Details.value.setDetails({
|
|
|
|
title: '详情',
|
|
|
|
showPopUp: true,
|
|
|
|
confirmText: '关闭'
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 开启控件区 */
|
|
|
|
const handleShowControl = (_type : number) => {
|
|
|
|
// 按托盘上架只能整托上架
|
|
|
|
if (_type === 3 && details.pageType === 4) {
|
|
|
|
// 清空扫描的值
|
|
|
|
details.scancode = ''
|
|
|
|
// 开启上架扫描
|
|
|
|
details.upScan = true
|
|
|
|
|
|
|
|
// 开启弹窗
|
|
|
|
popUp_Up.value.setDetails({
|
|
|
|
title: '批量上架',
|
|
|
|
showPopUp: true,
|
|
|
|
confirmText: '确认上架',
|
|
|
|
success() {
|
|
|
|
const { positionCode, allocationId } = details.positionInfo
|
|
|
|
let content = ''
|
|
|
|
let _number = 0
|
|
|
|
if (positionCode) {
|
|
|
|
const _arr = [...details.stockList, ...details.orderList]
|
|
|
|
|
|
|
|
for (let i = 0; i <= _arr.length - 1; i++) {
|
|
|
|
const _item = _arr[i]
|
|
|
|
if (_item.questStatus === 1) {
|
|
|
|
// 改变库位信息
|
|
|
|
_item.allocationId = allocationId
|
|
|
|
_item.positionCode = positionCode
|
|
|
|
_item.isChange = true
|
|
|
|
_number++
|
|
|
|
}
|
|
|
|
// 重置选中状态
|
|
|
|
}
|
|
|
|
if (_number !== 0) content = '上架成功' + _number + '件'
|
|
|
|
else content = '请先盘点再上架'
|
|
|
|
} else content = '上架失败, 库位数据有误'
|
|
|
|
|
|
|
|
uni.showToast({
|
|
|
|
title: content,
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke(content)
|
|
|
|
// #endif
|
|
|
|
|
|
|
|
// 重置库位信息
|
|
|
|
details.positionInfo.allocationId = ''
|
|
|
|
details.positionInfo.positionCode = ''
|
|
|
|
|
|
|
|
// 关闭弹出层
|
|
|
|
popUp_Up.value.details.showPopUp = false
|
|
|
|
details.upScan = false
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
popUp_Up.value.details.showPopUp = false
|
|
|
|
details.upScan = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
details.showControl = true
|
|
|
|
// 更改控件区操控类型
|
|
|
|
details.handleType = _type
|
|
|
|
// #ifdef APP
|
|
|
|
switch (_type) {
|
|
|
|
case 1:
|
|
|
|
utils.ttsspke('状态修改')
|
|
|
|
break
|
|
|
|
case 2:
|
|
|
|
utils.ttsspke('批量删除')
|
|
|
|
break
|
|
|
|
case 3:
|
|
|
|
utils.ttsspke('批量上架')
|
|
|
|
break
|
|
|
|
case 4:
|
|
|
|
utils.ttsspke('批量盘点')
|
|
|
|
break
|
|
|
|
}
|
|
|
|
// #endif
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 重置处理状态 */
|
|
|
|
const initState = (cargoName ?: any) => {
|
|
|
|
console.log('cargoName :>> ', cargoName);
|
|
|
|
if (details.tabBarCode === 1) {
|
|
|
|
if (cargoName) {
|
|
|
|
// 根据指定值激活状态
|
|
|
|
details.stateArr.forEach((val) => {
|
|
|
|
if (val.code === cargoName) {
|
|
|
|
val.isCheck = true
|
|
|
|
val.value = 1
|
|
|
|
|
|
|
|
if (cargoName === 20 || cargoName === 40) {
|
|
|
|
details.stateArr[0].value = 1
|
|
|
|
details.stateArr[0].isCheck = true
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
val.isCheck = false
|
|
|
|
val.value = 0
|
|
|
|
}
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
// 没有传入指定值, 重置处理状态
|
|
|
|
details.stateArr.forEach((val, index) => {
|
|
|
|
if (index === 0) {
|
|
|
|
val.isCheck = true
|
|
|
|
val.value = 1
|
|
|
|
} else {
|
|
|
|
val.isCheck = false
|
|
|
|
val.value = 0
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if (!cargoName.questChildVOList
|
|
|
|
|| cargoName.lossNum
|
|
|
|
|| cargoName.deliveNum
|
|
|
|
|| cargoName.wornNum
|
|
|
|
|| cargoName.noRepairNum
|
|
|
|
|| cargoName.noReceivedNum) {
|
|
|
|
details.stateArr.forEach((val) => {
|
|
|
|
const _value = cargoName[val.name]
|
|
|
|
console.log('val.name :>> ', val.name);
|
|
|
|
console.log('_value :>> ', _value);
|
|
|
|
val.maxNum = cargoName.maxNum
|
|
|
|
if (_value > 0 && _value) val.value = _value
|
|
|
|
else val.value = 0
|
|
|
|
})
|
|
|
|
|
|
|
|
} else {
|
|
|
|
cargoName.questChildVOList.forEach((val, index) => {
|
|
|
|
details.stateArr[index].maxNum = cargoName.maxNum
|
|
|
|
details.stateArr[index].isCheck = val.questNum === 0 ? false : true
|
|
|
|
details.stateArr[index].value = val.questNum
|
|
|
|
})
|
|
|
|
|
|
|
|
console.log('details.stateArr :>> ', details.stateArr);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 取消当前操作 */
|
|
|
|
const handleClose = () => {
|
|
|
|
details.showControl = false
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke('取消当前操作')
|
|
|
|
// #endif
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 批量修改状态 */
|
|
|
|
const batchEditState = () => {
|
|
|
|
console.log('修改')
|
|
|
|
// 重置状态
|
|
|
|
initState()
|
|
|
|
// details.showControl = true
|
|
|
|
popUp_EditState.value.setDetails({
|
|
|
|
title: '状态修改',
|
|
|
|
confirmText: '确认修改',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
const _value = details.stateArr.find(val => val.isCheck)
|
|
|
|
|
|
|
|
let _number = 0
|
|
|
|
|
|
|
|
for (let i = 0; i <= details.renderList.length - 1; i++) {
|
|
|
|
const _item = details.renderList[i]
|
|
|
|
if (_item.isChoose) {
|
|
|
|
_item.cargoName = _value.code
|
|
|
|
_number++
|
|
|
|
if (_item.questStatus !== 1) {
|
|
|
|
// 改变盘点状态
|
|
|
|
_item.questStatus = 1
|
|
|
|
details.scanNum++
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
// 重置选中状态
|
|
|
|
_item.isChoose = false
|
|
|
|
}
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke('成功修改' + _number + '件')
|
|
|
|
// #endif
|
|
|
|
// 关闭弹窗
|
|
|
|
popUp_EditState.value.details.showPopUp = false
|
|
|
|
// 改变盘点状态
|
|
|
|
details.showControl = false
|
|
|
|
console.log('111 :>> ', 111);
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 批量删除 */
|
|
|
|
const batchDelete = () => {
|
|
|
|
// 开启弹窗
|
|
|
|
popUp_Handle.value.setDetails({
|
|
|
|
title: '批量删除',
|
|
|
|
showPopUp: true,
|
|
|
|
confirmText: '确认删除',
|
|
|
|
async success() {
|
|
|
|
const submitData = { questDetailIds: [], questId: details.pageInfos.questId, questNum: details.pageInfos.questNum }
|
|
|
|
|
|
|
|
let _flag = false
|
|
|
|
|
|
|
|
details.renderList.forEach((val, index) => {
|
|
|
|
if (val.isChoose && val.questDetailId && val.isTask) submitData.questDetailIds.push(val.questDetailId)
|
|
|
|
if (!val.isTask && (val.isNew || val.isManuallyAdd)) {
|
|
|
|
// 删除新增但还未提交的数据
|
|
|
|
details.renderList.splice(index, 1)
|
|
|
|
_flag = true
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
if (submitData.questDetailIds.length === 0 && !_flag) {
|
|
|
|
popUp_Handle.value.details.showPopUp = false
|
|
|
|
return uni.showToast({
|
|
|
|
title: '无可删除数据',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
if (submitData.questDetailIds.length !== 0) {
|
|
|
|
const res = await getWarehouseTaskDeleteQuestChild(submitData)
|
|
|
|
const { code, msg } = res
|
|
|
|
if (code === 200 && msg) {
|
|
|
|
uni.showToast({
|
|
|
|
title: msg,
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
|
|
|
|
details.renderList.forEach((val) => {
|
|
|
|
if (val.isChoose && val.questDetailId && val.isTask) {
|
|
|
|
val.questStatus = 0
|
|
|
|
val.isTask = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
details.scanNum = [...details.orderList, ...details.stockList].reduce((curr, item) => {
|
|
|
|
if (item.questStatus === 1) return curr + 1
|
|
|
|
return curr
|
|
|
|
}, 0)
|
|
|
|
popUp_Handle.value.details.showPopUp = false
|
|
|
|
details.showControl = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 显示物料 */
|
|
|
|
const handleShowMaterial = async () => {
|
|
|
|
try {
|
|
|
|
if (!details.addInfo.materialName) return
|
|
|
|
const res = await postqueryfindMaterialList({ materialCode: details.addInfo.materialName })
|
|
|
|
const { code } = res
|
|
|
|
if (code !== 200 || !res.data || res.data.length === 0) return uni.showToast({
|
|
|
|
title: '暂无数据',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
details.materialNameList = res.data
|
|
|
|
// details.showList.showMaterial = true
|
|
|
|
handleShowSelect(1)
|
|
|
|
} catch (e) {
|
|
|
|
//TODO handle the exception
|
|
|
|
} finally {
|
|
|
|
uni.hideLoading()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 关闭或显示下拉框 */
|
|
|
|
const handleShowSelect = (index) => {
|
|
|
|
details.materialChooseIndex = index === details.materialChooseIndex ? 0 : index
|
|
|
|
}
|
|
|
|
|
|
|
|
const handleChooseMaterial = (item) => {
|
|
|
|
details.addInfo.orderCode = item.orderCode
|
|
|
|
details.addInfo.incomingBatch = item.incomingBatch
|
|
|
|
details.addInfo.marketName = item.marketName
|
|
|
|
details.addInfo.clientName = item.marketName
|
|
|
|
details.addInfo.marketId = item.marketId
|
|
|
|
handleShowSelect(0)
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 显示商城 */
|
|
|
|
const handleShowMarket = async () => {
|
|
|
|
if (!details.addInfo.marketName) return
|
|
|
|
try {
|
|
|
|
uni.showLoading({
|
|
|
|
title: '数据请求中',
|
|
|
|
mask: false
|
|
|
|
});
|
|
|
|
const res = await pgetgetMaterialName({ code: details.addInfo.marketName, size: 500 })
|
|
|
|
const { code } = res
|
|
|
|
if (code !== 200 || !res.data || res.data.records.length === 0) return uni.showToast({
|
|
|
|
title: '暂无数据',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
details.marketNameList = res.data.records
|
|
|
|
details.showList.showMarket = true
|
|
|
|
} catch (e) {
|
|
|
|
//TODO handle the exception
|
|
|
|
} finally {
|
|
|
|
uni.hideLoading()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 通过商城和物料编码获取合同号和批次号list */
|
|
|
|
const handleOrderAndBatch = async (code) => {
|
|
|
|
const res = await postFindStockList({
|
|
|
|
materialCode: code,
|
|
|
|
marketNames:
|
|
|
|
details.pageInfos.marketName && details.pageInfos.marketName.length !== 0 ?
|
|
|
|
details.pageInfos.marketName :
|
|
|
|
[]
|
|
|
|
})
|
|
|
|
|
|
|
|
if (res.code !== 200) return
|
|
|
|
|
|
|
|
details.materialDataList = res.data
|
|
|
|
|
|
|
|
if (res.data.length === 1) handleChooseMaterial(res.data[0])
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 批量上架 */
|
|
|
|
const batchUp = () => {
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke('请扫描库位码')
|
|
|
|
// #endif
|
|
|
|
// 清空扫描的值
|
|
|
|
details.scancode = ''
|
|
|
|
// 开启上架扫描
|
|
|
|
details.upScan = true
|
|
|
|
|
|
|
|
// 判断是否全选
|
|
|
|
details.isAll = details.renderList.every(val => val.isChoose)
|
|
|
|
|
|
|
|
let title = '批量上架'
|
|
|
|
|
|
|
|
// 开启弹窗
|
|
|
|
popUp_Up.value.setDetails({
|
|
|
|
title,
|
|
|
|
showPopUp: true,
|
|
|
|
confirmText: '确认上架',
|
|
|
|
success() {
|
|
|
|
const { positionCode, allocationId } = details.positionInfo
|
|
|
|
let _number = 0
|
|
|
|
if (!positionCode) return utils.handleToast('上架失败, 库位数据有误')
|
|
|
|
for (let i = 0; i <= details.renderList.length - 1; i++) {
|
|
|
|
const _item = details.renderList[i]
|
|
|
|
if (_item.isChoose) {
|
|
|
|
// 改变库位信息
|
|
|
|
_item.allocationId = allocationId
|
|
|
|
_item.positionCode = positionCode
|
|
|
|
_item.isChange = true
|
|
|
|
|
|
|
|
_number++
|
|
|
|
|
|
|
|
if (_item.questStatus !== 1) {
|
|
|
|
// 改变盘点状态
|
|
|
|
details.renderList[i].questStatus = 1
|
|
|
|
|
|
|
|
// 改变已盘点数
|
|
|
|
details.scanNum++
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 重置选中状态
|
|
|
|
_item.isChoose = false
|
|
|
|
}
|
|
|
|
utils.handleToast('上架成功' + _number + '件')
|
|
|
|
|
|
|
|
// 重置库位信息
|
|
|
|
details.positionInfo.allocationId = ''
|
|
|
|
details.positionInfo.positionCode = ''
|
|
|
|
|
|
|
|
// 关闭弹出层
|
|
|
|
popUp_Up.value.details.showPopUp = false
|
|
|
|
details.showControl = false
|
|
|
|
details.upScan = false
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
popUp_Up.value.details.showPopUp = false
|
|
|
|
details.upScan = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 批量盘点 */
|
|
|
|
const batchCheck = () => {
|
|
|
|
// 开启弹窗
|
|
|
|
popUp_Handle.value.setDetails({
|
|
|
|
title: '批量盘点',
|
|
|
|
showPopUp: true,
|
|
|
|
confirmText: '确认盘点',
|
|
|
|
success() {
|
|
|
|
for (let i = 0; i <= details.renderList.length - 1; i++) {
|
|
|
|
const _item = details.renderList[i]
|
|
|
|
if (_item.isChoose && _item.questStatus !== 1) {
|
|
|
|
// 改变盘点状态
|
|
|
|
details.renderList[i].questStatus = 1
|
|
|
|
|
|
|
|
// 改变已盘点数
|
|
|
|
details.scanNum++
|
|
|
|
}
|
|
|
|
// 重置选中状态
|
|
|
|
_item.isChoose = false
|
|
|
|
|
|
|
|
}
|
|
|
|
// #ifdef APP
|
|
|
|
utils.ttsspke(details.scanNum + '件')
|
|
|
|
// #endif
|
|
|
|
popUp_Handle.value.details.showPopUp = false
|
|
|
|
details.showControl = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 全选 */
|
|
|
|
const handleCheckAll = () => {
|
|
|
|
if (details.renderList.length === 0) return
|
|
|
|
for (let i = 0; i < details.renderList.length; i++) {
|
|
|
|
details.renderList[i].isChoose = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 反选 */
|
|
|
|
const handleInvertSelection = () => {
|
|
|
|
if (details.renderList.length === 0) return
|
|
|
|
for (let i = 0; i < details.renderList.length; i++) {
|
|
|
|
details.renderList[i].isChoose = !details.renderList[i].isChoose
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 复选框 */
|
|
|
|
const handleItemChoose = (_item : any) => {
|
|
|
|
_item.isChoose = !_item.isChoose
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 状态修改弹窗内按钮点击 -- 单选 */
|
|
|
|
const handleCheck = (_item : any) => {
|
|
|
|
if (details.tabBarCode === 1) {
|
|
|
|
// 有数据的情况
|
|
|
|
for (let i = 0; i < details.stateArr.length; i++) {
|
|
|
|
const _value = details.stateArr[i]
|
|
|
|
_value.value = 0
|
|
|
|
_value.isCheck = false
|
|
|
|
}
|
|
|
|
_item.isCheck = true
|
|
|
|
_item.value = 1
|
|
|
|
if (_item.title === '破损' || _item.title === '不可修复') {
|
|
|
|
details.stateArr[0].value = 1
|
|
|
|
details.stateArr[0].isCheck = true
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
console.log('details.stateArr[0].value :>> ', details.stateArr[0].value);
|
|
|
|
// 无数据
|
|
|
|
if (_item.title === '在库') return
|
|
|
|
|
|
|
|
// 当在库数为0时, 不能选择破损或不可修复
|
|
|
|
if (details.stateArr[0].value === 0 && _item.title === '破损' || details.stateArr[0].value === 0 && _item.title === '不可修复') return
|
|
|
|
|
|
|
|
_item.isCheck = !_item.isCheck
|
|
|
|
if (!_item.isCheck && _item.code !== details.stateArr[0].code) _item.value = 0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 处理 */
|
|
|
|
const handleState = (_item : any) => {
|
|
|
|
// 重置状态
|
|
|
|
if (details.tabBarCode === 1) initState(_item.cargoName)
|
|
|
|
else initState(_item)
|
|
|
|
popUp_EditState.value.setDetails({
|
|
|
|
title: '状态修改',
|
|
|
|
confirmText: '确认修改',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
if (tabBarCode.value === 1) {
|
|
|
|
for (let i = 0; i < details.stateArr.length; i++) {
|
|
|
|
if (details.stateArr[i].isCheck) _item.cargoName = details.stateArr[i].code
|
|
|
|
}
|
|
|
|
// 改变盘点状态
|
|
|
|
} else {
|
|
|
|
details.stateArr.forEach(val => {
|
|
|
|
if (val.isCheck && Number(val.value) !== 0) _item[val.name] = Number(val.value)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
console.log('_item :>> ', _item);
|
|
|
|
if (_item.questStatus !== 1) details.scanNum++
|
|
|
|
_item.questStatus = 1
|
|
|
|
// 改变已盘点数
|
|
|
|
// 关闭弹窗
|
|
|
|
popUp_EditState.value.details.showPopUp = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 上架 */
|
|
|
|
const handleItemUp = (_item : any) => {
|
|
|
|
// 获取库位码
|
|
|
|
details.scancode = _item.allocationId
|
|
|
|
details.positionInfo.positionCode = _item.positionCode
|
|
|
|
// 开启上架扫描
|
|
|
|
details.upScan = true
|
|
|
|
popUp_Up.value.setDetails({
|
|
|
|
title: '上架',
|
|
|
|
confirmText: '确认上架',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
const { allocationId, positionCode } = details.positionInfo
|
|
|
|
|
|
|
|
if (!positionCode) return utils.handleToast('上架失败, 库位数据有误')
|
|
|
|
|
|
|
|
_item.oldAllocationId = _item.allocationId
|
|
|
|
_item.oldAllocation = _item.positionCode
|
|
|
|
|
|
|
|
_item.allocationId = allocationId
|
|
|
|
_item.positionCode = positionCode
|
|
|
|
// 改变已盘点数
|
|
|
|
if (_item.questStatue !== 1) details.scanNum++
|
|
|
|
// 更改上架状态
|
|
|
|
_item.questStatus = 1
|
|
|
|
_item.isChange = true
|
|
|
|
|
|
|
|
utils.handleToast('上架成功')
|
|
|
|
|
|
|
|
// 重置库位数据
|
|
|
|
details.positionInfo.positionCode = ''
|
|
|
|
details.positionInfo.allocationId = ''
|
|
|
|
// 关闭上架扫描
|
|
|
|
popUp_Up.value.details.showPopUp = false
|
|
|
|
details.upScan = false
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
popUp_Up.value.details.showPopUp = false
|
|
|
|
details.upScan = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 新增零担 */
|
|
|
|
const handleAddZero = () => {
|
|
|
|
popUp_AddZero.value.setDetails({
|
|
|
|
title: '新增零担',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
if (!details.addInfo.orderCode) return uni.showToast({
|
|
|
|
title: '请输入合同号',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
if (!details.addInfo.materialName) return uni.showToast({
|
|
|
|
title: '请输入物料名称',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
const _number = Number(details.addInfo.stockNum)
|
|
|
|
if (_number !== _number || _number <= 0) return uni.showToast({
|
|
|
|
title: '数量为大于0的数字',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
const _order = {
|
|
|
|
questStatus: 1,
|
|
|
|
orderCode: details.addInfo.orderCode,
|
|
|
|
waybillNumber: details.addInfo.waybillNumber,
|
|
|
|
positionCode: '',
|
|
|
|
quantity: _number,
|
|
|
|
materialName: details.addInfo.materialName,
|
|
|
|
cargoName: 10,
|
|
|
|
stockNum: _number,
|
|
|
|
maxNum: _number,
|
|
|
|
isChoose: false,
|
|
|
|
/** 为手动添加 */
|
|
|
|
isManuallyAdd: true,
|
|
|
|
/** 物料类型 */
|
|
|
|
questTarget: 2
|
|
|
|
}
|
|
|
|
if (details.pageType === 2) {
|
|
|
|
_order.allocationId = details.pageInfos.allocationId
|
|
|
|
_order.positionCode = details.pageInfos.positionCode
|
|
|
|
|
|
|
|
_order.oldAllocationId = '暂无数据'
|
|
|
|
_order.oldAllocation = '暂无数据'
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (details.pageType === 4) {
|
|
|
|
_order.trayCode = details.pageInfos.trayCode
|
|
|
|
_order.trayId = details.pageInfos.trayId
|
|
|
|
|
|
|
|
_order.oldTrayCode = '暂无数据'
|
|
|
|
_order.oldTrayId = '暂无数据'
|
|
|
|
}
|
|
|
|
details.stockList.push(_order)
|
|
|
|
details.scanNum++
|
|
|
|
// 清空数据
|
|
|
|
details.addInfo = {}
|
|
|
|
// 关闭弹窗
|
|
|
|
popUp_AddZero.value.details.showPopUp = false
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
details.addInfo = {}
|
|
|
|
popUp_AddZero.value.details.showPopUp = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 新增库存品 */
|
|
|
|
const handleAddStock = () => {
|
|
|
|
popUp_AddStock.value.setDetails({
|
|
|
|
title: '新增库存品',
|
|
|
|
showPopUp: true,
|
|
|
|
success() {
|
|
|
|
if (!details.addInfo.orderCode && !details.addInfo.incomingBatch) return uni.showToast({
|
|
|
|
title: '请输入合同号或批次号',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
// if (!details.addInfo.incomingBatch) return uni.showToast({
|
|
|
|
// title: '请输入批次号',
|
|
|
|
// icon: 'none'
|
|
|
|
// })
|
|
|
|
if (!details.addInfo.clientName) return uni.showToast({
|
|
|
|
title: '请输入正确的商场',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
if (!details.addInfo.materialName) return uni.showToast({
|
|
|
|
title: '请输入物料名称',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
const _number = Number(details.addInfo.stockNum)
|
|
|
|
if (_number !== _number || _number <= 0) return uni.showToast({
|
|
|
|
title: '数量为大于0的数字',
|
|
|
|
icon: 'none'
|
|
|
|
})
|
|
|
|
const _order = {
|
|
|
|
questStatus: 1,
|
|
|
|
orderCode: details.addInfo.orderCode,
|
|
|
|
incomingBatch: details.addInfo.incomingBatch,
|
|
|
|
positionCode: '',
|
|
|
|
quantity: _number,
|
|
|
|
materialName: details.addInfo.materialName,
|
|
|
|
materialCode: details.addInfo.materialCode,
|
|
|
|
clientName: details.addInfo.clientName,
|
|
|
|
cargoName: 10,
|
|
|
|
stockNum: _number,
|
|
|
|
maxNum: _number,
|
|
|
|
isChoose: false,
|
|
|
|
/** 为手动添加 */
|
|
|
|
isManuallyAdd: true,
|
|
|
|
/** 物料类型 */
|
|
|
|
questTarget: 3
|
|
|
|
}
|
|
|
|
if (details.pageType === 2) {
|
|
|
|
_order.allocationId = details.pageInfos.allocationId
|
|
|
|
_order.positionCode = details.pageInfos.positionCode
|
|
|
|
|
|
|
|
_order.oldAllocationId = '暂无数据'
|
|
|
|
_order.oldallocation = '暂无数据'
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (details.pageType === 4) {
|
|
|
|
_order.trayCode = details.pageInfos.trayCode
|
|
|
|
_order.trayId = details.pageInfos.trayId
|
|
|
|
|
|
|
|
_order.oldTrayCode = '暂无数据'
|
|
|
|
_order.oldTrayId = '暂无数据'
|
|
|
|
}
|
|
|
|
details.stockList.push(_order)
|
|
|
|
details.scanNum++
|
|
|
|
// 清空数据
|
|
|
|
details.addInfo = {}
|
|
|
|
// 关闭弹窗
|
|
|
|
popUp_AddStock.value.details.showPopUp = false
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
details.addInfo = {}
|
|
|
|
details.materialNameList = []
|
|
|
|
details.marketNameList = []
|
|
|
|
popUp_AddStock.value.details.showPopUp = false
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 左侧返回按钮 */
|
|
|
|
const leftClick = () => {
|
|
|
|
/* popUp_Handle.value.setDetails({
|
|
|
|
title: '有数据未提交, 是否返回',
|
|
|
|
showPopUp: true,
|
|
|
|
confirmText: '确认返回 ',
|
|
|
|
success() {
|
|
|
|
uni.navigateBack()
|
|
|
|
}
|
|
|
|
}) */
|
|
|
|
uni.navigateBack()
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 确认 */
|
|
|
|
const handleConFirm = () => {
|
|
|
|
switch (details.handleType) {
|
|
|
|
case 1: // 批量修改状态
|
|
|
|
batchEditState()
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2: // 批量删除
|
|
|
|
batchDelete()
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 3: // 批量上架
|
|
|
|
batchUp()
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 4: // 批量盘点
|
|
|
|
batchCheck()
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 输入 */
|
|
|
|
const inputNum = (_item, index) => {
|
|
|
|
// console.log('index :>> ', index);
|
|
|
|
// console.log('_item :>> ', _item);
|
|
|
|
// const whiteArr = [2, 4, 5]
|
|
|
|
|
|
|
|
// let _maxNum = _item.maxNum - details.stateArr[2].value - details.stateArr[4].value - details.stateArr[5].value
|
|
|
|
|
|
|
|
// if (whiteArr.includes(index)) _maxNum += Number(details.stateArr[index].value)
|
|
|
|
|
|
|
|
// console.log('_maxNum :>> ', _maxNum);
|
|
|
|
|
|
|
|
let _number = Number(_item.value)
|
|
|
|
if (_number !== _number) return _item.value = 0
|
|
|
|
else if (_number <= 0) return _item.value = 0
|
|
|
|
// else if (_maxNum < 0) _item.value = 0
|
|
|
|
// else if (_item.value > _maxNum) _item.value = _maxNum
|
|
|
|
else _item.value = _number
|
|
|
|
}
|
|
|
|
|
|
|
|
/** 提交盘点*/
|
|
|
|
const submitCheck = async () => {
|
|
|
|
try {
|
|
|
|
if (details.orderList.length === 0 && details.stockList.length === 0) return
|
|
|
|
// 开启loading动画
|
|
|
|
uni.showLoading({
|
|
|
|
title: '提交中',
|
|
|
|
mask: true
|
|
|
|
})
|
|
|
|
// 提交信息
|
|
|
|
const submitData = {
|
|
|
|
questId: details.pageInfos.questId,
|
|
|
|
questNum: details.pageInfos.questNum,
|
|
|
|
// 在库的ids数组
|
|
|
|
questDetailIds: [],
|
|
|
|
// 其它类型组成的数组
|
|
|
|
questDetailList: []
|
|
|
|
}
|
|
|
|
details.orderList.forEach(val => {
|
|
|
|
// if (Number(val.questStatus) !== 1) return
|
|
|
|
|
|
|
|
// // 不是新增的且状态为在库
|
|
|
|
// if (!val.isManuallyAdd
|
|
|
|
// // && !val.isNew
|
|
|
|
// // && !val.isChange
|
|
|
|
// && Number(val.cargoName) === 10
|
|
|
|
// ) {
|
|
|
|
// console.log('1 :>> ', 1);
|
|
|
|
// if (!val.isChange) return
|
|
|
|
// }
|
|
|
|
submitData.questDetailIds.push(val.questDetailId)
|
|
|
|
|
|
|
|
|
|
|
|
const _item = {
|
|
|
|
/** 在库数量 */
|
|
|
|
stockNum: 1,
|
|
|
|
/** 丢失数量 */
|
|
|
|
lossNum: 0,
|
|
|
|
/** 配送数量 */
|
|
|
|
deliveNum: 0,
|
|
|
|
/** 破损数量 */
|
|
|
|
wornNum: 0,
|
|
|
|
/** 不可修复数量 */
|
|
|
|
noRepairNum: 0,
|
|
|
|
/** 未入库数量 */
|
|
|
|
noReceivedNum: 0,
|
|
|
|
id: val.questDetailId,
|
|
|
|
questId: details.pageInfos.questId,
|
|
|
|
questNum: details.pageInfos.questNum,
|
|
|
|
orderCode: val.orderCode,
|
|
|
|
orderId: val.orderId,
|
|
|
|
questType: details.pageType,
|
|
|
|
questTarget: val.questTarget,
|
|
|
|
isNew: 0
|
|
|
|
}
|
|
|
|
_item.isNew = val.isManuallyAdd ? 1 : 0
|
|
|
|
|
|
|
|
// if (val.isNew || val.isManuallyAdd) {
|
|
|
|
if (details.pageType === 2) {
|
|
|
|
if (val.oldAllocationId) {
|
|
|
|
// 上架后的新库位
|
|
|
|
_item.groundingPositionCode = val.positionCode
|
|
|
|
_item.groundingAllocationId = val.allocationId
|
|
|
|
}
|
|
|
|
|
|
|
|
// 库位盘点时, 不传托盘
|
|
|
|
delete _item.trayCode
|
|
|
|
delete _item.trayId
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (details.pageType === 3) {
|
|
|
|
if (val.oldAllocationId) {
|
|
|
|
_item.groundingPositionCode = val.positionCode
|
|
|
|
_item.groundingAllocationId = val.allocationId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (details.pageType === 4) {
|
|
|
|
if (val.oldTrayCode) {
|
|
|
|
_item.newTrayCode = val.trayCode
|
|
|
|
_item.newTrayId = val.trayId
|
|
|
|
}
|
|
|
|
|
|
|
|
// if (val.oldAllocationId) {
|
|
|
|
_item.groundingPositionCode = val.positionCode
|
|
|
|
_item.groundingAllocationId = val.allocationId
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// 托盘盘点时, 不传库位
|
|
|
|
// delete _item.groundingPositionCode
|
|
|
|
// delete _item.groundingAllocationId
|
|
|
|
}
|
|
|
|
|
|
|
|
console.log('val :>> ', val);
|
|
|
|
// }
|
|
|
|
_item.orderPackageCode = val.orderPackageCode
|
|
|
|
_item.orderPackageId = val.orderPackageId
|
|
|
|
|
|
|
|
// 不改变在库数的
|
|
|
|
const _whiteCodeArr = [10, 20, 40]
|
|
|
|
|
|
|
|
if (!_whiteCodeArr.includes(Number(val.cargoName))) _item.stockNum = 0
|
|
|
|
const _key = details.stateArr.find(value => value.code === Number(val.cargoName)).name
|
|
|
|
// 对状态赋值
|
|
|
|
_item[_key] = 1
|
|
|
|
submitData.questDetailList.push(_item)
|
|
|
|
|
|
|
|
})
|
|
|
|
details.stockList.forEach(val => {
|
|
|
|
if (Number(val.questStatus) !== 1) return
|
|
|
|
|
|
|
|
// if (!val.isManuallyAdd
|
|
|
|
// && !val.isNew
|
|
|
|
// && val.lossNum === 0
|
|
|
|
// && val.deliveNum === 0
|
|
|
|
// && val.wornNum === 0
|
|
|
|
// && val.noRepairNum === 0
|
|
|
|
// && val.noReceivedNum === 0
|
|
|
|
// && Number(val.cargoName) === 1
|
|
|
|
// // && !val.isChange
|
|
|
|
// ) {
|
|
|
|
// if (!val.isChange) return
|
|
|
|
// }
|
|
|
|
submitData.questDetailIds.push(val.questDetailId)
|
|
|
|
const _item = {
|
|
|
|
/** 在库数量 */
|
|
|
|
stockNum: val.stockNum || 0,
|
|
|
|
/** 丢失数量 */
|
|
|
|
lossNum: val.lossNum || 0,
|
|
|
|
/** 配送数量 */
|
|
|
|
deliveNum: val.deliveNum || 0,
|
|
|
|
/** 破损数量 */
|
|
|
|
wornNum: val.wornNum || 0,
|
|
|
|
/** 不可修复数量 */
|
|
|
|
noRepairNum: val.noRepairNum || 0,
|
|
|
|
/** 未入库数量 */
|
|
|
|
noReceivedNum: val.noReceivedNum || 0,
|
|
|
|
id: val.questDetailId,
|
|
|
|
questId: details.pageInfos.questId,
|
|
|
|
waybillNumber: val.waybillNumber,
|
|
|
|
quantity: val.stockNum,
|
|
|
|
materialName: val.materialName,
|
|
|
|
materialCode: val.materialCode,
|
|
|
|
orderCode: val.orderCode,
|
|
|
|
orderId: val.orderId,
|
|
|
|
questType: details.pageType,
|
|
|
|
questTarget: val.questTarget,
|
|
|
|
isNew: 0
|
|
|
|
}
|
|
|
|
// 计算在库数
|
|
|
|
_item.stockNum = val.maxNum - _item.lossNum - _item.deliveNum - _item.noReceivedNum
|
|
|
|
_item.quantity = _item.stockNum
|
|
|
|
_item.isNew = val.isManuallyAdd ? 1 : 0
|
|
|
|
|
|
|
|
// if (_item.isNew === 1) {
|
|
|
|
if (details.pageType === 2) {
|
|
|
|
if (val.oldAllocationId) {
|
|
|
|
_item.groundingPositionCode = val.positionCode
|
|
|
|
_item.groundingAllocationId = val.allocationId
|
|
|
|
}
|
|
|
|
|
|
|
|
// 库位盘点时, 不传托盘
|
|
|
|
delete _item.trayCode
|
|
|
|
delete _item.trayId
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (details.pageType === 3) {
|
|
|
|
if (val.oldAllocationId) {
|
|
|
|
_item.groundingPositionCode = val.positionCode
|
|
|
|
_item.groundingAllocationId = val.allocationId
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (details.pageType === 4) {
|
|
|
|
if (val.oldTrayId) {
|
|
|
|
_item.newTrayCode = val.trayCode
|
|
|
|
_item.newTrayId = val.trayId
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 托盘盘点时, 不传库位
|
|
|
|
// delete _item.groundingPositionCode
|
|
|
|
// delete _item.groundingAllocationId
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
submitData.questDetailList.push(_item)
|
|
|
|
|
|
|
|
})
|
|
|
|
console.log('submitData :>> ', submitData);
|
|
|
|
const res = await postWarehouseTaskAddDataInfo(submitData)
|
|
|
|
console.log('res :>> ', res);
|
|
|
|
const { code } = res
|
|
|
|
if (code === 200) {
|
|
|
|
utils.ttsspke('盘点成功')
|
|
|
|
const timer = setTimeout(() => {
|
|
|
|
// 提交成功返回上一级页面
|
|
|
|
// uni.navigateBack()
|
|
|
|
clearTimeout(timer)
|
|
|
|
}, 1000)
|
|
|
|
}
|
|
|
|
} catch (err) {
|
|
|
|
console.log('err :>> ', err);
|
|
|
|
//TODO handle the exception
|
|
|
|
} finally {
|
|
|
|
// 关闭Loading动画
|
|
|
|
uni.hideLoading()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const {
|
|
|
|
pageType,
|
|
|
|
showControl,
|
|
|
|
tabBarCode
|
|
|
|
} = toRefs(details)
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
$buttonColor: #d3832a;
|
|
|
|
|
|
|
|
// 本页按钮样式
|
|
|
|
.button {
|
|
|
|
font-size: 28upx;
|
|
|
|
padding: 10upx 20upx;
|
|
|
|
border: 1upx solid $buttonColor;
|
|
|
|
background-color: #fff;
|
|
|
|
color: #d3832a;
|
|
|
|
border-radius: 5upx;
|
|
|
|
// zoom: 90%;
|
|
|
|
}
|
|
|
|
|
|
|
|
.main,
|
|
|
|
.head {
|
|
|
|
padding: 10upx;
|
|
|
|
font-size: 28upx; // 本页字体大小
|
|
|
|
}
|
|
|
|
|
|
|
|
.head {
|
|
|
|
background: #fff;
|
|
|
|
}
|
|
|
|
|
|
|
|
.head_top {
|
|
|
|
display: flex;
|
|
|
|
// align-items: center;
|
|
|
|
justify-content: space-between;
|
|
|
|
margin: 10upx 0;
|
|
|
|
|
|
|
|
// 顶部搜索框
|
|
|
|
&_search {
|
|
|
|
flex: 1;
|
|
|
|
padding-left: 20upx;
|
|
|
|
margin-right: 20upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
height: 28upx * 2;
|
|
|
|
border-radius: 28upx;
|
|
|
|
border: 1upx solid #000;
|
|
|
|
}
|
|
|
|
|
|
|
|
.button {
|
|
|
|
background-color: $buttonColor;
|
|
|
|
color: #fff;
|
|
|
|
padding: 0 60upx;
|
|
|
|
display: inline-flex;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// tabBar选项卡
|
|
|
|
.tabBar {
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-evenly;
|
|
|
|
margin-bottom: 10upx;
|
|
|
|
|
|
|
|
&-item {
|
|
|
|
position: relative;
|
|
|
|
flex: 1;
|
|
|
|
flex-basis: 0;
|
|
|
|
padding: 20upx 0;
|
|
|
|
text-align: center;
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
content: '';
|
|
|
|
position: absolute;
|
|
|
|
bottom: 0;
|
|
|
|
left: 50%;
|
|
|
|
display: block;
|
|
|
|
width: 0;
|
|
|
|
box-sizing: border-box;
|
|
|
|
background: #d3832a;
|
|
|
|
height: 4upx;
|
|
|
|
transition: all 0.5s;
|
|
|
|
}
|
|
|
|
|
|
|
|
&.active::after {
|
|
|
|
left: 0;
|
|
|
|
width: 100%;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 控件区
|
|
|
|
.control {
|
|
|
|
margin-top: 20upx;
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
|
|
.controlList {
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
.button {
|
|
|
|
margin: 0 5upx;
|
|
|
|
|
|
|
|
&:last-child {
|
|
|
|
margin-right: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 盘点数据
|
|
|
|
.checkInfo {
|
|
|
|
font-size: 28upx;
|
|
|
|
zoom: 0.9;
|
|
|
|
margin: 20upx 0 10upx;
|
|
|
|
display: flex;
|
|
|
|
color: #666;
|
|
|
|
|
|
|
|
// checkInfo_item
|
|
|
|
&_item {
|
|
|
|
word-break: break-all;
|
|
|
|
display: inline-flex;
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
>text:first-child {
|
|
|
|
margin-right: 10upx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.scvmabx {
|
|
|
|
height: 65vh;
|
|
|
|
|
|
|
|
.main_footer {
|
|
|
|
height: 200upx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 渲染
|
|
|
|
.main_render {
|
|
|
|
display: flex;
|
|
|
|
background: #fff;
|
|
|
|
padding: 10upx;
|
|
|
|
zoom: 0.85;
|
|
|
|
overflow: hidden;
|
|
|
|
position: relative;
|
|
|
|
margin-bottom: 15upx;
|
|
|
|
border-radius: 10upx;
|
|
|
|
|
|
|
|
$renderWidth: 80upx;
|
|
|
|
|
|
|
|
// 已盘状态
|
|
|
|
&.active {
|
|
|
|
border: 1upx solid #16d46b;
|
|
|
|
box-shadow: 0 0 10upx #16d46b;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 删除状态
|
|
|
|
&.delete {
|
|
|
|
border: 1upx solid #f55;
|
|
|
|
box-shadow: 0 0 10upx #f55;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 修改状态
|
|
|
|
&.edit {
|
|
|
|
border: 1upx solid #3c9cff;
|
|
|
|
box-shadow: 0 0 10upx #3c9cff;
|
|
|
|
}
|
|
|
|
|
|
|
|
// main_render_checkImg
|
|
|
|
&_checkImg {
|
|
|
|
width: 64upx;
|
|
|
|
height: 64upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
// main_render_container
|
|
|
|
&_container {
|
|
|
|
flex: 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// main_render_item
|
|
|
|
&_item {
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
align-items: flex-start;
|
|
|
|
margin-top: 20upx;
|
|
|
|
|
|
|
|
&:first-child {
|
|
|
|
margin-top: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
&>view {
|
|
|
|
flex: auto;
|
|
|
|
word-break: break-all
|
|
|
|
}
|
|
|
|
|
|
|
|
// main_render_item_type
|
|
|
|
&_type {
|
|
|
|
display: inline-block;
|
|
|
|
background: #3c9cff;
|
|
|
|
color: #fff;
|
|
|
|
padding: 5upx 10upx;
|
|
|
|
border-radius: 5upx;
|
|
|
|
|
|
|
|
&.active {
|
|
|
|
background: #f55;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.button_box {
|
|
|
|
display: inline-flex;
|
|
|
|
justify-content: space-evenly;
|
|
|
|
}
|
|
|
|
|
|
|
|
.button {
|
|
|
|
zoom: 0.9;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 弹出层提示信息
|
|
|
|
.popUpTitle {
|
|
|
|
font-size: 28upx;
|
|
|
|
color: #666;
|
|
|
|
zoom: 0.9;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 弹出层内的输入框
|
|
|
|
.popUpInput {
|
|
|
|
border: 4upx solid #eee;
|
|
|
|
padding: 10upx;
|
|
|
|
border-radius: 10upx;
|
|
|
|
margin-top: 30upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 上架货位信息
|
|
|
|
.popUpInfo {
|
|
|
|
margin-top: 20upx;
|
|
|
|
font-size: 34upx;
|
|
|
|
color: #000;
|
|
|
|
zoom: 0.9;
|
|
|
|
}
|
|
|
|
|
|
|
|
.popUp_EditState_container {
|
|
|
|
// height: 40vh;
|
|
|
|
margin-top: 60upx;
|
|
|
|
width: 100%;
|
|
|
|
display: flex;
|
|
|
|
flex-wrap: wrap;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 状态处理
|
|
|
|
.popUp_row {
|
|
|
|
width: 50%;
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
align-items: center;
|
|
|
|
font-size: 28upx;
|
|
|
|
zoom: 0.9;
|
|
|
|
margin-bottom: 20upx;
|
|
|
|
|
|
|
|
&.mr10 {
|
|
|
|
// margin-right: 10upx;
|
|
|
|
padding-right: 10px;
|
|
|
|
box-sizing: border-box;
|
|
|
|
}
|
|
|
|
|
|
|
|
// popUp_row_item
|
|
|
|
&_item {
|
|
|
|
// width: 50%;
|
|
|
|
flex: 1;
|
|
|
|
display: flex;
|
|
|
|
}
|
|
|
|
|
|
|
|
// popUp_row_checkImg
|
|
|
|
&_checkImg {
|
|
|
|
width: 40upx;
|
|
|
|
height: 40upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
// popUp_row_title
|
|
|
|
&_title {
|
|
|
|
// flex: 1;
|
|
|
|
padding-left: 10upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
.input {
|
|
|
|
width: 50%;
|
|
|
|
height: 60upx;
|
|
|
|
line-height: 60upx;
|
|
|
|
border: 1upx solid #f3f3f3;
|
|
|
|
background: #f3f3f3;
|
|
|
|
padding-left: 20upx;
|
|
|
|
box-sizing: border-box;
|
|
|
|
border-radius: 10upx;
|
|
|
|
|
|
|
|
&.active {
|
|
|
|
background-color: #fff;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
.popUp_Add_row {
|
|
|
|
margin-top: 10upx;
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
font-size: 28upx;
|
|
|
|
align-items: center;
|
|
|
|
position: relative;
|
|
|
|
|
|
|
|
.popUpInput {
|
|
|
|
width: 70%;
|
|
|
|
margin-top: 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.select_content {
|
|
|
|
position: absolute;
|
|
|
|
z-index: 99;
|
|
|
|
top: 120%;
|
|
|
|
left: 50%;
|
|
|
|
transform: translateX(-50%);
|
|
|
|
background: #fff;
|
|
|
|
border: 1upx solid #eee;
|
|
|
|
width: 100%;
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
|
|
view {
|
|
|
|
text-align: center;
|
|
|
|
padding: 20upx 0;
|
|
|
|
border-bottom: 1upx solid #000;
|
|
|
|
|
|
|
|
&:last-child {
|
|
|
|
border-bottom: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 提交按钮
|
|
|
|
.submitButton {
|
|
|
|
position: fixed;
|
|
|
|
color: #fff;
|
|
|
|
background-color: $buttonColor;
|
|
|
|
width: 40%;
|
|
|
|
bottom: 30upx;
|
|
|
|
left: 50%;
|
|
|
|
transform: translateX(-50%);
|
|
|
|
font-size: 30upx;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 详情
|
|
|
|
.popUpDetails_row {
|
|
|
|
display: flex;
|
|
|
|
font-size: 28upx;
|
|
|
|
margin-bottom: 10upx;
|
|
|
|
|
|
|
|
&>view {
|
|
|
|
flex: 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|