feat:新增上架下架 绑定解绑

This commit is contained in:
周炼 2024-11-21 13:19:07 +08:00
parent df96787f99
commit a229ed64cf
64 changed files with 4106 additions and 2 deletions

View File

@ -26,6 +26,7 @@
"avue-plugin-ueditor": "^0.1.4",
"axios": "^0.18.0",
"babel-polyfill": "^6.26.0",
"bignumber.js": "^9.1.2",
"bin-code-editor": "^0.9.0",
"bpmn-js-create-append-anything": "^0.4.0",
"bpmn-js-token-simulation": "0.10.0",

View File

@ -0,0 +1,39 @@
import request from '@/router/axios'
export function fetchList(query,obj) {
return request({
url: '/wms/barcode-creation/log',
method: 'post',
params: query,
data: obj
})
}
export function itemPage(query) {
return request({
url: '/wms/barcode-creation/item-page',
method: 'get',
params: query
})
}
export function boxTypePage(query) {
return request({
url: '/wms/barcode-creation/box-type-page',
method: 'get',
params: query
})
}
export function storageBinPage(query) {
return request({
url: '/wms/barcode-creation/storage-bin-page',
method: 'get',
params: query
})
}
export function save(obj) {
return request({
url: '/wms/barcode-creation',
method: 'post',
data: obj
})
}

View File

@ -0,0 +1,16 @@
import request from '@/router/axios'
export function getObjByInventoryId(inventoryId) {
return request({
url: '/wms/barCodeQuery/getObjByInventoryId/' + inventoryId,
method: 'get',
})
}
export function labelPrint(carrier) {
return request({
url: '/wms/barCodeQuery/labelPrint',
method: 'get',
params: carrier
})
}

View File

@ -0,0 +1,80 @@
import request from '@/router/axios'
export function fetchPageList(query) {
return request({
url: '/wms/carrier-bind-inventory/getBindPage',
method: 'get',
params: query
})
}
export function fetchList(query) {
return request({
url: '/wms/carrier-bind-inventory/getBindList',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/carrier-bind-inventory',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/carrier-bind-inventory/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/carrier-bind-inventory/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/carrier-bind-inventory',
method: 'put',
data: obj
})
}
//通过id查询载具库存绑定表,扫描主条码
export function getBindList(carrier) {
return request({
url: '/wms/carrier-member/getBindList/' + carrier,
method: 'get',
})
}
//扫描子条码
export function getItem(carrierOrInventory) {
return request({
url: '/wms/carrier-member/getItem/' + carrierOrInventory,
method: 'get',
})
}
//绑定
export function bind(obj) {
return request({
url: '/wms/carrier-member/bind',
method: 'post',
data: obj
})
}
export function getBindListByTray(carrier) {
return request({
url: '/wms/carrier-member/getBindListByTray/' + carrier,
method: 'get',
})
}

View File

@ -0,0 +1,95 @@
import request from '@/router/axios'
export function fetchPageList(query) {
return request({
url: '/wms/carrier-bind-inventory/getBindPage',
method: 'get',
params: query
})
}
export function fetchList(query) {
return request({
url: '/wms/carrier-bind-inventory/getBindList',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/carrier-bind-inventory',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/carrier-bind-inventory/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/carrier-bind-inventory/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/carrier-bind-inventory',
method: 'put',
data: obj
})
}
//通过id查询载具库存绑定表,扫描主条码
export function getBindList(carrier) {
return request({
url: '/wms/carrier-member/getBindList/' + carrier,
method: 'get',
})
}
//扫描子条码
export function getItem(carrierOrInventory) {
return request({
url: '/wms/carrier-member/getItem/' + carrierOrInventory,
method: 'get',
})
}
//解绑
export function unbind(obj) {
return request({
url: '/wms/carrier-member/unbind',
method: 'post',
data: obj
})
}
export function getCarrier(query) {
return request({
url: '/wms/carrier/getCarrier',
method: 'get',
params: query
})
}
export function getBindListByTray(carrier) {
return request({
url: '/wms/carrier-member/getBindListByTray/' + carrier,
method: 'get',
})
}
export function confirmUnBind(obj) {
return request({
url: '/wms/carrier/confirmUnBind',
method: 'post',
data: obj
})
}

48
src/api/wms/carrier.js Normal file
View File

@ -0,0 +1,48 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/carrier/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/carrier',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/carrier/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/carrier/' + id,
method: 'delete'
})
}
export function labelPrint(printList, printer) {
return request({
url: '/wms/carrier/by-labelRePrint',
method: 'post',
data: printList
})
}
export function putObj(obj) {
return request({
url: '/wms/carrier',
method: 'put',
data: obj
})
}

View File

@ -0,0 +1,39 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/carriertype/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/carriertype',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/carriertype/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/carriertype/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/carriertype',
method: 'put',
data: obj
})
}

View File

@ -0,0 +1,10 @@
import request from '@/router/axios'
//一键下架
export function unShelve(storageLocation) {
return request({
url: '/wms/storage-bin-bind-inventory/unbindByStorageLocation?storageLocation=' + storageLocation,
method: 'post',
})
}

View File

@ -0,0 +1,17 @@
import request from '@/router/axios'
export function page(query) {
return request({
url: '/wms/complexReport/page',
method: 'get',
params: query
})
}
export function list(query) {
return request({
url: '/wms/complexReport/list',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,57 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getInventoryOriginalQty(obj) {
return request({
url: '/wms/document/getInventoryOriginalQty',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/productionRequisitionSubmit',
method: 'post',
data: obj
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
export function getInventoryQty(obj) {
return request({
url: '/wms/document/getInventoryQty',
method: 'get',
params: obj
})
}
export function oneClickPassValidate(obj) {
return request({
url: '/wms/document/productionRequisitionSubmit/oneClickPassValidate',
method: 'post',
data: obj
})
}

View File

@ -0,0 +1,48 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getInventoryOriginalQty(obj) {
return request({
url: '/wms/document/getInventoryOriginalQty',
method: 'get',
params: obj
})
}
//提交
export function returnSubmit(obj) {
return request({
url: '/wms/document/returnSubmit',
method: 'post',
data: obj
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
export function rejectDocumentByNo(documentNo) {
return request({
url: '/wms/document/rejectDocumentByNo?documentNo=' + documentNo,
method: 'post'
})
}

39
src/api/wms/customer.js Normal file
View File

@ -0,0 +1,39 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/customer/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/customer',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/customer/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/customer/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/customer',
method: 'put',
data: obj
})
}

53
src/api/wms/data-field.js Normal file
View File

@ -0,0 +1,53 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/mes-core/data-field/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/mes-core/data-field',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/mes-core/data-field/' + id,
method: 'get'
})
}
export function getByCode(code) {
return request({
url: '/mes-core/data-field/by-code?code=' + code,
method: 'get'
})
}
export function delByCode(code) {
return request({
url: '/mes-core/data-field/delete-by-code?code=' + code,
method: 'delete'
})
}
export function delObj(id) {
return request({
url: '/mes-core/data-field/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/mes-core/data-field',
method: 'put',
data: obj
})
}

25
src/api/wms/dn-order.js Normal file
View File

@ -0,0 +1,25 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/dn-order/page',
method: 'get',
params: query
})
}
export function selectDetailByID(query) {
return request({
url: '/wms/dn-order/selectDetailByID',
method: 'get',
params: query
})
}
export function updateDetailBatchById(param) {
return request({
url: '/wms/dn-order/updateDetailBatchById',
method: 'put',
data: param
})
}

View File

