logwire-wms-ui-test
Version:
运匠科技wms-PDA基础组件库
310 lines (273 loc) • 8.88 kB
JavaScript
/*
* 捆包混入
* @author: 张文
* @date 2022-07-07
* */
import {projectWmsOutboundQueryPackMaterial} from "../../../../api/outbound/bale/aloneBale/action";
import containerInfo from "./components/containerInfo/index.vue";
import containerSkuQty from "./components/containerSkuQty/index.vue";
import allBlock from "./components/allBlock/index.vue";
import partBlock from "./components/partBlock/index.vue";
import delSku from './components/delSku/index.vue'
import repeatCheck from './components/repeatCheck/index.vue'
import {projectWmsOutboundMobileGetPackConfig} from "../../../../api/outbound/bale/packTableConfig";
export const baleMixins = {
components:{
containerInfo,
containerSkuQty,
allBlock,
partBlock,
delSku,
repeatCheck,
},
data(){
return {
// 显示剔除按钮
showDelBtn: true,
// 完成捆包弹框
overBalePopup:{
show: false,
// 实际重量
real:{
value: '',
focus: false
},
// 包材输入框
materials:{
value:'',
focus:false,
list:[]
},
// 放置库位
packedLocation:{
value: '',
focus: false
},
// 捆包容器
packUseContainer:{
value: '',
focus: false
},
data:{}
},
// 重新复核
repeatPopupShow: false,
// 剔除弹框
delPopupShow: false,
// 全部拦截弹框
allBlockShow: false,
// 全部拦截的数据
allBlockData:{},
// 部分拦截弹框
partBlockPopup:{
show: false,
data:{
pickContainer:'',
skuTypeCount:'',
skuQty:'',
blockData:{}
}
},
// 推荐包材
suggestMaterialList:[],
// 捆包台配置信息
packTableConfig:{},
// 打印机数据
printData:{},
}
},
computed:{
// 底部按钮
btnList(){
let list = []
if (this.packBox.boxId){
list = [
{
text: this.$lwLanguage.get('wms_project.pda.components.page.outbound.bale.components.mixins.over','完成复核(封箱)'),
click: this.overBaleOpen
},
{
text: this.$lwLanguage.get('wms_project.pda.components.page.outbound.bale.components.mixins.repeat','重新复核'),
click: this.mixinRepeatOpen
}
]
}
// 是否显示剔除按钮
if (this.packBox.boxId && this.showDelBtn){
list.push({
text: this.$lwLanguage.get('wms_project.pda.components.page.outbound.bale.components.mixins.del','剔除商品'),
click: this.mixinDelSkuOpen
})
}
// 是否显示追加商品按钮
if (this.packBox.boxId && this.showAddBtn){
list.push({
text: this.$lwLanguage.get('wms_project.pda.components.page.outbound.bale.components.mixins.add','追加'),
click: this.addSkuOpen
})
}
return list
},
},
methods: {
// 初始化获取打印机和配置信息
async mixinInit(){
// 判断当前是否配置了打印机
const {success,printData} = this.$lwPrint.test(
'OUTBOUND_BOX_LABEL',
this.$lwLanguage.get('','出库箱票标签')
)
if (!success){
history.go(-1)
throw Error('打印机设备未配置')
}
this.printData = printData
this.packTableConfig = await projectWmsOutboundMobileGetPackConfig()
},
// 完成捆包打开弹框
mixinOpenOverBale(res){
this.overBalePopup.data = res
this.overBalePopup.show = true
this.overBalePopup.real.focus = true
},
// 完成捆包 - 实际重量确认
mixinRealConfirm(){
this.overBalePopup.materials.focus = true
},
// 完成捆包 - 包材确认
mixinMaterialsConfirm(){
const materials = this.overBalePopup.materials.value
if (!materials){
this.overBalePopup.materials.focus = true
this.$lwShowErrorMsg(
this.$lwLanguage.get('wms_project.pda.components.page.outbound.bale.components.mixins.null','捆包包材不能为空')
)
return
}
// 判断是否使用推荐包材
if (
this.packTableConfig.forceUseSuggestPackMaterial &&
this.suggestMaterialList.length &&
!this.suggestMaterialList.some(item=>item.packMaterialCode===materials)
){
this.overBalePopup.materials.focus = true
this.$lwShowErrorMsg(
this.$lwLanguage.get('','捆包包材必须使用推荐的捆包包材,推荐包材:{code}',{code:this.suggestMaterialList.map(item=>item.packMaterialCode).join('、')})
)
this.overBalePopup.materials.value = ''
return
}
projectWmsOutboundQueryPackMaterial({
packMaterialCode: materials,
boxId: this.packBox.boxId
}).then(res=>{
this.overBalePopup.materials.list.unshift(res)
this.overBalePopup.materials.value = ''
}).catch(()=>{
this.overBalePopup.materials.value = ''
})
},
// 完成捆包 - 删除包材
mixinDelMaterials(index){
this.overBalePopup.materials.list.splice(index, 1)
},
// 完成捆包 - 获取捆绑包包材
mixinGetMaterials(){
// 获取每一个包材的使用量
let obj = {}
this.overBalePopup.materials.list.forEach(item=>{
if (obj[item.packMaterialId]){
obj[item.packMaterialId] = obj[item.packMaterialId] + 1
}else {
obj[item.packMaterialId] = 1
}
})
let packMaterialList = []
for (let i in obj){
packMaterialList.push({
packMaterialId: i,
qty: obj[i]
})
}
return packMaterialList
},
// 完成捆包 - 弹框关闭
mixinOverBaleOff(){
this.overBalePopup.materials.value = ''
this.overBalePopup.materials.list = []
this.overBalePopup.real.value = ''
this.overBalePopup.packedLocation ? this.overBalePopup.packedLocation.value = '' : ''
},
// 重新复核 - 打开弹框
mixinRepeatOpen(){
this.repeatPopupShow = true
},
// 剔除商品 - 打开弹框
mixinDelSkuOpen(){
this.delPopupShow = true
},
// 校验是否拦截
mixinCheckBlock(res){
if (!res.containerBlockData) return
// 全部拦截
if (res.containerBlockData.blockStatus === '200') {
this.allBlockShow = true
this.allBlockData = res.containerBlockData
}
// 部分拦截
if (res.containerBlockData.blockStatus === '100') {
this.partBlockPopup.data={
pickContainer: res.containerBlockData.pickContainer,
skuTypeCount:res.containerBlockData.skuTypeCount,
skuQty:res.containerBlockData.packQty,
blockData:res.containerBlockData.blockSkuList[0]
}
this.partBlockPopup.show = true
}
},
// 异常上报成功
mixinAbnSuccess(res){
if(res.containerPackFinish){
this.$lwToast.success(
this.$lwLanguage.get('wms_project.pda.components.page.outbound.bale.components.mixins.all','当前容器已全部捆包')
)
}
if (this.packBox.boxId){
this.getData()
}else {
history.go(-1)
}
},
// 捆包容器确认
mixinPackUseContainerConfirm(){
this.packTableConfig.needPackedLocation ? this.overBalePopup.packedLocation.focus = true : this.overBaleConfirm()
},
// 完成捆包的必填校验
mixinOverBaleCheck(){
const {packNeedUseContainerConf, needPackedLocation} = this.packTableConfig
// 校验捆包容器
let packUseContainer = this.overBalePopup.packUseContainer.value
if (packNeedUseContainerConf === '1' && !packUseContainer){
this.overBalePopup.packUseContainer.focus = true
this.$lwShowErrorMsg(
this.$lwLanguage.get('','捆包容器不能为空')
)
return {success:false}
}
// 校验放置库位
let packedLocation = this.overBalePopup.packedLocation.value
if (needPackedLocation && !packedLocation){
this.overBalePopup.packedLocation.focus = true
this.$lwShowErrorMsg(
this.$lwLanguage.get('','放置库位不能为空')
)
return {success:false}
}
return {
success:true,
packUseContainer,
packedLocation
}
}
}
}