From 6a109dc6b6b27b34aad5c16c19f2b8b8ce11484b Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Tue, 23 Sep 2025 15:01:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E6=96=B0=E5=A2=9E6=E4=B8=AA?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E9=A1=B5=E9=9D=A2=E4=BB=A5=E5=8F=8A=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E6=80=BB=E6=B1=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1.退库原因分析报表returnReasonAnalysis 统计各类退库(生产退库、销售退库等)的数量、占比及主要退库原因(如质量问题、订单变更),为改进生产、销售和质量管理提供数据支持。 2.库存变动趋势分析表inventoryTrendAnalysis 内容:以折线图/柱状图展示某物料或类别在一段时间内的库存数量变化(如近3个月每周结存),标注关键节点(如大额入库/出库)。 作用:识别库存波动规律(如季节性增减),预测未来库存需求,避免积压或短缺。 3.安全库存预警表safetyStockAlert 内容:对比物料当前库存与设定的“安全库存值”,列出“低于安全库存”(短缺预警)或“高于最高库存”(积压预警)的物料及差异量。 4.呆滞料库存报表stagnantInventory 内容:定义“呆滞标准”(如6个月未出库),统计符合标准的物料及数量、金额,标注呆滞原因(如订单取消/设计变更)。 作用:推动呆滞料处理(如折价处理、返工利用),减少资金占用和仓储成本。 5.库存差异报表inventoryDifference 内容:记录盘点后实际数量与系统账面数量的差异(差异量、差异率),标注差异物料及可能原因(如漏记、丢失、计数错误)。 作用:跟踪差异处理进度(如调账、追责),改进仓库操作规范(如加强入库扫码校验)。  6定期生成库存周转报表inventoryTurnover 库存周转率=(销售数量/库存数量)x100%例如6月销售31台,期末库存65台库存周转率=(31/65)*100%=47.69% 库存周转率=(该期间的出库总金额/该期间的平均库存金额)x100%=该期间出库总金额x2/(期初库存金额+期末库存金额)x100%库存周转率=312*2/(490+589)=56.9% --- src/api/wms/report/types.ts | 97 ++++ src/views/wms/inventoryDifference/index.vue | 387 +++++++++++++++ .../wms/inventoryTrendAnalysis/index.vue | 246 ++++++++++ src/views/wms/inventoryTurnover/index.vue | 368 ++++++++++++++ src/views/wms/reportDashboard/index.vue | 462 ++++++++++++++++++ src/views/wms/returnReasonAnalysis/index.vue | 258 ++++++++++ src/views/wms/safetyStockAlert/index.vue | 321 ++++++++++++ src/views/wms/stagnantInventory/index.vue | 359 ++++++++++++++ 8 files changed, 2498 insertions(+) create mode 100644 src/api/wms/report/types.ts create mode 100644 src/views/wms/inventoryDifference/index.vue create mode 100644 src/views/wms/inventoryTrendAnalysis/index.vue create mode 100644 src/views/wms/inventoryTurnover/index.vue create mode 100644 src/views/wms/reportDashboard/index.vue create mode 100644 src/views/wms/returnReasonAnalysis/index.vue create mode 100644 src/views/wms/safetyStockAlert/index.vue create mode 100644 src/views/wms/stagnantInventory/index.vue diff --git a/src/api/wms/report/types.ts b/src/api/wms/report/types.ts new file mode 100644 index 0000000..ae2439a --- /dev/null +++ b/src/api/wms/report/types.ts @@ -0,0 +1,97 @@ +export interface ReportQuery { + tenantId?: string; + materialCategoryId?: number; +} + +export interface ReturnReasonAnalysisVO { + tenantId?: string; + returnReasonCategory?: string; + returnOrderCount?: number; + totalReturnAmount?: number; + orderCountRatio?: number; + amountRatio?: number; + materialName?: string; + materialCategoryName?: string; + materialCode?: string; +} + +export interface InventoryTrendAnalysisVO { + tenantId?: string; + materialId?: number; + materialCode?: string; + materialName?: string; + materialCategoryName?: string; + statisticsMonth?: string; + statisticsWeek?: number; + currentInventoryQty?: number; + weekInstockQty?: number; + weekOutstockQty?: number; + lastWeekInventoryQty?: number; + keyNodeMark?: string; +} + +export interface SafetyStockAlertVO { + tenantId?: string; + materialId?: number; + materialCode?: string; + materialName?: string; + materialCategoryName?: string; + currentInventoryQty?: number; + safeStockAmount?: number; + minStockAmount?: number; + maxStockAmount?: number; + alertStatus?: string; + differenceAmount?: number; + lastUpdateTime?: string; +} + +export interface StagnantInventoryVO { + tenantId?: string; + materialId?: number; + materialCode?: string; + materialName?: string; + materialCategoryName?: string; + stagnantInventoryQty?: number; + materialUnit?: string; + lastOutstockTime?: string; + stagnantDays?: number; + stagnantReason?: string; + materialSpec?: string; + warehouseName?: string; + lastActivityTime?: string; +} + +export interface InventoryDifferenceVO { + tenantId?: string; + checkCode?: string; + checkType?: string; + warehouseId?: number; + warehouseName?: string; + materialId?: number; + materialCode?: string; + materialName?: string; + materialCategoryName?: string; + bookInventoryQty?: number; + actualInventoryQty?: number; + differenceQty?: number; + differenceType?: string; + differenceRate?: number; + differenceLevel?: string; + checkTime?: string; + checkBy?: string; +} + +export interface InventoryTurnoverVO { + tenantId?: string; + materialId?: number; + materialCode?: string; + materialName?: string; + materialCategoryName?: string; + statisticsMonth?: string; + beginInventoryQty?: number; + endInventoryQty?: number; + monthOutstockQty?: number; + inventoryTurnoverRate?: number; + simpleTurnoverRate?: number; + turnoverEvaluation?: string; +} \ No newline at end of file diff --git a/src/views/wms/inventoryDifference/index.vue b/src/views/wms/inventoryDifference/index.vue new file mode 100644 index 0000000..7448336 --- /dev/null +++ b/src/views/wms/inventoryDifference/index.vue @@ -0,0 +1,387 @@ + + + + + \ No newline at end of file diff --git a/src/views/wms/inventoryTrendAnalysis/index.vue b/src/views/wms/inventoryTrendAnalysis/index.vue new file mode 100644 index 0000000..b15cafc --- /dev/null +++ b/src/views/wms/inventoryTrendAnalysis/index.vue @@ -0,0 +1,246 @@ + + + + + \ No newline at end of file diff --git a/src/views/wms/inventoryTurnover/index.vue b/src/views/wms/inventoryTurnover/index.vue new file mode 100644 index 0000000..5bc9493 --- /dev/null +++ b/src/views/wms/inventoryTurnover/index.vue @@ -0,0 +1,368 @@ + + + + + \ No newline at end of file diff --git a/src/views/wms/reportDashboard/index.vue b/src/views/wms/reportDashboard/index.vue new file mode 100644 index 0000000..c6124b5 --- /dev/null +++ b/src/views/wms/reportDashboard/index.vue @@ -0,0 +1,462 @@ + + + + + \ No newline at end of file diff --git a/src/views/wms/returnReasonAnalysis/index.vue b/src/views/wms/returnReasonAnalysis/index.vue new file mode 100644 index 0000000..30a925d --- /dev/null +++ b/src/views/wms/returnReasonAnalysis/index.vue @@ -0,0 +1,258 @@ + + + + + \ No newline at end of file diff --git a/src/views/wms/safetyStockAlert/index.vue b/src/views/wms/safetyStockAlert/index.vue new file mode 100644 index 0000000..f624355 --- /dev/null +++ b/src/views/wms/safetyStockAlert/index.vue @@ -0,0 +1,321 @@ + + + + + \ No newline at end of file diff --git a/src/views/wms/stagnantInventory/index.vue b/src/views/wms/stagnantInventory/index.vue new file mode 100644 index 0000000..0be0de8 --- /dev/null +++ b/src/views/wms/stagnantInventory/index.vue @@ -0,0 +1,359 @@ + + + + + \ No newline at end of file