@ -0,0 +1,31 @@
import request from '@/router/axios'
export function pageForCancel(query) {
return request({
url: '/wms/document/detail/pageForCancel',
method: 'get',
params: query
})
}
export function cancelCloseDocument(documentNo) {
return request({
url: '/wms/document/cancelCloseDocument',
method: 'post',
data: documentNo,
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
}
export function saleReturnCancel(documentNo) {
return request({
url: '/wms/document/saleReturn/cancel',
method: 'post',
data: documentNo,
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
}

View File

@ -0,0 +1,23 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
//提交
export function submit(documentNo) {
return request({
url: '/wms/document/closeDocumentByNo?documentNo=' + documentNo,
method: 'post'
})
}

View File

@ -0,0 +1,131 @@
import request from '@/router/axios'
export function getOperationRules(site,activityId) {
return request({
url: '/wms/document/operationRules/'+site+'/'+activityId,
method: 'get'
})
}
export function getCWarehouse(site) {
return request({
url: '/wms/document/getCWarehouse/'+site,
method: 'get'
})
}
export function getWarehouse(site) {
return request({
url: '/wms/document/getWarehouse/'+site,
method: 'get'
})
}
export function getRetrieve(current,size,obj) {
return request({
url: '/wms/document/getRetrieve/'+current+'/'+size,
method: 'post',
data: obj
})
}
export function saveOrUpdate(obj) {
return request({
url: '/wms/document/save',
method: 'post',
data: obj
})
}
export function submit(obj) {
return request({
url: '/wms/document/submit',
method: 'post',
data: obj
})
}
export function cancel(obj) {
return request({
url: '/wms/document/cancel',
method: 'post',
data: obj
})
}
export function reject(obj) {
return request({
url: '/wms/document/reject',
method: 'post',
data: obj
})
}
export function itemDialog(obj) {
return request({
url: '/wms/document/item/page',
method: 'get',
params: obj
})
}
export function itemDialogs(obj) {
return request({
url: '/wms/document/item/pages',
method: 'get',
params: obj
})
}
export function itemCustomFieldDialog(obj) {
return request({
url: '/wms/document/item/itemPage',
method: 'get',
params: obj
})
}
export function getItem(obj) {
return request({
url: '/wms/document/item',
method: 'get',
params: obj
})
}
export function documentDialog(query) {
return request({
url: '/wms/document/getDocumentList',
method: 'get',
params:query
})
}
export function userCheck(param) {
return request({
url: '/wms/document/userCheck/'+param +'/STORES_RETURNED',
method: 'get',
})
}
export function getDetails(site,documentNo,seq,item) {
return request({
url: '/wms/document/selectSfc/'+site+'/'+documentNo+'/'+seq + '/' + item,
method: 'get',
})
}
export function getOaProjectCode(params) {
return request({
url: '/mom-mes-nei/cust-data-field-list/page',
method: 'get',
params:params
})
}
export function fertItemPage(obj) {
return request({
url: '/wms/document/item/fertItemPage',
method: 'get',
params: obj
})
}
export function validateImport(obj) {
return request({
url: '/wms/document/validateImport',
method: 'post',
data: obj
})
}

View File

@ -0,0 +1,41 @@
import request from '@/router/axios';
export function fetchList(query) {
return request({
url: '/wms/false-warehoursing/page',
method: 'get',
params: query
})
}
export function fetchList2(query) {
return request({
url: '/wms/false-warehoursing/page2',
method: 'get',
params: query
})
}
export function transfer(obj) {
return request({
url: '/wms/false-warehoursing/transfer/',
method: 'post',
data: obj
});
}
export function transIn(obj) {
return request({
url: '/wms/false-warehoursing/transIn',
method: 'post',
data: obj
});
}
export function transOut(obj) {
return request({
url: '/wms/false-warehoursing/transOut',
method: 'put',
data: obj
});
}

View File

@ -0,0 +1,49 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//成品提交
export function submit(obj) {
return request({
url: '/wms/document/finishedProductsWarehouseSubmit',
method: 'post',
data: obj
})
}
//成品查询数量
export function getFinishedProductQty(obj) {
return request({
url: '/wms/document/getFinishedProductQty',
method: 'get',
params: obj
})
}
export function rejectDocumentByNo(documentNo) {
return request({
url: '/wms/document/rejectDocumentByNo?documentNo=' + documentNo,
method: 'post'
})
}

View File

@ -0,0 +1,42 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/finishedProductsPurchaseSubmit',
method: 'post',
data: obj
})
}
export function getFinishedProductsPurchaseQty(obj) {
return request({
url: '/wms/document/getFinishedProductsPurchaseQty',
method: 'get',
params: obj
})
}

View File

@ -0,0 +1,42 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/transferSubmit',
method: 'post',
data: obj
})
}
export function getInventoryQty(obj) {
return request({
url: '/wms/document/getInventoryQty',
method: 'get',
params: obj
})
}

View File

@ -0,0 +1,25 @@
import request from '@/router/axios'
export function scanCode(query) {
return request({
url: '/wms/inventory-group/scanCode',
method: 'get',
params: query
})
}
export function bindGroup(obj) {
return request({
url: '/wms/inventory-group/bindGroup',
method: 'post',
data: obj
})
}
export function unBindGroup(obj) {
return request({
url: '/wms/inventory-group/unBindGroup',
method: 'delete',
data: obj
})
}

View File

@ -0,0 +1,24 @@
import request from '@/router/axios'
export function getInventoryList(inventoryIdOrCarrier) {
return request({
url: '/wms/carrier-member/getInventoryList/'+inventoryIdOrCarrier,
method: 'get',
})
}
export function freeze(obj) {
return request({
url: '/wms/wms-inventory/freeze',
method: 'post',
data: obj
})
}
export function unfreeze(obj) {
return request({
url: '/wms/wms-inventory/unfreeze',
method: 'post',
data: obj
})
}

View File

@ -0,0 +1,53 @@
import request from '@/router/axios'
//执行移动
export function moveInventory(obj) {
return request({
url: '/wms/storage-bin-bind-inventory/inventoryTransfer',
method: 'post',
data: obj
})
}
export function getInventoryQtyNewPassBox(params) {
return request({
url: '/wms/document/getInventoryQtyNewPassBox',
method: 'post',
data: params
})
}
//获取是包材的物料
export function fetchKmatItemList(query) {
return request({
url: '/wms/storage-bin-bind-inventory/fetchKmatItemList',
method: 'get',
params: query
})
}
//根据来源位置和物料查询库存
export function getKmatInventoryQty(storageLocation, item) {
return request({
url: '/wms/storage-bin-bind-inventory/getKmatInventoryQty?storageLocation=' + storageLocation + '&&item=' + item,
method: 'get',
})
}
//执行移动
export function inventoryTransferForKmat(obj) {
return request({
url: '/wms/storage-bin-bind-inventory/inventoryTransferForKmat',
method: 'post',
data: obj
})
}
//获取全区条码和托
export function selectAllByStorageLocation(query) {
return request({
url: '/wms/storage-bin-bind-inventory/selectAllByStorageLocation',
method: 'get',
params: query
})
}

117
src/api/wms/inventory.js Normal file
View File

@ -0,0 +1,117 @@
import request from '@/router/axios';
export function fetchList(query) {
return request({
url: '/wms/wms-inventory/page',
method: 'get',
params: query
});
}
export function fetchDtoList(query) {
return request({
url: '/wms/wms-inventory/getInventoryDtoPage',
method: 'get',
params: query
});
}
export function fetchDtoListByCarrier(query) {
return request({
url: '/wms/wms-inventory/getInventoryDtoPageByCarrier',
method: 'get',
params: query
});
}
export function inventoryDto(query) {
return request({
url: '/wms/wms-inventory/inventoryDto',
method: 'get',
params: query
});
}
export function addObj(obj) {
return request({
url: '/wms/inventory',
method: 'post',
data: obj
});
}
export function getObj(id) {
return request({
url: '/wms/wms-inventory/' + id,
method: 'get'
});
}
export function getByCode(code) {
return request({
url: '/wms/wms-inventory/by-code?code=' + code,
method: 'get'
});
}
export function delByCode(code) {
return request({
url: '/wms/wms-inventory/delete-by-code?code=' + code,
method: 'delete'
});
}
export function delObj(id) {
return request({
url: '/wms/wms-inventory/' + id,
method: 'delete'
});
}
export function putObj(obj) {
return request({
url: '/wms/wms-inventory',
method: 'put',
data: obj
});
}
export function splitInventory(obj) {
return request({
url: '/wms/wms-inventory/splitInventory',
method: 'post',
data: obj
});
}
export function mergeInventory(obj) {
return request({
url: '/wms/wms-inventory/mergeInventory',
method: 'post',
data: obj
});
}
export function selectForSplit(query) {
return request({
url: '/wms/wms-inventory/selectForSplit',
method: 'get',
params: query
});
}
export function selectForStocktaking(query) {
return request({
url: '/wms/wms-inventory/selectForStocktaking',
method: 'get',
params: query
});
}
export function inventoryStocktaking(obj) {
return request({
url: '/wms/wms-inventory/inventoryStocktaking',
method: 'post',
data: obj
});
}

View File

@ -0,0 +1,39 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/item-safe-inventory/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/item-safe-inventory',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/item-safe-inventory/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/item-safe-inventory/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/item-safe-inventory',
method: 'put',
data: obj
})
}

View File

@ -0,0 +1,31 @@
import request from '@/router/axios'
export function operationOPType(operation,shopOrder) {
return request({
url: '/wms/z-knives-entry/operationOPType/' + operation + "/" + shopOrder,
method: 'get'
})
}
export function reprint(param) {
return request({
url: '/wms/picking/reprint',
method: 'post',
data: param
})
}
export function deleteKnivesEntry(param) {
return request({
url: '/wms/z-knives-entry/deleteKnivesEntry',
method: 'post',
data: param
})
}
export function select(param) {
return request({
url: '/wms/picking/select',
method: 'get',
params: param
})
}

View File

@ -0,0 +1,49 @@
import request from '@/router/axios'
export function pageForNoEntity(query) {
return request({
url: '/wms/document/detail/pageForNoEntity',
method: 'get',
params: query
})
}
export function noEntityPost(obj) {
return request({
url: '/wms/document/noEntity/post',
method: 'post',
data: obj,
})
}
export function noEntityPostCancel(obj) {
return request({
url: '/wms/document/noEntity/cancel',
method: 'post',
data: obj,
})
}
export function noEntityPickingPost(documentNo) {
return request({
url: '/wms/picking/noEntity/post',
method: 'post',
data: documentNo,
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
}
export function noEntityPickingPostCancel(documentNo) {
return request({
url: '/wms/picking/noEntity/cancel',
method: 'post',
data: documentNo,
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
}

View File

@ -0,0 +1,42 @@
import request from '@/router/axios'
export function fetchNextNumberList(query) {
return request({
url: '/wms/wms-numbering-rule',
method: 'get',
params: query
})
}
export function getObj(obj) {
return request({
url: '/wms/wms-numbering-rule/doRetrieve',
method: 'post',
data: obj
})
}
export function addObj(obj) {
return request({
url: '/wms/wms-numbering-rule',
method: 'post',
data: obj
})
}
export function putObj(obj) {
return request({
url: '/wms/wms-numbering-rule',
method: 'put',
data: obj
})
}
export function delObj(query) {
return request({
url: '/wms/wms-numbering-rule',
method: 'delete',
params: query
})
}

View File

@ -0,0 +1,49 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/productionRequisitionSubmit',
method: 'post',
data: obj
})
}
export function getInventoryQty(obj) {
return request({
url: '/wms/document/getInventoryQty',
method: 'get',
params: obj
})
}
export function getInventoryQtyNewOnlyTray(params) {
return request({
url: '/wms/document/getInventoryQtyNewOnlyTray',
method: 'post',
data: params
})
}

58
src/api/wms/picking.js Normal file
View File

@ -0,0 +1,58 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getPickInventory(obj) {
return request({
url: '/wms/picking/getPickInventory',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/pickingSubmit',
method: 'post',
data: obj
})
}
export function getInventoryQty(obj) {
return request({
url: '/wms/picking/getInventoryQty',
method: 'get',
params: obj
})
}
//清楚记录
export function pickingRemove(obj) {
return request({
url: '/wms/picking/pickingRemove',
method: 'post',
data: obj
})
}
//暂存记录
export function saveTempPicking(obj) {
return request({
url: '/wms/picking/saveTempPicking',
method: 'post',
data: obj
})
}

View File

@ -0,0 +1,74 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/productionRequisitionSubmit',
method: 'post',
data: obj
})
}
export function getInventoryQty(params) {
return request({
url: '/wms/document/getInventoryQty',
method: 'post',
data: params
})
}
export function getInventoryQtyNew(params) {
return request({
url: '/wms/document/getInventoryQtyNew',
method: 'post',
data: params
})
}
export function checkFiFo(params) {
return request({
url: '/wms/document/checkFiFo',
method: 'post',
data: params
})
}
export function getPickingInventoryQty(params) {
return request({
url: '/wms/document/getPickingInventoryQty',
method: 'post',
data: params
})
}
//提交
export function submitFreePostDate(obj) {
return request({
url: '/wms/document/productionRequisitionSubmit/freePostDate',
method: 'post',
data: obj
})
}

