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 11 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); uni.request(options);
}); });
} }
export default service; export default service;

4
api/index.js

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

313
api/request2.js

@ -1,4 +1,5 @@
import request from '@/api/httpRequest3.js' import request from '@/api/httpRequest3.js'
import storage from '@/common/utils/storage'
// const baseApi = "/api/admin-api" // const baseApi = "/api/admin-api"
//公司地址 //公司地址
// 本地地址 // 本地地址
@ -624,7 +625,7 @@ export function getPurchaseReturnRequestDetail(id) {
*/ */
export function purchaseReturnRequestClose(id) { export function purchaseReturnRequestClose(id) {
return request({ return request({
url: baseApi + "/wms/purchasereturn-request-main/close?id="+id, url: baseApi + "/wms/purchasereturn-request-main/close?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -634,9 +635,9 @@ export function purchaseReturnRequestClose(id) {
* 采购退货申请 提交审批 * 采购退货申请 提交审批
* @param {*} params * @param {*} params
*/ */
export function purchaseReturnRequestSubmitApprove(id) { export function purchaseReturnRequestApprove(id) {
return request({ return request({
url: baseApi + "/wms/purchasereturn-request-main/submit?id="+id, url: baseApi + "/wms/purchasereturn-request-main/submit?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -646,9 +647,9 @@ export function purchaseReturnRequestSubmitApprove(id) {
* 采购退货申请 提交审批通过 * 采购退货申请 提交审批通过
* @param {*} params * @param {*} params
*/ */
export function purchaseReturnRequestSubmitApproveAgree(id) { export function purchaseReturnRequestApproveAgree(id) {
return request({ return request({
url: baseApi + "/wms/purchasereturn-request-main/agree?id="+id, url: baseApi + "/wms/purchasereturn-request-main/agree?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -658,9 +659,9 @@ export function purchaseReturnRequestSubmitApproveAgree(id) {
* 采购退货申请 审批驳回 * 采购退货申请 审批驳回
* @param {*} params * @param {*} params
*/ */
export function purchaseReturnRequestSubmitApproveRefused(id) { export function purchaseReturnRequestApproveRefused(id) {
return request({ return request({
url: baseApi + "/wms/purchasereturn-request-main/refused?id="+id, url: baseApi + "/wms/purchasereturn-request-main/refused?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -672,7 +673,7 @@ export function purchaseReturnRequestSubmitApproveRefused(id) {
*/ */
export function purchaseReturnRequestHandle(id) { export function purchaseReturnRequestHandle(id) {
return request({ return request({
url: baseApi + "/wms/purchasereturn-request-main/handle?id="+id, url: baseApi + "/wms/purchasereturn-request-main/handle?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -683,7 +684,7 @@ export function purchaseReturnRequestHandle(id) {
* 采购退货申请 提交 * 采购退货申请 提交
* @param {*} params * @param {*} params
*/ */
export function purchaseReturnRequestSubmit(params) { export function purchaseReturnRequestCreate(params) {
return request({ return request({
url: baseApi + "/wms/purchasereturn-request-main/create", url: baseApi + "/wms/purchasereturn-request-main/create",
method: "post", method: "post",
@ -1163,39 +1164,39 @@ export function getCountJobDetail(id) {
} }
/** /**
* 盘点 任务承接 * 盘点任务 任务承接
* @param {*} id * @param {*} id
* *
*/ */
export function takeCountJob(id) { export function takeCountJob(id) {
return request({ return request({
url: baseApi + "/wms/purchasereceipt-job-main/accept?id=" + id, url: baseApi + "/wms/count-job-main/accept?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
} }
/** /**
* 盘点 放弃承接 * 盘点任务 放弃承接
* @param {*} id * @param {*} id
* *
*/ */
export function cancleTakeCountJob(id) { export function cancleTakeCountJob(id) {
return request({ return request({
url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id, url: baseApi + "/wms/count-job-main/abandon?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
} }
/** /**
* 盘点 任务提交 * 盘点任务 提交
* @param {*} 任务id * @param {*} 任务id
* *
*/ */
export function countJobSubmit(params) { export function countJobSubmit(params) {
return request({ return request({
url: baseApi + "/magic-api/pda/job/purchasereceipt/jobSubmit?id=" + id, url: baseApi + "/wms/count-job-main/execute",
method: "put", method: "put",
data: params, data: params,
}); });
@ -1270,17 +1271,78 @@ export function unPlannedReceiptJobSubmit(params) {
} }
/** /**
* 计划外入库申请 提交 * 计划外入库申请 创建
* @param {*} params * @param {*} params
*/ */
export function unPlannedReceiptRequestbSubmit(params) { export function unPlannedReceiptRequestCreate(params) {
return request({ return request({
url: baseApi + "/magic-api/pda/job/purchasereturn/jobSubmit", url: baseApi + "/wms/unplannedreceipt-request-main/create",
method: "put", method: "post",
data: params, 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 * @param {*} params
@ -1365,7 +1427,7 @@ export function unPlannedIssueJobSubmit(params) {
* 计划外出库申请 提交 * 计划外出库申请 提交
* @param {*} params * @param {*} params
*/ */
export function unPlannedIssueRequestSubmit(params) { export function unPlannedIssueRequestCreate(params) {
return request({ return request({
url: baseApi + "/wms/unplannedissue-request-main/create", url: baseApi + "/wms/unplannedissue-request-main/create",
method: "post", 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 * @param {*} params
@ -1415,26 +1538,26 @@ export function getProductReceiptJobDetail(id) {
} }
/** /**
* 制品收货 承接 * 制品收货任务 承接
* @param {*} id * @param {*} id
* *
*/ */
export function takeProductReceiptJob(id) { export function takeProductReceiptJob(id) {
return request({ return request({
url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id, url: baseApi + "/wms/productreceipt-job-main/accept?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
} }
/** /**
* 制品收货 放弃承接 * 制品收货任务 放弃承接
* @param {*} id * @param {*} id
* *
*/ */
export function cancleTakeProductReceiptJob(id) { export function cancleTakeProductReceiptJob(id) {
return request({ return request({
url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id, url: baseApi + "/wms/productreceipt-job-main/abandon?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -1446,7 +1569,7 @@ export function cancleTakeProductReceiptJob(id) {
*/ */
export function productReceiptJobsubmit(params) { export function productReceiptJobsubmit(params) {
return request({ return request({
url: baseApi + "/magic-api/pda/job/purchasereturn/jobSubmit", url: baseApi + "/wms/productreceipt-job-main/execute",
method: "put", method: "put",
data: params, data: params,
}); });
@ -2129,7 +2252,7 @@ export function issueRequestSubmit(params) {
*/ */
export function issueRequestHandle(id) { export function issueRequestHandle(id) {
return request({ return request({
url: baseApi + "/wms/issue-request-main/handle?id="+id, url: baseApi + "/wms/issue-request-main/handle?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -2142,7 +2265,7 @@ export function issueRequestHandle(id) {
*/ */
export function issueRequestSubmitApprove(id) { export function issueRequestSubmitApprove(id) {
return request({ return request({
url: baseApi + "/wms/issue-request-main/submit?id="+id, url: baseApi + "/wms/issue-request-main/submit?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -2154,7 +2277,7 @@ export function issueRequestSubmitApprove(id) {
*/ */
export function issueRequestSubmitApproveAgree(id) { export function issueRequestSubmitApproveAgree(id) {
return request({ return request({
url: baseApi + "/wms/issue-request-main/agree?id="+id, url: baseApi + "/wms/issue-request-main/agree?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -2166,7 +2289,7 @@ export function issueRequestSubmitApproveAgree(id) {
*/ */
export function issueRequestSubmitApproveRefused(id) { export function issueRequestSubmitApproveRefused(id) {
return request({ return request({
url: baseApi + "/wms/issue-request-main/refused?id="+id, url: baseApi + "/wms/issue-request-main/refused?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -2178,7 +2301,7 @@ export function issueRequestSubmitApproveRefused(id) {
*/ */
export function issueRequestClose(id) { export function issueRequestClose(id) {
return request({ return request({
url: baseApi + "/wms/issue-request-main/close?id="+id, url: baseApi + "/wms/issue-request-main/close?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -2465,7 +2588,7 @@ export function unPlannedReceiptRequestSubmit(params) {
/** /**
* 报废出库 任务 * 报废出库任务
* status 任务状态 * status 任务状态
* 开始日期 * 开始日期
* 结束日期 * 结束日期
@ -2498,7 +2621,7 @@ export function getScrapJobDetail(id) {
*/ */
export function takeScrapJob(id) { export function takeScrapJob(id) {
return request({ return request({
url: baseApi + "/wms/purchasereceipt-job-main/accept?id=" + id, url: baseApi + "/wms/scrap-job-main/accept?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -2511,7 +2634,7 @@ export function takeScrapJob(id) {
*/ */
export function cancleTakeScrapJob(id) { export function cancleTakeScrapJob(id) {
return request({ return request({
url: baseApi + "/wms/purchasereceipt-job-main/abandon?id=" + id, url: baseApi + "/wms/scrap-job-main/abandon?id=" + id,
method: "put", method: "put",
data: {}, data: {},
}); });
@ -2524,7 +2647,7 @@ export function cancleTakeScrapJob(id) {
*/ */
export function scrapJobSubmit(params) { export function scrapJobSubmit(params) {
return request({ return request({
url: baseApi + "/magic-api/pda/job/purchasereceipt/jobSubmit?id=" + id, url: baseApi + "/wms/scrap-job-main/execute",
method: "put", method: "put",
data: params, data: params,
}); });
@ -2560,17 +2683,77 @@ export function getScrapRequestDetail(id) {
} }
/** /**
* 报废出库申请 提交 * 报废出库申请 创建
* @param {*} params * @param {*} params
*/ */
export function scrapRequestSubmit(params) { export function scrapRequestCreate(params) {
return request({ return request({
url: baseApi + "/wms/purchasereturn-request-main/submit", url: baseApi + "/wms/scrap-request-main/create",
method: "put", method: "post",
data: params, 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 * @param {*} params
@ -2769,3 +2952,57 @@ export function getBalanceByFilter(param) {
data: 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; 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() { export function getCurrDate() {
var date = new Date(); var date = new Date();
return getDate(date); return getDate(date);
@ -733,11 +802,11 @@ export function getISODateTime() {
//格式化处理 //格式化处理
export function dateFormat(time) { export function dateFormat(time) {
var result = "" var result = ""
if(time!=null){ if (time != null) {
let date = new Date(time); let date = new Date(time);
result = getDate(date) + " " + getTime(date); result = getDate(date) + " " + getTime(date);
} }
return result; return result;
} }

31
common/directory.js

@ -9,6 +9,7 @@ let containerTypeList = [];
let packUnitList = []; let packUnitList = [];
let requestStatusList = []; let requestStatusList = [];
let unplannedReceiptReasonList = []; let unplannedReceiptReasonList = [];
let unplannedIssueReasonList = [];
let unplannedIissueReason = []; let unplannedIissueReason = [];
let scrapReasonList = []; let scrapReasonList = [];
let inspectFailedReasonList = []; let inspectFailedReasonList = [];
@ -16,6 +17,8 @@ let nextActionList = [];
let inspectTypeList = []; let inspectTypeList = [];
let sampleMethodList = []; let sampleMethodList = [];
let transferModeList = []; let transferModeList = [];
let countStageList = [];
// 获取业务类型字典项 // 获取业务类型字典项
@ -42,6 +45,7 @@ export function clearCacheData() {
packUnitList = []; packUnitList = [];
requestStatusList = []; requestStatusList = [];
unplannedReceiptReasonList = []; unplannedReceiptReasonList = [];
unplannedIssueReasonList=[];
unplannedIissueReason = []; unplannedIissueReason = [];
scrapReasonList = []; scrapReasonList = [];
inspectFailedReasonList = []; inspectFailedReasonList = [];
@ -49,6 +53,7 @@ export function clearCacheData() {
inspectTypeList = []; inspectTypeList = [];
sampleMethodList =[]; sampleMethodList =[];
transferModeList = []; transferModeList = [];
countStageList =[];
} }
//获取字典信息 //获取字典信息
@ -329,7 +334,7 @@ export function getUnPlannedReceiptReasonList(value) {
} }
unplannedReceiptReasonList.forEach(res => { unplannedReceiptReasonList.forEach(res => {
res.text = res.label; res.text = res.label;
res.value = res.code res.value = res.value
}) })
return unplannedReceiptReasonList return unplannedReceiptReasonList
} }
@ -341,7 +346,7 @@ export function getUnPlannedIssuseReasonList(value) {
} }
unplannedIssueReasonList.forEach(res => { unplannedIssueReasonList.forEach(res => {
res.text = res.label; res.text = res.label;
res.value = res.code res.value = res.value
}) })
return unplannedIssueReasonList return unplannedIssueReasonList
} }
@ -353,7 +358,7 @@ export function getScarpReasonList(value) {
} }
scrapReasonList.forEach(res => { scrapReasonList.forEach(res => {
res.text = res.label; res.text = res.label;
res.value = res.code res.value = res.value
}) })
return scrapReasonList return scrapReasonList
} }
@ -434,6 +439,26 @@ export function getTransferModeName(value) {
return resultInfo 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 items = scanMsg.split(';');
let header = items[0]; let header = items[0];
let version = items[1]; let version = items[1];
if (header != '' && version != '') { if ((header != undefined) && (version!=undefined)) {
//解析扫描的是一维码还是二维码 //解析扫描的是一维码还是二维码
let type = header.substring(header.length - 1, header.length); let type = header.substring(header.length - 1, header.length);
if (type == 'Q') //qrcode if (type == 'Q') //qrcode
@ -26,6 +26,18 @@ export function getLabelInfo(scanMsg, callBack) {
} else { //直接输入文本 } else { //直接输入文本
getBarCodeInfo('text', 'V1.0', scanMsg, callBack); 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', barType: 'QRCode',
}, },
package: {}, package: {},
sucess: true, success: true,
message: '' message: ''
} }
getLabelByHeader(header, version).then(res => { getLabelByHeader(header, version).then(res => {
if (res.data==null) { if (res.data==null) {
labelResult.sucess = false; labelResult.success = false;
labelResult.message = '未查找到标签头为[' + header + ']的标签类型'; labelResult.message = '未查找到标签头为[' + header + ']的标签类型';
callBack(labelResult); callBack(labelResult);
} else { } else {
@ -57,7 +69,7 @@ export function getQRCodeInfo(header, version, scanMsg, callBack) {
getLabelItems(newItem, scanMsg, callBack); getLabelItems(newItem, scanMsg, callBack);
} }
}).catch(err => { }).catch(err => {
labelResult.sucess = false; labelResult.success = false;
labelResult.message = err; labelResult.message = err;
callBack(err); callBack(err);
}) })
@ -74,7 +86,7 @@ export function getLabelItems(labelItem, scanMsg, callBack) {
if (packingNumber != undefined) { if (packingNumber != undefined) {
getPackageByNumber(packingNumber).then(pack => { getPackageByNumber(packingNumber).then(pack => {
if (pack.data.list.length == 0) { if (pack.data.list.length == 0) {
labelResult.sucess = false; labelResult.success = false;
labelResult.message = '包装号[' + packingNumber + ']没有包装信息'; labelResult.message = '包装号[' + packingNumber + ']没有包装信息';
} else { } else {
labelResult.package = pack.data.list[0]; labelResult.package = pack.data.list[0];
@ -82,12 +94,12 @@ export function getLabelItems(labelItem, scanMsg, callBack) {
} }
callBack(labelResult); callBack(labelResult);
}).catch(err => { }).catch(err => {
labelResult.sucess = false; labelResult.success = false;
labelResult.message = err; labelResult.message = err;
callBack(labelResult); callBack(labelResult);
}) })
} else { } else {
labelResult.sucess = false; labelResult.success = false;
labelResult.message = '在条码中未解析到箱码'; labelResult.message = '在条码中未解析到箱码';
callBack(labelResult); callBack(labelResult);
} }
@ -103,7 +115,7 @@ export function analysisQRCodeLabel(labelItem, scanMsg) {
barType: 'QRCode', barType: 'QRCode',
}, },
package: {}, package: {},
sucess: true, success: true,
message: '' message: ''
} }
@ -112,7 +124,7 @@ export function analysisQRCodeLabel(labelItem, scanMsg) {
labelResult.message = "未读取到分隔符"; labelResult.message = "未读取到分隔符";
} else { } else {
if (scanMsg.indexOf(separators) < 0) { if (scanMsg.indexOf(separators) < 0) {
labelResult.sucess = false; labelResult.success = false;
labelResult.message = "标签格式不正确"; labelResult.message = "标签格式不正确";
} else { } else {
try { try {
@ -153,7 +165,7 @@ export function getBarCodeInfo(header, version, value, callBack) {
code:value code:value
}, },
package: null, package: null,
sucess: true, success: true,
message: '', message: '',
} }
callBack(labelResult); callBack(labelResult);

40
common/scan.js

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

1
mycomponents/detail/comRequestDetailCard.vue

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

5
mycomponents/location/requiredLocation.vue

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

47
mycomponents/qty/CountQtyEdit.vue

@ -43,7 +43,7 @@
</view> </view>
</view> </view>
<u-line /> <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> <text>库存数量 : </text>
<view class="uni-flex uni-row uni-center" style="align-items: center;"> <view class="uni-flex uni-row uni-center" style="align-items: center;">
<text class="text_recommend">{{Number(dataContent.balanceQty)}}</text> <text class="text_recommend">{{Number(dataContent.balanceQty)}}</text>
@ -52,7 +52,7 @@
</view> </view>
<u-line /> <u-line />
<view v-if="isShowStatus" class="uni-flex uni-row space-between title" <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> <text>库存状态 : </text>
<view class="uni-flex uni-row uni-center" style="align-items: center;"> <view class="uni-flex uni-row uni-center" style="align-items: center;">
<balanceStatus ref="balanceStatus" :status="inventoryStatus" :allowEdit='false' <balanceStatus ref="balanceStatus" :status="inventoryStatus" :allowEdit='false'
@ -102,7 +102,6 @@
stateData: 0, stateData: 0,
balanceQty: 0, balanceQty: 0,
inventoryStatus: "", inventoryStatus: "",
originalInventoryStatus: "",
dataContent: {}, dataContent: {},
handleQty: 0, handleQty: 0,
seconds: 0, seconds: 0,
@ -131,6 +130,10 @@
type: Boolean, type: Boolean,
default: true default: true
}, },
isShowBalance: {
type: Boolean,
default: true
},
allowEditStatus: { allowEditStatus: {
type: Boolean, type: Boolean,
default: false default: false
@ -139,8 +142,6 @@
methods: { methods: {
openEditPopup(item, detaiList) { openEditPopup(item, detaiList) {
this.dataContent = item this.dataContent = item
// this.originalInventoryStatus = this.dataContent.inventoryStatus
// this.inventoryStatus = this.dataContent.toInventoryStatus
this.inventoryStatus = this.dataContent.inventoryStatus; this.inventoryStatus = this.dataContent.inventoryStatus;
this.allQty = Number(this.dataContent.qty) this.allQty = Number(this.dataContent.qty)
this.showConfirmCountdown = false; this.showConfirmCountdown = false;
@ -151,8 +152,6 @@
openEditPopupShowSeconds(item, detaiList) { openEditPopupShowSeconds(item, detaiList) {
this.dataContent = item; this.dataContent = item;
// this.originalInventoryStatus = this.dataContent.inventoryStatus
// this.inventoryStatus = this.dataContent.toInventoryStatus
this.inventoryStatus = this.dataContent.inventoryStatus; this.inventoryStatus = this.dataContent.inventoryStatus;
this.allQty = Number(this.dataContent.qty); this.allQty = Number(this.dataContent.qty);
this.showConfirmCountdown = true; this.showConfirmCountdown = true;
@ -179,7 +178,6 @@
this.setValue(); this.setValue();
}, },
cancel() { cancel() {
this.dataContent.inventoryStatus = this.originalInventoryStatus;
this.closeEditPopup(); this.closeEditPopup();
}, },
startTimer() { startTimer() {
@ -197,42 +195,11 @@
this.allQty = val * this.dataContent.stdPackQty; this.allQty = val * this.dataContent.stdPackQty;
}, },
setValue() { setValue() {
this.dataContent.qty = Number(this.allQty) this.dataContent.handleQty = Number(this.allQty)
this.$emit("confirm"); this.$emit("confirm");
this.closeEditPopup(); 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) { updateStatus(value) {
this.inventoryStatus = value this.inventoryStatus = value
console.log(this.inventoryStatus) console.log(this.inventoryStatus)

16
mycomponents/qty/compareQty.vue

@ -13,13 +13,15 @@
<view v-else-if="Number(recommendQty) ==Number( handleQty)" class="text_equal"> <view v-else-if="Number(recommendQty) ==Number( handleQty)" class="text_equal">
{{Number(handleQty)}} {{Number(handleQty)}}
</view> </view>
</view> </view>
<view class="std_split">/</view> <view v-if="Number(handleQty)>0 " class="std_split">/</view>
<view class="text_recommend center"> <view v-if="isShowRecommendQty" class="text_recommend center">
{{Number(recommendQty)}} {{Number(recommendQty)}}
</view> </view>
</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>
<view> <view>
<std-pack-qty v-show="isShowStdPack" :dataContent="dataContent"></std-pack-qty> <std-pack-qty v-show="isShowStdPack" :dataContent="dataContent"></std-pack-qty>
@ -71,6 +73,10 @@
isShowStdPack: { isShowStdPack: {
type: Boolean, type: Boolean,
default: true default: true
},
isShowRecommendQty: {
type: Boolean,
default: true
} }
}, },
watch: { 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 => { getLabelInfo(content, callback => {
let scanResult = callback; let scanResult = callback;
if (scanResult.sucess) { if (scanResult.success) {
that.clear(); that.clear();
// that.getfocus();// // that.getfocus();//
that.$emit("getResult", scanResult); that.$emit("getResult", scanResult);
} else { } else {
that.clear();
this.$refs.comMessage.showErrorMessage(scanResult.message, res => { this.$refs.comMessage.showErrorMessage(scanResult.message, res => {
if (res) { if (res) {
that.getfocus(); that.getfocus();

2
mycomponents/scan/winScanPack.vue

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

17
pages.json

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

6
pages/count/coms/comCountDetailCard.vue

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

17
pages/count/coms/comCountJobCard.vue

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

23
pages/count/coms/jobInfoPopup.vue

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

284
pages/count/job/countDetail.vue

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

61
pages/deliver/request/deliverRequestCreate.vue

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

2
pages/index/index.vue

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

118
pages/inspect/coms/inspectEdit.vue

@ -1,6 +1,6 @@
<template> <template>
<view class=""> <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="uni-list popuni_list camera_list">
<view class="list_cell uni-flex uni-row space-between"> <view class="list_cell uni-flex uni-row space-between">
<view class="title">箱码</view> <view class="title">箱码</view>
@ -49,8 +49,8 @@
</view> </view>
</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>
<view class="pop_btn uni-flex uni-row space-between" v-if="!disabled"> <view class="pop_btn uni-flex uni-row space-between" v-if="!disabled">
<button class="cancel" @click="back">返回</button> <button class="cancel" @click="back">返回</button>
@ -65,6 +65,12 @@
import { import {
getInspectFailedReasonList, getInspectFailedReasonList,
} from '@/common/directory.js'; } from '@/common/directory.js';
import {
uploadFile,
getFileList,
deleteFileById
} from '@/api/request2.js';
import comMessage from '@/mycomponents/common/comMessage.vue' import comMessage from '@/mycomponents/common/comMessage.vue'
import uploadCamera from '@/pages/inspect/coms/uploadCamera.vue' import uploadCamera from '@/pages/inspect/coms/uploadCamera.vue'
import uom from '@/mycomponents/qty/uom.vue' import uom from '@/mycomponents/qty/uom.vue'
@ -81,7 +87,8 @@
failedReasonIndex: 0, failedReasonIndex: 0,
failedReasonArray: [], failedReasonArray: [],
dataContent: {}, dataContent: {},
failedReasonArray: [] failedReasonArray: [],
picInfoList: []
} }
}, },
props: { props: {
@ -101,11 +108,93 @@
this.failedReasonArray = getInspectFailedReasonList(); this.failedReasonArray = getInspectFailedReasonList();
// //
this.dataContent = Object.assign({}, item) this.dataContent = Object.assign({}, item)
this.getFileList();
this.$refs['editPopup'].open("bottom"); 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() { back() {
this.$refs['editPopup'].close(); this.afterSave()
},
maskClick() {
}, },
afterSave() { afterSave() {
@ -119,6 +208,8 @@
} }
}); });
}, },
save() { save() {
var failedQty = Number(this.dataContent.failedQty); var failedQty = Number(this.dataContent.failedQty);
var crackQty = Number(this.dataContent.crackQty); var crackQty = Number(this.dataContent.crackQty);
@ -137,13 +228,26 @@
} }
this.dataContent.failedQty = failedQty; this.dataContent.failedQty = failedQty;
this.dataContent.crackQty = crackQty this.dataContent.crackQty = crackQty
this.dataContent.goodQty = this.dataContent.handleQty -failedQty-crackQty this.dataContent.goodQty = this.dataContent.handleQty - failedQty - crackQty
this.afterSave() 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> </script>

6
pages/inspect/coms/uploadCamera.vue

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

30
pages/inspect/job/inspectDetail.vue

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

61
pages/inspect/job/inspectFullDetail.vue

@ -39,8 +39,9 @@
takeInspectJob, takeInspectJob,
cancleTakeInspectJob, cancleTakeInspectJob,
getInspectJobDetail, getInspectJobDetail,
getBasicLocationByCode, inspectJobSubmit,
inspectJobSubmit deleteFileById,
getFileList
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
goHome, goHome,
@ -147,6 +148,27 @@
}, },
methods: { 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) { receive(callback) {
uni.showLoading({ uni.showLoading({
@ -182,6 +204,7 @@
this.jobContent.crackQty = 0; this.jobContent.crackQty = 0;
this.jobContent.notPassedQty = 0; this.jobContent.notPassedQty = 0;
that.subList = res.data.subList; that.subList = res.data.subList;
this.clearPicList(that.subList);
that.subList.forEach(res => { that.subList.forEach(res => {
res.batch = that.jobContent.batch res.batch = that.jobContent.batch
res.goodQty = 0; res.goodQty = 0;
@ -330,23 +353,23 @@
commit() { commit() {
this.scanCount = getScanCount(this.subList); this.scanCount = getScanCount(this.subList);
if (this.scanCount == 0) { // if (this.scanCount == 0) {
this.showErrorMessage("扫描数为0,请先扫描") // this.showErrorMessage("0,")
return; // 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() { submitJob() {
@ -455,7 +478,7 @@
list.push(detail) 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.subList = list
this.jobContent.nextAction = "PARTIAL_OK"; this.jobContent.nextAction = "PARTIAL_OK";
return this.jobContent; return this.jobContent;

9
pages/issue/coms/comIssueDetailCard.vue

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

10
pages/issue/coms/comIssueRequestCreator.vue

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

10
pages/issue/job/issueDetail.vue

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

8
pages/issue/request/issueRequest.vue

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

3
pages/issue/request/issueRequestCreate.vue

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

7
pages/package/record/mergePackageRecord.vue

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

7
pages/package/record/overPackageRecord.vue

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

5
pages/package/record/splitPackageRecord.vue

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

7
pages/pallet/record/unBindPalletRecord.vue

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

3
pages/productDismantle/coms/requestInfoPopup.vue

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

6
pages/productDismantle/job/productDismantleDetail.vue

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

7
pages/productPutaway/job/productPutawayDetail.vue

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

71
pages/productReceipt/coms/comProductDetailCard.vue

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

4
pages/productReceipt/coms/comProductJobCard.vue

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

2
pages/productReceipt/job/productReceiptJob.vue

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

4
pages/productionReceipt/job/productionReceiptDetail.vue

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

199
pages/productionReturn/coms/comReturnRequestCreator.vue

@ -1,88 +1,159 @@
<template> <template>
<view class=""> <view class="" style="background-color: #fff;">
<uni-collapse ref="collapse"> <view class="uni-flex uni-column">
<uni-collapse-item :open="true"> <comReturnRequestInfo :workShopCode="dataContent.workshopCode" :dataContent="dataContent">
<com-issue-request-info :workShopCode="dataContent.workshopCode" :dataContent="dataContent"> </comReturnRequestInfo>
</com-issue-request-info> <uni-swipe-action ref="swipeAction">
<u-line /> <view v-for="(item, index) in dataContent.subList" :key="index">
<uni-swipe-action ref="swipeAction"> <uni-swipe-action-item @click="swipeClick($event,item)" :right-options="detailOptions">
<view v-for="(item, index) in dataContent.subList" :key="index"> <item-qty :dataContent="item" :isShowStdPack="false">
<uni-swipe-action-item> </item-qty>
<view class="" style="font-size: 32rpx;margin: 10rpx;"> <!-- <view v-if="item.batch!=''" style="margin-left: 10rpx;">
<view class=""> <batch :batch="item.batch" ></batch>
生产线 : {{item.productionLineName}}({{item.productionLineCode}}) </view> -->
</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>
<u-line /> <u-line />
</view> </uni-swipe-action-item>
</uni-swipe-action> </view>
</uni-swipe-action>
</uni-collapse-item> </view>
</uni-collapse> <request-detail-info-popup ref="jobDetailPopup"></request-detail-info-popup>
<com-message ref="message"></com-message>
</view> </view>
</template> </template>
<script> <script>
import uom from '@/mycomponents/qty/uom.vue' import itemCompareQty from '@/mycomponents/item/itemCompareQty.vue'
import comIssueRequestInfo from '@/pages/issue/coms/comIssueRequestInfo.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 { export default {
emits: ['openDetail'],
components: { components: {
uom itemCompareQty,
}, recommend,
data() { balanceQtyEdit,
return { comMessage,
itemQty,
} comReturnRequestInfo,
requestDetailInfoPopup,
batch
}, },
props: { props: {
dataContent: { dataContent: {
type: Object, type: Object,
default: {} 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: { watch: {
update(){ dataContent(newVal) {
this.$nextTick(r => { this.requestItem = newVal.subList[0];
this.$refs.collapse.resize()
});
}, },
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> </script>

4
pages/productionReturn/coms/comReturnRequestInfo.vue

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

14
pages/productionReturn/request/requestDetail.vue

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

24
pages/productionReturn/request/returnRequestCreate.vue

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

2
pages/purchaseReceipt/coms/comReceiptDetailCard.vue

@ -10,7 +10,7 @@
<uni-swipe-action ref="swipeAction"> <uni-swipe-action ref="swipeAction">
<uni-swipe-action-item @click="swipeClick($event,item)" <uni-swipe-action-item @click="swipeClick($event,item)"
:right-options="item.scaned?scanOptions:detailOptions"> :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-item>
</uni-swipe-action> </uni-swipe-action>
<u-line color="#D8D8D8"></u-line> <u-line color="#D8D8D8"></u-line>

4
pages/purchaseReturn/record/returnRecord.vue

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

29
pages/purchaseReturn/request/returnRequest.vue

@ -41,9 +41,9 @@
import { import {
getPurchaseReturnRequestList, getPurchaseReturnRequestList,
purchaseReturnRequestClose, purchaseReturnRequestClose,
purchaseReturnRequestSubmitApprove, purchaseReturnRequestApprove,
purchaseReturnRequestSubmitApproveAgree, purchaseReturnRequestApproveAgree,
purchaseReturnRequestSubmitApproveRefused, purchaseReturnRequestApproveRefused,
purchaseReturnRequestHandle purchaseReturnRequestHandle
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
@ -201,7 +201,7 @@
openScanDetailPopup(item) { openScanDetailPopup(item) {
uni.navigateTo({ uni.navigateTo({
url: "../record/returnRecord?fromType=" + this.fromType url: "./returnRequestCreate"
}) })
}, },
@ -215,15 +215,15 @@
}) })
} else if (text == "提交审批") { } else if (text == "提交审批") {
this.showQuestionMessage("确定要审批当前申请吗?",res=>{ this.showQuestionMessage("确定要审批当前申请吗?",res=>{
this.purchaseReturnRequestSubmitApprove(dataContent.id) this.purchaseReturnRequestApprove(dataContent.id)
}) })
} else if (text=="审批通过") { } else if (text=="审批通过") {
this.showQuestionMessage("确定要审批通过当前申请吗?",res=>{ this.showQuestionMessage("确定要审批通过当前申请吗?",res=>{
this.purchaseReturnRequestSubmitApproveAgree(dataContent.id) this.purchaseReturnRequestApproveAgree(dataContent.id)
}) })
} else if (text == "审批驳回") { } else if (text == "审批驳回") {
this.showQuestionMessage("确定要审批驳回当前申请吗?",res=>{ this.showQuestionMessage("确定要审批驳回当前申请吗?",res=>{
this.purchaseReturnRequestSubmitApproveRefused(dataContent.id) this.purchaseReturnRequestApproveRefused(dataContent.id)
}) })
} else if (text == "关闭") { } else if (text == "关闭") {
this.showQuestionMessage("确定要关闭当前申请吗?",res=>{ this.showQuestionMessage("确定要关闭当前申请吗?",res=>{
@ -290,9 +290,8 @@
}, },
purchaseReturnRequestApprove(id) {
purchaseReturnRequestSubmitApprove(id) { purchaseReturnRequestApprove(id).then(res => {
purchaseReturnRequestSubmitApprove(id).then(res => {
if (res.data) { if (res.data) {
this.getList("refresh") this.getList("refresh")
uni.showToast({ uni.showToast({
@ -323,8 +322,8 @@
this.showMessage(error) this.showMessage(error)
}) })
}, },
purchaseReturnRequestSubmitApproveAgree(id) { purchaseReturnRequestApproveAgree(id) {
purchaseReturnRequestSubmitApproveAgree(id).then(res => { purchaseReturnRequestApproveAgree(id).then(res => {
if (res.data) { if (res.data) {
this.getList("refresh") this.getList("refresh")
uni.showToast({ uni.showToast({
@ -338,8 +337,8 @@
this.showMessage(error) this.showMessage(error)
}) })
}, },
purchaseReturnRequestSubmitApproveRefused(id) { purchaseReturnRequestApproveRefused(id) {
purchaseReturnRequestSubmitApproveRefused(id).then(res => { purchaseReturnRequestApproveRefused(id).then(res => {
if (res.data) { if (res.data) {
this.getList("refresh") this.getList("refresh")
uni.showToast({ uni.showToast({
@ -354,7 +353,7 @@
}) })
}, },
purchaseReturnRequestHandle(id) { purchaseReturnRequestHandle(id) {
purchaseReturnRequestSubmitApproveRefused(id).then(res => { purchaseReturnRequestHandle(id).then(res => {
if (res.data) { if (res.data) {
this.getList("refresh") this.getList("refresh")
uni.showToast({ 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 { } else {
if (res.data.subList.length > 0) { if (res.data.subList.length > 0) {
that.jobContent = res.data; that.jobContent = res.data;
that.jobContent.outInventoryStatuses='INSP'
that.subList = res.data.subList; that.subList = res.data.subList;
that.detailSource = getDataSource(that.subList) that.detailSource = getDataSource(that.subList)
@ -301,6 +300,7 @@
if (res) { if (res) {
itemDetail.scaned = true; itemDetail.scaned = true;
itemDetail.handleQty = Number(result.balance.qty) ; itemDetail.handleQty = Number(result.balance.qty) ;
itemDetail.toInventoryStatus =result.balance.inventoryStatus
itemDetail.balance = result.balance; itemDetail.balance = result.balance;
itemDetail.balance.balanceQty = result.balance.qty; itemDetail.balance.balanceQty = result.balance.qty;
itemDetail.balance.stdPackQty = result.package.stdPackQty itemDetail.balance.stdPackQty = result.package.stdPackQty
@ -313,6 +313,7 @@
} else { } else {
itemDetail.scaned = true; itemDetail.scaned = true;
itemDetail.handleQty = Number(result.balance.qty) ; itemDetail.handleQty = Number(result.balance.qty) ;
itemDetail.toInventoryStatus =itemDetail.inventoryStatus
itemDetail.balance = result.balance; itemDetail.balance = result.balance;
itemDetail.balance.balanceQty = result.balance.qty; itemDetail.balance.balanceQty = result.balance.qty;
itemDetail.balance.stdPackQty = result.package.stdPackQty itemDetail.balance.stdPackQty = result.package.stdPackQty
@ -439,8 +440,6 @@
detail.toPackingNumber = info.packingNumber; detail.toPackingNumber = info.packingNumber;
detail.toBatch = info.batch; detail.toBatch = info.batch;
detail.toContainerNumber = ''; detail.toContainerNumber = '';
detail.toInventoryStatus = detail.inventoryStatus;
detail.singlePrice = detail.balance.singlePrice; detail.singlePrice = detail.balance.singlePrice;
detail.amount = detail.balance.singlePrice * detail.handleQty; detail.amount = detail.balance.singlePrice * detail.handleQty;
@ -448,9 +447,6 @@
detail.arriveDate = detail.balance.arriveDate; detail.arriveDate = detail.balance.arriveDate;
detail.produceDate = detail.balance.produceDate; detail.produceDate = detail.balance.produceDate;
detail.expireDate = detail.balance.expireDate; detail.expireDate = detail.balance.expireDate;
// "arriveDate": 1694591614000,
// "produceDate": 1694591615000,
// "expireDate": 1694591617000,
subList.push(detail) subList.push(detail)
} }
}) })

60
pages/repleinsh/coms/comScanReplishPack.vue

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

24
pages/repleinsh/job/repleinshDetail.vue

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

5
pages/scrap/coms/comScrapDetailCard.vue

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

12
pages/scrap/coms/comScrapJobCard.vue

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

58
pages/scrap/job/scrapJobDetail.vue

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

836
pages/scrap/record/scrapRecord.vue

@ -1,428 +1,408 @@
<template> <template>
<view class="page-wraper"> <view class="page-wraper">
<view class=""> <view class="">
<com-blank-view @goScan='getLocation' v-if="fromLocationCode==''"></com-blank-view> <com-blank-view @goScan='getLocation' v-if="fromLocationCode==''"></com-blank-view>
</view> </view>
<view class="page-wraper" v-if="fromLocationCode!=''"> <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="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 class="" style=" text-align: center;font-size: 32rpx;font-weight: 700;margin-left: 20rpx;">
报废原因 : 报废原因 :
</view> </view>
<uni-data-picker v-if="detailSource.length>0" style="padding: 20rpx; background-color:#fff;" <uni-data-picker v-if="detailSource.length>0" style="padding: 20rpx; background-color:#fff;"
class='uni-data-picker' placeholder="请选择原因" popup-title="选择报废原因" :localdata="reasonList" class='uni-data-picker' placeholder="请选择原因" popup-title="选择报废原因" :localdata="reasonList"
v-model="reason"> v-model="reason">
</uni-data-picker> </uni-data-picker>
</view> </view>
<view class="page-main"> <view class="page-main">
<scroll-view scroll-y="true" class="page-main-scroll"> <scroll-view scroll-y="true" class="page-main-scroll">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id"> <view class="detail-list" v-for="(item, index) in detailSource" :key="item.id">
<view class=""> <view class="">
<record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent" <record-com-detail-card :dataContent="item" :index="index" :settingParam="dataContent"
:isShowLocation="true" @removeItem="removeItem(index,item)" @updateData="updateData" :isShowLocation="true" @removeItem="removeItem(index,item)" @updateData="updateData"
@removePack="removePack"> @removePack="removePack">
</record-com-detail-card> </record-com-detail-card>
</view> </view>
<u-line /> <u-line />
</view> </view>
</scroll-view> </scroll-view>
</view> </view>
<view class="page-footer"> <view class="page-footer">
<view class="uni-flex u-col-center space-between padding_10" <view class="uni-flex u-col-center space-between padding_10"
style="background-color:ghostwhite; width: 100%; "> style="background-color:ghostwhite; width: 100%; ">
<view class=""> <view class="">
</view> </view>
<view class=" uni-flex uni-row"> <view class=" uni-flex uni-row">
<button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button> <button class="btn_single_commit" hover-class="btn_commit_after" @click="commit">提交</button>
</view> </view>
</view> </view>
</view> </view>
<win-scan-button @goScan='openScanPopup'></win-scan-button> <win-scan-button @goScan='openScanPopup'></win-scan-button>
</view> </view>
<win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult'></win-scan-pack-and-location> <win-scan-pack-and-location ref="scanPopup" @getResult='getScanResult'></win-scan-pack-and-location>
<comMessage ref="comMessage"></comMessage> <comMessage ref="comMessage"></comMessage>
<win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation' <win-scan-location ref="scanLocationCode" title="来源库位" @getLocation='getLocation'
:locationTypeList="fromlocationTypeList"></win-scan-location> :locationTypeList="fromlocationTypeList"></win-scan-location>
</view> </view>
</template> </template>
<script> <script>
import { import {
scrapRequestSubmit, scrapRecordSubmit
scrapRecordSubmit } from '@/api/request2.js';
} from '@/api/request2.js';
import {
import { goHome,
goHome, updateTitle,
updateTitle, getScarpReasonList
getScarpReasonList } from '@/common/basic.js';
} from '@/common/basic.js';
import {
import { getInventoryStatusDesc,
getInventoryStatusDesc, getDirectoryItemArray,
getDirectoryItemArray, } from '@/common/directory.js';
} from '@/common/directory.js';
import {
import { getBusinessType,
getBusinessType, createItemInfo,
createItemInfo, createDetailInfo,
createDetailInfo, calcHandleQty
calcHandleQty } from '@/common/record.js';
} from '@/common/record.js';
import winScanButton from '@/mycomponents/scan/winScanButton.vue'
import winScanButton from '@/mycomponents/scan/winScanButton.vue' import winScanPack from '@/mycomponents/scan/winScanPack.vue'
import winScanPack from '@/mycomponents/scan/winScanPack.vue' import requiredLocation from '@/mycomponents/location/requiredLocation.vue'
import requiredLocation from '@/mycomponents/location/requiredLocation.vue' import comBlankView from '@/mycomponents/common/comBlankView.vue'
import comBlankView from '@/mycomponents/common/comBlankView.vue' import winScanLocation from "@/mycomponents/scan/winScanLocation.vue"
import winScanLocation from "@/mycomponents/scan/winScanLocation.vue" import comMessage from '@/mycomponents/common/comMessage.vue'
import comMessage from '@/mycomponents/common/comMessage.vue' import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue"
import winScanPackAndLocation from "@/mycomponents/scan/winScanPackAndLocation.vue" import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
export default {
export default { components: {
components: { winScanButton,
winScanButton, winScanPack,
winScanPack, requiredLocation,
requiredLocation, comBlankView,
comBlankView, winScanLocation,
winScanLocation, comMessage,
comMessage, winScanPackAndLocation,
winScanPackAndLocation, recordComDetailCard
recordComDetailCard },
}, data() {
data() { return {
return { id: '',
id: '', receiptJob: {},
receiptJob: {}, received: false,
received: false, isShowPackingCode: true,
isShowPackingCode: true, scanCount: 0,
scanCount: 0, dataContent: {}, //
dataContent: {}, // subList: [], //subList
subList: [], //subList detailSource: [], //
detailSource: [], // locationTypeList: [],
locationTypeList: [], toLocationInfo: {},
toLocationInfo: {}, businessTypeInfo: {},
businessTypeInfo: {}, fromLocationInfo: {},
fromLocationInfo: {}, fromLocationCode: "",
fromLocationCode: "", isShowLocation: false,
isShowLocation: false, fromlocationTypeList: [],
fromlocationTypeList: [], tolocationTypeList: [],
tolocationTypeList: [], allowModifyLocation: false,
allowModifyLocation: false, inInventoryStatus: "", //
inInventoryStatus: "", // outInventoryStatus: "", //
outInventoryStatus: "", // businessType: {},
businessType: {}, reasonList: [],
reasonList: [], reason: "",
reason: "", };
fromType:"" },
}; onLoad(option) {
}, this.reasonList = getScarpReasonList();
onLoad(option) { var typeCode = "Scrap"
this.fromType = option.fromType getBusinessType(typeCode, res => {
if(this.fromType=="requestType"){ updateTitle("报废申请") }else { updateTitle("报废记录") } if (res.success) {
this.reasonList = getScarpReasonList(); this.businessType = res.businessType;
var typeCode = "Scrap" this.fromlocationTypeList = res.fromlocationTypeList;
getBusinessType(typeCode, res => { this.tolocationTypeList = res.tolocationTypeList;
if (res.success) { this.showFromLocationPopup();
this.businessType = res.businessType; } else {
this.fromlocationTypeList = res.fromlocationTypeList; this.$refs.comMessage.showBreakMessage(res.message );
this.tolocationTypeList = res.tolocationTypeList; }
this.showFromLocationPopup(); });
} else {
this.$refs.comMessage.showBreakMessage(res.message ); },
} //
}); onNavigationBarButtonTap(e) {
if (e.index === 0) {
}, goHome();
// }
onNavigationBarButtonTap(e) { },
if (e.index === 0) { //
goHome(); onBackPress(e) {},
}
}, onPullDownRefresh() {},
//
onBackPress(e) {}, mounted() {
onPullDownRefresh() {}, },
methods: {
mounted() { getScanResult(result) {
let balance = result.balance;
}, let label = result.label;
methods: { let pack = result.package;
getScanResult(result) { var item = this.detailSource.find(res => {
let balance = result.balance; if (res.itemCode == balance.itemCode) {
let label = result.label; return res
let pack = result.package; }
var item = this.detailSource.find(res => { })
if (res.itemCode == balance.itemCode) { if (item == undefined) {
return res var itemp = createItemInfo(balance, pack);
} let newDetail = createDetailInfo(balance, pack); //
}) itemp.subList.push(newDetail);
if (item == undefined) { this.detailSource.push(itemp)
var itemp = createItemInfo(balance, pack); } else {
let newDetail = createDetailInfo(balance, pack); // var detail = item.subList.find(r => {
itemp.subList.push(newDetail); if (r.packingNumber == balance.packingNumber &&
this.detailSource.push(itemp) r.batch == balance.batch &&
} else { r.locationCode == balance.locationCode &&
var detail = item.subList.find(r => { r.inventoryStatus == balance.inventoryStatus) {
if (r.packingNumber == balance.packingNumber && return r;
r.batch == balance.batch && }
r.locationCode == balance.locationCode && })
r.inventoryStatus == balance.inventoryStatus) { if (detail == undefined) {
return r; let newDetail = createDetailInfo(balance, pack);
} item.subList.push(newDetail);
}) } else {
if (detail == undefined) { if (detail.scaned == true) {
let newDetail = createDetailInfo(balance, pack); this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]已经在列表中")
item.subList.push(newDetail); }
} else { }
if (detail.scaned == true) { }
this.showErrorMessage("箱码[" + balance.packingNumber + "批次[" + balance.batch + "]已经在列表中") this.calcHandleQty();
}
} },
}
this.calcHandleQty(); createItemInfo(balance, pack) {
let item = {
}, itemCode: balance.itemCode,
itemName: pack.itemName,
createItemInfo(balance, pack) { stdPackQty: pack.stdPackQty,
let item = { stdPackUnit: pack.stdPackUnit,
itemCode: balance.itemCode, qty: Number(balance.qty),
itemName: pack.itemName, handleQty: 0,
stdPackQty: pack.stdPackQty, uom: pack.uom,
stdPackUnit: pack.stdPackUnit, subList: []
qty: Number(balance.qty), }
handleQty: 0, return item;
uom: pack.uom, },
subList: []
} showErrorMessage(message) {
return item; this.$refs.comMessage.showErrorMessage(message, res => {
}, if (res) {
showErrorMessage(message) { }
this.$refs.comMessage.showErrorMessage(message, res => { });
if (res) { },
calcHandleQty() {
} calcHandleQty(this.detailSource)
}); this.$forceUpdate();
}, },
calcHandleQty() {
calcHandleQty(this.detailSource) updateData() {
this.$forceUpdate(); this.calcHandleQty();
}, },
removeItem(index, item) {
updateData() { this.detailSource.splice(index, 1)
this.calcHandleQty(); },
}, removePack() {
removeItem(index, item) { for (var i = 0; i < this.detailSource.length; i++) {
this.detailSource.splice(index, 1) var item = this.detailSource[i];
}, if (item.subList.length == 0) {
removePack() { this.detailSource.splice(i, 1)
for (var i = 0; i < this.detailSource.length; i++) { }
var item = this.detailSource[i]; }
if (item.subList.length == 0) { this.updateData();
this.detailSource.splice(i, 1) },
}
} openScanPopup() {
this.updateData();
}, if (this.fromLocationCode == "") {
this.showFromLocationPopup();
openScanPopup() { return
}
if (this.fromLocationCode == "") { this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType);
this.showFromLocationPopup(); },
return showFromLocationPopup() {
} this.$nextTick(() => {
this.$refs.scanPopup.openScanPopupForType(this.fromLocationCode, this.businessType); this.$refs.scanLocationCode.openScanPopup();
}, })
showFromLocationPopup() { },
this.$nextTick(() => {
this.$refs.scanLocationCode.openScanPopup(); closeScanPopup() {
}) this.$refs.scanPopup.closeScanPopup();
}, },
closeScanPopup() { scanPopupGetFocus() {
this.$refs.scanPopup.closeScanPopup(); this.$refs.scanPopup.getfocus();
}, },
scanPopupGetFocus() {
this.$refs.scanPopup.getfocus(); commit() {
}, if(this.reason==""){
this.showMessage("请先选择报废原因")
return;
commit() { }
if(this.reason==""){ //
this.showMessage("请先选择报废原因") uni.showLoading({
return; title: "提交中....",
} mask: true
// });
uni.showLoading({
title: "提交中....",
mask: true // scrapRecordSubmit(params).then(res => {
}); // uni.hideLoading()
// if (res.data) {
// this.showCommitSuccessMessage("<br>" + res.data, )
if(this.fromType=="requestType"){ // } else {
var params = this.setRequestParams(); // this.showErrorMessage("[" + res.msg + "]")
console.log("提交" + JSON.stringify(params)) // }
// scrapRequestSubmit(params).then(res => { // }).catch(error => {
// uni.hideLoading() // uni.hideLoading()
// if (res.data) { // this.showErrorMessage(error)
// this.showCommitSuccessMessage("<br>" + res.data, ) // })
// } else {
// this.showErrorMessage("[" + res.msg + "]") },
// }
// }).catch(error => { setParams() {
// uni.hideLoading() var subList = []
// this.showErrorMessage(error) this.detailSource.forEach(item => {
// }) item.subList.forEach(detail => {
}else { if (detail.scaned) {
// scrapRecordSubmit(params).then(res => { // var info = getPackingNumberAndBatch(this.managementList, detail.itemCode,
// uni.hideLoading() // detail.packingNumber, detail.batch);
// if (res.data) { // detail.toPackingNumber =info.packingNumber;
// this.showCommitSuccessMessage("<br>" + res.data, ) // detail.toBatch =info.batch;
// } else { subList.push(detail)
// this.showErrorMessage("[" + res.msg + "]") }
// } })
// }).catch(error => { })
// uni.hideLoading() return subList;
// this.showErrorMessage(error) },
// })
} setRequestParams(){
var subList = []
}, var supplierCode=""
this.detailSource.forEach(item => {
setParams() { item.subList.forEach(detail => {
var subList = [] if (detail.scaned) {
this.detailSource.forEach(item => { if(supplierCode==""){
item.subList.forEach(detail => { supplierCode = detail.package.supplierCode
if (detail.scaned) { }
// var info = getPackingNumberAndBatch(this.managementList, detail.itemCode, subList.push(detail)
// detail.packingNumber, detail.batch); }
// detail.toPackingNumber =info.packingNumber; })
// detail.toBatch =info.batch; })
subList.push(detail)
} this.dataContent.subList = subList
}) this.dataContent.supplierCode = supplierCode
}) this.dataContent.businessType = "PurchasePutaway"
return subList; this.dataContent.departmentCode= "研发部门";
}, this.dataContent.status= 1 ;
this.dataContent.autoCommit = "FALSE";
setRequestParams(){ this.dataContent.autoAgree = "FALSE";
var subList = [] this.dataContent.autoExecute = "FALSE";
var supplierCode="" this.dataContent.directCreateRecord = "FALSE";
this.detailSource.forEach(item => { return this.dataContent;
item.subList.forEach(detail => { },
if (detail.scaned) {
if(supplierCode==""){
supplierCode = detail.package.supplierCode showMessage(message) {
} this.$refs.comMessage.showMessage(message, res => {
subList.push(detail) if (res) {}
} });
}) },
}) showErrorMessage(message) {
this.$refs.comMessage.showErrorMessage(message, res => {
this.dataContent.subList = subList if (res) {
this.dataContent.supplierCode = supplierCode
this.dataContent.businessType = "PurchasePutaway" }
this.dataContent.departmentCode= "研发部门"; });
this.dataContent.status= 1 ; },
this.dataContent.autoCommit = "FALSE";
this.dataContent.autoAgree = "FALSE"; showScanMessage(message) {
this.dataContent.autoExecute = "FALSE"; this.$refs.comMessage.showScanMessage(message);
this.dataContent.directCreateRecord = "FALSE"; },
return this.dataContent;
}, afterCloseMessage() {
this.scanPopupGetFocus();
},
showMessage(message) {
this.$refs.comMessage.showMessage(message, res => { closeScanMessage() {
if (res) {} this.scanPopupGetFocus();
}); },
}, getLocation(location, code) {
showErrorMessage(message) { this.getFromLocationCode(location, code)
this.$refs.comMessage.showErrorMessage(message, res => { },
if (res) { getFromLocationCode(location, code) {
this.fromLocationInfo = location;
} this.fromLocationCode = code;
}); this.openScanPopup();
}, },
showScanMessage(message) { showCommitSuccessMessage(hint) {
this.$refs.comMessage.showScanMessage(message); this.$refs.comMessage.showSuccessMessage(hint, res => {
}, this.fromLocationCode = '';
afterCloseMessage() { })
this.scanPopupGetFocus(); },
},
updateData() {
closeScanMessage() { this.calcHandleQty();
this.scanPopupGetFocus(); for (var i = 0; i < this.detailSource.length; i++) {
}, let item = this.detailSource[i];
getLocation(location, code) { if (item.qty == 0) {
this.getFromLocationCode(location, code) this.detailSource.splice(i, 1)
}, }
getFromLocationCode(location, code) { }
this.fromLocationInfo = location; }
this.fromLocationCode = code; }
this.openScanPopup(); }
}, </script>
showCommitSuccessMessage(hint) { <style scoped lang="scss">
this.$refs.comMessage.showSuccessMessage(hint, res => { page {
this.fromLocationCode = ''; width: 100%;
height: 100%;
}) background-color: #fff;
}, }
updateData() { .page-wraper {
this.calcHandleQty(); display: flex;
for (var i = 0; i < this.detailSource.length; i++) { flex-direction: column;
let item = this.detailSource[i]; width: 100%;
if (item.qty == 0) { height: 100%;
this.detailSource.splice(i, 1) }
}
}
} .page-main {
} flex: 1;
} position: relative;
</script> }
<style scoped lang="scss"> .page-main-scroll {
page { position: absolute;
width: 100%; left: 0;
height: 100%; right: 0;
background-color: #fff; top: 0;
} bottom: 0;
}
.page-wraper {
display: flex; .page-main-list {
flex-direction: column; /* height: 80rpx;
width: 100%; line-height: 80rpx; */
height: 100%; text-align: center;
} background: #e0e0e0;
}
.page-main { </style>
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 updateTitle
} from '@/common/basic.js'; } from '@/common/basic.js';
import {
getBusinessType,
} from '@/common/record.js';
import { import {
getScrapRequestList, getScrapRequestList,
scrapRequestApprove,
scrapRequestClose,
scrapRequestApproveAgree,
scrapRequestApproveRefused,
scrapRequestHandle
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
getDetailOption, getDetailOption,
@ -112,7 +114,6 @@
}, },
methods: { methods: {
requestConfirm(action, item) {},
openRequestInfoPopup(item) { openRequestInfoPopup(item) {
this.$refs.requestInfoPopup.openPopup(item) this.$refs.requestInfoPopup.openPopup(item)
@ -195,27 +196,45 @@
openScanDetailPopup() { openScanDetailPopup() {
uni.navigateTo({ uni.navigateTo({
url: "../record/scrapRecord?fromType=" + this.fromType url: "./scrapRequestCreate"
}) })
}, },
swipeClick(e, dataContent) { swipeClick(e, dataContent) {
if (e.content.text == "详情") { var text = clearTirmAndWrap(e.content.text)
console.log("详情", dataContent.id) if (text == "详情") {
this.openRequestInfoPopup(dataContent); this.openRequestInfoPopup(dataContent);
} else if (e.content.text == "处理") { } else if (text == "处理") {
console.log("处理") this.showQuestionMessage("确定要处理当前申请吗?",res=>{
} else if (e.content.text == "审批") { this.scrapRequestHandle(dataContent.id)
console.log("审批") })
} else if (e.content.text == "审批通过") { } else if (text == "提交审批") {
console.log("审批通过") this.showQuestionMessage("确定要审批当前申请吗?",res=>{
} else if (e.content.text == "审批驳回") { this.scrapRequestApprove(dataContent.id)
console.log("审批驳回") })
} else if (e.content.text == "关闭") { } else if (text == "审批通过") {
console.log("关闭") 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) { switchChangeWait(state, jobStatus) {
this.checkedWaitTask = state; 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> </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; this.id = option.id;
if (this.id != undefined) { if (this.id != undefined) {
// // // //
// if (option.status == "JOB_PENDING") { if (option.status == "1") {
// this.receive((callback => { this.receive((callback => {
// this.received = true; this.received = true;
// this.getDetail(); this.getDetail();
// })); }));
// } else { } else {
// this.getDetail(); this.getDetail();
// } }
this.getDetail();
} }
}, },
// //
@ -278,7 +277,7 @@
checkLocation() { checkLocation() {
var isPass = true; var isPass = true;
if (this.toLocationCode == "" || this.toLocationCode == null) { if (this.toLocationCode == "" || this.toLocationCode == null) {
this.showMessageHint('请扫描收货库位', callback => { this.showMessageHint('请扫描目标库位', callback => {
this.$refs.comScanLocation.showLocation(); this.$refs.comScanLocation.showLocation();
}) })
@ -311,17 +310,18 @@
this.managementList = res.list; this.managementList = res.list;
var params = this.setParams() var params = this.setParams()
console.log("提交参数", JSON.stringify(params)); console.log("提交参数", JSON.stringify(params));
// unPlannedReceiptJobSubmit(params).then(res => { unPlannedReceiptJobSubmit(params).then(res => {
// if (res.data) { uni.hideLoading()
// this.showCommitSuccessMessage("<br>" + res.data) if (res.data) {
// } else { this.showCommitSuccessMessage("提交成功<br>生成计划外入库记录<br>" + res.data)
// this.showErrorMessage("[" + res.msg + "]") } else {
// } this.showErrorMessage("提交失败[" + res.msg + "]")
// uni.hideLoading() }
// }).catch(error => {
// uni.hideLoading() }).catch(error => {
// this.showErrorMessage(error) uni.hideLoading()
// }) this.showErrorMessage(error)
})
} else { } else {
uni.hideLoading(); uni.hideLoading();
this.showErrorMessage(res.message); this.showErrorMessage(res.message);
@ -340,6 +340,8 @@
detail.packingNumber, detail.batch); detail.packingNumber, detail.batch);
detail.toPackingNumber = info.packingNumber; detail.toPackingNumber = info.packingNumber;
detail.toBatch = info.batch; detail.toBatch = info.batch;
detail.toLocationCode = this.toLocationCode
detail.toContainerNumber = '';
subList.push(detail) subList.push(detail)
} }
}) })

53
pages/unPlanned/record/issueRecord.vue

@ -51,7 +51,6 @@
import comMessage from '@/mycomponents/common/comMessage.vue' import comMessage from '@/mycomponents/common/comMessage.vue'
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue' import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import { import {
unPlannedIssueRequestSubmit,
unPlannedIssueRecordSubmit unPlannedIssueRecordSubmit
} from '@/api/request2.js'; } from '@/api/request2.js';
@ -102,7 +101,6 @@
detailSource: [], // detailSource: [], //
reason: "", reason: "",
reasonList: [], reasonList: [],
fromType: "",
dataContent:{} dataContent:{}
} }
}, },
@ -121,12 +119,6 @@
}, },
onLoad(option) { onLoad(option) {
this.fromType = option.fromType
if (this.fromType == "requestType") {
updateTitle("计划外出库申请")
} else {
updateTitle("计划外出库记录")
}
}, },
methods: { methods: {
@ -223,24 +215,7 @@
this.showErrorMessage("请选择出库原因") this.showErrorMessage("请选择出库原因")
return; return;
} }
var params =this.setParams()
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 => { // unPlannedIssueRecordSubmit(params).then(res => {
// uni.hideLoading() // uni.hideLoading()
// if (res.data) { // if (res.data) {
@ -252,7 +227,6 @@
// uni.hideLoading() // uni.hideLoading()
// this.showErrorMessage(error) // this.showErrorMessage(error)
// }) // })
}
}, },
setParams() { setParams() {
@ -271,31 +245,6 @@
return subList; 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> </script>

55
pages/unPlanned/record/receiptRecord.vue

@ -52,7 +52,6 @@
import comMessage from '@/mycomponents/common/comMessage.vue' import comMessage from '@/mycomponents/common/comMessage.vue'
import { import {
unPlannedReceiptRequestbSubmit,
unPlannedReceiptRecordbSubmit unPlannedReceiptRecordbSubmit
} from '@/api/request2.js'; } from '@/api/request2.js';
@ -99,7 +98,6 @@
businessTypeCode: "UnplannedReceipt", businessTypeCode: "UnplannedReceipt",
reason: "", reason: "",
reasonList: [], reasonList: [],
fromType: "",
showToLoaction:true, showToLoaction:true,
dataContent:{} dataContent:{}
} }
@ -120,20 +118,9 @@
}, },
onLoad(option) { onLoad(option) {
this.fromType = option.fromType
this.updateTitle();
}, },
methods: { methods: {
updateTitle(){
if (this.fromType == "requestType") {
updateTitle("计划外入库申请")
this.showToLoaction =false
} else {
updateTitle("计划外入库记录")
this.showToLoaction =true
}
},
openScanPopup() { openScanPopup() {
this.$refs.scanPopup.openScanPopup(); this.$refs.scanPopup.openScanPopup();
}, },
@ -249,21 +236,6 @@
return; 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 = [] var itemCodes = []
this.detailSource.forEach(item => { this.detailSource.forEach(item => {
@ -292,7 +264,6 @@
this.showErrorMessage(res.message); this.showErrorMessage(res.message);
} }
}); });
}
}, },
setParams(queryModel) { setParams(queryModel) {
@ -328,32 +299,6 @@
return this.dataContent; 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> </script>

130
pages/unPlanned/request/issueRequest.vue

@ -33,13 +33,19 @@
import { import {
goHome, goHome,
updateTitle updateTitle,
clearTirmAndWrap
} from '@/common/basic.js'; } from '@/common/basic.js';
import { import {
getBusinessType, getBusinessType,
} from '@/common/record.js'; } from '@/common/record.js';
import { import {
getUnPlannedIssueRequestList, getUnPlannedIssueRequestList,
unPlannedIssueRequestApprove,
unPlannedIssueRequestClose,
unPlannedIssueRequestApproveAgree,
unPlannedIssueRequestApproveRefused,
unPlannedIssueRequestHandle
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
getDetailOption, getDetailOption,
@ -82,7 +88,7 @@
this.detailOptions = getDetailOption(); this.detailOptions = getDetailOption();
this.detailAndApproveOptions = getDetailAndApproveOption() this.detailAndApproveOptions = getDetailAndApproveOption()
this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(), this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(),
this.detailAndHandleOption = getDetailAndHandleOption() this.detailAndHandleOption = getDetailAndHandleOption()
this.detailAndCloseOption = getDetailAndCloseOption() this.detailAndCloseOption = getDetailAndCloseOption()
}, },
@ -204,21 +210,39 @@
}, },
swipeClick(e, dataContent) { swipeClick(e, dataContent) {
if (e.content.text == "详情") { var text = clearTirmAndWrap(e.content.text)
console.log("详情", dataContent.id) if (text == "详情") {
this.openRequestInfoPopup(dataContent); this.openRequestInfoPopup(dataContent);
} else if (e.content.text == "处理") { } else if (text == "处理") {
console.log("处理") this.showQuestionMessage("确定要处理当前申请吗?",res=>{
} else if (e.content.text == "审批") { this.unPlannedIssueRequestHandle(dataContent.id)
console.log("审批") })
} else if (e.content.text == "审批通过") { } else if (text == "提交审批") {
console.log("审批通过") this.showQuestionMessage("确定要审批当前申请吗?",res=>{
} else if (e.content.text == "审批驳回") { this.unPlannedIssueRequestApprove(dataContent.id)
console.log("审批驳回") })
} else if (e.content.text == "关闭") { } else if (text == "审批通过") {
console.log("关闭") 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) { switchChangeWait(state, jobStatus) {
this.checkedWaitTask = state; this.checkedWaitTask = state;
this.status = jobStatus; 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=""> <view class="">
<com-blank-view @goScan='showFromLocationPopup' v-if="detailSource.length==0"></com-blank-view> <com-blank-view @goScan='showFromLocationPopup' v-if="detailSource.length==0"></com-blank-view>
</view> </view>
<view class="page-wraper" v-if="detailSource.length>0"> <view class="page-wraper" v-if="detailSource.length>0">
<view class="page-main"> <view class="flex u-col-center" style="width: 100%;background-color:#fff;">
<scroll-view scroll-y="true" class="page-main-scroll"> <view class="" style="margin-left: 20rpx; font-size: 30rpx;flex-shrink: 0;">出库原因</view>
<uni-data-picker style="padding: 20rpx; background-color:#fff;" class='uni-data-picker' <view style="width: 100%">
placeholder="请选择出库原因" popup-title="出库原因" :localdata="reasonList" v-model="reason"> <uni-data-picker style="background-color:#fff;margin-right: 20rpx;" class='uni-data-picker'
</uni-data-picker> placeholder="请选择出库原因" popup-title="出库原因" :localdata="reasonList" @change="reasonChange">
<view class="detail-list" v-for="(item, index) in detailSource" :key="item.id"> </uni-data-picker>
<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> </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>
<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>
</view> </view>
<win-scan-button @goScan='openScanPopup'></win-scan-button>
</view> </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 ref="scanPopup" @getResult='getScanResult' :title="'箱码'">
</win-scan-pack-and-location> </win-scan-pack-and-location>
<win-scan-location ref="scanFromLocationCode" title="来源库位" @getLocation='getLocation' <win-scan-location ref="scanFromLocationCode" title="来源库位" @getLocation='getLocation'
@ -51,8 +57,7 @@
import comMessage from '@/mycomponents/common/comMessage.vue' import comMessage from '@/mycomponents/common/comMessage.vue'
import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue' import recordComDetailCard from '@/mycomponents/record/recordComDetailCard.vue'
import { import {
unPlannedIssueRequestSubmit, unPlannedIssueRequestCreate,
unPlannedIssueRecordSubmit
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
@ -76,7 +81,10 @@
import { import {
goHome, goHome,
updateTitle updateTitle,
getCurrDateTimes,
getCurrDateOneMonthsTimes,
navigateBack
} from '@/common/basic.js'; } from '@/common/basic.js';
export default { export default {
@ -100,14 +108,19 @@
toInventoryStatus: [], toInventoryStatus: [],
businessType: {}, // businessType: {}, //
detailSource: [], // detailSource: [], //
reason: "", reasonText: "",
reasonCode: "",
reasonList: [], reasonList: [],
fromType: "", dataContent: {},
dataContent:{}
} }
}, },
mounted() { mounted() {
},
onLoad(option) {
this.reasonList = getUnPlannedIssuseReasonList()
var typeCode = "UnplannedDeliver" var typeCode = "UnplannedDeliver"
getBusinessType(typeCode, res => { getBusinessType(typeCode, res => {
if (res.success) { if (res.success) {
@ -118,15 +131,7 @@
this.$refs.comMessage.showBreakMessage(res.message); this.$refs.comMessage.showBreakMessage(res.message);
} }
}); });
},
onLoad(option) {
this.fromType = option.fromType
if (this.fromType == "requestType") {
updateTitle("计划外出库申请")
} else {
updateTitle("计划外出库记录")
}
}, },
methods: { methods: {
@ -219,83 +224,71 @@
this.detailSource.splice(index, 1) this.detailSource.splice(index, 1)
}, },
commit() { commit() {
if (this.reason == '') { if (this.reasonText == '') {
this.showErrorMessage("请选择出库原因") this.showErrorMessage("请选择出库原因")
return; return;
} }
if(this.detailSource.length==0){
if(this.fromType=="requestType"){ this.showErrorMessage("请先扫描数据")
var params = this.setRequestParams(); return;
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)
// })
} }
}, uni.showLoading({
setParams() { title: "提交中....",
var subList = [] mask: true
this.detailSource.forEach(item => { });
item.subList.forEach(detail => {
if (detail.scaned) { var params = this.setRequestParams();
// var info = getPackingNumberAndBatch(this.managementList, detail.itemCode, console.log("提交参数", JSON.stringify(params));
// detail.packingNumber, detail.batch); unPlannedIssueRequestCreate(params).then(res => {
// detail.toPackingNumber =info.packingNumber; uni.hideLoading()
// detail.toBatch =info.batch; if (res.data) {
subList.push(detail) 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 subList = []
var supplierCode=""
this.detailSource.forEach(item => { this.detailSource.forEach(item => {
item.subList.forEach(detail => { item.subList.forEach(detail => {
if (detail.scaned) { if (detail.scaned) {
if(supplierCode==""){ detail.fromLocationCode = detail.locationCode;
supplierCode = detail.package.supplierCode detail.reason = this.reasonCode;
} detail.containerNumber ="";
subList.push(detail) subList.push(detail)
} }
}) })
}) })
this.dataContent.subList = subList this.dataContent.subList = subList
this.dataContent.supplierCode = supplierCode this.dataContent.status = 1;
this.dataContent.businessType = "PurchasePutaway" this.dataContent.requestTime = getCurrDateTimes();
this.dataContent.departmentCode= "研发部门"; this.dataContent.dueTime = getCurrDateOneMonthsTimes();
this.dataContent.status= 1 ;
this.dataContent.autoCommit = "FALSE";
this.dataContent.autoAgree = "FALSE";
this.dataContent.autoExecute = "FALSE";
this.dataContent.directCreateRecord = "FALSE";
return this.dataContent; 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> </script>

133
pages/unPlanned/request/receiptRequest.vue

@ -35,11 +35,17 @@
} from '@/common/record.js'; } from '@/common/record.js';
import { import {
goHome, goHome,
updateTitle updateTitle,
clearTirmAndWrap
} from '@/common/basic.js'; } from '@/common/basic.js';
import { import {
getUnPlannedReceiptRequestList, getUnPlannedReceiptRequestList,
unPlannedReceiptRequestApprove,
unPlannedReceiptRequestClose,
unPlannedReceiptRequestApproveAgree,
unPlannedReceiptRequestApproveRefused,
unPlannedReceiptRequestHandle
} from '@/api/request2.js'; } from '@/api/request2.js';
import { import {
getDetailOption, getDetailOption,
@ -82,7 +88,7 @@
this.detailOptions = getDetailOption(); this.detailOptions = getDetailOption();
this.detailAndApproveOptions = getDetailAndApproveOption() this.detailAndApproveOptions = getDetailAndApproveOption()
this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(), this.detailAndApprovePassAndApproveNoOption = getDetailAndApprovePassAndApproveNoOption(),
this.detailAndHandleOption = getDetailAndHandleOption() this.detailAndHandleOption = getDetailAndHandleOption()
this.detailAndCloseOption = getDetailAndCloseOption() this.detailAndCloseOption = getDetailAndCloseOption()
}, },
@ -197,27 +203,45 @@
openScanDetailPopup() { openScanDetailPopup() {
uni.navigateTo({ uni.navigateTo({
url: "./receiptRequest?fromType=" + this.fromType url: "./receiptRequestCreate"
}) })
}, },
swipeClick(e, dataContent) { swipeClick(e, dataContent) {
if (e.content.text == "详情") { var text = clearTirmAndWrap(e.content.text)
console.log("详情", dataContent.id) if (text == "详情") {
this.openRequestInfoPopup(dataContent); this.openRequestInfoPopup(dataContent);
} else if (e.content.text == "处理") { } else if (text == "处理") {
console.log("处理") this.showQuestionMessage("确定要处理当前申请吗?",res=>{
} else if (e.content.text == "审批") { this.unPlannedReceiptRequestHandle(dataContent.id)
console.log("审批") })
} else if (e.content.text == "审批通过") { } else if (text == "提交审批") {
console.log("审批通过") this.showQuestionMessage("确定要审批当前申请吗?",res=>{
} else if (e.content.text == "审批驳回") { this.unPlannedReceiptRequestApprove(dataContent.id)
console.log("审批驳回") })
} else if (e.content.text == "关闭") { } else if (text == "审批通过") {
console.log("关闭") 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) { switchChangeWait(state, jobStatus) {
this.checkedWaitTask = state; this.checkedWaitTask = state;
this.status = jobStatus; 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> <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> </template>
<script> <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> </script>
<style> <style>
</style> </style>

3
static/config.json

@ -18,7 +18,7 @@
"request_url": { "request_url": {
"name": "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", "dev2": "http://192.168.0.157:12080/admin-api",
"chefang": "http://192.168.0.178:12080/admin-api", "chefang": "http://192.168.0.178:12080/admin-api",
"chenxinming": "http://192.168.0.230:12080/admin-api", "chenxinming": "http://192.168.0.230:12080/admin-api",
@ -26,6 +26,7 @@
"local": "http://localhost:12080", "local": "http://localhost:12080",
"desc": "api请求地址" "desc": "api请求地址"
}, },
"tenantId": { "tenantId": {
"name": "tenantId", "name": "tenantId",
"value": "1", "value": "1",

Loading…
Cancel
Save