Browse Source

Merge branch 'master_hella' of http://dev.ccwin-in.com:3000/sfms3.0/sfms3.0-uniapp into master_hella

hella_online_20240829
niexiting 2 months ago
parent
commit
1f01056843
  1. 3
      src/App.vue
  2. 14
      src/api/request2.js
  3. 22
      src/common/directory.js
  4. 6
      src/common/style/new_style.css
  5. 37
      src/mycomponents/balance/level.vue
  6. 13
      src/mycomponents/job/jobComMainDetailCard.vue
  7. 315
      src/mycomponents/scan/winComScanBalanceLocation.vue
  8. 159
      src/mycomponents/scan/winScanPackLevel.vue
  9. 36
      src/pages/count/job/countJob.vue
  10. 37
      src/pages/fg/coms/comReceiptPopup.vue
  11. 7
      src/pages/fg/receiptByPlan.vue
  12. 3
      src/pages/index/index.vue
  13. 38
      src/pages/issue/coms/comIssueRequestPopup.vue
  14. 1
      src/pages/issue/job/issueJob.vue
  15. 4
      src/pages/issue/request/issueRequestCreate.vue
  16. 11
      src/pages/issue/request/issueScanRequest.vue
  17. 151
      src/pages/package/coms/comScanPackagePack.vue
  18. 37
      src/pages/package/job/overPackageJobDetail.vue
  19. 7
      src/pages/package/record/overPackageRecord.vue
  20. 9
      src/pages/productionReceipt/job/productionReceiptJob.vue

3
src/App.vue

@ -8,7 +8,6 @@
export default {
onLaunch: function() {
console.log('App Launch')
// ,
// #ifdef APP-PLUS
// ,
@ -29,10 +28,8 @@
};
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
},
}

14
src/api/request2.js