View File

@ -0,0 +1,50 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//成品提交
export function submit(obj) {
return request({
url: '/wms/document/finishedProductsWarehouseSubmit',
method: 'post',
data: obj
})
}
//成品查询数量
export function getFinishedProductQty(obj) {
return request({
url: '/wms/document/getFinishedProductQty',
method: 'get',
params: obj
})
}
export function rejectDocumentByNo(documentNo) {
return request({
url: '/wms/document/rejectDocumentByNo?documentNo=' + documentNo,
method: 'post'
})
}

View File

@ -0,0 +1,49 @@
import request from '@/router/axios'
export function pagePurchaseInToStorageReg(query) {
return request({
url: '/wms/document/purchase/pagePurchaseInToStorageReg',
method: 'get',
params: query
})
}
export function selectPoDetail(query) {
return request({
url: '/wms/po-order/selectPoDetail',
method: 'get',
params: query
})
}
export function registeSubmit(obj) {
return request({
url: '/wms/document/purchase/registerSubmit',
method: 'post',
data: obj
})
}
export function selectPoWithDocumentDetail(query) {
return request({
url: '/wms/po-order/selectPoWithDocumentDetail',
method: 'get',
params: query
})
}
export function pagePoOrder(query) {
return request({
url: '/wms/po-order/page',
method: 'get',
params: query
})
}
export function registerCancel(obj) {
return request({
url: '/wms/document/purchase/registerCancel',
method: 'post',
data: obj
})
}

View File

@ -0,0 +1,50 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/procurementStorageSubmit',
method: 'post',
data: obj
})
}
export function getInventoryQty(obj) {
return request({
url: '/wms/document/getInventoryQty',
method: 'get',
params: obj
})
}
export function getDdvanceBindQtyOnlyTray(params) {
return request({
url: '/wms/document-advance-bind/scanCodeOnlyTray',
method: 'get',
params: params
})
}

View File

@ -0,0 +1,42 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/productionRequisitionSubmit',
method: 'post',
data: obj
})
}
export function getInventoryQty(obj) {
return request({
url: '/wms/document/getInventoryQty',
method: 'get',
params: obj
})
}

View File

@ -0,0 +1,49 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getInventoryOriginalQty(obj) {
return request({
url: '/wms/document/getInventoryOriginalQty',
method: 'get',
params: obj
})
}
//提交
export function returnSubmit(obj) {
return request({
url: '/wms/document/returnSubmit',
method: 'post',
data: obj
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
export function rejectDocumentByNo(documentNo) {
return request({
url: '/wms/document/rejectDocumentByNo?documentNo=' + documentNo,
method: 'post'
})
}

View File

@ -0,0 +1,85 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
export function getInventoryQty(obj) {
return request({
url: '/wms/document/getInventoryQty',
method: 'get',
params: obj
})
}
//退货提交
export function submit(obj) {
return request({
url: '/wms/document/saleReturn/submit',
method: 'post',
data: obj
})
}
//扫描箱条码
export function getSaleOutQty(obj) {
return request({
url: '/wms/document/getSaleOutQty',
method: 'get',
params: obj
})
}
//展开时扫描箱条码
export function getSaleInventoryId(carrier) {
return request({
url: '/wms/document/getSaleInventoryId?carrier=' + carrier,
method: 'get',
})
}
//扫描卷条码
export function getInventoryOriginalQty(obj) {
return request({
url: '/wms/document/getInventoryOriginalQty',
method: 'get',
params: obj
})
}
export function getDdvanceBindQty(params) {
return request({
url: '/wms/document-advance-bind/scanCode',
method: 'get',
params: params
})
}
export function noInventorySubmit(obj) {
return request({
url: '/wms/document/saleReturn/noInventorySubmit',
method: 'post',
data: obj
})
}

View File

@ -0,0 +1,39 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/role-area-bind/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/role-area-bind',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/role-area-bind/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/role-area-bind/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/role-area-bind',
method: 'put',
data: obj
})
}

View File

@ -0,0 +1,72 @@
import request from '@/router/axios'
export function selectSaleOutDetail(query) {
return request({
url: '/wms/picking/saleOut/selectSaleOutDetail',
method: 'get',
params: query
})
}
export function selectPickingSuggest(query) {
return request({
url: '/wms/picking/selectPickingSuggest',
method: 'get',
params: query
})
}
export function pickingPrint(obj) {
return request({
url: '/wms/picking/print',
method: 'post',
data: obj
})
}
export function pickingPost(documentNo) {
return request({
url: `/wms/picking/post`,
method: 'post',
data: documentNo,
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
}
export function saleOutPost(obj) {
return request({
url: `/wms/picking/saleOut/post`,
method: 'post',
data: obj,
})
}
export function pickingPostCancel(documentNo) {
return request({
url: `/wms/picking/cancel`,
method: 'post',
data: documentNo,
headers: {
'Content-Type': 'application/json; charset=utf-8'
}
})
}
export function saleOutPostCancel(obj) {
return request({
url: `/wms/picking/saleOut/cancel`,
method: 'post',
data: obj,
})
}
export function pickingPrintA4(obj) {
return request({
url: '/wms/picking/print/a4',
method: 'post',
data: obj
})
}

View File

@ -0,0 +1,42 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/productionRequisitionSubmit',
method: 'post',
data: obj
})
}
export function getInventoryQty(obj) {
return request({
url: '/wms/document/getInventoryQty',
method: 'get',
params: obj
})
}

42
src/api/wms/scrap.js Normal file
View File

@ -0,0 +1,42 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/document/productionRequisition/page',
method: 'get',
params: query
})
}
export function getDocumentDetail(documentNo) {
return request({
url: '/wms/document/' + documentNo,
method: 'get',
})
}
export function getItemInventory(obj) {
return request({
url: '/wms/document/getItemInventory',
method: 'get',
params: obj
})
}
//提交
export function submit(obj) {
return request({
url: '/wms/document/productionRequisitionSubmit',
method: 'post',
data: obj
})
}
export function getInventoryQty(obj) {
return request({
url: '/wms/document/getInventoryQty',
method: 'get',
params: obj
})
}

View File

@ -0,0 +1,40 @@
import request from "@/router/axios";
export function fetchErpStorageLocationList(query) {
return request({
url: '/wms/shelf-management/erp-storage-location',
method: 'get',
params: query
})
}
export function fetchStorageLocationList(query) {
return request({
url: '/wms/shelf-management/storage-location',
method: 'get',
params: query
})
}
export function fetchStorageBinList(query) {
return request({
url: '/wms/shelf-management/storage-bin',
method: 'get',
params: query
})
}
export function getStorageLocationData(query) {
return request({
url: '/wms/shelf-management/storage-location-data',
method: 'get',
params: query
})
}
export function getStorageBinData(query) {
return request({
url: '/wms/shelf-management/storage-bin-data',
method: 'get',
params: query
})
}

32
src/api/wms/shelves.js Normal file
View File

@ -0,0 +1,32 @@
import request from '@/router/axios'
//上架功能
export function upObj(obj) {
return request({
url: '/wms/storage-bin-bind-inventory/upDefault',
method: 'post',
data: obj
})
}
//查询已上架的托条码(根据货架和货格号)
export function getCarrierList(storageBin) {
return request({
url: '/wms/storage-bin-bind-inventory/getCarrierList?storageBin=' + storageBin,
method: 'get',
})
}
//上架操作时扫描托条码
export function getUpCarrier(carrier) {
return request({
url: '/wms/storage-bin-bind-inventory/getInDefaultCarrier/' + carrier,
method: 'get'
})
}

View File

