Browse Source

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

# Conflicts:
#	static/config.json

Signed-off-by: hebaowu <hebao.wu@ccwin-in.com>
wms3.0_pda
hebaowu 9 months ago
parent
commit
d6b616df9f
  1. 2
      api/httpRequest3.js
  2. 4
      api/index.js
  3. 313
      api/request2.js
  4. 73
      common/basic.js
  5. 31
      common/directory.js
  6. 32
      common/label.js
  7. 40
      common/scan.js
  8. 1
      mycomponents/detail/comRequestDetailCard.vue
  9. 5
      mycomponents/location/requiredLocation.vue
  10. 47
      mycomponents/qty/CountQtyEdit.vue
  11. 16
      mycomponents/qty/compareQty.vue
  12. 117
      mycomponents/recommend/recommendCount.vue
  13. 3
      mycomponents/scan/winComScan.vue
  14. 2
      mycomponents/scan/winScanPack.vue
  15. 17
      pages.json
  16. 6
      pages/count/coms/comCountDetailCard.vue
  17. 17
      pages/count/coms/comCountJobCard.vue
  18. 23
      pages/count/coms/jobInfoPopup.vue
  19. 284
      pages/count/job/countDetail.vue
  20. 61
      pages/deliver/request/deliverRequestCreate.vue
  21. 2
      pages/index/index.vue
  22. 118
      pages/inspect/coms/inspectEdit.vue
  23. 6
      pages/inspect/coms/uploadCamera.vue
  24. 30
      pages/inspect/job/inspectDetail.vue
  25. 61
      pages/inspect/job/inspectFullDetail.vue
  26. 9
      pages/issue/coms/comIssueDetailCard.vue
  27. 10
      pages/issue/coms/comIssueRequestCreator.vue
  28. 10
      pages/issue/job/issueDetail.vue
  29. 8
      pages/issue/request/issueRequest.vue
  30. 3
      pages/issue/request/issueRequestCreate.vue
  31. 7
      pages/package/record/mergePackageRecord.vue
  32. 7
      pages/package/record/overPackageRecord.vue
  33. 5
      pages/package/record/splitPackageRecord.vue
  34. 7
      pages/pallet/record/unBindPalletRecord.vue
  35. 3
      pages/productDismantle/coms/requestInfoPopup.vue
  36. 6
      pages/productDismantle/job/productDismantleDetail.vue
  37. 7
      pages/productPutaway/job/productPutawayDetail.vue
  38. 71
      pages/productReceipt/coms/comProductDetailCard.vue
  39. 4
      pages/productReceipt/coms/comProductJobCard.vue
  40. 96
      pages/productReceipt/coms/productDetailInfoPopup.vue
  41. 89
      pages/productReceipt/job/productReceiptDetail.vue
  42. 2
      pages/productReceipt/job/productReceiptJob.vue
  43. 4
      pages/productionReceipt/job/productionReceiptDetail.vue
  44. 199
      pages/productionReturn/coms/comReturnRequestCreator.vue
  45. 4
      pages/productionReturn/coms/comReturnRequestInfo.vue
  46. 14
      pages/productionReturn/request/requestDetail.vue
  47. 24
      pages/productionReturn/request/returnRequestCreate.vue
  48. 2
      pages/purchaseReceipt/coms/comReceiptDetailCard.vue
  49. 4
      pages/purchaseReturn/record/returnRecord.vue
  50. 29
      pages/purchaseReturn/request/returnRequest.vue
  51. 356
      pages/purchaseReturn/request/returnRequestCreate.vue
  52. 8
      pages/putaway/job/putawayDetail.vue
  53. 60
      pages/repleinsh/coms/comScanReplishPack.vue
  54. 24
      pages/repleinsh/job/repleinshDetail.vue
  55. 5
      pages/scrap/coms/comScrapDetailCard.vue
  56. 12
      pages/scrap/coms/comScrapJobCard.vue
  57. 58
      pages/scrap/job/scrapJobDetail.vue
  58. 836
      pages/scrap/record/scrapRecord.vue
  59. 385
      pages/scrap/request/scrapRequestCreate.vue
  60. 131
      pages/scrap/request/scrapRrequest.vue
  61. 254
      pages/unPlanned/coms/comReceiptRequestPopup.vue
  62. 44
      pages/unPlanned/job/receiptJobDetail.vue
  63. 53
      pages/unPlanned/record/issueRecord.vue
  64. 55
      pages/unPlanned/record/receiptRecord.vue
  65. 130
      pages/unPlanned/request/issueRequest.vue
  66. 191
      pages/unPlanned/request/issueRequestCreate.vue
  67. 133
      pages/unPlanned/request/receiptRequest.vue
  68. 217
      pages/unPlanned/request/receiptRequestCreate.vue
  69. 3
      static/config.json

2
api/httpRequest3.js

@ -52,5 +52,7 @@ function service(options = {}) {
uni.request(options);
});
}
export default service;

4
api/index.js

@ -1226,3 +1226,7 @@ export const issueDirect = (params) => request(
data: params,
method: "post"
});

313
api/request2.js