@ -1342,6 +1342,9 @@ export function getIssueJobList(params) {
data: params,
});
}
/**
* 发料生产线查询
*/
export function getIssueJobByProductionline() {
return request({
url: baseApi + "/wms/issue-job-main/getIssueJobByProductionline",
@ -1349,6 +1352,17 @@ export function getIssueJobByProductionline() {
data: {},
});
}
/**
* 发料接收生产线查询
*/
export function getProductionReceiptJobByProductionline() {
return request({
url: baseApi + "/wms/productionreceipt-job-main/getProductionreceiptJobByProductionline",
method: "get",
data: {},
});
}
/**
* 发料任务明细

22
src/common/directory.js

@ -22,6 +22,7 @@ let countStageList = [];
let locationAreaTypeList = [];
let businessList = [];
let countScopeTypeList = [];
let priorityList = []
@ -64,6 +65,7 @@ export function clearCacheData() {
locationAreaTypeList = []
businessList = []
countScopeTypeList = []
priorityList = []
}
//获取字典信息
@ -79,7 +81,6 @@ export function getDirectoryInfo(type) {
}
}
}
return result
}
@ -614,5 +615,22 @@ export function getPackUnitName(value) {
return resultInfo
}
//获取优先级
export function getPriorityName(value) {
console.log(344,value)
var resultInfo = "";
if (priorityList.length == 0) {
priorityList = getDirectoryInfo("priority")
}
console.log(455,priorityList)
if (priorityList.length > 0) {
for (let item of priorityList) {
if (item.value == value) {
resultInfo = item.label
break;
}
}
}
return resultInfo
}
locationAreaTypeList

6
src/common/style/new_style.css

@ -2144,6 +2144,12 @@ button::after {
padding: 5px;
}
.card_level {
color: #0689da;
padding: 5px;
font-size: 30rpx;
}
.card_supportCode {
color: #DA8910;
padding: 5px;

37
src/mycomponents/balance/level.vue

@ -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>

13
src/mycomponents/job/jobComMainDetailCard.vue

@ -9,8 +9,13 @@
<pack v-if="isShowPack && dataContent.packingNumber!=null" :packingCode="dataContent.packingNumber">
</pack>
<batch v-if="isShowBatch && dataContent.batch!=null" :batch="dataContent.batch"></batch>
<location v-if="isShowFromLocation&&dataContent.fromLocationCode" title="来源库位" :locationCode="dataContent.fromLocationCode">
</location>
<view class="u-flex u-row-between">
<location v-if="isShowFromLocation&&dataContent.fromLocationCode" title="来源库位" :locationCode="dataContent.fromLocationCode">
</location>
<level title="优先级" :priority="dataContent.priority">
</level>
</view>
<to-location v-if="isShowToLocation" title="目标库位" :locationCode="dataContent.toLocationCode||dataContent.locationCode">
</to-location>
<view class="card_view " v-if="isShowDeliverType">
@ -27,8 +32,8 @@
import location from '@/mycomponents/balance/location.vue'
import toLocation from '@/mycomponents/balance/toLocation.vue'
import batch from '@/mycomponents/balance/batch.vue'
import jobComMainCard from '@/mycomponents/job/jobComMainCard.vue'
import itemCompareQty from '@/mycomponents/item/itemCompareQty.vue'
import level from '@/mycomponents/balance/level.vue'
export default {
components: {
@ -36,8 +41,8 @@
location,
toLocation,
batch,
jobComMainCard,
itemCompareQty,
level
},
data() {
return {};

315
src/mycomponents/scan/winComScanBalanceLocation.vue

@ -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>

159
src/mycomponents/scan/winScanPackLevel.vue

@ -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>

36
src/pages/count/job/countJob.vue

@ -157,11 +157,11 @@
value: this.status
})
// filters.push({
// column: "countSplitType",
// action: "==",
// value: "locationCode"
// })
filters.push({
column: "countSplitType",
action: "==",
value: "locationCode"
})
filters.push({
column: "isOpenCount",
@ -312,11 +312,11 @@
value: code
})
// filters.push({
// column: "countSplitType",
// action: "==",
// value: "locationCode"
// })
filters.push({
column: "countSplitType",
action: "==",
value: "locationCode"
})
filters.push({
column: "isOpenCount",
@ -371,11 +371,17 @@
value: '1,2'
})
// filters.push({
// column: "countSplitType",
// action: "==",
// value: "locationCode"
// })
filters.push({
column: "countSplitType",
action: "==",
value: "locationCode"
})
filters.push({
column: "isOpenCount",
action: "==",
value: "TRUE"
})
filters.push({
column: "countSplitCode",

37
src/pages/fg/coms/comReceiptPopup.vue

@ -171,7 +171,9 @@
workStationCode: "",
planDate: '',
showDateSelect:false,
planDateList:[]
planDateList:[],
fgLocationCode:"",
rawLocationCode:""
}
},
props: {
@ -216,6 +218,8 @@
this.planDate=""
this.showDateSelect =false
this.planDateList=[]
this.fgLocationCode=""
this.rawLocationCode=""
},
@ -269,8 +273,9 @@
planQty: this.planQty,
goodQty: this.goodQty,
planNumber: this.planNumber,
workStationCode: this.workStationCode
workStationCode: this.workStationCode,
fgLocationCode:this.fgLocationCode,
rawLocationCode:this.rawLocationCode
};
this.closeRequestPopup();
this.$emit("confirm", item);
@ -289,6 +294,9 @@
this.productionLineName = data[0].label + "—" + data[1].label
this.productionLineCode = data[0].value
this.workStationCode = data[1].value
var parent =this.productLineList.filter(res=>res.value==this.productionLineCode)
var fgLocation =parent[0].children.filter(children=>children.value==this.workStationCode)
this.fgLocationCode= fgLocation[0].fgLocationCode;
this.clearItemCode()
this.clearPackUnit()
@ -360,8 +368,7 @@
uni.hideLoading()
if (res.data && res.data.length > 0) {
res.data.forEach(item => {
item.label = item.itemCode + "(" + item.planQty + this.getUomInfo(item.uom) + ")" + "(" +
dateFormatData(item.planDate) + ")"
item.label = item.itemCode + "(" + item.planQty + this.getUomInfo(item.uom) + ")"
item.value = item
})
this.itemCodeList = res.data
@ -385,6 +392,26 @@
//
this.clearPackUnit();
uni.showLoading({
title: "加载中",
mask: true
})
getPackUnitByItemCode(this.itemCode).then(res => {
uni.hideLoading()
if (res.data && res.data.list.length > 0) {
res.data.list.forEach(item => {
item.value = item.packUnit
item.label = getPackUnitName(item.packUnit) + "(" + item.packQty + this
.getUomInfo(item.uom) + ")";
})
this.packUnitList = res.data.list
var defaultData =res.data.list.filter(item=>item.defaultPackageunit=="TRUE")
this.confirmSelectPackUnit(defaultData)
}
}).catch(error => {
uni.hideLoading()
})
},
clearPackUnit(){

7
src/pages/fg/receiptByPlan.vue

@ -12,6 +12,12 @@
<view class='split_line'></view>
<view class="cell_box uni-flex uni-row">
<view class="cell_info">
<view class="text_lightblue">完工库位</view>
<view style="font-size: 30rpx; margin-top: 13rpx;" >{{dataContent.fgLocationCode}}
</view>
</view>
<view class="cell_info">
<view class="text_lightblue">计划数</view>
<view>{{dataContent.planQty}}{{dataContent.uom}}</view>
@ -202,6 +208,7 @@
batch: result.batch,
packUnit: result.packUnit,
workStationCode: result.workStationCode,
fgLocationCode:result.fgLocationCode,
subList: []
}
},

3
src/pages/index/index.vue

@ -212,7 +212,6 @@
})
}else{
if(rightItem.component=='inventorymove-HoldToScrap'){
console.log(rightItem.component)
}
this.menusCount[rightItem.component.split('-')[0]].forEach((item)=>{
if(item.businessType ==rightItem.component.split('-')[1] ){
@ -360,7 +359,7 @@
"inventory_status", "container_type", "pack_unit", "unplanned_receipt_reason",
"unplanned_issue_reason", "scrap_reason", "inspect_failed_reason",
"request_status", "inspect_type", "next_action", "sample_method", "transfer_mode",
"count_stage", "inspect_result", "area_type","count_scope_type"
"count_stage", "inspect_result", "area_type","count_scope_type","priority"
]
}
getDictionaryItem(params).then(res => {

38
src/pages/issue/coms/comIssueRequestPopup.vue

@ -23,7 +23,20 @@
@confirm="confirmWareHouse"></u-select>
</view>
</view>
<view class='split_line'></view>
<view class="uni-flex uni-row" style="align-items: center;
background-color: #fff;
margin-right: 20rpx;
border-radius: 8rpx;
">
<view class="uni-center" style="width: 25%; font-size: 32rpx; ">
优先级
</view>
<view style="width: 100%;">
<uni-data-select style="padding: 20rpx;" v-model="priority" :localdata="priorityList"
:clear="false"></uni-data-select>
</view>
</view>
<view class='split_line'></view>
<view class="uni-flex uni-row padding title u-col-center">
<text>位置</text>
@ -67,6 +80,7 @@
</view>
</view>
<view class='split_line'></view>
</view>
</view>
</view>
@ -136,7 +150,21 @@
maxlength: 10,
stdPackInfo: undefined,
wareHouseList: [],
showWareHouse: false
showWareHouse: false,
priorityList: [{
value: 0,
text: "低"
},
{
value: 1,
text: "中"
},
{
value: 2,
text: "高"
},
],
priority:1,//
}
},
props: {
@ -207,6 +235,7 @@
this.itemCode = "请扫描物料信息";
this.rawLocationCode = ""
this.positionInfo = "请选择位置"
this.priority = ''
this.fromWarehouseCode = "请选择仓库代码"
this.workshopCode = "" //
this.workShopName = ""
@ -241,6 +270,10 @@
},
confirm() {
if (this.priority === '') {
this.showErrorMessage("请输入优先级", "priority")
return
}
if (this.positionInfo == "请选择位置") {
this.showErrorMessage("请选择位置")
return
@ -286,6 +319,7 @@
fgLocationCode: this.fgLocationCode,
fromWarehouseCode: this.fromWarehouseCode,
toWarehouseCode: this.fromWarehouseCode,
priority : this.priority,
itemCode: this.itemCode,
itemName: this.itemName,
uom: this.uom,

1
src/pages/issue/job/issueJob.vue

@ -132,7 +132,6 @@
methods: {
getIssueJobByProductionline() {
getIssueJobByProductionline().then(res => {
console.log('生产线', res)
if (res.code == 0) {
this.productionlineList = res.data.map(item => ({
value: item.value,

4
src/pages/issue/request/issueRequestCreate.vue

@ -107,7 +107,6 @@
//
requestConfirm(action, item) {
if (this.detailSource.subList.length == 0) {
this.detailSource = {
workshopCode: item.workshopCode,
@ -119,6 +118,7 @@
toLocationCode: item.rawLocationCode,
fromWarehouseCode:item.fromWarehouseCode,
useOnTheWay:this.useOnTheWay,
priority : item.priority,
totalQty: 0,
subList: []
}
@ -153,7 +153,7 @@
qty: item.qty,
uom: item.uom
}
this.detailSource.priority =item.priority
this.detailSource.subList.push(subItem)
} else {

11
src/pages/issue/request/issueScanRequest.vue

@ -4,7 +4,7 @@
<com-blank-view @goScan='goScan()'></com-blank-view>
</view>
</view>
<win-scan-pack ref="scanPopup" @getResult='getScanResult' headerType="HCMQ" title="叫料标签" :isShowHistory="false"></win-scan-pack>
<winScanPackLevel ref="scanPopup" @getResult='getScanResult' headerType="HCMQ" title="叫料标签" :isShowHistory="false"></winScanPackLevel>
<comMessage ref="comMessage"></comMessage>
</template>
@ -37,7 +37,7 @@
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
import comScanIssuePack from '@/pages/issue/coms/comScanIssuePack.vue'
import comIssueRequestCreator from '@/pages/issue/coms/comIssueRequestCreator.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import winScanPackLevel from '@/mycomponents/scan/winScanPackLevel.vue'
export default {
name: 'issueRequestSubmit',
@ -46,7 +46,7 @@
jobDetailPopup,
comScanIssuePack,
comIssueRequestCreator,
winScanPack
winScanPackLevel
},
data() {
return {
@ -93,11 +93,11 @@
}, 400)
},
getScanResult(data){
getScanResult(result){
this.detailSource = {
subList:[]
}
var labelInfo = data.label;
var labelInfo = result.label;
var data = {
itemCode:labelInfo.itemCode,
@ -112,6 +112,7 @@
this.detailSource.workStationCode=labelInfo.workStationCode;
this.detailSource.warehouseCode = labelInfo.warehouseCode;
this.detailSource.workshopCode = labelInfo.workshopCode;
this.detailSource.priority =result.priorityCode
this.submit();
},

151
src/pages/package/coms/comScanPackagePack.vue

@ -1,97 +1,6 @@
<template>
<view>
<uni-popup ref="popup" :maskClick='false'>
<view class="">
<view class="popup_box">
<view class="pop_title uni-flex space-between">
<view class="" style="font-size: 35rpx;">
扫描箱码
</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;
padding:20rpx;
border-radius: 8rpx;">
<view class="uni-center">
位置 :
</view>
<view class="" style="width: 75%;padding: 0rpx">
<view class="uni-flex u-col-center uni-row" @click="showSelect">
<view class="" style="margin-left: 15rpx;font-size: 30rpx;">
{{positionInfo}}
</view>
<u-select v-model="show" mode="mutil-column-auto" :list="positionList" :defaultValue="defaultValueList"
@confirm="confirmSelect"></u-select>
</view>
</view>
</view> -->
<!-- <u-line class='line_color'></u-line> -->
<view class="uni-flex uni-row" style="align-items: center;
background-color: #fff;
margin-left: 20rpx;
margin-right: 20rpx;
margin-top: 8rpx;
border-radius: 8rpx;">
<view class="uni-center" style="width: 25%; ">
来源库位
</view>
<view class="" style="width: 75%; padding: 8rpx;">
<uni-combox :candidates="fromLocationList" v-model="fromLocationCode" placeholder="请选择库位"
@confirm="fromLocationUpdate"></uni-combox>
</view>
</view>
<view class="">
<view class="">
<win-com-scan ref="comscan" placeholder="箱标签" @getResult="onScan" :clearResult="true"
headerType="HPQ,HMQ" :isShowHistory="false">
</win-com-scan>
<view style="width: 100%;">
<view style="width: 100%;" v-if="issueRecord.length>0">
<view class="uni-flex uni-row space-between u-col-center">
<view class="" style="padding: 10rpx;">
历史记录
</view>
<view class="" style="padding-right: 10rpx;">
<u-icon :name="expendIcon" size="35rpx" @click="expands()"></u-icon>
</view>
</view>
<u-line class='line_color' style='padding-top: 10rpx;padding-bottom: 20rpx;'>
</u-line>
<scroll-view scroll-y="true" class="scroll-view"
v-if="expand&&issueRecord.length>0">
<view class="uni-flex u-col" v-for="(record,index) in issueRecord">
<view style="width: 100%;">
<uni-swipe-action ref="swipeAction">
<uni-swipe-action-item @click="swipeClick($event,record,index)"
:right-options="scanOptions">
<view style="padding: 0px 10px">
<balance :dataContent="record" :isShowFromLocation="false"
:isShowStdPack="false"></balance>
</view>
</uni-swipe-action-item>
</uni-swipe-action>
<u-line class='line_color'></u-line>
</view>
</view>
</scroll-view>
</view>
</view>
</view>
</view>
</view>
</view>
</uni-popup>
<winComScanBalanceLocation ref="scanPopup" @getBalance='getScanResult' @onCloseScanPopup="closeScanPopup" bussinessCode="OverPackage"></winComScanBalanceLocation>
<balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select>
<comMessage ref="comMessage"></comMessage>
<balance-qty-edit ref="balanceQtyEdit" @confirm="confirm" :isShowStatus="true"></balance-qty-edit>
@ -103,6 +12,7 @@
import balance from '@/mycomponents/balance/balance.vue'
import balanceQtyEdit from '@/mycomponents/qty/balanceQtyEdit.vue'
import balanceSelect from '@/mycomponents/balance/balanceSelect.vue'
import winComScanBalanceLocation from '@/mycomponents/scan/winComScanBalanceLocation.vue'
import {
getDetailOption,
@ -116,10 +26,7 @@
calc
} from '@/common/calc.js';
import {
getBalanceByManagementPrecision
} from '@/common/balance.js';
import { getDirectoryItemArray } from '../../../common/directory';
import { getDirectoryItemArray } from '@/common/directory';
export default {
name: 'winScanPack',
@ -127,7 +34,8 @@ import { getDirectoryItemArray } from '../../../common/directory';
winComScan,
balance,
balanceQtyEdit,
balanceSelect
balanceSelect,
winComScanBalanceLocation
},
props: {
title: {
@ -139,7 +47,6 @@ import { getDirectoryItemArray } from '../../../common/directory';
return {
dataContent: {},
jobContent: {},
expendIcon: 'arrow-down',
show: false,
scanList: [],
toLocation: null,
@ -151,9 +58,6 @@ import { getDirectoryItemArray } from '../../../common/directory';
expand: true,
scanOptions: {},
editItem: {},
positionInfo: "请选择位置",
positionList: [],
defaultValueList: [],
fromInventoryStatuses: "",
packageInfo: {},
label: {}
@ -173,18 +77,11 @@ import { getDirectoryItemArray } from '../../../common/directory';
this.dataContent = content;
this.jobContent = jobcontent;
this.initData();
// this.positionInfo = this.jobContent.workShopCode + "-" + this.jobContent.subList[0].productionLineCode +
// "-" + this.jobContent.subList[0].workStationCode
setTimeout(res => {
this.$refs.popup.open('bottom')
}, 500)
this.$refs.scanPopup.openScanPopupForJob(this.fromLocationCode, this.fromLocationList, this.jobContent)
},
closeScanPopup() {
this.$refs.popup.close();
this.$emit("closeScan")
//
// Object.assign(this.$data, this.$options.data());
},
initData() {
@ -226,6 +123,22 @@ import { getDirectoryItemArray } from '../../../common/directory';
this.showErrorMessage('翻包库位【' + fromlocation + '】不存在')
}
},
getScanResult(result){
var balance =result.balance;
var packageInfo =result.package;
let itemCode = balance.itemCode;
let item = this.toLocation.Items.find(r => r.itemCode == itemCode);
if (item == undefined) {
this.showErrorMessage('未查找到物料【' + itemCode + '】的翻包明细',
res => {
this.getfocus();
}
)
} else {
this.afterGetBalance(result.label, balance, packageInfo);
}
},
onScan(result) {
@ -398,7 +311,8 @@ import { getDirectoryItemArray } from '../../../common/directory';
let record = {
scaned: true,
itemCode: label.itemCode,
packingNumber: label.packingNumber,
packingNumber: packageInfo.number,
parentPackingNumber:packageInfo.parentNumber,
batch: label.batch,
qty: Number(balance.qty),
// qty: Number(label.qty) > Number(balance.qty) ? Number(balance.qty) : Number(label.qty),
@ -430,22 +344,17 @@ import { getDirectoryItemArray } from '../../../common/directory';
},
getfocus() {
if (this.$refs.comscan != undefined) {
this.$refs.comscan.getfocus();
if (this.$refs.scanPopup ) {
this.$refs.scanPopup.getfocus();
}
},
losefocus() {
if (this.$refs.comscan != undefined) {
this.$refs.comscan.losefocus();
if (this.$refs.scanPopup ) {
this.$refs.scanPopup.losefocus();
}
},
expands() {
this.expand = !this.expand;
this.expendIcon = this.expand == true ? "arrow-down" : "arrow-up"
},
swipeClick(e, item, index) {
if (e.content.text == "详情") {
this.detail(item)
@ -490,10 +399,10 @@ import { getDirectoryItemArray } from '../../../common/directory';
},
packGetFocus() {
this.$refs.comscan.getfocus();
this.$refs.scanPopup.getfocus();
},
packLoseFocus() {
this.$refs.comscan.losefocus();
this.$refs.scanPopup.packLoseFocus();
},
showMessage(message, callback) {
setTimeout(r => {

37
src/pages/package/job/overPackageJobDetail.vue

@ -71,6 +71,7 @@
getCurrDateTime,
getDirectoryItemArray,
getPackingNumberAndBatch,
deepCopyData
} from '@/common/basic.js';
import {
@ -104,7 +105,7 @@
comOverPackJobDetailCard,
comScanPackagePack,
jobTop,
workStation
workStation,
},
data() {
return {
@ -124,7 +125,7 @@
onLoad(option) {
uni.setNavigationBarTitle({
title: option.title+'详情'
title: option.title + '详情'
})
this.id = option.id;
if (this.id != undefined) {
@ -177,18 +178,11 @@
methods: {
resizeCollapse() {
this.$nextTick(r => {
if(this.$refs.comOverPackJobDetailCard){
if (this.$refs.comOverPackJobDetailCard) {
this.$refs.comOverPackJobDetailCard.forEach(r => {
r.resizeCollapse();
})
}
// this.$refs.mainCollapse.forEach(r => {
// r.childrens.forEach(i => {
// i.init();
// })
// r.resize();
// })
});
},
@ -278,7 +272,7 @@
itemCodes.push(item.itemCode)
})
})
this.checkSubmit();
//使
@ -340,18 +334,18 @@
let list = [];
res.data.forEach(item => {
list.push({
itemCode:item.itemCode, //
itemCode: item.itemCode, //
itemName: item.itemName, //
packName: item.packName,//
packName: item.packName, //
packageCode: item.number, //
batch:item.batch,//
parentNumber:item.parentNumber,//
itemType:item.itemType,//
asnNumber:item.asnNumber,//ASN
batch: item.batch, //
parentNumber: item.parentNumber, //
itemType: item.itemType, //
asnNumber: item.asnNumber, //ASN
supplierCode: item.supplierCode, //
qty: item.qty, //
printTimes:getCurrDateTime(), //
productionLineCode:item.productionLineCode,//线
printTimes: getCurrDateTime(), //
productionLineCode: item.productionLineCode, //线
barcodeString: item.barcodeString, //
barcodeBase64: '',
})
@ -385,6 +379,7 @@
record.fromPackingNumber = r
.packingNumber;
record.fromParentPackingNumber =r.parentPackingNumber;
record.fromBatch = r.batch;
record.fromContainerNumber = r
.ContainerNumber;
@ -434,7 +429,7 @@
// }
subItem.recordList.push(record);
})
subList.push(subItem);
subList.push(deepCopyData(subItem));
}
}
})
@ -568,7 +563,7 @@
// })
// }
// })
// Promise.all(pointData.map(item => {
// return getPackageLabel(item.packageCode)
// })).then(res => {

7
src/pages/package/record/overPackageRecord.vue

@ -356,7 +356,12 @@
},
checkSubmit() {
var tempHandleQty = this.detailSource[0].subList[0].handleQty
// this.submitJob()
var tempHandleQty =0
this.detailSource.forEach(res=>{
tempHandleQty =tempHandleQty+res.handleQty
})
var toPackQty = this.toPackQty;
//
if (tempHandleQty % toPackQty > 0) {

9
src/pages/productionReceipt/job/productionReceiptJob.vue

@ -34,7 +34,7 @@
import {
getProductionReceiptJobList,
cancleTakeProductionReceiptJob,
getIssueJobByProductionline
getProductionReceiptJobByProductionline
} from '@/api/request2.js';
import {
@ -90,7 +90,7 @@
},
onLoad(option) {
this.title = option.title
this.getIssueJobByProductionline()
this.getProductionReceiptJobByProductionline()
},
onShow() {
@ -138,9 +138,8 @@
this.productionLine = productionLineCode
this.getList('refresh', this.productionLine)
},
getIssueJobByProductionline() {
getIssueJobByProductionline().then(res => {
console.log('生产线', res)
getProductionReceiptJobByProductionline() {
getProductionReceiptJobByProductionline().then(res => {
if (res.code == 0) {
this.productionLineList = res.data.map(item => ({
value: item.value,

Loading…
Cancel
Save