@ -0,0 +1,65 @@
import request from "@/router/axios";
export function getFreezeList(query) {
return request({
url: '/wms/wms-inventory/getFreezeList',
method: 'get',
params: query
})
}
export function freeze(obj) {
return request({
url: '/wms/wms-inventory/freeze',
method: 'post',
data: obj
})
}
export function unfreeze(obj) {
return request({
url: '/wms/wms-inventory/unfreeze',
method: 'post',
data: obj
})
}
export function fetchErpStorageLocationList(query) {
return request({
url: '/wms/shelf-management/erp-storage-location',
method: 'get',
params: query
})
}
export function fetchItemList(query) {
return request({
url: '/wms/wms-inventory/fetchItemList',
method: 'get',
params: query
})
}
export function fetchItemGroesList(query) {
return request({
url: '/wms/wms-inventory/fetchItemGroesList',
method: 'get',
params: query
})
}
export function fetchCarrierList(query) {
return request({
url: '/wms/carrier/page',
method: 'get',
params: query
})
}
export function pageFreezeList(query) {
return request({
url: '/wms/wms-inventory/pageFreezeList',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,39 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/storage-location-type/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/storage-location-type',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/storage-location-type/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/storage-location-type/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/storage-location-type',
method: 'put',
data: obj
})
}

View File

@ -0,0 +1,80 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/wms-storage-location/page',
method: 'get',
params: query
})
}
export function getStorageLocationPageBycode(str) {
return request({
url: '/wms/wms-storage-location/getStorageLocationPageBycode',
method: 'get',
params: str
})
}
export function addObj(obj) {
return request({
url: '/wms/wms-storage-location',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/wms-storage-location/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/wms-storage-location/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/wms-storage-location',
method: 'put',
data: obj
})
}
export function labelPrint(printList) {
return request({
url: '/wms/wms-storage-location/by-labelRePrint',
method: 'post',
data: printList
})
}
export function getStorageBin(storageLocation) {
return request({
url: '/wms/wms-storage-location/getStorageBin/' + storageLocation,
method: 'get'
})
}
export function updateBatchById(obj) {
return request({
url: '/wms/wms-storage-location/updateBatchById',
method: 'put',
data: obj
})
}
export function getDefaultLocationsMap(erpStorageLocationList) {
return request({
url: '/wms/wms-storage-location/getDefaultLocationsMap/',
method: 'get',
params: {
erpStorageLocationList: erpStorageLocationList
}
});
}

View File

@ -0,0 +1,39 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/storagebin-type/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/storagebin-type',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/storagebin-type/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/storagebin-type/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/storagebin-type',
method: 'put',
data: obj
})
}

62
src/api/wms/storagebin.js Normal file
View File

@ -0,0 +1,62 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/wms-storagebin/page',
method: 'get',
params: query
})
}
export function labelPrint(printList, printer) {
return request({
url: '/wms/wms-storagebin/by-labelRePrint',
method: 'post',
data: printList
})
}
export function addObj(obj) {
return request({
url: '/wms/wms-storagebin',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/wms-storagebin/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/wms-storagebin/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/wms-storagebin',
method: 'put',
data: obj
})
}
export function getStorageLocationByStorageBin(storageBin) {
return request({
url: '/wms/wms-storagebin/getStorageLocationByStorageBin/' + storageBin,
method: 'get'
})
}
export function updateBatchById(obj) {
return request({
url: '/wms/wms-storagebin/updateBatchById',
method: 'put',
data: obj
})
}

View File

@ -0,0 +1,9 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/wms-temp-inventory/page',
method: 'get',
params: query
})
}

29
src/api/wms/unShelve.js Normal file
View File

@ -0,0 +1,29 @@
import request from '@/router/axios'
//下架功能
export function downObj(obj) {
return request({
url: '/wms/storage-bin-bind-inventory/downDefault',
method: 'post',
data: obj
})
}
//查询已上架的托条码(根据货架和货格号)
export function getCarrierList(storageBin) {
return request({
url: '/wms/storage-bin-bind-inventory/getCarrierList?storageBin=' + storageBin,
method: 'get',
})
}
//下架操作时扫描托条码(需要返回货架和货格号)
export function getNotInDefaultCarrier(carrier) {
return request({
url: '/wms/storage-bin-bind-inventory/getNotInDefaultCarrier/' + carrier,
method: 'get'
})
}

48
src/api/wms/up-down.js Normal file
View File

@ -0,0 +1,48 @@
import request from '@/router/axios'
//上架功能
export function upObj(obj) {
return request({
url: '/wms/storage-bin-bind-inventory/up',
method: 'post',
data: obj
})
}
//下架功能
export function downObj(obj) {
return request({
url: '/wms/storage-bin-bind-inventory/down',
method: 'post',
data: obj
})
}
//查询已上架的托条码(根据货架和货格号)
export function getCarrierList(storageBin) {
return request({
url: '/wms/storage-bin-bind-inventory/getCarrierList?storageBin=' + storageBin,
method: 'get',
})
}
//上架操作时扫描托条码
export function getUpCarrier(carrier) {
return request({
url: '/wms/storage-bin-bind-inventory/getUpCarrier/' + carrier,
method: 'get'
})
}
//下架操作时扫描托条码(需要返回货架和货格号)
export function getDownCarrier(carrier) {
return request({
url: '/wms/storage-bin-bind-inventory/getDownCarrier/' + carrier,
method: 'get'
})
}

18
src/api/wms/vendor.js Normal file
View File

@ -0,0 +1,18 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/vendor/page',
method: 'get',
params: query
})
}
export function pageText(query) {
return request({
url: '/wms/vendor/pageText',
method: 'get',
params: query
})
}

39
src/api/wms/warehouse.js Normal file
View File

@ -0,0 +1,39 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/wms-warehouse/page',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/wms-warehouse',
method: 'post',
data: obj
})
}
export function getObj(id) {
return request({
url: '/wms/wms-warehouse/' + id,
method: 'get'
})
}
export function delObj(id) {
return request({
url: '/wms/wms-warehouse/' + id,
method: 'delete'
})
}
export function putObj(obj) {
return request({
url: '/wms/wms-warehouse',
method: 'put',
data: obj
})
}

View File

@ -0,0 +1,75 @@
import request from '@/router/axios'
export function fetchList(query) {
return request({
url: '/wms/wms-inventory-check/page',
method: 'get',
params: query
})
}
export function fetchErpStorageLocationList(query) {
return request({
url: '/wms/wms-inventory-check/storageLocationPage',
method: 'get',
params: query
})
}
export function addObj(obj) {
return request({
url: '/wms/wms-inventory-check',
method: 'post',
data: obj
})
}
export function putObj(obj) {
return request({
url: '/wms/wms-inventory-check',
method: 'put',
data: obj
})
}
export function fetchinventoryCheckDetailList(query) {
return request({
url: '/wms/wms-inventory-check/inventoryCheckDetailpage',
method: 'get',
params: query
})
}
export function selectInventoryCheck(obj,params) {
return request({
url: '/wms/wms-inventory-check/select',
method: 'post',
data: obj,
params: params
})
}
export function selectIdCode(checkNo, erpStorageLocation, carrier1, carrier2, inventoryId) {
return request({
url: '/wms/wms-inventory-check/selectId?checkNo=' + checkNo + "&erpStorageLocation=" + erpStorageLocation + "&carrier1=" + carrier1 + "&carrier2=" + carrier2 + "&inventoryId=" + inventoryId,
method: 'get'
})
}
export function selectCheckNoSummary(obj,params) {
return request({
url: '/wms/wms-inventory-check/selectCheckNoSummary',
method: 'post',
data: obj,
params: params
})
}
export function doComplete(checkNo) {
return request({
url: '/wms/wms-inventory-check/doComplete?checkNo=' + checkNo,
method: 'get'
})
}

View File

@ -0,0 +1,72 @@
<template>
<div class="el-card" :class="shadow ? 'is-' + shadow + '-shadow' : 'is-always-shadow'">
<div
v-if="$slots.header || header"
class="el-card__header"
:class="isCollapseSelf ? 'collapse-icon-right' : 'collapse-icon-down'"
@click="isCollapseSelf = !isCollapseSelf"
>
<slot name="header">{{ header }}</slot>
</div>
<div
class="el-card__body"
:style="bodyStyle"
:class="{'is-collapse': isCollapseSelf}"
>
<slot />
</div>
</div>
</template>
<script>
import { Card } from 'element-ui'
export default {
name: 'ElCardCollapse',
extends: Card,
props: {
isCollapse: {
type: Boolean,
default: false,
},
},
data() {
return {
isCollapseSelf: this.isCollapse,
}
},
}
</script>
<style lang="scss" scoped>
.el-card__header {
cursor: pointer;
position: relative;
padding: 15px;
&::after {
font-family: element-icons !important;
font-style: normal;
font-weight: 600;
font-variant: normal;
text-transform: none;
line-height: 1;
vertical-align: baseline;
display: inline-block;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
position: absolute;
right: 5px;
top: 50%;
transform: translateY(-50%);
}
&.collapse-icon-right::after {
content: '\e6e0';
}
&.collapse-icon-down::after {
content: '\e6df';
}
}
.is-collapse {
display: none;
}
</style>

View File

@ -59,7 +59,9 @@ import 'e-icon-picker/lib/symbol.js' // 基本彩色图标库
import 'e-icon-picker/lib/index.css' // 基本样式,包含基本图标
import 'font-awesome/css/font-awesome.min.css' // font-awesome 图标库
import 'element-ui/lib/theme-chalk/icon.css' // element-ui 图标库
// 给el-card 添加下拉功能
import ElCardCollapse from '@/components/element-ui/el-card-collapse.vue'
Vue.component('ElCardCollapse', ElCardCollapse)
Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar)

View File