@ -1,4 +1,5 @@
import request from '@/api/httpRequest3.js'
import storage from '@/common/utils/storage'
// const baseApi = "/api/admin-api"
//公司地址
// 本地地址
@ -624,7 +625,7 @@ export function getPurchaseReturnRequestDetail(id) {
*/
export function purchaseReturnRequestClose(id) {
return request({
url: baseApi + "/wms/purchasereturn-request-main/close?id="+id,
url: baseApi + "/wms/purchasereturn-request-main/close?id=" + id,
method: "put",
data: {},
});
@ -634,9 +635,9 @@ export function purchaseReturnRequestClose(id) {
* 采购退货申请 提交审批
* @param {*} params
*/
export function purchaseReturnRequestSubmitApprove(id) {
export function purchaseReturnRequestApprove(id) {
return request({
url: baseApi + "/wms/purchasereturn-request-main/submit?id="+id,
url: baseApi + "/wms/purchasereturn-request-main/submit?id=" + id,
method: "put",
data: {},
});
@ -646,9 +647,9 @@ export function purchaseReturnRequestSubmitApprove(id) {
* 采购退货申请 提交审批通过
* @param {*} params
*/
export function purchaseReturnRequestSubmitApproveAgree(id) {
export function purchaseReturnRequestApproveAgree(id) {
return request({
url: baseApi + "/wms/purchasereturn-request-main/agree?id="+id,
url: baseApi + "/wms/purchasereturn-request-main/agree?id=" + id,
method: "put",
data: {},
});
@ -658,9 +659,9 @@ export function purchaseReturnRequestSubmitApproveAgree(id) {
* 采购退货申请 审批驳回
* @param {*} params
*/
export function purchaseReturnRequestSubmitApproveRefused(id) {
export function purchaseReturnRequestApproveRefused(id) {
return request({
url: baseApi + "/wms/purchasereturn-request-main/refused?id="+id,
url: baseApi + "/wms/purchasereturn-request-main/refused?id=" + id,
method: "put",
data: {},
});
@ -672,7 +673,7 @@ export function purchaseReturnRequestSubmitApproveRefused(id) {
*/
export function purchaseReturnRequestHandle(id) {
return request({
url: baseApi + "/wms/purchasereturn-request-main/handle?id="+id,
url: baseApi + "/wms/purchasereturn-request-main/handle?id=" + id,
method: "put",
data: {},
});
@ -683,7 +684,7 @@ export function purchaseReturnRequestHandle(id) {
* 采购退货申请 提交
* @param {*} params
*/
export function purchaseReturnRequestSubmit(params) {
export function purchaseReturnRequestCreate(params) {
return request({
url: baseApi + "/wms/purchasereturn-request-main/create",
method: "post",
@ -1163,39 +1164,39 @@ export function getCountJobDetail(id) {
}
/**
* 盘点 任务承接
* 盘点任务 任务承接
* @param {*} id
*
*/
export function takeCountJob(id) {
return request({
url: baseApi + "/wms/purchasereceipt-job-main/accept?id=" + id,
url: baseApi + "/wms/count-job-main/accept?id=" + id,
method: "put",
data: {},
});
}
/**
* 盘点 放弃承接
* 盘点任务 放弃承接
* @param {*} id
*
*/
export function cancleTakeCountJob(id) {
return request({
url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id,
url: baseApi + "/wms/count-job-main/abandon?id=" + id,
method: "put",
data: {},
});
}
/**
* 盘点 任务提交
* 盘点任务 提交
* @param {*} 任务id
*
*/
export function countJobSubmit(params) {
return request({
url: baseApi + "/magic-api/pda/job/purchasereceipt/jobSubmit?id=" + id,
url: baseApi + "/wms/count-job-main/execute",
method: "put",
data: params,
});
@ -1270,17 +1271,78 @@ export function unPlannedReceiptJobSubmit(params) {
}
/**
* 计划外入库申请 提交
* 计划外入库申请 创建
* @param {*} params
*/
export function unPlannedReceiptRequestbSubmit(params) {
export function unPlannedReceiptRequestCreate(params) {
return request({
url: baseApi + "/magic-api/pda/job/purchasereturn/jobSubmit",
method: "put",
url: baseApi + "/wms/unplannedreceipt-request-main/create",
method: "post",
data: params,
});
}
/**
* 计划外入库申请 提交审批
* @param {*} params
*/
export function unPlannedReceiptRequestApprove(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/submit?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外入库申请 关闭
* @param {*} params
*/
export function unPlannedReceiptRequestClose(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/close?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外入库申请 审批通过
* @param {*} params
*/
export function unPlannedReceiptRequestApproveAgree(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/agree?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外入库申请 审批驳回
* @param {*} params
*/
export function unPlannedReceiptRequestApproveRefused(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/refused?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外入库申请 处理
* @param {*} params
*/
export function unPlannedReceiptRequestHandle(id) {
return request({
url: baseApi + "/wms/unplannedreceipt-request-main/handle?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外入库记录 提交
* @param {*} params
@ -1365,7 +1427,7 @@ export function unPlannedIssueJobSubmit(params) {
* 计划外出库申请 提交
* @param {*} params
*/
export function unPlannedIssueRequestSubmit(params) {
export function unPlannedIssueRequestCreate(params) {
return request({
url: baseApi + "/wms/unplannedissue-request-main/create",
method: "post",
@ -1373,6 +1435,67 @@ export function unPlannedIssueRequestSubmit(params) {
});
}
/**
* 计划外出库申请 提交审批
* @param {*} params
*/
export function unPlannedIssueRequestApprove(id) {
return request({
url: baseApi + "/wms/unplannedissue-request-main/submit?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外出库申请 关闭
* @param {*} params
*/
export function unPlannedIssueRequestClose(id) {
return request({
url: baseApi + "/wms/unplannedissue-request-main/close?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外出库申请 审批通过
* @param {*} params
*/
export function unPlannedIssueRequestApproveAgree(id) {
return request({
url: baseApi + "/wms/unplannedissue-request-main/agree?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外出库申请 审批驳回
* @param {*} params
*/
export function unPlannedIssueRequestApproveRefused(id) {
return request({
url: baseApi + "/wms/unplannedissue-request-main/refused?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外出库申请 处理
* @param {*} params
*/
export function unPlannedIssueRequestHandle(id) {
return request({
url: baseApi + "/wms/unplannedissue-request-main/handle?id=" + id,
method: "put",
data: {},
});
}
/**
* 计划外出库记录 提交
* @param {*} params
@ -1415,26 +1538,26 @@ export function getProductReceiptJobDetail(id) {
}
/**
* 制品收货 承接
* 制品收货任务 承接
* @param {*} id
*
*/
export function takeProductReceiptJob(id) {
return request({
url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id,
url: baseApi + "/wms/productreceipt-job-main/accept?id=" + id,
method: "put",
data: {},
});
}
/**
* 制品收货 放弃承接
* 制品收货任务 放弃承接
* @param {*} id
*
*/
export function cancleTakeProductReceiptJob(id) {
return request({
url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id,
url: baseApi + "/wms/productreceipt-job-main/abandon?id=" + id,
method: "put",
data: {},
});
@ -1446,7 +1569,7 @@ export function cancleTakeProductReceiptJob(id) {
*/
export function productReceiptJobsubmit(params) {
return request({
url: baseApi + "/magic-api/pda/job/purchasereturn/jobSubmit",
url: baseApi + "/wms/productreceipt-job-main/execute",
method: "put",
data: params,
});
@ -2129,7 +2252,7 @@ export function issueRequestSubmit(params) {
*/
export function issueRequestHandle(id) {
return request({
url: baseApi + "/wms/issue-request-main/handle?id="+id,
url: baseApi + "/wms/issue-request-main/handle?id=" + id,
method: "put",
data: {},
});
@ -2142,7 +2265,7 @@ export function issueRequestHandle(id) {
*/
export function issueRequestSubmitApprove(id) {
return request({
url: baseApi + "/wms/issue-request-main/submit?id="+id,
url: baseApi + "/wms/issue-request-main/submit?id=" + id,
method: "put",
data: {},
});
@ -2154,7 +2277,7 @@ export function issueRequestSubmitApprove(id) {
*/
export function issueRequestSubmitApproveAgree(id) {
return request({
url: baseApi + "/wms/issue-request-main/agree?id="+id,
url: baseApi + "/wms/issue-request-main/agree?id=" + id,
method: "put",
data: {},
});
@ -2166,7 +2289,7 @@ export function issueRequestSubmitApproveAgree(id) {
*/
export function issueRequestSubmitApproveRefused(id) {
return request({
url: baseApi + "/wms/issue-request-main/refused?id="+id,
url: baseApi + "/wms/issue-request-main/refused?id=" + id,
method: "put",
data: {},
});
@ -2178,7 +2301,7 @@ export function issueRequestSubmitApproveRefused(id) {
*/
export function issueRequestClose(id) {
return request({
url: baseApi + "/wms/issue-request-main/close?id="+id,
url: baseApi + "/wms/issue-request-main/close?id=" + id,
method: "put",
data: {},
});
@ -2465,7 +2588,7 @@ export function unPlannedReceiptRequestSubmit(params) {
/**
* 报废出库 任务
* 报废出库任务
* status 任务状态
* 开始日期
* 结束日期
@ -2498,7 +2621,7 @@ export function getScrapJobDetail(id) {
*/
export function takeScrapJob(id) {
return request({
url: baseApi + "/wms/purchasereceipt-job-main/accept?id=" + id,
url: baseApi + "/wms/scrap-job-main/accept?id=" + id,
method: "put",
data: {},
});
@ -2511,7 +2634,7 @@ export function takeScrapJob(id) {
*/
export function cancleTakeScrapJob(id) {
return request({
url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id,
url: baseApi + "/wms/scrap-job-main/abandon?id=" + id,
method: "put",
data: {},
});
@ -2524,7 +2647,7 @@ export function cancleTakeScrapJob(id) {
*/
export function scrapJobSubmit(params) {
return request({
url: baseApi + "/magic-api/pda/job/purchasereceipt/jobSubmit?id=" + id,
url: baseApi + "/wms/scrap-job-main/execute",
method: "put",
data: params,
});
@ -2560,17 +2683,77 @@ export function getScrapRequestDetail(id) {
}
/**
* 报废出库申请 提交
* 报废出库申请 创建
* @param {*} params
*/
export function scrapRequestSubmit(params) {
export function scrapRequestCreate(params) {
return request({
url: baseApi + "/wms/purchasereturn-request-main/submit",
method: "put",
url: baseApi + "/wms/scrap-request-main/create",
method: "post",
data: params,
});
}
/**
* 报废出库申请 提交审批
* @param {*} params
*/
export function scrapRequestApprove(id) {
return request({
url: baseApi + "/wms/scrap-request-main/submit?id=" + id,
method: "put",
data: {},
});
}
/**
* 报废出库申请 关闭
* @param {*} params
*/
export function scrapRequestClose(id) {
return request({
url: baseApi + "/wms/scrap-request-main/close?id=" + id,
method: "put",
data: {},
});
}
/**
* 报废出库申请 审批通过
* @param {*} params
*/
export function scrapRequestApproveAgree(id) {
return request({
url: baseApi + "/wms/scrap-request-main/agree?id=" + id,
method: "put",
data: {},
});
}
/**
* 报废出库申请 审批驳回
* @param {*} params
*/
export function scrapRequestApproveRefused(id) {
return request({
url: baseApi + "/wms/scrap-request-main/refused?id=" + id,
method: "put",
data: {},
});
}
/**
* 报废出库申请 审批驳回
* @param {*} params
*/
export function scrapRequestHandle(id) {
return request({
url: baseApi + "/wms/scrap-request-main/handle?id=" + id,
method: "put",
data: {},
});
}
/**
* 报废出库记录 提交
* @param {*} params
@ -2769,3 +2952,57 @@ export function getBalanceByFilter(param) {
data: param,
});
}
/**
* 删除文件
* @param {*}
*
*/
export function deleteFileById(id) {
return request({
url: baseApi + "/infra/file/delete?id=" + id ,
method: "delete",
data: {},
});
}
/**
* 获取文件列表
* @param {*}
*
*/
export function getFileList(tableName, tableId) {
return request({
url: baseApi + "/infra/file/list?tableName=" + tableName + "&tableId=" + tableId,
method: "get",
data: {},
});
}
/**
* 图片上传
* @param {*}
*
*/
export function uploadFile(tableName, tableId,filePath,callBack) {
var token = storage.getStorage(storage.constant.token)
var url = getApp().globalData.request_url+baseApi
uni.uploadFile({
url: url+"/infra/file/upload?tableName="+tableName + "&tableId=" + tableId,
filePath: filePath,
name: 'file',
header: {
"Authorization": "Bearer " + token,
"tenant-id": 1
},
success: (uploadFileRes) => {
callBack(uploadFileRes.data)
console.log(uploadFileRes.data);
},
fail: (error) => {
callBack(undefined)
},
});
}

73
common/basic.js

@ -715,6 +715,75 @@ export function getTodayDate() {
return startTime + "," + endTime;
}
export function getCurrDateOneMonthsTimes() {
var end = Date.now()
// var end = new Date('2019/12/31 15:18').getTime()
var day = 31
var enda = new Date(end);
var endm = enda.getMonth() + 1;
var d = enda.getDate();
if (endm == 4 || endm == 6 || endm == 9 || endm == 11) {
day = 30
} else {
if (d == 31) {
day = 30
}
if (endm == 7 || endm == 12) {
day = 31
}
}
if (endm == 1) {
var endy = enda.getFullYear();
day = 31
if (d == 31) {
day = 28
}
if (d == 30) {
day = 29
}
if (d == 29) {
day = 30
}
if (endy % 4 == 0) {
day = 31
if (d == 31) {
day = 29
}
if (d == 30) {
day = 30
}
if (d == 29) {
day = 31
}
}
}
if (endm == 2) {
var endy = enda.getFullYear();
day = 28
if (endy % 4 == 0) {
day = 29
}
}
var start = 1000 * 60 * 60 * 24 * day
var interval = end + start;
return interval;
}
export function getCurrDateTimes() {
var time = (new Date()).getTime();
return time;
}
export function getBatch() {
var date = new Date();
var year = date.getFullYear(); //年
var month = date.getMonth() + 1; //月
var day = date.getDate(); //日
var batch =year.toString()+month.toString()+day.toString()
return batch;
}
export function getCurrDate() {
var date = new Date();
return getDate(date);
@ -733,11 +802,11 @@ export function getISODateTime() {
//格式化处理
export function dateFormat(time) {
var result = ""
if(time!=null){
if (time != null) {
let date = new Date(time);
result = getDate(date) + " " + getTime(date);
}
return result;
}

31
common/directory.js

@ -9,6 +9,7 @@ let containerTypeList = [];
let packUnitList = [];
let requestStatusList = [];
let unplannedReceiptReasonList = [];
let unplannedIssueReasonList = [];
let unplannedIissueReason = [];
let scrapReasonList = [];
let inspectFailedReasonList = [];
@ -16,6 +17,8 @@ let nextActionList = [];
let inspectTypeList = [];
let sampleMethodList = [];
let transferModeList = [];
let countStageList = [];
// 获取业务类型字典项
@ -42,6 +45,7 @@ export function clearCacheData() {
packUnitList = [];
requestStatusList = [];
unplannedReceiptReasonList = [];
unplannedIssueReasonList=[];
unplannedIissueReason = [];
scrapReasonList = [];
inspectFailedReasonList = [];
@ -49,6 +53,7 @@ export function clearCacheData() {
inspectTypeList = [];
sampleMethodList =[];
transferModeList = [];
countStageList =[];
}
//获取字典信息
@ -329,7 +334,7 @@ export function getUnPlannedReceiptReasonList(value) {
}
unplannedReceiptReasonList.forEach(res => {
res.text = res.label;
res.value = res.code
res.value = res.value
})
return unplannedReceiptReasonList
}
@ -341,7 +346,7 @@ export function getUnPlannedIssuseReasonList(value) {
}
unplannedIssueReasonList.forEach(res => {
res.text = res.label;
res.value = res.code
res.value = res.value
})
return unplannedIssueReasonList
}
@ -353,7 +358,7 @@ export function getScarpReasonList(value) {
}
scrapReasonList.forEach(res => {
res.text = res.label;
res.value = res.code
res.value = res.value
})
return scrapReasonList
}
@ -434,6 +439,26 @@ export function getTransferModeName(value) {
return resultInfo
}
//获取盘点阶段名称
export function getCountStageName(value) {
var resultInfo = "";
if (countStageList.length == 0) {
countStageList = getDirectoryInfo("count_stage")
}
if (countStageList.length > 0) {
for (let item of countStageList) {
if (item.value == value) {
resultInfo = item.label
break;
}
}
}
return resultInfo
}

32
common/label.js

@ -14,7 +14,7 @@ export function getLabelInfo(scanMsg, callBack) {
let items = scanMsg.split(';');
let header = items[0];
let version = items[1];
if (header != '' && version != '') {
if ((header != undefined) && (version!=undefined)) {
//解析扫描的是一维码还是二维码
let type = header.substring(header.length - 1, header.length);
if (type == 'Q') //qrcode
@ -26,6 +26,18 @@ export function getLabelInfo(scanMsg, callBack) {
} else { //直接输入文本
getBarCodeInfo('text', 'V1.0', scanMsg, callBack);
}
}else {
let labelResult = {
label: {
labelType: "",
barType: '',
code:""
},
package: null,
success: false,
message: '标签格式不正确',
}
callBack(labelResult);
}
}
@ -38,12 +50,12 @@ export function getQRCodeInfo(header, version, scanMsg, callBack) {
barType: 'QRCode',
},
package: {},
sucess: true,
success: true,
message: ''
}
getLabelByHeader(header, version).then(res => {
if (res.data==null) {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = '未查找到标签头为[' + header + ']的标签类型';
callBack(labelResult);
} else {
@ -57,7 +69,7 @@ export function getQRCodeInfo(header, version, scanMsg, callBack) {
getLabelItems(newItem, scanMsg, callBack);
}
}).catch(err => {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = err;
callBack(err);
})
@ -74,7 +86,7 @@ export function getLabelItems(labelItem, scanMsg, callBack) {
if (packingNumber != undefined) {
getPackageByNumber(packingNumber).then(pack => {
if (pack.data.list.length == 0) {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = '包装号[' + packingNumber + ']没有包装信息';
} else {
labelResult.package = pack.data.list[0];
@ -82,12 +94,12 @@ export function getLabelItems(labelItem, scanMsg, callBack) {
}
callBack(labelResult);
}).catch(err => {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = err;
callBack(labelResult);
})
} else {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = '在条码中未解析到箱码';
callBack(labelResult);
}
@ -103,7 +115,7 @@ export function analysisQRCodeLabel(labelItem, scanMsg) {
barType: 'QRCode',
},
package: {},
sucess: true,
success: true,
message: ''
}
@ -112,7 +124,7 @@ export function analysisQRCodeLabel(labelItem, scanMsg) {
labelResult.message = "未读取到分隔符";
} else {
if (scanMsg.indexOf(separators) < 0) {
labelResult.sucess = false;
labelResult.success = false;
labelResult.message = "标签格式不正确";
} else {
try {
@ -153,7 +165,7 @@ export function getBarCodeInfo(header, version, value, callBack) {
code:value
},
package: null,
sucess: true,
success: true,
message: '',
}
callBack(labelResult);

40
common/scan.js

@ -13,12 +13,12 @@
//B:supplierBatch 供应商批次
//返回结果
//sucess true:成功 false:失败
//success true:成功 false:失败
//scanType barcode:条码 qrcode:二维码
//isPack true:箱码 false:托码
export function analyseScanInfo(scanMsg) {
let scanResult = {
sucess: false,
success: false,
message: "",
data: {
isPack: null,
@ -41,7 +41,7 @@ export function analyseScanInfo(scanMsg) {
console.log('1.扫描到的内容:', scanMsg);
//条码
if (scanMsg.indexOf(';') < 0) {
scanResult.sucess = true;
scanResult.success = true;
scanResult.data.code = scanMsg;
scanResult.data.scanType = 'barcode'; //条码
} else {
@ -107,15 +107,15 @@ export function analyseScanInfo(scanMsg) {
}
})
scanResult.sucess = true;
scanResult.success = true;
} else { //扫描的是条码,直接返回接收到的内容
scanResult.sucess = true;
scanResult.success = true;
scanResult.data.code = scanMsg;
scanResult.data.scanType = 'barcode';
}
}
} catch (ex) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "解析遇到异常" + ex.message;
}
}
@ -138,12 +138,12 @@ export function analyseScanInfo(scanMsg) {
//E:produceDate日期
//返回结果
//sucess true:成功 false:失败
//success true:成功 false:失败
//scanType barcode:条码 qrcode:二维码
//isPack true:箱码 false:托码
export function analyseProductLabelInfo(scanMsg) {
let scanResult = {
sucess: false,
success: false,
message: "",
data: {
itemCode: null,
@ -163,7 +163,7 @@ export function analyseProductLabelInfo(scanMsg) {
try {
//条码
if (scanMsg.indexOf(';') < 0) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签格式不正确";
} else {
let arrayItems = scanMsg.split(';');
@ -211,13 +211,13 @@ export function analyseProductLabelInfo(scanMsg) {
scanResult.data.produceDate = value;
break;
default:
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "无法识别的前缀" + type;
break;
}
scanResult.sucess = true;
scanResult.success = true;
} else {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签信息不能为空" + type;
}
}
@ -225,12 +225,12 @@ export function analyseProductLabelInfo(scanMsg) {
} else { //扫描的是条码,直接返回接收到的内容
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签分隔符错误";
}
}
} catch (ex) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "解析遇到异常" + ex.message;
}
}
@ -243,7 +243,7 @@ export function analyseProductLabelInfo(scanMsg) {
//1.序号1,2.生产号2546311FL,3.零件号254FL004,4.批序号202207110009
export function analyseTJMesQRCode(scanMsg) {
let scanResult = {
sucess: false,
success: false,
message: "",
items: []
};
@ -252,7 +252,7 @@ export function analyseTJMesQRCode(scanMsg) {
} else {
try {
if (scanMsg.indexOf(':') < 0) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签格式不正确";
} else {
let arrayItems = scanMsg.split(':');
@ -290,18 +290,18 @@ export function analyseTJMesQRCode(scanMsg) {
}
}
} else {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签信息不能为空";
}
})
scanResult.sucess = true;
scanResult.success = true;
} else { //扫描的是条码,直接返回接收到的内容
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "标签分隔符错误";
}
}
} catch (ex) {
scanResult.sucess = false;
scanResult.success = false;
scanResult.message = "解析遇到异常" + ex.message;
}
}

1
mycomponents/detail/comRequestDetailCard.vue

@ -75,7 +75,6 @@
watch: {
dataContent(newVal) {
var test =this.dataContent
debugger
this.requestItem = newVal.subList[0];
},
},

5
mycomponents/location/requiredLocation.vue

@ -59,7 +59,10 @@
},
methods: {
showLocation() {
this.$refs.scanLocationCode.openScanPopup();
if(this.isShowEdit){
this.$refs.scanLocationCode.openScanPopup();
}
},
//
getLocation(location, code) {

47
mycomponents/qty/CountQtyEdit.vue

@ -43,7 +43,7 @@
</view>
</view>
<u-line />
<view class="uni-flex uni-row space-between padding title u-col-center">
<view v-if="isShowBalance" class="uni-flex uni-row space-between padding title u-col-center">
<text>库存数量 : </text>
<view class="uni-flex uni-row uni-center" style="align-items: center;">
<text class="text_recommend">{{Number(dataContent.balanceQty)}}</text>
@ -52,7 +52,7 @@
</view>
<u-line />
<view v-if="isShowStatus" class="uni-flex uni-row space-between title"
style="align-items: center; padding-left: 20rpx;">
style="align-items: center; padding-left: 30rpx;">
<text>库存状态 : </text>
<view class="uni-flex uni-row uni-center" style="align-items: center;">
<balanceStatus ref="balanceStatus" :status="inventoryStatus" :allowEdit='false'
@ -102,7 +102,6 @@
stateData: 0,
balanceQty: 0,
inventoryStatus: "",
originalInventoryStatus: "",
dataContent: {},
handleQty: 0,
seconds: 0,
@ -131,6 +130,10 @@
type: Boolean,
default: true
},
isShowBalance: {
type: Boolean,
default: true
},
allowEditStatus: {
type: Boolean,
default: false
@ -139,8 +142,6 @@
methods: {
openEditPopup(item, detaiList) {
this.dataContent = item
// this.originalInventoryStatus = this.dataContent.inventoryStatus
// this.inventoryStatus = this.dataContent.toInventoryStatus
this.inventoryStatus = this.dataContent.inventoryStatus;
this.allQty = Number(this.dataContent.qty)
this.showConfirmCountdown = false;
@ -151,8 +152,6 @@
openEditPopupShowSeconds(item, detaiList) {
this.dataContent = item;
// this.originalInventoryStatus = this.dataContent.inventoryStatus
// this.inventoryStatus = this.dataContent.toInventoryStatus
this.inventoryStatus = this.dataContent.inventoryStatus;
this.allQty = Number(this.dataContent.qty);
this.showConfirmCountdown = true;
@ -179,7 +178,6 @@
this.setValue();
},
cancel() {
this.dataContent.inventoryStatus = this.originalInventoryStatus;
this.closeEditPopup();
},
startTimer() {
@ -197,42 +195,11 @@
this.allQty = val * this.dataContent.stdPackQty;
},
setValue() {
this.dataContent.qty = Number(this.allQty)
this.dataContent.handleQty = Number(this.allQty)
this.$emit("confirm");
this.closeEditPopup();
// this.callback();
},
callback() {
//
var item = this.detaiList.find(
detail => {
if (detail.record == undefined) {
if (detail.packingNumber == this.dataContent.packingNumber &&
detail.batch == this.dataContent.batch &&
detail.inventoryStatus == this.inventoryStatus) {
return detail;
}
} else {
if (detail.record.packingNumber == this.dataContent.packingNumber &&
detail.record.batch == this.dataContent.batch &&
detail.record.inventoryStatus == this.inventoryStatus) {
return detail;
}
}
})
if (item == undefined) {
this.dataContent.inventoryStatus = this.inventoryStatus
this.dataContent.qty = Number(this.allQty)
this.$emit("confirm");
this.closeEditPopup();
} else {
this.$refs.comMessage.showErrorMessage("箱码[" + item.packingNumber + "]批次[" + item.batch + "]" + "状态[" +
getInventoryStatusName(item.inventoryStatus) + "]已经在列表中", res => {
})
}
},
updateStatus(value) {
this.inventoryStatus = value
console.log(this.inventoryStatus)

16
mycomponents/qty/compareQty.vue

@ -13,13 +13,15 @@
<view v-else-if="Number(recommendQty) ==Number( handleQty)" class="text_equal">
{{Number(handleQty)}}
</view>
</view>
<view class="std_split">/</view>
<view class="text_recommend center">
{{Number(recommendQty)}}
</view>
<view v-if="Number(handleQty)>0 " class="std_split">/</view>
<view v-if="isShowRecommendQty" class="text_recommend center">
{{Number(recommendQty)}}
</view>
</view>
<uom v-show="!isShowStdPack" :uom="dataContent.uom"></uom>
<uom v-show="Number(handleQty)>0||(isShowRecommendQty&&Number(recommendQty)>0)" :uom="dataContent.uom"></uom>
</view>
<view>
<std-pack-qty v-show="isShowStdPack" :dataContent="dataContent"></std-pack-qty>
@ -71,6 +73,10 @@
isShowStdPack: {
type: Boolean,
default: true
},
isShowRecommendQty: {
type: Boolean,
default: true
}
},
watch: {

117
mycomponents/recommend/recommendCount.vue

@ -0,0 +1,117 @@
<template>
<view :class="detail.scaned?'scan_view':''" style="background-color: #ffffff;">
<view class="uni-flex uni-row space-between ">
<!-- uni-inline-item 暂时拿掉-->
<view>
<pack v-if="isShowPack" :packingCode="detail.packingNumber"></pack>
<batch v-if="isShowBatch" :batch="detail.batch"></batch>
<location v-if="isShowFromLocation" title="来源库位" :locationCode="detail.fromLocationCode">
</location>
<location v-if="isShowToLocation" title="目标库位" :locationCode="detail.toLocationCode">
</location>
</view>
<view>
<!-- <recommend-qty v-if="detail.handleQty==null || detail.handleQty==undefined" :dataContent="detail"
:isShowStdPack="false"></recommend-qty> -->
<compare-qty :dataContent="detail" :recommendQty="Number(detail.qty)" :isShowRecommendQty="isShowRecommendQty"
:handleQty="Number(detail.handleQty)" :isShowStdPack="false">
</compare-qty>
<view class="uni-flex uni-row" style="vertical-align:center">
<text style="font-size: 30rpx;color: #2979ff; "
@click="copy">复制采购</text>
<text style="font-size: 30rpx;color: #2979ff;" @click="copyPro">|制品</text>
</view>
</view>
</view>
</view>
</template>
<script>
import pack from '@/mycomponents/balance/pack.vue'
import location from '@/mycomponents/balance/location.vue'
import batch from '@/mycomponents/balance/batch.vue'
import recommendQty from '@/mycomponents/qty/recommendQty.vue'
import compareQty from '@/mycomponents/qty/compareQty.vue'
export default {
components: {
pack,
location,
batch,
recommendQty,
compareQty
},
data() {
return {
}
},
props: {
detail: {
type: Object,
default: {}
},
isShowPack: {
type: Boolean,
default: true
},
isShowBatch: {
type: Boolean,
default: true
},
isShowFromLocation: {
type: Boolean,
default: true
},
isShowToLocation: {
type: Boolean,
default: false
},
locationTitle: {
type: String,
default: '库位'
},
isShowRecommendQty:{
type: Boolean,
default: true
}
},
watch: {
},
methods: {
copy() {
// HPQ;V1.0;ICE115F11161AG;PP20230427000026;B20230427002;Q100
var content = "HPQ;V1.0;I" + this.detail.itemCode + ";P" + this.detail.packingNumber + ";B" + this.detail
.batch + ";Q" + this.detail.qty
this.$copyText(content).then(
res => {
uni.showToast({
title: '复制采购标签成功',
icon: 'none'
})
}
)
},
copyPro() {
// HPQ;V1.0;ICE115F11161AG;PP20230427000026;B20230427002;Q100
var content = "HMQ;V1.0;I" + this.detail.itemCode + ";P" + this.detail.packingNumber + ";B" + this.detail
.batch + ";Q" + this.detail.qty
this.$copyText(content).then(
res => {
uni.showToast({
title: '复制制品标签成功',
icon: 'none'
})
}
)
}
}
}
</script>
<style>
</style>

3
mycomponents/scan/winComScan.vue

@ -152,11 +152,12 @@
}
getLabelInfo(content, callback => {
let scanResult = callback;
if (scanResult.sucess) {
if (scanResult.success) {
that.clear();
// that.getfocus();//
that.$emit("getResult", scanResult);
} else {
that.clear();
this.$refs.comMessage.showErrorMessage(scanResult.message, res => {
if (res) {
that.getfocus();

2
mycomponents/scan/winScanPack.vue

@ -74,7 +74,7 @@
},
getScanResult(result) {
if (result.sucess) {
if (result.success) {
this.$emit("getResult", result);
} else {
this.showMessage(result.message)

17
pages.json

@ -111,6 +111,13 @@
"enablePullDownRefresh": false
}
},
{
"path": "pages/purchaseReturn/request/returnRequestCreate",
"style": {
"navigationBarTitleText": "采购退货申请创建",
"enablePullDownRefresh": true
}
},
{
"path": "pages/purchaseReturn/job/returnJob",
@ -149,6 +156,8 @@
// }
}
},
{
"path": "pages/purchaseReceipt/job/receiptJob",
"style": {
@ -1640,6 +1649,14 @@
"enablePullDownRefresh": false
}
},
{
"path": "pages/scrap/request/scrapRequestCreate",
"style": {
"navigationBarTitleText": "报废出库申请创建",
"enablePullDownRefresh": false
}
},
{
"path": "pages/pallet/record/bindPalletRecord",
"style": {

6
pages/count/coms/comCountDetailCard.vue

@ -14,7 +14,7 @@
<uni-swipe-action ref="swipeAction">
<uni-swipe-action-item @click="swipeClick($event,item)"
:right-options="item.scaned?scanOptions:detailOptions">
<recommend :detail="item" :isShowFromLocation="false"></recommend>
<recommendCount :detail="item" :isShowFromLocation="false" :isShowRecommendQty="settingParam.isOpenCount=='TRUE'"></recommendCount>
</uni-swipe-action-item>
</uni-swipe-action>
<u-line color="#D8D8D8"></u-line>
@ -28,7 +28,7 @@
<script>
import itemQty from '@/mycomponents/item/itemQty.vue'
import recommend from '@/mycomponents/recommend/recommend.vue'
import recommendCount from '@/mycomponents/recommend/recommendCount.vue'
import detailInfoPopup from '@/pages/count/coms/detailInfoPopup.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
@ -41,7 +41,7 @@
export default {
components: {
itemQty,
recommend,
recommendCount,
detailInfoPopup,
comMessage
},

17
pages/count/coms/comCountJobCard.vue

@ -9,7 +9,7 @@
<view class="task_text">
<view class="">
盘点阶段 : {{dataContent.stage}}
盘点阶段 : {{getCountStageName(dataContent.stage)}}
</view>
</view>
@ -18,11 +18,19 @@
盘点库位 : {{dataContent.locationCode}}
</view>
</view>
<view class="task_text">
<view class="">
盘点策略 : {{isOpenCount(dataContent.isOpenCount)}}
</view>
</view>
</view>
</job-com-main-card>
</template>
<script>
import {
getCountStageName
} from '@/common/directory.js';
import jobComMainCard from '@/mycomponents/job/jobComMainCard.vue'
export default {
components: {
@ -40,7 +48,12 @@
},
methods: {
getCountStageName(value){
return getCountStageName(value)
},
isOpenCount(value){
return value=="TRUE"?"明盘":"盲盘"
}
}
}
</script>

23
pages/count/coms/jobInfoPopup.vue

@ -6,12 +6,22 @@
<view class="uni-flex uni-column">
<view class="item">
<text class="item_title">计划单号 : </text>
<text class="text_wrap">{{dataContent.PlanNumber}} </text>
<text class="text_wrap">{{dataContent.planNumber}} </text>
</view>
<view class="item">
<text class="item_title">阶段 : </text>
<text class="text_wrap">{{dataContent.Stage}} </text>
<text class="text_wrap">{{getCountStageName(dataContent.stage)}} </text>
</view>
<view class="item">
<text class="item_title">库位 : </text>
<text class="text_wrap">{{dataContent.locationCode}} </text>
</view>
<view class="item">
<text class="item_title">盘点策略 : </text>
<text class="text_wrap">{{isOpenCount(dataContent.isOpenCount)}}</text>
</view>
</view>
</view>
</job-common-info>
@ -20,6 +30,9 @@
</template>
<script>
import {
getCountStageName
} from '@/common/directory.js';
import jobCommonInfo from '@/mycomponents/job/jobCommonInfo.vue'
export default {
components: {
@ -45,6 +58,12 @@
closePopup() {
this.$refs.popup.close()
},
getCountStageName(value) {
return getCountStageName(value)
},
isOpenCount(value) {
return value == "TRUE" ? "明盘" : "盲盘"
}
}
}
</script>

284
pages/count/job/countDetail.vue

@ -1,6 +1,27 @@
<template>
<view class="page-wraper">
<view class="page-header">
<view class="header_job_top">
<job-top :dataContent="jobContent"></job-top>
</view>
<view class="cen_card" style="padding-top: 10rpx;padding-bottom: 10rpx;">
<view class="cell_box uni-flex uni-row">
<view class="cell_info">
<view class="text_lightblue">阶段</view>
<view>{{getCountStageName(jobContent.stage)}}</view>
</view>
<view class="cell_info">
<view class="text_lightblue">策略</view>
<view>{{ isOpenCount(jobContent.isOpenCount) }}</view>
</view>
<view class="cell_info">
<view class="text_lightblue">库位</view>
<view>{{fromLocationCode}}</view>
</view>
</view>
</view>
</view>
<u-line color="#D8D8D8" style="margin-bottom: 15rpx;"></u-line>
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
@ -19,9 +40,6 @@
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class="">
<requiredLocation title="盘点库位" :locationCode="fromLocationCode" :isShowEdit="jobContent.allowModifyLocation==1"
@getLocation='scanLocationCode' :locationTypeList="locationTypeList"></requiredLocation>
<u-line></u-line>
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
@ -31,7 +49,8 @@
<win-scan-button @goScan='openScanPopup'></win-scan-button>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult'></win-scan-pack-and-location>
<count-qty-edit ref="CountQtyEdit" @confirm="editConfirm" :isShowStatus="false" :allowEditStatus="true">
<count-qty-edit ref="countQtyEdit" @confirm="editConfirm" :isShowStatus="true" :allowEditStatus="false"
:isShowBalance="jobContent.isOpenCount=='TRUE'">
</count-qty-edit>
<com-message ref="comMessage"></com-message>
</view>
@ -50,6 +69,9 @@
navigateBack,
getPackingNumberAndBatch
} from '@/common/basic.js';
import {
getCountStageName
} from '@/common/directory.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
@ -57,7 +79,8 @@
import comCountDetailCard from '@/pages/count/coms/comCountDetailCard.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import CountQtyEdit from '@/mycomponents/qty/CountQtyEdit.vue'
import countQtyEdit from '@/mycomponents/qty/countQtyEdit.vue'
import jobTop from '@/mycomponents/job/jobTop.vue'
export default {
name: 'receipt_detail',
@ -68,7 +91,8 @@
requiredLocation,
comMessage,
winScanPackAndLocation,
CountQtyEdit,
countQtyEdit,
jobTop
},
data() {
return {
@ -81,9 +105,6 @@
jobContent: {}, //
subList: [], //subList
detailSource: [], //
locationTypeList: [],
toLocationInfo: {},
businessTypeInfo: {},
itemEditInfo: {}
};
},
@ -91,15 +112,14 @@
this.id = option.id;
if (this.id != undefined) {
//
// if (option.status == "JOB_PENDING") {
// this.receive((callback => {
// this.received = true;
// this.getDetail();
// }));
// } else {
// this.getDetail();
// }
this.getDetail();
if (option.status == "1") {
this.receive((callback => {
this.received = true;
this.getDetail();
}));
} else {
this.getDetail();
}
}
},
//
@ -158,14 +178,11 @@
if (res.data == null) {
that.showMessage('未获取到详情');
} else {
if (res.data.subList.length > 0) {
that.jobContent = res.data;
that.fromLocationCode = that.jobContent.locationCode;
that.subList = res.data.subList;
that.detailSource = that.getDataSource(that.subList)
} else {
that.showErrorMessage('列表数据为0');
}
that.jobContent = res.data;
that.fromLocationCode = that.jobContent.locationCode;
that.subList = res.data.subList;
that.detailSource = that.getDataSource(that.subList)
this.calcHandleQty();
}
}).catch(error => {
@ -209,9 +226,8 @@
createDetailInfo(data) {
data.scaned = false;
// data.record = {};
let detail = data;
detail.balanceQty = detail.qty
detail.balanceQty = 0
detail.inventoryStatus = detail.inventoryStatus
detail.fromLocationCode = this.fromLocationCode
return detail;
@ -233,12 +249,8 @@
for (let item of this.detailSource) {
item.handleQty = 0;
for (let detail of item.subList) {
if (detail.scaned) {
if (detail.record != undefined) {
item.handleQty += Number(detail.record.qty)
} else {
item.handleQty += Number(detail.qty)
}
if (detail != undefined && detail.scaned) {
item.handleQty += Number(detail.qty)
}
}
}
@ -287,30 +299,19 @@
try {
var packingNumber = result.balance.packingNumber;
var batch = result.balance.batch;
var qty = result.balance.qty;
var balanceQty = result.balance.qty;
var itemCode = result.balance.itemCode;
var inventoryStatus = result.balance.inventoryStatus;
var detail = this.detailSource.find(r => r.itemCode == itemCode);
var itemEditInfo;
//
if (detail == undefined) {
//
this.addNewItemCodeToList(result)
} else {
//
// var itemDetail;
// var index;
// for (var i = 0; i < detail.subList.length; i++) {
// if (detail.subList[i].packingNumber == packingNumber &&
// detail.subList[i].batch == batch &&
// detail.subList[i].inventoryStatus == inventoryStatus) {
// index = i;
// itemDetail = detail.subList[i]
// break
// }
// }
this.itemEditInfo = detail.subList.find(item => {
itemEditInfo = detail.subList.find(item => {
if (item.packingNumber == packingNumber &&
item.batch == batch &&
item.inventoryStatus == inventoryStatus) {
@ -318,19 +319,18 @@
}
})
if (this.itemEditInfo == undefined) {
if (itemEditInfo == undefined) {
//
this.addExistItemCodeToList(detail, result);
} else {
//
if (this.itemEditInfo.scaned) {
if (itemEditInfo.scaned) {
this.$refs.comMessage.showSelectMessageModal("箱码【" + packingNumber +
"】已经完成盘点,是否要编辑数量",
res => {
// this.$.refs["countDetail_" + index][0].edit(itemDetail)
if (res) {
this.$refs.CountQtyEdit.openEditPopup(this.itemEditInfo.record,
this.$refs.countQtyEdit.openEditPopup(itemEditInfo,
detail.subList);
} else {
this.scanPopupGetFocus();
@ -338,12 +338,12 @@
})
} else {
// this.$.refs["countDetail_" + index][0].editSeconds(itemDetail)
this.itemEditInfo.scaned = true;
this.itemEditInfo.record = this.createRecordInfo(this.itemEditInfo);
this.itemEditInfo.record.stdPackQty = result.package.stdPackQty;
this.itemEditInfo.record.stdPackUnit = result.package.stdPackUnit;
this.$refs.CountQtyEdit.openEditPopupShowSeconds(this.itemEditInfo.record, detail
itemEditInfo.scaned = true;
itemEditInfo.handleQty = balanceQty;
itemEditInfo.balanceQty = balanceQty;
itemEditInfo.stdPackQty = result.package.stdPackQty;
itemEditInfo.stdPackUnit = result.package.stdPackUnit;
this.$refs.countQtyEdit.openEditPopupShowSeconds(itemEditInfo, detail
.subList);
this.updateData()
}
@ -361,7 +361,6 @@
if (res) {
var item = this.createAddItemInfo(result.balance, result.package);
let newDetail = this.createAddDetailInfo(result.balance, result.package); //
newDetail.record = this.createRecordInfo(newDetail);
item.subList.push(newDetail);
this.detailSource.push(item)
this.updateData()
@ -377,9 +376,7 @@
if (res) {
detail.qty += Number(detail.qty)
let newDetail = this.createAddDetailInfo(result.balance, result.package); //
newDetail.record = this.createRecordInfo(newDetail);
detail.subList.push(newDetail);
var test = this.detailSource;
this.updateData()
}
@ -395,55 +392,43 @@
qty: Number(balance.qty),
handleQty: 0,
uom: pack.uom,
subList: []
subList: [],
}
return item;
},
createAddDetailInfo(balance, pack) {
var detail = {
id: "0",
scaned: true,
balanceQty: balance.qty,
toInventoryStatus: balance.inventoryStatus,
fromLocationCode: balance.locationCode,
id: "",
countDetailNumber: "",
ownerCode: balance.OwnerCode,
ownerCode: balance.ownerCode,
packingNumber: balance.packingNumber,
containerNumber: pack.ContainerNumber,
containerNumber: pack.containerNumber,
batch: balance.batch,
inventoryStatus: balance.inventoryStatus,
itemCode: balance.itemCode,
itemCode: pack.itemCode,
itemName: pack.itemName,
itemDesc1: pack.itemDesc1,
itemDesc2: pack.itemDesc2,
stdPackQty: pack.stdPackQty,
stdPackUnit: pack.stdPackUnit,
projectCode: "",
qty: balance.qty,
qty: 0,
handleQty: balance.qty,
uom: balance.uom,
masterID: "",
number: "",
number: this.jobContent.number,
remark: "",
creationTime: "",
creatorId: "",
creatorName: "",
siteId: ""
countQty: balance.qty,
balanceQty: balance.qty,
fromLocationCode: balance.locationCode,
stdPackQty: pack.stdPackQty,
stdPackUnit: pack.stdPackUnit,
creator:this.$store.state.user.id
}
return detail;
},
createRecordInfo(detail) {
var record = {}
detail.scaned = true;
// let record = JSON.parse(JSON.stringify(detail));
//
Object.assign(record, detail)
record.fromLocationCode = this.fromLocationCode;
return record;
},
scanLocationCode(location, code) {
this.$refs.comMessage.showQuestionMessage("是否把所有的目标库位都变成默认库位[" + code + "]", res => {
this.toLocationCode = code
@ -456,19 +441,59 @@
},
getScanCount() {
var scanCount = 0;
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
scanCount = scanCount + 1;
}
})
})
return scanCount;
},
getTotalCount() {
var totalCount = 0;
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
totalCount = totalCount + 1;
})
})
return totalCount;
},
commit() {
if (this.scanCount == this.subList.length) {
this.scanCount = this.getScanCount();
if (this.scanCount == this.getTotalCount()) {
this.submitJob();
} else if (this.scanCount < this.subList.length) {
} else if (this.scanCount < this.getTotalCount()) {
//
if (this.jobContent.allowPartialComplete == "TRUE") {
//
this.submitJob();
this.$refs.comMessage.showQuestionMessage("已经扫描[" + this.scanCount +
"]总共[" + this
.getTotalCount() + "],是否把未扫描的盘点数量设置为0?",
res => {
if (res) {
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (!detail.scaned) {
detail.countQty = 0;
}
})
})
this.submitJob();
}
});
} else {
//
this.$refs.comMessage.showErrorMessage('请完成扫描后,再进行提交<br>' + "已经扫描[" + this.scanCount +
"]箱总共[" + this
.subList.length + "]箱", res => {
"]总共[" + this
.getTotalCount() + "]", res => {
if (res) {
this.openScanPopup();
}
@ -477,59 +502,41 @@
}
},
submitJob() {
submitJob() {
uni.showLoading({
title: "提交中....",
mask: true
});
var itemCodes = []
this.detailSource.forEach(item => {
itemCodes.push(item.itemCode)
var params = this.setParams()
console.log("提交参数", JSON.stringify(params));
countJobSubmit(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成盘点记录<br>" + res.data)
} else {
this.showErrorMessage("提交失败[" + res.msg + "]")
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
//
// getManagementPrecisions(itemCodes, this.toLocationCode, res => {
// if (res.success) {
// this.managementList = res.list;
// var params = this.setParams()
// console.log("", JSON.stringify(params));
// // var params = this.getParams();
// // countJobSubmit(this.id, params).then(res => {
// // if (res.data) {
// // this.showCommitSuccessMessage("<br>" + res.data.Number, )
// // } else {
// // this.showErrorMessage("[" + res.msg + "]")
// // }
// // uni.hideLoading()
// // }).catch(error => {
// // uni.hideLoading()
// // this.showErrorMessage(error)
// // })
// } else {
// uni.hideLoading();
// this.showErrorMessage(res.message);
// }
// });
},
setParams() {
var subList = []
var creator = this.$store.state.user.id
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
detail.packingNumber, detail.batch);
detail.toPackingNumber = info.packingNumber;
detail.toBatch = info.batch;
subList.push(detail)
detail.countQty = detail.handleQty;
}
subList.push(detail)
})
})
this.jobContent.subList = subList
this.jobContent.creator = creator;
return this.jobContent;
@ -564,8 +571,8 @@
},
editItem(item) {
var detail = this.detailSource.find(r => r.itemCode == item.record.itemCode);
this.$refs.CountQtyEdit.openEditPopup(item.record,
var detail = this.detailSource.find(r => r.itemCode == item.itemCode);
this.$refs.countQtyEdit.openEditPopup(item,
detail.subList);
},
@ -573,7 +580,14 @@
this.$refs.comMessage.showSuccessMessage(hint, res => {
navigateBack(1);
})
},
getCountStageName(value) {
return getCountStageName(value)
},
isOpenCount(value) {
return value == "TRUE" ? "明盘" : "盲盘"
}
}
}

61
pages/deliver/request/deliverRequestCreate.vue

@ -64,7 +64,7 @@
detailOptions: [],
scanOptions: [],
fromType: "",
dataContent:{}
dataContent: {}
}
},
@ -167,39 +167,38 @@
},
setRequestParams(){
setRequestParams() {
var subList = []
this.detailSource.subList.forEach(detail => {
debugger
detail.soNumber = detail.package.soNumber;
detail.soLine = detail.package.soLine;
detail.remark =""
// soNumber: 926926926,
// soLine: 926,
// itemCode: THILDD0A691AG,
// remark: ,
// qty: 2,
// uom: EA
subList.push(detail)
detail.soNumber = detail.package.soNumber;
detail.soLine = detail.package.soLine;
detail.remark = ""
// soNumber: 926926926,
// soLine: 926,
// itemCode: THILDD0A691AG,
// remark: ,
// qty: 2,
// uom: EA
subList.push(detail)
})
this.detailSource.subList = subList
this.detailSource.deliverPlanNumber = "DP20231130-0001"
this.detailSource.customerCode = this.detailSource.customerCode
this.detailSource.customerDockCode = ""
this.detailSource.carrierCode = ""
this.detailSource.transferMode = ""
this.detailSource.vehiclePlateNumber = ""
this.detailSource.remark = ""
this.detailSource.dueTime = ""
this.detailSource.departmentCode = "研发部门"
this.detailSource.status = 1
this.detailSource.autoCommit = "FALSE"
this.detailSource.autoAgree = "FALSE"
this.detailSource.autoExecute = "FALSE"
this.detailSource.directCreateRecord = "FALSE"
this.detailSource.subList = subList
this.detailSource.deliverPlanNumber = "DP20231130-0001"
this.detailSource.customerCode = this.detailSource.customerCode
this.detailSource.customerDockCode = ""
this.detailSource.carrierCode = ""
this.detailSource.transferMode = ""
this.detailSource.vehiclePlateNumber = ""
this.detailSource.remark = ""
this.detailSource.dueTime = ""
this.detailSource.departmentCode = "研发部门"
this.detailSource.status = 1
this.detailSource.autoCommit = "FALSE"
this.detailSource.autoAgree = "FALSE"
this.detailSource.autoExecute = "FALSE"
this.detailSource.directCreateRecord = "FALSE"
return this.detailSource;
},
showCommitSuccessMessage(hint) {

2
pages/index/index.vue

@ -272,7 +272,7 @@
types:["job_status","location_type","item_status","uom",
"inventory_status","container_type","pack_unit","unplanned_receipt_reason",
"unplanned_issue_reason","scrap_reason","inspect_failed_reason",
"request_status","inspect_type","next_action","sample_method","transfer_mode"]
"request_status","inspect_type","next_action","sample_method","transfer_mode","count_stage"]
}
getDictionaryItem(params).then(res => {
if (res.data.length > 0) {

118
pages/inspect/coms/inspectEdit.vue

@ -1,6 +1,6 @@
<template>
<view class="">
<uni-popup ref="editPopup" class="nopadpop camera_pop">
<uni-popup ref="editPopup" class="nopadpop camera_pop" :maskClick="false">
<view class="uni-list popuni_list camera_list">
<view class="list_cell uni-flex uni-row space-between">
<view class="title">箱码</view>
@ -49,8 +49,8 @@
</view>
</view>
<uploadCamera ref="uploadImage" style="margin: 10rpx;" :disabled="disabled"></uploadCamera>
<uploadCamera ref="uploadImage" style="margin: 10rpx;" :disabled="disabled" @delete="deleteImg"
@select="select"></uploadCamera>
</view>
<view class="pop_btn uni-flex uni-row space-between" v-if="!disabled">
<button class="cancel" @click="back">返回</button>
@ -65,6 +65,12 @@
import {
getInspectFailedReasonList,
} from '@/common/directory.js';
import {
uploadFile,
getFileList,
deleteFileById
} from '@/api/request2.js';
import comMessage from '@/mycomponents/common/comMessage.vue'
import uploadCamera from '@/pages/inspect/coms/uploadCamera.vue'
import uom from '@/mycomponents/qty/uom.vue'
@ -81,7 +87,8 @@
failedReasonIndex: 0,
failedReasonArray: [],
dataContent: {},
failedReasonArray: []
failedReasonArray: [],
picInfoList: []
}
},
props: {
@ -101,11 +108,93 @@
this.failedReasonArray = getInspectFailedReasonList();
//
this.dataContent = Object.assign({}, item)
this.getFileList();
this.$refs['editPopup'].open("bottom");
},
getFileList() {
getFileList("jobInspectDetail", this.dataContent.id).then(res => {
if(res.data){
var imageFiles = [];
res.data.forEach(item=>{
var image = this.createImage(item.id, item.url, item.path, item.size)
imageFiles.push(image)
})
}
if (imageFiles.length > 0) {
this.$nextTick(function() {
this.$refs.uploadImage.setFiles(imageFiles);
this.setPhotosInfo();
})
}
})
},
setPhotosInfo(){
var list = this.$refs.uploadImage.getFiles()
var photoItem = "";
for (var i = 0; i < list.length; i++) {
if (list.length - 1 == i) {
photoItem = photoItem + list[i].url
} else {
photoItem = photoItem + list[i].url + ","
}
}
this.dataContent.photos = photoItem;
},
createImage(id, url, fileName, size) {
let image = {
id: id,
name: fileName,
extname: "png",
fileType: "image",
url: url,
size: size,
image: {
width: 175,
height: 175,
location: url,
},
path: url,
progress: 100,
status: "ready"
}
return image;
},
deleteImg(content) {
var id = content.id
if (id != undefined) {
deleteFileById(id).then(res => {
if (res.data) {
uni.showToast({
title: "删除成功"
})
}
}).catch(error => {
console.log(error)
})
} else {
this.getFileList();
}
},
select(content) {
this.uploadFile(content);
},
back() {
this.$refs['editPopup'].close();
this.afterSave()
},
maskClick() {
},
afterSave() {
@ -119,6 +208,8 @@
}
});
},
save() {
var failedQty = Number(this.dataContent.failedQty);
var crackQty = Number(this.dataContent.crackQty);
@ -137,13 +228,26 @@
}
this.dataContent.failedQty = failedQty;
this.dataContent.crackQty = crackQty
this.dataContent.goodQty = this.dataContent.handleQty -failedQty-crackQty
this.dataContent.goodQty = this.dataContent.handleQty - failedQty - crackQty
this.afterSave()
},
uploadFile(content) {
uploadFile("jobInspectDetail", this.dataContent.id, content.path, res => {
if (res != undefined) {
uni.showToast({
title: "上传成功"
})
} else {
uni.showToast({
title: "上传失败"
})
}
this.getFileList();
})
}
}
}
</script>

6
pages/inspect/coms/uploadCamera.vue

@ -33,12 +33,14 @@
},
//
select(e) {
console.log('选择文件:', e)
// console.log('', e)
this.$emit("select",e.tempFiles[0])
},
//
deleteImg(e) {
console.log('删除:', e)
// console.log('', e)
this.$emit("delete",e.tempFile)
},
//

30
pages/inspect/job/inspectDetail.vue

@ -39,8 +39,9 @@
takeInspectJob,
cancleTakeInspectJob,
getInspectJobDetail,
getBasicLocationByCode,
inspectJobSubmit
inspectJobSubmit,
deleteFileById,
getFileList
} from '@/api/request2.js';
import {
goHome,
@ -135,6 +136,7 @@
}
},
onPullDownRefresh() {
this.getDetail();
@ -145,6 +147,29 @@
},
methods: {
deleteFileById(id){
deleteFileById(id).then(res=>{
})
},
getFileList(id){
getFileList("jobInspectDetail", id).then(res => {
if(res.data){
res.data.forEach(res=>{
this.deleteFileById(res.id)
})
}
})
},
clearPicList(subList){
subList.forEach(item=>{
this.getFileList(item.id)
})
},
//
receive(callback) {
uni.showLoading({
@ -179,6 +204,7 @@
that.jobContent.failedQty = this.failedQty
that.jobContent.crackQty = this.crackQty;
that.subList = res.data.subList;
this.clearPicList(that.subList);
that.subList.forEach(res => {
res.batch = that.jobContent.batch
res.goodQty = 0;

61
pages/inspect/job/inspectFullDetail.vue

@ -39,8 +39,9 @@
takeInspectJob,
cancleTakeInspectJob,
getInspectJobDetail,
getBasicLocationByCode,
inspectJobSubmit
inspectJobSubmit,
deleteFileById,
getFileList
} from '@/api/request2.js';
import {
goHome,
@ -147,6 +148,27 @@
},
methods: {
deleteFileById(id){
deleteFileById(id).then(res=>{
})
},
getFileList(id){
getFileList("jobInspectDetail", id).then(res => {
if(res.data){
res.data.forEach(res=>{
this.deleteFileById(res.id)
})
}
})
},
clearPicList(subList){
subList.forEach(item=>{
this.getFileList(item.id)
})
},
//
receive(callback) {
uni.showLoading({
@ -182,6 +204,7 @@
this.jobContent.crackQty = 0;
this.jobContent.notPassedQty = 0;
that.subList = res.data.subList;
this.clearPicList(that.subList);
that.subList.forEach(res => {
res.batch = that.jobContent.batch
res.goodQty = 0;
@ -330,23 +353,23 @@
commit() {
this.scanCount = getScanCount(this.subList);
if (this.scanCount == 0) {
this.showErrorMessage("扫描数为0,请先扫描")
return;
// if (this.scanCount == 0) {
// this.showErrorMessage("0,")
// return;
// }
//-------:nxt 20231213
if (this.jobContent.allowPartialComplete == "TRUE") {
this.submitJob();
} else {
//
this.$refs.comMessage.showErrorMessage('请完成扫描后,再进行提交<br>' + "已经扫描[" + this.scanCount +
"]箱总共[" + this
.subList.length + "]箱", res => {
if (res) {
this.openScanPopup();
}
});
}
//
if (this.scanCount == this.subList.length) {
this.submitJob();
} else {
//
this.$refs.comMessage.showErrorMessage('请完成扫描后,再进行提交<br>' + "已经扫描[" + this.scanCount +
"]箱总共[" + this
.subList.length + "]箱", res => {
if (res) {
this.openScanPopup();
}
});
}
},
submitJob() {
@ -455,7 +478,7 @@
list.push(detail)
})
})
this.jobContent.notPassedQty = Number(this.jobContent.failedQty)+ Number(this.jobContent.crackQty)
this.jobContent.notPassedQty = Number(this.jobContent.failedQty) + Number(this.jobContent.crackQty)
this.jobContent.subList = list
this.jobContent.nextAction = "PARTIAL_OK";
return this.jobContent;

9
pages/issue/coms/comIssueDetailCard.vue

@ -8,8 +8,9 @@
<uni-collapse-item :open="true">
<template v-slot:title>
<!-- 物品 -->
<u-line />
<item-qty :dataContent="item" :handleQty="item.handleQty"></item-qty>
<!-- <com-issue-request-info :workShopCode="dataContent.workShopCode" :dataContent="dataContent">
<!-- <com-issue-request-info :workShopCode="dataContent.workShopCode" :dataContent="dataContent">
</com-issue-request-info> -->
</template>
<u-line />
@ -21,8 +22,8 @@
</location>
</view>
<view v-for="(batch,index) in loacation.Batchs">
<recommend-balance style='margin-left: 20px;' :detail="batch"
:isShowLocation="false" :isShowPack="batch.packingNumber!=null && batch.packingNumber!=''">
<recommend-balance style='margin-left: 20px;' :detail="batch" :isShowLocation="false"
:isShowPack="batch.packingNumber!=null && batch.packingNumber!=''">
</recommend-balance>
<view class="uni-flex uni-row" v-if='batch.Records.length>0'>
<view class="center " style=" width: 20px; color: #0CC2B6; margin-left: 40px;">
@ -140,7 +141,7 @@
let that = this;
that.editItem = item;
that.batchItem = batch;
item.balance.balanceQty=item.balance.qty;
item.balance.balanceQty = item.balance.qty;
that.$refs.balanceQtyEdit.openEditPopup(item.balance, item.qty);
},

10
pages/issue/coms/comIssueRequestCreator.vue

@ -71,9 +71,13 @@
},
},
watch: {
dataContent(newVal) {
this.requestItem = newVal.subList[0];
},
dataContent: {
handler(newval, oldval) {
this.requestItem = this.dataContent.subList[0];
},
immediate: true,
deep: true
}
},
data() {

10
pages/issue/job/issueDetail.vue

@ -13,7 +13,7 @@
<view v-for="(toLocation, index) in detailSource">
<com-issue-request-info :workShopCode="jobContent.workShopCode" :dataContent="toLocation">
</com-issue-request-info>
<u-line />
<!-- <u-line /> -->
<com-issue-detail-card ref='comIssueDetailCard' :dataContent="toLocation" @updateData='updateData'>
</com-issue-detail-card>
</view>
@ -140,7 +140,6 @@
methods: {
resizeCollapse() {
this.$nextTick(r => {
// debugger;
this.$refs.comIssueDetailCard.forEach(r => {
r.resizeCollapse();
})
@ -291,6 +290,13 @@
batch.Records.forEach(r => {
let record = {};
record.handleQty = r.qty;
record.fromPackingNumber = r
.packingNumber;
record.fromBatch = r.batch;
record.fromContainerNumber = r
.ContainerNumber;
record.toContainerNumber = r
.ContainerNumber;
record.toInventoryStatus = r

8
pages/issue/request/issueRequest.vue

@ -373,18 +373,10 @@
},
requestConfirmsss(action, item) {
debugger;
uni.navigateTo({
url: './issueRequestDetail?type=add&item=' + item.id
});
}
// requestConfirm(action, item) {
// debugger;
// uni.navigateTo({
// url: './issueRequestDetail?type=add&item=' + item.id
// });
// }
}
</script>

3
pages/issue/request/issueRequestCreate.vue

@ -36,7 +36,7 @@
goHome,
updateTitle,
getRemoveOption,
getISODateTime
getCurrDateOneMonthsTimes
} from '@/common/basic.js';
import {
@ -150,6 +150,7 @@
setParams() {
this.detailSource.dueTime = getCurrDateOneMonthsTimes();
return this.detailSource
},
submit() {

7
pages/package/record/mergePackageRecord.vue

@ -44,10 +44,13 @@
<script>
import {
goHome,
goHome
} from '@/common/basic.js';
import {
getInventoryStatusDesc,
getDirectoryItemArray
} from '@/common/basic.js';
} from '@/common/directory.js';
import {
getBusinessType,

7
pages/package/record/overPackageRecord.vue

@ -41,10 +41,13 @@
<script>
import {
goHome,
goHome
} from '@/common/basic.js';
import {
getInventoryStatusDesc,
getDirectoryItemArray
} from '@/common/basic.js';
} from '@/common/directory.js';
import {
getBusinessType,

5
pages/package/record/splitPackageRecord.vue

@ -41,9 +41,12 @@
<script>
import {
goHome,
} from '@/common/basic.js';
import {
getInventoryStatusDesc,
getDirectoryItemArray
} from '@/common/basic.js';
} from '@/common/directory.js';
import {
getBusinessType,

7
pages/pallet/record/unBindPalletRecord.vue

@ -47,9 +47,12 @@
getContainerDetailByNumber
} from '@/api/request.js';
import {
goHome,
getDirectoryItemArray
goHome
} from '@/common/basic.js';
import {
getDirectoryItemArray
} from '@/common/directory.js';
import {
getBusinessType,

3
pages/productDismantle/coms/requestInfoPopup.vue

@ -45,10 +45,11 @@
<script>
import {
dateFormat,
getDirectoryItemArray,
} from '@/common/basic.js';
import {
getDirectoryItemArray,
getInventoryStatusDesc,
getLocationTypeNameList
} from '@/common/directory.js';

6
pages/productDismantle/job/productDismantleDetail.vue

@ -64,8 +64,12 @@
getCurrDateTime,
navigateBack,
getPackingNumberAndBatch,
getInventoryStatusName,
} from '@/common/basic.js';
import {
getInventoryStatusName
} from '@/common/directory.js';
import {
getLocationTypeArray
} from '@/common/array.js';

7
pages/productPutaway/job/productPutawayDetail.vue

@ -64,8 +64,13 @@
getCurrDateTime,
navigateBack,
getPackingNumberAndBatch,
getInventoryStatusName,
} from '@/common/basic.js';
import {
getInventoryStatusName,
getInventoryStatusDesc,
getDirectoryItemArray
} from '@/common/directory.js';
import {
getLocationTypeArray
} from '@/common/array.js';

71
pages/productReceipt/coms/comProductDetailCard.vue

@ -3,47 +3,54 @@
<uni-collapse ref="collapse1" @change="">
<uni-collapse-item :open="true">
<template v-slot:title>
<item-qty :dataContent="dataContent" :handleQty="dataContent.handleQty"></item-qty>
<itemCompareQty :dataContent="dataContent" :handleQty="dataContent.handleQty"></itemCompareQty>
</template>
<u-line />
<view class="" v-for="(item,index) in dataContent.subList">
<uni-swipe-action ref="swipeAction">
<uni-swipe-action-item @click="swipeClick($event,item)"
:right-options="item.scaned?scanOptions:detailOptions">
<recommend :detail="item" :record="item.record"
:isShowLocation="false"></recommend>
<recommend :detail="item" :isShowFromLocation="false" :isShowToLocation="settingParam.allowModifyLocation=='TRUE'"></recommend>
</uni-swipe-action-item>
</uni-swipe-action>
<u-line color="#D8D8D8"></u-line>
</view>
</uni-collapse-item>
</uni-collapse>
<recommend-qty-edit ref="qtyEdit" :dataContent="editItem" :settingParam="settingParam"
:handleQty="editItem.record.qty" @confirm="confirm">
<recommend-qty-edit ref="receiptEdit" :dataContent="editItem" :settingParam="settingParam"
@confirm="confirm">
</recommend-qty-edit>
<job-detail-popup ref="receiptHint" :dataContent="showItem"></job-detail-popup>
<comMessage ref="message"></comMessage>
<win-scan-location ref="scanLocationCode" title="目标库位" @getLocation='getLocation'
:locationTypeList="locationTypeList"></win-scan-location>
<productDetailInfoPopup ref="jobDetailPopup" :dataContent="showItem"></productDetailInfoPopup>
<com-message ref="message"></com-message>
</view>
</template>
<script>
import itemQty from '@/mycomponents/item/itemQty.vue'
import itemCompareQty from '@/mycomponents/item/itemCompareQty.vue'
import recommend from '@/mycomponents/recommend/recommend.vue'
import recommendQtyEdit from '@/mycomponents/qty/recommendQtyEdit.vue'
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
import jobDetailPopup from '@/mycomponents/detail/jobDetailPopup.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import productDetailInfoPopup from '@/pages/productReceipt/coms/productDetailInfoPopup.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import {
getDetailOption,
getDetailEditRemoveOption
getPurchaseReceiptOption
} from '@/common/array.js';
export default {
components: {
itemQty,
itemCompareQty,
recommend,
recommendQtyEdit,
jobDetailPopup,
comMessage
productDetailInfoPopup,
comMessage,
winScanLocation
},
props: {
dataContent: {
@ -54,6 +61,12 @@
type: Object,
default: {}
},
locationTypeList: {
type: Array,
default: []
},
},
watch: {
@ -61,22 +74,25 @@
data() {
return {
option: [],
title: "推荐详情",
showItem: {},
editItem: {
record: {
}
},
locatonItem:{},
detailOptions: [],
scanOptions: []
}
},
mounted() {
this.detailOptions = getDetailOption();
this.scanOptions = getDetailEditRemoveOption();
if (this.detailOptions.length == 0) {
this.detailOptions = getDetailOption();
}
if (this.scanOptions.length == 0) {
this.scanOptions = getPurchaseReceiptOption(this.settingParam.allowModifyQty,this.settingParam.allowModifyLocation)
}
},
methods: {
@ -85,34 +101,43 @@
this.detail(item)
} else if (e.content.text == "编辑") {
this.edit(item)
} else if (e.content.text == "库位") {
this.showLocation(item)
} else if (e.content.text == "移除") {
this.remove(item)
}
},
edit(item) {
this.editItem = item;
this.$refs.qtyEdit.openTaskEditPopup(item.qty,item.record.label.qty);
// this.$refs.receiptEdit.openEditPopup();
this.$refs.receiptEdit.openTaskEditPopup(item.qty, item.handleQty,item.labelQty);
},
showLocation(item) {
this.locatonItem =item;
this.$refs.scanLocationCode.openScanPopup();
},
//
getLocation(location, code) {
this.locatonItem.toLocationCode =code;
this.$emit('updateData')
},
detail(item) {
this.showItem = item;
this.$refs.receiptHint.openScanPopup()
this.$refs.jobDetailPopup.openPopup(item)
},
remove(item) {
this.$refs.message.showQuestionMessage("确定移除扫描信息?",
res => {
if (res) {
item.isScaned = false
item.record = {}
// item.record.qty = 0;
item.scaned = false
item.handleQty = null
this.$forceUpdate()
this.$emit('remove', item)
}
});
},
confirm(qty) {
this.editItem.record.qty = qty;
this.editItem.handleQty = qty;
this.$emit('updateData')
}
}

4
pages/productReceipt/coms/comProductJobCard.vue

@ -9,13 +9,13 @@
<view class="task_text">
<view class="">
物品代码 : {{dataContent.itemCode}}
车间代码 : {{dataContent.workShopCode}}
</view>
</view>
<view class="task_text">
<view class="">
目标库位 : {{dataContent.toLocationCode}}
班组 : {{dataContent.team}}
</view>
</view>
</view>

96
pages/productReceipt/coms/productDetailInfoPopup.vue

@ -0,0 +1,96 @@
<template>
<view class="">
<uni-popup ref="popup">
<detail-common-info :dataContent="dataContent" @onClose="closePopup">
<view class="">
<view class="uni-flex uni-column">
<view class="item">
<text class="item_title">标包数量 : </text>
<text class="text_wrap">{{dataContent.stdPackQty}} </text>
</view>
<view class="item">
<text class="item_title">标包单位 : </text>
<text class="text_wrap">{{getStdPackUnitInfo(dataContent.stdPackUnit)}} </text>
</view>
</view>
</view>
<u-line></u-line>
<view class="">
<view class="uni-flex uni-column">
<view class="item">
<text class="item_title">订单号 : </text>
<text class="text_wrap">{{dataContent.poNumber}} </text>
</view>
<view class="item">
<text class="item_title">订单行 : </text>
<text class="text_wrap">{{dataContent.poLine}} </text>
</view>
<view class="item">
<text class="item_title">项目代码 : </text>
<text class="text_wrap">{{dataContent.projectCode}} </text>
</view>
<view class="item">
<text class="item_title">到货日期 : </text>
<text class="text_wrap">{{dateFormat(dataContent.arriveDate)}} </text>
</view>
<view class="item">
<text class="item_title">生产日期 : </text>
<text class="text_wrap">{{dateFormat(dataContent.produceDate)}} </text>
</view>
<view class="item">
<text class="item_title">过期日期 : </text>
<text class="text_wrap">{{dateFormat(dataContent.expireDate)}} </text>
</view>
</view>
</view>
</detail-common-info>
</uni-popup>
</view>
</template>
<script>
import {getStdPackUnitInfo} from "@/common/directory.js"
import {
dateFormat
} from '@/common/basic.js';
import detailCommonInfo from '@/mycomponents/detail/detailCommonInfo.vue'
export default {
components: {
detailCommonInfo
},
data() {
return {
dataContent: {
type: Object,
default: {}
}
}
},
mounted() {},
props: {},
methods: {
openPopup(val) {
this.dataContent = val;
this.$refs.popup.open('bottom')
},
closePopup() {
this.$refs.popup.close()
},
getStdPackUnitInfo(value){
return getStdPackUnitInfo(value).label
},
dateFormat(value){
return dateFormat(value)
}
}
}
</script>
<style>
</style>

89
pages/productReceipt/job/productReceiptDetail.vue

@ -13,10 +13,10 @@
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<com-detail-card :dataContent="item" :settingParam="jobContent" :isShowLocation="true"
<comProductDetailCard :dataContent="item" :settingParam="jobContent" :isShowLocation="false"
@remove="updateData" @updateData="updateData" @openDetail="openDetail"
:locationTypeList='tolocationTypeList'>
</com-detail-card>
</comProductDetailCard>
</view>
<u-line />
</view>
@ -37,8 +37,7 @@
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
<win-scan-pack ref="scanPopup" @getResult='getScanResult' title="制品标签"></win-scan-pack>
<detail-info-popup ref="detailInfoPopup"></detail-info-popup>
<win-scan-pack ref="scanPopup" @getResult='getScanResult' :title="'制品便签'"></win-scan-pack>
<com-message ref="comMessage"></com-message>
</view>
</template>
@ -56,7 +55,6 @@
} from '@/api/request2.js';
import {
goHome,
getCurrDateTime,
navigateBack,
getPackingNumberAndBatch,
} from '@/common/basic.js';
@ -79,8 +77,9 @@
import comMessage from '@/mycomponents/common/comMessage.vue'
import winScanPack from "@/mycomponents/scan/winScanPack.vue"
import comDetailCard from "@/mycomponents/detail/comDetailCard.vue"
import detailInfoPopup from '@/pages/productReceipt/coms/detailInfoPopup.vue'
import jobTop from '@/mycomponents/job/jobTop.vue'
import comProductDetailCard from "@/pages/productReceipt/coms/comProductDetailCard.vue"
export default {
name: 'receipt_detail',
@ -90,8 +89,8 @@
requiredLocation,
winScanPack,
comMessage,
detailInfoPopup,
jobTop
jobTop,
comProductDetailCard
},
data() {
return {
@ -104,10 +103,8 @@
jobContent: {}, //
subList: [], //subList
detailSource: [], //
fromLocationTypeList: [],
toLocationTypeList: [],
toLocationInfo: {},
businessTypeInfo: {},
managementList: []
};
@ -116,16 +113,15 @@
this.id = option.id;
if (this.id != undefined) {
//
// if (option.status == "JOB_PENDING") {
// this.receive((callback => {
// this.received = true;
// this.getDetail();
// }));
// } else {
// this.getDetail();
// }
this.getDetail();
if (option.status == "1") {
this.receive((callback => {
this.received = true;
this.getDetail();
}));
} else {
this.getDetail();
}
}
},
//
@ -189,7 +185,6 @@
that.jobContent = res.data;
that.subList = res.data.subList;
that.toLocationCode = that.subList[0].toLocationCode
that.fromLocationTypeList = getDirectoryItemArray(that.jobContent.fromLocationTypes);
that.toLocationTypeList = getDirectoryItemArray(that.jobContent.toLocationTypes)
that.detailSource = getDataSource(that.subList)
} else {
@ -226,19 +221,15 @@
itemDetail.handleQty = Number(result.label.qty);
itemDetail.toLocationCode = this.toLocationCode;
itemDetail.labelQty = Number(result.label.qty);
this.calcHandleQty();
calcHandleQty(this.detailSource);
this.continueScan()
this.$forceUpdate()
}
}
}
},
calcHandleQty() {
calcHandleQty(this.detailSource)
this.continueScan();
this.$forceUpdate();
},
//
continueScan() {
this.scanCount = getScanCount(this.subList);
@ -251,12 +242,9 @@
updateData() {
this.calcHandleQty();
calcHandleQty(this.detailSource);
},
openDetail(item) {
this.$refs.detailInfoPopup.openPopup(item)
},
openScanPopup() {
this.$refs.scanPopup.openScanPopup();
@ -342,17 +330,17 @@
this.managementList = res.list;
var params = this.setParams();
console.log("提交参数",JSON.stringify(params));
// productReceiptJobsubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
productReceiptJobsubmit(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);
@ -369,8 +357,11 @@
if (detail.scaned) {
var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
detail.packingNumber, detail.batch);
detail.toPackingNumber =info.packingNumber;
detail.toBatch =info.batch;
detail.toPackingNumber = info.packingNumber;
detail.toBatch = info.batch;
detail.toContainerNumber = '';
detail.toInventoryStatus =detail.inventoryStatus
detail.toLocationCode = this.toLocationCode
subList.push(detail)
}
})
@ -382,19 +373,19 @@
scanPopupGetFocus() {
this.$refs.scanPopup.packGetFocus();
this.$refs.scanPopup.getfocus();
},
scanPopupLoseFocus() {
this.$refs.scanPopup.packLoseFocus();
this.$refs.scanPopup.losefocus();
},
showMessage(message) {
setTimeout(r => {
// this.scanPopupLoseFocus();
this.scanPopupLoseFocus();
this.$refs.comMessage.showMessage(message, res => {
if (res) {
// this.scanPopupGetFocus();
this.scanPopupGetFocus();
}
});
})

2
pages/productReceipt/job/productReceiptJob.vue

@ -128,7 +128,7 @@
this.loadingType = "loading";
if (type === "refresh") {
this.pageNo = 1;
this.receiptList = [];
this.jobList = [];
}
var filters = []
if (this.checkedToday) {

4
pages/productionReceipt/job/productionReceiptDetail.vue

@ -10,7 +10,7 @@
</view>
<u-line color="#D8D8D8" style="margin-bottom: 15rpx;margin-top: 10rpx;"></u-line>
</view>
<scroll-view scroll-y="true" class="page-main-scroll">
<scroll-view scroll-y="true">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<com-detail-card :dataContent="item" :index="index" :settingParam="jobContent"
@ -19,7 +19,7 @@
</com-detail-card>
<u-line />
</view>
</view>
</scroll-view>
</view>

199
pages/productionReturn/coms/comReturnRequestCreator.vue

@ -1,88 +1,159 @@
<template>
<view class="">
<uni-collapse ref="collapse">
<uni-collapse-item :open="true">
<com-issue-request-info :workShopCode="dataContent.workshopCode" :dataContent="dataContent">
</com-issue-request-info>
<u-line />
<uni-swipe-action ref="swipeAction">
<view v-for="(item, index) in dataContent.subList" :key="index">
<uni-swipe-action-item>
<view class="" style="font-size: 32rpx;margin: 10rpx;">
<view class="">
生产线 : {{item.productionLineName}}({{item.productionLineCode}})
</view>
<view class="">
工位 : {{item.workStationName}} ({{item.workStationCode}})
</view>
<view class="">
物品代码 : {{item.itemCode}}
</view>
<view class="">
物品名称 : {{item.itemName}}
</view>
<view class="uni-flex uni-row uni-center">
<view class="">
数量 : {{item.qty}} 单位 :
</view>
<view class="">
<uom :uom="item.uom"></uom>
</view>
</view>
</view>
</uni-swipe-action-item>
<view class="" style="background-color: #fff;">
<view class="uni-flex uni-column">
<comReturnRequestInfo :workShopCode="dataContent.workshopCode" :dataContent="dataContent">
</comReturnRequestInfo>
<uni-swipe-action ref="swipeAction">
<view v-for="(item, index) in dataContent.subList" :key="index">
<uni-swipe-action-item @click="swipeClick($event,item)" :right-options="detailOptions">
<item-qty :dataContent="item" :isShowStdPack="false">
</item-qty>
<!-- <view v-if="item.batch!=''" style="margin-left: 10rpx;">
<batch :batch="item.batch" ></batch>
</view> -->
<u-line />
</view>
</uni-swipe-action>
</uni-collapse-item>
</uni-collapse>
</uni-swipe-action-item>
</view>
</uni-swipe-action>
</view>
<request-detail-info-popup ref="jobDetailPopup"></request-detail-info-popup>
<com-message ref="message"></com-message>
</view>
</template>
<script>
import uom from '@/mycomponents/qty/uom.vue'
import comIssueRequestInfo from '@/pages/issue/coms/comIssueRequestInfo.vue'
import itemCompareQty from '@/mycomponents/item/itemCompareQty.vue'
import recommend from '@/mycomponents/recommend/recommend.vue'
import balanceQtyEdit from '@/mycomponents/qty/balanceQtyEdit.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import itemQty from '@/mycomponents/item/itemQty.vue'
import comReturnRequestInfo from '@/pages/productionReturn/coms/comReturnRequestInfo.vue'
import requestDetailInfoPopup from '@/pages/issue/coms/requestDetailInfoPopup.vue'
import batch from '@/mycomponents/balance/batch.vue'
import {
getDetailOption,
getDetailEditRemoveOption,
getDetailRemoveOption
} from '@/common/array.js';
export default {
emits: ['openDetail'],
components: {
uom
},
data() {
return {
}
itemCompareQty,
recommend,
balanceQtyEdit,
comMessage,
itemQty,
comReturnRequestInfo,
requestDetailInfoPopup,
batch
},
props: {
dataContent: {
type: Object,
default: {}
},
settingParam: {
type: Object,
default: {}
},
isShowPack: {
type: Boolean,
default: true
},
isShowBatch: {
type: Boolean,
default: true
},
isShowLocation: {
type: Boolean,
default: true
},
isSwipe: {
type: Boolean,
default: true
},
},
methods: {
update(){
this.$nextTick(r => {
this.$refs.collapse.resize()
});
watch: {
dataContent(newVal) {
this.requestItem = newVal.subList[0];
},
getType(value){
var type =""
if(value=="ReturnToStore"){
type ="合格退料"
}else if (value=='ReturnToHold'){
type ="隔离退料"
}
return type;
}
},
data() {
return {
option: [],
showItem: {},
editItem: {
record: {
}
},
requestItem: {},
detailOptions: [],
scanOptions: []
}
},
mounted() {
if (this.detailOptions.length == 0) {
this.detailOptions = getDetailOption();
}
if (this.scanOptions.length == 0) {
this.scanOptions = getDetailEditRemoveOption();
// if (this.dataContent.allowModifyQty == 1) {
// this.scanOptions = getDetailEditRemoveOption();
// } else {
// this.scanOptions = getDetailRemoveOption();
// }
}
if(!this.isSwipe){
this.detailOptions=[]
}
},
methods: {
swipeClick(e, item) {
if (e.content.text == "详情") {
this.detail(item)
} else if (e.content.text == "编辑") {
this.edit(item)
} else if (e.content.text == "移除") {
this.remove(item)
}
},
edit(item) {
this.editItem = item;
this.$refs.qtyEdit.openEditPopup(item.balance, item.record.qty);
},
detail(item) {
this.$refs.jobDetailPopup.openPopup(item)
// this.$emit('openDetail', item);
// // this.showItem = item;
// // this.$refs.jobDetailPopup.openPopup(item)
},
remove(item) {
this.$refs.message.showQuestionMessage("确定移除扫描信息?",
res => {
if (res) {
item.scaned = false
item.record = {}
item.balance = {}
item.inventoryStatus = item.RecommendInventoryStatus
// item.record.qty = 0;
this.$forceUpdate()
this.$emit('remove', item)
}
});
},
confirm(qty) {
this.editItem.record.qty = qty;
this.$emit('updateData')
}
}
}
</script>

4
pages/productionReturn/coms/comReturnRequestInfo.vue

@ -14,8 +14,8 @@
<view>{{ dataContent.workStationCode }}</view>
</view>
<view class="cell_info">
<view class="text_lightblue">原材料库</view>
<view>{{ dataContent.toLocationCode}}</view>
<view class="text_lightblue">来源库位</view>
<view>{{ dataContent.fromLocationCode}}</view>
</view>
</view>
<u-line />

14
pages/productionReturn/request/requestDetail.vue

@ -1,5 +1,9 @@
<template>
<view class="page-wraper">
<view class="page-header">
<comReturnRequestInfo :workShopCode="requestContent.workshopCode" :dataContent="requestContent">
</comReturnRequestInfo>
</view>
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
@ -33,12 +37,15 @@
import comRequestDetailCard from "@/mycomponents/detail/comRequestDetailCard.vue"
import requestDetailInfoPopup from '@/pages/productionReturn/coms/requestDetailInfoPopup.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import comReturnRequestInfo from '@/pages/productionReturn/coms/comReturnRequestInfo.vue'
export default {
components: {
comRequestDetailCard,
requestDetailInfoPopup,
comMessage,
comReturnRequestInfo
},
data() {
return {
@ -84,7 +91,10 @@
that.requestContent = res.data;
that.subList = res.data.subList;
that.detailSource = getDataSource(that.subList);
that.detailSource[0].workshopCode = that.requestContent.workshopCode
that.requestContent.fromLocationCode = that.subList[0].fromLocationCode
that.requestContent.productionLineCode = that.subList[0].productionLineCode
that.requestContent.workStationCode = that.subList[0].workStationCode
} else {
that.showMessage('列表数据为0');
}

24
pages/productionReturn/request/returnRequestCreate.vue

@ -36,6 +36,7 @@
updateTitle,
navigateBack,
getRemoveOption,
getCurrDateOneMonthsTimes
} from '@/common/basic.js';
import comBlankView from '@/mycomponents/common/comBlankView.vue'
@ -44,7 +45,6 @@
import comScanReturnPack from '@/pages/productionReturn/coms/comScanReturnPack.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import comReturnRequestCreator from '@/pages/productionReturn/coms/comReturnRequestCreator.vue'
export default {
name: '',
components: {
@ -53,7 +53,7 @@
jobDetailPopup,
comScanReturnPack,
comMessage,
comReturnRequestCreator
comReturnRequestCreator,
},
data() {
return {
@ -95,7 +95,12 @@
if (this.detailSource.subList.length == 0) {
this.detailSource = {
workshopCode: item.workshopCode,
businessType:this.fromType,
workShopName: item.workShopName,
productionLineCode: item.productionLineCode,
productionLineName: item.productionLineName,
workStationCode: item.workStationCode,
workStationName: item.workStationName, //
fromLocationCode:item.rawLocationCode,
status: "1",
totalQty: 0,
subList: []
@ -126,6 +131,9 @@
workStationCode: item.workStationCode,
itemCode: item.itemCode,
itemName: item.itemName,
inventoryStatus:"OK",
packingNumber:"",
fromLocationCode:item.rawLocationCode,
qty: item.qty,
uom: item.uom
}
@ -139,9 +147,6 @@
}
}
this.caclcQty();
if (this.$refs.issueRequest != undefined) {
this.$refs.issueRequest.update()
}
},
caclcQty() {
@ -153,14 +158,17 @@
},
setParams() {
//退
if(this.fromType=="ReturnToStore"){
this.detailSource.isOK = true
this.detailSource.dueTime = getCurrDateOneMonthsTimes()
this.detailSource.subList.forEach(res => {
res.batch ="000000"
})
//退
}else if(this.fromType=="ReturnToHold"){
this.detailSource.isOK = false
this.detailSource.dueTime = getCurrDateOneMonthsTimes()
this.detailSource.subList.forEach(res => {
res.batch = ""
})
@ -177,7 +185,7 @@
productionReturnRequestCreate(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成发料申请" + res.data)
this.showCommitSuccessMessage("提交成功<br>生成发料申请<br>" + res.data)
} else {
this.showErrorMessage("提交失败[" + res.msg + "]")
}

2
pages/purchaseReceipt/coms/comReceiptDetailCard.vue

@ -10,7 +10,7 @@
<uni-swipe-action ref="swipeAction">
<uni-swipe-action-item @click="swipeClick($event,item)"
:right-options="item.scaned?scanOptions:detailOptions">
<recommend :detail="item" :isShowLocation="false" :isShowToLocation="settingParam.allowModifyLocation=='TRUE'"></recommend>
<recommend :detail="item" :isShowLocation="false" :isShowFromLocation="false" :isShowToLocation="settingParam.allowModifyLocation=='TRUE'"></recommend>
</uni-swipe-action-item>
</uni-swipe-action>
<u-line color="#D8D8D8"></u-line>

4
pages/purchaseReturn/record/returnRecord.vue

@ -40,7 +40,7 @@
<script>
import {
purchaseReturnRecordSubmit,
purchaseReturnRequestSubmit
purchaseReturnRequestCreate
} from '@/api/request2.js';
import {
goHome,
@ -226,7 +226,7 @@
if (this.fromType == "requestType") {
var params = this.setRequestParams();
console.log("提交" + JSON.stringify(params))
purchaseReturnRequestSubmit(params).then(res => {
purchaseReturnRequestCreate(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成采购退货申请" + res.data, )

29
pages/purchaseReturn/request/returnRequest.vue

@ -41,9 +41,9 @@
import {
getPurchaseReturnRequestList,
purchaseReturnRequestClose,
purchaseReturnRequestSubmitApprove,
purchaseReturnRequestSubmitApproveAgree,
purchaseReturnRequestSubmitApproveRefused,
purchaseReturnRequestApprove,
purchaseReturnRequestApproveAgree,
purchaseReturnRequestApproveRefused,
purchaseReturnRequestHandle
} from '@/api/request2.js';
import {
@ -201,7 +201,7 @@
openScanDetailPopup(item) {
uni.navigateTo({
url: "../record/returnRecord?fromType=" + this.fromType
url: "./returnRequestCreate"
})
},
@ -215,15 +215,15 @@
})
} else if (text == "提交审批") {
this.showQuestionMessage("确定要审批当前申请吗?",res=>{
this.purchaseReturnRequestSubmitApprove(dataContent.id)
this.purchaseReturnRequestApprove(dataContent.id)
})
} else if (text=="审批通过") {
this.showQuestionMessage("确定要审批通过当前申请吗?",res=>{
this.purchaseReturnRequestSubmitApproveAgree(dataContent.id)
this.purchaseReturnRequestApproveAgree(dataContent.id)
})
} else if (text == "审批驳回") {
this.showQuestionMessage("确定要审批驳回当前申请吗?",res=>{
this.purchaseReturnRequestSubmitApproveRefused(dataContent.id)
this.purchaseReturnRequestApproveRefused(dataContent.id)
})
} else if (text == "关闭") {
this.showQuestionMessage("确定要关闭当前申请吗?",res=>{
@ -290,9 +290,8 @@
},
purchaseReturnRequestSubmitApprove(id) {
purchaseReturnRequestSubmitApprove(id).then(res => {
purchaseReturnRequestApprove(id) {
purchaseReturnRequestApprove(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
@ -323,8 +322,8 @@
this.showMessage(error)
})
},
purchaseReturnRequestSubmitApproveAgree(id) {
purchaseReturnRequestSubmitApproveAgree(id).then(res => {
purchaseReturnRequestApproveAgree(id) {
purchaseReturnRequestApproveAgree(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
@ -338,8 +337,8 @@
this.showMessage(error)
})
},
purchaseReturnRequestSubmitApproveRefused(id) {
purchaseReturnRequestSubmitApproveRefused(id).then(res => {
purchaseReturnRequestApproveRefused(id) {
purchaseReturnRequestApproveRefused(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
@ -354,7 +353,7 @@
})
},
purchaseReturnRequestHandle(id) {
purchaseReturnRequestSubmitApproveRefused(id).then(res => {
purchaseReturnRequestHandle(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({

356
pages/purchaseReturn/request/returnRequestCreate.vue

@ -0,0 +1,356 @@
<template>
<view class="page-wraper">
<view class="">
<com-blank-view @goScan='showFromLocationPopup' v-if="detailSource.length==0"></com-blank-view>
</view>
<view class="page-wraper" v-if="detailSource.length>0">
<u-line></u-line>
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<record-com-detail-card :dataContent="item" @removeItem="removeItem(index,item)"
@updateData="updateData" @removePack="removePack">
</record-com-detail-card>
</view>
</view>
</scroll-view>
</view>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class="">
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult'>
</win-scan-pack-and-location>
<win-scan-location ref="scanFromLocationCode" title="来源库位" @getLocation='getFromLocation'
:locationTypeList="fromlocationTypeList"></win-scan-location>
<com-message ref="comMessage"></com-message>
</view>
</template>
<script>
import {
purchaseReturnRequestCreate
} from '@/api/request2.js';
import {
goHome,
updateTitle,
navigateBack,
getCurrDateOneMonthsTimes
} from '@/common/basic.js';
import {
getBusinessType,
createItemInfo,
createDetailInfo,
calcHandleQty
} from '@/common/record.js';
import {
getManagementPrecisions
} from '@/common/balance.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import comMessage from '@/mycomponents/common/comMessage.vue'
export default {
components: {
winScanButton,
comBlankView,
winScanLocation,
winScanPackAndLocation,
comMessage,
recordComDetailCard
},
data() {
return {
id: '',
submitMainContent: {}, //
subList: [], //subList
detailSource: [], //
fromLocationCode: "",
fromlocationTypeList: [],
tolocationTypeList: [],
businessType: {}, //
poNumber: '',
dataContent : {}
};
},
onLoad(option) {
var typeCode = "PurchaseReturn"
getBusinessType(typeCode, res => {
if (res.success) {
this.businessType = res.businessType;
this.fromlocationTypeList = res.fromlocationTypeList;
this.tolocationTypeList = res.tolocationTypeList;
this.showFromLocationPopup();
} else {
this.$refs.comMessage.showBreakMessage(res.message);
}
});
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
//
onBackPress(e) {},
onPullDownRefresh() {},
mounted() {
},
methods: {
showFromLocationPopup() {
this.$nextTick(() => {
this.$refs.scanFromLocationCode.openScanPopup();
})
},
openScanPopup() {
if (this.fromLocationCode == "") {
this.showFromLocationPopup();
return
}
this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType);
},
getScanResult(result) {
if (this.poNumber == '') {
this.poNumber = result.label.order;
} else {
if (this.poNumber != result.label.order) {
this.showErrorMessage('扫描的采购订单号[' + result.label.order + ']与默认采购订单号[' + this.poNumber + ']不一致')
return;
}
}
this.getDataSource(result)
},
getDataSource(result) {
let balance = result.balance;
let label = result.label;
let pack = result.package;
var item = this.detailSource.find(res => {
if (res.itemCode == balance.itemCode) {
return res
}
})
if (item == undefined) {
var itemInfo = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack);
itemInfo.subList.push(newDetail);
this.detailSource.push(itemInfo)
} else {
var detail = item.subList.find(r => {
if (r.packingNumber == balance.packingNumber &&
r.batch == balance.batch &&
r.locationCode == balance.locationCode &&
r.inventoryStatus == balance.inventoryStatus &&
r.scaned == true) {
return r;
}
})
if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack);
item.subList.push(newDetail);
} else {
this.showErrorMessage('箱码[' + balance.packingNumber + "]已经在列表中")
}
}
calcHandleQty(this.detailSource);
},
updateData() {
calcHandleQty(this.detailSource);
for (var i = 0; i < this.detailSource.length; i++) {
let item = this.detailSource[i];
if (item.qty == 0) {
this.detailSource.splice(i, 1)
}
}
},
removePack() {
for (var i = 0; i < this.detailSource.length; i++) {
var item = this.detailSource[i];
if (item.subList.length == 0) {
this.detailSource.splice(i, 1)
}
}
this.updateData();
},
removeItem(index, item) {
this.detailSource.splice(index, 1)
},
commit() {
if (this.detailSource.length > 0 && this.detailSource[0].subList.length > 0) {
console.log("提交参数", JSON.stringify(params));
uni.showLoading({
title: "提交中....",
mask: true
});
var params = this.setRequestParams();
console.log("提交" + JSON.stringify(params))
purchaseReturnRequestCreate(params).then(res => {
uni.hideLoading()
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成采购退货申请" + res.data, )
} else {
this.showErrorMessage("提交失败"+res.msg)
}
}).catch(error => {
uni.hideLoading()
this.showErrorMessage(error)
})
} else {
this.showErrorMessage("没有要提交的数据")
}
},
setRequestParams(){
var subList = []
var supplierCode=""
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
if(supplierCode==""){
supplierCode = detail.package.supplierCode
}
detail.fromLocationCode = detail.locationCode
subList.push(detail)
}
})
})
this.dataContent.subList = subList
this.dataContent.purchaseReceiptRecordNumber="";
this.transferMode ="";
this.dataContent.supplierCode = supplierCode
this.dataContent.dueTime =getCurrDateOneMonthsTimes()
this.dataContent.businessType = "PurchasePutaway"
this.dataContent.departmentCode = "研发部门";
this.dataContent.status= 1 ;
this.dataContent.autoCommit = "FALSE";
this.dataContent.autoAgree = "FALSE";
this.dataContent.autoExecute = "FALSE";
this.dataContent.directCreateRecord = "FALSE";
return this.dataContent;
},
showMessage(message) {
setTimeout(r => {
this.scanPopupLoseFocus();
this.$refs.comMessage.showMessage(message, res => {
if (res) {
this.scanPopupGetFocus();
}
});
})
},
showErrorMessage(message) {
setTimeout(r => {
this.scanPopupLoseFocus();
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
this.scanPopupGetFocus();
}
});
})
},
closeScanPopup() {
this.$refs.scanPopup.closeScanPopup();
},
scanPopupGetFocus() {
this.$refs.scanPopup.packGetFocus();
},
scanPopupLoseFocus() {
this.$refs.scanPopup.packLoseFocus();
},
getFromLocation(location, code) {
this.getFromLocationCode(location, code)
},
getFromLocationCode(location, code) {
this.fromLocationCode = code;
this.openScanPopup();
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
navigateBack(1)
})
}
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
</style>

8
pages/putaway/job/putawayDetail.vue

@ -183,7 +183,6 @@
} else {
if (res.data.subList.length > 0) {
that.jobContent = res.data;
that.jobContent.outInventoryStatuses='INSP'
that.subList = res.data.subList;
that.detailSource = getDataSource(that.subList)
@ -301,6 +300,7 @@
if (res) {
itemDetail.scaned = true;
itemDetail.handleQty = Number(result.balance.qty) ;
itemDetail.toInventoryStatus =result.balance.inventoryStatus
itemDetail.balance = result.balance;
itemDetail.balance.balanceQty = result.balance.qty;
itemDetail.balance.stdPackQty = result.package.stdPackQty
@ -313,6 +313,7 @@
} else {
itemDetail.scaned = true;
itemDetail.handleQty = Number(result.balance.qty) ;
itemDetail.toInventoryStatus =itemDetail.inventoryStatus
itemDetail.balance = result.balance;
itemDetail.balance.balanceQty = result.balance.qty;
itemDetail.balance.stdPackQty = result.package.stdPackQty
@ -439,8 +440,6 @@
detail.toPackingNumber = info.packingNumber;
detail.toBatch = info.batch;
detail.toContainerNumber = '';
detail.toInventoryStatus = detail.inventoryStatus;
detail.singlePrice = detail.balance.singlePrice;
detail.amount = detail.balance.singlePrice * detail.handleQty;
@ -448,9 +447,6 @@
detail.arriveDate = detail.balance.arriveDate;
detail.produceDate = detail.balance.produceDate;
detail.expireDate = detail.balance.expireDate;
// "arriveDate": 1694591614000,
// "produceDate": 1694591615000,
// "expireDate": 1694591617000,
subList.push(detail)
}
})

60
pages/repleinsh/coms/comScanReplishPack.vue

@ -7,7 +7,7 @@
扫描箱码
<text class="fr" @click="closeScanPopup()">关闭</text>
</view>
<!-- <view class="uni-flex uni-row" style="align-items: center;
<!-- <view class="uni-flex uni-row" style="align-items: center;
background-color: #fff;
margin-left: 20rpx;
margin-right: 20rpx;
@ -145,8 +145,8 @@
positionInfo: "请选择位置",
positionList: [],
defaultValueList: [],
label:{},
fromInventoryStatuses :"",
label: {},
fromInventoryStatuses: "",
}
},
created() {
@ -179,13 +179,13 @@
let that = this;
that.fromLocationList = [];
if (that.dataContent != null) {
that.fromInventoryStatuses =this.jobContent.outInventoryStatuses
that.fromInventoryStatuses = this.jobContent.outInventoryStatuses
that.toLocation = that.dataContent[0];
that.toLocationCode = that.dataContent[0].toLocationCode;
that.fromLocationList = that.getFromLocationList();
}
},
showBalanceSelect(items) {
this.$refs.balanceSelect.openPopup(items);
},
@ -243,24 +243,25 @@
title: '加载中',
mask: true
})
getBalanceByManagementPrecision(result.label, that.fromLocationCode, that.fromInventoryStatuses, balanceRes => {
if (balanceRes.success) {
if (balanceRes.data.list.length == 0) {
this.showErrorMessage('在来源库位[' + this.fromLocationCode + '],未查找到该包装的库存记录',
res => {
this.packGetFocus();
})
} else if (balanceRes.data.list.length == 1) {
let balance = balanceRes.data.list[0];
this.afterGetBalance(result.label, balance,packageInfo);
getBalanceByManagementPrecision(result.label, that.fromLocationCode, that.fromInventoryStatuses,
balanceRes => {
if (balanceRes.success) {
if (balanceRes.data.list.length == 0) {
this.showErrorMessage('在来源库位[' + this.fromLocationCode + '],未查找到该包装的库存记录',
res => {
this.packGetFocus();
})
} else if (balanceRes.data.list.length == 1) {
let balance = balanceRes.data.list[0];
this.afterGetBalance(result.label, balance, packageInfo);
} else {
this.showBalanceSelect(balanceRes.data.list);
}
} else {
this.showBalanceSelect(balanceRes.data.list);
this.showErrorMessage(balanceRes.message.message);
}
} else {
this.showErrorMessage(balanceRes.message.message);
}
uni.hideLoading();
});
uni.hideLoading();
});
}
} catch (e) {
this.showErrorMessage(e.stack)
@ -271,7 +272,7 @@
this.afterGetBalance(this.label, balance);
},
afterGetBalance(label, balance,packageInfo) {
afterGetBalance(label, balance, packageInfo) {
try {
let that = this;
let itemCode = label.itemCode;
@ -292,11 +293,11 @@
if (batch.Recommends.length > 0) {
let recommend = batch.Recommends.find(r => r.packingNumber == packingCode);
if (recommend != undefined) {
that.addRecord(batch, label, balance,packageInfo)
that.addRecord(batch, label, balance, packageInfo)
} else {
//
if (this.jobContent.allowModifyPackingNumber == 'TRUE') {
that.addRecord(batch, label, balance,packageInfo);
that.addRecord(batch, label, balance, packageInfo);
} else {
that.showErrorMessage('未查找到该箱码【' + packingCode + '】的明细',
res => {
@ -306,7 +307,7 @@
}
}
} else {
that.addRecord(batch, label, balance,packageInfo)
that.addRecord(batch, label, balance, packageInfo)
}
} else {
that.showErrorMessage('箱码【' + packingCode + '】已经扫描,请继续扫描下一箱',
@ -361,14 +362,15 @@
return batch;
},
creatRecord(label, balance,packageInfo) {
creatRecord(label, balance, packageInfo) {
balance.stdPackQty = packageInfo.stdPackQty
balance.stdPackUnit = packageInfo.stdPackUnit
let record = {
itemCode: label.itemCode,
packingNumber: label.packingNumber,
batch: label.batch,
qty: Number(label.qty)>Number(balance.qty)?Number(balance.qty):Number(label.qty),
qty: Number(balance.qty),
// qty: Number(label.qty)>Number(balance.qty)?Number(balance.qty):Number(label.qty),
uom: balance.uom,
inventoryStatus: balance.inventoryStatus,
balance: balance,
@ -386,8 +388,8 @@
batch.handleQty = handleQty;
},
addRecord(batch, label, balance,packageInfo) {
let record = this.creatRecord(label, balance,packageInfo);
addRecord(batch, label, balance, packageInfo) {
let record = this.creatRecord(label, balance, packageInfo);
batch.Records.push(record);
this.issueRecord.unshift(record)
this.calcBatchHandleQty(batch);

24
pages/repleinsh/job/repleinshDetail.vue

@ -12,12 +12,13 @@
<view class="page-main">
<scroll-view scroll-y="true" class="">
<view v-for="(toLocation, index) in detailSource">
<com-repleish-detail-card ref='comIssueDetailCard' :dataContent="toLocation" @updateData='updateData'>
<com-repleish-detail-card ref='comIssueDetailCard' :dataContent="toLocation"
@updateData='updateData'>
</com-repleish-detail-card>
</view>
</scroll-view>
</view>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
@ -72,7 +73,7 @@
import comScanReplishPack from '@/pages/repleinsh/coms/comScanReplishPack.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import jobTop from '@/mycomponents/job/jobTop.vue'
export default {
name: 'issueDetail',
components: {
@ -92,8 +93,8 @@
detailSource: [], //
detailOptions: [],
scanOptions: [],
toLocationCode:'',
tolocationTypeList:[]
toLocationCode: '',
tolocationTypeList: []
};
},
@ -237,7 +238,7 @@
if (res.data) {
this.showCommitSuccessMessage("提交成功<br>生成补料记录" + res.data)
} else {
this.showErrorMessage("提交失败[" + res.msg+"]")
this.showErrorMessage("提交失败[" + res.msg + "]")
}
}).catch(error => {
uni.hideLoading()
@ -259,6 +260,13 @@
batch.Records.forEach(r => {
let record = {};
record.handleQty = r.qty;
record.fromPackingNumber = r
.packingNumber;
record.fromBatch = r.batch;
record.fromContainerNumber = r
.ContainerNumber;
record.toContainerNumber = r
.ContainerNumber;
record.toInventoryStatus = r
@ -347,7 +355,7 @@
}
})
}
// item.handleQty=itemHandleQty;
},
@ -420,7 +428,7 @@
scanLocationCode(location, code) {
this.$refs.comMessage.showQuestionMessage("是否把所有的目标库位都变成默认库位[" + code + "]", res => {
this.toLocationCode = code
})
},
}

5
pages/scrap/coms/comScrapDetailCard.vue

@ -104,6 +104,7 @@
detail(item) {
this.showItem = item;
console.log("提交参数", JSON.stringify(item));
this.$refs.jobDetailPopup.openPopup(item)
},
remove(item) {
@ -111,15 +112,13 @@
res => {
if (res) {
item.scaned = false
item.record = {}
// item.record.qty = 0;
this.$forceUpdate()
this.$emit('remove', item)
}
});
},
confirm(qty) {
this.editItem.record.qty = qty;
this.editItem.handleQty = qty;
this.$emit('updateData')
}
}

12
pages/scrap/coms/comScrapJobCard.vue

@ -3,17 +3,7 @@
<view class="task_item">
<view class="task_text">
<view class="">
发货单号 : {{dataContent.asnNumber}}
</view>
</view>
<view class="task_text">
<view class="">
要货计划单号 : {{dataContent.ppNumber}}
</view>
</view>
<view class="task_text">
<view class="">
供应商名称 : {{dataContent.supplierName}}
申请单号 : {{dataContent.requestNumber}}
</view>
</view>
</view>

58
pages/scrap/job/scrapJobDetail.vue

@ -99,15 +99,14 @@
this.id = option.id;
if (this.id != undefined) {
//
// if (option.status == "JOB_PENDING") {
// this.receive((callback => {
// this.received = true;
// this.getDetail();
// }));
// } else {
// this.getDetail();
// }
this.getDetail();
if (option.status == "1") {
this.receive((callback => {
this.received = true;
this.getDetail();
}));
} else {
this.getDetail();
}
}
},
//
@ -213,11 +212,11 @@
let itemStatus = getInventoryStatusName(itemDetail.inventoryStatus);
if (itemDetail.inventoryStatus != result.balance.inventoryStatus) {
this.showQuestionMessage('实际库存状态[' + balanceStatus + ']与推荐库存状态[' + itemStatus +
']不一致,是否继续上架?', res => {
']不一致,是否继续出库?', res => {
if (res) {
itemDetail.scaned = true;
itemDetail.handleQty = Number(result.label.qty) > Number(result.balance
.qty) ? Number(result.balance.qty) : Number(result.label.qty);
itemDetail.handleQty = Number(result.label.qty);
itemDetail.inventoryStatus = result.balance.inventoryStatus;
itemDetail.balance = result.balance;
itemDetail.balance.balanceQty = result.balance.qty;
itemDetail.balance.stdPackQty = result.package.stdPackQty
@ -229,8 +228,7 @@
});
} else {
itemDetail.scaned = true;
itemDetail.handleQty = Number(result.label.qty) > Number(result.balance.qty) ? Number(
result.balance.qty) : Number(result.label.qty);
itemDetail.handleQty = Number(result.label.qty);
itemDetail.balance = result.balance;
itemDetail.balance.balanceQty = result.balance.qty;
itemDetail.balance.stdPackQty = result.package.stdPackQty
@ -246,7 +244,6 @@
},
//
continueScan() {
this.scanCount = getScanCount(this.subList);
@ -305,17 +302,17 @@
//
var params = this.setParams()
console.log("提交参数", JSON.stringify(params));
// scrapJobSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data )
// } else {
// this.showErrorMessage(""+res.msg)
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
scrapJobSubmit(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)
})
},
@ -325,6 +322,11 @@
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
detail.toPackingNumber = detail.packingNumber;
detail.toContainerNumber = "";
detail.toInventoryStatus= "";
detail.toLocationCode = "";
detail.toBatch = detail.batch;
subList.push(detail)
}
})
@ -383,11 +385,11 @@
},
scanPopupGetFocus() {
this.$refs.scanPopup.getfocus();
this.$refs.scanPopup.packGetFocus();
},
scanPopupLoseFocus() {
this.$refs.scanPopup.losefocus();
this.$refs.scanPopup.packLoseFocus();
},
showCommitSuccessMessage(hint) {

836
pages/scrap/record/scrapRecord.vue

@ -1,428 +1,408 @@
<template>
<view class="page-wraper">
<view class="">
<com-blank-view @goScan='getLocation' v-if="fromLocationCode==''"></com-blank-view>
</view>
<view class="page-wraper" v-if="fromLocationCode!=''">
<view class="uni-flex uni-row u-col-center" style="width: 100%;" v-if="detailSource.length>0">
<view class="" style=" text-align: center;font-size: 32rpx;font-weight: 700;margin-left: 20rpx;">
报废原因 :
</view>
<uni-data-picker v-if="detailSource.length>0" style="padding: 20rpx; background-color:#fff;"
class='uni-data-picker' placeholder="请选择原因" popup-title="选择报废原因" :localdata="reasonList"
v-model="reason">
</uni-data-picker>
</view>
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent"
:isShowLocation="true" @removeItem="removeItem(index,item)" @updateData="updateData"
@removePack="removePack">
</record-com-detail-card>
</view>
<u-line />
</view>
</scroll-view>
</view>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class="">
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult'></win-scan-pack-and-location>
<comMessage ref="comMessage"></comMessage>
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation'
:locationTypeList="fromlocationTypeList"></win-scan-location>
</view>
</template>
<script>
import {
scrapRequestSubmit,
scrapRecordSubmit
} from '@/api/request2.js';
import {
goHome,
updateTitle,
getScarpReasonList
} from '@/common/basic.js';
import {
getInventoryStatusDesc,
getDirectoryItemArray,
} from '@/common/directory.js';
import {
getBusinessType,
createItemInfo,
createDetailInfo,
calcHandleQty
} from '@/common/record.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import comMessage from '@/mycomponents/common/comMessage.vue'
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
export default {
components: {
winScanButton,
winScanPack,
requiredLocation,
comBlankView,
winScanLocation,
comMessage,
winScanPackAndLocation,
recordComDetailCard
},
data() {
return {
id: '',
receiptJob: {},
received: false,
isShowPackingCode: true,
scanCount: 0,
dataContent: {}, //
subList: [], //subList
detailSource: [], //
locationTypeList: [],
toLocationInfo: {},
businessTypeInfo: {},
fromLocationInfo: {},
fromLocationCode: "",
isShowLocation: false,
fromlocationTypeList: [],
tolocationTypeList: [],
allowModifyLocation: false,
inInventoryStatus: "", //
outInventoryStatus: "", //
businessType: {},
reasonList: [],
reason: "",
fromType:""
};
},
onLoad(option) {
this.fromType = option.fromType
if(this.fromType=="requestType"){ updateTitle("报废申请") }else { updateTitle("报废记录") }
this.reasonList = getScarpReasonList();
var typeCode = "Scrap"
getBusinessType(typeCode, res => {
if (res.success) {
this.businessType = res.businessType;
this.fromlocationTypeList = res.fromlocationTypeList;
this.tolocationTypeList = res.tolocationTypeList;
this.showFromLocationPopup();
} else {
this.$refs.comMessage.showBreakMessage(res.message );
}
});
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
//
onBackPress(e) {},
onPullDownRefresh() {},
mounted() {
},
methods: {
getScanResult(result) {
let balance = result.balance;
let label = result.label;
let pack = result.package;
var item = this.detailSource.find(res => {
if (res.itemCode == balance.itemCode) {
return res
}
})
if (item == undefined) {
var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); //
itemp.subList.push(newDetail);
this.detailSource.push(itemp)
} else {
var detail = item.subList.find(r => {
if (r.packingNumber == balance.packingNumber &&
r.batch == balance.batch &&
r.locationCode == balance.locationCode &&
r.inventoryStatus == balance.inventoryStatus) {
return r;
}
})
if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack);
item.subList.push(newDetail);
} else {
if (detail.scaned == true) {
this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]已经在列表中")
}
}
}
this.calcHandleQty();
},
createItemInfo(balance, pack) {
let item = {
itemCode: balance.itemCode,
itemName: pack.itemName,
stdPackQty: pack.stdPackQty,
stdPackUnit: pack.stdPackUnit,
qty: Number(balance.qty),
handleQty: 0,
uom: pack.uom,
subList: []
}
return item;
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
calcHandleQty() {
calcHandleQty(this.detailSource)
this.$forceUpdate();
},
updateData() {
this.calcHandleQty();
},
removeItem(index, item) {
this.detailSource.splice(index, 1)
},
removePack() {
for (var i = 0; i < this.detailSource.length; i++) {
var item = this.detailSource[i];
if (item.subList.length == 0) {
this.detailSource.splice(i, 1)
}
}
this.updateData();
},
openScanPopup() {
if (this.fromLocationCode == "") {
this.showFromLocationPopup();
return
}
this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType);
},
showFromLocationPopup() {
this.$nextTick(() => {
this.$refs.scanLocationCode.openScanPopup();
})
},
closeScanPopup() {
this.$refs.scanPopup.closeScanPopup();
},
scanPopupGetFocus() {
this.$refs.scanPopup.getfocus();
},
commit() {
if(this.reason==""){
this.showMessage("请先选择报废原因")
return;
}
//
uni.showLoading({
title: "提交中....",
mask: true
});
if(this.fromType=="requestType"){
var params = this.setRequestParams();
console.log("提交" + JSON.stringify(params))
// scrapRequestSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
}else {
// scrapRecordSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
}
},
setParams() {
var subList = []
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
// var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
// detail.packingNumber, detail.batch);
// detail.toPackingNumber =info.packingNumber;
// detail.toBatch =info.batch;
subList.push(detail)
}
})
})
return subList;
},
setRequestParams(){
var subList = []
var supplierCode=""
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
if(supplierCode==""){
supplierCode = detail.package.supplierCode
}
subList.push(detail)
}
})
})
this.dataContent.subList = subList
this.dataContent.supplierCode = supplierCode
this.dataContent.businessType = "PurchasePutaway"
this.dataContent.departmentCode= "研发部门";
this.dataContent.status= 1 ;
this.dataContent.autoCommit = "FALSE";
this.dataContent.autoAgree = "FALSE";
this.dataContent.autoExecute = "FALSE";
this.dataContent.directCreateRecord = "FALSE";
return this.dataContent;
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {}
});
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
afterCloseMessage() {
this.scanPopupGetFocus();
},
closeScanMessage() {
this.scanPopupGetFocus();
},
getLocation(location, code) {
this.getFromLocationCode(location, code)
},
getFromLocationCode(location, code) {
this.fromLocationInfo = location;
this.fromLocationCode = code;
this.openScanPopup();
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
this.fromLocationCode = '';
})
},
updateData() {
this.calcHandleQty();
for (var i = 0; i < this.detailSource.length; i++) {
let item = this.detailSource[i];
if (item.qty == 0) {
this.detailSource.splice(i, 1)
}
}
}
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
</style>
<template>
<view class="page-wraper">
<view class="">
<com-blank-view @goScan='getLocation' v-if="fromLocationCode==''"></com-blank-view>
</view>
<view class="page-wraper" v-if="fromLocationCode!=''">
<view class="uni-flex uni-row u-col-center" style="width: 100%;" v-if="detailSource.length>0">
<view class="" style=" text-align: center;font-size: 32rpx;font-weight: 700;margin-left: 20rpx;">
报废原因 :
</view>
<uni-data-picker v-if="detailSource.length>0" style="padding: 20rpx; background-color:#fff;"
class='uni-data-picker' placeholder="请选择原因" popup-title="选择报废原因" :localdata="reasonList"
v-model="reason">
</uni-data-picker>
</view>
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent"
:isShowLocation="true" @removeItem="removeItem(index,item)" @updateData="updateData"
@removePack="removePack">
</record-com-detail-card>
</view>
<u-line />
</view>
</scroll-view>
</view>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class="">
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult'></win-scan-pack-and-location>
<comMessage ref="comMessage"></comMessage>
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation'
:locationTypeList="fromlocationTypeList"></win-scan-location>
</view>
</template>
<script>
import {
scrapRecordSubmit
} from '@/api/request2.js';
import {
goHome,
updateTitle,
getScarpReasonList
} from '@/common/basic.js';
import {
getInventoryStatusDesc,
getDirectoryItemArray,
} from '@/common/directory.js';
import {
getBusinessType,
createItemInfo,
createDetailInfo,
calcHandleQty
} from '@/common/record.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import comMessage from '@/mycomponents/common/comMessage.vue'
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
export default {
components: {
winScanButton,
winScanPack,
requiredLocation,
comBlankView,
winScanLocation,
comMessage,
winScanPackAndLocation,
recordComDetailCard
},
data() {
return {
id: '',
receiptJob: {},
received: false,
isShowPackingCode: true,
scanCount: 0,
dataContent: {}, //
subList: [], //subList
detailSource: [], //
locationTypeList: [],
toLocationInfo: {},
businessTypeInfo: {},
fromLocationInfo: {},
fromLocationCode: "",
isShowLocation: false,
fromlocationTypeList: [],
tolocationTypeList: [],
allowModifyLocation: false,
inInventoryStatus: "", //
outInventoryStatus: "", //
businessType: {},
reasonList: [],
reason: "",
};
},
onLoad(option) {
this.reasonList = getScarpReasonList();
var typeCode = "Scrap"
getBusinessType(typeCode, res => {
if (res.success) {
this.businessType = res.businessType;
this.fromlocationTypeList = res.fromlocationTypeList;
this.tolocationTypeList = res.tolocationTypeList;
this.showFromLocationPopup();
} else {
this.$refs.comMessage.showBreakMessage(res.message );
}
});
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
//
onBackPress(e) {},
onPullDownRefresh() {},
mounted() {
},
methods: {
getScanResult(result) {
let balance = result.balance;
let label = result.label;
let pack = result.package;
var item = this.detailSource.find(res => {
if (res.itemCode == balance.itemCode) {
return res
}
})
if (item == undefined) {
var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); //
itemp.subList.push(newDetail);
this.detailSource.push(itemp)
} else {
var detail = item.subList.find(r => {
if (r.packingNumber == balance.packingNumber &&
r.batch == balance.batch &&
r.locationCode == balance.locationCode &&
r.inventoryStatus == balance.inventoryStatus) {
return r;
}
})
if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack);
item.subList.push(newDetail);
} else {
if (detail.scaned == true) {
this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]已经在列表中")
}
}
}
this.calcHandleQty();
},
createItemInfo(balance, pack) {
let item = {
itemCode: balance.itemCode,
itemName: pack.itemName,
stdPackQty: pack.stdPackQty,
stdPackUnit: pack.stdPackUnit,
qty: Number(balance.qty),
handleQty: 0,
uom: pack.uom,
subList: []
}
return item;
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
calcHandleQty() {
calcHandleQty(this.detailSource)
this.$forceUpdate();
},
updateData() {
this.calcHandleQty();
},
removeItem(index, item) {
this.detailSource.splice(index, 1)
},
removePack() {
for (var i = 0; i < this.detailSource.length; i++) {
var item = this.detailSource[i];
if (item.subList.length == 0) {
this.detailSource.splice(i, 1)
}
}
this.updateData();
},
openScanPopup() {
if (this.fromLocationCode == "") {
this.showFromLocationPopup();
return
}
this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType);
},
showFromLocationPopup() {
this.$nextTick(() => {
this.$refs.scanLocationCode.openScanPopup();
})
},
closeScanPopup() {
this.$refs.scanPopup.closeScanPopup();
},
scanPopupGetFocus() {
this.$refs.scanPopup.getfocus();
},
commit() {
if(this.reason==""){
this.showMessage("请先选择报废原因")
return;
}
//
uni.showLoading({
title: "提交中....",
mask: true
});
// scrapRecordSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
},
setParams() {
var subList = []
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
// var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
// detail.packingNumber, detail.batch);
// detail.toPackingNumber =info.packingNumber;
// detail.toBatch =info.batch;
subList.push(detail)
}
})
})
return subList;
},
setRequestParams(){
var subList = []
var supplierCode=""
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
if(supplierCode==""){
supplierCode = detail.package.supplierCode
}
subList.push(detail)
}
})
})
this.dataContent.subList = subList
this.dataContent.supplierCode = supplierCode
this.dataContent.businessType = "PurchasePutaway"
this.dataContent.departmentCode= "研发部门";
this.dataContent.status= 1 ;
this.dataContent.autoCommit = "FALSE";
this.dataContent.autoAgree = "FALSE";
this.dataContent.autoExecute = "FALSE";
this.dataContent.directCreateRecord = "FALSE";
return this.dataContent;
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {}
});
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
afterCloseMessage() {
this.scanPopupGetFocus();
},
closeScanMessage() {
this.scanPopupGetFocus();
},
getLocation(location, code) {
this.getFromLocationCode(location, code)
},
getFromLocationCode(location, code) {
this.fromLocationInfo = location;
this.fromLocationCode = code;
this.openScanPopup();
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
this.fromLocationCode = '';
})
},
updateData() {
this.calcHandleQty();
for (var i = 0; i < this.detailSource.length; i++) {
let item = this.detailSource[i];
if (item.qty == 0) {
this.detailSource.splice(i, 1)
}
}
}
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
</style>

385
pages/scrap/request/scrapRequestCreate.vue

@ -0,0 +1,385 @@
<template>
<view class="page-wraper">
<view class="">
<com-blank-view @goScan='showFromLocationPopup' v-if="detailSource.length==0"></com-blank-view>
</view>
<view class="page-wraper" v-if="detailSource.length>0">
<view class="flex u-col-center" style="width: 100%;background-color:#fff;">
<view class="" style="margin-left: 20rpx; font-size: 30rpx;flex-shrink: 0;">报废原因</view>
<view style="width: 100%">
<uni-data-picker style="background-color:#fff;margin-right: 20rpx;" class='uni-data-picker'
placeholder="请选择报废原因" popup-title="报废原因" :localdata="reasonList" @change="reasonChange">
</uni-data-picker>
</view>
</view>
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent"
:isShowLocation="true" @removeItem="removeItem(index,item)" @updateData="updateData"
@removePack="removePack">
</record-com-detail-card>
</view>
<u-line />
</view>
</scroll-view>
</view>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class="">
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult'></win-scan-pack-and-location>
<comMessage ref="comMessage"></comMessage>
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation'
:locationTypeList="fromlocationTypeList"></win-scan-location>
</view>
</template>
<script>
import {
scrapRequestCreate,
} from '@/api/request2.js';
import {
goHome,
updateTitle,
getCurrDateOneMonthsTimes,
navigateBack
} from '@/common/basic.js';
import {
getInventoryStatusDesc,
getDirectoryItemArray,
getScarpReasonList
} from '@/common/directory.js';
import {
getBusinessType,
createItemInfo,
createDetailInfo,
calcHandleQty
} from '@/common/record.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import comMessage from '@/mycomponents/common/comMessage.vue'
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
export default {
components: {
winScanButton,
winScanPack,
requiredLocation,
comBlankView,
winScanLocation,
comMessage,
winScanPackAndLocation,
recordComDetailCard
},
data() {
return {
id: '',
receiptJob: {},
received: false,
isShowPackingCode: true,
scanCount: 0,
dataContent: {}, //
subList: [], //subList
detailSource: [], //
locationTypeList: [],
fromLocationInfo: {},
fromLocationCode: "",
isShowLocation: false,
fromlocationTypeList: [],
tolocationTypeList: [],
allowModifyLocation: false,
inInventoryStatus: "", //
outInventoryStatus: "", //
businessType: {},
reasonList: [],
reasonText: "",
};
},
onLoad(option) {
this.reasonList = getScarpReasonList();
var typeCode = "Scrap"
getBusinessType(typeCode, res => {
if (res.success) {
this.businessType = res.businessType;
this.fromlocationTypeList = res.fromlocationTypeList;
this.tolocationTypeList = res.tolocationTypeList;
this.showFromLocationPopup();
} else {
this.$refs.comMessage.showBreakMessage(res.message);
}
});
},
//
onNavigationBarButtonTap(e) {
if (e.index === 0) {
goHome();
}
},
//
onBackPress(e) {},
onPullDownRefresh() {},
mounted() {
},
methods: {
getScanResult(result) {
let balance = result.balance;
let label = result.label;
let pack = result.package;
var item = this.detailSource.find(res => {
if (res.itemCode == balance.itemCode) {
return res
}
})
if (item == undefined) {
var itemp = createItemInfo(balance, pack);
let newDetail = createDetailInfo(balance, pack); //
itemp.subList.push(newDetail);
this.detailSource.push(itemp)
} else {
var detail = item.subList.find(r => {
if (r.packingNumber == balance.packingNumber &&
r.batch == balance.batch &&
r.locationCode == balance.locationCode &&
r.inventoryStatus == balance.inventoryStatus) {
return r;
}
})
if (detail == undefined) {
let newDetail = createDetailInfo(balance, pack);
item.subList.push(newDetail);
} else {
if (detail.scaned == true) {
this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]已经在列表中")
}
}
}
this.calcHandleQty();
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
calcHandleQty() {
calcHandleQty(this.detailSource)
this.$forceUpdate();
},
updateData() {
this.calcHandleQty();
},
removeItem(index, item) {
this.detailSource.splice(index, 1)
},
removePack() {
for (var i = 0; i < this.detailSource.length; i++) {
var item = this.detailSource[i];
if (item.subList.length == 0) {
this.detailSource.splice(i, 1)
}
}
this.updateData();
},
openScanPopup() {
if (this.fromLocationCode == "") {
this.showFromLocationPopup();
return
}
this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType);
},
showFromLocationPopup() {
this.$nextTick(() => {
this.$refs.scanLocationCode.openScanPopup();
})
},
closeScanPopup() {
this.$refs.scanPopup.closeScanPopup();
},
scanPopupGetFocus() {
this.$refs.scanPopup.getfocus();
},
commit() {
if (this.reasonText == "") {
this.showMessage("请先选择报废原因")
return;
}
if (this.detailSource.length == 0) {
this.showErrorMessage("请先扫描数据")
return;
}
//
uni.showLoading({
title: "提交中....",
mask: true
});
var params = this.setRequestParams();
console.log("提交" + JSON.stringify(params))
scrapRequestCreate(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)
})
},
setRequestParams() {
var subList = []
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
detail.fromLocationCode = detail.locationCode
subList.push(detail)
}
})
})
this.dataContent.subList = subList
this.dataContent.status = 1;
this.dataContent.fromWarehouseCode = "W1";
this.dataContent.dueTime = getCurrDateOneMonthsTimes();
return this.dataContent;
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => {
if (res) {}
});
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {
}
});
},
showScanMessage(message) {
this.$refs.comMessage.showScanMessage(message);
},
afterCloseMessage() {
this.scanPopupGetFocus();
},
closeScanMessage() {
this.scanPopupGetFocus();
},
getLocation(location, code) {
this.getFromLocationCode(location, code)
},
getFromLocationCode(location, code) {
this.fromLocationInfo = location;
this.fromLocationCode = code;
this.openScanPopup();
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
navigateBack(1)
})
},
updateData() {
this.calcHandleQty();
for (var i = 0; i < this.detailSource.length; i++) {
let item = this.detailSource[i];
if (item.qty == 0) {
this.detailSource.splice(i, 1)
}
}
},
reasonChange(e) {
if (e.detail.value.length == 0) {
this.reasonCode = ""
this.reasonText = ""
} else {
this.reasonCode = e.detail.value[0].value
this.reasonText = e.detail.value[0].text
}
}
}
}
</script>
<style scoped lang="scss">
page {
width: 100%;
height: 100%;
background-color: #fff;
}
.page-wraper {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.page-main {
flex: 1;
position: relative;
}
.page-main-scroll {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.page-main-list {
/* height: 80rpx;
line-height: 80rpx; */
text-align: center;
background: #e0e0e0;
}
</style>

131
pages/scrap/request/scrapRrequest.vue

@ -34,11 +34,13 @@
updateTitle
} from '@/common/basic.js';
import {
getBusinessType,
} from '@/common/record.js';
import {
getScrapRequestList,
scrapRequestApprove,
scrapRequestClose,
scrapRequestApproveAgree,
scrapRequestApproveRefused,
scrapRequestHandle
} from '@/api/request2.js';
import {
getDetailOption,
@ -112,7 +114,6 @@
},
methods: {
requestConfirm(action, item) {},
openRequestInfoPopup(item) {
this.$refs.requestInfoPopup.openPopup(item)
@ -195,27 +196,45 @@
openScanDetailPopup() {
uni.navigateTo({
url: "../record/scrapRecord?fromType=" + this.fromType
url: "./scrapRequestCreate"
})
},
swipeClick(e, dataContent) {
if (e.content.text == "详情") {
console.log("详情", dataContent.id)
var text = clearTirmAndWrap(e.content.text)
if (text == "详情") {
this.openRequestInfoPopup(dataContent);
} else if (e.content.text == "处理") {
console.log("处理")
} else if (e.content.text == "审批") {
console.log("审批")
} else if (e.content.text == "审批通过") {
console.log("审批通过")
} else if (e.content.text == "审批驳回") {
console.log("审批驳回")
} else if (e.content.text == "关闭") {
console.log("关闭")
} else if (text == "处理") {
this.showQuestionMessage("确定要处理当前申请吗?",res=>{
this.scrapRequestHandle(dataContent.id)
})
} else if (text == "提交审批") {
this.showQuestionMessage("确定要审批当前申请吗?",res=>{
this.scrapRequestApprove(dataContent.id)
})
} else if (text == "审批通过") {
this.showQuestionMessage("确定要审批通过当前申请吗?",res=>{
this.scrapRequestApproveAgree(dataContent.id)
})
} else if (text == "审批驳回") {
this.showQuestionMessage("确定要审批驳回当前申请吗?",res=>{
this.scrapRequestApproveRefused(dataContent.id)
})
} else if (text == "关闭") {
this.showQuestionMessage("确定要关闭当前申请吗?",res=>{
this.scrapRequestClose(dataContent.id)
})
}
},
showQuestionMessage(hint,callBack){
this.$refs.comMessage.showQuestionMessage(hint,
res => {
if (res) {
callBack()
}
});
},
switchChangeWait(state, jobStatus) {
this.checkedWaitTask = state;
@ -265,7 +284,83 @@
}
});
},
scrapRequestApprove(id) {
scrapRequestApprove(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请提交审批成功"
})
} else {
this.showMessage("申请提交审批失败")
}
}).catch(error => {
this.showMessage(error)
})
},
scrapRequestClose(id) {
scrapRequestClose(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请关闭成功"
})
} else {
this.showMessage("申请关闭失败")
}
}).catch(error => {
this.showMessage(error)
})
},
scrapRequestApproveAgree(id) {
scrapRequestApproveAgree(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请审批通过成功"
})
} else {
this.showMessage("申请审批通过失败")
}
}).catch(error => {
this.showMessage(error)
})
},
scrapRequestApproveRefused(id) {
scrapRequestApproveRefused(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请审批驳回成功"
})
} else {
this.showMessage("申请审批驳回失败")
}
}).catch(error => {
this.showMessage(error)
})
},
scrapRequestHandle(id) {
scrapRequestHandle(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请处理成功"
})
} else {
this.showMessage("申请处理失败")
}
}).catch(error => {
this.showMessage(error)
})
},
}
}
</script>

254
pages/unPlanned/coms/comReceiptRequestPopup.vue

@ -0,0 +1,254 @@
<template>
<view class="">
<uni-popup ref="popup" :maskClick="false">
<view class="uni-flex uni-column pop_customer">
<view class="" style="padding:10rpx">
<view class="uni-flex u-col-center uni-row space-between" style="padding: 10rpx 10rpx 20rpx 10rpx">
<view class="" style="font-size: 35rpx;">
{{title}}
</view>
<image style="width: 35rpx;height: 35rpx;" src="/static/icons/icons_close.svg"
@click="closeRequestPopup()"></image>
</view>
<u-line />
<view class="uni-flex uni-column" style="background-color: white; ">
<view class="uni-flex uni-column ">
<view class="title padding" style="display: flex;">
<text style=" flex-shrink: 0;">库位</text>
<view class="" style="width: 100% ;">
{{toLocationCode}}
</view>
<view class="" v-if="editPosition">
<image src="/static/search.svg" mode=""
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;"
@click="locationCodeClick">
</image>
</view>
</view>
<u-line />
<view class="title padding" style="display: flex;">
<text style=" flex-shrink: 0;">物料</text>
<view class="" style="width: 100% ;">
{{itemCode}}
</view>
<view class="">
<image src="/static/search.svg" mode=""
style=" width: 40rpx;height: 40rpx;margin-left: 20rpx;" @click="itemCodeClick">
</image>
</view>
</view>
<u-line />
<view class="uni-flex uni-row padding title u-col-center">
<text>数量 : </text>
<view class="uni-flex uni-row uni-center"
style="align-items: center;margin-left: 20rpx;">
<uni-number-box :value="counQty" @change="change" style='margin-left: 10rpx;'
:focus="numberFocus" @blur='numberFocus = false'>
</uni-number-box>
<uom :uom="uom"></uom>
</view>
</view>
<u-line />
</view>
</view>
</view>
<view class="uni-flex uni-row hide_border">
<button class="btn_edit_big_cancle" hover-class="btn_edit_big_after" @click="cancel()">取消</button>
<button class="btn_edit_big_confirm" hover-class="btn_edit_big_after" @click="confirm()">确认</button>
</view>
</view>
</uni-popup>
<win-scan-item ref="itemPopup" title='物料代码' @getScanCode='getItemCode'>
</win-scan-item>
<winScanLocation ref="locationPopup" title="库位代码" @getLocation='getLocationCode'></winScanLocation>
<comMessage ref="comMessage"></comMessage>
</view>
</template>
<script>
import {
getBasicItemByCode,
} from '@/api/request2.js';
import {
getLocationTypeName,
getListLocationTypeDesc,
checkDirectoryItemExist
} from '@/common/directory.js';
import uom from '@/mycomponents/qty/uom.vue'
import balanceStatus from '@/mycomponents/status/balanceStatus.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import winScanItem from '@/mycomponents/scan/winScanItem.vue'
import winScanLocation from '@/mycomponents/scan/winScanLocation.vue'
export default {
components: {
uom,
balanceStatus,
comMessage,
winScanItem,
winScanLocation
},
data() {
return {
itemCode: '请扫描物料信息',
itemName: "",
qty: 0,
itemCodeFocus: false,
requestInfo: null,
isCheckItemCode: false,
counQty: 0,
numberFocus: false,
uom: "",
show: false,
isModifiedPosition: true,
positionList: [],
toLocationCode: '请扫描库位信息',
isCheckLocationCode: false,
editPosition: true,
}
},
props: {
title: {
type: String,
default: '申请信息'
},
},
methods: {
openRequestPopup(editPosition) {
this.editPosition = editPosition;
if (!editPosition) {
this.itemCode = "";
this.uom = ""
this.qty = 0
this.itemCodeGetFocus();
}
this.$refs.popup.open('bottom')
},
closeRequestPopup() {
this.$refs.popup.close()
},
locationConfirm() {
//
this.checkLocatioCode();
},
itemCodeClick() {
this.$refs.itemPopup.openScanPopup();
},
locationCodeClick() {
this.$refs.locationPopup.openScanPopup();
},
itemCodeGetFocus() {
this.itemCodeFocus = true;
},
itemCodeLoseFocus() {
this.itemCodeFocus = false;
},
selectedItem(item) {
this.itemCode = item.itemCode;
this.checkItemCode();
},
confirm() {
if (this.toLocationCode == "") {
this.showErrorMessage("请输入库位", "locationCode")
return
}
if (this.itemCode == "" || !this.isCheckItemCode) {
this.showErrorMessage("请输入物料", "itemCode")
return
}
if (this.qty == 0) {
this.showErrorMessage("数量必须大于0")
return
}
this.callback('add');
},
checkItemCode(itemCode) {
//
getBasicItemByCode(itemCode).then(res => {
uni.hideLoading();
this.$refs.itemPopup.closeScanPopup();
if (res.data != null && res.data.list.length > 0) {
this.itemCode = res.data.list[0].code;
this.itemName = res.data.list[0].name
this.isCheckItemCode = true;
this.numberFocus = true
this.uom = res.data.list[0].uom
} else {
this.showErrorMessage('未查找到物料【' + itemCode + '】', "itemCode");
}
}).catch(error => {
uni.hideLoading();
this.showErrorMessage(error, "itemCode");
})
},
callback(action) {
let item = {
toLocationCode: this.toLocationCode,
itemCode: this.itemCode,
itemName: this.itemName,
uom: this.uom,
qty: this.qty
};
this.closeRequestPopup();
this.$emit("confirm", action, item);
},
showErrorMessage(message, type) {
setTimeout(r => {
this.$refs.comMessage.showErrorMessage(message, res => {
if (type == "itemCode") {
this.itemCodeGetFocus();
} else {
this.numberFocus = true;
}
})
// if (type == "itemCode") {
// this.itemCode = ""
// this.isCheckItemCode = false;
// }
})
},
change(value) {
this.qty = value;
},
cancel(e) {
this.closeRequestPopup();
},
getItemCode(code) {
if (code == "") {
this.showErrorMessage('物料号不能为空')
return;
}
this.itemCode = "";
this.checkItemCode(code)
},
getLocationCode(location, code) {
this.toLocationCode = code;
},
}
}
</script>
<style lang="scss">
.title {
font-size: 30rpx;
}
</style>

44
pages/unPlanned/job/receiptJobDetail.vue

@ -104,15 +104,14 @@
this.id = option.id;
if (this.id != undefined) {
// //
// if (option.status == "JOB_PENDING") {
// this.receive((callback => {
// this.received = true;
// this.getDetail();
// }));
// } else {
// this.getDetail();
// }
this.getDetail();
if (option.status == "1") {
this.receive((callback => {
this.received = true;
this.getDetail();
}));
} else {
this.getDetail();
}
}
},
//
@ -278,7 +277,7 @@
checkLocation() {
var isPass = true;
if (this.toLocationCode == "" || this.toLocationCode == null) {
this.showMessageHint('请扫描收货库位', callback => {
this.showMessageHint('请扫描目标库位', callback => {
this.$refs.comScanLocation.showLocation();
})
@ -311,17 +310,18 @@
this.managementList = res.list;
var params = this.setParams()
console.log("提交参数", JSON.stringify(params));
// unPlannedReceiptJobSubmit(params).then(res => {
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data)
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// uni.hideLoading()
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
unPlannedReceiptJobSubmit(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);
@ -340,6 +340,8 @@
detail.packingNumber, detail.batch);
detail.toPackingNumber = info.packingNumber;
detail.toBatch = info.batch;
detail.toLocationCode = this.toLocationCode
detail.toContainerNumber = '';
subList.push(detail)
}
})

53
pages/unPlanned/record/issueRecord.vue

@ -51,7 +51,6 @@
import comMessage from '@/mycomponents/common/comMessage.vue'
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import {
unPlannedIssueRequestSubmit,
unPlannedIssueRecordSubmit
} from '@/api/request2.js';
@ -102,7 +101,6 @@
detailSource: [], //
reason: "",
reasonList: [],
fromType: "",
dataContent:{}
}
},
@ -121,12 +119,6 @@
},
onLoad(option) {
this.fromType = option.fromType
if (this.fromType == "requestType") {
updateTitle("计划外出库申请")
} else {
updateTitle("计划外出库记录")
}
},
methods: {
@ -223,24 +215,7 @@
this.showErrorMessage("请选择出库原因")
return;
}
if(this.fromType=="requestType"){
var params = this.setRequestParams();
console.log("提交参数",JSON.stringify(params));
// unPlannedIssueRequestSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
}else {
var params =this.setParams()
// unPlannedIssueRecordSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
@ -252,7 +227,6 @@
// uni.hideLoading()
// this.showErrorMessage(error)
// })
}
},
setParams() {
@ -271,31 +245,6 @@
return subList;
},
setRequestParams(){
var subList = []
var supplierCode=""
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
if(supplierCode==""){
supplierCode = detail.package.supplierCode
}
subList.push(detail)
}
})
})
this.dataContent.subList = subList
this.dataContent.supplierCode = supplierCode
this.dataContent.businessType = "PurchasePutaway"
this.dataContent.departmentCode= "研发部门";
this.dataContent.status= 1 ;
this.dataContent.autoCommit = "FALSE";
this.dataContent.autoAgree = "FALSE";
this.dataContent.autoExecute = "FALSE";
this.dataContent.directCreateRecord = "FALSE";
return this.dataContent;
},
}
}
</script>

