zhang_li
3 months ago
7 changed files with 559 additions and 34 deletions
@ -0,0 +1,190 @@ |
|||||
|
<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 |
||||
|
}, |
||||
|
bussinessCode: { |
||||
|
type: String, |
||||
|
default: '' |
||||
|
} |
||||
|
}, |
||||
|
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) { |
||||
|
const 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) { |
||||
|
const status = getInventoryStatusDesc(params.inventoryStatus) |
||||
|
const areaType = getListLocationAreaTypeDesc(params.areaType) |
||||
|
const 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) { |
||||
|
const result = res.data.list[0] |
||||
|
const { status } = result |
||||
|
const { type } = result |
||||
|
if (status == 'ENABLE') { |
||||
|
if (checkDirectoryItemExist(this.itemTypesList, type)) { |
||||
|
callBack() |
||||
|
} else { |
||||
|
const 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