@ -134,5 +134,45 @@ export default [
meta: {
keepAlive: false
}
},{
path: '/mobile/wms/carrier-bind-inventory',
component: () =>
import(/* webpackChunkName: "page" */ '@/views/mobile/wms/carrier-bind-inventory/index'),
name: '载具绑定',
meta: {
keepAlive: false
}
},{
path: '/mobile/wms/carrier-unbind-inventory',
component: () =>
import(/* webpackChunkName: "page" */ '@/views/mobile/wms/carrier-unbind-inventory/index'),
name: '载具解绑',
meta: {
keepAlive: false
}
},{
path: '/mobile/wms/shelves',
component: () =>
import(/* webpackChunkName: "page" */ '@/views/mobile/wms/shelves/index'),
name: '上架',
meta: {
keepAlive: false
}
},{
path: '/mobile/wms/unShelve',
component: () =>
import(/* webpackChunkName: "page" */ '@/views/mobile/wms/unShelve/index'),
name: '下架',
meta: {
keepAlive: false
}
},{
path: '/mobile/wms/production-warehousing',
component: () =>
import(/* webpackChunkName: "page" */ '@/views/mobile/wms/production-warehousing/index'),
name: '生产入库',
meta: {
keepAlive: false
}
}
]

4
src/util/bigNumber.js Normal file
View File

@ -0,0 +1,4 @@
import { BigNumber } from 'bignumber.js';
export function add(arg1, arg2) {
return BigNumber(arg1).plus(BigNumber(arg2)).toNumber();
}

View File

@ -0,0 +1,303 @@
<template>
<div class="mobile-home">
<div class="content">
<mobile-navbar title="载具绑定"></mobile-navbar>
<div style="margin: 10px;">
<el-form ref="formObj" :model="formObj" :rules="rules" label-width="auto">
<el-row :gutter="10">
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="站点:" prop="site">
<el-input placeHolder="站点" v-model="formObj.site" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="已绑数量:" prop="bindNum">
<el-input placeHolder="已绑数量" v-model="formObj.bindNum" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="已扫数量:" prop="scanNum">
<el-input placeHolder="已扫数量" v-model="formObj.scanNum" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="托条码:" prop="carrier">
<el-input placeHolder="手动输入或者扫码" v-model="formObj.carrier" :disabled="isDisabled"
@keyup.enter.native="scanCarrier">
<i slot="suffix" class="el-input__icon el-icon-full-screen"></i>
</el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="卷条码:" prop="carrierOrInventory">
<el-input placeHolder="手动输入或者扫码" v-model="formObj.carrierOrInventory"
@keyup.enter.native="scancarrierOrInventory">
<i slot="suffix" class="el-input__icon el-icon-full-screen"></i>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-table :data="formObj.list" :row-style="rowStyle">
<el-table-column label="序号" prop="seq"></el-table-column>
<el-table-column label="卷条码" prop="carrierOrInventory"></el-table-column>
<el-table-column label="物料号" prop="item"></el-table-column>
</el-table>
</el-form>
</div>
<!-- 按钮 -->
<div class="form-footer stay-below">
<el-button type="warning" @click="doClear">清除</el-button>
<el-button type="primary" @click="bind">绑定</el-button>
</div>
</div>
</div>
</template>
<script>
import { getBindList, getItem, bind, getBindListByTray } from '@/api/wms/carrier-bind-inventory';
import { getStore } from '@/util/store';
import { showLoading, hideLoading } from '@/const/loading'
import { isBlank } from '@/util/string';
import MobileNavbar from "@/components/top-bar/mobile-navbar.vue";
import {
mapGetters
} from 'vuex'
export default {
components: { MobileNavbar },
data() {
return {
formObj: {},
isDisabled: false,
wms_carrier_member_bind: false,
isBind: "",
needBindList: [],
scanCodeList: [],
rules: {
carrier: [
{ required: true, message: "托条码不可为空" }
],
carrierOrInventory: [
{ required: true, message: "卷条码不可为空" }
],
},
initData: {
site: getStore({ name: 'tenantId' }),
bindNum: 0,
scanNum: 0,
list: []
}
}
},
created() {
this.wms_carrier_member_bind = this.permissions["wms_carrier_member_bind"];
this.formObj = Object.assign({}, this.initData);
this.list = [];
this.needBindList = [];
this.scanCodeList = [];
},
computed: {
...mapGetters(["permissions"]),
permissionList() {
return {};
}
},
methods: {
//扫描托条码
scanCarrier() {
let me = this;
let carrier = me.formObj.carrier;
me.formObj.list = [];
me.needBindList = [];
me.formObj.scanNum = 0;
if (isBlank(carrier)) {
me.$message.error("不可扫描空条码");
return;
}
getBindListByTray(carrier).then(res => {
if (res.data.code == 0) {
let data = res.data.data;
for (let i = 0; i < data.length; i++) {
let obj = Object.assign({}, {
"seq": i + 1,
"carrierOrInventory": data[i].carrierOrInventory,
"item": data[i].item,
"status": data[i].status,
"isBind": "Y",
});
me.formObj.list.push(obj);
}
me.formObj.bindNum = data.length;
me.isDisabled = true;
} else {
me.formObj.carrier = "";
}
})
},
//扫描卷条码
scancarrierOrInventory() {
let me = this;
let carrierOrInventory = me.formObj.carrierOrInventory;
if (isBlank(carrierOrInventory)) {
me.$message.error("不可扫描空条码");
return;
}
let maxSeq = 0;
//获得当前列表的序号
for (let i = 0; i < me.formObj.list.length; i++) {
let list = me.formObj.list[i];
if (list.seq > maxSeq) {
maxSeq = list.seq
}
}
//判断卷条码是否被扫描
if (me.scanCodeList.length > 0) {
for (let i = 0; i < me.scanCodeList.length; i++) {
if (me.scanCodeList[i].code === carrierOrInventory) {
me.delListItem(carrierOrInventory);
return;
}
}
}
for (let i = 0; i < me.formObj.list.length; i++) {
if (carrierOrInventory === me.formObj.list[i].carrierOrInventory) {
me.$message.error("已存在此卷条码");
return;
}
}
getItem(carrierOrInventory).then(res => {
if (res.data.code == 0) {
let data = res.data.data;
if (me.formObj.list.length > 0) {
if (data.status !== me.formObj.list[0].status) {
me.$message.error("库存状态不一致,不允许混装");
return;
}
}
let obj = Object.assign({}, {
"seq": maxSeq + 1,
"carrierOrInventory": data.carrierOrInventory,
"item": data.item,
"status": data.status,
"isBind": "N"
});
me.formObj.list.push(obj);
me.needBindList.push(obj);
//将已经扫描过的卷条码存入一个集合
me.scanCodeList.push({ "code": carrierOrInventory });
me.formObj.scanNum += 1;
}
})
//扫描之后清空卷条码输入框
me.formObj.carrierOrInventory = "";
},
//绑定
bind() {
let me = this;
let bindList = [];
//判断需绑定条码是否为空
if (me.needBindList.length > 0) {
for (let i = 0; i < me.needBindList.length; i++) {
let obj = Object.assign({}, {
"carrier": me.formObj.carrier,
"carrierOrInventory": me.needBindList[i].carrierOrInventory,
"item": me.needBindList[i].item
})
bindList.push(obj);
}
me.$refs['formObj'].validateField('carrier', ErrorMsg => {
if (!ErrorMsg) {
showLoading();
bind({
str: me.$route.query.ACTIVITY_ID,
list: bindList
}).then(res => {
hideLoading();
if (res.data.code == 0) {
me.$message.success("绑定成功,请及时更新托盘清单");
me.doClear();
} else {
me.$message.error("绑定失败");
}
}).catch(() => {
hideLoading();
});
}
})
} else {
me.$message.error("不存在需要绑定的条码")
}
},
//清除操作
doClear() {
this.formObj = Object.assign({}, this.initData);
this.formObj.list = [];
this.list = [];
this.bindList = [];
this.isDisabled = false;
this.$refs['formObj'].resetFields();
this.needBindList = [];
this.scanCodeList = [];
},
//在列表中删除重复扫描的卷条码
delListItem(code) {
let me = this;
//已经扫过的卷条码再次扫描则删除
for (let i = 0; i < me.needBindList.length; i++) {
if (code === me.needBindList[i].carrierOrInventory) {
me.needBindList.splice(i, 1);
}
}
for (let i = 0; i < me.formObj.list.length; i++) {
if (code === me.formObj.list[i].carrierOrInventory) {
me.formObj.list.splice(i, 1);
me.formObj.scanNum = me.formObj.scanNum - 1;
//更新显示列表中的序号
for (let j = i; j < me.formObj.list.length; j++) {
me.formObj.list[j].seq = me.formObj.list[j].seq - 1;
}
}
}
for (let i = 0; i < me.scanCodeList.length; i++) {
if (code === me.scanCodeList[i].code) {
me.scanCodeList.splice(i, 1);
}
}
me.formObj.carrierOrInventory = "";
},
// 更改选中行背景色
rowStyle({ row }) {
if (row.isBind === "N") {
return { 'background-color': '#00FF00', cursor: 'pointer' };
}
return { cursor: 'pointer' };
},
}
}
</script>
<style>
.form-footer {
margin-top: 2px;
text-align: center;
}
.el-table__row:hover>td {
background-color: transparent;
}
</style>

View File