55
pages/unPlanned/record/receiptRecord.vue

@ -52,7 +52,6 @@
import comMessage from '@/mycomponents/common/comMessage.vue'
import {
unPlannedReceiptRequestbSubmit,
unPlannedReceiptRecordbSubmit
} from '@/api/request2.js';
@ -99,7 +98,6 @@
businessTypeCode: "UnplannedReceipt",
reason: "",
reasonList: [],
fromType: "",
showToLoaction:true,
dataContent:{}
}
@ -120,20 +118,9 @@
},
onLoad(option) {
this.fromType = option.fromType
this.updateTitle();
},
methods: {
updateTitle(){
if (this.fromType == "requestType") {
updateTitle("计划外入库申请")
this.showToLoaction =false
} else {
updateTitle("计划外入库记录")
this.showToLoaction =true
}
},
openScanPopup() {
this.$refs.scanPopup.openScanPopup();
},
@ -249,21 +236,6 @@
return;
}
if(this.fromType=="requestType"){
var params = this.setRequestParams()
console.log("提交" + JSON.stringify(params))
// unPlannedReceiptRequestbSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
}else {
//
var itemCodes = []
this.detailSource.forEach(item => {
@ -292,7 +264,6 @@
this.showErrorMessage(res.message);
}
});
}
},
setParams(queryModel) {
@ -328,32 +299,6 @@
return this.dataContent;
},
setRequestParams(){
var subList = []
var supplierCode=""
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
if(supplierCode==""){
supplierCode = detail.package.supplierCode
}
subList.push(detail)
}
})
})
this.dataContent.subList = subList
this.dataContent.supplierCode = supplierCode
this.dataContent.businessType = "PurchasePutaway"
this.dataContent.departmentCode= "研发部门";
this.dataContent.status= 1 ;
this.dataContent.autoCommit = "FALSE";
this.dataContent.autoAgree = "FALSE";
this.dataContent.autoExecute = "FALSE";
this.dataContent.directCreateRecord = "FALSE";
return this.dataContent;
},
}
}
</script>

