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. 65
      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. 990
      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. 114
      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. 169
      src/pages/pointPutawayJob/index.vue
  50. 4
      src/pages/productPutaway/job/fgProductPutawayJob.vue
  51. 90
      src/pages/productPutaway/job/productPutawayDetail.vue
  52. 27
      src/pages/productPutaway/job/productPutawayJob.vue
  53. 11
      src/pages/productReceipt/job/fgProductReceiptDetail.vue
  54. 47
      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. 119
      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. 228
      src/pages/purchaseReceipt/job/receiptDetail.vue
  63. 39
      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. 106
      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", "content-type": "application/json",
"Authorization": "Bearer "+token, "Authorization": "Bearer "+token,
"dataType":"json", "dataType":"json",
"dataSource":"PDA",
"tenant-id":tenantId "tenant-id":tenantId
}; };
options.timeout = 300000 options.timeout = 300000
@ -36,6 +37,7 @@ function service(options = {}) {
}else { }else {
if(res.data.code==401){ if(res.data.code==401){
uni.clearStorageSync() uni.clearStorageSync()
uni.removeStorageSync('overPackageRecord') // 删除直接翻包中缓存的来源库位
removeToken(); removeToken();
uni.reLaunch({ uni.reLaunch({
url: '/pages/login/index' url: '/pages/login/index'

23
src/api/request2.js

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

108
src/common/balance.js

@ -131,8 +131,58 @@ export function getManagementPrecisions(itemCodes, locationCode, callback) {
callback(result); 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 = { let result = {
list: [], list: [],
success: true, success: true,
@ -147,7 +197,7 @@ export function getBalanceByManagementPrecision(label, locationCode, fromInvento
let managementPrecision = res.data[0].ManagementPrecision; let managementPrecision = res.data[0].ManagementPrecision;
switch (managementPrecision) { switch (managementPrecision) {
case 'BY_PACKAGING': case 'BY_PACKAGING':
byPacking(label, locationCode, fromInventoryStatuses, res => { byPacking(label, "",locationCode, fromInventoryStatuses, res => {
res.managementPrecision = managementPrecision; res.managementPrecision = managementPrecision;
callback(res); callback(res);
}); });
@ -184,18 +234,30 @@ export function getBalanceByManagementPrecision(label, locationCode, fromInvento
* @param {Object} locationCode * @param {Object} locationCode
* @param {Object} callback * @param {Object} callback
*/ */
export function byPacking(label, locationCode, fromInventoryStatuses, callback) { export function byPacking(label, packageInfo,locationCode, fromInventoryStatuses, callback) {
let result = { let result = {
success: true, success: true,
message: '', message: '',
data: {} data: {}
}; };
var filters = [] var filters = []
filters.push({
column: "packingNumber", if (packageInfo&&packageInfo.parentNumber) {
action: "==", var packingNumber = packageInfo.parentNumber + "," + label.packingNumber;
value: label.packingNumber filters.push({
}) column: "packingNumber",
action: "in",
value: packingNumber
})
} else {
filters.push({
column: "packingNumber",
action: "==",
value: label.packingNumber
})
}
filters.push({ filters.push({
column: "itemCode", column: "itemCode",
action: "==", action: "==",
@ -212,11 +274,7 @@ export function byPacking(label, locationCode, fromInventoryStatuses, callback)
value: locationCode value: locationCode
}) })
if (fromInventoryStatuses) { if (fromInventoryStatuses) {
var status = "" var status = fromInventoryStatuses.join(',');
fromInventoryStatuses.forEach(res => {
status = res + ","
})
filters.push({ filters.push({
column: "inventoryStatus", column: "inventoryStatus",
action: "in", action: "in",
@ -281,9 +339,11 @@ export function byBatch(label, locationCode, fromInventoryStatuses, callback) {
}) })
if (fromInventoryStatuses) { if (fromInventoryStatuses) {
var status = "" var status = fromInventoryStatuses.join(',');
fromInventoryStatuses.forEach(res => { filters.push({
status = res + "," column: "inventoryStatus",
action: "in",
value: status
}) })
filters.push({ filters.push({
@ -358,9 +418,11 @@ export function byQuantity(label, locationCode, fromInventoryStatuses, callback)
}) })
if (fromInventoryStatuses) { if (fromInventoryStatuses) {
var status = "" var status = fromInventoryStatuses.join(',');
fromInventoryStatuses.forEach(res => { filters.push({
status = res + "," column: "inventoryStatus",
action: "in",
value: status
}) })
filters.push({ filters.push({
@ -417,9 +479,11 @@ export function byUniqueId(label, locationCode, fromInventoryStatuses, callback)
}) })
if (fromInventoryStatuses) { if (fromInventoryStatuses) {
var status = "" var status = fromInventoryStatuses.join(',');
fromInventoryStatuses.forEach(res => { filters.push({
status = res + "," column: "inventoryStatus",
action: "in",
value: status
}) })
filters.push({ filters.push({

24
src/hybrid/html/point.html

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

65
src/hybrid/html/pointPutawayJob.html

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

4
src/manifest.json

@ -2,8 +2,8 @@
"name" : "wms", "name" : "wms",
"appid" : "__UNI__C9CF4BF", "appid" : "__UNI__C9CF4BF",
"description" : "", "description" : "",
"versionName" : "1.0.5", "versionName" : "1.0.12",
"versionCode" : 5, "versionCode" : 12,
"transformPx" : false, "transformPx" : false,
/* 5+App */ /* 5+App */
"app-plus" : { "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="dataContent.scaned?'scan_view':''" style="background-color: #ffffff;margin-bottom: 1px; ">
<view class="uni-flex uni-row space-between" style="align-items: center"> <view class="uni-flex uni-row space-between" style="align-items: center">
<view> <view>
<pack v-if="dataContent.parentNumber" title="父包装" :packingCode="dataContent.parentNumber"></pack>
<pack v-if="isShowPack && dataContent.packingNumber" :packingCode="dataContent.packingNumber"></pack> <pack v-if="isShowPack && dataContent.packingNumber" :packingCode="dataContent.packingNumber"></pack>
<batch v-if="isShowBatch && dataContent.batch" :batch="dataContent.batch"></batch> <batch v-if="isShowBatch && dataContent.batch" :batch="dataContent.batch"></batch>
<location title="来源库位" v-if="isShowFromLocation" :locationCode="dataContent.locationCode"></location> <location title="来源库位" v-if="isShowFromLocation" :locationCode="dataContent.locationCode"></location>
<to-location title="目标库位" v-if="isShowToLocation" :locationCode="dataContent.toLocationCode"> <to-location title="目标库位" v-if="isShowToLocation" :locationCode="dataContent.toLocationCode">
</to-location> </to-location>
</view> </view>
<view class="uni-flex uni-row center"> <view class="uni-flex" style="flex-direction: column;">
<!-- <qty v-if="dataContent.record==null ||dataContent.record==undefined " :dataContent="dataContent" <view class="uni-flex uni-row center">
: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> <!-- <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> </view>
</view> </view>
<!-- <u-line></u-line> --> <!-- <u-line></u-line> -->
</view> </view>
@ -37,6 +50,7 @@
import recommendQty from '@/mycomponents/qty/recommendQty.vue' import recommendQty from '@/mycomponents/qty/recommendQty.vue'
import compareQty from '@/mycomponents/qty/compareQty.vue' import compareQty from '@/mycomponents/qty/compareQty.vue'
import config from '@/static/config.js' import config from '@/static/config.js'
import moveStatus from '@/mycomponents/balance/moveStatus.vue'
export default { export default {
components: { components: {
@ -47,6 +61,7 @@
qty, qty,
recommendQty, recommendQty,
compareQty, compareQty,
moveStatus
}, },
data() { data() {

8
src/mycomponents/balance/balanceSelect.vue

@ -37,7 +37,13 @@
}, },
methods: { methods: {
openPopup(items) { openPopup(items) {
this.balanceItems = items; if(Array.isArray(items)){
this.balanceItems = items;
}else{
this.balanceItems = [items];
}
this.$refs['popupItems'].open("center"); 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="detail.scaned?'scan_view':''" style="background-color: #ffffff;">
<view class="space_between center"> <view class="space_between center">
<view style="word-break: break-all;width: 60%;"> <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> :packingCode="detail.parentPackingNumber"></pack>
<pack v-if="isShowPack" :packingCode="detail.packingNumber"></pack> <pack v-if="isShowPack" :packingCode="detail.packingNumber"></pack>
<batch v-if="isShowBatch" :batch="detail.batch"></batch> <batch v-if="isShowBatch" :batch="detail.batch"></batch>

36
src/mycomponents/common/comMessage.vue

@ -2,6 +2,12 @@
<view> <view>
<u-modal v-model="show" :title-style="{color: 'red'}" :title="title" :showTitle="false" <u-modal v-model="show" :title-style="{color: 'red'}" :title="title" :showTitle="false"
:showConfirmButton="false" ref="modal"> :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"> <view class="slot-content">
<slot name="icon"> <slot name="icon">
<image class="icon" :src="icon" /> <image class="icon" :src="icon" />
@ -9,7 +15,6 @@
<slot name="content"> <slot name="content">
<rich-text class="content" :nodes="content"> <rich-text class="content" :nodes="content">
</rich-text> </rich-text>
</slot> </slot>
<view class='split_line'></view> <view class='split_line'></view>
<slot name="button"> <slot name="button">
@ -56,13 +61,40 @@
cancel: false, // true cancel: false, // true
isDisabled: true, // true isDisabled: true, // true
seconds: 0, 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: { 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() { open() {
this.getVersionCode()
this.show = true; this.show = true;
this.isDisabled = true; this.isDisabled = true;
}, },

7
src/mycomponents/job/jobComMainDetailCard.vue

@ -1,8 +1,9 @@
<template> <template>
<view class="task_item"> <view class="task_item">
<view class="task_text" style="border-top: 1px solid #dedede;padding-top: 20rpx;margin-top: 20rpx;"> <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"> <div class="u-p-l-10">
<pack v-if="isShowPack && dataContent.packingNumber!=null" :packingCode="dataContent.packingNumber"> <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 v-if="isShowFromLocation&&dataContent.fromLocationCode" title="来源库位" :locationCode="dataContent.fromLocationCode">
</location> </location>
<!-- <to-location></to-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> </to-location>
</div> </div>
<view class="card_view " v-if="isShowDeliverType"> <view class="card_view " v-if="isShowDeliverType">

20
src/mycomponents/job/jobFilter.vue

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

12
src/mycomponents/jobList/jobList.vue

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

13
src/mycomponents/package/packageCard.vue

@ -93,6 +93,19 @@
}, },
watch: { 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: { methods: {

14
src/mycomponents/recommend/recommend.vue

@ -93,7 +93,19 @@
}, },
watch: { 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: { methods: {
copy() { copy() {

1
src/mycomponents/scan/winCheckFgLabel.vue

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

4
src/mycomponents/scan/winComScan.vue

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

4
src/mycomponents/scan/winComScanFg.vue

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

7
src/mycomponents/scan/winScanFgLabel.vue

@ -21,6 +21,8 @@
</view> </view>
</view> </view>
</uni-popup> </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> <comMessage ref="comMessage" @afterClose="getfocus"></comMessage>
</view> </view>
</template> </template>
@ -52,6 +54,11 @@
}, },
methods: { methods: {
//
simulateScan(item){
this.$refs.comscansimulate.setItemCodeSimulate(item.itemCode,item.copyContent)
this.$refs.comscansimulate.clickScanMsg();
},
openScanPopup(itemCode) { openScanPopup(itemCode) {
setTimeout(res => { setTimeout(res => {
this.$refs.popup.open('bottom') this.$refs.popup.open('bottom')

25
src/mycomponents/scan/winScanLocation.vue

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

15
src/mycomponents/scan/winScanPack.vue

@ -20,6 +20,8 @@
</view> </view>
</view> </view>
</uni-popup> </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> <comMessage ref="comMessage" @afterClose="getfocus"></comMessage>
</view> </view>
</template> </template>
@ -55,6 +57,10 @@
}, },
methods: { methods: {
simulateScan(item){
this.$refs.comscansimulate.setItemCodeSimulate(item.copyContent)
this.$refs.comscansimulate.clickScanMsg();
},
openScanPopup() { openScanPopup() {
setTimeout(res => { setTimeout(res => {
this.$refs.popup.open('bottom') this.$refs.popup.open('bottom')
@ -67,11 +73,16 @@
}, },
scanClick() { scanClick() {
this.$refs.comscan.clickScanMsg(); if(this.$refs.comscan){
this.$refs.comscan.clickScanMsg();
}
}, },
cancelClick() { cancelClick() {
this.$refs.comscan.clearScanValue(); if(this.$refs.comscan){
this.$refs.comscan.clearScanValue();
}
}, },
getScanResult(result) { getScanResult(result) {

990
src/mycomponents/scan/winScanPackAndLocation.vue

@ -1,468 +1,522 @@
<template> <template>
<view> <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="popup_box">
<view class="pop_title uni-flex space-between"> <view class="pop_title uni-flex space-between">
<view class="" style="font-size: 35rpx;"> <view class="" style="font-size: 35rpx;">
扫描{{title}} 扫描{{title}}
</view> </view>
<view class=""> <view class="">
<image class="fr icons_scan_close" src="/static/icons/icons_scan_close.svg" <image class="fr icons_scan_close" src="/static/icons/icons_scan_close.svg"
@click="closeScanPopup()"></image> @click="closeScanPopup()"></image>
</view> </view>
</view> </view>
<view class="uni-flex uni-row" style="align-items: center; <view class="uni-flex uni-row" style="align-items: center;
background-color: #fff; background-color: #fff;
margin-left: 20rpx; margin-left: 20rpx;
margin-right: 20rpx; margin-right: 20rpx;
border-radius: 8rpx; border-radius: 8rpx;
height: 30px;"> height: 30px;">
<view class="uni-center" style="width: 25%; "> <view class="uni-center" style="width: 25%; ">
来源库位 来源库位
</view> </view>
<!-- style="width: 75%;padding: 8rpx" --> <!-- style="width: 75%;padding: 8rpx" -->
<view class=""> <view class="">
<!-- <input v-model="fromLocationCode" placeholder="请扫描来源库位" :focus="locationOnFocus" <!-- <input v-model="fromLocationCode" placeholder="请扫描来源库位" :focus="locationOnFocus"
placeholder-style="font-size:12px" style="padding: 5px;" @confirm="scanLocation" /> --> placeholder-style="font-size:12px" style="padding: 5px;" @confirm="scanLocation" /> -->
<view v-if='allowModifyLocation'> <view v-if='allowModifyLocation'>
<uni-combox :candidates="fromLocationList" v-model="fromLocationCode" placeholder="请扫描来源库位" <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>
<view v-else> <view v-else>
<text style="padding: 5px"> <text style="padding: 5px">
{{fromLocationCode}} {{fromLocationCode}}
</text> </text>
</view> </view>
</view> </view>
</view> </view>
<view class=""> <view class="">
<view class=""> <view class="">
<win-com-scan ref="comscan" :placeholder="title" @getResult="getScanResult" <win-com-scan ref="comscan" :placeholder="title" @getResult="getScanResult"
:isShowHistory="isShowHistory" :clearResult="true" :headerType="headerType"></win-com-scan> :isShowHistory="isShowHistory" :clearResult="true" :headerType="headerType"></win-com-scan>
</view> </view>
</view> </view>
</view> </view>
</uni-popup> </uni-popup>
<balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select> <balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select>
</view> <!-- 模拟扫描功能 -->
<comMessage ref="comMessage"></comMessage> <win-com-scan v-show="false" ref="comscansimulate" @getResult="getScanResult" :headerType="headerType"
</template> :isShowHistory="false" :clearResult="true"></win-com-scan>
<script> </view>
import winComScan from '@/mycomponents/scan/winComScan.vue' <comMessage ref="comMessage"></comMessage>
import balanceSelect from '@/mycomponents/balance/balanceSelect.vue' </template>
import {
getBalanceByManagementPrecision, <script>
} from '@/common/balance.js'; import winComScan from '@/mycomponents/scan/winComScan.vue'
import balanceSelect from '@/mycomponents/balance/balanceSelect.vue'
import { import {
getBasicLocationByCode, getBalanceByManagementPrecisionByPacking,
} from '@/api/request2.js'; } from '@/common/balance.js';
import { import {
getListLocationAreaTypeDesc, getBasicLocationByCode,
checkDirectoryItemExist, } from '@/api/request2.js';
getDirectoryItemArray,
getLocationAreaTypeName, import {
getInventoryStatusDesc getListLocationAreaTypeDesc,
} from '@/common/directory.js'; checkDirectoryItemExist,
export default { getDirectoryItemArray,
name: 'winScanPack', getLocationAreaTypeName,
emits: ["getResult", "close", "getCountScanResult"], getInventoryStatusDesc
components: { } from '@/common/directory.js';
winComScan, export default {
balanceSelect name: 'winScanPack',
}, emits: ["getResult", "close", "getCountScanResult", "confirm"],
props: { components: {
title: { winComScan,
type: String, balanceSelect
default: '箱标签' },
}, props: {
isShowHistory: { title: {
type: Boolean, type: String,
default: true default: '箱标签'
}, },
allowNullBalance: { isShowHistory: {
type: Boolean, type: Boolean,
default: false default: true
}, },
// allowNullBalance: {
noShowBalanceMessage: { type: Boolean,
type: Boolean, default: false
default: false },
}, //
// noShowBalanceMessage: {
allowModifyLocation: { type: Boolean,
type: Boolean, default: false
default: true },
}, //
headerType: { allowModifyLocation: {
type: String, type: Boolean,
default: "HPQ,HMQ" default: true
}, },
queryBalance: { headerType: {
type: Boolean, type: String,
default: true default: "HPQ,HMQ"
}, },
balanceFromInventoryStatuses:{//fromInventoryStatuses queryBalance: {
type: Boolean, type: Boolean,
default: true default: true
} },
}, balanceFromInventoryStatuses: { //fromInventoryStatuses
data() { type: Boolean,
return { default: true
scanResult: {}, }
show: false, },
scanList: [], data() {
expand: false, return {
showScanResult: {}, scanResult: {},
expendIcon: 'arrow-down', show: false,
fromLocationCode: '', scanList: [],
fromLocation: '', expand: false,
fromLocationList: [], showScanResult: {},
fromLocationAreaTypeList: [], expendIcon: 'arrow-down',
locationOnFocus: false, fromLocationCode: '',
businessType: {}, fromLocation: '',
inventoryStatus: [], fromLocationList: [],
managementPrecision: '', fromLocationAreaTypeList: [],
fromInventoryStatuses: "", locationOnFocus: false,
isCheck: false businessType: {},
} inventoryStatus: [],
}, managementPrecision: '',
created() { fromInventoryStatuses: "",
isCheck: false,
}, }
methods: { },
// created() {
openScanPopupForType(fromLocationCode, businessType) {
this.businessType = businessType; },
this.fromLocationCode = fromLocationCode; methods: {
if (fromLocationCode != '') {
this.packGetFocus(); handleConfirm() {
} else { this.$emit('confirm', this.fromLocationCode)
this.locationGetFocus(); },
} //
this.fromInventoryStatuses = getDirectoryItemArray(this.businessType.outInventoryStatuses) openScanPopupForType(fromLocationCode, businessType) {
this.inventoryStatus = getDirectoryItemArray(this.businessType.outInventoryStatuses); //
this.fromLocationAreaTypeList = getDirectoryItemArray(this.businessType.fromLocationAreaTypeList); // this.businessType = businessType;
setTimeout(res => { this.fromLocationCode = fromLocationCode;
this.$refs.popup.open('bottom') if (fromLocationCode != '') {
}, 500) this.packGetFocus();
}, } else {
this.locationGetFocus();
// }
openScanPopupForJob(fromLocationCode, fromLocationList, jobContent) { this.fromInventoryStatuses = getDirectoryItemArray(this.businessType.outInventoryStatuses)
this.fromLocationCode = fromLocationCode; this.inventoryStatus = getDirectoryItemArray(this.businessType.outInventoryStatuses); //
this.fromLocationList = fromLocationList; this.fromLocationAreaTypeList = getDirectoryItemArray(this.businessType.fromLocationAreaTypeList); //
if (fromLocationCode != '') { if (!this.show) {
this.packGetFocus(); setTimeout(res => {
} else { this.$refs.popup.open('bottom')
if (this.fromLocationList.length == 0) { }, 500)
this.locationGetFocus(); }
} else { },
this.fromLocationCode = this.fromLocationList[0];
} //
} openScanPopupForJob(fromLocationCode, fromLocationList, jobContent) {
setTimeout(res => { this.fromLocationCode = fromLocationCode;
this.$refs.popup.open('bottom') this.fromLocationList = fromLocationList;
}, 500) if (fromLocationCode != '') {
this.fromInventoryStatuses = getDirectoryItemArray(jobContent.outInventoryStatuses) this.packGetFocus();
this.inventoryStatus = getDirectoryItemArray(jobContent.outInventoryStatuses); //; // } else {
this.fromLocationAreaTypeList = getDirectoryItemArray(jobContent.fromAreaTypes); // if (this.fromLocationList.length == 0) {
}, this.locationGetFocus();
} else {
closeScanPopup(content) { this.fromLocationCode = this.fromLocationList[0];
this.$refs.popup.close(); }
this.$emit("close", ''); }
}, setTimeout(res => {
this.$refs.popup.open('bottom')
}, 500)
scanLocation(scanResult) { this.fromInventoryStatuses = getDirectoryItemArray(jobContent.outInventoryStatuses)
var isCheck = false; this.inventoryStatus = getDirectoryItemArray(jobContent.outInventoryStatuses); //; //
if (this.fromLocationCode == '') { this.fromLocationAreaTypeList = getDirectoryItemArray(jobContent.fromAreaTypes); //
this.showErrorMessage('来源库位不能为空', callback => { },
this.locationGetFocus(); //
}) openScanPopupForJobSimulate(fromLocationCode, fromLocationList, jobContent, item) {
return; this.fromLocationCode = fromLocationCode;
} this.fromLocationList = fromLocationList;
if (fromLocationCode != '') {
if (this.fromLocationList.length > 0) { // this.packGetFocus();
if (!this.isInLocationList(this.fromLocationCode)) { if (this.$refs.comscansimulate != undefined) {
this.showErrorMessage("扫描库位【" + this.fromLocationCode + '】不在任务来源库位中', callback => { this.$refs.comscansimulate.getfocus();
this.locationGetFocus(); }
})
return; } else {
} if (this.fromLocationList.length == 0) {
} // this.locationGetFocus();
alert('没有来源库位:List')
uni.showLoading({ } else {
title: '扫描中...', this.fromLocationCode = this.fromLocationList[0];
mask: true }
}); }
getBasicLocationByCode(this.fromLocationCode).then(res => {
uni.hideLoading(); this.fromInventoryStatuses = getDirectoryItemArray(jobContent.outInventoryStatuses)
if (res.data.total > 0) { this.inventoryStatus = getDirectoryItemArray(jobContent.outInventoryStatuses); //; //
let result = res.data.list[0]; this.fromLocationAreaTypeList = getDirectoryItemArray(jobContent.fromAreaTypes); //
var type = result.areaType; let timer = setTimeout(res => {
var available = result.available; if (timer) {
if (available == "TRUE") { clearTimeout(timer)
if (checkDirectoryItemExist(this.fromLocationAreaTypeList, type)) { }
this.location = result; this.$refs.comscansimulate.setItemCodeSimulate(item.copyContent)
// this.packGetFocus(); this.$refs.comscansimulate.clickScanMsg();
this.checkPackage(scanResult); }, 500)
} else {
var hint = getListLocationAreaTypeDesc(this.fromLocationAreaTypeList);
this.showErrorMessage("扫描库位[" + this.fromLocationCode + "]是[" + },
getLocationAreaTypeName(result.areaType) + "],需要的库区是[" + hint + "]")
} closeScanPopup(content) {
} else { this.$refs.popup.close();
this.showErrorMessage("扫描库位[" + this.fromLocationCode + "]不可用", res => { this.$emit("close", '');
this.locationGetFocus(); },
})
}
} else { scanLocation(scanResult) {
uni.hideLoading(); var isCheck = false;
this.showErrorMessage('未查询到库位[' + this.fromLocationCode + ']', res => { if (this.fromLocationCode == '') {
this.locationGetFocus(); this.showErrorMessage('来源库位不能为空', callback => {
}) this.locationGetFocus();
} })
}).catch(error => { return;
uni.hideLoading(); }
this.showErrorMessage(error, res => {
this.locationGetFocus(); if (this.fromLocationList.length > 0) {
}) if (!this.isInLocationList(this.fromLocationCode)) {
}) this.showErrorMessage("扫描库位【" + this.fromLocationCode + '】不在任务来源库位中', callback => {
}, this.locationGetFocus();
})
getScanResult(result) { return;
// console.log("", result) }
// if (this.fromLocationCode == '' || this.fromLocationCode == null) { }
// this.showMessage('', callback => {
// this.locationGetFocus(); uni.showLoading({
// }) title: '扫描中...',
// return; mask: true
// } else });
this.scanLocation(result); getBasicLocationByCode(this.fromLocationCode).then(res => {
// debugger if (res.data.total > 0) {
// if(this.isCheck){ let result = res.data.list[0];
// this.checkPackage(result); if(result.code!=this.fromLocationCode){
// } this.showErrorMessage('未查询到库位[' + this.fromLocationCode + ']')
}, return;
}
checkPackage(result) { var type = result.areaType;
if (result.label != null) { var available = result.available;
this.scanResult = result; if (available == "TRUE") {
if (this.queryBalance == true) { if (checkDirectoryItemExist(this.fromLocationAreaTypeList, type)) {
// uni.showLoading({ this.location = result;
// title: '...', // this.packGetFocus();
// mask: true this.checkPackage(scanResult);
// }) } else {
// -- fromInventoryStatuses uni.hideLoading();
getBalanceByManagementPrecision(result.label, this.fromLocationCode, this.balanceFromInventoryStatuses?this.fromInventoryStatuses:undefined, var hint = getListLocationAreaTypeDesc(this.fromLocationAreaTypeList);
res => { this.showErrorMessage("扫描库位[" + this.fromLocationCode + "]是[" +
uni.hideLoading(); getLocationAreaTypeName(result.areaType) + "],需要的库区是[" + hint + "]")
if (res.success) { }
this.managementPrecision = res.managementPrecision } else {
this.afterQueryBalance(res.data.list); uni.hideLoading();
} else { this.showErrorMessage("扫描库位[" + this.fromLocationCode + "]不可用", res => {
this.showErrorMessage(res.message, res => { this.locationGetFocus();
this.packGetFocus(); })
}) }
} } else {
// uni.hideLoading(); uni.hideLoading();
}); this.showErrorMessage('未查询到库位[' + this.fromLocationCode + ']', res => {
} else { this.locationGetFocus();
this.packCallBack(null); })
} }
} }).catch(error => {
}, uni.hideLoading();
this.showErrorMessage(error, res => {
this.locationGetFocus();
afterQueryBalance(datas) { })
if (this.allowNullBalance) { })
this.allowNoneBalance(datas); },
} else if (this.noShowBalanceMessage) {
if(Array.isArray(datas)){ getScanResult(result) {
this.countCallBack(datas[0]); // console.log("", result)
}else{ // if (this.fromLocationCode == '' || this.fromLocationCode == null) {
this.countCallBack(datas); // this.showMessage('', callback => {
} // this.locationGetFocus();
} else { // })
this.mustHavaBalance(datas); // return;
} // } else
uni.hideLoading(); this.scanLocation(result);
}, // debugger
// if(this.isCheck){
// // this.checkPackage(result);
allowNoneBalance(datas) { // }
if (datas.length == 0) { },
this.packCallBack(null);
} else { checkPackage(result) {
this.showErrorMessage('在来源库位[' + this.fromLocationCode + '],已经查找到该包装的库存记录,请重新扫描', res => { if (result.label != null) {
this.packGetFocus(); this.scanResult = result;
}) if (this.queryBalance == true) {
} // uni.showLoading({
}, // title: '...',
// mask: true
// // })
mustHavaBalance(datas) { // -- fromInventoryStatuses
if (datas.length == 0) { getBalanceByManagementPrecisionByPacking(result.label,result.package, this.fromLocationCode, this
this.showErrorMessage(this.getQueryCondition() + '<br>未查找到库存记录', res => { .balanceFromInventoryStatuses ? this.fromInventoryStatuses : undefined,
this.packGetFocus(); res => {
}) uni.hideLoading();
} else if (datas.length == 1) { if (res.success) {
let balance = datas[0]; this.managementPrecision = res.managementPrecision
this.packCallBack(balance); this.afterQueryBalance(res.data.list);
} else {
// 20231228 this.showErrorMessage(res.message, res => {
this.packGetFocus();
// if (balance.qty > 0) { })
// this.packCallBack(balance); }
// } else { // uni.hideLoading();
// this.showErrorMessage(this.getQueryCondition() + '<br>[' + balance.qty + "],<br>", });
// res => { } else {
// this.packGetFocus(); uni.hideLoading();
// }) this.packCallBack(null);
// } }
} else { }
this.showBalanceSelect(datas); },
}
},
afterQueryBalance(datas) {
showBalanceSelect(items) { if (this.allowNullBalance) {
this.$refs.balanceSelect.openPopup(items); this.allowNoneBalance(datas);
}, } else if (this.noShowBalanceMessage) {
if (Array.isArray(datas)) {
selectBalanceItem(balance) { this.countCallBack(datas[0]);
this.packCallBack(balance); } else {
// 20231228 this.countCallBack(datas);
// if (balance.qty > 0) { }
// this.packCallBack(balance); } else {
// } else { this.mustHavaBalance(datas);
// this.showErrorMessage(this.getQueryCondition() + '<br>[' + balance.qty + "],", }
// res => { uni.hideLoading();
// this.packGetFocus(); },
// })
// } //
}, allowNoneBalance(datas) {
if (datas.length == 0) {
// this.packCallBack(null);
countCallBack(datas) { } else {
this.$refs.comscan.clear(); this.showErrorMessage('在来源库位[' + this.fromLocationCode + '],已经查找到该包装的库存记录,请重新扫描', res => {
// this.packGetFocus();
let data = { })
label: this.scanResult.label, }
package: this.scanResult.package, },
balance: datas,
fromLocationCode: this.fromLocationCode, //
} mustHavaBalance(datas) {
this.packGetFocus(); if (datas.length == 0) {
this.$emit("getResult", data); this.showErrorMessage(this.getQueryCondition() + '<br>未查找到库存记录', res => {
this.$emit("getCountScanResult", data); this.packGetFocus();
}, })
} else if (datas.length == 1) {
packCallBack(item) { let balance = datas[0];
this.$refs.comscan.clear(); this.packCallBack(balance);
//
let data = { // 20231228
label: this.scanResult.label,
package: this.scanResult.package, // if (balance.qty > 0) {
balance: item, // this.packCallBack(balance);
fromLocationCode: this.fromLocationCode, // } else {
} // this.showErrorMessage(this.getQueryCondition() + '<br>[' + balance.qty + "],<br>",
this.packGetFocus(); // res => {
this.$emit("getResult", data); // this.packGetFocus();
}, // })
// }
packGetFocus() { } else {
if (this.$refs.comscan != undefined) { this.showBalanceSelect(datas);
this.$refs.comscan.getfocus(); }
} },
},
showBalanceSelect(items) {
packLoseFocus() { this.$refs.balanceSelect.openPopup(items);
if (this.$refs.comscan != undefined) { },
this.$refs.comscan.losefocus();
} selectBalanceItem(balance) {
}, this.packCallBack(balance);
// 20231228
locationGetFocus() { // if (balance.qty > 0) {
this.fromLocationCode = ''; // this.packCallBack(balance);
this.locationOnFocus = true; // } else {
}, // this.showErrorMessage(this.getQueryCondition() + '<br>[' + balance.qty + "],",
// res => {
getQueryCondition() { // this.packGetFocus();
let condition = '按照以下条件:<br>'; // })
let label = this.scanResult.label; // }
let status = getInventoryStatusDesc(this.inventoryStatus); },
switch (this.managementPrecision) {
case 'BY_PACKAGING': //
condition = condition + '物料号=[' + label.itemCode + ']<br>箱码=[' + label.packingNumber + countCallBack(datas) {
']<br>批次=[' + if (this.$refs.comscan) {
label.batch + this.$refs.comscan.clear();
']<br>库位=[' + this.fromLocationCode + ']' }
//
break; let data = {
case 'BY_BATCH': label: this.scanResult.label,
condition = condition + '物料号=[' + label.itemCode + ']<br>批次=[' + package: this.scanResult.package,
label.batch + balance: datas,
']<br>库位=[' + this.fromLocationCode + ']' fromLocationCode: this.fromLocationCode,
break; }
case 'BY_QUANTITY': this.packGetFocus();
condition = condition + '物料号=[' + label.itemCode + ']<br>库位=[' + this.fromLocationCode + ']' this.$emit("getResult", data);
break; this.$emit("getCountScanResult", data);
case 'BY_UNIQUEID': },
condition = condition + '物料号=[' + label.itemCode + ']'
break; packCallBack(item) {
} if (this.$refs.comscan) {
if (this.inventoryStatus.length > 0) { this.$refs.comscan.clear();
condition = condition + '<br>库存状态=[' + status + ']' }
} //
return condition; let data = {
}, label: this.scanResult.label,
package: this.scanResult.package,
balance: item,
showMessage(message, callback) { fromLocationCode: this.fromLocationCode,
setTimeout(r => { }
this.packLoseFocus(); this.packGetFocus();
this.$refs.comMessage.showMessage(message, callback); this.$emit("getResult", data);
}) },
},
packGetFocus() {
showErrorMessage(message, callback) { if (this.$refs.comscan != undefined) {
setTimeout(r => { this.$refs.comscan.getfocus();
this.packLoseFocus(); }
this.$refs.comMessage.showErrorMessage(message, callback) },
})
}, packLoseFocus() {
if (this.$refs.comscan != undefined) {
change(e) { this.$refs.comscan.losefocus();
this.show = e.show }
}, },
isInLocationList(location) {
locationGetFocus() {
var item = this.fromLocationList.find(res => res == location) this.fromLocationCode = '';
this.locationOnFocus = true;
if (item = undefined) { },
return false
} getQueryCondition() {
return true let condition = '按照以下条件:<br>';
}, let label = this.scanResult.label;
addLocationCode(code) { let status = getInventoryStatusDesc(this.inventoryStatus);
if (!this.isInLocationList(code)) { switch (this.managementPrecision) {
this.fromLocationList.push(code) case 'BY_PACKAGING':
} condition = condition + '物料号=[' + label.itemCode + ']<br>箱码=[' + label.packingNumber +
} ']<br>批次=[' +
} label.batch +
} ']<br>库位=[' + this.fromLocationCode + ']'
</script>
break;
<style lang="scss"> case 'BY_BATCH':
.scroll-view { condition = condition + '物料号=[' + label.itemCode + ']<br>批次=[' +
overflow-y: scroll; label.batch +
height: auto; ']<br>库位=[' + this.fromLocationCode + ']'
max-height: 300rpx; break;
} case 'BY_QUANTITY':
</style> condition = condition + '物料号=[' + label.itemCode + ']<br>库位=[' + this.fromLocationCode + ']'
break;
case 'BY_UNIQUEID':
condition = condition + '物料号=[' + label.itemCode + ']'
break;
}
if (this.inventoryStatus.length > 0) {
condition = condition + '<br>库存状态=[' + status + ']'
}
return condition;
},
showMessage(message, callback) {
setTimeout(r => {
this.packLoseFocus();
this.$refs.comMessage.showMessage(message, callback);
})
},
showErrorMessage(message, callback) {
setTimeout(r => {
this.packLoseFocus();
this.$refs.comMessage.showErrorMessage(message, callback)
})
},
change(e) {
this.show = e.show
},
isInLocationList(location) {
var item = this.fromLocationList.find(res => res == location)
if (item = undefined) {
return false
}
return true
},
addLocationCode(code) {
if (!this.isInLocationList(code)) {
this.fromLocationList.push(code)
}
}
}
}
</script>
<style lang="scss">
.scroll-view {
overflow-y: scroll;
height: auto;
max-height: 300rpx;
}
</style>

4
src/mycomponents/scan/winScanPackAndLocationNoBalance.vue

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

1
src/mycomponents/scan/winScanPackJob.vue

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

2
src/pages.json

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

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

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

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

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

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

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

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

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

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

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

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

@ -375,11 +375,25 @@
createBatchInfo(data, balance, packageInfo) { createBatchInfo(data, balance, packageInfo) {
let batch = { let batch = {
batch: data.lot, batch: data.lot||data.batch,
qty: 0, qty: 0,
uom: data.uom, uom: data.uom,
handleQty: Number(data.qty), 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); let record = this.creatRecord(data, balance, packageInfo);
batch.Records.push(record); batch.Records.push(record);
@ -401,7 +415,9 @@
toLocationCode: this.toLocationCode, toLocationCode: this.toLocationCode,
supplierCode: label.supplierCode, supplierCode: label.supplierCode,
packUnit: packageInfo.packUnit, packUnit: packageInfo.packUnit,
packQty: packageInfo.packQty packQty: packageInfo.packQty,
singlePrice:balance.singlePrice,
amount:balance.amount
} }
return record; return record;
}, },

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

@ -55,7 +55,6 @@
<script> <script>
import { import {
getDeliverDetail, getDeliverDetail,
getBasicLocationByCode,
takeDeliverJob, takeDeliverJob,
cancleTakeDeliverJob, cancleTakeDeliverJob,
deliverJobSubmit 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({ filters.push({
column: "status", column: "status",
action: "in", action: "in",

2
src/pages/index/index.vue

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -1,7 +1,7 @@
<template> <template>
<view class=""> <view class="">
<com-empty-view v-if="jobList.length==0"></com-empty-view> <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" @switchChangeToday="switchChangeToday" @switchChangeWait="switchChangeWait" @onScanNumber="getScanNumber"
:checkedToday="checkedToday" :checkedWaitTask="checkedWaitTask" @productionLineCode="productionLineCode" :checkedToday="checkedToday" :checkedWaitTask="checkedWaitTask" @productionLineCode="productionLineCode"
@fromLocationCode="fromLocationCode"> @fromLocationCode="fromLocationCode">
@ -21,6 +21,9 @@
<uni-load-more :status="loadingType" v-if="jobList.length>0" /> <uni-load-more :status="loadingType" v-if="jobList.length>0" />
</view> </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> <comMessage ref="comMessage"></comMessage>
</view> </view>
</template> </template>
@ -28,7 +31,8 @@
<script> <script>
import { import {
cancleTakeIssueJob, cancleTakeIssueJob,
getIssueJobList, getIssueJobList,
getIssueJobByProductionline
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
goHome, goHome,
@ -45,6 +49,9 @@
import comIssueJobCard from '@/pages/issue/coms/comIssueJobCard.vue' import comIssueJobCard from '@/pages/issue/coms/comIssueJobCard.vue'
import jobListPopup from '@/pages/issue/coms/jobListPopup.vue' import jobListPopup from '@/pages/issue/coms/jobListPopup.vue'
import jobInfoPopup from '@/pages/issue/coms/jobInfoPopup.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 { export default {
name: 'issue', name: 'issue',
@ -53,7 +60,10 @@
jobFilter, jobFilter,
comIssueJobCard, comIssueJobCard,
jobListPopup, jobListPopup,
jobInfoPopup jobInfoPopup,
winScanPackJob,
winScanButton,
jobList
}, },
data() { data() {
return { return {
@ -67,10 +77,13 @@
todayTime: "", todayTime: "",
status: '1,2', // status: '1,2', //
detailOptions: [], detailOptions: [],
detailGiveupOptions: [], detailGiveupOptions: [],
productionline:[]
}; };
},
onLoad(){
this.getIssueJobByProductionline()
}, },
onShow() { onShow() {
this.getList('refresh'); this.getList('refresh');
}, },
@ -110,7 +123,20 @@
} }
}, },
methods: { 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 = '') { getList(type, fromLocationCode = '', productionLineCode = '') {
let that = this; let that = this;
uni.showLoading({ uni.showLoading({
@ -136,6 +162,12 @@
column: "status", column: "status",
action: "in", action: "in",
value: this.status value: this.status
})
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
}) })
if (fromLocationCode != '') { if (fromLocationCode != '') {
@ -223,9 +255,10 @@
}, },
openJobDetail(item) { openJobDetail(item, scanMessage = '') {
uni.navigateTo({ uni.navigateTo({
url: './issueDetail?id=' + item.masterId + '&status=' + item.status url: './issueDetail?id=' + item.masterId + '&status=' + item.status+'&scanMessage=' +
scanMessage
}); });
}, },
@ -236,6 +269,11 @@
selectedItem(item) { selectedItem(item) {
this.openJobDetail(item); this.openJobDetail(item);
}, },
selectItem(item) {
this.$refs.scanPopup.closeScanPopup();
this.openJobDetail(item,this.scanMessage);
},
swipeClick(e, dataContent) { swipeClick(e, dataContent) {
if (e.content.text == "详情") { if (e.content.text == "详情") {
@ -306,8 +344,6 @@
filters: filters, filters: filters,
pageNo: 1, pageNo: 1,
pageSize: 100, pageSize: 100,
sort: 'fromLocationCode',
by: 'asc'
} }
getIssueJobList(params).then(res => { getIssueJobList(params).then(res => {
uni.hideLoading(); 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> </script>

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

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

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

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

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

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

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

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

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

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

40
src/pages/point/index.vue

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

169
src/pages/pointPutawayJob/index.vue

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

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

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

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

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

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

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

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

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

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

@ -134,23 +134,27 @@
managementList: [], managementList: [],
jobStatus: "", jobStatus: "",
jobToLocationCode: "", jobToLocationCode: "",
scanedPackingNumber: '' scanedPackingNumber: '',
status:''
}; };
}, },
onLoad(option) { onLoad(option) {
this.id = option.id; this.id = option.id;
this.scanedPackingNumber = option.scaned || ''; this.scanedPackingNumber = option.scaned || '';
if (this.id != undefined) { this.status = option.status || ''
//
if (option.status == "1") { },
this.receive((callback => { onShow(){
this.getDetail(); if (this.id != undefined) {
})); //
} else { if (this.status == "1") {
this.getDetail(); this.receive((callback => {
} this.getDetail();
} }));
} else {
this.getDetail();
}
}
}, },
// //
onNavigationBarButtonTap(e) { onNavigationBarButtonTap(e) {
@ -222,9 +226,15 @@
that.detailSource.forEach(r => { that.detailSource.forEach(r => {
r.subList.forEach(s => { r.subList.forEach(s => {
if (this.scanedPackingNumber && this.scanedPackingNumber == s if (this.scanedPackingNumber && this.scanedPackingNumber == s
.packingNumber){ .packingNumber){
s.scaned = true
s.handleQty =s.qty s.scaned = true
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
} }
}) })
}) })
@ -238,7 +248,8 @@
}) })
}, },
getScanResult(result) { getScanResult(result) {
let label = result.label; let label = result.label;
var packingNumber = label.packingNumber; var packingNumber = label.packingNumber;
var batch = label.batch; var batch = label.batch;
@ -255,7 +266,7 @@
if (itemDetail == undefined) { if (itemDetail == undefined) {
this.showErrorMessage("箱码[" + packingNumber + "]" + "批次[" + batch + "]不在任务列表中") this.showErrorMessage("箱码[" + packingNumber + "]" + "批次[" + batch + "]不在任务列表中")
} else { } else {
if (itemDetail.scaned) { if (!itemDetail.cancleScanedHiht&&itemDetail.scaned) {
this.showErrorMessage("箱码[" + packingNumber + "]" + "批次[" + batch + "]已经扫描") this.showErrorMessage("箱码[" + packingNumber + "]" + "批次[" + batch + "]已经扫描")
} else { } else {
itemDetail.scaned = true; itemDetail.scaned = true;

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

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

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

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

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

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

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

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

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

@ -22,6 +22,9 @@
<uni-load-more :status="loadingType" /> <uni-load-more :status="loadingType" />
</view> </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> <comMessage ref="comMessage"></comMessage>
</view> </view>
</template> </template>
@ -48,6 +51,9 @@
import comProductionJobCard from '@/pages/productionReceipt/coms/comProductionJobCard.vue' import comProductionJobCard from '@/pages/productionReceipt/coms/comProductionJobCard.vue'
import jobListPopup from '@/pages/productionReceipt/coms/jobListPopup.vue' import jobListPopup from '@/pages/productionReceipt/coms/jobListPopup.vue'
import jobInfoPopup from '@/pages/productionReceipt/coms/jobInfoPopup.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 { export default {
name: 'productionReceipt', name: 'productionReceipt',
@ -56,7 +62,10 @@
jobFilter, jobFilter,
comProductionJobCard, comProductionJobCard,
jobListPopup, jobListPopup,
jobInfoPopup jobInfoPopup,
winScanPackJob,
winScanButton,
jobList
}, },
data() { data() {
return { return {
@ -142,6 +151,11 @@
value: this.status value: this.status
}) })
filters.push({
column: "accept_user_id",
action: "==",
value: this.$store.state.user.id
})
var params = { var params = {
filters: filters, filters: filters,
pageNo: this.pageNo, pageNo: this.pageNo,
@ -177,9 +191,10 @@
}) })
}, },
openJobDetail(item) { openJobDetail(item, packingNumber = '') {
uni.navigateTo({ 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> </script>

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

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

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

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

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

@ -14,6 +14,13 @@
@change="switchChange"></u-switch> @change="switchChange"></u-switch>
</view> </view>
</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" <!-- <required-location ref="locationCompare" title="默认收货库位 :" :locationCode="jobToLocationCode"
:isShowEdit="false"></required-location> :isShowEdit="false"></required-location>
<view class='split_line'></view> --> <view class='split_line'></view> -->
@ -73,7 +80,8 @@
getCurrDateTime, getCurrDateTime,
getPackingNumberAndBatch, getPackingNumberAndBatch,
compareAsc, compareAsc,
navigateBack navigateBack,
getSwitchInfoByCode
} from '@/common/basic.js'; } from '@/common/basic.js';
import { import {
@ -98,10 +106,13 @@
import winScanPack from '@/mycomponents/scan/winScanPack.vue' import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import locationCompare from '@/mycomponents/location/locationCompare.vue' import locationCompare from '@/mycomponents/location/locationCompare.vue'
import comReceiptDetailCard from '@/pages/purchaseReceipt/coms/comReceiptDetailCard.vue' import comReceiptDetailCard from '@/pages/purchaseReceipt/coms/comReceiptDetailCard.vue'
import jobTopAsn from '@/mycomponents/job/jobTopAsn.vue' import jobTopAsn from '@/mycomponents/job/jobTopAsn.vue'
import { import {
productDismantleJobClose productDismantleJobClose
} from '@/api/request2.js'; } from '@/api/request2.js';
import {
nextTick
} from 'vue';
export default { export default {
name: 'receipt_detail', name: 'receipt_detail',
@ -130,18 +141,28 @@
jobStatus: "", jobStatus: "",
isAllReceived: false, isAllReceived: false,
operation: '', operation: '',
scanedPackingNumber: '' scanedPackingNumber: '',
status: '',
switchCode: '',
reasonText: ""
}; };
}, },
onLoad(option) { onLoad(option) {
this.id = option.id; this.id = option.id;
// this.scanedPackingNumber = option.scaned || ''; this.scanedPackingNumber = option.scaned || '';
this.operation = option.operation; this.operation = option.operation;
this.status = option.status;
this.switchCode = "purchasereceiptPrintPDA"
},
onShow() {
if (this.id != undefined) { if (this.id != undefined) {
// //
if (option.status == "1") { if (this.status == "1") {
this.receive((callback => { this.receive((callback => {
this.getDetail(); this.getDetail();
})); }));
@ -219,13 +240,25 @@
that.jobStatus = res.data.status that.jobStatus = res.data.status
that.jobToLocationCode = that.subList[0].toLocationCode that.jobToLocationCode = that.subList[0].toLocationCode
that.detailSource = getTreeDataSource(that.subList) that.detailSource = getTreeDataSource(that.subList)
that.detailSource.forEach(r => { that.isAllReceived = false;
r.subList.forEach(s => { nextTick(() => {
if (this.scanedPackingNumber && this.scanedPackingNumber == s that.detailSource.forEach(r => {
.packingNumber) s.scaned = true 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 { } else {
that.showMessage('列表数据为0'); that.showMessage('列表数据为0');
} }
@ -238,6 +271,7 @@
getScanResult(result) { getScanResult(result) {
try { try {
var itemCode = result.label.itemCode; var itemCode = result.label.itemCode;
var detail = this.detailSource.find(r => r.itemCode == itemCode); var detail = this.detailSource.find(r => r.itemCode == itemCode);
@ -251,7 +285,7 @@
if (itemDetail.length == 0) { if (itemDetail.length == 0) {
this.showErrorMessage("物料【" + itemCode + "】、托码【" + containerNumber + "】不在列表中") this.showErrorMessage("物料【" + itemCode + "】、托码【" + containerNumber + "】不在列表中")
} else { } else {
if (itemDetail[0].scaned) { if (!itemDetail[0].cancleScanedHiht && itemDetail[0].scaned) {
this.showErrorMessage("物料【" + itemCode + "】、托码【" + containerNumber + "】已经扫描") this.showErrorMessage("物料【" + itemCode + "】、托码【" + containerNumber + "】已经扫描")
} else { } else {
itemDetail.forEach(item => { itemDetail.forEach(item => {
@ -298,7 +332,7 @@
if (isExit == undefined) { if (isExit == undefined) {
this.showMessage("箱码【" + packingNumber + "】、批次【" + batch + "】不在列表中") this.showMessage("箱码【" + packingNumber + "】、批次【" + batch + "】不在列表中")
} else { } else {
if (isExit.scaned) { if (!isExit.cancleScanedHiht && isExit.scaned) {
this.showMessage("箱码【" + packingNumber + "】已经扫描") this.showMessage("箱码【" + packingNumber + "】已经扫描")
} else { } else {
isExit.scaned = true isExit.scaned = true
@ -316,7 +350,8 @@
scanedLength++; scanedLength++;
} }
}) })
if (itemDetail.scaned && scanedLength == itemDetail.packList.length) { if (!itemDetail.cancleScanedHiht && itemDetail.scaned && scanedLength == itemDetail
.packList.length) {
this.showMessage("箱码【" + packingNumber + "】已经扫描") this.showMessage("箱码【" + packingNumber + "】已经扫描")
} else { } else {
itemDetail.scaned = true; itemDetail.scaned = true;
@ -395,11 +430,11 @@
} else if (this.scanCount < this.subList.length) { } else if (this.scanCount < this.subList.length) {
// //
if (this.jobContent.allowPartialComplete == "TRUE") { if (this.jobContent.allowPartialComplete == "TRUE") {
// //
this.$refs.comMessage.showQuestionMessage('还有未扫描的物料,是否继续提交?', res => { this.$refs.comMessage.showQuestionMessage('还有未扫描的物料,是否继续提交?', res => {
if (res) { if (res) {
this.submitJob(); this.submitJob();
} }
}); });
} else { } else {
// //
@ -416,22 +451,30 @@
}, },
reject() { reject() {
if(!this.reasonText){
this.showMessage("请输入拒收原因")
return;
}
this.$refs.comMessage.showQuestionMessage('是否要拒收任务<br>[' + this.jobContent.asnNumber + ']?', res => { this.$refs.comMessage.showQuestionMessage('是否要拒收任务<br>[' + this.jobContent.asnNumber + ']?', res => {
if (res) { if (res) {
uni.showLoading({ uni.showLoading({
title: "提交中....", title: "提交中....",
mask: true mask: true
}); });
productDismantleJobClose(this.id).then(res => { var params = {
console.log('拒收',res) id: this.id,
if (res.data) { refuseReason: this.reasonText
navigateBack(1) }
} else { productDismantleJobClose(params).then(res => {
this.showErrorMessage(res.msg) console.log('拒收', res)
} if (res.data) {
}).catch(error => { navigateBack(1)
uni.hideLoading() } else {
this.showErrorMessage(error) this.showErrorMessage(res.msg)
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
}) })
} }
}) })
@ -453,52 +496,76 @@
this.managementList = res.list; this.managementList = res.list;
var params = this.setParams() var params = this.setParams()
purchaseReceiptJobSubmit(params).then(res => { purchaseReceiptJobSubmit(params).then(res => {
if (res.data) { if (res.data) {
// this.showCommitSuccessMessage("<br><br><br><br>" + res.data) let isCheckPrint = getSwitchInfoByCode(this.switchCode)
uni.showLoading({ if (!isCheckPrint) {
title: "提交成功,将跳转到打印页面", uni.hideLoading()
mask: true
}); this.showCommitSuccessMessage("提交成功<br>生成采购收货记录<br>" + res.data.number)
// } else {
let timerCount = 0 uni.showLoading({
const timer1 = setInterval(async ()=>{ title: "提交成功,将跳转到打印页面",
if(timerCount == 10){ mask: true
clearInterval(timer1) });
uni.showLoading({
title: "跳转打印页面失败", //
mask: true let timerCount = 0
}); const timer1 = setInterval(async () => {
return; if (timerCount == 15) {
}
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()
clearInterval(timer1) clearInterval(timer1)
const dataParams = { uni.showToast({
toLocationCode: res.data.list[0].toLocationCode, title: "跳转打印页面失败",
number: res.data.list[0].number, icon: "none"
creator: res.data.list[0].creator, });
createTime: res.data.list[0].createTime, return;
ids : res.data.list.map(item=>item.masterId).join(',')
}
console.log(dataParams)
uni.navigateTo({
url:'/pages/pointPutawayJob/index?data='+encodeURIComponent(JSON.stringify(dataParams))
})
} }
}) await getPutawayJobList({
},1000) 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 { } else {
this.showErrorMessage("提交失败[" + res.msg + "]") this.showErrorMessage("提交失败[" + res.msg + "]")
} }
@ -652,8 +719,9 @@
showCommitSuccessMessage(hint) { showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => { this.$refs.comMessage.showSuccessMessage(hint, res => {
// navigateBack(1) navigateBack(1)
}) })
}, },
} }

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

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

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

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

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

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

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

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

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

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

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

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

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

@ -113,7 +113,9 @@
import { import {
getBalanceByManagementPrecision getBalanceByManagementPrecision
} from '@/common/balance.js'; } from '@/common/balance.js';
import { getDirectoryItemArray } from '../../../common/directory.js'; import {
getDirectoryItemArray
} from '../../../common/directory.js';
export default { export default {
name: 'winScanPack', name: 'winScanPack',
@ -185,7 +187,7 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
let that = this; let that = this;
that.fromLocationList = []; that.fromLocationList = [];
if (that.dataContent != null) { if (that.dataContent != null) {
that.fromInventoryStatuses = this.jobContent.outInventoryStatuses that.fromInventoryStatuses = this.jobContent.outInventoryStatuses
that.toLocation = that.dataContent[0]; that.toLocation = that.dataContent[0];
that.toLocationCode = that.dataContent[0].toLocationCode; that.toLocationCode = that.dataContent[0].toLocationCode;
that.fromLocationList = that.getFromLocationList(); that.fromLocationList = that.getFromLocationList();
@ -249,14 +251,16 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
mask: true mask: true
}) })
this.getBalance(result.label, balances => { this.getBalance(result.label, packageInfo, balances => {
// //
let s = ''; let s = '';
if (result.package.parentNumber == null || result.package.parentNumber == '') { if (!result.package.parentNumber) {
if (balances.list.length == 0) { if (balances.list.length == 0) {
this.showErrorMessage('未查找到该包装的库存信息,请重新扫描') this.showErrorMessage('未查找到该包装的库存信息,请重新扫描')
} else { } 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) { if (newBalances.length == 0) {
this.showErrorMessage('未查找到该包装的库存信息,请重新扫描') this.showErrorMessage('未查找到该包装的库存信息,请重新扫描')
} else if (newBalances.length == 1) { } else if (newBalances.length == 1) {
@ -269,10 +273,63 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
} else { } else {
// //
if (balances.list.length == 0) { if (balances.list.length == 0) {
this.afterGetBalance(result.label, null, packageInfo); this.showErrorMessage('未查找到该包装的库存信息,请重新扫描')
} else { } 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(); uni.hideLoading();
@ -303,13 +360,24 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
} }
}, },
getBalance(label, callback) { getBalance(label, packageInfo, callback) {
var filters = [] var filters = []
filters.push({
column: "packingNumber", if (packageInfo.parentNumber) {
action: "==", var packingNumber = packageInfo.parentNumber + "," + label.packingNumber;
value: label.packingNumber filters.push({
}) column: "packingNumber",
action: "in",
value: packingNumber
})
} else {
filters.push({
column: "packingNumber",
action: "==",
value: label.packingNumber
})
}
filters.push({ filters.push({
column: "itemCode", column: "itemCode",
action: "==", action: "==",
@ -472,8 +540,9 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
let record = { let record = {
scaned: true, scaned: true,
itemCode: balance.itemCode, itemCode: balance.itemCode,
packingNumber: balance.packingNumber, packingNumber: packageInfo.number,
batch: balance.batch, parentPackingNumber: packageInfo.parentNumber,
batch: packageInfo.batch,
qty: Number(balance.qty), qty: Number(balance.qty),
// qty: Number(label.qty)>Number(balance.qty)?Number(balance.qty):Number(label.qty), // qty: Number(label.qty)>Number(balance.qty)?Number(balance.qty):Number(label.qty),
uom: balance.uom, uom: balance.uom,
@ -567,10 +636,11 @@ import { getDirectoryItemArray } from '../../../common/directory.js';
let item = this.toLocation.Items.find(r => r.itemCode == record.itemCode); let item = this.toLocation.Items.find(r => r.itemCode == record.itemCode);
if (item != undefined) { if (item != undefined) {
item.Locations.forEach(l => { 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 == .packingNumber == null || b.packingNumber == '') && b.batch ==
record.batch); record.batch);
let rIndex = batch.Records.findIndex(r => r.packingNumber == record let rIndex = batch.Records.findIndex(r => r.packingNumber == record
.packingNumber && r .packingNumber && r
.batch == record.batch); .batch == record.batch);

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

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

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

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

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

@ -40,11 +40,12 @@
</view> </view>
<win-scan-button @goScan='openScanPopup'></win-scan-button> <win-scan-button @goScan='openScanPopup'></win-scan-button>
</view> </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> </win-scan-pack-and-location>
<comMessage ref="comMessage"></comMessage> <comMessage ref="comMessage"></comMessage>
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation' <win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation'
:locationAreaTypeList="fromLocationAreaTypeList"></win-scan-location> :locationAreaTypeList="fromLocationAreaTypeList"></win-scan-location>
<balance-select ref="balanceSelect" @onSelectItem='selectBalanceItem'></balance-select>
</view> </view>
</template> </template>
@ -52,7 +53,8 @@
import { import {
repleinshRecordSubmit, repleinshRecordSubmit,
validateItemAndLocation, validateItemAndLocation,
getPutawayRecommendLocation getPutawayRecommendLocation,
getBalanceByFilter
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
@ -92,6 +94,7 @@
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue" import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue" import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue' import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import balanceSelect from '@/mycomponents/balance/balanceSelect.vue'
export default { export default {
components: { components: {
@ -101,7 +104,8 @@
comBlankView, comBlankView,
winScanLocation, winScanLocation,
winScanPackAndLocation, winScanPackAndLocation,
recordComDetailCard recordComDetailCard,
balanceSelect
}, },
data() { data() {
return { return {
@ -118,7 +122,8 @@
recommendLocationList: [], // recommendLocationList: [], //
fromWarehouseCode: '', // fromWarehouseCode: '', //
businessTypeCode: "Repleinment", businessTypeCode: "Repleinment",
toLocationCode:"" toLocationCode:"",
resultData:{}
}; };
}, },
onLoad(option) { onLoad(option) {
@ -148,7 +153,141 @@
mounted() {}, mounted() {},
methods: { 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) { 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 balance = result.balance;
let label = result.label; let label = result.label;
let pack = result.package; let pack = result.package;
@ -166,6 +305,8 @@
var itemp = createItemInfo(balance, pack); var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); // let newDetail = createDetailInfo(balance, pack); //
newDetail.parentNumber =pack.parentNumber;
newDetail.packingNumber =pack.number
newDetail.packUnit =packUnit; newDetail.packUnit =packUnit;
newDetail.packQty=packQty; newDetail.packQty=packQty;
itemp.subList.push(newDetail); itemp.subList.push(newDetail);
@ -183,6 +324,8 @@
}) })
if (detail == undefined) { if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack); let newDetail = createDetailInfo(balance, pack);
newDetail.parentNumber =pack.parentNumber;
newDetail.packingNumber =pack.number
newDetail.packUnit =packUnit; newDetail.packUnit =packUnit;
newDetail.packQty=packQty; newDetail.packQty=packQty;
item.subList.push(newDetail); item.subList.push(newDetail);
@ -193,7 +336,6 @@
} }
} }
} }
}, },
showErrorMessage(message) { showErrorMessage(message) {
@ -334,8 +476,11 @@
{ {
toInventoryStatus:detail.inventoryStatus, toInventoryStatus:detail.inventoryStatus,
fromPackingNumber:info.packingNumber, fromPackingNumber:info.packingNumber,
fromParentPackingNumber: detail.parentNumber,
fromBatch:info.batch, fromBatch:info.batch,
toPackingNumber:info.packingNumber, toPackingNumber:info.packingNumber,
toBatch:info.batch, toBatch:info.batch,
fromLocationCode:detail.locationCode, fromLocationCode:detail.locationCode,
toLocationCode:detail.toLocationCode, toLocationCode:detail.toLocationCode,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1
src/store/modules/user.js

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

Loading…
Cancel
Save