@ -0,0 +1,407 @@
<template>
<div class="mobile-home">
<div class="content">
<mobile-navbar title="载具解绑"></mobile-navbar>
<div style="margin: 10px;">
<el-form ref="formObj" :model="formObj" :rules="rules" label-width="auto">
<el-row :gutter="10">
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="站点:" prop="site">
<el-input placeHolder="站点" v-model="formObj.site" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="已绑数量:" prop="bindNum">
<el-input placeHolder="已绑数量" v-model="formObj.bindNum" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="已扫数量:" prop="scanNum">
<el-input placeHolder="已扫数量" v-model="formObj.scanNum" :disabled="true"></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="托条码:" prop="carrier">
<el-input placeHolder="手动输入或者扫码" v-model="formObj.carrier" :disabled="isDisabled"
@keyup.enter.native="scanCarrier">
<i slot="suffix" class="el-input__icon el-icon-full-screen"></i>
</el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="卷条码:" prop="carrierOrInventory">
<el-input placeHolder="手动输入或者扫码" v-model="formObj.carrierOrInventory"
@keyup.enter.native="scancarrierOrInventory">
<i slot="suffix" class="el-input__icon el-icon-full-screen"></i>
</el-input>
</el-form-item>
</el-col>
<el-col>
<el-button type="primary" @click="selectionAll">全选</el-button>
</el-col>
</el-row>
<el-table :data="formObj.list" :row-style="rowStyle">
<el-table-column label="序号" prop="seq"></el-table-column>
<el-table-column label="卷条码" prop="carrierOrInventory"></el-table-column>
<el-table-column label="物料号" prop="item"></el-table-column>
</el-table>
</el-form>
</div>
<div style="margin-top: 10px; display: flex; justify-content: center;">
<el-button type="warning" @click="doClear">清除</el-button>
<el-button type="primary" @click="unBind">解绑</el-button>
<el-button type="primary" @click="print">托盘清单打印</el-button>
</div>
</div>
</div>
</template>
<script>
import { getBindList, getItem, unbind, getCarrier, getBindListByTray, confirmUnBind } from '@/api/wms/carrier-unbind-inventory';
import { getStore } from '@/util/store';
import { isBlank } from '@/util/string';
import { showLoading, hideLoading } from '@/const/loading';
import { listByActivityId } from "@/api/admin/activity-option";
import MobileNavbar from "@/components/top-bar/mobile-navbar.vue";
import {
mapGetters
} from 'vuex';
import axios from "axios";
export default {
components: { MobileNavbar },
data() {
return {
formObj: {},
isDisabled: false,
wms_carrier_member_unbind: false,
isBind: "",
needBindList: [],
scanCodeList: [],
rules: {
carrier: [
{ required: true, message: "托条码不可为空", trigger: 'blur' }
],
carrierOrInventory: [
{ required: true, message: "卷条码不可为空", trigger: 'blur' }
],
},
initData: {
site: getStore({ name: 'tenantId' }),
carrierOrInventory: "",
bindNum: 0,
scanNum: 0,
list: []
}
};
},
created() {
this.wms_carrier_member_unbind = this.permissions["wms_carrier_member_unbind"];
this.formObj = Object.assign({}, this.initData);
this.list = [];
this.needBindList = [];
this.scanCodeList = [];
},
beforeRouteEnter(to, from, next) {
next(vm => {
try {
//获取作业规则
let me = vm;
let activityId = me.$route.query.ACTIVITY_ID;
listByActivityId(activityId).then(response => {
if (response.data.code != 0) {
return me.$message.error(response.data.msg);
}
let data = response.data.data;
if (data && data.length > 0) {
for (let i = 0; i < data.length; i++) {
if (data[i].optionName && data[i].optionName.toUpperCase() === "UNBIND_XNT") {
me.unbindXnt = data[i].optionValue;
}
if (data[i].optionName && data[i].optionName.toUpperCase() === "CONFIRM_ID") {
me.confirmId = data[i].optionValue;
}
}
}
}).catch(e => {
console.log(e);
});
} catch (e) {
console.log(e);
}
});
},
computed: {
...mapGetters(["permissions"]),
permissionList() {
return {};
}
},
methods: {
//扫描托条码
scanCarrier() {
let me = this;
let carrier = me.formObj.carrier;
me.formObj.list = [];
me.needBindList = [];
me.formObj.carrierOrInventory = "";
me.formObj.scanNum = 0;
if (isBlank(carrier)) {
me.$message.error("不可扫描空条码");
return;
}
getBindListByTray(carrier).then(res => {
if (res.data.code == 0) {
for (let i = 0; i < res.data.data.length; i++) {
let obj = Object.assign({}, {
"seq": i + 1,
"carrierOrInventory": res.data.data[i].carrierOrInventory,
"item": res.data.data[i].item,
"isBind": "Y"
});
me.formObj.list.push(obj);
}
me.formObj.bindNum = res.data.data.length;
me.isDisabled = true;
} else {
me.formObj.carrier = "";
}
});
},
//扫描卷条码
scancarrierOrInventory() {
let me = this;
let carrierOrInventory = me.formObj.carrierOrInventory;
if (isBlank(carrierOrInventory)) {
me.$message.error("不可扫描空条码");
return;
}
//判断卷条码是否被扫描
if (me.scanCodeList.includes(carrierOrInventory)) {
me.delListItem(carrierOrInventory);
return;
}
//判断是否为与托条码绑定
if (me.formObj.list.length > 0) {
for (let j = 0; j < me.formObj.list.length; j++) {
if (me.formObj.list[j].carrierOrInventory === carrierOrInventory) {
me.formObj.list[j].isBind = "N";
me.needBindList.push(me.formObj.list[j]);
me.scanCodeList.push(carrierOrInventory);
me.formObj.scanNum += 1;
me.formObj.carrierOrInventory = "";
me.sort(j);
return;
}
}
me.$message.error("此条码与托条码不存在绑定关系");
me.formObj.carrierOrInventory = "";
return;
} else {
me.$message.error("请先扫描托条码");
me.formObj.carrierOrInventory = "";
return;
}
},
//解绑
unBind() {
let me = this;
let unbindList = [];
//判断需绑定条码是否为空
if (me.needBindList.length > 0) {
for (let i = 0; i < me.needBindList.length; i++) {
let obj = Object.assign({}, {
"carrier": me.formObj.carrier,
"carrierOrInventory": me.needBindList[i].carrierOrInventory,
"item": me.needBindList[i].item
});
unbindList.push(obj);
}
me.$refs['formObj'].validateField('carrier', ErrorMsg => {
if (!ErrorMsg) {
let fun = () => {
showLoading();
unbind({
str: me.$route.query.ACTIVITY_ID,
list: unbindList
}).then(res => {
hideLoading();
if (res.data.code == 0) {
me.$message.success("解绑成功,请及时更新托盘清单");
me.doClear();
} else {
me.$message.error("解绑失败");
}
}).catch(() => {
hideLoading();
});
}
let text;
if (me.unbindXnt === 'Y') {
text = "此次解绑为绑定虚拟托模式!";
} else {
text = "此次解绑为直接解绑模式!";
}
if (!isBlank(me.confirmId)) {
me.$prompt(text, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(({ value }) => {
if (value === me.confirmId) {
fun();
} else {
me.$message.error("解绑密码错误");
}
}).catch(() => {
hideLoading();
});
} else {
me.$confirm(text, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
fun();
})
}
}
});
} else {
me.$message.error("不存在需要解绑的条码");
}
},
//清除操作
doClear() {
this.formObj = Object.assign({}, this.initData);
this.formObj.list = [];
this.list = [];
this.isDisabled = false;
this.$refs['formObj'].resetFields();
this.needBindList = [];
this.scanCodeList = [];
},
//在列表中删除重复扫描的卷条码
delListItem(code) {
let me = this;
//已经扫过的卷条码再次扫描则删除
for (let i = 0; i < me.needBindList.length; i++) {
if (code === me.needBindList[i].carrierOrInventory) {
me.needBindList.splice(i, 1);
}
}
for (let i = 0; i < me.formObj.list.length; i++) {
if (code === me.formObj.list[i].carrierOrInventory && "N" === me.formObj.list[i].isBind) {
me.formObj.list[i].isBind = "Y";
}
}
let index = me.scanCodeList.findIndex(o => code === o);
if (index >= 0) {
me.scanCodeList.splice(index, 1);
}
me.formObj.carrierOrInventory = "";
},
//列表重新排序
sort(index) {
let newList = [];
let obj = Object.assign({}, this.formObj.list[index], { "seq": 1 });
newList.push(obj);
this.formObj.list.splice(index, 1);
for (let i = 0; i < this.formObj.list.length; i++) {
let listObj = Object.assign({}, this.formObj.list[i], { "seq": i + 2 });
newList.push(listObj);
}
this.formObj.list = newList;
},
// 更改选中行背景色
rowStyle({ row }) {
if (row.isBind === "N") {
return { 'background-color': '#FF0000', cursor: 'pointer' };
}
return { cursor: 'pointer' };
},
print() {
let me = this;
let carrier = me.formObj.carrier;
if (carrier) {
showLoading();
getCarrier({ carrier: carrier }).then(respData => {
if (respData.data.code != 0) {
return me.$message.error(respData.data.msg);
}
let data = respData.data.data;
if (!data.carrierTypeBo || data.carrierTypeBo.indexOf("TP") < 0) {
return me.$message.error("托条码非托条码");
} else {
// me.downBlobFile("/wms/carrier-member/print", {carrier: carrier}, carrier + ".pdf");
axios({
method: 'get',
url: '/wms/carrier-member/print/',
params: { carrier: carrier },
headers: {
'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
},
responseType: 'blob' //设置响应的数据类型为一个包含二进制数据的 Blob 对象,必须设置!!!
}).then(response => {
hideLoading();
// 处理返回的文件流
const binaryData = [];
binaryData.push(response);
if (binaryData[0].size === 0) {
return this.$notify.error("内容为空,无法下载");
}
let pdfUrl = window.URL.createObjectURL(new Blob([response.data], { type: response.data.type }));
const newPage = window.open(pdfUrl, "_blank", "scrollbars=yes,resizable=1,modal=false,alwaysRaised=yes");
newPage.document.title = carrier + '.pdf';
}).catch(e => {
console.log(e);
hideLoading();
});
}
}).catch(() => {
hideLoading();
});
}
},
selectionAll() {
let me = this;
let list = me.formObj.list;
me.needBindList = [];
me.scanCodeList = [];
if (list.length > 0) {
for (let j = 0; j < list.length; j++) {
let row = list[j];
row.isBind = "N";
me.needBindList.push(row);
me.scanCodeList.push(row.carrierOrInventory);
}
me.formObj.scanNum = list.length;
} else {
me.$message.error("请先扫描托条码");
return;
}
}
}
};
</script>
<style>
.el-table__row:hover>td {
background-color: transparent;
}
</style>