130
pages/unPlanned/request/issueRequest.vue

@ -33,13 +33,19 @@
import {
goHome,
updateTitle
updateTitle,
clearTirmAndWrap
} from '@/common/basic.js';
import {
getBusinessType,
} from '@/common/record.js';
import {
getUnPlannedIssueRequestList,
unPlannedIssueRequestApprove,
unPlannedIssueRequestClose,
unPlannedIssueRequestApproveAgree,
unPlannedIssueRequestApproveRefused,
unPlannedIssueRequestHandle
} from '@/api/request2.js';
import {
getDetailOption,
@ -82,7 +88,7 @@
this.detailOptions = getDetailOption();
this.detailAndApproveOptions = getDetailAndApproveOption()
this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(),
this.detailAndHandleOption = getDetailAndHandleOption()
this.detailAndHandleOption = getDetailAndHandleOption()
this.detailAndCloseOption = getDetailAndCloseOption()
},
@ -204,21 +210,39 @@
},
swipeClick(e, dataContent) {
if (e.content.text == "详情") {
console.log("详情", dataContent.id)
var text = clearTirmAndWrap(e.content.text)
if (text == "详情") {
this.openRequestInfoPopup(dataContent);
} else if (e.content.text == "处理") {
console.log("处理")
} else if (e.content.text == "审批") {
console.log("审批")
} else if (e.content.text == "审批通过") {
console.log("审批通过")
} else if (e.content.text == "审批驳回") {
console.log("审批驳回")
} else if (e.content.text == "关闭") {
console.log("关闭")
} else if (text == "处理") {
this.showQuestionMessage("确定要处理当前申请吗?",res=>{
this.unPlannedIssueRequestHandle(dataContent.id)
})
} else if (text == "提交审批") {
this.showQuestionMessage("确定要审批当前申请吗?",res=>{
this.unPlannedIssueRequestApprove(dataContent.id)
})
} else if (text == "审批通过") {
this.showQuestionMessage("确定要审批通过当前申请吗?",res=>{
this.unPlannedIssueRequestApproveAgree(dataContent.id)
})
} else if (text == "审批驳回") {
this.showQuestionMessage("确定要审批驳回当前申请吗?",res=>{
this.unPlannedIssueRequestApproveRefused(dataContent.id)
})
} else if (text == "关闭") {
this.showQuestionMessage("确定要关闭当前申请吗?",res=>{
this.unPlannedIssueRequestClose(dataContent.id)
})
}
},
showQuestionMessage(hint,callBack){
this.$refs.comMessage.showQuestionMessage(hint,
res => {
if (res) {
callBack()
}
});
},
switchChangeWait(state, jobStatus) {
this.checkedWaitTask = state;
this.status = jobStatus;
@ -267,6 +291,84 @@
}
});
},
unPlannedIssueRequestApprove(id) {
unPlannedIssueRequestApprove(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请提交审批成功"
})
} else {
this.showMessage("申请提交审批失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedIssueRequestClose(id) {
unPlannedIssueRequestClose(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请关闭成功"
})
} else {
this.showMessage("申请关闭失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedIssueRequestApproveAgree(id) {
unPlannedIssueRequestApproveAgree(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请审批通过成功"
})
} else {
this.showMessage("申请审批通过失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedIssueRequestApproveRefused(id) {
unPlannedIssueRequestApproveRefused(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请审批驳回成功"
})
} else {
this.showMessage("申请审批驳回失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedIssueRequestHandle(id) {
unPlannedIssueRequestHandle(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请处理成功"
})
} else {
this.showMessage("申请处理失败")
}
}).catch(error => {
this.showMessage(error)
})
},
}
}

