diff --git a/src/api/mes/wm/transfer/detail/index.ts b/src/api/mes/wm/transfer/detail/index.ts
new file mode 100644
index 000000000..caa23ff83
--- /dev/null
+++ b/src/api/mes/wm/transfer/detail/index.ts
@@ -0,0 +1,54 @@
+import request from '@/config/axios'
+
+// MES 调拨明细 VO
+export interface WmTransferDetailVO {
+ id: number
+ lineId: number
+ transferId: number
+ itemId: number
+ itemCode?: string
+ itemName?: string
+ specification?: string
+ unitName?: string
+ unitMeasureName?: string
+ quantity: number
+ batchId: number
+ batchCode?: string
+ toWarehouseId: number
+ toWarehouseName?: string
+ toLocationId: number
+ toLocationName?: string
+ toAreaId: number
+ toAreaName?: string
+ remark: string
+ createTime?: string
+}
+
+// MES 调拨明细 API
+export const WmTransferDetailApi = {
+ // 查询调拨明细列表(按行编号)
+ getTransferDetailListByLineId: async (lineId: number) => {
+ return await request.get({ url: '/mes/wm/transfer-detail/list-by-line', params: { lineId } })
+ },
+
+ // 查询调拨明细详情
+ getTransferDetail: async (id: number) => {
+ return await request.get({ url: '/mes/wm/transfer-detail/get?id=' + id })
+ },
+
+ // 新增调拨明细
+ createTransferDetail: async (data: WmTransferDetailVO) => {
+ return await request.post({ url: '/mes/wm/transfer-detail/create', data })
+ },
+
+ // 修改调拨明细
+ updateTransferDetail: async (data: WmTransferDetailVO) => {
+ return await request.put({ url: '/mes/wm/transfer-detail/update', data })
+ },
+
+ // 删除调拨明细
+ deleteTransferDetail: async (id: number) => {
+ return await request.delete({ url: '/mes/wm/transfer-detail/delete?id=' + id })
+ },
+
+}
diff --git a/src/api/mes/wm/transfer/index.ts b/src/api/mes/wm/transfer/index.ts
new file mode 100644
index 000000000..4e595fbb8
--- /dev/null
+++ b/src/api/mes/wm/transfer/index.ts
@@ -0,0 +1,73 @@
+import request from '@/config/axios'
+
+// MES 转移单 VO
+export interface WmTransferVO {
+ id: number
+ code: string
+ name: string
+ type: number
+ deliveryFlag: boolean
+ recipientName: string
+ recipientTelephone: string
+ destinationAddress: string
+ carrier: string
+ shippingNumber: string
+ confirmFlag: boolean
+ transferDate: string
+ status: number
+ remark: string
+ createTime?: string
+}
+
+// MES 转移单 API
+export const WmTransferApi = {
+ // 查询转移单分页
+ getTransferPage: async (params: any) => {
+ return await request.get({ url: '/mes/wm/transfer/page', params })
+ },
+
+ // 查询转移单详情
+ getTransfer: async (id: number) => {
+ return await request.get({ url: '/mes/wm/transfer/get?id=' + id })
+ },
+
+ // 新增转移单
+ createTransfer: async (data: WmTransferVO) => {
+ return await request.post({ url: '/mes/wm/transfer/create', data })
+ },
+
+ // 修改转移单
+ updateTransfer: async (data: WmTransferVO) => {
+ return await request.put({ url: '/mes/wm/transfer/update', data })
+ },
+
+ // 删除转移单
+ deleteTransfer: async (id: number) => {
+ return await request.delete({ url: '/mes/wm/transfer/delete?id=' + id })
+ },
+
+ // 提交转移单
+ submitTransfer: async (id: number) => {
+ return await request.put({ url: '/mes/wm/transfer/submit?id=' + id })
+ },
+
+ // 到货确认
+ confirmTransfer: async (id: number) => {
+ return await request.put({ url: '/mes/wm/transfer/confirm?id=' + id })
+ },
+
+ // 完成转移
+ finishTransfer: async (id: number) => {
+ return await request.put({ url: '/mes/wm/transfer/finish?id=' + id })
+ },
+
+ // 取消转移单
+ cancelTransfer: async (id: number) => {
+ return await request.put({ url: '/mes/wm/transfer/cancel?id=' + id })
+ },
+
+ // 导出转移单 Excel
+ exportTransfer: async (params: any) => {
+ return await request.download({ url: '/mes/wm/transfer/export-excel', params })
+ }
+}
\ No newline at end of file
diff --git a/src/api/mes/wm/transfer/line/index.ts b/src/api/mes/wm/transfer/line/index.ts
new file mode 100644
index 000000000..fc1796119
--- /dev/null
+++ b/src/api/mes/wm/transfer/line/index.ts
@@ -0,0 +1,54 @@
+import request from '@/config/axios'
+
+// MES 转移单行 VO
+export interface WmTransferLineVO {
+ id: number
+ transferId: number
+ materialStockId: number
+ itemId: number
+ itemCode?: string
+ itemName?: string
+ specification?: string
+ unitName?: string
+ unitMeasureName?: string
+ quantity: number
+ batchId: number
+ batchCode?: string
+ fromWarehouseId: number
+ fromWarehouseName?: string
+ fromLocationId: number
+ fromLocationName?: string
+ fromAreaId: number
+ fromAreaName?: string
+ remark: string
+ createTime?: string
+}
+
+// MES 转移单行 API
+export const WmTransferLineApi = {
+ // 查询转移单行列表
+ getTransferLineList: async (transferId: number) => {
+ return await request.get({ url: '/mes/wm/transfer-line/list', params: { transferId } })
+ },
+
+ // 查询转移单行详情
+ getTransferLine: async (id: number) => {
+ return await request.get({ url: '/mes/wm/transfer-line/get?id=' + id })
+ },
+
+ // 新增转移单行
+ createTransferLine: async (data: WmTransferLineVO) => {
+ return await request.post({ url: '/mes/wm/transfer-line/create', data })
+ },
+
+ // 修改转移单行
+ updateTransferLine: async (data: WmTransferLineVO) => {
+ return await request.put({ url: '/mes/wm/transfer-line/update', data })
+ },
+
+ // 删除转移单行
+ deleteTransferLine: async (id: number) => {
+ return await request.delete({ url: '/mes/wm/transfer-line/delete?id=' + id })
+ },
+
+}
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index eeb9769ff..bed41059e 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -294,6 +294,8 @@ export enum DICT_TYPE {
MES_RQC_TYPE = 'mes_rqc_type', // MES 退货检验类型
MES_WM_ARRIVAL_NOTICE_STATUS = 'mes_wm_arrival_notice_status', // MES 到货通知单状态
MES_WM_ITEM_RECEIPT_STATUS = 'mes_wm_item_receipt_status', // MES 物料接收单状态
+ MES_WM_TRANSFER_STATUS = 'mes_wm_transfer_status', // MES 转移单状态
+ MES_WM_TRANSFER_TYPE = 'mes_wm_transfer_type', // MES 转移单类型
MES_WM_OUTSOURCE_RECPT_STATUS = 'mes_wm_outsource_recpt_status', // MES 外协入库单状态
MES_WM_PRODUCTION_ISSUE_STATUS = 'mes_wm_production_issue_status', // MES 领料出库单状态
MES_PRODUCT_PRODUCE_STATUS = 'mes_product_produce_status', // MES 生产入库单状态
diff --git a/src/views/mes/utils/constants.ts b/src/views/mes/utils/constants.ts
index 21e8157cb..569f66330 100644
--- a/src/views/mes/utils/constants.ts
+++ b/src/views/mes/utils/constants.ts
@@ -209,6 +209,16 @@ export const MesWmItemReceiptStatusEnum = {
CANCELED: MesOrderStatusConstants.CANCELLED
}
+/** MES 转移单状态枚举 */
+export const MesWmTransferStatusEnum = {
+ PREPARE: MesOrderStatusConstants.DRAFT,
+ UNCONFIRMED: MesOrderStatusConstants.CONFIRMED,
+ UNSTOCK: MesOrderStatusConstants.APPROVING,
+ UNEXECUTE: MesOrderStatusConstants.APPROVED,
+ FINISHED: MesOrderStatusConstants.FINISHED,
+ CANCELED: MesOrderStatusConstants.CANCELLED
+}
+
/** MES 委外收货单状态枚举 */
export const MesWmOutsourceReceiptStatusEnum = {
PREPARE: MesOrderStatusConstants.DRAFT,
diff --git a/src/views/mes/wm/materialStock/components/WmMaterialStockSelect.vue b/src/views/mes/wm/materialStock/components/WmMaterialStockSelect.vue
index 20924b659..b3a2f93b2 100644
--- a/src/views/mes/wm/materialStock/components/WmMaterialStockSelect.vue
+++ b/src/views/mes/wm/materialStock/components/WmMaterialStockSelect.vue
@@ -123,6 +123,7 @@ const handleConfirm = () => {
if (!selectedRow.value) {
return
}
+ // TODO @芋艿:暂时不用提供 warehouseName、locationName、areaName 这种;
emit('select', {
materialStockId: selectedRow.value.id,
batchId: selectedRow.value.batchId,
diff --git a/src/views/mes/wm/packages/PackageLineList.vue b/src/views/mes/wm/packages/PackageLineList.vue
index c7e77ce85..422c9df78 100644
--- a/src/views/mes/wm/packages/PackageLineList.vue
+++ b/src/views/mes/wm/packages/PackageLineList.vue
@@ -128,6 +128,8 @@ const queryParams = reactive({
const getList = async () => {
loading.value = true
try {
+ // TODO @芋艿:需确认“父箱详情 -> 装箱清单”是否要和 ktg-mes 一样,自动汇总当前箱及其子孙箱明细;
+ // 目前前端仅传当前 packageId,最终查询范围取决于后端 package-line/page 的实现。
queryParams.packageId = props.packageId
const data = await WmPackageLineApi.getPackageLinePage(queryParams)
list.value = data.list
diff --git a/src/views/mes/wm/transfer/TransferForm.vue b/src/views/mes/wm/transfer/TransferForm.vue
new file mode 100644
index 000000000..d1fc36ce3
--- /dev/null
+++ b/src/views/mes/wm/transfer/TransferForm.vue
@@ -0,0 +1,295 @@
+
+
+
+
+
diff --git a/src/views/mes/wm/transfer/index.vue b/src/views/mes/wm/transfer/index.vue
new file mode 100644
index 000000000..06aa9c746
--- /dev/null
+++ b/src/views/mes/wm/transfer/index.vue
@@ -0,0 +1,332 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+ 新增
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.code }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.deliveryFlag ? '是' : '否' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 提交
+
+
+ 删除
+
+
+ 到货确认
+
+
+ 执行上架
+
+
+ 执行转移
+
+
+ 取消
+
+
+
+
+
+
+
+
+
+
+