View File

@ -0,0 +1,339 @@
<template>
<div class="mobile-home">
<div class="content">
<input-select-dialog :modal-obj='storageLocationDialogObj' :modal-fetch-fun='storageLocationDialogFetchFun'
:modal-show.sync="storageLocationDialogVisible" @inputDialogSelected="storageLocationSelect">
</input-select-dialog>
<input-select-dialog :modal-obj='storageBinDialogObj' :modal-fetch-fun='storageBinDialogFetchFun'
:modal-show.sync="storageBinDialogVisible" @inputDialogSelected="storageBinSelect">
</input-select-dialog>
<mobile-navbar title="上架"></mobile-navbar>
<div style="margin: 10px;">
<el-form ref="formObj" :rules="rules" :model="formObj" label-width="auto">
<el-row :gutter="10">
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="货架:" prop="storageLocation">
<el-input @keyup.enter.native="getStorageBin(formObj.storageLocation)" v-model="formObj.storageLocation"
placeholder="选择存储位置"><i slot="suffix" class="el-input__icon el-icon-search"
@click.stop="showStorageLocationDialog"></i>
</el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="货格号:" prop="storageBin">
<el-input v-model="formObj.storageBin" placeholder="选择存储货格"
@keyup.enter.native="getStorageLocationByStorageBin(formObj.storageBin)"><i slot="suffix"
class="el-input__icon el-icon-search" @click.stop="showStorageBinDialog"></i></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="托条码:" prop="carrier">
<el-input v-model="formObj.carrier" placeholder="手动输入或扫码"
@keyup.enter.native="addList(formObj.carrier)">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-table :data="formObj.itemList" :show-header="false">
<el-table-column prop="carrier">
<template slot-scope="scope">
<div>
<span style="text-align: right; width: 60px; display: inline-block;">托条码</span>
<span class="text"> {{ scope.row.carrier }}</span>
</div>
<div>
<span style="text-align: right; width: 60px; display: inline-block;">箱</span>
<span class="text"> {{ scope.row.inventoryQty }}</span>
</div>
</template>
</el-table-column>
<!-- <el-table-column label="箱" prop="inventoryQty">
</el-table-column> -->
<el-table-column align="right">
<template slot-scope="scope">
<el-button v-if="scope.row.handle == ''" size="mini" type="danger"
@click="handleDelete(scope.$index, scope.row)">删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
<div style="margin-top: 10px; display: flex; justify-content: center;">
<el-button v-if="bind_inventory_up_default" type="warning" @click="bind('formObj')">上架
</el-button>
<el-button type="warning" @click="clear">清除
</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import { upObj, getCarrierList, getUpCarrier } from '@/api/wms/shelves'
import {
fetchList as fetchStorageLocationList,
getStorageBin
} from '@/api/wms/storage-location'
import {
fetchList as fetchStorageBinList,
getStorageLocationByStorageBin
} from "@/api/wms/storagebin";
import { showLoading, hideLoading } from '@/const/loading';
import { isBlank } from '@/util/string';
import MobileNavbar from "@/components/top-bar/mobile-navbar.vue";
import {
mapGetters
} from 'vuex'
export default {
components: { MobileNavbar },
data() {
return {
formObj: {},
rules: {
storageLocation: [
{ required: true, message: '货架不可为空' }
],
storageBin: [
{ required: true, message: '货格号不可为空' }
]
},
initData: {
storageLocation: "",
storageBin: "",
itemList: [ ]
},
storageLocationDialogVisible: false,
storageLocationDialogFetchFun: fetchStorageLocationList,
storageLocationDialogObj: {
"condition": "storageLocation",
tableColumn: [
{ prop: "storageLocation", label: "存储位置", width: "200" },
{ prop: "description", label: "描述" }
]
},
storageBinDialogVisible: false,
storageBinDialogFetchFun: fetchStorageBinList,
storageBinDialogObj: {
"condition": "storageBin",
tableColumn: [
{ prop: "storageBin", label: "存储货格", width: "200" },
{ prop: "description", label: "描述" },
{
prop: "isDefault", label: "是否默认货格", width: "100", formatter: (row, column, cellValue, index) => {
if (cellValue == "Y") {
return "是";
}
if (cellValue == "N") {
return "否";
}
}
}
]
},
}
},
created() {
this.bind_inventory_up_default = this.permissions['bind_inventory_up_default']
this.doinit();
},
computed: {
...mapGetters(['permissions']),
permissionList() {
return {
};
}
},
methods: {
doinit() {
this.formObj = Object.assign({}, this.initData);
},
//显示存储位置弹出框
showStorageLocationDialog() {
let me = this;
me.storageLocationDialogVisible = true;
},
storageLocationSelect(row) {
let me = this;
me.formObj.storageLocation = row.storageLocation;
me.formObj.storageLocationBo = row.handle;
},
showStorageBinDialog() {
let me = this;
let storageLocation = me.formObj.storageLocation;
this.storageBinDialogObj.queryParam = { "storageLocation": storageLocation }
me.storageBinDialogVisible = true;
},
storageBinSelect(row) {
let me = this;
me.formObj.storageBin = row.storageBin;
me.formObj.storageBinBo = row.handle;
this.getStorageLocationByStorageBin(me.formObj.storageBin);
},
//扫描托条码
addList(carrier) {
let me = this;
if (me.formObj.itemList.length > 0) {
for (let i = 0; i < me.formObj.itemList.length; i++) {
if (me.formObj.carrier === me.formObj.itemList[i].carrier) {
me.$message.error('不可重复扫描同一条码')
return
}
}
}
showLoading();
getUpCarrier(carrier).then(res => {
hideLoading();
let obj = Object.assign({}, { "carrier": res.data.data.carrier, "inventoryQty": res.data.data.inventoryQty, "handle": '' });
me.formObj.itemList.push(obj);
me.formObj.carrier = "";
}).catch(e => {
hideLoading();
});
},
//上架操作
bind(formName) {
let me = this;
let objList = []
if (me.formObj.itemList.length > 0) {
for (let i = 0; i < me.formObj.itemList.length; i++) {
if (isBlank(me.formObj.itemList[i].handle)) {
let obj = Object.assign({}, {
"storageBin": me.formObj.storageBin,
"storageLocation": me.formObj.storageLocation,
"carrier": me.formObj.itemList[i].carrier,
"inventoryQty": me.formObj.itemList[i].inventoryQty
});
objList.push(obj);
}
}
} else {
this.$message.error('不存在需要上架的托');
return;
}
me.$refs[formName].validate((valid) => {
if (valid) {
if (objList.length == 0) {
this.$message.error('不存在需要上架的托');
return;
}
showLoading();
upObj(objList).then(res => {
hideLoading();
if (res.data.code == 0) {
this.$message.success('上架成功')
this.doclear()
}
}).catch(e => {
hideLoading();
});
}
})
},
getitemList() {
let me = this;
me.formObj.itemList = [];
let val = me.formObj.storageBin;
showLoading()
getCarrierList(val).then(res => {
hideLoading();
for (let i = 0; i < res.data.data.length; i++) {
let obj = Object.assign({}, { "carrier": res.data.data[i].carrier, "inventoryQty": res.data.data[i].inventoryQty, "handle": res.data.data[i].handle });
me.formObj.itemList.push(obj);
}
}).catch(e => {
hideLoading();
});
},
//扫描货架进行的操作
getStorageBin(value) {
let me = this;
me.$refs['formObj'].validateField(["storageLocation"], (valid) => {
if (valid) {
return false;
} else {
showLoading();
getStorageBin(value).then(res => {
hideLoading();
if (res.data.code == 0 && res.data.data != null) {
me.formObj.storageBin = res.data.data.storageBin;
this.getitemList();
}
}).catch(e => {
hideLoading();
});
}
})
},
//扫描货格进行的操作
getStorageLocationByStorageBin(value) {
let me = this;
me.$refs['formObj'].validateField(["storageBin"], (valid) => {
if (valid) {
return false;
} else {
showLoading()
getStorageLocationByStorageBin(value).then(res => {
hideLoading()
if (res.data.code == 0 && res.data.data != null) {
me.formObj.storageLocation = res.data.data.storageLocation;
this.getitemList();
}
}).catch(e => {
hideLoading();
});
}
})
},
handleDelete(index, row) {
let me = this
me.formObj.itemList.splice(index, 1);
},
doclear() {
this.doinit();
this.formObj.itemList = [];
this.$refs['formObj'].resetFields();
},
clear() {
let me = this;
me.formObj.storageLocation = "";
me.formObj.storageBin = "";
me.formObj.carrier = "";
me.formObj.itemList = [];
me.$refs['formObj'].resetFields();
}
},
}
</script>
<style scoped>
.text {
font-weight: 600;
color: black;
margin-left: 10px;
}
</style>

View File