191
pages/unPlanned/request/issueRequestCreate.vue

@ -3,36 +3,42 @@
<view class="">
<com-blank-view @goScan='showFromLocationPopup' v-if="detailSource.length==0"></com-blank-view>
</view>
<view class="page-wraper" v-if="detailSource.length>0">
<view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll">
<uni-data-picker style="padding: 20rpx; background-color:#fff;" class='uni-data-picker'
placeholder="请选择出库原因" popup-title="出库原因" :localdata="reasonList" v-model="reason">
</uni-data-picker>
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<record-com-detail-card :dataContent="item" :index="index"
@removeItem="removeItem(index,item)" @updateData="updateData" :isShowLocation="true"
@removePack="removePack">
</record-com-detail-card>
<view class="page-wraper" v-if="detailSource.length>0">
<view class="flex u-col-center" style="width: 100%;background-color:#fff;">
<view class="" style="margin-left: 20rpx; font-size: 30rpx;flex-shrink: 0;">出库原因</view>
<view style="width: 100%">
<uni-data-picker style="background-color:#fff;margin-right: 20rpx;" class='uni-data-picker'
placeholder="请选择出库原因" popup-title="出库原因" :localdata="reasonList" @change="reasonChange">
</uni-data-picker>
</view>
<u-line />
</view>
</scroll-view>
</view>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class="">
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
<view class="page-main" >
<scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class="">
<record-com-detail-card :dataContent="item" :index="index"
@removeItem="removeItem(index,item)" @updateData="updateData" :isShowLocation="true"
@removePack="removePack">
</record-com-detail-card>
</view>
<u-line />
</view>
</scroll-view>
</view>
<view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; ">
<view class="">
</view>
<view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view>
</view>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult' :title="'箱码'">
</win-scan-pack-and-location>
<win-scan-location ref="scanFromLocationCode" title="来源库位" @getLocation='getLocation'
@ -51,8 +57,7 @@
import comMessage from '@/mycomponents/common/comMessage.vue'
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import {
unPlannedIssueRequestSubmit,
unPlannedIssueRecordSubmit
unPlannedIssueRequestCreate,
} from '@/api/request2.js';
import {
@ -76,7 +81,10 @@
import {
goHome,
updateTitle
updateTitle,
getCurrDateTimes,
getCurrDateOneMonthsTimes,
navigateBack
} from '@/common/basic.js';
export default {
@ -100,14 +108,19 @@
toInventoryStatus: [],
businessType: {}, //
detailSource: [], //
reason: "",
reasonText: "",
reasonCode: "",
reasonList: [],
fromType: "",
dataContent:{}
dataContent: {},
}
},
mounted() {
},
onLoad(option) {
this.reasonList = getUnPlannedIssuseReasonList()
var typeCode = "UnplannedDeliver"
getBusinessType(typeCode, res => {
if (res.success) {
@ -118,15 +131,7 @@
this.$refs.comMessage.showBreakMessage(res.message);
}
});
},
onLoad(option) {
this.fromType = option.fromType
if (this.fromType == "requestType") {
updateTitle("计划外出库申请")
} else {
updateTitle("计划外出库记录")
}
},
methods: {
@ -219,83 +224,71 @@
this.detailSource.splice(index, 1)
},
commit() {
if (this.reason == '') {
if (this.reasonText == '') {
this.showErrorMessage("请选择出库原因")
return;
}
if(this.fromType=="requestType"){
var params = this.setRequestParams();
console.log("提交参数",JSON.stringify(params));
// unPlannedIssueRequestSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
}else {
// unPlannedIssueRecordSubmit(params).then(res => {
// uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
// } else {
// this.showErrorMessage("[" + res.msg + "]")
// }
// }).catch(error => {
// uni.hideLoading()
// this.showErrorMessage(error)
// })
if(this.detailSource.length==0){
this.showErrorMessage("请先扫描数据")
return;
}
},
setParams() {
var subList = []
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
// var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
// detail.packingNumber, detail.batch);
// detail.toPackingNumber =info.packingNumber;
// detail.toBatch =info.batch;
subList.push(detail)
}
})
uni.showLoading({
title: "提交中....",
mask: true
});
var params = this.setRequestParams();
console.log("提交参数", JSON.stringify(params));
unPlannedIssueRequestCreate(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)
})
return subList;
},
setRequestParams(){
setRequestParams() {
var subList = []
var supplierCode=""
this.detailSource.forEach(item => {
item.subList.forEach(detail => {
if (detail.scaned) {
if(supplierCode==""){
supplierCode = detail.package.supplierCode
}
detail.fromLocationCode = detail.locationCode;
detail.reason = this.reasonCode;
detail.containerNumber ="";
subList.push(detail)
}
})
})
this.dataContent.subList = subList
this.dataContent.supplierCode = supplierCode
this.dataContent.businessType = "PurchasePutaway"
this.dataContent.departmentCode= "研发部门";
this.dataContent.status= 1 ;
this.dataContent.autoCommit = "FALSE";
this.dataContent.autoAgree = "FALSE";
this.dataContent.autoExecute = "FALSE";
this.dataContent.directCreateRecord = "FALSE";
this.dataContent.status = 1;
this.dataContent.requestTime = getCurrDateTimes();
this.dataContent.dueTime = getCurrDateOneMonthsTimes();
return this.dataContent;
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
navigateBack(1)
})
},
reasonChange(e) {
if (e.detail.value.length == 0) {
this.reasonCode = ""
this.reasonText = ""
} else {
this.reasonCode = e.detail.value[0].value
this.reasonText = e.detail.value[0].text
}
}
}
}
</script>

