From b3b35e147b25e8594489156bb8d9f11b0653459f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 13 May 2026 08:57:41 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=88wms=EF=BC=89=EF=BC=9A=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=87=BA=E5=BA=93=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/wms/order/shipment/detail/index.ts | 25 + src/api/wms/order/shipment/index.ts | 77 +++ src/utils/dict.ts | 1 + .../md/merchant/components/MerchantSelect.vue | 14 +- .../wms/order/receipt/ReceiptOrderForm.vue | 35 +- src/views/wms/order/receipt/index.vue | 115 ++-- .../order/shipment/ShipmentOrderDetail.vue | 168 +++++ .../wms/order/shipment/ShipmentOrderForm.vue | 524 ++++++++++++++ .../wms/order/shipment/ShipmentOrderPrint.vue | 128 ++++ src/views/wms/order/shipment/index.vue | 649 ++++++++++++++++++ src/views/wms/utils/constants.ts | 12 + 11 files changed, 1696 insertions(+), 52 deletions(-) create mode 100644 src/api/wms/order/shipment/detail/index.ts create mode 100644 src/api/wms/order/shipment/index.ts create mode 100644 src/views/wms/order/shipment/ShipmentOrderDetail.vue create mode 100644 src/views/wms/order/shipment/ShipmentOrderForm.vue create mode 100644 src/views/wms/order/shipment/ShipmentOrderPrint.vue create mode 100644 src/views/wms/order/shipment/index.vue diff --git a/src/api/wms/order/shipment/detail/index.ts b/src/api/wms/order/shipment/detail/index.ts new file mode 100644 index 000000000..52017fef4 --- /dev/null +++ b/src/api/wms/order/shipment/detail/index.ts @@ -0,0 +1,25 @@ +// WMS 出库单明细 VO +export interface ShipmentOrderDetailVO { + id?: number + orderId?: number + itemId?: number + itemCode?: string + itemName?: string + unit?: string + skuId?: number + skuCode?: string + skuName?: string + inventoryDetailId?: number + warehouseId?: number + warehouseName?: string + areaId?: number + areaName?: string + batchNo?: string + productionDate?: Date + expirationDate?: Date + quantity?: number + availableQuantity?: number + amount?: number + remark?: string + createTime?: Date +} diff --git a/src/api/wms/order/shipment/index.ts b/src/api/wms/order/shipment/index.ts new file mode 100644 index 000000000..b9dc2fb59 --- /dev/null +++ b/src/api/wms/order/shipment/index.ts @@ -0,0 +1,77 @@ +import request from '@/config/axios' +import { ShipmentOrderDetailVO } from './detail' + +// WMS 出库单 VO +export interface ShipmentOrderVO { + id?: number + no?: string + type?: number + status?: number + bizOrderNo?: string + merchantId?: number + merchantName?: string + remark?: string + warehouseId?: number + warehouseName?: string + areaId?: number + areaName?: string + totalQuantity?: number + totalAmount?: number + details?: ShipmentOrderDetailVO[] + createTime?: Date + creator?: string + creatorName?: string + updateTime?: Date + updater?: string + updaterName?: string +} + +// WMS 出库单 API +export const ShipmentOrderApi = { + // 查询出库单分页 + getShipmentOrderPage: async (params: any) => { + return await request.get({ url: '/wms/shipment-order/page', params }) + }, + + // 查询出库单详情 + getShipmentOrder: async (id: number) => { + return await request.get({ url: '/wms/shipment-order/get?id=' + id }) + }, + + // 查询出库单明细 + getShipmentOrderDetailListByOrderId: async (orderId: number) => { + return await request.get({ + url: '/wms/shipment-order-detail/list-by-order-id?orderId=' + orderId + }) + }, + + // 新增出库单 + createShipmentOrder: async (data: ShipmentOrderVO) => { + return await request.post({ url: '/wms/shipment-order/create', data }) + }, + + // 修改出库单 + updateShipmentOrder: async (data: ShipmentOrderVO) => { + return await request.put({ url: '/wms/shipment-order/update', data }) + }, + + // 完成出库 + completeShipmentOrder: async (id: number) => { + return await request.put({ url: '/wms/shipment-order/complete?id=' + id }) + }, + + // 作废出库单 + cancelShipmentOrder: async (id: number) => { + return await request.put({ url: '/wms/shipment-order/cancel?id=' + id }) + }, + + // 删除出库单 + deleteShipmentOrder: async (id: number) => { + return await request.delete({ url: '/wms/shipment-order/delete?id=' + id }) + }, + + // 导出出库单 + exportShipmentOrder: async (params: any) => { + return await request.download({ url: '/wms/shipment-order/export-excel', params }) + } +} diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 02d91adde..df5dbc00a 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -221,6 +221,7 @@ export enum DICT_TYPE { WMS_INVENTORY_HISTORY_TYPE = 'wms_inventory_history_type', // WMS 库存记录类型 WMS_ORDER_STATUS = 'wms_order_status', // WMS 单据状态 WMS_RECEIPT_ORDER_TYPE = 'wms_receipt_order_type', // WMS 入库单类型 + WMS_SHIPMENT_ORDER_TYPE = 'wms_shipment_order_type', // WMS 出库单类型 // ========== AI - 人工智能模块 ========== AI_PLATFORM = 'ai_platform', // AI 平台 diff --git a/src/views/wms/md/merchant/components/MerchantSelect.vue b/src/views/wms/md/merchant/components/MerchantSelect.vue index 5f2b3f6e9..90bd59939 100644 --- a/src/views/wms/md/merchant/components/MerchantSelect.vue +++ b/src/views/wms/md/merchant/components/MerchantSelect.vue @@ -22,7 +22,7 @@ diff --git a/src/views/wms/order/shipment/ShipmentOrderForm.vue b/src/views/wms/order/shipment/ShipmentOrderForm.vue new file mode 100644 index 000000000..90a3319d1 --- /dev/null +++ b/src/views/wms/order/shipment/ShipmentOrderForm.vue @@ -0,0 +1,524 @@ + + + + diff --git a/src/views/wms/order/shipment/ShipmentOrderPrint.vue b/src/views/wms/order/shipment/ShipmentOrderPrint.vue new file mode 100644 index 000000000..ce3e39052 --- /dev/null +++ b/src/views/wms/order/shipment/ShipmentOrderPrint.vue @@ -0,0 +1,128 @@ + + + + diff --git a/src/views/wms/order/shipment/index.vue b/src/views/wms/order/shipment/index.vue new file mode 100644 index 000000000..289405f22 --- /dev/null +++ b/src/views/wms/order/shipment/index.vue @@ -0,0 +1,649 @@ + + + + + + diff --git a/src/views/wms/utils/constants.ts b/src/views/wms/utils/constants.ts index ff922ce07..3a2baf0c7 100644 --- a/src/views/wms/utils/constants.ts +++ b/src/views/wms/utils/constants.ts @@ -5,6 +5,12 @@ export const OrderStatusEnum = { CANCELED: 5 // 已作废 } as const +/** 可修改的单据状态 */ +export const OrderUpdateStatusList: number[] = [OrderStatusEnum.PREPARE] + +/** 可删除的单据状态 */ +export const OrderDeleteStatusList: number[] = [OrderStatusEnum.PREPARE, OrderStatusEnum.CANCELED] + /** 往来企业类型枚举 */ export const MerchantTypeEnum = { CUSTOMER: 1, // 客户 @@ -17,3 +23,9 @@ export const SupplierMerchantTypeList = [ MerchantTypeEnum.SUPPLIER, MerchantTypeEnum.CUSTOMER_SUPPLIER ] + +/** 客户类型的往来企业 */ +export const CustomerMerchantTypeList = [ + MerchantTypeEnum.CUSTOMER, + MerchantTypeEnum.CUSTOMER_SUPPLIER +]