@ -0,0 +1,355 @@
<template>
<div class="mobile-home">
<div class="content">
<input-select-dialog :modal-obj='storageLocationDialogObj' :modal-fetch-fun='storageLocationDialogFetchFun'
:modal-show.sync="storageLocationDialogVisible" @inputDialogSelected="storageLocationSelect">
</input-select-dialog>
<input-select-dialog :modal-obj='storageBinDialogObj' :modal-fetch-fun='storageBinDialogFetchFun'
:modal-show.sync="storageBinDialogVisible" @inputDialogSelected="storageBinSelect">
</input-select-dialog>
<mobile-navbar title="下架"></mobile-navbar>
<div style="margin: 10px;">
<el-form ref="formObj" :rules="rules" :model="formObj" label-width="auto">
<el-row :gutter="10">
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="货架:" prop="storageLocation">
<el-input @keyup.enter.native="getStorageBin(formObj.storageLocation)"
v-model="formObj.storageLocation" placeholder="选择存储位置" :disabled="true"><i slot="suffix"
class="el-input__icon el-icon-search"
@click.stop="showStorageLocationDialog"></i>
</el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="货格号:" prop="storageBin">
<el-input v-model="formObj.storageBin" placeholder="选择存储货格" :disabled="true"
@keyup.enter.native="getStorageLocationByStorageBin(formObj.storageBin)"><i
slot="suffix" class="el-input__icon el-icon-search"
@click.stop="showStorageBinDialog"></i></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12">
<el-form-item label="托条码:" prop="carrier">
<el-input v-model="formObj.carrier" placeholder="手动输入或扫码"
@keyup.enter.native="addList(formObj.carrier)">
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-table :data="formObj.itemList" :show-header="false">
<el-table-column label="托条码" prop="carrier">
<template slot-scope="scope">
<div>
<span style="text-align: right; width: 60px; display: inline-block;">托条码</span>
<span class="text"> {{ scope.row.carrier }}</span>
</div>
<div>
<span style="text-align: right; width: 60px; display: inline-block;">箱</span>
<span class="text"> {{ scope.row.inventoryQty }}</span>
</div>
<div>
<span style="text-align: right; width: 60px; display: inline-block;">货格号</span>
<span class="text"> {{ scope.row.storageBin }}</span>
</div>
</template>
</el-table-column>
<!-- <el-table-column label="箱" prop="inventoryQty">
</el-table-column>
<el-table-column label="货格号" prop="storageBin">
</el-table-column> -->
<el-table-column align="right">
<template slot-scope="scope">
<el-button v-if="scope.row.handle == ''" size="mini" type="danger"
@click="handleDelete(scope.$index, scope.row)">删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
<div style="margin-top: 10px; display: flex; justify-content: center;">
<el-button type="primary" v-if="bind_inventory_down_dfault" @click="unbind('formObj')">下架
</el-button>
<el-button type="warning" @click="clear">清除
</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
import {downObj, getCarrierList, getNotInDefaultCarrier} from '@/api/wms/unShelve';
import {fetchList as fetchStorageLocationList, getStorageBin} from '@/api/wms/storage-location';
import {hideLoading, showLoading} from '@/const/loading';
import {fetchList as fetchStorageBinList, getStorageLocationByStorageBin} from "@/api/wms/storagebin";
import {listByActivityId} from "@/api/admin/activity-option";
import {mapGetters} from 'vuex';
import MobileNavbar from "@/components/top-bar/mobile-navbar.vue";
export default {
components: { MobileNavbar },
data() {
return {
formObj: {},
rules: {
storageLocation: [
{required: true, message: '货架不可为空'}
],
storageBin: [
{required: true, message: '货格号不可为空'}
],
carrier: [
{required: true, message: '托条码不可为空'}
],
},
initData: {
storageLocation: "",
storageBin: "",
itemList: [
{
carrier: "123213213",
inventoryQty: "22",
storageBin: "1221",
handle: ""
}
]
},
storageLocationDialogVisible: false,
storageLocationDialogFetchFun: fetchStorageLocationList,
storageLocationDialogObj: {
"condition": "storageLocation",
tableColumn: [
{prop: "storageLocation", label: "存储位置", width: "200"},
{prop: "description", label: "描述"}
]
},
storageBinDialogVisible: false,
storageBinDialogFetchFun: fetchStorageBinList,
storageBinDialogObj: {
"condition": "storageBin",
tableColumn: [
{prop: "storageBin", label: "存储货格", width: "200"},
{prop: "description", label: "描述"}
]
},
};
},
created() {
this.bind_inventory_down_dfault = this.permissions['bind_inventory_down_dfault'];
this.doinit();
},
beforeRouteEnter(to, from, next) {
next(vm => {
try {
//获取作业规则
let me = vm;
let activityId = me.$route.query.ACTIVITY_ID;
listByActivityId(activityId).then(response => {
if (response.data.code != 0) {
return me.$message.error(response.data.msg);
}
let data = response.data.data;
if (data && data.length > 0) {
for (let i = 0; i < data.length; i++) {
if (data[i].optionName && data[i].optionName.toUpperCase() === "STORAGE_LOCATION") {
me.defaultStorageLocation = data[i].optionValue;
}
}
}
}).catch(e => {
console.log(e);
});
} catch (e) {
console.log(e);
}
});
},
computed: {
...mapGetters(['permissions']),
permissionList() {
return {};
}
},
methods: {
doinit() {
this.formObj = Object.assign({}, this.initData);
},
//显示存储位置弹出框
showStorageLocationDialog() {
let me = this;
me.storageLocationDialogVisible = true;
},
storageLocationSelect(row) {
let me = this;
me.formObj.storageLocation = row.storageLocation;
me.formObj.storageLocationBo = row.handle;
},
showStorageBinDialog() {
let me = this;
let storageLocation = me.formObj.storageLocation;
this.storageBinDialogObj.queryParam = {"storageLocation": storageLocation};
me.storageBinDialogVisible = true;
},
storageBinSelect(row) {
let me = this;
me.formObj.storageBin = row.storageBin;
me.formObj.storageBinBo = row.handle;
this.getStorageLocationByStorageBin(me.formObj.storageBin);
},
//扫描托条码
addList(carrier) {
let me = this;
if (me.formObj.itemList.length > 0) {
for (let i = 0; i < me.formObj.itemList.length; i++) {
if (me.formObj.carrier === me.formObj.itemList[i].carrier) {
me.$message.error('不可重复扫描同一条码');
return;
}
}
}
getNotInDefaultCarrier(carrier).then(res => {
let obj = Object.assign({}, {
"carrier": res.data.data.carrier,
"inventoryQty": res.data.data.inventoryQty,
"handle": '',
"storageBin": res.data.data.storageBin
});
me.formObj.itemList.push(obj);
me.formObj.storageBin = res.data.data.storageBin;
me.formObj.storageLocation = res.data.data.storageLocation;
me.formObj.flag = res.data.data.carrier;
me.formObj.carrier = "";
});
},
//下架操作
unbind(formName) {
let me = this;
let objList = [];
if (me.formObj.itemList.length > 0) {
for (let i = 0; i < me.formObj.itemList.length; i++) {
let obj = Object.assign({}, {
"storageBin": me.formObj.storageBin,
"storageLocation": me.formObj.storageLocation,
"carrier": me.formObj.itemList[i].carrier,
"inventoryQty": me.formObj.itemList[i].inventoryQty
});
objList.push(obj);
}
} else {
this.$message.error('不存在需要下架的托');
return;
}
showLoading();
downObj({
storageLocation: me.defaultStorageLocation,
list: objList
}).then(res => {
hideLoading();
if (res.data.code == 0) {
this.$message.success('下架成功');
this.doclear();
}
}).catch(() => {
hideLoading();
});
},
getitemList() {
let me = this;
me.formObj.itemList = [];
let val = me.formObj.storageBin;
getCarrierList(val).then(res => {
for (let i = 0; i < res.data.data.length; i++) {
let obj = Object.assign({}, {
"carrier": res.data.data[i].carrier,
"inventoryQty": res.data.data[i].inventoryQty,
"handle": res.data.data[i].handle
});
me.formObj.itemList.push(obj);
}
});
},
//扫描货架进行的操作
getStorageBin(value) {
let me = this;
me.$refs['formObj'].validateField(["storageLocation"], (valid) => {
if (valid) {
return false;
} else {
getStorageBin(value).then(res => {
if (res.data.code == 0 && res.data.data != null) {
me.formObj.storageBin = res.data.data.storageBin;
this.getitemList();
}
});
}
});
},
//扫描货格进行的操作
getStorageLocationByStorageBin(value) {
let me = this;
me.$refs['formObj'].validateField(["storageBin"], (valid) => {
if (valid) {
return false;
} else {
getStorageLocationByStorageBin(value).then(res => {
if (res.data.code == 0 && res.data.data != null) {
me.formObj.storageLocation = res.data.data.storageLocation;
this.getitemList();
}
});
}
});
},
handleDelete(index, row) {
let me = this;
me.formObj.itemList.splice(index, 1);
},
doclear() {
this.doinit();
this.formObj.itemList = [];
this.$refs['formObj'].resetFields();
},
clear() {
let me = this;
me.formObj.storageLocation = "";
me.formObj.storageBin = "";
me.formObj.carrier = "";
me.formObj.itemList = [];
me.$refs['formObj'].resetFields();
}
},
};
</script>
<style scoped>
.text {
font-weight: 600;
color: black;
margin-left: 10px;
}
</style>

View File

@ -2,7 +2,7 @@
* 配置参考:
* https://cli.vuejs.org/zh/config/
*/
const url = 'http://mom-gateway:9999'
const url = 'http://10.10.11.40:11001'
const CompressionWebpackPlugin = require('compression-webpack-plugin')
const productionGzipExtensions = ['js', 'css']
const path = require('path')