133
pages/unPlanned/request/receiptRequest.vue

@ -35,11 +35,17 @@
} from '@/common/record.js';
import {
goHome,
updateTitle
updateTitle,
clearTirmAndWrap
} from '@/common/basic.js';
import {
getUnPlannedReceiptRequestList,
unPlannedReceiptRequestApprove,
unPlannedReceiptRequestClose,
unPlannedReceiptRequestApproveAgree,
unPlannedReceiptRequestApproveRefused,
unPlannedReceiptRequestHandle
} from '@/api/request2.js';
import {
getDetailOption,
@ -82,7 +88,7 @@
this.detailOptions = getDetailOption();
this.detailAndApproveOptions = getDetailAndApproveOption()
this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(),
this.detailAndHandleOption = getDetailAndHandleOption()
this.detailAndHandleOption = getDetailAndHandleOption()
this.detailAndCloseOption = getDetailAndCloseOption()
},
@ -197,27 +203,45 @@
openScanDetailPopup() {
uni.navigateTo({
url: "./receiptRequest?fromType=" + this.fromType
url: "./receiptRequestCreate"
})
},
swipeClick(e, dataContent) {
if (e.content.text == "详情") {
console.log("详情", dataContent.id)
var text = clearTirmAndWrap(e.content.text)
if (text == "详情") {
this.openRequestInfoPopup(dataContent);
} else if (e.content.text == "处理") {
console.log("处理")
} else if (e.content.text == "审批") {
console.log("审批")
} else if (e.content.text == "审批通过") {
console.log("审批通过")
} else if (e.content.text == "审批驳回") {
console.log("审批驳回")
} else if (e.content.text == "关闭") {
console.log("关闭")
} else if (text == "处理") {
this.showQuestionMessage("确定要处理当前申请吗?",res=>{
this.unPlannedReceiptRequestHandle(dataContent.id)
})
} else if (text == "提交审批") {
this.showQuestionMessage("确定要审批当前申请吗?",res=>{
this.unPlannedReceiptRequestApprove(dataContent.id)
})
} else if (text == "审批通过") {
this.showQuestionMessage("确定要审批通过当前申请吗?",res=>{
this.unPlannedReceiptRequestApproveAgree(dataContent.id)
})
} else if (text == "审批驳回") {
this.showQuestionMessage("确定要审批驳回当前申请吗?",res=>{
this.unPlannedReceiptRequestApproveRefused(dataContent.id)
})
} else if (text == "关闭") {
this.showQuestionMessage("确定要关闭当前申请吗?",res=>{
this.unPlannedReceiptRequestClose(dataContent.id)
})
}
},
showQuestionMessage(hint,callBack){
this.$refs.comMessage.showQuestionMessage(hint,
res => {
if (res) {
callBack()
}
});
},
switchChangeWait(state, jobStatus) {
this.checkedWaitTask = state;
this.status = jobStatus;
@ -266,6 +290,83 @@
}
});
},
unPlannedReceiptRequestApprove(id) {
unPlannedReceiptRequestApprove(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请提交审批成功"
})
} else {
this.showMessage("申请提交审批失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedReceiptRequestClose(id) {
unPlannedReceiptRequestClose(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请关闭成功"
})
} else {
this.showMessage("申请关闭失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedReceiptRequestApproveAgree(id) {
unPlannedReceiptRequestApproveAgree(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请审批通过成功"
})
} else {
this.showMessage("申请审批通过失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedReceiptRequestApproveRefused(id) {
unPlannedReceiptRequestApproveRefused(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请审批驳回成功"
})
} else {
this.showMessage("申请审批驳回失败")
}
}).catch(error => {
this.showMessage(error)
})
},
unPlannedReceiptRequestHandle(id) {
unPlannedReceiptRequestHandle(id).then(res => {
if (res.data) {
this.getList("refresh")
uni.showToast({
title: "申请处理成功"
})
} else {
this.showMessage("申请处理失败")
}
}).catch(error => {
this.showMessage(error)
})
},
}
}

