niexiting
3 months ago
20 changed files with 721 additions and 189 deletions
@ -0,0 +1,37 @@ |
|||||
|
<template> |
||||
|
<view class="card_view "> |
||||
|
<text class="card_level">{{title}}</text> |
||||
|
<text class="card_big_content" style="font-size: 40rpx;">{{getPriorityName1()}}</text> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import {getPriorityName} from '@/common/directory.js'; |
||||
|
export default { |
||||
|
components: { |
||||
|
}, |
||||
|
data() { |
||||
|
return {} |
||||
|
}, |
||||
|
props: { |
||||
|
priority: { |
||||
|
type: String, |
||||
|
default:'2' |
||||
|
}, |
||||
|
title: { |
||||
|
type: String, |
||||
|
default: '优先级' |
||||
|
}, |
||||
|
|
||||
|
}, |
||||
|
methods:{ |
||||
|
getPriorityName1(){ |
||||
|
return getPriorityName(this.priority) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
</style> |
@ -0,0 +1,315 @@ |
|||||
|
<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="uni-flex uni-row" style="align-items: center; |
||||
|
background-color: #fff; |
||||
|
margin-left: 20rpx; |
||||
|
margin-right: 20rpx; |
||||
|
border-radius: 8rpx; |
||||
|
height: 30px;"> |
||||
|
<view class="uni-center" style="width: 25%; font-size: 35rpx;"> |
||||
|
来源库位 |
||||
|
</view> |
||||
|
<!-- style="width: 75%;padding: 8rpx" --> |
||||
|
<view class=""> |
||||
|
<!-- <input v-model="fromLocationCode" placeholder="请扫描来源库位" :focus="locationOnFocus" |
||||
|
placeholder-style="font-size:12px" style="padding: 5px;" @confirm="scanLocation" /> --> |
||||
|
|
||||
|
<view v-if='allowModifyLocation'> |
||||
|
<uni-combox :candidates="fromLocationList" v-model="fromLocationCode" placeholder="请扫描来源库位" |
||||
|
@confirm="handleConfirm" style='height: 30rpx;border:1px solid #fff ;'></uni-combox> |
||||
|
</view> |
||||
|
<view v-else> |
||||
|
<text style="padding: 5px;font-size: 40rpx;"> |
||||
|
{{fromLocationCode}} |
||||
|
</text> |
||||
|
</view> |
||||
|
</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","onCloseScanPopup"], |
||||
|
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: '' |
||||
|
}, |
||||
|
//是否允许修改库位 |
||||
|
allowModifyLocation: { |
||||
|
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') |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
openScanPopupForJob(fromLocationCode, fromLocationList, jobContent){ |
||||
|
this.fromLocationCode = fromLocationCode; |
||||
|
this.fromLocationList = fromLocationList; |
||||
|
if (fromLocationCode != '') { |
||||
|
this.packGetFocus(); |
||||
|
} else { |
||||
|
if (this.fromLocationList.length == 0) { |
||||
|
this.locationGetFocus(); |
||||
|
} else { |
||||
|
this.fromLocationCode = this.fromLocationList[0]; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
setTimeout(res => { |
||||
|
this.$refs.popup.open('bottom') |
||||
|
}, 500) |
||||
|
this.fromInventoryStatuses = getDirectoryItemArray(jobContent.outInventoryStatuses) |
||||
|
this.inventoryStatus = getDirectoryItemArray(jobContent.outInventoryStatuses); //出库库存状态; //出库库存状态 |
||||
|
this.fromLocationAreaTypeList = getDirectoryItemArray(jobContent.fromAreaTypes); //出库库存状态 |
||||
|
}, |
||||
|
|
||||
|
handleConfirm() { |
||||
|
this.$emit('confirm', this.fromLocationCode) |
||||
|
}, |
||||
|
|
||||
|
getScanResult(result) { |
||||
|
|
||||
|
if (this.fromLocationCode == '') { |
||||
|
this.showErrorMessage('请选择来源库位', res => { |
||||
|
}); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
this.resultData = result; |
||||
|
if(!result.package){ |
||||
|
this.showErrorMessage(result.label.code+"包装信息为空") |
||||
|
return; |
||||
|
} |
||||
|
//查询物料信息,然后查询库存 |
||||
|
this.getItemCodeType(result.package.itemCode,callBack=>{ |
||||
|
this.queryBalance(this.resultData) |
||||
|
}) |
||||
|
}, |
||||
|
|
||||
|
queryBalance(result) { |
||||
|
var params = { |
||||
|
locationCode:this.fromLocationCode, |
||||
|
itemCode: result.package.itemCode, |
||||
|
batch: result.label.batch, |
||||
|
packingNumber: result.label.packingNumber, |
||||
|
parentPackingNumber:result.package.parentNumber, |
||||
|
inventoryStatus: this.fromInventoryStatuses, |
||||
|
areaType: this.fromLocationAreaTypeList, |
||||
|
bussinessCode:this.bussinessCode |
||||
|
} |
||||
|
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] |
||||
|
if(result.label.packingNumber!=result.balance.packingNumber){ |
||||
|
result.balance.lableQty=result.label.qty |
||||
|
} |
||||
|
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) { |
||||
|
if(this.$refs.comscan){ |
||||
|
this.$refs.comscan.getfocus() |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
selectBalanceItem(item) { |
||||
|
this.resultData.balance = item |
||||
|
this.$emit("getBalance", this.resultData) |
||||
|
// this.closeScanPopup() |
||||
|
}, |
||||
|
closeScanPopup() { |
||||
|
this.$refs.popup.close() |
||||
|
this.$emit("onCloseScanPopup") |
||||
|
}, |
||||
|
getfocus(){ |
||||
|
if(this.$refs.comscan){ |
||||
|
this.$refs.comscan.getfocus() |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
packGetFocus() { |
||||
|
if (this.$refs.comscan) { |
||||
|
this.$refs.comscan.getfocus(); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
packLoseFocus() { |
||||
|
if (this.$refs.comscan) { |
||||
|
this.$refs.comscan.losefocus(); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.scroll-view { |
||||
|
overflow-y: scroll; |
||||
|
height: auto; |
||||
|
max-height: 300rpx; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,159 @@ |
|||||
|
<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="uni-flex uni-row" style="align-items: center; |
||||
|
background-color: #fff; |
||||
|
margin-left: 20rpx; |
||||
|
margin-right: 20rpx; |
||||
|
border-radius: 8rpx; |
||||
|
"> |
||||
|
<view class="uni-center" style="width: 25%; font-size: 32rpx; font-weight: bold;"> |
||||
|
优先级 |
||||
|
</view> |
||||
|
<view style="width: 100%;"> |
||||
|
<uni-data-select style="padding: 20rpx;" v-model="priorityCode" :localdata="priorityList" @change="change" |
||||
|
:clear="false"></uni-data-select> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class=""> |
||||
|
<view class=""> |
||||
|
<win-com-scan ref="comscan" :placeholder="title" @getResult="getScanResult" |
||||
|
:headerType="headerType" :isShowHistory="isShowHistory" :clearResult="true"></win-com-scan> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</uni-popup> |
||||
|
<comMessage ref="comMessage" @afterClose="getfocus"></comMessage> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { |
||||
|
getLabelInfo |
||||
|
} from '@/common/label.js'; |
||||
|
import winComScan from '@/mycomponents/scan/winComScan.vue' |
||||
|
|
||||
|
export default { |
||||
|
components: { |
||||
|
winComScan, |
||||
|
}, |
||||
|
props: { |
||||
|
title: { |
||||
|
type: String, |
||||
|
default: '箱标签' |
||||
|
}, |
||||
|
isShowHistory: { |
||||
|
type: Boolean, |
||||
|
default: true |
||||
|
}, |
||||
|
headerType: { |
||||
|
type: String, |
||||
|
default: 'HPQ' |
||||
|
} |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
show: false, |
||||
|
priorityList: [{ |
||||
|
value: 0, |
||||
|
text: "低" |
||||
|
}, |
||||
|
{ |
||||
|
value: 1, |
||||
|
text: "中" |
||||
|
}, |
||||
|
{ |
||||
|
value: 2, |
||||
|
text: "高" |
||||
|
}, |
||||
|
], |
||||
|
priorityCode: 1 |
||||
|
} |
||||
|
}, |
||||
|
created() { |
||||
|
|
||||
|
}, |
||||
|
methods: { |
||||
|
simulateScan(scanMessage) { |
||||
|
getLabelInfo(scanMessage, this.headerType, callback => { |
||||
|
if (callback.success) { |
||||
|
this.getScanResult(callback); |
||||
|
} else { |
||||
|
this.showMessage(callback.message) |
||||
|
} |
||||
|
|
||||
|
}) |
||||
|
}, |
||||
|
openScanPopup() { |
||||
|
setTimeout(res => { |
||||
|
this.$refs.popup.open('bottom') |
||||
|
}, 200) |
||||
|
}, |
||||
|
|
||||
|
closeScanPopup() { |
||||
|
this.$refs.popup.close(); |
||||
|
this.$emit("close", ''); |
||||
|
}, |
||||
|
|
||||
|
scanClick() { |
||||
|
if (this.$refs.comscan) { |
||||
|
this.$refs.comscan.clickScanMsg(); |
||||
|
} |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
cancelClick() { |
||||
|
if (this.$refs.comscan) { |
||||
|
this.$refs.comscan.clearScanValue(); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
getScanResult(result) { |
||||
|
if (result.success) { |
||||
|
result.priorityCode =this.priorityCode |
||||
|
this.$emit("getResult", result); |
||||
|
} else { |
||||
|
this.showMessage(result.message) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
getfocus() { |
||||
|
if (this.$refs.comscan != undefined) { |
||||
|
this.$refs.comscan.getfocus(); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
losefocus() { |
||||
|
if (this.$refs.comscan != undefined) { |
||||
|
this.$refs.comscan.losefocus(); |
||||
|
} |
||||
|
}, |
||||
|
showMessage(message) { |
||||
|
this.$refs.comMessage.showMessage(message); |
||||
|
}, |
||||
|
change(e) { |
||||
|
console.log(e); |
||||
|
}, |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.scroll-view { |
||||
|
overflow-y: scroll; |
||||
|
height: auto; |
||||
|
max-height: 300rpx; |
||||
|
} |
||||
|
</style> |
Loading…
Reference in new issue