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 4 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. 9
      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. 33
      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 { export default {
onLaunch: function() { onLaunch: function() {
console.log('App Launch')
// , // ,
// #ifdef APP-PLUS // #ifdef APP-PLUS
// , // ,
@ -29,10 +28,8 @@
}; };
}, },
onShow: function() { onShow: function() {
console.log('App Show')
}, },
onHide: function() { onHide: function() {
console.log('App Hide')
}, },
} }

14
src/api/request2.js

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

22
src/common/directory.js

@ -22,6 +22,7 @@ let countStageList = [];
let locationAreaTypeList = []; let locationAreaTypeList = [];
let businessList = []; let businessList = [];
let countScopeTypeList = []; let countScopeTypeList = [];
let priorityList = []
@ -64,6 +65,7 @@ export function clearCacheData() {
locationAreaTypeList = [] locationAreaTypeList = []
businessList = [] businessList = []
countScopeTypeList = [] countScopeTypeList = []
priorityList = []
} }
//获取字典信息 //获取字典信息
@ -79,7 +81,6 @@ export function getDirectoryInfo(type) {
} }
} }
} }
return result return result
} }
@ -614,5 +615,22 @@ export function getPackUnitName(value) {
return resultInfo 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 locationAreaTypeList

6
src/common/style/new_style.css

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

9
src/mycomponents/job/jobComMainDetailCard.vue

@ -9,8 +9,13 @@
<pack v-if="isShowPack && dataContent.packingNumber!=null" :packingCode="dataContent.packingNumber"> <pack v-if="isShowPack && dataContent.packingNumber!=null" :packingCode="dataContent.packingNumber">
</pack> </pack>
<batch v-if="isShowBatch && dataContent.batch!=null" :batch="dataContent.batch"></batch> <batch v-if="isShowBatch && dataContent.batch!=null" :batch="dataContent.batch"></batch>
<view class="u-flex u-row-between">
<location v-if="isShowFromLocation&&dataContent.fromLocationCode" title="来源库位" :locationCode="dataContent.fromLocationCode"> <location v-if="isShowFromLocation&&dataContent.fromLocationCode" title="来源库位" :locationCode="dataContent.fromLocationCode">
</location> </location>
<level title="优先级" :priority="dataContent.priority">
</level>
</view>
<to-location v-if="isShowToLocation" title="目标库位" :locationCode="dataContent.toLocationCode||dataContent.locationCode"> <to-location v-if="isShowToLocation" title="目标库位" :locationCode="dataContent.toLocationCode||dataContent.locationCode">
</to-location> </to-location>
<view class="card_view " v-if="isShowDeliverType"> <view class="card_view " v-if="isShowDeliverType">
@ -27,8 +32,8 @@
import location from '@/mycomponents/balance/location.vue' import location from '@/mycomponents/balance/location.vue'
import toLocation from '@/mycomponents/balance/toLocation.vue' import toLocation from '@/mycomponents/balance/toLocation.vue'
import batch from '@/mycomponents/balance/batch.vue' import batch from '@/mycomponents/balance/batch.vue'
import jobComMainCard from '@/mycomponents/job/jobComMainCard.vue'
import itemCompareQty from '@/mycomponents/item/itemCompareQty.vue' import itemCompareQty from '@/mycomponents/item/itemCompareQty.vue'
import level from '@/mycomponents/balance/level.vue'
export default { export default {
components: { components: {
@ -36,8 +41,8 @@
location, location,
toLocation, toLocation,
batch, batch,
jobComMainCard,
itemCompareQty, itemCompareQty,
level
}, },
data() { data() {
return {}; 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 value: this.status
}) })
// filters.push({ filters.push({
// column: "countSplitType", column: "countSplitType",
// action: "==", action: "==",
// value: "locationCode" value: "locationCode"
// }) })
filters.push({ filters.push({
column: "isOpenCount", column: "isOpenCount",
@ -312,11 +312,11 @@
value: code value: code
}) })
// filters.push({ filters.push({
// column: "countSplitType", column: "countSplitType",
// action: "==", action: "==",
// value: "locationCode" value: "locationCode"
// }) })
filters.push({ filters.push({
column: "isOpenCount", column: "isOpenCount",
@ -371,11 +371,17 @@
value: '1,2' value: '1,2'
}) })
// filters.push({ filters.push({
// column: "countSplitType", column: "countSplitType",
// action: "==", action: "==",
// value: "locationCode" value: "locationCode"
// }) })
filters.push({
column: "isOpenCount",
action: "==",
value: "TRUE"
})
filters.push({ filters.push({
column: "countSplitCode", column: "countSplitCode",

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

@ -171,7 +171,9 @@
workStationCode: "", workStationCode: "",
planDate: '', planDate: '',
showDateSelect:false, showDateSelect:false,
planDateList:[] planDateList:[],
fgLocationCode:"",
rawLocationCode:""
} }
}, },
props: { props: {
@ -216,6 +218,8 @@
this.planDate="" this.planDate=""
this.showDateSelect =false this.showDateSelect =false
this.planDateList=[] this.planDateList=[]
this.fgLocationCode=""
this.rawLocationCode=""
}, },
@ -269,8 +273,9 @@
planQty: this.planQty, planQty: this.planQty,
goodQty: this.goodQty, goodQty: this.goodQty,
planNumber: this.planNumber, planNumber: this.planNumber,
workStationCode: this.workStationCode workStationCode: this.workStationCode,
fgLocationCode:this.fgLocationCode,
rawLocationCode:this.rawLocationCode
}; };
this.closeRequestPopup(); this.closeRequestPopup();
this.$emit("confirm", item); this.$emit("confirm", item);
@ -289,6 +294,9 @@
this.productionLineName = data[0].label + "—" + data[1].label this.productionLineName = data[0].label + "—" + data[1].label
this.productionLineCode = data[0].value this.productionLineCode = data[0].value
this.workStationCode = data[1].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.clearItemCode()
this.clearPackUnit() this.clearPackUnit()
@ -360,8 +368,7 @@
uni.hideLoading() uni.hideLoading()
if (res.data && res.data.length > 0) { if (res.data && res.data.length > 0) {
res.data.forEach(item => { res.data.forEach(item => {
item.label = item.itemCode + "(" + item.planQty + this.getUomInfo(item.uom) + ")" + "(" + item.label = item.itemCode + "(" + item.planQty + this.getUomInfo(item.uom) + ")"
dateFormatData(item.planDate) + ")"
item.value = item item.value = item
}) })
this.itemCodeList = res.data this.itemCodeList = res.data
@ -385,6 +392,26 @@
// //
this.clearPackUnit(); 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(){ clearPackUnit(){

7
src/pages/fg/receiptByPlan.vue

@ -12,6 +12,12 @@
<view class='split_line'></view> <view class='split_line'></view>
<view class="cell_box uni-flex uni-row"> <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="cell_info">
<view class="text_lightblue">计划数</view> <view class="text_lightblue">计划数</view>
<view>{{dataContent.planQty}}{{dataContent.uom}}</view> <view>{{dataContent.planQty}}{{dataContent.uom}}</view>
@ -202,6 +208,7 @@
batch: result.batch, batch: result.batch,
packUnit: result.packUnit, packUnit: result.packUnit,
workStationCode: result.workStationCode, workStationCode: result.workStationCode,
fgLocationCode:result.fgLocationCode,
subList: [] subList: []
} }
}, },