217
pages/unPlanned/request/receiptRequestCreate.vue

@ -1,8 +1,223 @@
<template>
<view class="page-wraper">
<view class="" v-if='detailSource.subList.length==0'>
<com-blank-view @goScan='goScan(true)'></com-blank-view>
</view>
<view v-else class="page-wraper">
<view class="page-main">
<view class="">
<view class="" style="margin-left: 20rpx; margin-top: 20rpx;margin-bottom:20rpx;font-size: 30rpx;">
目标库位{{detailSource.toLocationCode}}
</view>
<view class="flex u-col-center" style="width: 100%;background-color:#fff;margin-bottom: 20rpx;margin-top: 20rpx;">
<view class="" style="margin-left: 20rpx; font-size: 30rpx;flex-shrink: 0;">入库原因</view>
<view style="width: 100%">
<uni-data-picker style="background-color:#fff;margin-right: 20rpx;" class='uni-data-picker'
placeholder="请选择入库原因" popup-title="入库原因" :localdata="reasonList" @change="reasonChange">
</uni-data-picker>
</view>
</view>
</view>
<u-line />
<view v-for="(item, index) in detailSource.subList" :key="index">
<item-qty :dataContent="item" :isShowStdPack="false">
</item-qty>
<u-line />
</view>
<button class="btn_add" @click="goScan(false)">+去添加</button>
</view>
<div class="btn_bottom">
<view class="" style="display: flex;flex-direction: row;">
<view class="">
<button class="btn_commit" hover-class="btn_commit_after" @click="submit()">提交</button>
</view>
</view>
</div>
<comMessage ref="comMessage"></comMessage>
</view>
</view>
<comReceiptRequestPopup ref="comIssueRequestPopup" @confirm='requestConfirm'></comReceiptRequestPopup>
</template>
<script>
import {
unPlannedReceiptRequestCreate
} from '@/api/request2.js';
import {
goHome,
updateTitle,
getRemoveOption,
getISODateTime,
navigateBack,
getBatch,
getCurrDateTimes,
getCurrDateOneMonthsTimes
} from '@/common/basic.js';
import {
getUnPlannedReceiptReasonList,
} from '@/common/directory.js';
import comBlankView from '@/mycomponents/common/comBlankView.vue'
import comReceiptRequestPopup from '@/pages/unPlanned/coms/comReceiptRequestPopup.vue'
import jobDetailPopup from '@/mycomponents/job/jobDetailPopup.vue'
import comMessage from '@/mycomponents/common/comMessage.vue'
import comIssueRequestCreator from '@/pages/issue/coms/comIssueRequestCreator.vue'
import itemQty from '@/mycomponents/item/itemQty.vue'
export default {
name: '',
components: {
comBlankView,
comReceiptRequestPopup,
jobDetailPopup,
comMessage,
itemQty
},
data() {
return {
jobContent: {}, //
subList: [], //subList
detailSource: {
subList: []
}, //
reasonList: [], //
reasonText: "",
reasonCode: "",
}
},
mounted() {
this.goScan(true)
},
onLoad(option) {
this.reasonList = getUnPlannedReceiptReasonList()
},
methods: {
goScan(editPosition) {
this.$refs.comIssueRequestPopup.openRequestPopup(editPosition);
},
//
requestConfirm(action, item) {
if (this.detailSource.subList.length == 0) {
this.detailSource = {
totalQty: 0,
toLocationCode:item.toLocationCode,
subList: []
}
var subItem = {
toLocationCode:item.toLocationCode,
itemCode: item.itemCode,
itemName: item.itemName,
qty: item.qty,
uom: item.uom,
}
this.detailSource.subList.push(subItem)
} else {
var result = this.detailSource.subList.filter(res => {
if (res.itemCode == item.itemCode) {
return res
}
})
//
if (result.length == 0) {
var subItem = {
itemCode: item.itemCode,
itemName: item.itemName,
qty: item.qty,
uom: item.uom
}
this.detailSource.subList.push(subItem)
} else {
//
result[0].qty += item.qty
}
}
this.caclcQty();
},
caclcQty() {
var totalQty = 0;
this.detailSource.subList.forEach(res => {
totalQty += res.qty
})
this.detailSource.totalQty = totalQty;
},
submit() {
if (this.reasonText == '') {
this.showErrorMessage("请选择入库原因")
return;
}
uni.showLoading({
title: "提交中....",
mask: true
});
var params = this.setRequestParams()
console.log("提交参数", JSON.stringify(params));
unPlannedReceiptRequestCreate(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)
})
},
setRequestParams() {
var subList = []
this.detailSource.subList.forEach(detail => {
detail.toLocationCode = this.detailSource.toLocationCode;
detail.reason = this.reasonCode;
detail.containerNumber = "";
detail.batch = getBatch();
detail.inventoryStatus = "OK";
console.log("",getBatch())
subList.push(detail)
})
this.dataContent.subList = subList
this.dataContent.status = 1;
this.dataContent.requestTime = getCurrDateTimes();
this.dataContent.dueTime = getCurrDateOneMonthsTimes();
return this.dataContent;
},
showCommitSuccessMessage(hint) {
this.$refs.comMessage.showSuccessMessage(hint, res => {
navigateBack(1)
})
},
showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
if (res) {}
});
},
reasonChange(e) {
if (e.detail.value.length == 0) {
this.reasonCode = ""
this.reasonText = ""
} else {
this.reasonCode = e.detail.value[0].value
this.reasonText = e.detail.value[0].text
}
}
}
}
</script>
<style>
</style>
</style>

3
static/config.json

@ -18,7 +18,7 @@
"request_url": {
"name": "request_url",
"value": "http://dev.ccwin-in.com:25100/api/admin-api",
"value": "http://192.168.0.157:12080/admin-api",
"dev2": "http://192.168.0.157:12080/admin-api",
"chefang": "http://192.168.0.178:12080/admin-api",
"chenxinming": "http://192.168.0.230:12080/admin-api",
@ -26,6 +26,7 @@
"local": "http://localhost:12080",
"desc": "api请求地址"
},
"tenantId": {
"name": "tenantId",
"value": "1",

Loading…
Cancel
Save