parent
6b6e2f6534
commit
a7f0166b40
@ -1,314 +1,412 @@ |
||||
<template> |
||||
<view class="im-container"> |
||||
<view class="im-up"> |
||||
<view class="im-column"> |
||||
<text class="im-text">巷道:</text> |
||||
<view class="im-select"> |
||||
<u-input v-model="startTunnel" type="select" class="u-input" placeholder-style="color:#000000" |
||||
placeholder="" border @click="startShow = true" /> |
||||
<u-select :mask-close-able="false" :safe-area-inset-bottom="true" v-model="startShow" |
||||
mode="single-column" :list="list" @confirm="confirmStart" /> |
||||
</view> |
||||
<span>——</span> |
||||
<view class="im-select"> |
||||
<u-input v-model="endTunnel" type="select" class="u-input" placeholder-style="color:#000000" |
||||
placeholder="" border @click="endShow = true" /> |
||||
<u-select :mask-close-able="false" :safe-area-inset-bottom="true" v-model="endShow" |
||||
mode="single-column" :list="list" @confirm="confirmEnd" /> |
||||
</view> |
||||
<view class="im-button"> |
||||
<u-button size="mini" v-if="orderBy===1" @click="changeOrder">正序</u-button> |
||||
<u-button size="mini" v-if="orderBy===0" @click="changeOrder">倒序</u-button> |
||||
</view> |
||||
</view> |
||||
<view class="im-column"> |
||||
<u-input class="im-pan" v-model="value" type="text" border placeholder="请扫描盘点货位" @input="change()" /> |
||||
|
||||
</view> |
||||
<view class="im-column" style="display: flex;justify-content: space-between;" v-if="result"> |
||||
<view> |
||||
<span class="im-name">货 位:</span> |
||||
<text class="im-bold">{{ result.locationCode }}</text> |
||||
</view> |
||||
<span class="im-span">{{ result.storageName }}</span> |
||||
</view> |
||||
<view class="im-column" style="display: flex;justify-content: space-between;" v-if="result"> |
||||
<view> |
||||
<span class="im-name">货 主:</span> |
||||
<text>{{ result.consignorName}}</text> |
||||
</view> |
||||
<span class="im-span" v-if="result.invWay==='open'">明盘</span> |
||||
<span class="im-span" v-if="result.invWay==='close'">盲盘</span> |
||||
</view> |
||||
<view class="im-column" style="display: flex;justify-content: space-between;" v-if="result"> |
||||
<view> |
||||
<span>商品编号:</span><text>{{ result.goodNo}}</text> |
||||
</view> |
||||
|
||||
<span class="im-span">{{ transInvUnit(result.invType)}}</span> |
||||
</view> |
||||
<view class="im-column" v-if="result"> |
||||
<span>商品名称:</span><text>{{ result.goodName}}</text> |
||||
</view> |
||||
<view class="im-column" v-if="result"> |
||||
<span class="im-name">规 格:</span> |
||||
<text>{{ result.specifications}}</text> |
||||
</view> |
||||
<view class="im-column" v-if="result"> |
||||
<span class="im-name">厂 家:</span> |
||||
<text>{{ result.factory}}</text> |
||||
</view> |
||||
<view class="im-column" v-if="result"> |
||||
<span class="im-name">产 地:</span> |
||||
<text>{{ result.waster}}</text> |
||||
</view> |
||||
<view class="im-column" v-if="result"> |
||||
<span class="im-name">批 号:</span> |
||||
<text>{{ result.batchNo }}</text> |
||||
</view> |
||||
<view class="im-column" v-if="result"> |
||||
<span>显示效期:</span><text>{{ result.productionDate }}--{{ result.expiredDate }}</text> |
||||
</view> |
||||
<view class="im-down-title" v-if="result"> |
||||
<span>件装/单位</span> |
||||
<span>件数</span> |
||||
<span>零散数</span> |
||||
<span>数量</span> |
||||
</view> |
||||
|
||||
<view v-if="result" class="im-down"> |
||||
<view class="im-down-title"> |
||||
<span>{{result.packageQty}}/{{transUnit(result.unit)}}</span> |
||||
<span v-if="result.invWay==='open'"> |
||||
<u-input style="margin-left: 30rpx;" border v-model="result.invCase" border-color="black" |
||||
placeholder="" :trim="false" :clearable="false"></u-input> |
||||
</span> |
||||
<span v-if="result.invWay==='open'"> |
||||
<u-input border v-model="result.invPiece" border-color="black" placeholder="" :trim="false" |
||||
:clearable="false"></u-input> |
||||
</span> |
||||
<span v-if="result.invWay==='open'">{{result.qty}}</span> |
||||
</view> |
||||
<view class="sh-content"> |
||||
<view class="sh-search"> |
||||
<u-form labelPosition="left" :model="dataForm" class="sh-form"> |
||||
<!-- <u-form-item label="容器" prop="containerCode" labelWidth="150rpx"> |
||||
<u-input v-model="dataForm.containerCode" border style="background-color: #ffffff;" |
||||
placeholder="请输入或扫描容器号"></u-input> |
||||
</u-form-item> --> |
||||
<u-form-item prop="barCode"> |
||||
|
||||
<u-input v-model="dataForm.containerCode" border height="70" style="background-color: #ffffff;" placeholder="请扫描托盘编号" |
||||
@confirm="inputQuery()" :focus="firstFocus"></u-input> |
||||
</u-form-item> |
||||
</u-form> |
||||
|
||||
</view> |
||||
<view class='recommend'> |
||||
<text class='recommend-title'>待盘点物料信息</text> |
||||
</view> |
||||
<!-- {{dataList}} --> |
||||
<view class="all-card"> |
||||
<view class="sh-card" v-for="(item, index) in dataList" :key="item.id" :index="item.id" v-if="dataList.length > 0" |
||||
style="border-radius: 20rpx;"> |
||||
<!-- <view :class="isActive===index? 'sh-card-title-two':'sh-card-title'" @click="btn(index,item)" style="border-radius: 20rpx;"><!--:class="{'borderBottom':!item.businInShelfDVoList.length}"--> |
||||
<view class="sh-card-title" style="border-radius: 20rpx;" @click="qtyEnter(item)"> |
||||
<!-- <button class="sh-button" @click="delBtn(index)">X</button> --> |
||||
<view class="card-content" > |
||||
<view class="card-content-item"> |
||||
<text class="item-title">物料编号:</text> |
||||
<text class="item-value">{{item.ptPart}}</text> |
||||
</view> |
||||
</view> |
||||
|
||||
<view class="card-content"> |
||||
<view class="card-content-item"> |
||||
<text class="item-title">台车编码:</text> |
||||
<text class="item-value">{{item.containerCode }}</text> |
||||
</view> |
||||
</view> |
||||
|
||||
<view class="card-content"> |
||||
<view class="card-content-item"> |
||||
<text class="item-title">物料名称:</text> |
||||
<text class="item-value">{{item.ptName}}</text> |
||||
</view> |
||||
</view> |
||||
|
||||
<view class="im-down-title"> |
||||
<span>入库预分配</span> |
||||
<span>出库预分配</span> |
||||
<span>补货预分配</span> |
||||
<view class="card-content"> |
||||
<view class="card-content-item"> |
||||
<text class="item-title" style="width: 80px;">物料数量:</text> |
||||
<text class="item-value">{{item.qty}}</text> |
||||
</view> |
||||
<view class="card-content-item"> |
||||
<text class="item-title" style="width: 80px;">盘点数量:</text> |
||||
<text class="item-value">{{item.invQty}}</text> |
||||
</view> |
||||
|
||||
</view> |
||||
<u-popup v-model="show" width='90%' height="260px" :mask="true" @close="close" @open="open" mode="center"> |
||||
<view style="height: 44px;text-align: center;line-height: 44px;font-size: 18px;margin-bottom: 18px;"> |
||||
<text>物料修改</text> |
||||
</view> |
||||
<view style="width: 100%;display: flex;align-items: baseline;"> |
||||
<text style="margin: 0px 20px 0px;">物料编码:</text> <input v-model="form.ptPart" placeholder="请扫描物料编码" style="border:1px solid #000;padding-right: 20px;"></u-input> |
||||
|
||||
</view> |
||||
<view class="im-down-title"> |
||||
<span>{{ result.onlockInQuantity}}</span> |
||||
<span>{{ result.onlockOutQuantity }}</span> |
||||
<span>{{ result.onlockReplenishQuantity }}</span> |
||||
<view style="width: 100%;display: flex;align-items: baseline;"> |
||||
<text style="margin: 10px 20px 10px;">批次日期:</text> |
||||
|
||||
<u-input v-model="form.batch" style="padding-right: 30px;" type="select" placeholder="请选择批次日期" prop="batch" class="u-input" |
||||
placeholder-style="color:#000000" @click="selShow = true" /> |
||||
<u-select :mask-close-able="false" :safe-area-inset-bottom="true" v-model="selShow" |
||||
mode="single-column" :list="lockstockBatch" @confirm="confirm" /> |
||||
<!-- <u-select v-model="selShow" placeholder="请选择批次日期" mode="single-column" :list="batchList" @confirm="confirm"></u-select> --> |
||||
<!-- <input v-model="selShow" placeholder="请选择批次日期" style="border:1px solid #000;padding-right: 20px;"></u-input> --> |
||||
|
||||
</view> |
||||
<view style="width: 100%;display: flex;align-items: baseline;"> |
||||
<text style="margin: 0px 20px 0px;">缴库数量:</text> <input v-model="form.invQty" style="border:1px solid #000;padding-right: 20px;"></u-input> |
||||
|
||||
</view> |
||||
<view style="width: 100%; display: flex;margin-top: 40px;font-size: 14px;"> |
||||
<button style="width: 30%; font-size: 16px;line-height: 44px;" class="btn1" type="default" @click="noEnter()">取消</button> |
||||
<button style="width: 30%;font-size: 16px;line-height: 44px;;" type="default" @click="enterUp(item)">确认</button> |
||||
</view> |
||||
|
||||
</u-popup> |
||||
</view> |
||||
|
||||
</view> |
||||
</view> |
||||
|
||||
<!-- <view class="loadmore-data"> |
||||
<u-loadmore :status="loadStatus"></u-loadmore> |
||||
</view> --> |
||||
<!-- <button @click="open">测试</button> --> |
||||
|
||||
</view> |
||||
<view class="confirm-button" v-if="result"> |
||||
<u-button size="medium" @click="sure()">确认</u-button> |
||||
</view> |
||||
</view> |
||||
<view class="bottom"> |
||||
<button @click="pickUp()" >确认无误</button> |
||||
<!-- <p class="foot" style="width: 100%; text-align: center;margin-top: 8px;color: gray;">盘点完成后当前托盘自动回库</p> --> |
||||
</view> |
||||
|
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
result: '', |
||||
orderBy: 1, |
||||
startShow: false, |
||||
endShow: false, |
||||
xiangStart: "", |
||||
value: "", |
||||
list: [], |
||||
invOrderNo: '', |
||||
startTunnel: '', |
||||
endTunnel: '', |
||||
dicOptions: [] |
||||
}; |
||||
export default { |
||||
data() { |
||||
return { |
||||
showDiv:false, |
||||
show:false, |
||||
selShow:false, |
||||
queryFlag: '', |
||||
dataForm: { |
||||
// containerCode: null, |
||||
containerCode: "", |
||||
pageNum: 1, |
||||
pageSize: 10 |
||||
}, |
||||
lockstockBatch: [], |
||||
pickUpObj:{ |
||||
pointNo:'', |
||||
taskCode:'', |
||||
taskId:'', |
||||
containerId:'', |
||||
dtlAddBos:[] |
||||
}, |
||||
onLoad: function(option) { |
||||
this.invOrderNo = option.invOrderNo |
||||
this.getList(option.invOrderNo) |
||||
this.getDic() |
||||
this.getInvTypeDic() |
||||
dataList: [], |
||||
query: { |
||||
current: 1, |
||||
size: 20 |
||||
}, |
||||
form:{ |
||||
ptPart:'', |
||||
batch:'', |
||||
invQty:'' |
||||
}, |
||||
methods: { |
||||
//盘点类型的字典 |
||||
getInvTypeDic() { |
||||
this.$u.api.getInvType().then(res => { |
||||
this.invOptions = res.data; |
||||
}); |
||||
}, |
||||
transInvUnit(unit) { |
||||
for (let dic in this.dicOptions) { |
||||
if (this.invOptions[dic].dictValue === unit) { |
||||
return this.invOptions[dic].dictLabel; |
||||
} |
||||
} |
||||
isActive:0, |
||||
loadStatus: 'loadmore', |
||||
dicOptions: [], |
||||
timer:0, |
||||
invQty:0, |
||||
invid:0, |
||||
completeArr:[], |
||||
firstFocus:false |
||||
} |
||||
}, |
||||
onLoad() { |
||||
// this.getDic(); //获取字典 |
||||
// this.loadList(); |
||||
// uni.setNavigationBarTitle({ |
||||
// title:this.$i18nMsg().nav.checkAction |
||||
// }) |
||||
// this.$u.api.invPlan.queryInvLocation(this.dataForm).then(res=>{ |
||||
// res.rows.forEach(item=>{ |
||||
// item.invQty=item.qty |
||||
// }) |
||||
// this.dataList=res.rows |
||||
// // console.log(res); |
||||
// }) |
||||
this.$u.api.getLockstockBatch({ pageSize: 999, pageNum: 1 }).then((response) => { |
||||
// console.log(response); |
||||
this.lockstockBatch=response.data.map((item,index)=>{ |
||||
return { |
||||
label:item, |
||||
value:item, |
||||
} |
||||
}) |
||||
// console.log(response.data); |
||||
// this.lockstockBatch = response.data |
||||
|
||||
}) |
||||
}, |
||||
//上拉刷新(当数据距离底部100时触发,距离在pages.json配置) |
||||
// onReachBottom() { |
||||
// this.loadStatus = "loading"; |
||||
// setTimeout(() => { |
||||
// this.dataForm.pageNum += 1; |
||||
// this.loadList(); |
||||
// }, 100); |
||||
// }, |
||||
|
||||
|
||||
onPullDownRefresh () { |
||||
this.list = [] |
||||
//调用获取数据方法 |
||||
// this.getData() |
||||
setTimeout(() => { |
||||
//结束下拉刷新 |
||||
uni.stopPullDownRefresh (); |
||||
}, 1000); |
||||
}, |
||||
filters: { |
||||
formatType(value) { |
||||
console.log(value); |
||||
switch (Number(value)) { |
||||
case 0: |
||||
return "type1"; |
||||
case 1: |
||||
return "type2"; |
||||
case 2: |
||||
return "type3"; |
||||
default: |
||||
return ""; |
||||
} |
||||
}}, |
||||
methods: { |
||||
close() { |
||||
this.show = false |
||||
}, |
||||
// 单位的字典 |
||||
getDic() { |
||||
this.$u.api.getByDicType().then(res => { |
||||
this.dicOptions = res.data; |
||||
}); |
||||
open() { |
||||
this.show = true |
||||
|
||||
}, |
||||
qtyEnter(item){ |
||||
this.show=true |
||||
this.form.batch=item.batchNo |
||||
this.form.ptPart=item.ptPart |
||||
this.form.invQty=item.qty |
||||
this.form.invOrderNo=item.invOrderNo |
||||
this.form.containerCode=item.containerCode |
||||
this.invQty=item.qty |
||||
this.invid=item.id |
||||
}, |
||||
transUnit(unit) { |
||||
for (let dic in this.dicOptions) { |
||||
if (this.dicOptions[dic].dictValue === unit) { |
||||
return this.dicOptions[dic].dictLabel; |
||||
} |
||||
} |
||||
noEnter(){ |
||||
this.show=false |
||||
}, |
||||
sure() { |
||||
this.$u.api.inventoryPlanning.pdaEntrySave({ |
||||
id: this.result.id, |
||||
invQty: this.result.invQty, |
||||
invCase: this.result.invCase, |
||||
invPiece: this.result.invPiece |
||||
}).then((res) => { |
||||
if (res.code === 200) { |
||||
this.$u.toast('盘点成功'); |
||||
this.$u.route({ |
||||
url: '/pages/inventory/index', |
||||
type: 'navigateTo' |
||||
}) |
||||
} else { |
||||
this.$u.toast(res.msg); |
||||
} |
||||
//点击变色 |
||||
btn(index,item){ |
||||
this.pickUpObj.dtlAddBos=[] |
||||
this.isActive = index |
||||
this.pickUpObj.pointNo=item.endLocation |
||||
this.pickUpObj.taskCode=item.taskCode |
||||
this.pickUpObj.taskId=item.taskId |
||||
this.pickUpObj.taskType=item.taskType |
||||
this.pickUpObj.containerId=item.containerId |
||||
this.pickUpObj.dtlAddBos.push({qrCode:item.qrCode} ) |
||||
// console.log(JSON.stringify(this.pickUpObj)); |
||||
}, |
||||
/**搜索框查询*/ |
||||
inputQuery() { |
||||
|
||||
if (this.dataForm.containerCode == '' || this.dataForm.containerCode == null || this.dataForm.containerCode == |
||||
undefined) { |
||||
return |
||||
} |
||||
// this.queryFlag = setTimeout(() => { |
||||
this.loadList() |
||||
// }, 500) |
||||
}, |
||||
onNavigationBarButtonTap(e){ |
||||
console.log(e); |
||||
}, |
||||
//删除单个 |
||||
delBtn(index){ |
||||
// console.log(JSON.stringify(this.pickUpObj)); |
||||
this.dataList.splice(index,1) |
||||
this.pickUpObj.moldBarcodeList.splice(index,1) |
||||
console.log(JSON.stringify(this.pickUpObj)); |
||||
}, |
||||
loadList() { |
||||
|
||||
//防抖 |
||||
// clearInterval(this.timer) |
||||
this.timer =setTimeout(()=>{ |
||||
//节流 |
||||
let flag = true |
||||
if(flag===false) return |
||||
flag=false |
||||
setTimeout(()=>{ |
||||
flag = true |
||||
this.firstFocus=false |
||||
// this.$u.api.inv.pdaInvByContainerCode(this.dataForm).then(res=>{ |
||||
// console.log(res); |
||||
// if(!res.rows || res.rows.length == 0){ |
||||
// // console.log(res); |
||||
// // this.$u.toast("当前商品不存在"); |
||||
// }else if(res.code == '200'){ |
||||
// console.log(res); |
||||
// this.dataList=res.rows |
||||
// setTimeout(()=>{ |
||||
// this.dataForm.containerCode='' |
||||
// },0) |
||||
// this.$nextTick(()=>{ |
||||
// this.firstFocus = true |
||||
// }) |
||||
// } |
||||
|
||||
|
||||
// }) |
||||
this.$u.api.invPlan.pdaInvByContainerCode(this.dataForm).then(res=>{ |
||||
if(!res.rows || res.rows.length == 0){ |
||||
// console.log(res); |
||||
this.$u.toast("当前台车内物料不存在"); |
||||
}else if(res.code == '200'){ |
||||
// console.log(res); |
||||
this.dataList=res.rows |
||||
setTimeout(()=>{ |
||||
this.dataForm.containerCode='' |
||||
},0) |
||||
this.$nextTick(()=>{ |
||||
this.firstFocus = true |
||||
}) |
||||
} |
||||
}) |
||||
}, |
||||
changeOrder() { |
||||
if (this.orderBy) { |
||||
this.orderBy = 0 |
||||
} else { |
||||
this.orderBy = 1 |
||||
} |
||||
this.getDetail() |
||||
}, |
||||
// 获取巷道 |
||||
getList(params) { |
||||
this.$u.api.inventoryPlanning.optionByInvOrderNo(params).then(res => { |
||||
console.log(res) |
||||
if (res.code === 200) { |
||||
this.list = res.data.map((item) => ({ |
||||
label: item, |
||||
value: item |
||||
})) |
||||
} else { |
||||
this.$u.toast(res.msg); |
||||
} |
||||
}); |
||||
}, |
||||
change() { |
||||
this.invOrderNo = this.value |
||||
this.list = [] |
||||
this.startTunnel = '' |
||||
this.endTunnel = '' |
||||
this.getList(this.value) |
||||
this.result = '' |
||||
}, |
||||
getDetail() { |
||||
if (this.orderBy && this.startTunnel && this.endTunnel && this.invOrderNo) { |
||||
this.$u.api.inventoryPlanning.queryDetailStockInv({ |
||||
orderBy: this.orderBy, |
||||
startTunnel: this.startTunnel, |
||||
endTunnel: this.endTunnel, |
||||
invOrderNo: this.invOrderNo |
||||
}).then(res => { |
||||
console.log(res) |
||||
if (res.code === 200) { |
||||
this.result = res.data |
||||
} else { |
||||
this.$u.toast(res.msg); |
||||
} |
||||
|
||||
}); |
||||
} |
||||
}, |
||||
confirmStart(e) { |
||||
console.log(e) |
||||
this.startTunnel = e[0].value; |
||||
this.getDetail() |
||||
}, |
||||
confirmEnd(e) { |
||||
console.log(e) |
||||
this.endTunnel = e[0].value; |
||||
this.getDetail() |
||||
} |
||||
} |
||||
} |
||||
</script> |
||||
<style> |
||||
page { |
||||
height: 100% |
||||
} |
||||
</style> |
||||
<style lang="scss"> |
||||
.im-container { |
||||
background-color: rgba(242, 242, 242, 1); |
||||
height: 100%; |
||||
|
||||
.im-up { |
||||
background-color: #fff; |
||||
margin: 20rpx 40rpx; |
||||
border: 0.5px solid black; |
||||
height: 100%; |
||||
|
||||
.im-column { |
||||
display: flex; |
||||
flex-direction: row; |
||||
padding: 20rpx 30rpx 0 30rpx; |
||||
|
||||
.im-pan { |
||||
margin-right: 40rpx; |
||||
} |
||||
|
||||
.im-span { |
||||
padding-right: 60rpx; |
||||
} |
||||
|
||||
.im-text { |
||||
padding: 12rpx 20rpx 12rpx 0; |
||||
} |
||||
|
||||
.im-bold { |
||||
font-weight: bold; |
||||
} |
||||
|
||||
.span-right { |
||||
position: absolute; |
||||
right: 50px; |
||||
} |
||||
|
||||
.im-name { |
||||
word-spacing: 46rpx; |
||||
} |
||||
} |
||||
|
||||
|
||||
.im-down-title { |
||||
margin-top: 50prx; |
||||
display: flex; |
||||
justify-content: space-between; |
||||
padding: 20rpx 30rpx 0 30rpx; |
||||
|
||||
.down-span { |
||||
border: 0.5rpx black solid; |
||||
} |
||||
} |
||||
|
||||
.confirm-button { |
||||
display: flex; |
||||
padding-top: 150rpx; |
||||
} |
||||
,500) |
||||
|
||||
},400) |
||||
}, |
||||
enterUp(){ |
||||
// this.$u.api.inv.entrySave(this.) |
||||
// item.qty=this.invQty |
||||
// console.log(item); |
||||
if(this.form.ptPart === null |
||||
|| this.form.ptPart === '' |
||||
|| this.form.ptPart === 0 |
||||
|| this.form.ptPart === undefined |
||||
|| this.form.ptPart ==='undefined'){ |
||||
this.$u.toast("请扫描物料编码"); |
||||
return; |
||||
} |
||||
if(this.form.batch === null |
||||
|| this.form.batch === '' |
||||
|| this.form.batch === 0 |
||||
|| this.form.batch === undefined |
||||
|| this.form.batch ==='undefined'){ |
||||
this.$u.toast("请选择批次"); |
||||
return; |
||||
} |
||||
if(this.form.invQty === null |
||||
|| this.form.invQty === '' |
||||
|| this.form.invQty === 0 |
||||
|| this.form.invQty === undefined |
||||
|| this.form.invQty ==='undefined'){ |
||||
this.$u.toast("请输入数量"); |
||||
return; |
||||
} |
||||
this.$u.api.invPlan.entrySave(this.form).then(res=>{ |
||||
// console.log(res); |
||||
if(res.code==200){ |
||||
this.$u.toast("修改完成"); |
||||
setTimeout(()=>{ |
||||
// this.$router.go(0) |
||||
this.$u.api.invPlan.pdaInvByContainerCode({containerCode:this.form.containerCode}).then(res=>{ |
||||
if(!res.rows || res.rows.length == 0){ |
||||
// console.log(res); |
||||
this.$u.toast("当前台车内物料不存在"); |
||||
}else if(res.code == '200'){ |
||||
// console.log(res); |
||||
this.dataList=res.rows |
||||
setTimeout(()=>{ |
||||
this.dataForm.containerCode='' |
||||
},0) |
||||
this.$nextTick(()=>{ |
||||
this.firstFocus = true |
||||
}) |
||||
} |
||||
}) |
||||
this.form={} |
||||
this.show=false |
||||
},400) |
||||
} |
||||
|
||||
}) |
||||
|
||||
.im-button { |
||||
display: contents; |
||||
} |
||||
}, |
||||
confirm(e){ |
||||
// console.log(val); |
||||
this.form.batch=e[0].label; |
||||
}, |
||||
pickUp(){ |
||||
this.ompleteArr=[] |
||||
// this.dataList.forEach(item=>{ |
||||
// this.completeArr.push({ |
||||
// id:item.invOrderNo, |
||||
// ptPart:item.ptPart, |
||||
// invQty:item.invQty, |
||||
// batch:item.batch |
||||
// }) |
||||
|
||||
|
||||
// }) |
||||
this.$u.api.invPlan.confirm({ invOrderNo:this.dataList[0].invOrderNo,ptPart:this.dataList[0].ptPart,batch:this.dataList[0].batchNo,containerCode:this.dataList[0].containerCode}).then(res=>{ |
||||
// console.log(res); |
||||
if(res.code==200){ |
||||
this.$u.toast("盘点完成"); |
||||
setTimeout(()=>{ |
||||
this.form={} |
||||
this.dataList=[] |
||||
this.$router.go(0) |
||||
},400) |
||||
} |
||||
}) |
||||
}, |
||||
// 任务查看 |
||||
searchClick() { |
||||
this.dataList = []; |
||||
this.dataForm.pageNum = 1; |
||||
this.loadList(); |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
.u-input { |
||||
width: 150rpx; |
||||
} |
||||
} |
||||
<style lang="scss"> |
||||
@import "index.scss"; |
||||
.footer { |
||||
display: flex; |
||||
padding: 20rpx 0; |
||||
} |
||||
</style> |
||||
|
||||
@ -1,109 +1,412 @@ |
||||
<template> |
||||
<view class="in-content"> |
||||
<view class="in-table"> |
||||
<u-table> |
||||
<u-tr class="u-tr"> |
||||
<u-th class="u-th" width="10%">序号</u-th> |
||||
<u-th class="u-th" width="35%">盘点单号</u-th> |
||||
<u-th class="u-th" width="15%">总条目12</u-th> |
||||
<u-th class="u-th" width="20%">已盘条目</u-th> |
||||
<u-th class="u-th" width="20%">盘点人</u-th> |
||||
</u-tr> |
||||
<u-tr class="u-tr" v-for="(item, index) in result" :key="index" :class="invOrderNo===item.invOrderNo?'bg':null"> |
||||
<u-td class="u-td" width="10%" > |
||||
<span @click="choosed(item.invOrderNo)">{{ index + 1 }}</span> |
||||
</u-td> |
||||
<u-td class="u-td" width="35%"> |
||||
<span @click="choosed(item.invOrderNo)">{{ item.invOrderNo || '-' }}</span> |
||||
</u-td> |
||||
<u-td class="u-td" width="15%"> |
||||
<span @click="choosed(item.invOrderNo)">{{ item.totalNumber || '-' }}</span> |
||||
</u-td> |
||||
<u-td class="u-td" width="20%"> |
||||
<span @click="choosed(item.invOrderNo)"> |
||||
{{ item.finishNumber || '-' }} |
||||
</span> |
||||
</u-td> |
||||
<u-td class="u-td" width="20%" style="width:20%;text-overflow:ellipsis;overflow: hidden;"> |
||||
<span @click="choosed(item.invOrderNo)"> |
||||
{{ item.invUser || '-' }} |
||||
</span> |
||||
</u-td> |
||||
</u-tr> |
||||
</u-table> |
||||
</view> |
||||
<view class="in-operate"> |
||||
<u-button class="in-button" size="medium" @click="refreshPages()">刷新</u-button> |
||||
<u-button size="medium" @click="startImplement()">开始盘点</u-button> |
||||
</view> |
||||
<view class="sh-content"> |
||||
<view class="sh-search"> |
||||
<u-form labelPosition="left" :model="dataForm" class="sh-form"> |
||||
<!-- <u-form-item label="容器" prop="containerCode" labelWidth="150rpx"> |
||||
<u-input v-model="dataForm.containerCode" border style="background-color: #ffffff;" |
||||
placeholder="请输入或扫描容器号"></u-input> |
||||
</u-form-item> --> |
||||
<u-form-item prop="barCode"> |
||||
|
||||
<u-input v-model="dataForm.containerCode" border height="70" style="background-color: #ffffff;" placeholder="请扫描托盘编号" |
||||
@confirm="inputQuery()" :focus="firstFocus"></u-input> |
||||
</u-form-item> |
||||
</u-form> |
||||
|
||||
</view> |
||||
<view class='recommend'> |
||||
<text class='recommend-title'>待盘点物料信息</text> |
||||
</view> |
||||
<!-- {{dataList}} --> |
||||
<view class="all-card"> |
||||
<view class="sh-card" v-for="(item, index) in dataList" :key="item.id" :index="item.id" v-if="dataList.length > 0" |
||||
style="border-radius: 20rpx;"> |
||||
<!-- <view :class="isActive===index? 'sh-card-title-two':'sh-card-title'" @click="btn(index,item)" style="border-radius: 20rpx;"><!--:class="{'borderBottom':!item.businInShelfDVoList.length}"--> |
||||
<view class="sh-card-title" style="border-radius: 20rpx;" @click="qtyEnter(item)"> |
||||
<!-- <button class="sh-button" @click="delBtn(index)">X</button> --> |
||||
<view class="card-content" > |
||||
<view class="card-content-item"> |
||||
<text class="item-title">物料编号:</text> |
||||
<text class="item-value">{{item.ptPart}}</text> |
||||
</view> |
||||
</view> |
||||
|
||||
<view class="card-content"> |
||||
<view class="card-content-item"> |
||||
<text class="item-title">台车编码:</text> |
||||
<text class="item-value">{{item.containerCode }}</text> |
||||
</view> |
||||
</view> |
||||
|
||||
<view class="card-content"> |
||||
<view class="card-content-item"> |
||||
<text class="item-title">物料名称:</text> |
||||
<text class="item-value">{{item.ptName}}</text> |
||||
</view> |
||||
</view> |
||||
|
||||
<view class="card-content"> |
||||
<view class="card-content-item"> |
||||
<text class="item-title" style="width: 80px;">物料数量:</text> |
||||
<text class="item-value">{{item.qty}}</text> |
||||
</view> |
||||
<view class="card-content-item"> |
||||
<text class="item-title" style="width: 80px;">盘点数量:</text> |
||||
<text class="item-value">{{item.invQty}}</text> |
||||
</view> |
||||
|
||||
</view> |
||||
<u-popup v-model="show" width='90%' height="260px" :mask="true" @close="close" @open="open" mode="center"> |
||||
<view style="height: 44px;text-align: center;line-height: 44px;font-size: 18px;margin-bottom: 18px;"> |
||||
<text>物料修改</text> |
||||
</view> |
||||
<view style="width: 100%;display: flex;align-items: baseline;"> |
||||
<text style="margin: 0px 20px 0px;">物料编码:</text> <input v-model="form.ptPart" placeholder="请扫描物料编码" style="border:1px solid #000;padding-right: 20px;"></u-input> |
||||
|
||||
</view> |
||||
<view style="width: 100%;display: flex;align-items: baseline;"> |
||||
<text style="margin: 10px 20px 10px;">批次日期:</text> |
||||
|
||||
<u-input v-model="form.batch" style="padding-right: 30px;" type="select" placeholder="请选择批次日期" prop="batch" class="u-input" |
||||
placeholder-style="color:#000000" @click="selShow = true" /> |
||||
<u-select :mask-close-able="false" :safe-area-inset-bottom="true" v-model="selShow" |
||||
mode="single-column" :list="lockstockBatch" @confirm="confirm" /> |
||||
<!-- <u-select v-model="selShow" placeholder="请选择批次日期" mode="single-column" :list="batchList" @confirm="confirm"></u-select> --> |
||||
<!-- <input v-model="selShow" placeholder="请选择批次日期" style="border:1px solid #000;padding-right: 20px;"></u-input> --> |
||||
|
||||
</view> |
||||
<view style="width: 100%;display: flex;align-items: baseline;"> |
||||
<text style="margin: 0px 20px 0px;">缴库数量:</text> <input v-model="form.invQty" style="border:1px solid #000;padding-right: 20px;"></u-input> |
||||
|
||||
</view> |
||||
<view style="width: 100%; display: flex;margin-top: 40px;font-size: 14px;"> |
||||
<button style="width: 30%; font-size: 16px;line-height: 44px;" class="btn1" type="default" @click="noEnter()">取消</button> |
||||
<button style="width: 30%;font-size: 16px;line-height: 44px;;" type="default" @click="enterUp(item)">确认</button> |
||||
</view> |
||||
|
||||
</u-popup> |
||||
</view> |
||||
|
||||
</view> |
||||
</view> |
||||
|
||||
<!-- <view class="loadmore-data"> |
||||
<u-loadmore :status="loadStatus"></u-loadmore> |
||||
</view> --> |
||||
<!-- <button @click="open">测试</button> --> |
||||
|
||||
<view class="bottom"> |
||||
<button @click="pickUp()" >确认无误</button> |
||||
<!-- <p class="foot" style="width: 100%; text-align: center;margin-top: 8px;color: gray;">盘点完成后当前托盘自动回库</p> --> |
||||
</view> |
||||
|
||||
</view> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
result: [], |
||||
invOrderNo: '' |
||||
} |
||||
export default { |
||||
data() { |
||||
return { |
||||
showDiv:false, |
||||
show:false, |
||||
selShow:false, |
||||
queryFlag: '', |
||||
dataForm: { |
||||
// containerCode: null, |
||||
containerCode: "", |
||||
pageNum: 1, |
||||
pageSize: 10 |
||||
}, |
||||
lockstockBatch: [], |
||||
pickUpObj:{ |
||||
pointNo:'', |
||||
taskCode:'', |
||||
taskId:'', |
||||
containerId:'', |
||||
dtlAddBos:[] |
||||
}, |
||||
|
||||
mounted() { |
||||
this.getList() |
||||
dataList: [], |
||||
query: { |
||||
current: 1, |
||||
size: 20 |
||||
}, |
||||
form:{ |
||||
ptPart:'', |
||||
batch:'', |
||||
invQty:'' |
||||
}, |
||||
methods: { |
||||
choosed(num) { |
||||
console.log(num) |
||||
console.log('这里没执行') |
||||
this.invOrderNo = num |
||||
isActive:0, |
||||
loadStatus: 'loadmore', |
||||
dicOptions: [], |
||||
timer:0, |
||||
invQty:0, |
||||
invid:0, |
||||
completeArr:[], |
||||
firstFocus:false |
||||
} |
||||
}, |
||||
onLoad() { |
||||
// this.getDic(); //获取字典 |
||||
// this.loadList(); |
||||
// uni.setNavigationBarTitle({ |
||||
// title:this.$i18nMsg().nav.checkAction |
||||
// }) |
||||
// this.$u.api.invPlan.queryInvLocation(this.dataForm).then(res=>{ |
||||
// res.rows.forEach(item=>{ |
||||
// item.invQty=item.qty |
||||
// }) |
||||
// this.dataList=res.rows |
||||
// // console.log(res); |
||||
// }) |
||||
this.$u.api.getLockstockBatch({ pageSize: 999, pageNum: 1 }).then((response) => { |
||||
// console.log(response); |
||||
this.lockstockBatch=response.data.map((item,index)=>{ |
||||
return { |
||||
label:item, |
||||
value:item, |
||||
} |
||||
}) |
||||
// console.log(response.data); |
||||
// this.lockstockBatch = response.data |
||||
|
||||
}) |
||||
}, |
||||
//上拉刷新(当数据距离底部100时触发,距离在pages.json配置) |
||||
// onReachBottom() { |
||||
// this.loadStatus = "loading"; |
||||
// setTimeout(() => { |
||||
// this.dataForm.pageNum += 1; |
||||
// this.loadList(); |
||||
// }, 100); |
||||
// }, |
||||
|
||||
|
||||
onPullDownRefresh () { |
||||
this.list = [] |
||||
//调用获取数据方法 |
||||
// this.getData() |
||||
setTimeout(() => { |
||||
//结束下拉刷新 |
||||
uni.stopPullDownRefresh (); |
||||
}, 1000); |
||||
}, |
||||
filters: { |
||||
formatType(value) { |
||||
console.log(value); |
||||
switch (Number(value)) { |
||||
case 0: |
||||
return "type1"; |
||||
case 1: |
||||
return "type2"; |
||||
case 2: |
||||
return "type3"; |
||||
default: |
||||
return ""; |
||||
} |
||||
}}, |
||||
methods: { |
||||
close() { |
||||
this.show = false |
||||
}, |
||||
// 获取list |
||||
getList() { |
||||
this.$u.api.inventoryPlanning.inventoryPlanningList().then(res => { |
||||
console.log(res) |
||||
if(res.code===200) { |
||||
this.result = res.rows |
||||
} else { |
||||
his.$u.toast(res.msg); |
||||
} |
||||
}); |
||||
open() { |
||||
this.show = true |
||||
|
||||
}, |
||||
qtyEnter(item){ |
||||
this.show=true |
||||
this.form.batch=item.batchNo |
||||
this.form.ptPart=item.ptPart |
||||
this.form.invQty=item.qty |
||||
this.form.invOrderNo=item.invOrderNo |
||||
this.form.containerCode=item.containerCode |
||||
this.invQty=item.qty |
||||
this.invid=item.id |
||||
}, |
||||
refreshPages() { |
||||
this.$u.toast("页面已刷新"); |
||||
noEnter(){ |
||||
this.show=false |
||||
}, |
||||
startImplement() { |
||||
this.$u.route({ |
||||
url: '/pages/inventory/implement', |
||||
type: 'navigateTo', |
||||
params: { |
||||
invOrderNo: this.invOrderNo |
||||
} |
||||
//点击变色 |
||||
btn(index,item){ |
||||
this.pickUpObj.dtlAddBos=[] |
||||
this.isActive = index |
||||
this.pickUpObj.pointNo=item.endLocation |
||||
this.pickUpObj.taskCode=item.taskCode |
||||
this.pickUpObj.taskId=item.taskId |
||||
this.pickUpObj.taskType=item.taskType |
||||
this.pickUpObj.containerId=item.containerId |
||||
this.pickUpObj.dtlAddBos.push({qrCode:item.qrCode} ) |
||||
// console.log(JSON.stringify(this.pickUpObj)); |
||||
}, |
||||
/**搜索框查询*/ |
||||
inputQuery() { |
||||
|
||||
if (this.dataForm.containerCode == '' || this.dataForm.containerCode == null || this.dataForm.containerCode == |
||||
undefined) { |
||||
return |
||||
} |
||||
// this.queryFlag = setTimeout(() => { |
||||
this.loadList() |
||||
// }, 500) |
||||
}, |
||||
onNavigationBarButtonTap(e){ |
||||
console.log(e); |
||||
}, |
||||
//删除单个 |
||||
delBtn(index){ |
||||
// console.log(JSON.stringify(this.pickUpObj)); |
||||
this.dataList.splice(index,1) |
||||
this.pickUpObj.moldBarcodeList.splice(index,1) |
||||
console.log(JSON.stringify(this.pickUpObj)); |
||||
}, |
||||
loadList() { |
||||
|
||||
//防抖 |
||||
// clearInterval(this.timer) |
||||
this.timer =setTimeout(()=>{ |
||||
//节流 |
||||
let flag = true |
||||
if(flag===false) return |
||||
flag=false |
||||
setTimeout(()=>{ |
||||
flag = true |
||||
this.firstFocus=false |
||||
// this.$u.api.inv.pdaInvByContainerCode(this.dataForm).then(res=>{ |
||||
// console.log(res); |
||||
// if(!res.rows || res.rows.length == 0){ |
||||
// // console.log(res); |
||||
// // this.$u.toast("当前商品不存在"); |
||||
// }else if(res.code == '200'){ |
||||
// console.log(res); |
||||
// this.dataList=res.rows |
||||
// setTimeout(()=>{ |
||||
// this.dataForm.containerCode='' |
||||
// },0) |
||||
// this.$nextTick(()=>{ |
||||
// this.firstFocus = true |
||||
// }) |
||||
// } |
||||
|
||||
|
||||
// }) |
||||
this.$u.api.invPlan.pdaInvByContainerCode(this.dataForm).then(res=>{ |
||||
if(!res.rows || res.rows.length == 0){ |
||||
// console.log(res); |
||||
this.$u.toast("当前台车内物料不存在"); |
||||
}else if(res.code == '200'){ |
||||
// console.log(res); |
||||
this.dataList=res.rows |
||||
setTimeout(()=>{ |
||||
this.dataForm.containerCode='' |
||||
},0) |
||||
this.$nextTick(()=>{ |
||||
this.firstFocus = true |
||||
}) |
||||
} |
||||
}) |
||||
} |
||||
,500) |
||||
|
||||
},400) |
||||
}, |
||||
enterUp(){ |
||||
// this.$u.api.inv.entrySave(this.) |
||||
// item.qty=this.invQty |
||||
// console.log(item); |
||||
if(this.form.ptPart === null |
||||
|| this.form.ptPart === '' |
||||
|| this.form.ptPart === 0 |
||||
|| this.form.ptPart === undefined |
||||
|| this.form.ptPart ==='undefined'){ |
||||
this.$u.toast("请扫描物料编码"); |
||||
return; |
||||
} |
||||
if(this.form.batch === null |
||||
|| this.form.batch === '' |
||||
|| this.form.batch === 0 |
||||
|| this.form.batch === undefined |
||||
|| this.form.batch ==='undefined'){ |
||||
this.$u.toast("请选择批次"); |
||||
return; |
||||
} |
||||
if(this.form.invQty === null |
||||
|| this.form.invQty === '' |
||||
|| this.form.invQty === 0 |
||||
|| this.form.invQty === undefined |
||||
|| this.form.invQty ==='undefined'){ |
||||
this.$u.toast("请输入数量"); |
||||
return; |
||||
} |
||||
} |
||||
this.$u.api.invPlan.entrySave(this.form).then(res=>{ |
||||
// console.log(res); |
||||
if(res.code==200){ |
||||
this.$u.toast("修改完成"); |
||||
setTimeout(()=>{ |
||||
// this.$router.go(0) |
||||
this.$u.api.invPlan.pdaInvByContainerCode({containerCode:this.form.containerCode}).then(res=>{ |
||||
if(!res.rows || res.rows.length == 0){ |
||||
// console.log(res); |
||||
this.$u.toast("当前台车内物料不存在"); |
||||
}else if(res.code == '200'){ |
||||
// console.log(res); |
||||
this.dataList=res.rows |
||||
setTimeout(()=>{ |
||||
this.dataForm.containerCode='' |
||||
},0) |
||||
this.$nextTick(()=>{ |
||||
this.firstFocus = true |
||||
}) |
||||
} |
||||
}) |
||||
this.form={} |
||||
this.show=false |
||||
},400) |
||||
} |
||||
|
||||
}) |
||||
|
||||
}, |
||||
confirm(e){ |
||||
// console.log(val); |
||||
this.form.batch=e[0].label; |
||||
}, |
||||
pickUp(){ |
||||
this.ompleteArr=[] |
||||
// this.dataList.forEach(item=>{ |
||||
// this.completeArr.push({ |
||||
// id:item.invOrderNo, |
||||
// ptPart:item.ptPart, |
||||
// invQty:item.invQty, |
||||
// batch:item.batch |
||||
// }) |
||||
|
||||
|
||||
// }) |
||||
this.$u.api.invPlan.confirm({ invOrderNo:this.dataList[0].invOrderNo,ptPart:this.dataList[0].ptPart,batch:this.dataList[0].batchNo,containerCode:this.dataList[0].containerCode}).then(res=>{ |
||||
// console.log(res); |
||||
if(res.code==200){ |
||||
this.$u.toast("盘点完成"); |
||||
setTimeout(()=>{ |
||||
this.form={} |
||||
this.dataList=[] |
||||
this.$router.go(0) |
||||
},400) |
||||
} |
||||
}) |
||||
}, |
||||
// 任务查看 |
||||
searchClick() { |
||||
this.dataList = []; |
||||
this.dataForm.pageNum = 1; |
||||
this.loadList(); |
||||
}, |
||||
} |
||||
} |
||||
</script> |
||||
|
||||
<style lang="scss"> |
||||
.in-content { |
||||
display: flex; |
||||
flex-direction: column; |
||||
|
||||
.in-table { |
||||
padding: 20rpx 30rpx 0 30rpx; |
||||
} |
||||
|
||||
.in-operate { |
||||
position: fixed; |
||||
bottom: 50rpx; |
||||
left: 15%; |
||||
|
||||
.in-button { |
||||
margin-right: 50rpx; |
||||
} |
||||
} |
||||
} |
||||
.bg { |
||||
background-color: #e2a622; |
||||
} |
||||
@import "index.scss"; |
||||
.footer { |
||||
display: flex; |
||||
padding: 20rpx 0; |
||||
} |
||||
</style> |
||||
|
||||
Loading…
Reference in new issue