10 changed files with 1337 additions and 90 deletions
@ -0,0 +1,403 @@ |
|||
<template> |
|||
<page-meta root-font-size="18px"></page-meta> |
|||
<view class=""> |
|||
<win-blank-view @goScan='openScanPopup' v-if="itemList.length==0"></win-blank-view> |
|||
<scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y" @scrolltoupper="upper" |
|||
@scrolltolower="lower" @scroll="scroll" style="padding-bottom:150px"> |
|||
<view class="detail-list " v-for="(item, index) in itemList" :key="index"> |
|||
<view class="detail-content"> |
|||
<view class="" style=""> |
|||
<view class="uni-flex uni-row u-col-center"> |
|||
<view class="" style="margin-top: 20rpx; margin-left: 10rpx; font-weight: bold;"> |
|||
({{index+1}}). |
|||
</view> |
|||
<comItemCode :itemData="item"></comItemCode> |
|||
</view> |
|||
|
|||
<uni-table border stripe style=""> |
|||
<!-- <uni-tr> |
|||
<uni-td align="center">物品代码</uni-td> |
|||
<uni-td>{{item.itemCode}}</uni-td> |
|||
</uni-tr> --> |
|||
<uni-tr> |
|||
<uni-td align="center">单位</uni-td> |
|||
<uni-td>{{item.uom}}</uni-td> |
|||
</uni-tr> |
|||
<uni-tr> |
|||
<uni-td align="center">标包数</uni-td> |
|||
<uni-td>{{item.stdPackQty}}</uni-td> |
|||
</uni-tr> |
|||
<uni-tr> |
|||
<uni-td align="center">来源库位</uni-td> |
|||
<uni-td>{{item.fromLocationCode}}</uni-td> |
|||
</uni-tr> |
|||
|
|||
<uni-tr> |
|||
<uni-td align="center">数量</uni-td> |
|||
<uni-td> |
|||
<view class="uni-flex uni-row"> |
|||
<view class="uni-flex uni-row space-between" style="width: 100%;"> |
|||
<view class=""> |
|||
<com-number-box :ref="'comNumberBox_'+index" v-model="item.qty" |
|||
:max="99999" :min="0" @change="qtyChanged($event,item,index)"> |
|||
</com-number-box> |
|||
</view> |
|||
|
|||
<view class=""> |
|||
<button type="primary" size="mini" style="margin-left: 30rpx;" |
|||
@click="remove(item,index)">移除</button> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</uni-td> |
|||
</uni-tr> |
|||
</uni-table> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</scroll-view> |
|||
|
|||
<div class="new_bot_box" v-show="itemList.length>0"> |
|||
<win-collapse-location ref="location" @getLocationCode='getToLocation' @clear='clear'> |
|||
</win-collapse-location> |
|||
<view class="new_btn_bot bot_pos uni-flex"> |
|||
<button class="new_clear_btn btn_double" @click="cancel()">清空</button> |
|||
<button class="new_save_btn btn_double" @click="submit()">提交</button> |
|||
</view> |
|||
</div> |
|||
<win-scan-button @goScan='openScanPopup' v-if="itemList.length>0"></win-scan-button> |
|||
<winScanByProductCode ref="scanPackPopup" title="产品编码" @getScanResult='getScanResult'></winScanByProductCode> |
|||
<com-balance ref="balanceItems" @selectedItem='selectedBalanceItem'></com-balance> |
|||
<com-message ref="comMessage" @afterClose='afterCloseMessagg'></com-message> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
locations, |
|||
getBalancesByFilter, |
|||
completeTransfer |
|||
} from '@/api/index.js'; |
|||
|
|||
import { |
|||
showConfirmMsg, |
|||
goHome, |
|||
getRemoveOption |
|||
} from '@/common/basic.js'; |
|||
|
|||
import winBlankView from '@/mycomponents/wincom/winBlankView.vue' |
|||
import comBalanceItem from '@/mycomponents/comItem/comBalanceItem.vue' |
|||
import winScanButton from '@/mycomponents/wincom/winScanButton.vue' |
|||
import winScanByPack from '@/mycomponents/wincom/winScanByPack.vue' |
|||
import comMessage from '@/mycomponents/common/comMessage.vue' |
|||
import comBalance from '@/mycomponents/common/comBalance.vue' |
|||
import winCollapseLocation from '@/mycomponents/wincom/winCollapseLocation.vue' |
|||
import winScanByProductCode from '@/mycomponents/wincom/winScanByProductCode.vue' |
|||
import comItemCode from '@/mycomponents/comItem/comItemCode.vue' |
|||
import comNumberBox from '@/mycomponents/common/comNumberBox.vue'; |
|||
|
|||
export default { |
|||
name: 'comtransfer', |
|||
components: { |
|||
winBlankView, |
|||
comBalanceItem, |
|||
comMessage, |
|||
winScanButton, |
|||
comBalance, |
|||
winCollapseLocation, |
|||
winScanByProductCode, |
|||
comItemCode, |
|||
comNumberBox |
|||
}, |
|||
data() { |
|||
return { |
|||
options: [], |
|||
itemList: [], |
|||
fromLocationCode: '', |
|||
fromLocationInfo: {}, |
|||
toLocationCode: '', |
|||
scrollTop: 0, |
|||
old: { |
|||
scrollTop: 0 |
|||
}, |
|||
inventoryStatus: -1, |
|||
inventoryStatusArray: [], |
|||
isClearPackCode: false, //清除箱码 |
|||
isClearContainerCode: false, //清除托码 |
|||
isClearLot: false, //清除批次, |
|||
locationErpCode: '', |
|||
toLocationErpCode: '', |
|||
locationGotFocus: false, |
|||
transferType:"Transfer_Coating" |
|||
}; |
|||
}, |
|||
props: { |
|||
// locationTypes: { |
|||
// type: [Array, String, Number], |
|||
// value: '' |
|||
// }, |
|||
byLocation: { |
|||
type: Boolean, |
|||
value: false |
|||
}, |
|||
}, |
|||
|
|||
watch: {}, |
|||
mounted: function() { |
|||
this.openScanPopup(); |
|||
this.options = getRemoveOption(); |
|||
|
|||
}, |
|||
|
|||
|
|||
methods: { |
|||
openScanPopup() { |
|||
this.$refs.scanPackPopup.openScanPopup() |
|||
}, |
|||
//提示是否移除选择的行? |
|||
swipeClick(e, index) { |
|||
let { |
|||
content |
|||
} = e; |
|||
if (content.text === '移除') { |
|||
uni.showModal({ |
|||
title: '提示', |
|||
content: '是否移除选择的行?', |
|||
success: res => { |
|||
if (res.confirm) { |
|||
this.itemList.splice(index, 1); |
|||
} |
|||
} |
|||
}); |
|||
} |
|||
}, |
|||
|
|||
getScanResult(result) { |
|||
let that = this; |
|||
let code = result.itemCode; |
|||
let datas = that.itemList.filter(r => { |
|||
return r.itemCode == code |
|||
}) |
|||
|
|||
if (datas.length > 0) { |
|||
showConfirmMsg('物料【' + code + '】已经存在,是否要重新扫描?', confirm => { |
|||
if (confirm) { |
|||
that.itemList.forEach((r, i) => { |
|||
if (r.packingCode == code) { |
|||
that.itemList.splice(i, 1); |
|||
return; |
|||
} |
|||
}); |
|||
// that.getBalance(code); |
|||
} |
|||
}); |
|||
} else { |
|||
var item = { |
|||
itemCode: result.itemCode, |
|||
itemName: result.itemName, |
|||
itemDesc1: result.itemDesc1, |
|||
stdPackQty: result.stdPackQty, |
|||
uom: result.uom, |
|||
qty: result.stdPackQty, |
|||
fromLocationCode: "ZPCP1", |
|||
fromStatus: 2, |
|||
toStatus:2 |
|||
} |
|||
|
|||
this.itemList.unshift(item); |
|||
this.$refs.scanPackPopup.closeScanPopup() |
|||
} |
|||
}, |
|||
|
|||
qtyChanged(value, item, index) { |
|||
if (value <= 0) { |
|||
this.showMessage('退货数量必须大于0') |
|||
item.handledQty = item.qty |
|||
this.$refs['comNumberBox_' + index][0].setValue(item.handledQty); |
|||
} |
|||
}, |
|||
getFromLocation(code, callBack) { |
|||
locations(code).then(res => { |
|||
if (res) { |
|||
this.fromLocationInfo = res; |
|||
callBack(true) |
|||
} |
|||
}).catch(err => { |
|||
callBack(false) |
|||
}) |
|||
}, |
|||
|
|||
getToLocation(code) { |
|||
if (code == '') { |
|||
this.showMessage('目标库位不能为空'); |
|||
return; |
|||
} |
|||
uni.showLoading({ |
|||
title: "扫描中", |
|||
mask: true |
|||
}); |
|||
let that = this; |
|||
locations(code).then(res => { |
|||
if (res == null) { |
|||
that.toLocationCode = '' |
|||
that.showMessage('目标库位【' + code + '】不存在'); |
|||
this.$refs.location.clearLocation() |
|||
this.locationGotFocus = true; |
|||
} else { |
|||
that.toLocationCode = code; |
|||
that.toLocationErpCode = res.erpLocationCode; |
|||
} |
|||
uni.hideLoading(); |
|||
}).catch(err => { |
|||
that.toLocationCode = '' |
|||
this.locationGotFocus = true; |
|||
that.showMessage(err.message); |
|||
uni.hideLoading(); |
|||
}) |
|||
}, |
|||
|
|||
clear() { |
|||
this.location = null; |
|||
this.toLocationCode = ""; |
|||
}, |
|||
|
|||
submit() { |
|||
let that = this; |
|||
if (that.itemList.length === 0) { |
|||
this.showMessage('请选择要提交的零件'); |
|||
return; |
|||
} |
|||
if (that.toLocationCode === '') { |
|||
this.showMessage('请扫描目标库位'); |
|||
return; |
|||
} |
|||
this.getFromLocation(this.itemList[0].fromLocationCode, res => { |
|||
if (res) { |
|||
uni.showLoading({ |
|||
title: "提交中....", |
|||
mask: true |
|||
}); |
|||
let item = { |
|||
worker: localStorage.userName_CN == "" ? localStorage.userName : localStorage |
|||
.userName_CN, |
|||
warehouseCode: localStorage.warehouseCode, |
|||
jobNumber: "", |
|||
supplierCode: "", |
|||
company: localStorage.company, |
|||
number: "", |
|||
type: this.transferType, |
|||
details: [] |
|||
} |
|||
|
|||
this.itemList.forEach(r => { |
|||
r.toLocationCode = that.toLocationCode; |
|||
r.toLocationErpCode = this.toLocationErpCode |
|||
r.fromLot =""; |
|||
r.fromLocationArea = this.fromLocationInfo.areaCode; |
|||
r.fromLocationGroup = this.fromLocationInfo.locationGroupCode; |
|||
r.fromLocationErpCode = this.fromLocationInfo.erpLocationCode; |
|||
r.fromWarehouseCode = localStorage.warehouseCode; |
|||
|
|||
r.toLot =""; |
|||
r.fromPackingCode=""; |
|||
r.toPackingCode = ""; |
|||
|
|||
r.toWarehouseCode =localStorage.warehouseCode; |
|||
r.worker = localStorage.userName_CN == "" ? localStorage.userName : |
|||
localStorage.userName_CN |
|||
item.details.push(r); |
|||
}) |
|||
|
|||
let params = JSON.stringify(item); |
|||
console.log('params', params); |
|||
completeTransfer(params) |
|||
.then(res => { |
|||
that.showCommitSuccess(); |
|||
that.clearInfo(); |
|||
uni.hideLoading(); |
|||
}) |
|||
.catch(err => { |
|||
that.showMessage(err.message); |
|||
uni.hideLoading(); |
|||
}); |
|||
} |
|||
}) |
|||
|
|||
}, |
|||
|
|||
cancel() { |
|||
let that = this; |
|||
showConfirmMsg('是否要清空已扫描的零件和目标库位信息?', confirm => { |
|||
if (confirm) { |
|||
that.clearInfo(); |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
clearInfo() { |
|||
let that = this; |
|||
that.itemList = []; |
|||
that.toLocationCode = ''; |
|||
that.inventoryStatus = -1; |
|||
that.$refs.location.clearLocation() |
|||
}, |
|||
|
|||
afterCloseMessagg() { |
|||
if (this.locationGotFocus) { |
|||
this.$refs.location.gotFocus(); |
|||
} |
|||
}, |
|||
|
|||
clearPackCode() { |
|||
this.isClearPackCode = !this.isClearPackCode; |
|||
}, |
|||
|
|||
clearContainerCode() { |
|||
this.isClearContainerCode = !this.isClearContainerCode; |
|||
}, |
|||
|
|||
clearLot() { |
|||
this.isClearLot = !this.isClearLot; |
|||
}, |
|||
|
|||
upper: function(e) { |
|||
// console.log(e) |
|||
}, |
|||
lower: function(e) { |
|||
// console.log(e) |
|||
}, |
|||
scroll: function(e) { |
|||
// console.log(e) |
|||
this.old.scrollTop = e.detail.scrollTop; |
|||
}, |
|||
showMessage(message) { |
|||
this.$refs.comMessage.showMessage(message); |
|||
}, |
|||
showCommitSuccess() { |
|||
this.$refs.comMessage.showCommitSuccess(); |
|||
}, |
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
/deep/ .input-value { |
|||
font-size: 16px; |
|||
} |
|||
|
|||
/deep/ .uni-collapse-item__title-text { |
|||
font-size: 16px; |
|||
} |
|||
|
|||
/deep/ .uni-collapse-item--border { |
|||
border-bottom-width: 0px; |
|||
border-bottom-color: #ebeef5; |
|||
} |
|||
|
|||
/deep/ .uni-collapse-item--border { |
|||
border-bottom-width: 1px; |
|||
border-bottom-color: #ebeef5; |
|||
} |
|||
</style> |
@ -0,0 +1,403 @@ |
|||
<template> |
|||
<page-meta root-font-size="18px"></page-meta> |
|||
<view class=""> |
|||
<win-blank-view @goScan='openScanPopup' v-if="itemList.length==0"></win-blank-view> |
|||
<scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y" @scrolltoupper="upper" |
|||
@scrolltolower="lower" @scroll="scroll" style="padding-bottom:150px"> |
|||
<view class="detail-list " v-for="(item, index) in itemList" :key="index"> |
|||
<view class="detail-content"> |
|||
<view class="" style=""> |
|||
<view class="uni-flex uni-row u-col-center"> |
|||
<view class="" style="margin-top: 20rpx; margin-left: 10rpx; font-weight: bold;"> |
|||
({{index+1}}). |
|||
</view> |
|||
<comItemCode :itemData="item"></comItemCode> |
|||
</view> |
|||
|
|||
<uni-table border stripe style=""> |
|||
<!-- <uni-tr> |
|||
<uni-td align="center">物品代码</uni-td> |
|||
<uni-td>{{item.itemCode}}</uni-td> |
|||
</uni-tr> --> |
|||
<uni-tr> |
|||
<uni-td align="center">单位</uni-td> |
|||
<uni-td>{{item.uom}}</uni-td> |
|||
</uni-tr> |
|||
<uni-tr> |
|||
<uni-td align="center">标包数</uni-td> |
|||
<uni-td>{{item.stdPackQty}}</uni-td> |
|||
</uni-tr> |
|||
<uni-tr> |
|||
<uni-td align="center">来源库位</uni-td> |
|||
<uni-td>{{item.fromLocationCode}}</uni-td> |
|||
</uni-tr> |
|||
|
|||
<uni-tr> |
|||
<uni-td align="center">数量</uni-td> |
|||
<uni-td> |
|||
<view class="uni-flex uni-row"> |
|||
<view class="uni-flex uni-row space-between" style="width: 100%;"> |
|||
<view class=""> |
|||
<com-number-box :ref="'comNumberBox_'+index" v-model="item.qty" |
|||
:max="99999" :min="0" @change="qtyChanged($event,item,index)"> |
|||
</com-number-box> |
|||
</view> |
|||
|
|||
<view class=""> |
|||
<button type="primary" size="mini" style="margin-left: 30rpx;" |
|||
@click="remove(item,index)">移除</button> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</uni-td> |
|||
</uni-tr> |
|||
</uni-table> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</scroll-view> |
|||
|
|||
<div class="new_bot_box" v-show="itemList.length>0"> |
|||
<win-collapse-location ref="location" @getLocationCode='getToLocation' @clear='clear'> |
|||
</win-collapse-location> |
|||
<view class="new_btn_bot bot_pos uni-flex"> |
|||
<button class="new_clear_btn btn_double" @click="cancel()">清空</button> |
|||
<button class="new_save_btn btn_double" @click="submit()">提交</button> |
|||
</view> |
|||
</div> |
|||
<win-scan-button @goScan='openScanPopup' v-if="itemList.length>0"></win-scan-button> |
|||
<winScanByProductCode ref="scanPackPopup" title="产品编码" @getScanResult='getScanResult'></winScanByProductCode> |
|||
<com-balance ref="balanceItems" @selectedItem='selectedBalanceItem'></com-balance> |
|||
<com-message ref="comMessage" @afterClose='afterCloseMessagg'></com-message> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
locations, |
|||
getBalancesByFilter, |
|||
completeTransfer |
|||
} from '@/api/index.js'; |
|||
|
|||
import { |
|||
showConfirmMsg, |
|||
goHome, |
|||
getRemoveOption |
|||
} from '@/common/basic.js'; |
|||
|
|||
import winBlankView from '@/mycomponents/wincom/winBlankView.vue' |
|||
import comBalanceItem from '@/mycomponents/comItem/comBalanceItem.vue' |
|||
import winScanButton from '@/mycomponents/wincom/winScanButton.vue' |
|||
import winScanByPack from '@/mycomponents/wincom/winScanByPack.vue' |
|||
import comMessage from '@/mycomponents/common/comMessage.vue' |
|||
import comBalance from '@/mycomponents/common/comBalance.vue' |
|||
import winCollapseLocation from '@/mycomponents/wincom/winCollapseLocation.vue' |
|||
import winScanByProductCode from '@/mycomponents/wincom/winScanByProductCode.vue' |
|||
import comItemCode from '@/mycomponents/comItem/comItemCode.vue' |
|||
import comNumberBox from '@/mycomponents/common/comNumberBox.vue'; |
|||
|
|||
export default { |
|||
name: 'comtransfer', |
|||
components: { |
|||
winBlankView, |
|||
comBalanceItem, |
|||
comMessage, |
|||
winScanButton, |
|||
comBalance, |
|||
winCollapseLocation, |
|||
winScanByProductCode, |
|||
comItemCode, |
|||
comNumberBox |
|||
}, |
|||
data() { |
|||
return { |
|||
options: [], |
|||
itemList: [], |
|||
fromLocationCode: '', |
|||
fromLocationInfo: {}, |
|||
toLocationCode: '', |
|||
scrollTop: 0, |
|||
old: { |
|||
scrollTop: 0 |
|||
}, |
|||
inventoryStatus: -1, |
|||
inventoryStatusArray: [], |
|||
isClearPackCode: false, //清除箱码 |
|||
isClearContainerCode: false, //清除托码 |
|||
isClearLot: false, //清除批次, |
|||
locationErpCode: '', |
|||
toLocationErpCode: '', |
|||
locationGotFocus: false, |
|||
transferType:"Transfer_Injection" |
|||
}; |
|||
}, |
|||
props: { |
|||
// locationTypes: { |
|||
// type: [Array, String, Number], |
|||
// value: '' |
|||
// }, |
|||
byLocation: { |
|||
type: Boolean, |
|||
value: false |
|||
}, |
|||
}, |
|||
|
|||
watch: {}, |
|||
mounted: function() { |
|||
this.openScanPopup(); |
|||
this.options = getRemoveOption(); |
|||
|
|||
}, |
|||
|
|||
|
|||
methods: { |
|||
openScanPopup() { |
|||
this.$refs.scanPackPopup.openScanPopup() |
|||
}, |
|||
//提示是否移除选择的行? |
|||
swipeClick(e, index) { |
|||
let { |
|||
content |
|||
} = e; |
|||
if (content.text === '移除') { |
|||
uni.showModal({ |
|||
title: '提示', |
|||
content: '是否移除选择的行?', |
|||
success: res => { |
|||
if (res.confirm) { |
|||
this.itemList.splice(index, 1); |
|||
} |
|||
} |
|||
}); |
|||
} |
|||
}, |
|||
|
|||
getScanResult(result) { |
|||
let that = this; |
|||
let code = result.itemCode; |
|||
let datas = that.itemList.filter(r => { |
|||
return r.itemCode == code |
|||
}) |
|||
|
|||
if (datas.length > 0) { |
|||
showConfirmMsg('物料【' + code + '】已经存在,是否要重新扫描?', confirm => { |
|||
if (confirm) { |
|||
that.itemList.forEach((r, i) => { |
|||
if (r.packingCode == code) { |
|||
that.itemList.splice(i, 1); |
|||
return; |
|||
} |
|||
}); |
|||
// that.getBalance(code); |
|||
} |
|||
}); |
|||
} else { |
|||
var item = { |
|||
itemCode: result.itemCode, |
|||
itemName: result.itemName, |
|||
itemDesc1: result.itemDesc1, |
|||
stdPackQty: result.stdPackQty, |
|||
uom: result.uom, |
|||
qty: result.stdPackQty, |
|||
fromLocationCode: "ZPCP1", |
|||
fromStatus: 2, |
|||
toStatus:2 |
|||
} |
|||
|
|||
this.itemList.unshift(item); |
|||
this.$refs.scanPackPopup.closeScanPopup() |
|||
} |
|||
}, |
|||
|
|||
qtyChanged(value, item, index) { |
|||
if (value <= 0) { |
|||
this.showMessage('退货数量必须大于0') |
|||
item.handledQty = item.qty |
|||
this.$refs['comNumberBox_' + index][0].setValue(item.handledQty); |
|||
} |
|||
}, |
|||
getFromLocation(code, callBack) { |
|||
locations(code).then(res => { |
|||
if (res) { |
|||
this.fromLocationInfo = res; |
|||
callBack(true) |
|||
} |
|||
}).catch(err => { |
|||
callBack(false) |
|||
}) |
|||
}, |
|||
|
|||
getToLocation(code) { |
|||
if (code == '') { |
|||
this.showMessage('目标库位不能为空'); |
|||
return; |
|||
} |
|||
uni.showLoading({ |
|||
title: "扫描中", |
|||
mask: true |
|||
}); |
|||
let that = this; |
|||
locations(code).then(res => { |
|||
if (res == null) { |
|||
that.toLocationCode = '' |
|||
that.showMessage('目标库位【' + code + '】不存在'); |
|||
this.$refs.location.clearLocation() |
|||
this.locationGotFocus = true; |
|||
} else { |
|||
that.toLocationCode = code; |
|||
that.toLocationErpCode = res.erpLocationCode; |
|||
} |
|||
uni.hideLoading(); |
|||
}).catch(err => { |
|||
that.toLocationCode = '' |
|||
this.locationGotFocus = true; |
|||
that.showMessage(err.message); |
|||
uni.hideLoading(); |
|||
}) |
|||
}, |
|||
|
|||
clear() { |
|||
this.location = null; |
|||
this.toLocationCode = ""; |
|||
}, |
|||
|
|||
submit() { |
|||
let that = this; |
|||
if (that.itemList.length === 0) { |
|||
this.showMessage('请选择要提交的零件'); |
|||
return; |
|||
} |
|||
if (that.toLocationCode === '') { |
|||
this.showMessage('请扫描目标库位'); |
|||
return; |
|||
} |
|||
this.getFromLocation(this.itemList[0].fromLocationCode, res => { |
|||
if (res) { |
|||
uni.showLoading({ |
|||
title: "提交中....", |
|||
mask: true |
|||
}); |
|||
let item = { |
|||
worker: localStorage.userName_CN == "" ? localStorage.userName : localStorage |
|||
.userName_CN, |
|||
warehouseCode: localStorage.warehouseCode, |
|||
jobNumber: "", |
|||
supplierCode: "", |
|||
company: localStorage.company, |
|||
number: "", |
|||
type: this.transferType, |
|||
details: [] |
|||
} |
|||
|
|||
this.itemList.forEach(r => { |
|||
r.toLocationCode = that.toLocationCode; |
|||
r.toLocationErpCode = this.toLocationErpCode |
|||
r.fromLot =""; |
|||
r.fromLocationArea = this.fromLocationInfo.areaCode; |
|||
r.fromLocationGroup = this.fromLocationInfo.locationGroupCode; |
|||
r.fromLocationErpCode = this.fromLocationInfo.erpLocationCode; |
|||
r.fromWarehouseCode = localStorage.warehouseCode; |
|||
|
|||
r.toLot =""; |
|||
r.fromPackingCode=""; |
|||
r.toPackingCode = ""; |
|||
|
|||
r.toWarehouseCode =localStorage.warehouseCode; |
|||
r.worker = localStorage.userName_CN == "" ? localStorage.userName : |
|||
localStorage.userName_CN |
|||
item.details.push(r); |
|||
}) |
|||
|
|||
let params = JSON.stringify(item); |
|||
console.log('params', params); |
|||
completeTransfer(params) |
|||
.then(res => { |
|||
that.showCommitSuccess(); |
|||
that.clearInfo(); |
|||
uni.hideLoading(); |
|||
}) |
|||
.catch(err => { |
|||
that.showMessage(err.message); |
|||
uni.hideLoading(); |
|||
}); |
|||
} |
|||
}) |
|||
|
|||
}, |
|||
|
|||
cancel() { |
|||
let that = this; |
|||
showConfirmMsg('是否要清空已扫描的零件和目标库位信息?', confirm => { |
|||
if (confirm) { |
|||
that.clearInfo(); |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
clearInfo() { |
|||
let that = this; |
|||
that.itemList = []; |
|||
that.toLocationCode = ''; |
|||
that.inventoryStatus = -1; |
|||
that.$refs.location.clearLocation() |
|||
}, |
|||
|
|||
afterCloseMessagg() { |
|||
if (this.locationGotFocus) { |
|||
this.$refs.location.gotFocus(); |
|||
} |
|||
}, |
|||
|
|||
clearPackCode() { |
|||
this.isClearPackCode = !this.isClearPackCode; |
|||
}, |
|||
|
|||
clearContainerCode() { |
|||
this.isClearContainerCode = !this.isClearContainerCode; |
|||
}, |
|||
|
|||
clearLot() { |
|||
this.isClearLot = !this.isClearLot; |
|||
}, |
|||
|
|||
upper: function(e) { |
|||
// console.log(e) |
|||
}, |
|||
lower: function(e) { |
|||
// console.log(e) |
|||
}, |
|||
scroll: function(e) { |
|||
// console.log(e) |
|||
this.old.scrollTop = e.detail.scrollTop; |
|||
}, |
|||
showMessage(message) { |
|||
this.$refs.comMessage.showMessage(message); |
|||
}, |
|||
showCommitSuccess() { |
|||
this.$refs.comMessage.showCommitSuccess(); |
|||
}, |
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
/deep/ .input-value { |
|||
font-size: 16px; |
|||
} |
|||
|
|||
/deep/ .uni-collapse-item__title-text { |
|||
font-size: 16px; |
|||
} |
|||
|
|||
/deep/ .uni-collapse-item--border { |
|||
border-bottom-width: 0px; |
|||
border-bottom-color: #ebeef5; |
|||
} |
|||
|
|||
/deep/ .uni-collapse-item--border { |
|||
border-bottom-width: 1px; |
|||
border-bottom-color: #ebeef5; |
|||
} |
|||
</style> |
@ -0,0 +1,403 @@ |
|||
<template> |
|||
<page-meta root-font-size="18px"></page-meta> |
|||
<view class=""> |
|||
<win-blank-view @goScan='openScanPopup' v-if="itemList.length==0"></win-blank-view> |
|||
<scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y" @scrolltoupper="upper" |
|||
@scrolltolower="lower" @scroll="scroll" style="padding-bottom:150px"> |
|||
<view class="detail-list " v-for="(item, index) in itemList" :key="index"> |
|||
<view class="detail-content"> |
|||
<view class="" style=""> |
|||
<view class="uni-flex uni-row u-col-center"> |
|||
<view class="" style="margin-top: 20rpx; margin-left: 10rpx; font-weight: bold;"> |
|||
({{index+1}}). |
|||
</view> |
|||
<comItemCode :itemData="item"></comItemCode> |
|||
</view> |
|||
|
|||
<uni-table border stripe style=""> |
|||
<!-- <uni-tr> |
|||
<uni-td align="center">物品代码</uni-td> |
|||
<uni-td>{{item.itemCode}}</uni-td> |
|||
</uni-tr> --> |
|||
<uni-tr> |
|||
<uni-td align="center">单位</uni-td> |
|||
<uni-td>{{item.uom}}</uni-td> |
|||
</uni-tr> |
|||
<uni-tr> |
|||
<uni-td align="center">标包数</uni-td> |
|||
<uni-td>{{item.stdPackQty}}</uni-td> |
|||
</uni-tr> |
|||
<uni-tr> |
|||
<uni-td align="center">来源库位</uni-td> |
|||
<uni-td>{{item.fromLocationCode}}</uni-td> |
|||
</uni-tr> |
|||
|
|||
<uni-tr> |
|||
<uni-td align="center">数量</uni-td> |
|||
<uni-td> |
|||
<view class="uni-flex uni-row"> |
|||
<view class="uni-flex uni-row space-between" style="width: 100%;"> |
|||
<view class=""> |
|||
<com-number-box :ref="'comNumberBox_'+index" v-model="item.qty" |
|||
:max="99999" :min="0" @change="qtyChanged($event,item,index)"> |
|||
</com-number-box> |
|||
</view> |
|||
|
|||
<view class=""> |
|||
<button type="primary" size="mini" style="margin-left: 30rpx;" |
|||
@click="remove(item,index)">移除</button> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</uni-td> |
|||
</uni-tr> |
|||
</uni-table> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</scroll-view> |
|||
|
|||
<div class="new_bot_box" v-show="itemList.length>0"> |
|||
<win-collapse-location ref="location" @getLocationCode='getToLocation' @clear='clear'> |
|||
</win-collapse-location> |
|||
<view class="new_btn_bot bot_pos uni-flex"> |
|||
<button class="new_clear_btn btn_double" @click="cancel()">清空</button> |
|||
<button class="new_save_btn btn_double" @click="submit()">提交</button> |
|||
</view> |
|||
</div> |
|||
<win-scan-button @goScan='openScanPopup' v-if="itemList.length>0"></win-scan-button> |
|||
<winScanByProductCode ref="scanPackPopup" title="产品编码" @getScanResult='getScanResult'></winScanByProductCode> |
|||
<com-balance ref="balanceItems" @selectedItem='selectedBalanceItem'></com-balance> |
|||
<com-message ref="comMessage" @afterClose='afterCloseMessagg'></com-message> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { |
|||
locations, |
|||
getBalancesByFilter, |
|||
completeTransfer |
|||
} from '@/api/index.js'; |
|||
|
|||
import { |
|||
showConfirmMsg, |
|||
goHome, |
|||
getRemoveOption |
|||
} from '@/common/basic.js'; |
|||
|
|||
import winBlankView from '@/mycomponents/wincom/winBlankView.vue' |
|||
import comBalanceItem from '@/mycomponents/comItem/comBalanceItem.vue' |
|||
import winScanButton from '@/mycomponents/wincom/winScanButton.vue' |
|||
import winScanByPack from '@/mycomponents/wincom/winScanByPack.vue' |
|||
import comMessage from '@/mycomponents/common/comMessage.vue' |
|||
import comBalance from '@/mycomponents/common/comBalance.vue' |
|||
import winCollapseLocation from '@/mycomponents/wincom/winCollapseLocation.vue' |
|||
import winScanByProductCode from '@/mycomponents/wincom/winScanByProductCode.vue' |
|||
import comItemCode from '@/mycomponents/comItem/comItemCode.vue' |
|||
import comNumberBox from '@/mycomponents/common/comNumberBox.vue'; |
|||
|
|||
export default { |
|||
name: 'comtransfer', |
|||
components: { |
|||
winBlankView, |
|||
comBalanceItem, |
|||
comMessage, |
|||
winScanButton, |
|||
comBalance, |
|||
winCollapseLocation, |
|||
winScanByProductCode, |
|||
comItemCode, |
|||
comNumberBox |
|||
}, |
|||
data() { |
|||
return { |
|||
options: [], |
|||
itemList: [], |
|||
fromLocationCode: '', |
|||
fromLocationInfo: {}, |
|||
toLocationCode: '', |
|||
scrollTop: 0, |
|||
old: { |
|||
scrollTop: 0 |
|||
}, |
|||
inventoryStatus: -1, |
|||
inventoryStatusArray: [], |
|||
isClearPackCode: false, //清除箱码 |
|||
isClearContainerCode: false, //清除托码 |
|||
isClearLot: false, //清除批次, |
|||
locationErpCode: '', |
|||
toLocationErpCode: '', |
|||
locationGotFocus: false, |
|||
transferType:"Transfer_Injection" |
|||
}; |
|||
}, |
|||
props: { |
|||
// locationTypes: { |
|||
// type: [Array, String, Number], |
|||
// value: '' |
|||
// }, |
|||
byLocation: { |
|||
type: Boolean, |
|||
value: false |
|||
}, |
|||
}, |
|||
|
|||
watch: {}, |
|||
mounted: function() { |
|||
this.openScanPopup(); |
|||
this.options = getRemoveOption(); |
|||
|
|||
}, |
|||
|
|||
|
|||
methods: { |
|||
openScanPopup() { |
|||
this.$refs.scanPackPopup.openScanPopup() |
|||
}, |
|||
//提示是否移除选择的行? |
|||
swipeClick(e, index) { |
|||
let { |
|||
content |
|||
} = e; |
|||
if (content.text === '移除') { |
|||
uni.showModal({ |
|||
title: '提示', |
|||
content: '是否移除选择的行?', |
|||
success: res => { |
|||
if (res.confirm) { |
|||
this.itemList.splice(index, 1); |
|||
} |
|||
} |
|||
}); |
|||
} |
|||
}, |
|||
|
|||
getScanResult(result) { |
|||
let that = this; |
|||
let code = result.itemCode; |
|||
let datas = that.itemList.filter(r => { |
|||
return r.itemCode == code |
|||
}) |
|||
|
|||
if (datas.length > 0) { |
|||
showConfirmMsg('物料【' + code + '】已经存在,是否要重新扫描?', confirm => { |
|||
if (confirm) { |
|||
that.itemList.forEach((r, i) => { |
|||
if (r.packingCode == code) { |
|||
that.itemList.splice(i, 1); |
|||
return; |
|||
} |
|||
}); |
|||
// that.getBalance(code); |
|||
} |
|||
}); |
|||
} else { |
|||
var item = { |
|||
itemCode: result.itemCode, |
|||
itemName: result.itemName, |
|||
itemDesc1: result.itemDesc1, |
|||
stdPackQty: result.stdPackQty, |
|||
uom: result.uom, |
|||
qty: result.stdPackQty, |
|||
fromLocationCode: "ZPCP1", |
|||
fromStatus: 2, |
|||
toStatus:2 |
|||
} |
|||
|
|||
this.itemList.unshift(item); |
|||
this.$refs.scanPackPopup.closeScanPopup() |
|||
} |
|||
}, |
|||
|
|||
qtyChanged(value, item, index) { |
|||
if (value <= 0) { |
|||
this.showMessage('退货数量必须大于0') |
|||
item.handledQty = item.qty |
|||
this.$refs['comNumberBox_' + index][0].setValue(item.handledQty); |
|||
} |
|||
}, |
|||
getFromLocation(code, callBack) { |
|||
locations(code).then(res => { |
|||
if (res) { |
|||
this.fromLocationInfo = res; |
|||
callBack(true) |
|||
} |
|||
}).catch(err => { |
|||
callBack(false) |
|||
}) |
|||
}, |
|||
|
|||
getToLocation(code) { |
|||
if (code == '') { |
|||
this.showMessage('目标库位不能为空'); |
|||
return; |
|||
} |
|||
uni.showLoading({ |
|||
title: "扫描中", |
|||
mask: true |
|||
}); |
|||
let that = this; |
|||
locations(code).then(res => { |
|||
if (res == null) { |
|||
that.toLocationCode = '' |
|||
that.showMessage('目标库位【' + code + '】不存在'); |
|||
this.$refs.location.clearLocation() |
|||
this.locationGotFocus = true; |
|||
} else { |
|||
that.toLocationCode = code; |
|||
that.toLocationErpCode = res.erpLocationCode; |
|||
} |
|||
uni.hideLoading(); |
|||
}).catch(err => { |
|||
that.toLocationCode = '' |
|||
this.locationGotFocus = true; |
|||
that.showMessage(err.message); |
|||
uni.hideLoading(); |
|||
}) |
|||
}, |
|||
|
|||
clear() { |
|||
this.location = null; |
|||
this.toLocationCode = ""; |
|||
}, |
|||
|
|||
submit() { |
|||
let that = this; |
|||
if (that.itemList.length === 0) { |
|||
this.showMessage('请选择要提交的零件'); |
|||
return; |
|||
} |
|||
if (that.toLocationCode === '') { |
|||
this.showMessage('请扫描目标库位'); |
|||
return; |
|||
} |
|||
this.getFromLocation(this.itemList[0].fromLocationCode, res => { |
|||
if (res) { |
|||
uni.showLoading({ |
|||
title: "提交中....", |
|||
mask: true |
|||
}); |
|||
let item = { |
|||
worker: localStorage.userName_CN == "" ? localStorage.userName : localStorage |
|||
.userName_CN, |
|||
warehouseCode: localStorage.warehouseCode, |
|||
jobNumber: "", |
|||
supplierCode: "", |
|||
company: localStorage.company, |
|||
number: "", |
|||
type: this.transferType, |
|||
details: [] |
|||
} |
|||
|
|||
this.itemList.forEach(r => { |
|||
r.toLocationCode = that.toLocationCode; |
|||
r.toLocationErpCode = this.toLocationErpCode |
|||
r.fromLot =""; |
|||
r.fromLocationArea = this.fromLocationInfo.areaCode; |
|||
r.fromLocationGroup = this.fromLocationInfo.locationGroupCode; |
|||
r.fromLocationErpCode = this.fromLocationInfo.erpLocationCode; |
|||
r.fromWarehouseCode = localStorage.warehouseCode; |
|||
|
|||
r.toLot =""; |
|||
r.fromPackingCode=""; |
|||
r.toPackingCode = ""; |
|||
|
|||
r.toWarehouseCode =localStorage.warehouseCode; |
|||
r.worker = localStorage.userName_CN == "" ? localStorage.userName : |
|||
localStorage.userName_CN |
|||
item.details.push(r); |
|||
}) |
|||
|
|||
let params = JSON.stringify(item); |
|||
console.log('params', params); |
|||
completeTransfer(params) |
|||
.then(res => { |
|||
that.showCommitSuccess(); |
|||
that.clearInfo(); |
|||
uni.hideLoading(); |
|||
}) |
|||
.catch(err => { |
|||
that.showMessage(err.message); |
|||
uni.hideLoading(); |
|||
}); |
|||
} |
|||
}) |
|||
|
|||
}, |
|||
|
|||
cancel() { |
|||
let that = this; |
|||
showConfirmMsg('是否要清空已扫描的零件和目标库位信息?', confirm => { |
|||
if (confirm) { |
|||
that.clearInfo(); |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
clearInfo() { |
|||
let that = this; |
|||
that.itemList = []; |
|||
that.toLocationCode = ''; |
|||
that.inventoryStatus = -1; |
|||
that.$refs.location.clearLocation() |
|||
}, |
|||
|
|||
afterCloseMessagg() { |
|||
if (this.locationGotFocus) { |
|||
this.$refs.location.gotFocus(); |
|||
} |
|||
}, |
|||
|
|||
clearPackCode() { |
|||
this.isClearPackCode = !this.isClearPackCode; |
|||
}, |
|||
|
|||
clearContainerCode() { |
|||
this.isClearContainerCode = !this.isClearContainerCode; |
|||
}, |
|||
|
|||
clearLot() { |
|||
this.isClearLot = !this.isClearLot; |
|||
}, |
|||
|
|||
upper: function(e) { |
|||
// console.log(e) |
|||
}, |
|||
lower: function(e) { |
|||
// console.log(e) |
|||
}, |
|||
scroll: function(e) { |
|||
// console.log(e) |
|||
this.old.scrollTop = e.detail.scrollTop; |
|||
}, |
|||
showMessage(message) { |
|||
this.$refs.comMessage.showMessage(message); |
|||
}, |
|||
showCommitSuccess() { |
|||
this.$refs.comMessage.showCommitSuccess(); |
|||
}, |
|||
} |
|||
}; |
|||
</script> |
|||
|
|||
<style scoped lang="scss"> |
|||
/deep/ .input-value { |
|||
font-size: 16px; |
|||
} |
|||
|
|||
/deep/ .uni-collapse-item__title-text { |
|||
font-size: 16px; |
|||
} |
|||
|
|||
/deep/ .uni-collapse-item--border { |
|||
border-bottom-width: 0px; |
|||
border-bottom-color: #ebeef5; |
|||
} |
|||
|
|||
/deep/ .uni-collapse-item--border { |
|||
border-bottom-width: 1px; |
|||
border-bottom-color: #ebeef5; |
|||
} |
|||
</style> |
Loading…
Reference in new issue