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 3 months ago
parent
commit
87f1d216a3
  1. 2
      src/api/httpRequest3.js
  2. 23
      src/api/request2.js
  3. 108
      src/common/balance.js
  4. 24
      src/hybrid/html/point.html
  5. 63
      src/hybrid/html/pointPutawayJob.html
  6. 4
      src/manifest.json
  7. 37
      src/mycomponents/balance/balance.vue
  8. 8
      src/mycomponents/balance/balanceSelect.vue
  9. 2
      src/mycomponents/balance/handleBalance.vue
  10. 36
      src/mycomponents/common/comMessage.vue
  11. 7
      src/mycomponents/job/jobComMainDetailCard.vue
  12. 20
      src/mycomponents/job/jobFilter.vue
  13. 12
      src/mycomponents/jobList/jobList.vue
  14. 13
      src/mycomponents/package/packageCard.vue
  15. 14
      src/mycomponents/recommend/recommend.vue
  16. 1
      src/mycomponents/scan/winCheckFgLabel.vue
  17. 4
      src/mycomponents/scan/winComScan.vue
  18. 4
      src/mycomponents/scan/winComScanFg.vue
  19. 7
      src/mycomponents/scan/winScanFgLabel.vue
  20. 25
      src/mycomponents/scan/winScanLocation.vue
  21. 15
      src/mycomponents/scan/winScanPack.vue
  22. 84
      src/mycomponents/scan/winScanPackAndLocation.vue
  23. 4
      src/mycomponents/scan/winScanPackAndLocationNoBalance.vue
  24. 1
      src/mycomponents/scan/winScanPackJob.vue
  25. 2
      src/pages.json
  26. 9
      src/pages/count/job/countJob.vue
  27. 4
      src/pages/count/record/countRecord.vue
  28. 1
      src/pages/customerReturn/job/returnDetail.vue
  29. 5
      src/pages/customerReturn/job/returnJob.vue
  30. 1
      src/pages/deliver/coms/comDeliverRequestPopup.vue
  31. 22
      src/pages/deliver/coms/comScanDeliverPack.vue
  32. 1
      src/pages/deliver/job/deliverDetail.vue
  33. 5
      src/pages/deliver/job/deliverJob.vue
  34. 2
      src/pages/index/index.vue
  35. 6
      src/pages/inspect/job/inspectJob.vue
  36. 5
      src/pages/inventoryMove/coms/comMoveJob.vue
  37. 4
      src/pages/inventoryMove/coms/comMoveRecord.vue
  38. 11
      src/pages/inventoryMove/job/inventoryMoveDetail.vue
  39. 1
      src/pages/issue/coms/comIssueRequestPopup.vue
  40. 35
      src/pages/issue/coms/comScanIssuePack.vue
  41. 64
      src/pages/issue/job/issueDetail.vue
  42. 108
      src/pages/issue/job/issueJob.vue
  43. 1
      src/pages/issue/js/issue.js
  44. 6
      src/pages/issue/request/issueScanRequest.vue
  45. 5
      src/pages/package/job/overPackageJob.vue
  46. 32
      src/pages/package/job/overPackageJobDetail.vue
  47. 24
      src/pages/package/record/overPackageRecord.vue
  48. 40
      src/pages/point/index.vue
  49. 167
      src/pages/pointPutawayJob/index.vue
  50. 4
      src/pages/productPutaway/job/fgProductPutawayJob.vue
  51. 60
      src/pages/productPutaway/job/productPutawayDetail.vue
  52. 21
      src/pages/productPutaway/job/productPutawayJob.vue
  53. 11
      src/pages/productReceipt/job/fgProductReceiptDetail.vue
  54. 21
      src/pages/productReceipt/job/productReceiptDetail.vue
  55. 11
      src/pages/productReceipt/job/productReceiptJob.vue
  56. 6
      src/pages/productRecycle/job/productRecycleJob.vue
  57. 1
      src/pages/productRecycle/job/productRecycleJobDetail.vue
  58. 117
      src/pages/productionReceipt/job/productionReceiptDetail.vue
  59. 79
      src/pages/productionReceipt/job/productionReceiptJob.vue
  60. 1
      src/pages/productionReturn/coms/comReturnRequestPopup.vue
  61. 5
      src/pages/productionReturn/job/returnJob.vue
  62. 182
      src/pages/purchaseReceipt/job/receiptDetail.vue
  63. 33
      src/pages/purchaseReceipt/job/receiptJob.vue
  64. 1
      src/pages/purchaseReturn/job/returnDetail.vue
  65. 5
      src/pages/purchaseReturn/job/returnJob.vue
  66. 49
      src/pages/putaway/job/putawayDetail.vue
  67. 13
      src/pages/putaway/job/putawayJob.vue
  68. 1
      src/pages/repleinsh/coms/comRepleinshRequestPopup.vue
  69. 102
      src/pages/repleinsh/coms/comScanReplishPack.vue
  70. 100
      src/pages/repleinsh/job/repleinshDetail.vue
  71. 6
      src/pages/repleinsh/job/repleinshJob.vue
  72. 155
      src/pages/repleinsh/record/directRepleinshRecord.vue
  73. 5
      src/pages/scrap/job/scrapJob.vue
  74. 1
      src/pages/stockUp/job/stockUpJobDetail.vue
  75. 2
      src/pages/transfer/coms/comReceiptDetailCard.vue
  76. 1
      src/pages/transfer/job/issueDetail.vue
  77. 5
      src/pages/transfer/job/issueJob.vue
  78. 1
      src/pages/transfer/job/receiptDetail.vue
  79. 5
      src/pages/transfer/job/receiptJob.vue
  80. 11
      src/pages/transfer/job/transferDetail.vue
  81. 5
      src/pages/unPlanned/job/issueJob.vue
  82. 5
      src/pages/unPlanned/job/receiptJob.vue
  83. 4
      src/pages/unPlanned/record/issueRecord.vue
  84. 1
      src/store/modules/user.js

2
src/api/httpRequest3.js

