lijuncheng
5 months ago
2 changed files with 282 additions and 44 deletions
@ -0,0 +1,215 @@ |
|||
<template> |
|||
<view> |
|||
<uni-popup ref="popup" :mask-click="false"> |
|||
<view class="popup_box"> |
|||
<view class="pop_title uni-flex space-between"> |
|||
<view class="" style="font-size: 35rpx;"> |
|||
扫描{{title}} |
|||
</view> |
|||
|
|||
<view class=""> |
|||
<image class="fr icons_scan_close" src="/static/icons/icons_scan_close.svg" |
|||
@click="closeScanPopup()"></image> |
|||
</view> |
|||
</view> |
|||
<view class=""> |
|||
<view class=""> |
|||
<win-com-scan ref="comscan" :placeholder="title" @getResult="getScanResult" |
|||
:isShowHistory="isShowHistory" :clearResult="true" :headerType="headerType"></win-com-scan> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</uni-popup> |
|||
<balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select> |
|||
<!-- 模拟扫描功能 --> |
|||
|
|||
</view> |
|||
<comMessage ref="comMessage"></comMessage> |
|||
</template> |
|||
|
|||
<script> |
|||
import winComScan from '@/mycomponents/scan/winComScan.vue' |
|||
import balanceSelect from '@/mycomponents/balance/balanceSelect.vue' |
|||
import { |
|||
getBalanceByManagementPrecisionByPacking, |
|||
} from '@/common/balance.js'; |
|||
|
|||
import { |
|||
getBalanceByParams, |
|||
getBasicItemByCode |
|||
} from '@/api/request2.js'; |
|||
|
|||
import { |
|||
getListLocationAreaTypeDesc, |
|||
checkDirectoryItemExist, |
|||
getDirectoryItemArray, |
|||
getLocationAreaTypeName, |
|||
getInventoryStatusDesc, |
|||
getListItemTypeDesc, |
|||
getItemTypeInfo |
|||
} from '@/common/directory.js'; |
|||
export default { |
|||
name: 'winScanPack', |
|||
emits: ["getBalance"], |
|||
components: { |
|||
winComScan, |
|||
balanceSelect |
|||
}, |
|||
props: { |
|||
title: { |
|||
type: String, |
|||
default: '箱标签' |
|||
}, |
|||
isShowHistory: { |
|||
type: Boolean, |
|||
default: false |
|||
}, |
|||
headerType: { |
|||
type: String, |
|||
default: "HPQ,HMQ" |
|||
}, |
|||
balanceFromInventoryStatuses: { //是否传fromInventoryStatuses |
|||
type: Boolean, |
|||
default: true |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
scanResult: {}, |
|||
show: false, |
|||
scanList: [], |
|||
expand: false, |
|||
showScanResult: {}, |
|||
expendIcon: 'arrow-down', |
|||
fromLocationCode: '', |
|||
fromLocation: '', |
|||
fromLocationList: [], |
|||
fromLocationAreaTypeList: [], |
|||
locationOnFocus: false, |
|||
businessType: {}, |
|||
inventoryStatus: [], |
|||
managementPrecision: '', |
|||
fromInventoryStatuses: [], |
|||
itemTypesList: [], |
|||
isCheck: false, |
|||
resultData: {} |
|||
} |
|||
}, |
|||
created() { |
|||
|
|||
}, |
|||
methods: { |
|||
openScanPopup(businessType) { |
|||
this.businessType = businessType |
|||
this.fromInventoryStatuses = getDirectoryItemArray(businessType.outInventoryStatuses) |
|||
this.fromLocationAreaTypeList = getDirectoryItemArray(businessType.outAreaTypes) |
|||
this.itemTypesList = getDirectoryItemArray(businessType.itemTypes) |
|||
this.$refs.popup.open('bottom') |
|||
|
|||
}, |
|||
|
|||
getScanResult(result) { |
|||
this.resultData = result; |
|||
this.getItemCodeType(result.package.itemCode,callBack=>{ |
|||
this.queryBalance(this.resultData) |
|||
}) |
|||
}, |
|||
|
|||
queryBalance(result) { |
|||
var params = { |
|||
itemCode: result.package.itemCode, |
|||
batch: result.label.batch, |
|||
packingNumber: result.label.packingNumber, |
|||
inventoryStatus: this.fromInventoryStatuses, |
|||
areaType: this.fromLocationAreaTypeList |
|||
|
|||
} |
|||
getBalanceByParams(params).then(res => { |
|||
uni.hideLoading() |
|||
if (res.data.length == 0) { |
|||
var status = getInventoryStatusDesc(params.inventoryStatus) |
|||
var areaType = getListLocationAreaTypeDesc(params.areaType) |
|||
var hint = |
|||
"按物料号 [" + params.itemCode + "] <br>" + |
|||
"包装号 [" + params.packingNumber + "] <br>" + |
|||
"批次 [" + params.batch + "] <br>" + |
|||
"状态 [" + status + "] <br>" + |
|||
"库区 [" + areaType + "] <br>" + |
|||
"未查找到库存余额" |
|||
this.showErrorMessage(hint) |
|||
} else if (res.data.length == 1) { |
|||
result.balance = res.data[0] |
|||
this.$emit("getBalance", result) |
|||
this.closeScanPopup() |
|||
} else { |
|||
//多条记录 |
|||
this.$refs.balanceSelect.openPopup(res.data); |
|||
} |
|||
|
|||
}).catch(error => { |
|||
uni.hideLoading() |
|||
this.showErrorMessage(error) |
|||
}) |
|||
}, |
|||
getItemCodeType(itemCode,callBack) { |
|||
uni.showLoading({ |
|||
title: "加载中", |
|||
mask: true |
|||
}) |
|||
getBasicItemByCode(itemCode).then(res => { |
|||
if (res.data != null && res.data.list.length > 0) { |
|||
var result = res.data.list[0]; |
|||
var status = result.status; |
|||
var type = result.type; |
|||
if (status == "ENABLE") { |
|||
if (checkDirectoryItemExist(this.itemTypesList, type)) { |
|||
callBack() |
|||
} else { |
|||
var hint = getListItemTypeDesc(this.itemTypesList); |
|||
uni.hideLoading() |
|||
this.showErrorMessage("扫描物料[" + itemCode + "]是[" + |
|||
getItemTypeInfo(type).label + "],需要的物料类型是[" + hint + "]") |
|||
} |
|||
} else { |
|||
uni.hideLoading() |
|||
this.showErrorMessage('物料【' + itemCode + '】不可用'); |
|||
} |
|||
} else { |
|||
uni.hideLoading() |
|||
this.showErrorMessage('未查找到物料【' + itemCode + '】'); |
|||
} |
|||
}).catch(error => { |
|||
uni.hideLoading(); |
|||
this.showErrorMessage(error) |
|||
}) |
|||
}, |
|||
showErrorMessage(message) { |
|||
this.$refs.comMessage.showErrorMessage(message, res => { |
|||
if (res) { |
|||
|
|||
} |
|||
}); |
|||
}, |
|||
selectBalanceItem(item) { |
|||
this.resultData.balance = item |
|||
this.$emit("getBalance", this.resultData) |
|||
this.closeScanPopup() |
|||
}, |
|||
closeScanPopup() { |
|||
this.$refs.popup.close() |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
.scroll-view { |
|||
overflow-y: scroll; |
|||
height: auto; |
|||
max-height: 300rpx; |
|||
} |
|||
</style> |
Loading…
Reference in new issue