3
src/pages/index/index.vue

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

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

@ -23,7 +23,20 @@
@confirm="confirmWareHouse"></u-select> @confirm="confirmWareHouse"></u-select>
</view> </view>
</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='split_line'></view>
<view class="uni-flex uni-row padding title u-col-center"> <view class="uni-flex uni-row padding title u-col-center">
<text>位置</text> <text>位置</text>
@ -67,6 +80,7 @@
</view> </view>
</view> </view>
<view class='split_line'></view> <view class='split_line'></view>
</view> </view>
</view> </view>
</view> </view>
@ -136,7 +150,21 @@
maxlength: 10, maxlength: 10,
stdPackInfo: undefined, stdPackInfo: undefined,
wareHouseList: [], wareHouseList: [],
showWareHouse: false showWareHouse: false,
priorityList: [{
value: 0,
text: "低"
},
{
value: 1,
text: "中"
},
{
value: 2,
text: "高"
},
],
priority:1,//
} }
}, },
props: { props: {
@ -207,6 +235,7 @@
this.itemCode = "请扫描物料信息"; this.itemCode = "请扫描物料信息";
this.rawLocationCode = "" this.rawLocationCode = ""
this.positionInfo = "请选择位置" this.positionInfo = "请选择位置"
this.priority = ''
this.fromWarehouseCode = "请选择仓库代码" this.fromWarehouseCode = "请选择仓库代码"
this.workshopCode = "" // this.workshopCode = "" //
this.workShopName = "" this.workShopName = ""
@ -241,6 +270,10 @@
}, },
confirm() { confirm() {
if (this.priority === '') {
this.showErrorMessage("请输入优先级", "priority")
return
}
if (this.positionInfo == "请选择位置") { if (this.positionInfo == "请选择位置") {
this.showErrorMessage("请选择位置") this.showErrorMessage("请选择位置")
return return
@ -286,6 +319,7 @@
fgLocationCode: this.fgLocationCode, fgLocationCode: this.fgLocationCode,
fromWarehouseCode: this.fromWarehouseCode, fromWarehouseCode: this.fromWarehouseCode,
toWarehouseCode: this.fromWarehouseCode, toWarehouseCode: this.fromWarehouseCode,
priority : this.priority,
itemCode: this.itemCode, itemCode: this.itemCode,
itemName: this.itemName, itemName: this.itemName,
uom: this.uom, uom: this.uom,

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

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

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

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

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

@ -4,7 +4,7 @@
<com-blank-view @goScan='goScan()'></com-blank-view> <com-blank-view @goScan='goScan()'></com-blank-view>
</view> </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> <comMessage ref="comMessage"></comMessage>
</template> </template>
@ -37,7 +37,7 @@
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue' import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
import comScanIssuePack from '@/pages/issue/coms/comScanIssuePack.vue' import comScanIssuePack from '@/pages/issue/coms/comScanIssuePack.vue'
import comIssueRequestCreator from '@/pages/issue/coms/comIssueRequestCreator.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 { export default {
name: 'issueRequestSubmit', name: 'issueRequestSubmit',
@ -46,7 +46,7 @@
jobDetailPopup, jobDetailPopup,
comScanIssuePack, comScanIssuePack,
comIssueRequestCreator, comIssueRequestCreator,
winScanPack winScanPackLevel
}, },
data() { data() {
return { return {
@ -93,11 +93,11 @@
}, 400) }, 400)
}, },
getScanResult(data){ getScanResult(result){
this.detailSource = { this.detailSource = {
subList:[] subList:[]
} }
var labelInfo = data.label; var labelInfo = result.label;
var data = { var data = {
itemCode:labelInfo.itemCode, itemCode:labelInfo.itemCode,
@ -112,6 +112,7 @@
this.detailSource.workStationCode=labelInfo.workStationCode; this.detailSource.workStationCode=labelInfo.workStationCode;
this.detailSource.warehouseCode = labelInfo.warehouseCode; this.detailSource.warehouseCode = labelInfo.warehouseCode;
this.detailSource.workshopCode = labelInfo.workshopCode; this.detailSource.workshopCode = labelInfo.workshopCode;
this.detailSource.priority =result.priorityCode
this.submit(); this.submit();
}, },

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

@ -1,97 +1,6 @@
<template> <template>
<view> <view>
<uni-popup ref="popup" :maskClick='false'> <winComScanBalanceLocation ref="scanPopup" @getBalance='getScanResult' @onCloseScanPopup="closeScanPopup" bussinessCode="OverPackage"></winComScanBalanceLocation>
<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>
<balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select> <balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select>
<comMessage ref="comMessage"></comMessage> <comMessage ref="comMessage"></comMessage>
<balance-qty-edit ref="balanceQtyEdit" @confirm="confirm" :isShowStatus="true"></balance-qty-edit> <balance-qty-edit ref="balanceQtyEdit" @confirm="confirm" :isShowStatus="true"></balance-qty-edit>
@ -103,6 +12,7 @@
import balance from '@/mycomponents/balance/balance.vue' import balance from '@/mycomponents/balance/balance.vue'
import balanceQtyEdit from '@/mycomponents/qty/balanceQtyEdit.vue' import balanceQtyEdit from '@/mycomponents/qty/balanceQtyEdit.vue'
import balanceSelect from '@/mycomponents/balance/balanceSelect.vue' import balanceSelect from '@/mycomponents/balance/balanceSelect.vue'
import winComScanBalanceLocation from '@/mycomponents/scan/winComScanBalanceLocation.vue'
import { import {
getDetailOption, getDetailOption,
@ -116,10 +26,7 @@
calc calc
} from '@/common/calc.js'; } from '@/common/calc.js';
import { import { getDirectoryItemArray } from '@/common/directory';
getBalanceByManagementPrecision
} from '@/common/balance.js';
import { getDirectoryItemArray } from '../../../common/directory';
export default { export default {
name: 'winScanPack', name: 'winScanPack',
@ -127,7 +34,8 @@ import { getDirectoryItemArray } from '../../../common/directory';
winComScan, winComScan,
balance, balance,
balanceQtyEdit, balanceQtyEdit,
balanceSelect balanceSelect,
winComScanBalanceLocation
}, },
props: { props: {
title: { title: {
@ -139,7 +47,6 @@ import { getDirectoryItemArray } from '../../../common/directory';
return { return {
dataContent: {}, dataContent: {},
jobContent: {}, jobContent: {},
expendIcon: 'arrow-down',
show: false, show: false,
scanList: [], scanList: [],
toLocation: null, toLocation: null,
@ -151,9 +58,6 @@ import { getDirectoryItemArray } from '../../../common/directory';
expand: true, expand: true,
scanOptions: {}, scanOptions: {},
editItem: {}, editItem: {},
positionInfo: "请选择位置",
positionList: [],
defaultValueList: [],
fromInventoryStatuses: "", fromInventoryStatuses: "",
packageInfo: {}, packageInfo: {},
label: {} label: {}
@ -173,18 +77,11 @@ import { getDirectoryItemArray } from '../../../common/directory';
this.dataContent = content; this.dataContent = content;
this.jobContent = jobcontent; this.jobContent = jobcontent;
this.initData(); this.initData();
// this.positionInfo = this.jobContent.workShopCode + "-" + this.jobContent.subList[0].productionLineCode + this.$refs.scanPopup.openScanPopupForJob(this.fromLocationCode, this.fromLocationList, this.jobContent)
// "-" + this.jobContent.subList[0].workStationCode
setTimeout(res => {
this.$refs.popup.open('bottom')
}, 500)
}, },
closeScanPopup() { closeScanPopup() {
this.$refs.popup.close();
this.$emit("closeScan") this.$emit("closeScan")
//
// Object.assign(this.$data, this.$options.data());
}, },
initData() { initData() {
@ -227,6 +124,22 @@ import { getDirectoryItemArray } from '../../../common/directory';
} }
}, },
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) { onScan(result) {
try { try {
@ -398,7 +311,8 @@ import { getDirectoryItemArray } from '../../../common/directory';
let record = { let record = {
scaned: true, scaned: true,
itemCode: label.itemCode, itemCode: label.itemCode,
packingNumber: label.packingNumber, packingNumber: packageInfo.number,
parentPackingNumber:packageInfo.parentNumber,
batch: label.batch, batch: label.batch,
qty: Number(balance.qty), qty: Number(balance.qty),
// qty: Number(label.qty) > Number(balance.qty) ? Number(balance.qty) : Number(label.qty), // qty: Number(label.qty) > Number(balance.qty) ? Number(balance.qty) : Number(label.qty),
@ -430,22 +344,17 @@ import { getDirectoryItemArray } from '../../../common/directory';
}, },
getfocus() { getfocus() {
if (this.$refs.comscan != undefined) { if (this.$refs.scanPopup ) {
this.$refs.comscan.getfocus(); this.$refs.scanPopup.getfocus();
} }
}, },
losefocus() { losefocus() {
if (this.$refs.comscan != undefined) { if (this.$refs.scanPopup ) {
this.$refs.comscan.losefocus(); this.$refs.scanPopup.losefocus();
} }
}, },
expands() {
this.expand = !this.expand;
this.expendIcon = this.expand == true ? "arrow-down" : "arrow-up"
},
swipeClick(e, item, index) { swipeClick(e, item, index) {
if (e.content.text == "详情") { if (e.content.text == "详情") {
this.detail(item) this.detail(item)
@ -490,10 +399,10 @@ import { getDirectoryItemArray } from '../../../common/directory';
}, },
packGetFocus() { packGetFocus() {
this.$refs.comscan.getfocus(); this.$refs.scanPopup.getfocus();
}, },
packLoseFocus() { packLoseFocus() {
this.$refs.comscan.losefocus(); this.$refs.scanPopup.packLoseFocus();
}, },
showMessage(message, callback) { showMessage(message, callback) {
setTimeout(r => { setTimeout(r => {

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

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

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

@ -356,7 +356,12 @@
}, },
checkSubmit() { 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; var toPackQty = this.toPackQty;
// //
if (tempHandleQty % toPackQty > 0) { if (tempHandleQty % toPackQty > 0) {

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

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

Loading…
Cancel
Save