@ -21,6 +21,7 @@ function service(options = {}) {
"content-type": "application/json",
"Authorization": "Bearer "+token,
"dataType":"json",
"dataSource":"PDA",
"tenant-id":tenantId
};
options.timeout = 300000
@ -36,6 +37,7 @@ function service(options = {}) {
}else {
if(res.data.code==401){
uni.clearStorageSync()
uni.removeStorageSync('overPackageRecord') // 删除直接翻包中缓存的来源库位
removeToken();
uni.reLaunch({
url: '/pages/login/index'

23
src/api/request2.js

@ -1314,6 +1314,14 @@ export function getIssueJobList(params) {
data: params,
});
}
export function getIssueJobByProductionline() {
return request({
url: baseApi + "/wms/issue-job-main/getIssueJobByProductionline",
method: "get",
data: {},
});
}
/**
* 发料任务明细
* @param {*} 任务id
@ -1563,7 +1571,7 @@ export function inventoryMoveRecordSubmit(params) {
*/
export function getCountJobList(params) {
return request({
url: baseApi + "/wms/count-job-detail/senior",
url: baseApi + "/wms/count-job-main/senior",
method: "post",
data: params,
});
@ -2296,9 +2304,9 @@ export function productDismantleRecordSubmit(params) {
*/
export function productDismantleJobClose(params) {
return request({
url: baseApi + "/wms/purchasereceipt-job-main/refusal?id="+params,
method: "put",
data: {},
url: baseApi + "/wms/purchasereceipt-job-main/refusal",
method: "post",
data: params,
});
}
@ -4154,9 +4162,10 @@ export function isCheckMesCode(code) {
* 获取上架任务打印明细
* @param {*}
*/
export function getJimuPutawayJobDetail(ids) {
export function getJimuPutawayJobDetail(data) {
return request({
url: baseApi + "/wms/jimu-report/getPutawayJobDetailForPDA?masterIds="+ids,
method: "get",
url: baseApi + "/wms/jimu-report/getPutawayJobDetailForPDA",
method: "post",
data:data
});
}

108
src/common/balance.js

@ -131,8 +131,58 @@ export function getManagementPrecisions(itemCodes, locationCode, callback) {
callback(result);
})
}
//通过父包装查询
export function getBalanceByManagementPrecisionByPacking(label, packageInfo,locationCode, fromInventoryStatuses, callback) {
let result = {
list: [],
success: true,
message: ''
};
let params = {
itemCodes: [label.itemCode],
locationCode: locationCode
};
// let jsonParem = JSON.stringify(param)
getManagementPrecision(params).then(res => {
let managementPrecision = res.data[0].ManagementPrecision;
switch (managementPrecision) {
case 'BY_PACKAGING':
byPacking(label, packageInfo,locationCode, fromInventoryStatuses, res => {
res.managementPrecision = managementPrecision;
callback(res);
});
break;
case 'BY_BATCH':
byBatch(label, locationCode, fromInventoryStatuses, res => {
res.managementPrecision = managementPrecision;
callback(res);
});
break;
case 'BY_QUANTITY':
byQuantity(label, locationCode, fromInventoryStatuses, res => {
res.managementPrecision = managementPrecision;
callback(res);
});
break;
case 'BY_UNIQUEID':
byUniqueId(label, fromInventoryStatuses, res => {
res.managementPrecision = managementPrecision;
callback(res);
});
break;
}
}).catch(error => {
let result = {
success: false,
message: error
};
callback(result);
})
}
export function getBalanceByManagementPrecision(label, locationCode, fromInventoryStatuses, callback) {
export function getBalanceByManagementPrecision(label,locationCode, fromInventoryStatuses, callback) {
let result = {
list: [],
success: true,
@ -147,7 +197,7 @@ export function getBalanceByManagementPrecision(label, locationCode, fromInvento
let managementPrecision = res.data[0].ManagementPrecision;
switch (managementPrecision) {
case 'BY_PACKAGING':
byPacking(label, locationCode, fromInventoryStatuses, res => {
byPacking(label, "",locationCode, fromInventoryStatuses, res => {
res.managementPrecision = managementPrecision;
callback(res);
});
@ -184,18 +234,30 @@ export function getBalanceByManagementPrecision(label, locationCode, fromInvento
* @param {Object} locationCode
* @param {Object} callback
*/
export function byPacking(label, locationCode, fromInventoryStatuses, callback) {
export function byPacking(label, packageInfo,locationCode, fromInventoryStatuses, callback) {
let result = {
success: true,
message: '',
data: {}
};
var filters = []
filters.push({
column: "packingNumber",
action: "==",
value: label.packingNumber
})
if (packageInfo&&packageInfo.parentNumber) {
var packingNumber = packageInfo.parentNumber + "," + label.packingNumber;
filters.push({
column: "packingNumber",
action: "in",
value: packingNumber
})
} else {
filters.push({
column: "packingNumber",
action: "==",
value: label.packingNumber
})
}
filters.push({
column: "itemCode",
action: "==",
@ -212,11 +274,7 @@ export function byPacking(label, locationCode, fromInventoryStatuses, callback)
value: locationCode
})
if (fromInventoryStatuses) {
var status = ""
fromInventoryStatuses.forEach(res => {
status = res + ","
})
var status = fromInventoryStatuses.join(',');
filters.push({
column: "inventoryStatus",
action: "in",
@ -281,9 +339,11 @@ export function byBatch(label, locationCode, fromInventoryStatuses, callback) {
})
if (fromInventoryStatuses) {
var status = ""
fromInventoryStatuses.forEach(res => {
status = res + ","
var status = fromInventoryStatuses.join(',');
filters.push({
column: "inventoryStatus",
action: "in",
value: status
})
filters.push({
@ -358,9 +418,11 @@ export function byQuantity(label, locationCode, fromInventoryStatuses, callback)
})
if (fromInventoryStatuses) {
var status = ""
fromInventoryStatuses.forEach(res => {
status = res + ","
var status = fromInventoryStatuses.join(',');
filters.push({
column: "inventoryStatus",
action: "in",
value: status
})
filters.push({
@ -417,9 +479,11 @@ export function byUniqueId(label, locationCode, fromInventoryStatuses, callback)
})
if (fromInventoryStatuses) {
var status = ""
fromInventoryStatuses.forEach(res => {
status = res + ","
var status = fromInventoryStatuses.join(',');
filters.push({
column: "inventoryStatus",
action: "in",
value: status
})
filters.push({

24
src/hybrid/html/point.html

@ -17,6 +17,7 @@
.box {
font-size: 14px;
display: flex;
margin-top: 60px;
}
@ -35,38 +36,41 @@
border-right: 1px solid #b1b1b1;
width: 60px;
padding: 0px 5px;
height: 67px;
line-height: 67px;
height: 58px;
line-height: 58px;
}
.value {
border-bottom: 1px solid #b1b1b1;
border-right: 1px solid #b1b1b1;
padding: 0px 5px;
height: 67px;
height: 58px;
flex: 1;
width: 0px;
display: flex;
align-items: center;
word-wrap: break-word;
word-break: break-all;
}
.right {
width: 200px;
width: 300px;
}
.image {
width: 100%;
height: 202px;
width: calc(100% - 1px);
height: 176px;
border-bottom: 1px solid #b1b1b1;
border-top: 1px solid #b1b1b1;
border-right: 1px solid #b1b1b1;
}
.image img {
width: calc(100% - 4px);
height: calc(100% - 4px);
margin: 2px;
width: 172px;
height: 172px;
border: 1px solid #b1b1b1;
/* width: calc(100% - 4px);
height: calc(100% - 4px); */
margin: 1px;
}
</style>
</head>

63
src/hybrid/html/pointPutawayJob.html

@ -15,8 +15,8 @@
<style>
.box {
font-size: 13px;
/* padding: 10px;
border: 1px solid #dedede; */
/* padding: 10px; */
border: 1px solid #dedede;
}
.left {
@ -70,38 +70,57 @@
.mb-kw {
border-bottom: 1px solid #dedede;
padding-bottom: 10px;
padding: 10px;
font-size: 15px;
}
.mb-kw span {
.mb-kw div {
font-weight: bold;
font-size: 16px;
font-size: 23px;
text-align: center;
}
.mb-text {
margin-top: 5px;
.mb-bo {
display: flex;
}
table, th, td {
border: 1px solid rgb(228, 231, 237);
border-collapse: collapse; /* 移除表格内边框间的间隙 */
.mb-bo .mb-left {
flex: 1
}
table{
width: 100%;
margin-top: 10px;
.mb-bo .mb-left .mb-text {
padding: 10px;
}
th{
padding: 4px ;
font-size: 12px;
.mb-bo .mb-left .mb-text:nth-child(1) {
border-bottom: 1px solid #dedede;
}
.mb-bo .mb-left .mb-text div {
font-weight: bold;
font-size: 16px;
text-align: center;
background:rgb(245, 246, 248);
color:rgb(96, 98, 102)
}
td{
padding: 4px ;
font-size: 12px;
.mb-bo .mb-right {
padding: 10px;
width: 230px;
border-left: 1px solid #dedede;
display: flex;
align-items: center;
}
.mb-bo .mb-right .mb-text {
width: 100%;
}
.mb-bo .mb-right .mb-text div {
font-weight: bold;
font-size: 20px;
text-align: center;
color:rgb(96, 98, 102)
width: 100%;
}
</style>
</head>

4
src/manifest.json

@ -2,8 +2,8 @@
"name" : "wms",
"appid" : "__UNI__C9CF4BF",
"description" : "",
"versionName" : "1.0.5",
"versionCode" : 5,
"versionName" : "1.0.12",
"versionCode" : 12,
"transformPx" : false,
/* 5+App */
"app-plus" : {

37
src/mycomponents/balance/balance.vue

@ -2,27 +2,40 @@
<view :class="dataContent.scaned?'scan_view':''" style="background-color: #ffffff;margin-bottom: 1px; ">
<view class="uni-flex uni-row space-between" style="align-items: center">
<view>
<pack v-if="dataContent.parentNumber" title="父包装" :packingCode="dataContent.parentNumber"></pack>
<pack v-if="isShowPack && dataContent.packingNumber" :packingCode="dataContent.packingNumber"></pack>
<batch v-if="isShowBatch && dataContent.batch" :batch="dataContent.batch"></batch>
<location title="来源库位" v-if="isShowFromLocation" :locationCode="dataContent.locationCode"></location>
<to-location title="目标库位" v-if="isShowToLocation" :locationCode="dataContent.toLocationCode">
</to-location>
</view>
<view class="uni-flex uni-row center">
<!-- <qty v-if="dataContent.record==null ||dataContent.record==undefined " :dataContent="dataContent"
:isShowStdPack="isShowStdPack" :isShowStatus="isShowStatus"></qty> -->
<qty v-if="dataContent.handleQty==0 || dataContent.handleQty==undefined" :dataContent="dataContent"
:isShowStdPack="isShowStdPack" :isShowStatus="isShowStatus"></qty>
<compare-qty v-else :dataContent="dataContent" :recommendQty="Number( dataContent.qty)"
:handleQty="Number (dataContent.handleQty)" :isShowStdPack="isShowStdPack"
:isShowStatus='isShowStatus'>
</compare-qty>
<view class="uni-flex" style="flex-direction: column;">
<view class="uni-flex uni-row center">
<view class="uni-flex uni-row" style="vertical-align:center" v-if="isDevlement()">
<text style="font-size: 30rpx;color: #2979ff; width: 20px;" @click="copy">复制</text>
<!-- <qty v-if="dataContent.record==null ||dataContent.record==undefined " :dataContent="dataContent"
:isShowStdPack="isShowStdPack" :isShowStatus="isShowStatus"></qty> -->
<qty v-if="dataContent.handleQty==0 || dataContent.handleQty==undefined" :dataContent="dataContent"
:isShowStdPack="isShowStdPack" :isShowStatus="isShowStatus"></qty>
<compare-qty v-else :dataContent="dataContent" :recommendQty="Number( dataContent.qty)"
:handleQty="Number (dataContent.handleQty)" :isShowStdPack="isShowStdPack"
:isShowStatus='isShowStatus'>
</compare-qty>
<view class="uni-flex uni-row" style="vertical-align:center" v-if="isDevlement()">
<text style="font-size: 30rpx;color: #2979ff; width: 20px;" @click="copy">复制</text>
</view>
</view>
<view class="" v-if="dataContent.inventoryStatus">
<move-status :fromInventoryStatus="dataContent.inventoryStatus">
</move-status>
</view>
</view>
</view>
<!-- <u-line></u-line> -->
</view>
@ -37,6 +50,7 @@
import recommendQty from '@/mycomponents/qty/recommendQty.vue'
import compareQty from '@/mycomponents/qty/compareQty.vue'
import config from '@/static/config.js'
import moveStatus from '@/mycomponents/balance/moveStatus.vue'
export default {
components: {
@ -47,6 +61,7 @@
qty,
recommendQty,
compareQty,
moveStatus
},
data() {

8
src/mycomponents/balance/balanceSelect.vue

@ -37,7 +37,13 @@
},
methods: {
openPopup(items) {
this.balanceItems = items;
if(Array.isArray(items)){
this.balanceItems = items;
}else{
this.balanceItems = [items];
}
this.$refs['popupItems'].open("center");
},

2
src/mycomponents/balance/handleBalance.vue

@ -2,7 +2,7 @@
<view :class="detail.scaned?'scan_view':''" style="background-color: #ffffff;">
<view class="space_between center">
<view style="word-break: break-all;width: 60%;">
<pack title='外包装' v-if="detail.parentPackingNumber!=undefined && detail.parentPackingNumber!=''"
<pack title='外包装' v-if="detail.parentPackingNumber"
:packingCode="detail.parentPackingNumber"></pack>
<pack v-if="isShowPack" :packingCode="detail.packingNumber"></pack>
<batch v-if="isShowBatch" :batch="detail.batch"></batch>

36
src/mycomponents/common/comMessage.vue

@ -2,6 +2,12 @@
<view>
<u-modal v-model="show" :title-style="{color: 'red'}" :title="title" :showTitle="false"
:showConfirmButton="false" ref="modal">
<view class="" style="width: 100%;display: flex; align-items: center; justify-content: center;margin-top: 10rpx; " >
<view class="" style="">
版本号 : {{version}}
</view>
</view>
<view class="slot-content">
<slot name="icon">
<image class="icon" :src="icon" />
@ -9,7 +15,6 @@
<slot name="content">
<rich-text class="content" :nodes="content">
</rich-text>
</slot>
<view class='split_line'></view>
<slot name="button">
@ -56,13 +61,40 @@
cancel: false, // true
isDisabled: true, // true
seconds: 0,
success: () => {} //
success: () => {} ,//
version:""
}
},
mounted() {
// const systemInfo = uni.getSystemInfoSync();
// // #ifdef H5
// this.version = systemInfo.appVersion;
// console.log(systemInfo.appVersion, '');
// // #endif
// // #ifdef APP
// this.version = systemInfo.appWgtVersion;
// // #endif
},
methods: {
getVersionCode(){
const systemInfo = uni.getSystemInfoSync();
// #ifdef H5
this.version = systemInfo.appVersion;
console.log(systemInfo.appVersion, '版本号');
// #endif
// #ifdef APP
this.version = systemInfo.appWgtVersion;
// #endif
},
open() {
this.getVersionCode()
this.show = true;
this.isDisabled = true;
},

7
src/mycomponents/job/jobComMainDetailCard.vue

@ -1,8 +1,9 @@
<template>
<view class="task_item">
<view class="task_text" style="border-top: 1px solid #dedede;padding-top: 20rpx;margin-top: 20rpx;">
<itemCompareQty :dataContent="dataContent" :handleQty="dataContent.handleQty" :isShowPackUnit="false"
:objTextStyle="{'fontWeight':'bold','fontSize':'40rpx'}"></itemCompareQty>
<!-- 主子表拆分没有数量了 -->
<!-- <itemCompareQty :dataContent="dataContent" :handleQty="dataContent.handleQty" :isShowPackUnit="false"
:objTextStyle="{'fontWeight':'bold','fontSize':'40rpx'}"></itemCompareQty> -->
<div class="u-p-l-10">
<pack v-if="isShowPack && dataContent.packingNumber!=null" :packingCode="dataContent.packingNumber">
@ -12,7 +13,7 @@
<location v-if="isShowFromLocation&&dataContent.fromLocationCode" title="来源库位" :locationCode="dataContent.fromLocationCode">
</location>
<!-- <to-location></to-location> -->
<to-location v-if="isShowToLocation" title="目标库位" :locationCode="dataContent.toLocationCode">
<to-location v-if="isShowToLocation" title="目标库位" :locationCode="dataContent.locationCode">
</to-location>
</div>
<view class="card_view " v-if="isShowDeliverType">

20
src/mycomponents/job/jobFilter.vue

@ -1,8 +1,8 @@
<template>
<uni-popup ref="popup">
<uni-popup ref="popup" >
<view class="maskbox" @tap="maskClick"></view>
<view class="uni-flex uni-column center"
style="background-color: white;width: 200px; height:auto;padding: 20rpx;z-index: 99;position: relative;">
style="background-color: white;width: 100%; height:auto;padding: 20rpx;z-index: 99;position: relative;">
<view class="uni-flex space-between u-col-center" style="width: 100%;">
<view class="" style="font-size: 32rpx;">
只看当天
@ -21,14 +21,16 @@
<view class="" style="font-size: 32rpx;">
生产线
</view>
<u-input style="margin-left: 20rpx;" v-model="productionLineCode" :border="true"
placeholder="请输入生产线" @confirm="productionLineCodeConfirm" />
<!-- <u-input style="margin-left: 20rpx;" v-model="productionLineCode" :border="true"
placeholder="请输入生产线" @confirm="productionLineCodeConfirm" /> -->
<uni-data-select class="uni-data-select" style="margin-left: 50rpx;" placeholder="请输入生产线" v-model="productionLineCode" :clear="false" :localdata="productionline" @change="productionLineCodeConfirm"></uni-data-select>
</view>
<view v-if="isShowFromLocationCode" class="uni-flex space-between u-col-center" style="width: 100%;margin-top: 30rpx;">
<view class="" style="font-size: 32rpx;">
来源库位
</view>
<u-input style="margin-left: 20rpx;" v-model="fromLocationCode" :border="true"
<u-input style="margin-left: 20rpx;" confirmType="search" v-model="fromLocationCode" :border="true"
placeholder="请输入来源库位" @confirm="fromLocationCodeConfirm" />
</view>
@ -57,7 +59,7 @@
import winScanAsnNumber from "@/mycomponents/scan/winScanAsnNumber.vue"
export default {
emits: ["switchChangeToday", "switchChangeWait", "onScanNumber", "onScanAsnNumber"],
emits: ["switchChangeToday", "switchChangeWait", "onScanNumber", "onScanAsnNumber","productionLineCode","fromLocationCode"],
components: {
winScanJobNumber,
winScanAsnNumber
@ -92,6 +94,10 @@
type: Boolean,
default: false
},
productionline:{
type: Array,
default: []
}
},
data() {
return {
@ -136,7 +142,7 @@
this.closeScanPopup();
},
openFilter() {
this.$refs['popup'].open("right");
this.$refs['popup'].open("top");
},
closeScanPopup() {
this.$refs.popup.close()

12
src/mycomponents/jobList/jobList.vue

@ -26,6 +26,7 @@ import { onShow } from '@dcloudio/uni-app';
},
data() {
return {
isScanedASN:false,
list: []
// [{
// title:'',
@ -36,13 +37,14 @@ import { onShow } from '@dcloudio/uni-app';
props: {
},
methods:{
openList(list){
this.list = list
openList(list,isScanedASN=false){
this.list = list;
this.isScanedASN = isScanedASN;
this.$refs.listPopup.open('center')
},
selectItem(item,index){
this.$emit("selectItem", item);
this.$refs.listPopup.close();
this.$emit("selectItem", item,this.isScanedASN);
}
}
}
@ -55,7 +57,7 @@ import { onShow } from '@dcloudio/uni-app';
align-items: center;
.list{
width: 80%;
max-height:80vh;
max-height:50vh;
overflow-y: auto;
border-radius: 10px !important;
.slot-image{

13
src/mycomponents/package/packageCard.vue

@ -93,6 +93,19 @@
},
watch: {
//
dataContent: {
handler(newVal, oldVal) {
if(newVal.scaned){
newVal.copyContent = "HPQ;V1.0;I" + newVal.itemCode + ";P" + newVal.packingNumber + ";B" + newVal.batch + ";Q" + newVal.qty
}else{
newVal.copyContent = ''
}
console.log('newVal.copyContent',newVal.copyContent)
},
immediate: true,
deep: true
}
},
methods: {

14
src/mycomponents/recommend/recommend.vue

@ -93,7 +93,19 @@
},
watch: {
//
detail: {
handler(newVal, oldVal) {
if(newVal.scaned){
newVal.copyContent = "HPQ;V1.0;I" + newVal.itemCode + ";P" + newVal.packingNumber + ";B" + newVal.batch + ";Q" + newVal.qty
}else{
newVal.copyContent = ''
}
console.log('newVal.copyContent',newVal.copyContent)
},
immediate: true,
deep: true
}
},
methods: {
copy() {

1
src/mycomponents/scan/winCheckFgLabel.vue

@ -44,7 +44,6 @@
} from '@/common/balance.js';
import {
getBasicLocationByCode,
getCustomerItemList
} from '@/api/request2.js';

4
src/mycomponents/scan/winComScan.vue

@ -145,6 +145,9 @@
this.placeholderValue = '请扫描' + this.placeholder;
},
methods: {
setItemCodeSimulate(scanMsg) {
this.scanMsg = scanMsg;
},
hide() {
// #ifdef APP-PLUS
//
@ -202,6 +205,7 @@
getLabelInfo(content, this.headerType, callback => {
// uni.hideLoading();
let scanResult = callback;
scanResult.scanMessage=content
if (scanResult.success) {
that.clear();
// that.getfocus();//

4
src/mycomponents/scan/winComScanFg.vue

@ -139,6 +139,10 @@
}, 1000);
// #endif
},
setItemCodeSimulate(itemCode,scanMsg) {
this.itemCode = itemCode;
this.scanMsg = scanMsg;
},
setItemCode(itemCode) {
this.itemCode = itemCode;
},

7
src/mycomponents/scan/winScanFgLabel.vue

@ -21,6 +21,8 @@
</view>
</view>
</uni-popup>
<!-- 模拟扫描功能 -->
<win-com-scan-fg v-show="false" ref="comscansimulate" @getResult="getScanResult" :isShowHistory="false" :clearResult="true"></win-com-scan-fg>
<comMessage ref="comMessage" @afterClose="getfocus"></comMessage>
</view>
</template>
@ -52,6 +54,11 @@
},
methods: {
//
simulateScan(item){
this.$refs.comscansimulate.setItemCodeSimulate(item.itemCode,item.copyContent)
this.$refs.comscansimulate.clickScanMsg();
},
openScanPopup(itemCode) {
setTimeout(res => {
this.$refs.popup.open('bottom')

25
src/mycomponents/scan/winScanLocation.vue

@ -19,6 +19,8 @@
</view>
</view>
</uni-popup>
<!-- 模拟扫描功能 -->
<win-com-scan v-show="false" ref="comscansimulate" @getResult="getScanResult" :clearResult="true" :boxFocus="true" :isShowHistory="false" headerType=""></win-com-scan>
<comMessage ref="comMessage"></comMessage>
</template>
@ -67,8 +69,15 @@
this.$refs.popup.open('bottom')
}, 500)
},
openScanPopupSimulate(location) {
this.$refs.comscansimulate.setItemCodeSimulate(location)
this.$refs.comscansimulate.clickScanMsg();
},
closeScanPopup() {
this.$refs.popup.close()
if(this.$refs.popup){
this.$refs.popup.close()
}
},
scanClick() {
this.$refs.scan.clickScanMsg();
@ -77,6 +86,7 @@
this.$refs.scan.clearScanValue();
},
getScanResult(result) {
uni.showLoading({
title: '扫描中...',
mask: true
@ -94,9 +104,14 @@
}
getBasicLocationByCode(this.code).then(res => {
uni.hideLoading();
if (res.data.total > 0) {
let result = res.data.list[0];
if(result.code!=this.code){
this.showErrorMessage('未查询到库位[' + this.code + ']')
return;
}
var type = result.type;
var areaType = result.areaType
var available = result.available;
@ -142,10 +157,14 @@
return isPass
},
getfocus() {
this.$refs.scan.getfocus();
if(this.$refs.scan){
this.$refs.scan.getfocus();
}
},
losefocus() {
this.$refs.scan.losefocus();
if(this.$refs.scan){
this.$refs.scan.losefocus();
}
},
showErrorMessage(message) {
setTimeout(r => {

15
src/mycomponents/scan/winScanPack.vue

@ -20,6 +20,8 @@
</view>
</view>
</uni-popup>
<!-- 模拟扫描功能 -->
<win-com-scan v-show="false" ref="comscansimulate" @getResult="getScanResult" :headerType="headerType" :isShowHistory="false" :clearResult="true"></win-com-scan>
<comMessage ref="comMessage" @afterClose="getfocus"></comMessage>
</view>
</template>
@ -55,6 +57,10 @@
},
methods: {
simulateScan(item){
this.$refs.comscansimulate.setItemCodeSimulate(item.copyContent)
this.$refs.comscansimulate.clickScanMsg();
},
openScanPopup() {
setTimeout(res => {
this.$refs.popup.open('bottom')
@ -67,11 +73,16 @@
},
scanClick() {
this.$refs.comscan.clickScanMsg();
if(this.$refs.comscan){
this.$refs.comscan.clickScanMsg();
}
},
cancelClick() {
this.$refs.comscan.clearScanValue();
if(this.$refs.comscan){
this.$refs.comscan.clearScanValue();
}
},
getScanResult(result) {

84
src/mycomponents/scan/winScanPackAndLocation.vue

@ -1,6 +1,6 @@
<template>
<view>
<uni-popup ref="popup" @change="change" :mask-click="false">
<uni-popup ref="popup" @change="change" :mask-click="false" >
<view class="popup_box">
<view class="pop_title uni-flex space-between">
<view class="" style="font-size: 35rpx;">
@ -28,7 +28,7 @@
<view v-if='allowModifyLocation'>
<uni-combox :candidates="fromLocationList" v-model="fromLocationCode" placeholder="请扫描来源库位"
@confirm="" style='height: 30rpx;border:1px solid #fff ;'></uni-combox>
@confirm="handleConfirm" style='height: 30rpx;border:1px solid #fff ;'></uni-combox>
</view>
<view v-else>
<text style="padding: 5px">
@ -46,6 +46,10 @@
</view>
</uni-popup>
<balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select>
<!-- 模拟扫描功能 -->
<win-com-scan v-show="false" ref="comscansimulate" @getResult="getScanResult" :headerType="headerType"
:isShowHistory="false" :clearResult="true"></win-com-scan>
</view>
<comMessage ref="comMessage"></comMessage>
</template>
@ -54,7 +58,7 @@
import winComScan from '@/mycomponents/scan/winComScan.vue'
import balanceSelect from '@/mycomponents/balance/balanceSelect.vue'
import {
getBalanceByManagementPrecision,
getBalanceByManagementPrecisionByPacking,
} from '@/common/balance.js';
import {
@ -70,7 +74,7 @@
} from '@/common/directory.js';
export default {
name: 'winScanPack',
emits: ["getResult", "close", "getCountScanResult"],
emits: ["getResult", "close", "getCountScanResult", "confirm"],
components: {
winComScan,
balanceSelect
@ -106,7 +110,7 @@
type: Boolean,
default: true
},
balanceFromInventoryStatuses:{//fromInventoryStatuses
balanceFromInventoryStatuses: { //fromInventoryStatuses
type: Boolean,
default: true
}
@ -128,15 +132,20 @@
inventoryStatus: [],
managementPrecision: '',
fromInventoryStatuses: "",
isCheck: false
isCheck: false,
}
},
created() {
},
methods: {
handleConfirm() {
this.$emit('confirm', this.fromLocationCode)
},
//
openScanPopupForType(fromLocationCode, businessType) {
this.businessType = businessType;
this.fromLocationCode = fromLocationCode;
if (fromLocationCode != '') {
@ -147,9 +156,11 @@
this.fromInventoryStatuses = getDirectoryItemArray(this.businessType.outInventoryStatuses)
this.inventoryStatus = getDirectoryItemArray(this.businessType.outInventoryStatuses); //
this.fromLocationAreaTypeList = getDirectoryItemArray(this.businessType.fromLocationAreaTypeList); //
setTimeout(res => {
this.$refs.popup.open('bottom')
}, 500)
if (!this.show) {
setTimeout(res => {
this.$refs.popup.open('bottom')
}, 500)
}
},
//
@ -172,6 +183,38 @@
this.inventoryStatus = getDirectoryItemArray(jobContent.outInventoryStatuses); //; //
this.fromLocationAreaTypeList = getDirectoryItemArray(jobContent.fromAreaTypes); //
},
//
openScanPopupForJobSimulate(fromLocationCode, fromLocationList, jobContent, item) {
this.fromLocationCode = fromLocationCode;
this.fromLocationList = fromLocationList;
if (fromLocationCode != '') {
// this.packGetFocus();
if (this.$refs.comscansimulate != undefined) {
this.$refs.comscansimulate.getfocus();
}
} else {
if (this.fromLocationList.length == 0) {
// this.locationGetFocus();
alert('没有来源库位:List')
} else {
this.fromLocationCode = this.fromLocationList[0];
}
}
this.fromInventoryStatuses = getDirectoryItemArray(jobContent.outInventoryStatuses)
this.inventoryStatus = getDirectoryItemArray(jobContent.outInventoryStatuses); //; //
this.fromLocationAreaTypeList = getDirectoryItemArray(jobContent.fromAreaTypes); //
let timer = setTimeout(res => {
if (timer) {
clearTimeout(timer)
}
this.$refs.comscansimulate.setItemCodeSimulate(item.copyContent)
this.$refs.comscansimulate.clickScanMsg();
}, 500)
},
closeScanPopup(content) {
this.$refs.popup.close();
@ -202,9 +245,12 @@
mask: true
});
getBasicLocationByCode(this.fromLocationCode).then(res => {
uni.hideLoading();
if (res.data.total > 0) {
let result = res.data.list[0];
if(result.code!=this.fromLocationCode){
this.showErrorMessage('未查询到库位[' + this.fromLocationCode + ']')
return;
}
var type = result.areaType;
var available = result.available;
if (available == "TRUE") {
@ -213,11 +259,13 @@
// this.packGetFocus();
this.checkPackage(scanResult);
} else {
uni.hideLoading();
var hint = getListLocationAreaTypeDesc(this.fromLocationAreaTypeList);
this.showErrorMessage("扫描库位[" + this.fromLocationCode + "]是[" +
getLocationAreaTypeName(result.areaType) + "],需要的库区是[" + hint + "]")
}
} else {
uni.hideLoading();
this.showErrorMessage("扫描库位[" + this.fromLocationCode + "]不可用", res => {
this.locationGetFocus();
})
@ -260,7 +308,8 @@
// mask: true
// })
// -- fromInventoryStatuses
getBalanceByManagementPrecision(result.label, this.fromLocationCode, this.balanceFromInventoryStatuses?this.fromInventoryStatuses:undefined,
getBalanceByManagementPrecisionByPacking(result.label,result.package, this.fromLocationCode, this
.balanceFromInventoryStatuses ? this.fromInventoryStatuses : undefined,
res => {
uni.hideLoading();
if (res.success) {
@ -274,6 +323,7 @@
// uni.hideLoading();
});
} else {
uni.hideLoading();
this.packCallBack(null);
}
}
@ -284,9 +334,9 @@
if (this.allowNullBalance) {
this.allowNoneBalance(datas);
} else if (this.noShowBalanceMessage) {
if(Array.isArray(datas)){
if (Array.isArray(datas)) {
this.countCallBack(datas[0]);
}else{
} else {
this.countCallBack(datas);
}
} else {
@ -350,7 +400,9 @@
//
countCallBack(datas) {
this.$refs.comscan.clear();
if (this.$refs.comscan) {
this.$refs.comscan.clear();
}
//
let data = {
label: this.scanResult.label,
@ -364,7 +416,9 @@
},
packCallBack(item) {
this.$refs.comscan.clear();
if (this.$refs.comscan) {
this.$refs.comscan.clear();
}
//
let data = {
label: this.scanResult.label,

4
src/mycomponents/scan/winScanPackAndLocationNoBalance.vue

@ -198,6 +198,10 @@
getBasicLocationByCode(this.fromLocationCode).then(res => {
if (res.data.total > 0) {
let result = res.data.list[0];
if(result.code!=this.fromLocationCode){
this.showErrorMessage('未查询到库位[' + this.fromLocationCode + ']')
return;
}
var type = result.type;
var available = result.available;
if (available == "TRUE") {

1
src/mycomponents/scan/winScanPackJob.vue

@ -29,7 +29,6 @@
} from '@/common/balance.js';
import {
getBasicLocationByCode,
getPutawayJobList
} from '@/api/request2.js';

2
src/pages.json

@ -896,7 +896,7 @@
{
"path": "pages/productPutaway/job/fgProductPutawayJob",
"style": {
"navigationBarTitleText": "装配上架任务",
"navigationBarTitleText": "成品入库任务",
"enablePullDownRefresh": true,
"titleNView": {
// "autoBackButton": "true",

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

@ -143,6 +143,11 @@
value: this.status
})
// filters.push({
// column: "accept_user_id",
// action: "==",
// value: this.$store.state.user.id
// })
var params = {
filters: filters,
pageNo: this.pageNo,
@ -179,7 +184,7 @@
openJobDetail(item) {
uni.navigateTo({
url: './countDetail?id=' + item.masterId + '&status=' + item.status
url: './countDetail?id=' + item.id + '&status=' + item.status
});
},
@ -198,7 +203,7 @@
this.$refs.comMessage.showQuestionMessage("确定要放弃当前任务?",
res => {
if (res) {
this.cancleJob(dataContent.masterId);
this.cancleJob(dataContent.id);
}
});
}

4
src/pages/count/record/countRecord.vue

@ -151,8 +151,8 @@
calcHandleQty() {
for (let item of this.detailSource) {
item.handleQty = new Decimal(0).toNumber();
item.qty = new Decimal(0).toNumber();
item.handleQty = 0;
item.qty = 0;
for (let detail of item.subList) {
if(detail!=undefined){
if(detail.scaned){

1
src/pages/customerReturn/job/returnDetail.vue

@ -43,7 +43,6 @@
import {
getCustomerReturnJobDetail,
getBasicLocationByCode,
takeCustomerReturnJob,
cancleTakeCustomerReturnJob,
customerReturnJobSubmit

5
src/pages/customerReturn/job/returnJob.vue

@ -140,6 +140,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

1
src/pages/deliver/coms/comDeliverRequestPopup.vue

@ -70,7 +70,6 @@
<script>
import {
getBasicLocationByCode,
getBasicItemByCode,
getProductionlineItem,
getWorkShopLineStation,

22
src/pages/deliver/coms/comScanDeliverPack.vue

@ -375,11 +375,25 @@
createBatchInfo(data, balance, packageInfo) {
let batch = {
batch: data.lot,
batch: data.lot||data.batch,
qty: 0,
uom: data.uom,
handleQty: Number(data.qty),
Records: []
Records: [],
detail:{
fromLocationCode:this.fromLocationCode, //balance.locationCode
toLocationCode:this.toLocationCode,
itemCode:data.itemCode,
handleQty: Number(data.qty),
packingNumber:data.packingNumber,
qty: 0,
uom:data.uom,
itemName:packageInfo.itemName,
itemDesc1:packageInfo.itemDesc1,
itemDesc2:packageInfo.itemDesc2,
singlePrice:balance.singlePrice,
amount:balance.amount
}
}
let record = this.creatRecord(data, balance, packageInfo);
batch.Records.push(record);
@ -401,7 +415,9 @@
toLocationCode: this.toLocationCode,
supplierCode: label.supplierCode,
packUnit: packageInfo.packUnit,
packQty: packageInfo.packQty
packQty: packageInfo.packQty,
singlePrice:balance.singlePrice,
amount:balance.amount
}
return record;
},

1
src/pages/deliver/job/deliverDetail.vue

@ -55,7 +55,6 @@
<script>
import {
getDeliverDetail,
getBasicLocationByCode,
takeDeliverJob,
cancleTakeDeliverJob,
deliverJobSubmit

5
src/pages/deliver/job/deliverJob.vue

@ -138,6 +138,11 @@
})
}
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
filters.push({
column: "status",
action: "in",

2
src/pages/index/index.vue

@ -387,7 +387,7 @@
console.log("包装规格获取失败", res)
})
var switchCode="FgPutawayLocationCodeValidate,SemiPutawayLocationCodeValidate,PurchasePutawayToLocationCodeValidate,IssueToLocationCodeValidate,fgProductReceipCommitValidate";
var switchCode="FgPutawayLocationCodeValidate,SemiPutawayLocationCodeValidate,PurchasePutawayToLocationCodeValidate,IssueToLocationCodeValidate,fgProductReceipCommitValidate,purchasereceiptPrintPDA";
getSwitchByCode(switchCode).then(res=>{
uni.setStorageSync("switch", res.data)

6
src/pages/inspect/job/inspectJob.vue

@ -136,7 +136,11 @@
action: "in",
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

5
src/pages/inventoryMove/coms/comMoveJob.vue

@ -161,6 +161,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
filters.push({
column: "business_type",
action: "==",

4
src/pages/inventoryMove/coms/comMoveRecord.vue

@ -189,6 +189,10 @@
getBasicLocationByCode(this.toLocationCode).then(res => {
if (res.data.total > 0) {
let result = res.data.list[0];
if(result.code!=this.toLocationCode){
this.showErrorMessage('未查询到库位[' + this.toLocationCode + ']')
return;
}
var type = result.type;
var available = result.available;
if (available == "TRUE") {

11
src/pages/inventoryMove/job/inventoryMoveDetail.vue

@ -43,7 +43,6 @@
<script>
import {
getInventoryMoveJobDetail,
getBasicLocationByCode,
takeInventoryMoveJob,
cancleTakeInventoryMoveJob,
inventoryMoveSubmit
@ -464,16 +463,6 @@
return this.jobContent;
},
getLocationInfo(locationCode) {
getBasicLocationByCode(locationCode).then(res => {
if (res.data.list.length > 0) {
this.toLocationInfo = res.data.list[0]
}
})
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {

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

@ -85,7 +85,6 @@
<script>
import {
getBasicLocationByCode,
getBasicItemByCode,
getProductionlineItem,
getWorkShopLineStation,

35
src/pages/issue/coms/comScanIssuePack.vue

@ -95,6 +95,10 @@
<balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select>
<comMessage ref="comMessage"></comMessage>
<balance-qty-edit ref="balanceQtyEdit" @confirm="confirm" :isShowStatus="true"></balance-qty-edit>
<!-- 模拟扫描功能 -->
<win-com-scan v-show="false" ref="comscansimulate" placeholder="箱标签" @getResult="onScan" :clearResult="true"
headerType="HPQ,HMQ" :isShowHistory="false">
</win-com-scan>
</view>
</template>
@ -123,7 +127,7 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
export default {
name: 'winScanPack',
emits: ["afterScan"],
emits: ["afterScan","closeScan"],
components: {
winComScan,
balance,
@ -169,6 +173,25 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
this.scanOptions = getDetailEditRemoveOption();
},
methods: {
openScanPopupForJobSimulate(content, jobcontent,scanMessage) {
this.issueRecord = [];
this.dataContent = content;
this.jobContent = jobcontent;
this.initData();
// this.positionInfo = this.jobContent.workShopCode + "-" + this.jobContent.subList[0].productionLineCode +
// "-" + this.jobContent.subList[0].workStationCode
if (this.$refs.comscansimulate != undefined) {
this.$refs.comscansimulate.getfocus();
}
let timer = setTimeout(res => {
if(timer){
clearTimeout(timer)
}
this.$refs.comscansimulate.setItemCodeSimulate(scanMessage)
this.$refs.comscansimulate.clickScanMsg();
}, 500)
},
openScanPopup(content, jobcontent) {
this.issueRecord = [];
this.dataContent = content;
@ -505,10 +528,16 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
},
packGetFocus() {
this.$refs.comscan.getfocus();
if(this.$refs.comscan){
this.$refs.comscan.getfocus();
}
},
packLoseFocus() {
this.$refs.comscan.losefocus();
if(this.$refs.comscan){
this.$refs.comscan.losefocus();
}
},
showMessage(message, callback) {
setTimeout(r => {

64
src/pages/issue/job/issueDetail.vue

@ -56,6 +56,7 @@
getCurrDateTime,
getDirectoryItemArray,
getPackingNumberAndBatch,
deepCopyData
} from '@/common/basic.js';
import {
@ -95,7 +96,8 @@
detailSource: [], //
detailOptions: [],
scanOptions: [],
jobStatus: ""
jobStatus: "",
scanMessage: ''
};
},
@ -105,6 +107,7 @@
onLoad(option) {
this.id = option.id;
this.scanMessage = option.scanMessage || '';
if (this.id != undefined) {
//
if (option.status == "1") {
@ -195,11 +198,28 @@
that.subList = res.data.subList;
that.detailSource = getDataSource(that.detailSource, that.subList)
//
if(this.scanMessage){
this.openScanPopupSimulate(this.scanMessage);
}
setTimeout(r => {
that.resizeCollapse();
}, 100)
// that.detailSource.forEach(r => {
// r.subList.forEach(s => {
// if (this.scanedPackingNumber && this.scanedPackingNumber == s
// .packingNumber) {
// s.scaned = true
// s.cancleScanedHiht = true
// //
// this.openScanPopupSimulate(s);
// this.scanedPackingNumber = ''
// }
// })
// })
uni.hideLoading();
} else {
that.showMessage('列表数据为0');
}
@ -258,21 +278,17 @@
})
})
//使
if (this.jobContent.useOnTheWayLocation == 'TRUE') {
this.submitJob();
} else {
//
getManagementPrecisions(itemCodes, locationCode, res => {
if (res.success) {
this.managementList = res.list;
this.submitJob();
} else {
uni.hideLoading();
this.showErrorMessage(res.message);
}
});
}
//
getManagementPrecisions(itemCodes, locationCode, res => {
if (res.success) {
this.managementList = res.list;
this.submitJob();
} else {
uni.hideLoading();
this.showErrorMessage(res.message);
}
});
},
submitJob() {
@ -336,8 +352,7 @@
record.amount = single_price * r.qty;
//使
if (this.jobContent
.useOnTheWayLocation == 'TRUE') {
if (item.onTheWayLocationCode) {
record.toPackingNumber = r
.packingNumber;
record.toBatch = r.batch;
@ -354,7 +369,7 @@
}
subItem.recordList.push(record);
})
subList.push(subItem);
subList.push(deepCopyData(subItem));
}
}
})
@ -426,6 +441,7 @@
},
afterScan() {
this.resizeCollapse();
this.detailSource.forEach(detail => {
let s = '';
detail.Items.forEach(item => {
@ -493,9 +509,6 @@
this.scanPopupGetFocus();
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
closeScanMessage() {
this.scanPopupGetFocus();
@ -513,6 +526,11 @@
// Object.assign(datacontent, this.detailSource);
this.$refs.comScanIssuePack.openScanPopup(this.detailSource, this.jobContent);
},
openScanPopupSimulate(scanMessage){
this.$refs.comScanIssuePack.openScanPopupForJobSimulate(this.detailSource, this.jobContent,scanMessage);
},
closeScanPopup() {
this.updateCommitBtn();
},

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

@ -1,7 +1,7 @@
<template>
<view class="">
<com-empty-view v-if="jobList.length==0"></com-empty-view>
<job-filter :isShowFromLocationCode="true" :isShowProductionLineCode="true" ref="filter" otherTitle=""
<job-filter :isShowFromLocationCode="true" :isShowProductionLineCode="true" :productionline="productionline" ref="filter" otherTitle=""
@switchChangeToday="switchChangeToday" @switchChangeWait="switchChangeWait" @onScanNumber="getScanNumber"
:checkedToday="checkedToday" :checkedWaitTask="checkedWaitTask" @productionLineCode="productionLineCode"
@fromLocationCode="fromLocationCode">
@ -21,6 +21,9 @@
<uni-load-more :status="loadingType" v-if="jobList.length>0" />
</view>
<win-scan-button @goScan='openScanPopup' v-if="jobList.length>0"></win-scan-button>
<winScanPackJob ref="scanPopup" @getResult='getScanResult' ></winScanPackJob>
<jobList ref="jobList" @selectItem="selectItem"></jobList>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
@ -29,6 +32,7 @@
import {
cancleTakeIssueJob,
getIssueJobList,
getIssueJobByProductionline
} from '@/api/request2.js';
import {
goHome,
@ -45,6 +49,9 @@
import comIssueJobCard from '@/pages/issue/coms/comIssueJobCard.vue'
import jobListPopup from '@/pages/issue/coms/jobListPopup.vue'
import jobInfoPopup from '@/pages/issue/coms/jobInfoPopup.vue'
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPackJob from "@/mycomponents/scan/winScanPackJob.vue"
import jobList from '@/mycomponents/jobList/jobList.vue'
export default {
name: 'issue',
@ -53,7 +60,10 @@
jobFilter,
comIssueJobCard,
jobListPopup,
jobInfoPopup
jobInfoPopup,
winScanPackJob,
winScanButton,
jobList
},
data() {
return {
@ -68,9 +78,12 @@
status: '1,2', //
detailOptions: [],
detailGiveupOptions: [],
productionline:[]
};
},
onLoad(){
this.getIssueJobByProductionline()
},
onShow() {
this.getList('refresh');
},
@ -111,6 +124,19 @@
},
methods: {
getIssueJobByProductionline(){
getIssueJobByProductionline().then(res=>{
console.log('生产线',res)
if(res.code==0){
this.productionline = res.data.map(item=>({
value: item,
text: item
}))
}else{
this.productionline = []
}
})
},
getList(type, fromLocationCode = '', productionLineCode = '') {
let that = this;
uni.showLoading({
@ -138,6 +164,12 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
if (fromLocationCode != '') {
//
filters.push({
@ -223,9 +255,10 @@
},
openJobDetail(item) {
openJobDetail(item, scanMessage = '') {
uni.navigateTo({
url: './issueDetail?id=' + item.masterId + '&status=' + item.status
url: './issueDetail?id=' + item.masterId + '&status=' + item.status+'&scanMessage=' +
scanMessage
});
},
@ -237,6 +270,11 @@
this.openJobDetail(item);
},
selectItem(item) {
this.$refs.scanPopup.closeScanPopup();
this.openJobDetail(item,this.scanMessage);
},
swipeClick(e, dataContent) {
if (e.content.text == "详情") {
this.openjobInfoPopup(dataContent);
@ -306,8 +344,6 @@
filters: filters,
pageNo: 1,
pageSize: 100,
sort: 'fromLocationCode',
by: 'asc'
}
getIssueJobList(params).then(res => {
uni.hideLoading();
@ -329,6 +365,64 @@
}
});
},
openScanPopup() {
this.$refs.scanPopup.openScanPopup();
},
getScanResult(result) {
try {
var filters = [
{
column: "status",
action: "in",
value: '1,2'
},
{
column: "batch",
action: "==",
value: result.label.batch
},
{
column: "itemCode",
action: "==",
value: result.label.itemCode
}
]
getIssueJobList({
filters: filters,
pageNo: 1,
pageSize: 100,
sort: 'createTime',
by: 'asc'
}).then(res => {
this.scanMessage =result.scanMessage
let resultList = res.data.list;
if (resultList.length > 0) {
resultList.forEach(item => {
item.title = item.number;
item.selected = false
})
let list = []
resultList.forEach(item=>{
if(!list.find(subItem=>subItem.title==item.title)){
list.push(item)
}
})
if (list.length > 1) {
this.$refs.jobList.openList(list)
} else {
this.selectItem(list[0])
}
} else {
this.showMessage("物料号["+result.label.itemCode+"]批次["+result.label.batch+']未查找到任务')
}
}).catch(error => {
this.showMessage(error)
})
} catch (e) {
this.showMessage(e.message)
}
},
}
}
</script>

1
src/pages/issue/js/issue.js

@ -53,6 +53,7 @@ export function createItemInfo(detail) {
let item = {
itemCode: detail.itemCode,
itemName: detail.itemName,
onTheWayLocationCode:detail.onTheWayLocationCode,
productionLineCode: detail.productionLineCode,
workStationCode: detail.workStationCode,
packQty: detail.packQty,

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

@ -83,6 +83,12 @@
methods: {
goScan() {
this.$refs.scanPopup.openScanPopup();
setTimeout(res => {
if (this.$refs.scanPopup != undefined) {
this.$refs.scanPopup.getfocus();
}
}, 400)
},
getScanResult(data){
this.detailSource = {

5
src/pages/package/job/overPackageJob.vue

@ -134,6 +134,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

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

@ -273,21 +273,23 @@
})
})
this.checkSubmit();
//使
if (this.jobContent.useOnTheWayLocation == 'TRUE') {
this.checkSubmit();
} else {
//
getManagementPrecisions(itemCodes, locationCode, res => {
if (res.success) {
this.managementList = res.list;
this.checkSubmit();
} else {
uni.hideLoading();
this.showErrorMessage(res.message);
}
});
}
// if (this.jobContent.useOnTheWayLocation == 'TRUE') {
// this.checkSubmit();
// } else {
// //
// getManagementPrecisions(itemCodes, locationCode, res => {
// if (res.success) {
// this.managementList = res.list;
// this.checkSubmit();
// } else {
// uni.hideLoading();
// this.showErrorMessage(res.message);
// }
// });
// }
},
checkSubmit() {
var tempHandleQty = this.detailSource[0].Items[0].Locations[0].Batchs[0].handleQty
@ -531,7 +533,7 @@
showCommitSuccessMessage(hint, pointData) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
if (pointData.length > 0) {
uni.navigateTo({
uni.redirectTo({
url: `/pages/point/index?points=${JSON.stringify(pointData)}`
});
} else {

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

@ -60,8 +60,8 @@
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult' :allowModifyLocation="false">
</win-scan-pack-and-location>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult' :allowModifyLocation="true" @confirm="handleConfirm">
</win-scan-pack-and-location >
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation'
:locationAreaTypeList="fromLocationAreaTypeList"></win-scan-location>
<comMessage ref="comMessage"></comMessage>
@ -139,7 +139,7 @@
itemCode: ""
};
},
onLoad(option) {
onShow(){
var typeCode = "OverPackage"
getBusinessType(typeCode, res => {
if (res.success) {
@ -209,7 +209,10 @@
this.toPackQty = pack.packQty;
this.toPackUnitShow = e[0].label
},
//
handleConfirm(fromLocationCode){
this.$refs.scanLocationCode.openScanPopupSimulate(fromLocationCode)
},
getScanResult(result) {
let balance = result.balance;
let label = result.label;
@ -289,7 +292,13 @@
},
showFromLocationPopup() {
this.$nextTick(() => {
this.$refs.scanLocationCode.openScanPopup();
let overPackageRecord = uni.getStorageSync('overPackageRecord')
if(overPackageRecord){
this.$refs.scanLocationCode.openScanPopupSimulate(overPackageRecord)
}else{
this.$refs.scanLocationCode.openScanPopup();
}
})
},
@ -429,6 +438,9 @@
this.scanPopupGetFocus();
},
getLocation(location, code) {
if(code){
uni.setStorageSync('overPackageRecord', code)
}
this.getFromLocationCode(location, code)
},
getFromLocationCode(location, code) {
@ -443,7 +455,7 @@
this.fromLocationCode = '';
this.dataContent = {}
if (pointData.length > 0) {
uni.navigateTo({
uni.redirectTo({
url: `/pages/point/index?points=${JSON.stringify(pointData)}`
});
}

40
src/pages/point/index.vue

@ -185,35 +185,19 @@
async onShow() {
//
// this.data = [{
// itemNumber: '555555',
// itemName: 'hahah',
// referenceOrderRow: '55',
// referenceOrderCode: '55',
// supplierCode: '555',
// packageCode: '9999-8888',
// amount: '55',
// itemCode:'065.051-01M', //
// itemName: 'PCCLARNATEA1225BLACK9999', //
// packName: '',//
// packageCode: 'PS0513-000003', //
// batch:'20240514',//
// parentNumber:'PS0513-000003',//
// itemType:'',//
// asnNumber:'123232',//ASN
// supplierCode: 'Fewewq', //
// qty: '100', //
// printTimes:'2019-09-09 09:09:00', //
// barcodeString: 'HMQ;V1.0;Dwork1-line1;F;R2024-04-03T08:28:41;B20240403;PPN0403-000005;I399.960-12;Q5.000000;UEA;',
// barcodeBase64: ''
// }, {
// itemNumber: '66',
// itemName: 'hahah',
// referenceOrderRow: '66',
// referenceOrderCode: '666',
// supplierCode: '66',
// packageCode: '66666',
// amount: '666666',
// barcodeString: 'HMQ;V1.0;Dwork1-line1;F;R2024-04-03T08:28:41;B20240403;PPN0403-000005;I399.960-12;Q5.000000;UEA;',
// barcodeBase64: ''
// }, {
// itemNumber: '66',
// itemName: 'hahah',
// referenceOrderRow: '66',
// referenceOrderCode: '666',
// supplierCode: '66',
// packageCode: '66666',
// amount: '666666',
// barcodeString: 'HMQ;V1.0;Dwork1-line1;F;R2024-04-03T08:28:41;',
// barcodeBase64: ''
// }]
this.$nextTick(async () => {
//
@ -280,7 +264,7 @@
width: 0px;
display: flex;
align-items: center;
word-wrap: break-word;
word-break: break-all;
}
.right {

167
src/pages/pointPutawayJob/index.vue

@ -2,22 +2,28 @@
<view class="content" style="padding:30rpx 20rpx 100rpx;min-height: calc(100vh - 120rpx);">
<com-empty-view v-if="data.length==0"></com-empty-view>
<!-- 只用于展示页面 -->
<view class="box" style="margin-bottom: 20rpx;">
<view class="box" style="margin-bottom: 20rpx;" v-for='(item,index) in data.sublist' :key='index'>
<view class="top">
<view class="mb-kw">
目标库位<text>{{data.toLocationCode}}</text>
目标库位<view>{{item.toLocationCode}}</view>
</view>
<view class="mb-text">
任务编号<text>{{data.number}}</text>
<view class="mb-bo">
<view class="mb-left">
<view class="mb-text">
物料号<view>{{item.itemCode}}</view>
</view>
<view class="mb-text">
托包装号<view>{{item.packingNumber}}</view>
</view>
</view>
<view class="mb-text">
创建人<text>{{data.creator||''}}</text>
<view class="mb-right">
<view class="mb-text">
数量<view>{{item.qty}}</view>
</view>
</view>
<view class="mb-text">
创建时间<text>{{data.createTime}}</text>
</view>
</view>
<u-table style="margin-top: 20rpx;">
<!-- <u-table style="margin-top: 20rpx;">
<u-tr>
<u-th>物品代码</u-th>
<u-th>物品描述</u-th>
@ -27,16 +33,16 @@
<u-th>数量</u-th>
<u-th>计量单位</u-th>
</u-tr>
<u-tr v-for="(cur,key) in data.sublist" :key='key'>
<u-tr v-for="(cur,key) in item.sublist" :key='key'>
<u-td>{{cur.itemCode}}</u-td>
<u-td>{{cur.itemDesc1}}</u-td>
<u-td>{{cur.batch}}</u-td>
<u-td>{{cur.packingNumber}}</u-td>
<u-td>{{cur.packUnit}}</u-td>
<u-td>{{cur.packQty}}</u-td>
<u-td>{{cur.qty}}</u-td>
<u-td>{{cur.uom}}</u-td>
</u-tr>
</u-table>
</u-table> -->
</view>
<view class="" style="position: fixed;width: 100%;bottom: 0rpx;left: 0px;">
<button @click="printImage"
@ -50,6 +56,9 @@
import {
getJimuPutawayJobDetail
} from '@/api/request2.js';
import {
dateFormat
} from '@/common/basic.js';
//
const htmlFileUrl = '/hybrid/html/pointPutawayJob.html';
import {
@ -93,8 +102,11 @@
}, function(e) {
console.log("获取图片资源失败:" + e.message);
});
}
},
// #endif
formatDate(val) {
return dateFormat(val)
}
},
watch: {
isLoadFinish: {
@ -115,7 +127,9 @@
}
},
async onShow() {
await getJimuPutawayJobDetail(this.data.ids).then(res=>{
await getJimuPutawayJobDetail({
masterIds:this.data.ids
}).then(res=>{
this.data.sublist = res.data
})
//
@ -124,23 +138,13 @@
// jobNumber: '555555',
// creator: '',
// createTime: '2019-12-12 05:00:00',
// sublist: [{
// itemNumber: '66',
// itemDes: 'hahah',
// batch: '201450513',
// packingNumber: '201450513',
// packUnit: '201450513',
// packQty: '40',
// uom: ''
// },{
// itemNumber: '77',
// itemDes: '8888',
// batch: '201450513',
// packingNumber: '201450513',
// packUnit: '201450513',
// packQty: '40',
// uom: ''
// }]
// itemNumber: '66',
// itemDes: 'hahah',
// batch: '201450513',
// packingNumber: '201450513',
// packUnit: '201450513',
// packQty: '40',
// uom: '',
// }, {
// toLocationCode: 'C13-12-11',
// jobNumber: '555555',
@ -174,53 +178,30 @@
let str = ''
this.readFile(htmlFileUrl, (htmlContent) => {
this.newHtmlContent = htmlContent
// this.data.forEach(item => {
str += `<div class="box" style="page-break-before:always;"><br />
this.data.sublist.forEach(item => {
str += `<div class="box" style="page-break-before:always;" ><br />
<div class="top">
<div class="mb-kw">
目标库位<span>${this.data.toLocationCode}</span>
目标库位<div>${item.toLocationCode}</div>
</div>
<div class="mb-text">
任务编号<span>${this.data.number}</span>
<div class="mb-bo">
<div class="mb-left">
<div class="mb-text">
物料号<div>${item.itemCode}</div>
</div>
<div class="mb-text">
托包装号<div>${item.packingNumber}</div>
</div>
</div>
<div class="mb-text">
创建人<span>${this.data.creator}</span>
<div class="mb-right">
<div class="mb-text">
数量<div>${item.qty}</div>
</div>
</div>
<div class="mb-text">
创建时间<span>${this.data.createTime}</span>
</div>
</div>
<table style="margin-top: 20rpx;" style='border-collapse: collapse;'>
<tr>
<th>物品代码</th>
<th>物品描述</th>
<th>批次</th>
<th>包装号</th>
<th>包装规格</th>
<th>数量</th>
<th>计量单位</th>
<tr>
tableTrTd
</table>
<div>
`
let str1 = ''
this.data.sublist.forEach((cur, key) => {
str1 += `
<tr>
<td>${cur.itemCode}</td>
<td>${cur.itemDesc1}</td>
<td>${cur.batch}</td>
<td>${cur.packingNumber}</td>
<td>${cur.packUnit}</td>
<td>${cur.packQty}</td>
<td>${cur.uom}</td>
</tr>
`
})
str = str.replace(
"tableTrTd", str1)
// })
})
this.newHtmlContent = this.newHtmlContent.replace(
"mainBody", str); //
});
@ -235,7 +216,7 @@
.box {
font-size: 26rpx;
/* display: flex; */
padding: 20rpx;
/* padding: 20rpx; */
border: 1px solid #dedede;
}
@ -293,16 +274,52 @@
.mb-kw {
border-bottom: 1px solid #dedede;
padding-bottom: 20rpx;
padding: 20rpx;
font-size: 30rpx;
}
.mb-kw text {
.mb-kw view {
font-weight: bold;
font-size: 46rpx;
text-align: center;
}
.mb-bo{
display:flex;
}
.mb-bo .mb-left{
flex:1
}
.mb-bo .mb-left .mb-text{
padding: 20rpx;
}
.mb-bo .mb-left .mb-text:nth-child(1){
border-bottom: 1px solid #dedede;
}
.mb-bo .mb-left .mb-text view{
font-weight: bold;
font-size: 32rpx;
text-align: center;
}
.mb-bo .mb-right{
padding: 20rpx;
width: 260rpx;
border-left: 1px solid #dedede;
display: flex;
align-items: center;
}
.mb-bo .mb-right .mb-text{
.mb-text {
width: 100%;
}
.mb-bo .mb-right .mb-text view{
font-weight: bold;
font-size: 40rpx;
text-align: center;
width: 100%;
}
/* .mb-text {
margin-top: 10rpx;
}
@ -315,5 +332,5 @@
font-size: 24rpx !important;
word-break: break-all;
}
} */
</style>

4
src/pages/productPutaway/job/fgProductPutawayJob.vue

@ -16,7 +16,9 @@
};
},
onReachBottom() {
this.$refs.productPutawayJob.onReach();
},
onShow() {
if(this.$refs.productPutawayJob!=undefined){
this.$refs.productPutawayJob.refresh();

60
src/pages/productPutaway/job/productPutawayDetail.vue

@ -49,7 +49,6 @@
} from '@/common/balance.js';
import {
getBasicLocationByCode,
getProductPutawayJobDetail,
takeProductPutawayJob,
cancleTakeProductPutawayJob,
@ -114,23 +113,31 @@
type: "",
isCheckLocation: false,
switchCode: "",
scanedPackingNumber: ''
scanedPackingNumber: '',
hintTitle:"",
status:''
};
},
onLoad(option) {
this.id = option.id;
this.type = option.type;
this.scanedPackingNumber = option.scaned || '';
this.status = option.status || ''
if (this.type == 'predict') {
this.switchCode = "SemiPutawayLocationCodeValidate"
updateTitle("预生产上架任务");
this.hintTitle="预生产上架"
updateTitle("预生产上架详情");
} else if (this.type == 'assemble') {
this.switchCode = "FgPutawayLocationCodeValidate"
updateTitle("装配上架任务");
this.hintTitle="成品入库"
updateTitle("成品入库详情");
}
},
onShow(){
if (this.id != undefined) {
//
if (option.status == "1") {
if (this.status == "1") {
this.receive((callback => {
this.getDetail();
}));
@ -199,21 +206,25 @@
that.jobToLocationCode = that.subList[0].toLocationCode
that.toLocationAreaTypeList = getLocationTypeArray(that.jobContent.toAreaTypes)
that.detailSource = getDataSource(that.subList)
that.isCheckLocation = getSwitchInfoByCode(that.switchCode)
if (that.isCheckLocation) {
that.toLocationCode = ""
} else {
that.toLocationCode = that.jobToLocationCode;
}
that.detailSource.forEach(r => {
r.subList.forEach(s => {
if (this.scanedPackingNumber && this.scanedPackingNumber == s
.packingNumber) {
s.scaned = true
s.handleQty =s.qty
s.cancleScanedHiht = true
// s.handleQty =s.qty
this.openScanPopupSimulate(s)
this.scanedPackingNumber = ''
}
})
})
that.isCheckLocation = getSwitchInfoByCode(that.switchCode)
if (that.isCheckLocation) {
that.toLocationCode = ""
} else {
that.toLocationCode = that.jobToLocationCode;
}
} else {
that.showMessage('列表数据为0');
}
@ -247,6 +258,25 @@
openDetail(item) {
this.$refs.detailInfoPopup.openPopup(item)
},
openScanPopupSimulate(item) {
let fromlocationCode = '';
let fromlocationList = [];
for (var i = 0; i < this.detailSource.length; i++) {
let item = this.detailSource[i];
item.subList.forEach(l => {
//
var location = fromlocationList.find(res => res == l.fromLocationCode)
if (location == undefined) {
fromlocationList.push(l.fromLocationCode);
}
//
if (fromlocationCode == '') {
fromlocationCode = l.fromLocationCode;
}
})
}
this.$refs.scanPopup.openScanPopupForJobSimulate(fromlocationCode, fromlocationList, this.jobContent,item);
},
openScanPopup() {
let fromlocationCode = '';
@ -275,6 +305,7 @@
},
getScanResult(result) {
try {
var packingNumber = result.balance.packingNumber;
var batch = result.balance.batch;
@ -296,7 +327,8 @@
this.showErrorMessage("箱码【" + packingNumber + "】,批次【" + batch + "】库位【" + result
.fromLocationCode + "】不在列表中")
} else {
if (itemDetail.scaned) {
if (!itemDetail.cancleScanedHiht&&itemDetail.scaned) {
this.showErrorMessage("箱码【" + packingNumber + "】,批次【" + batch + "】库位【" + result
.fromLocationCode + "】已经扫描")
} else {
@ -420,7 +452,7 @@
productPutawayJobSubmit(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成制品上架记录<br>" + res.data)
this.showCommitSuccessMessage("提交成功<br>生成"+this.hintTitle+"记录<br>" + res.data)
} else {
this.showErrorMessage("提交失败[" + res.msg + "]")
}

21
src/pages/productPutaway/job/productPutawayJob.vue

@ -126,6 +126,13 @@
},
methods: {
onReach() {
//
if (this.loadingType == 'loading' || this.loadingType == 'nomore') {
return;
}
this.getList("more");
},
toHome() {
goHome()
},
@ -162,6 +169,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
filters.push({
column: "type",
action: "==",
@ -185,7 +197,7 @@
if (this.type == 'predict') {
updateTitle("预生产上架任务(" + this.totalCount + ")");
} else if (this.type == 'assemble') {
updateTitle("装配上架任务(" + this.totalCount + ")");
updateTitle("成品入库任务(" + this.totalCount + ")");
}
if (list == null || list.length == 0) {
this.loadingType = "nomore";
@ -202,7 +214,7 @@
if (this.type == 'predict') {
updateTitle("预生产上架任务(" + this.totalCount + ")");
} else if (this.type == 'assemble') {
updateTitle("装配上架任务(" + this.totalCount + ")");
updateTitle("成品入库任务(" + this.totalCount + ")");
}
this.loadingType = "";
uni.hideLoading();
@ -348,6 +360,11 @@
action: "==",
value: this.type
},
{
column: "status",
action: "in",
value: '1,2',
}
// {
// column: "fromLocationCode",
// action: "==",

11
src/pages/productReceipt/job/fgProductReceiptDetail.vue

@ -231,7 +231,12 @@
that.detailSource.forEach(r => {
r.subList.forEach(s => {
if (this.scanedPackingNumber && this.scanedPackingNumber == s
.packingNumber) s.scaned = true
.packingNumber) {
s.scaned = true
//
this.$refs.scanPopup.simulateScan(s);
this.scanedPackingNumber = ''
}
})
})
@ -395,7 +400,7 @@
})
console.log('pointData', pointData)
uni.navigateTo({
uni.redirectTo({
url: `/pages/pointProductReceipt/index?points=${JSON.stringify(pointData)}`
});
@ -427,7 +432,7 @@
token: storage.getStorage(storage.constant.token),
asn_number: resLable.data
}
uni.navigateTo({
uni.redirectTo({
url: `/pages/pointProductReceipt/webview?url=${webUrl}&webData=${JSON.stringify(webData)}`
});
})

21
src/pages/productReceipt/job/productReceiptDetail.vue

@ -134,16 +134,20 @@
managementList: [],
jobStatus: "",
jobToLocationCode: "",
scanedPackingNumber: ''
scanedPackingNumber: '',
status:''
};
},
onLoad(option) {
this.id = option.id;
this.scanedPackingNumber = option.scaned || '';
this.status = option.status || ''
},
onShow(){
if (this.id != undefined) {
//
if (option.status == "1") {
if (this.status == "1") {
this.receive((callback => {
this.getDetail();
}));
@ -223,8 +227,14 @@
r.subList.forEach(s => {
if (this.scanedPackingNumber && this.scanedPackingNumber == s
.packingNumber){
s.scaned = true
s.handleQty =s.qty
s.cancleScanedHiht = true
s.copyContent = "HMQ;V1.0;I" + s.itemCode + ";P" + s.packingNumber + ";B" + s.batch + ";Q" + s.qty
this.$refs.scanPopup.simulateScan(s);
this.scanedPackingNumber = ''
// s.handleQty =s.qty
}
})
})
@ -239,6 +249,7 @@
},
getScanResult(result) {
let label = result.label;
var packingNumber = label.packingNumber;
var batch = label.batch;
@ -255,7 +266,7 @@
if (itemDetail == undefined) {
this.showErrorMessage("箱码[" + packingNumber + "]" + "批次[" + batch + "]不在任务列表中")
} else {
if (itemDetail.scaned) {
if (!itemDetail.cancleScanedHiht&&itemDetail.scaned) {
this.showErrorMessage("箱码[" + packingNumber + "]" + "批次[" + batch + "]已经扫描")
} else {
itemDetail.scaned = true;

11
src/pages/productReceipt/job/productReceiptJob.vue

@ -157,7 +157,11 @@
action: "in",
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
filters.push({
column: "type",
action: "==",
@ -372,6 +376,11 @@
column: "type",
action: "==",
value: this.type
},
{
column: "status",
action: "in",
value: '1,2',
}
// {
// column: "fromLocationCode",

6
src/pages/productRecycle/job/productRecycleJob.vue

@ -140,6 +140,12 @@
action: "in",
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

1
src/pages/productRecycle/job/productRecycleJobDetail.vue

@ -42,7 +42,6 @@
<script>
import {
getBasicLocationByCode,
getProductRecycleDetail,
productRecycleJobsubmit,
cancleTakeProductRecycleJob,

117
src/pages/productionReceipt/job/productionReceiptDetail.vue

@ -53,7 +53,6 @@
import {
getProductionReceiptJobDetail,
getBasicLocationByCode,
takeProductionReceiptJob,
cancleTakeProductionReceiptJob,
productionReceiptJobSubmit,
@ -109,11 +108,13 @@
toLocationAreaTypeList: [],
jobStatus: "",
jobToLocationCode: "",
isCheckLocation: false
isCheckLocation: false,
scanedPackingNumber: ''
};
},
onLoad(option) {
this.id = option.id;
this.scanedPackingNumber = option.scaned || '';
if (this.id != undefined) {
//
if (option.status == "1") {
@ -191,6 +192,20 @@
} else {
that.toLocationCode = that.jobToLocationCode;
}
that.detailSource.forEach(r => {
r.subList.forEach(s => {
if (this.scanedPackingNumber && this.scanedPackingNumber == s
.packingNumber) {
s.scaned = true
s.cancleScanedHiht = true
//
this.openScanPopupSimulate(s);
this.scanedPackingNumber = ''
}
})
})
} else {
that.showMessage('列表数据为0');
}
@ -251,6 +266,31 @@
this.$refs.scanPopup.closeScanPopup();
},
//
openScanPopupSimulate(item) {
let fromlocationCode = '';
let fromlocationList = [];
for (var i = 0; i < this.detailSource.length; i++) {
let item = this.detailSource[i];
item.subList.forEach(l => {
//
var location = fromlocationList.find(res => res == l.fromLocationCode)
if (location == undefined) {
fromlocationList.push(l.fromLocationCode);
}
//
if (fromlocationCode == '') {
if (!l.scaned) {
fromlocationCode = l.fromLocationCode;
}
}
})
}
this.$refs.scanPopup.openScanPopupForJobSimulate(fromlocationCode, fromlocationList, this.jobContent,
item);
},
getScanResult(result) {
try {
// var supplierCode = result.label.supplierCode;
@ -278,7 +318,7 @@
this.showErrorMessage("箱码[" + packingNumber + "]" + "批次[" + batch + "]库位[" + locationCode +
"]不在列表中")
} else {
if (itemDetail.scaned) {
if (!itemDetail.cancleScanedHiht&&itemDetail.scaned) {
this.showErrorMessage("箱码[" + packingNumber + "]" + "批次[" + batch + "]库位[" + locationCode +
"]已经扫描")
} else {
@ -387,33 +427,48 @@
title: "提交中....",
mask: true
});
var itemCodes = []
this.detailSource.forEach(item => {
itemCodes.push(item.itemCode)
var params = this.setParams()
console.log("提交参数", JSON.stringify(params));
productionReceiptJobSubmit(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成发料接收记录<br>" + res.data)
} else {
this.showErrorMessage("提交失败[" + res.msg + "]")
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
getManagementPrecisions(itemCodes, this.toLocationCode, res => {
if (res.success) {
this.managementList = res.list;
var params = this.setParams()
console.log("提交参数", JSON.stringify(params));
productionReceiptJobSubmit(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成发料接收记录<br>" + res.data)
} else {
this.showErrorMessage("提交失败[" + res.msg + "]")
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
} else {
uni.hideLoading();
this.showErrorMessage(res.message);
}
});
// var itemCodes = []
// this.detailSource.forEach(item => {
// itemCodes.push(item.itemCode)
// })
// getManagementPrecisions(itemCodes, this.toLocationCode, res => {
// if (res.success) {
// this.managementList = res.list;
// var params = this.setParams()
// console.log("", JSON.stringify(params));
// productionReceiptJobSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br><br>" + res.data)
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
// } else {
// uni.hideLoading();
// this.showErrorMessage(res.message);
// }
// });
},
setParams() {
@ -423,10 +478,10 @@
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
detail.packingNumber, detail.batch);
detail.toPackingNumber = info.packingNumber;
detail.toBatch = info.batch;
// var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
// detail.packingNumber, detail.batch);
detail.toPackingNumber = detail.packingNumber;
detail.toBatch = detail.batch;
detail.toContainerNumber = "";
detail.toLocationCode = this.toLocationCode;
subList.push(detail)

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

@ -22,6 +22,9 @@
<uni-load-more :status="loadingType" />
</view>
<win-scan-button @goScan='openScanPopup' v-if="jobList.length>0"></win-scan-button>
<winScanPackJob ref="scanPopup" @getResult='getScanResult' ></winScanPackJob>
<jobList ref="jobList" @selectItem="selectItem"></jobList>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
@ -48,6 +51,9 @@
import comProductionJobCard from '@/pages/productionReceipt/coms/comProductionJobCard.vue'
import jobListPopup from '@/pages/productionReceipt/coms/jobListPopup.vue'
import jobInfoPopup from '@/pages/productionReceipt/coms/jobInfoPopup.vue'
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPackJob from "@/mycomponents/scan/winScanPackJob.vue"
import jobList from '@/mycomponents/jobList/jobList.vue'
export default {
name: 'productionReceipt',
@ -56,7 +62,10 @@
jobFilter,
comProductionJobCard,
jobListPopup,
jobInfoPopup
jobInfoPopup,
winScanPackJob,
winScanButton,
jobList
},
data() {
return {
@ -142,6 +151,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,
@ -177,9 +191,10 @@
})
},
openJobDetail(item) {
openJobDetail(item, packingNumber = '') {
uni.navigateTo({
url: './productionReceiptDetail?id=' + item.masterId + '&status=' + item.status
url: './productionReceiptDetail?id=' + item.masterId + '&status=' + item.status+'&scaned=' +
packingNumber
});
},
@ -280,6 +295,64 @@
}
});
},
openScanPopup() {
this.$refs.scanPopup.openScanPopup();
},
selectItem(item) {
this.$refs.scanPopup.closeScanPopup();
this.openJobDetail(item,item.packingNumber);
},
getScanResult(result) {
try {
var filters = [{
column: "packingNumber",
action: "==",
value: result.label.packingNumber
},
{
column: "batch",
action: "==",
value: result.label.batch
},
{
column: "itemCode",
action: "==",
value: result.label.itemCode
}
]
getProductionReceiptJobList({
filters: filters,
pageNo: 1,
pageSize: 100,
}).then(res => {
let resultList = res.data.list;
if (resultList.length > 0) {
resultList.forEach(item => {
item.title = item.number;
item.selected = false
})
let list = []
resultList.forEach(item=>{
if(!list.find(subItem=>subItem.title==item.title)){
list.push(item)
}
})
if (list.length > 1) {
this.$refs.jobList.openList(list)
} else {
this.selectItem(list[0])
}
} else {
this.showMessage('未查找到任务')
}
}).catch(error => {
this.showMessage(error)
})
} catch (e) {
this.showMessage(e.message)
}
},
}
}
</script>

1
src/pages/productionReturn/coms/comReturnRequestPopup.vue

@ -74,7 +74,6 @@
<script>
import {
getBasicLocationByCode,
getBasicItemByCode,
getProductionlineItem,
getWorkShopLineStation

5
src/pages/productionReturn/job/returnJob.vue

@ -142,6 +142,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

182
src/pages/purchaseReceipt/job/receiptDetail.vue

@ -14,6 +14,13 @@
@change="switchChange"></u-switch>
</view>
</view>
<view class="" v-if="operation=='reject'">
<uni-section title="拒收原因" type="line">
<uni-easyinput v-model="reasonText" placeholder="请输入拒收原因"></uni-easyinput>
</uni-section>
</view>
<!-- <required-location ref="locationCompare" title="默认收货库位 :" :locationCode="jobToLocationCode"
:isShowEdit="false"></required-location>
<view class='split_line'></view> -->
@ -73,7 +80,8 @@
getCurrDateTime,
getPackingNumberAndBatch,
compareAsc,
navigateBack
navigateBack,
getSwitchInfoByCode
} from '@/common/basic.js';
import {
@ -102,6 +110,9 @@
import {
productDismantleJobClose
} from '@/api/request2.js';
import {
nextTick
} from 'vue';
export default {
name: 'receipt_detail',
@ -130,18 +141,28 @@
jobStatus: "",
isAllReceived: false,
operation: '',
scanedPackingNumber: ''
scanedPackingNumber: '',
status: '',
switchCode: '',
reasonText: ""
};
},
onLoad(option) {
this.id = option.id;
// this.scanedPackingNumber = option.scaned || '';
this.scanedPackingNumber = option.scaned || '';
this.operation = option.operation;
this.status = option.status;
this.switchCode = "purchasereceiptPrintPDA"
},
onShow() {
if (this.id != undefined) {
//
if (option.status == "1") {
if (this.status == "1") {
this.receive((callback => {
this.getDetail();
}));
@ -219,13 +240,25 @@
that.jobStatus = res.data.status
that.jobToLocationCode = that.subList[0].toLocationCode
that.detailSource = getTreeDataSource(that.subList)
that.detailSource.forEach(r => {
r.subList.forEach(s => {
if (this.scanedPackingNumber && this.scanedPackingNumber == s
.packingNumber) s.scaned = true
that.isAllReceived = false;
nextTick(() => {
that.detailSource.forEach(r => {
r.subList.forEach(s => {
if (this.scanedPackingNumber && this
.scanedPackingNumber == s
.packingNumber) {
s.scaned = true
s.cancleScanedHiht = true
s.copyContent = "HPQ;V1.0;I" + s.itemCode +
";P" + s.packingNumber + ";B" + s.batch +
";Q" + s.qty
this.$refs.scanPopup.simulateScan(s);
this.scanedPackingNumber = ''
}
})
})
})
that.isAllReceived = false;
} else {
that.showMessage('列表数据为0');
}
@ -238,6 +271,7 @@
getScanResult(result) {
try {
var itemCode = result.label.itemCode;
var detail = this.detailSource.find(r => r.itemCode == itemCode);
@ -251,7 +285,7 @@
if (itemDetail.length == 0) {
this.showErrorMessage("物料【" + itemCode + "】、托码【" + containerNumber + "】不在列表中")
} else {
if (itemDetail[0].scaned) {
if (!itemDetail[0].cancleScanedHiht && itemDetail[0].scaned) {
this.showErrorMessage("物料【" + itemCode + "】、托码【" + containerNumber + "】已经扫描")
} else {
itemDetail.forEach(item => {
@ -298,7 +332,7 @@
if (isExit == undefined) {
this.showMessage("箱码【" + packingNumber + "】、批次【" + batch + "】不在列表中")
} else {
if (isExit.scaned) {
if (!isExit.cancleScanedHiht && isExit.scaned) {
this.showMessage("箱码【" + packingNumber + "】已经扫描")
} else {
isExit.scaned = true
@ -316,7 +350,8 @@
scanedLength++;
}
})
if (itemDetail.scaned && scanedLength == itemDetail.packList.length) {
if (!itemDetail.cancleScanedHiht && itemDetail.scaned && scanedLength == itemDetail
.packList.length) {
this.showMessage("箱码【" + packingNumber + "】已经扫描")
} else {
itemDetail.scaned = true;
@ -416,14 +451,22 @@
},
reject() {
if(!this.reasonText){
this.showMessage("请输入拒收原因")
return;
}
this.$refs.comMessage.showQuestionMessage('是否要拒收任务<br>[' + this.jobContent.asnNumber + ']?', res => {
if (res) {
uni.showLoading({
title: "提交中....",
mask: true
});
productDismantleJobClose(this.id).then(res => {
console.log('拒收',res)
var params = {
id: this.id,
refuseReason: this.reasonText
}
productDismantleJobClose(params).then(res => {
console.log('拒收', res)
if (res.data) {
navigateBack(1)
} else {
@ -453,51 +496,75 @@
this.managementList = res.list;
var params = this.setParams()
purchaseReceiptJobSubmit(params).then(res => {
if (res.data) {
// this.showCommitSuccessMessage("<br><br><br><br>" + res.data)
uni.showLoading({
title: "提交成功,将跳转到打印页面",
mask: true
});
//
let timerCount = 0
const timer1 = setInterval(async ()=>{
if(timerCount == 10){
clearInterval(timer1)
uni.showLoading({
title: "跳转打印页面失败",
mask: true
});
return;
}
await getPutawayJobList({
filters: [{
column: "purchaseReceiptRecordNumber",
action: "in",
value: res.data
}],
pageNo: 1,
pageSize: 1000,
}).then(res=>{
timerCount = timerCount + 1
console.log(11111)
if(res.data && res.data.list&&res.data.list.length){
uni.hideLoading()
let isCheckPrint = getSwitchInfoByCode(this.switchCode)
if (!isCheckPrint) {
uni.hideLoading()
this.showCommitSuccessMessage("提交成功<br>生成采购收货记录<br>" + res.data.number)
} else {
uni.showLoading({
title: "提交成功,将跳转到打印页面",
mask: true
});
//
let timerCount = 0
const timer1 = setInterval(async () => {
if (timerCount == 15) {
clearInterval(timer1)
const dataParams = {
toLocationCode: res.data.list[0].toLocationCode,
number: res.data.list[0].number,
creator: res.data.list[0].creator,
createTime: res.data.list[0].createTime,
ids : res.data.list.map(item=>item.masterId).join(',')
}
console.log(dataParams)
uni.navigateTo({
url:'/pages/pointPutawayJob/index?data='+encodeURIComponent(JSON.stringify(dataParams))
})
uni.showToast({
title: "跳转打印页面失败",
icon: "none"
});
return;
}
})
},1000)
await getPutawayJobList({
filters: [{
column: "purchaseReceiptRecordNumber",
action: "in",
value: res.data.number
}],
pageNo: 1,
pageSize: 1000,
}).then(res1 => {
timerCount = timerCount + 1
if (res1.data && res1.data.list && res1
.data
.list.length && (res1.data.total >= res
.data.detailCount)) {
uni.hideLoading()
clearInterval(timer1)
const dataParams = {
toLocationCode: res1.data.list[
0]
.toLocationCode,
number: res1.data.list[0]
.number,
creator: res1.data.list[0]
.creator,
createTime: res1.data.list[0]
.createTime,
ids: res1.data.list.map(item =>
item.masterId).join(
',')
}
console.log(dataParams)
uni.redirectTo({
url: '/pages/pointPutawayJob/index?data=' +
encodeURIComponent(JSON
.stringify(
dataParams))
})
}
})
}, 2000)
}
} else {
this.showErrorMessage("提交失败[" + res.msg + "]")
@ -652,8 +719,9 @@
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
// navigateBack(1)
navigateBack(1)
})
},
}

33
src/pages/purchaseReceipt/job/receiptJob.vue

@ -20,7 +20,7 @@
<receipt-job-list-popup ref="jobListPopup" @selectedItem="selectedItem"></receipt-job-list-popup>
</view>
<win-scan-button @goScan='openScanPopup' v-if="jobList.length>0"></win-scan-button>
<winScanPackJob :title="scanTitle" ref="scanPopup" @getResult='getScanResult' >
<winScanPackJob title="箱标签/ASN单号" ref="scanPopup" @getResult='getScanResult' >
</winScanPackJob>
<jobList ref="jobList" @selectItem="selectItem"></jobList>
<comMessage ref="comMessage"></comMessage>
@ -181,6 +181,11 @@
action: "in",
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
@ -344,12 +349,21 @@
openScanPopup() {
this.$refs.scanPopup.openScanPopup();
},
selectItem(item) {
selectItem(item,isScanedASN=false) {
this.$refs.scanPopup.closeScanPopup();
this.openJobDetail(item, item.packingNumber);
if(isScanedASN){
this.openJobDetail(item)
}else{
;
this.openJobDetail(item, item.packingNumber);
}
},
getScanResult(result) {
try {
let filters = []
if (result.label.barType == "BarCode") {
@ -358,6 +372,10 @@
column: "asn_number",
action: "==",
value: result.label.code
},{
column: "status",
action: "in",
value: '1,2',
}]
} else {
filters = [{
@ -380,6 +398,11 @@
action: "==",
value: result.label.itemCode
},
{
column: "status",
action: "in",
value: '1,2',
}
// {
// column: "fromLocationCode",
// action: "==",
@ -409,9 +432,9 @@
console.log('list', list)
if (list.length > 1) {
this.$refs.jobList.openList(list)
this.$refs.jobList.openList(list,result.scanMessage.indexOf('ASN')>-1)
} else {
this.selectItem(list[0])
this.selectItem(list[0],result.scanMessage.indexOf('ASN')>-1)
}
} else {
this.showMessage('未查找到任务')

1
src/pages/purchaseReturn/job/returnDetail.vue

@ -43,7 +43,6 @@
<script>
import {
getBasicLocationByCode,
getPurchasereturnJobDetail,
purchaseReturnJobsubmit,
cancleTakePurchasereturnJob,

5
src/pages/purchaseReturn/job/returnJob.vue

@ -140,6 +140,11 @@
action: "in",
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

49
src/pages/putaway/job/putawayDetail.vue

@ -55,7 +55,6 @@
import {
getPutawayJobDetail,
getBasicLocationByCode,
putawayJobSubmit,
takePutawayJob,
cancleTakePutawayJob,
@ -190,15 +189,6 @@
that.jobStatus = res.data.status
that.subList = res.data.subList;
that.detailSource = getTreeDataSource(that.subList)
that.detailSource.forEach(r => {
r.subList.forEach(s => {
if (this.scanedPackingNumber && this.scanedPackingNumber == s
.packingNumber) s.scaned = true
s.inventoryStatus = s.inspectResult; //
})
})
that.fromLocationCode = that.subList[0].fromLocationCode
that.jobToLocationCode = that.subList[0].toLocationCode;
that.toLocationAreaTypeList = getDirectoryItemArray(that.jobContent.toAreaTypes)
@ -208,6 +198,20 @@
} else {
that.toLocationCode = that.jobToLocationCode;
}
that.detailSource.forEach(r => {
r.subList.forEach(s => {
if (this.scanedPackingNumber && this.scanedPackingNumber == s
.packingNumber) {
s.scaned = true
s.cancleScanedHiht = true
s.packList.forEach(item=>item.scaned = true)
s.inventoryStatus = s.inspectResult; //
this.openScanPopupSimulate(s)
this.scanedPackingNumber = ''
}
})
})
} else {
that.showMessage('列表数据为0');
@ -252,6 +256,27 @@
// this.calcHandleQty();
calcTreeHandleQty(this.detailSource)
},
//
openScanPopupSimulate(item){
let fromlocationCode = '';
let fromlocationList = [];
for (var i = 0; i < this.detailSource.length; i++) {
let item = this.detailSource[i];
item.subList.forEach(l => {
//
var location = fromlocationList.find(res => res == l.fromLocationCode)
if (location == undefined) {
fromlocationList.push(l.fromLocationCode);
}
//
if (fromlocationCode == '') {
fromlocationCode = l.fromLocationCode;
}
})
}
this.$refs.scanPopup.openScanPopupForJobSimulate(fromlocationCode, fromlocationList, this.jobContent,item);
},
openScanPopup() {
let fromlocationCode = '';
@ -321,7 +346,7 @@
this.showErrorMessage("箱码【" + packingNumber + "】,批次【" + batch + "】库位【" + result
.fromLocationCode + "】不在列表中")
} else {
if (isExit.scaned) {
if (!isExit.cancleScanedHiht&&isExit.scaned) {
this.showMessage("箱码【" + packingNumber + "】已经扫描")
} else {
isExit.scaned = true
@ -348,7 +373,7 @@
//
itemDetail.fromInventoryStatus = result.balance.inventoryStatus;
if (itemDetail.scaned && scanedLength == itemDetail.packList.length) {
if (!itemDetail.cancleScanedHiht&&itemDetail.scaned && scanedLength == itemDetail.packList.length) {
this.showMessage("箱码【" + packingNumber + "】已经扫描")
} else {
itemDetail.scaned = true;

13
src/pages/putaway/job/putawayJob.vue

@ -151,7 +151,11 @@
action: "in",
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,
@ -298,7 +302,7 @@
selectItem(item) {
this.$refs.scanPopup.closeScanPopup();
uni.navigateTo({
url: './putawayDetail?id=' + item.masterId + '&status=' + item.status
url: './putawayDetail?id=' + item.masterId + '&status=' + item.status+'&scaned='+item.packingNumber
});
},
getScanResult(result) {
@ -323,6 +327,11 @@
action: "==",
value: result.label.itemCode
},
{
column: "status",
action: "in",
value: '1,2',
}
// {
// column: "fromLocationCode",
// action: "==",

1
src/pages/repleinsh/coms/comRepleinshRequestPopup.vue

@ -78,7 +78,6 @@
<script>
import {
getBasicLocationByCode,
getBasicItemByCode,
getProductionlineItem,
getWorkShopLineStation

102
src/pages/repleinsh/coms/comScanReplishPack.vue

@ -113,7 +113,9 @@
import {
getBalanceByManagementPrecision
} from '@/common/balance.js';
import { getDirectoryItemArray } from '../../../common/directory.js';
import {
getDirectoryItemArray
} from '../../../common/directory.js';
export default {
name: 'winScanPack',
@ -249,14 +251,16 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
mask: true
})
this.getBalance(result.label, balances => {
this.getBalance(result.label, packageInfo, balances => {
//
let s = '';
if (result.package.parentNumber == null || result.package.parentNumber == '') {
if (!result.package.parentNumber) {
if (balances.list.length == 0) {
this.showErrorMessage('未查找到该包装的库存信息,请重新扫描')
} else {
let newBalances = balances.list.filter(b => b.locationCode ==that.fromLocationCode);
let newBalances = balances.list.filter(b => b.locationCode == that
.fromLocationCode);
if (newBalances.length == 0) {
this.showErrorMessage('未查找到该包装的库存信息,请重新扫描')
} else if (newBalances.length == 1) {
@ -269,10 +273,63 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
} else {
//
if (balances.list.length == 0) {
this.afterGetBalance(result.label, null, packageInfo);
this.showErrorMessage('未查找到该包装的库存信息,请重新扫描')
} else {
this.showErrorMessage('该包装在库位【' + balances.list[0].locationCode +
'】已经有库存余额,请重新扫描')
//
let subPackitems = balances.list.filter(r => r.packingNumber == packageInfo
.number)
//
let subParentPackitems = balances.list.filter(r => r.packingNumber ==
packageInfo
.parentNumber&&r.locationCode==this.fromLocationCode)
//
if (subPackitems.length == 0) {
//
if (subParentPackitems.length > 0) {
if(subParentPackitems.length==1){
let balance = subParentPackitems[0];
balance.qty=packageInfo.qty;
this.afterGetBalance(result.label, balance, packageInfo);
}else {
this.showBalanceSelect(subParentPackitems);
}
} else {
this.showErrorMessage('按外包装【' + packageInfo.parentNumber + '】和子包装【' +
packageInfo.number + '】都未查找到库存余额')
}
} else {
var locationCode = this.fromLocationCode
if(balances.list==1){
locationCode=balances.list[0].locationCode
}else {
var manyBlances = balances.list.filter(r=>r.locationCode!=this.fromLocationCode)
if(manyBlances.length>0){
locationCode = manyBlances[0].locationCode;
}
}
this.showErrorMessage('该包装【' + packageInfo.number + '】在库位【' +
locationCode +
'】已经有库存余额,请重新扫描')
}
// //
// if (subitems.length == 0 && subParentPackitems.length > 0) {
// this.afterGetBalance(result.label, null, packageInfo);
// } else if (subitems.length > 0 && subParentPackitems.length == 0) {
// //
// this.showErrorMessage('' + balances.list[0].locationCode +
// ',')
// } else {
// }
}
}
uni.hideLoading();
@ -303,13 +360,24 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
}
},
getBalance(label, callback) {
getBalance(label, packageInfo, callback) {
var filters = []
filters.push({
column: "packingNumber",
action: "==",
value: label.packingNumber
})
if (packageInfo.parentNumber) {
var packingNumber = packageInfo.parentNumber + "," + label.packingNumber;
filters.push({
column: "packingNumber",
action: "in",
value: packingNumber
})
} else {
filters.push({
column: "packingNumber",
action: "==",
value: label.packingNumber
})
}
filters.push({
column: "itemCode",
action: "==",
@ -472,8 +540,9 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
let record = {
scaned: true,
itemCode: balance.itemCode,
packingNumber: balance.packingNumber,
batch: balance.batch,
packingNumber: packageInfo.number,
parentPackingNumber: packageInfo.parentNumber,
batch: packageInfo.batch,
qty: Number(balance.qty),
// qty: Number(label.qty)>Number(balance.qty)?Number(balance.qty):Number(label.qty),
uom: balance.uom,
@ -567,7 +636,8 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
let item = this.toLocation.Items.find(r => r.itemCode == record.itemCode);
if (item != undefined) {
item.Locations.forEach(l => {
let batch = l.Batchs.find(b => (b.packingNumber == record.packingNumber || b
let batch = l.Batchs.find(b => (b.packingNumber == record.packingNumber ||
b
.packingNumber == null || b.packingNumber == '') && b.batch ==
record.batch);

100
src/pages/repleinsh/job/repleinshDetail.vue

@ -56,6 +56,7 @@
getCurrDateTime,
getDirectoryItemArray,
getPackingNumberAndBatch,
deepCopyData
} from '@/common/basic.js';
import {
@ -227,40 +228,33 @@
// this.setSubmitParamsAndSubmit();
// }
// } else {
//
if (scanCount == 0) {
this.showErrorMessage("扫描数为0,请先扫描")
} else {
this.setSubmitParamsAndSubmit();
}
//
if (scanCount == 0) {
this.showErrorMessage("扫描数为0,请先扫描")
} else {
this.setSubmitParamsAndSubmit();
}
// }
},
setSubmitParamsAndSubmit() {
//
var itemCodes = []
let locationCode = this.toLocationCode
this.detailSource.forEach(toLocation => {
toLocation.Items.forEach(item => {
itemCodes.push(item.itemCode)
})
})
this.submitJob();
//使
if (this.jobContent.useOnTheWayLocation == 'TRUE') {
this.submitJob();
} else {
//
getManagementPrecisions(itemCodes, locationCode, res => {
if (res.success) {
this.managementList = res.list;
this.submitJob();
} else {
uni.hideLoading();
this.showErrorMessage(res.message);
}
});
}
// if (this.jobContent.useOnTheWayLocation == 'TRUE') {
// this.submitJob();
// } else {
// //
// getManagementPrecisions(itemCodes, locationCode, res => {
// if (res.success) {
// this.managementList = res.list;
// this.submitJob();
// } else {
// uni.hideLoading();
// this.showErrorMessage(res.message);
// }
// });
// }
},
submitJob() {
@ -305,34 +299,45 @@
// .packingNumber;
record.fromBatch = r.batch;
record.fromContainerNumber = r
.ContainerNumber;
.containerNumber;
record.toContainerNumber = r
.ContainerNumber;
.containerNumber;
record.toInventoryStatus = r
.inventoryStatus;
record.toLocationCode = this
.toLocationCode;
record.supplierCode = r.supplierCode;
if (r.parentPackingNumber != '' && r
.parentPackingNumber != null) {
record.fromPackingNumber = r
.parentPackingNumber;
record.toPackingNumber = r
.packingNumber;
// record.fromPackUnit = r.packUnit;
record.toPackUnit = r.packUnit;
} else {
record.fromPackingNumber = r
.packingNumber;
record.toPackingNumber = r
.packingNumber;
record.toPackUnit = r.packUnit;
}
record.fromParentPackingNumber = r
.parentPackingNumber;
record.fromPackingNumber = r
.packingNumber;
record.toPackingNumber = r
.packingNumber;
record.toPackUnit = r.packUnit;
record.toBatch = r.batch;
// if (r.parentPackingNumber != '' && r
// .parentPackingNumber != null) {
// record.fromPackingNumber = r
// .parentPackingNumber;
// record.toPackingNumber = r
// .packingNumber;
// // record.fromPackUnit = r.packUnit;
// record.toPackUnit = r.packUnit;
// } else {
// record.fromPackingNumber = r
// .packingNumber;
// record.toPackingNumber = r
// .packingNumber;
// record.toPackUnit = r.packUnit;
// }
// record.toBatch = r.batch;
// //使
// if (this.jobContent
// .useOnTheWayLocation ==
@ -353,7 +358,7 @@
// }
subItem.recordList.push(record);
})
commitSubList.push(subItem);
commitSubList.push(deepCopyData(subItem));
}
}
})
@ -464,9 +469,6 @@
this.scanPopupGetFocus();
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
closeScanMessage() {
this.scanPopupGetFocus();

6
src/pages/repleinsh/job/repleinshJob.vue

@ -141,6 +141,12 @@
action: "in",
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
if (fromLocationCode != '') {
//
filters.push({

155
src/pages/repleinsh/record/directRepleinshRecord.vue

@ -40,11 +40,12 @@
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult' :allowModifyLocation='false'>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult' :allowModifyLocation='false' :queryBalance="false">
</win-scan-pack-and-location>
<comMessage ref="comMessage"></comMessage>
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation'
:locationAreaTypeList="fromLocationAreaTypeList"></win-scan-location>
<balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select>
</view>
</template>
@ -52,7 +53,8 @@
import {
repleinshRecordSubmit,
validateItemAndLocation,
getPutawayRecommendLocation
getPutawayRecommendLocation,
getBalanceByFilter
} from '@/api/request2.js';
import {
@ -92,6 +94,7 @@
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import balanceSelect from '@/mycomponents/balance/balanceSelect.vue'
export default {
components: {
@ -101,7 +104,8 @@
comBlankView,
winScanLocation,
winScanPackAndLocation,
recordComDetailCard
recordComDetailCard,
balanceSelect
},
data() {
return {
@ -118,7 +122,8 @@
recommendLocationList: [], //
fromWarehouseCode: '', //
businessTypeCode: "Repleinment",
toLocationCode:""
toLocationCode:"",
resultData:{}
};
},
onLoad(option) {
@ -148,7 +153,141 @@
mounted() {},
methods: {
getBalance(label, packageInfo, callback) {
var filters = []
if (packageInfo.parentNumber) {
var packingNumber = packageInfo.parentNumber + "," + label.packingNumber;
filters.push({
column: "packingNumber",
action: "in",
value: packingNumber
})
} else {
filters.push({
column: "packingNumber",
action: "==",
value: label.packingNumber
})
}
filters.push({
column: "itemCode",
action: "==",
value: label.itemCode
})
filters.push({
column: "batch",
action: "==",
value: label.batch
})
if (this.fromInventoryStatuses != null && this.fromInventoryStatuses != "") {
filters.push({
column: "inventoryStatus",
action: "in",
value: this.fromInventoryStatuses
})
}
var params = {
filters: filters,
pageNo: 1,
pageSize: 100,
}
getBalanceByFilter(params).then(res => {
callback(res.data)
}).catch(err => {
this.showErrorMessage(err.message);
})
},
getScanResult(result) {
this.resultData=result;
let packageInfo = result.package;
this.getBalance(result.label, packageInfo, balances =>{
//
let s = '';
if (!result.package.parentNumber) {
if (balances.list.length == 0) {
this.showErrorMessage('未查找到该包装的库存信息,请重新扫描')
} else {
let newBalances = balances.list.filter(b => b.locationCode == this
.fromLocationCode);
if (newBalances.length == 0) {
this.showErrorMessage('未查找到该包装的库存信息,请重新扫描')
} else if (newBalances.length == 1) {
let balance = newBalances[0];
result.balance=balance;
this.afterGetBalance(result);
} else {
this.showBalanceSelect(newBalances);
}
}
} else {
//
if (balances.list.length == 0) {
this.showErrorMessage('未查找到该包装的库存信息,请重新扫描')
} else {
//
let subPackitems = balances.list.filter(r => r.packingNumber == packageInfo
.number)
//
let subParentPackitems = balances.list.filter(r => r.packingNumber ==
packageInfo
.parentNumber&&r.locationCode==this.fromLocationCode)
//
if (subPackitems.length == 0) {
//
if (subParentPackitems.length > 0) {
if(subParentPackitems.length==1){
let balance = subParentPackitems[0];
balance.qty=packageInfo.qty;
result.balance =balance;
this.afterGetBalance(result);
}else {
this.showBalanceSelect(subParentPackitems);
}
} else {
this.showErrorMessage('按外包装【' + packageInfo.parentNumber + '】和子包装【' +
packageInfo.number + '】都未查找到库存余额')
}
} else {
var locationCode = this.fromLocationCode
if(balances.list==1){
locationCode=balances.list[0].locationCode
}else {
var manyBlances = balances.list.filter(r=>r.locationCode!=this.fromLocationCode)
if(manyBlances.length>0){
locationCode = manyBlances[0].locationCode;
}
}
this.showErrorMessage('该包装【' + packageInfo.number + '】在库位【' +
locationCode +
'】已经有库存余额,请重新扫描')
}
}
}
})
},
showBalanceSelect(items) {
this.$refs.balanceSelect.openPopup(items);
},
selectBalanceItem(balance) {
this.afterGetBalance(this.resultData, balance);
},
afterGetBalance(result){
let balance = result.balance;
let label = result.label;
let pack = result.package;
@ -166,6 +305,8 @@
var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); //
newDetail.parentNumber =pack.parentNumber;
newDetail.packingNumber =pack.number
newDetail.packUnit =packUnit;
newDetail.packQty=packQty;
itemp.subList.push(newDetail);
@ -183,6 +324,8 @@
})
if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack);
newDetail.parentNumber =pack.parentNumber;
newDetail.packingNumber =pack.number
newDetail.packUnit =packUnit;
newDetail.packQty=packQty;
item.subList.push(newDetail);
@ -193,7 +336,6 @@
}
}
}
},
showErrorMessage(message) {
@ -334,8 +476,11 @@
{
toInventoryStatus:detail.inventoryStatus,
fromPackingNumber:info.packingNumber,
fromParentPackingNumber: detail.parentNumber,
fromBatch:info.batch,
toPackingNumber:info.packingNumber,
toBatch:info.batch,
fromLocationCode:detail.locationCode,
toLocationCode:detail.toLocationCode,

5
src/pages/scrap/job/scrapJob.vue

@ -137,6 +137,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

1
src/pages/stockUp/job/stockUpJobDetail.vue

@ -64,7 +64,6 @@
<script>
import {
getStockUpJobDetail,
getBasicLocationByCode,
takeStockUpJob,
cancleTakeStockUpJob,
stockUpJobsubmit

2
src/pages/transfer/coms/comReceiptDetailCard.vue

@ -34,6 +34,7 @@
import recommendQtyEdit from '@/mycomponents/qty/recommendQtyEdit.vue'
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
import detailInfoPopup from '@/pages/unPlanned/coms/detailInfoPopup.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import {
getDetailOption,
@ -46,6 +47,7 @@
recommend,
recommendQtyEdit,
detailInfoPopup,
winScanLocation
},
props: {
dataContent: {

1
src/pages/transfer/job/issueDetail.vue

@ -49,7 +49,6 @@
} from '@/common/balance.js';
import {
getTransferIssueJobDetail,
getBasicLocationByCode,
takeTransferIssueJob,
cancleTakeTransferIssueJob,
transferIssueJobSubmit

5
src/pages/transfer/job/issueJob.vue

@ -143,6 +143,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

1
src/pages/transfer/job/receiptDetail.vue

@ -51,7 +51,6 @@
<script>
import {
getTransferReceiptJobDetail,
getBasicLocationByCode,
cancleTakeTransferReceiptJob,
takeTransferReceiptJob,
transferReceiptJobSubmit

5
src/pages/transfer/job/receiptJob.vue

@ -142,6 +142,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

11
src/pages/transfer/job/transferDetail.vue

@ -46,9 +46,6 @@
submitPurchaseReturnJob,
getInventoryMoveJobDetail,
} from '@/api/request.js';
import {
getBasicLocationByCode
} from '@/api/request2.js';
import {
calc
@ -494,14 +491,6 @@
return params;
},
getLocationInfo(locationCode) {
getBasicLocationByCode(locationCode).then(res => {
if (res.data.list.length > 0) {
this.toLocationInfo = res.data.list[0]
}
})
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {

5
src/pages/unPlanned/job/issueJob.vue

@ -144,6 +144,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

5
src/pages/unPlanned/job/receiptJob.vue

@ -133,6 +133,11 @@
value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = {
filters: filters,
pageNo: this.pageNo,

4
src/pages/unPlanned/record/issueRecord.vue

@ -13,7 +13,7 @@
<view class="">
<record-com-detail-card :dataContent="item" :index="index"
@removeItem="removeItem(index,item)" @updateData="updateData" :isShowLocation="true"
@removePack="removePack">
@removePack="removePack" :isShowToLocation="false">
</record-com-detail-card>
</view>
<view class='split_line'></view>
@ -151,7 +151,7 @@
if (item == undefined) {
var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); //
newDetail.inventoryStatus ="OK";
// newDetail.inventoryStatus ="OK";
itemp.subList.push(newDetail);
this.detailSource.push(itemp)
} else {

1
src/store/modules/user.js

@ -118,6 +118,7 @@ const user = {
commit('SET_ID',[])
storage.removeStorage(storage.constant.token)
storage.clearStorage()
uni.removeStorageSync('overPackageRecord') // 删除直接翻包中缓存的来源库位
resolve()
}).catch(error => {
reject(error)

Loading…
Cancel
Save