diff --git a/apps/web-antd/src/views/wms/home/index.vue b/apps/web-antd/src/views/wms/home/index.vue
index 85c81d497..2a5114961 100644
--- a/apps/web-antd/src/views/wms/home/index.vue
+++ b/apps/web-antd/src/views/wms/home/index.vue
@@ -4,7 +4,7 @@ import { onMounted, ref } from 'vue';
import { DocAlert, Page } from '@vben/common-ui';
import { formatDateTime } from '@vben/utils';
-import { Button } from 'ant-design-vue';
+import { Button, Card } from 'ant-design-vue';
import { WmsWarehouseSelect } from '#/views/wms/md/warehouse/components';
@@ -45,26 +45,28 @@ onMounted(() => {
-
-
-
-
WMS 首页
-
单据工作台 / 库存概览
+
+
+
+
+
WMS 首页
+
单据工作台 / 库存概览
+
+
+
+
+
-
-
-
-
-
+
-
diff --git a/apps/web-antd/src/views/wms/home/modules/wms-home-inventory-chart-options.ts b/apps/web-antd/src/views/wms/home/modules/wms-home-inventory-chart-options.ts
index 3998f40b5..ce4ac4555 100644
--- a/apps/web-antd/src/views/wms/home/modules/wms-home-inventory-chart-options.ts
+++ b/apps/web-antd/src/views/wms/home/modules/wms-home-inventory-chart-options.ts
@@ -1,7 +1,13 @@
+import type { useEcharts } from '@vben/plugins/echarts';
+
import type { WmsHomeStatisticsApi } from '#/api/wms/home';
import { formatQuantity } from '#/views/wms/utils/format';
+type WmsHomeChartOption = Parameters<
+ ReturnType
['renderEcharts']
+>[0];
+
export interface InventoryChartItem {
name: string;
value: number;
@@ -36,7 +42,9 @@ function formatGoodsLegend(name: string, goodsShareList: InventoryChartItem[]) {
}
/** 货物占比图表配置 */
-export function getGoodsShareChartOptions(goodsShareList: InventoryChartItem[]): any {
+export function getGoodsShareChartOptions(
+ goodsShareList: InventoryChartItem[],
+): WmsHomeChartOption {
return {
color: ['#2f7df6', '#18a058', '#f59e0b', '#7c3aed', '#14b8a6'],
legend: {
@@ -70,7 +78,7 @@ export function getGoodsShareChartOptions(goodsShareList: InventoryChartItem[]):
/** 库存分布图表配置 */
export function getWarehouseDistributionChartOptions(
warehouseDistributionList: InventoryChartItem[],
-): any {
+): WmsHomeChartOption {
const sortedList = warehouseDistributionList.toReversed();
return {
color: ['#2f7df6'],
@@ -80,7 +88,7 @@ export function getWarehouseDistributionChartOptions(
barMaxWidth: 16,
data: sortedList.map((item) => item.value),
label: {
- formatter: ({ value }: { value?: number }) => formatQuantityText(Number(value || 0)),
+ formatter: ({ value }) => formatQuantityText(Number(value || 0)),
position: 'right',
show: true,
},
diff --git a/apps/web-antd/src/views/wms/home/modules/wms-home-inventory-charts.vue b/apps/web-antd/src/views/wms/home/modules/wms-home-inventory-charts.vue
index 6f2d333c3..42908dcda 100644
--- a/apps/web-antd/src/views/wms/home/modules/wms-home-inventory-charts.vue
+++ b/apps/web-antd/src/views/wms/home/modules/wms-home-inventory-charts.vue
@@ -5,6 +5,8 @@ import { nextTick, ref } from 'vue';
import { EchartsUI, useEcharts } from '@vben/plugins/echarts';
+import { Card } from 'ant-design-vue';
+
import { getInventorySummary } from '#/api/wms/home';
import {
@@ -68,7 +70,7 @@ defineExpose({ load });
-
+
货物占比
按商品库存数量汇总 Top 5
@@ -82,8 +84,8 @@ defineExpose({ load });
加载中
-
-
+
+
库存分布
@@ -100,6 +102,6 @@ defineExpose({ load });
加载中
-
+
diff --git a/apps/web-antd/src/views/wms/home/modules/wms-home-order-summary-cards.vue b/apps/web-antd/src/views/wms/home/modules/wms-home-order-summary-cards.vue
index 0fe3e92a0..d42a8a843 100644
--- a/apps/web-antd/src/views/wms/home/modules/wms-home-order-summary-cards.vue
+++ b/apps/web-antd/src/views/wms/home/modules/wms-home-order-summary-cards.vue
@@ -120,11 +120,11 @@ defineExpose({ load });
-
+
['renderEcharts']
+>[0];
+
interface OrderDefinition {
color: string;
title: string;
@@ -50,7 +56,9 @@ function formatTrendTime(time: number | string) {
}
/** 单据趋势图表配置 */
-export function getOrderTrendChartOptions(list: WmsHomeStatisticsApi.OrderTrend[]): any {
+export function getOrderTrendChartOptions(
+ list: WmsHomeStatisticsApi.OrderTrend[],
+): WmsHomeChartOption {
const labels = list.map((item) => formatTrendTime(item.time));
return {
color: orderDefinitions.map((item) => item.color),
diff --git a/apps/web-antd/src/views/wms/home/modules/wms-home-order-trend-chart.vue b/apps/web-antd/src/views/wms/home/modules/wms-home-order-trend-chart.vue
index b24608233..e33e89f52 100644
--- a/apps/web-antd/src/views/wms/home/modules/wms-home-order-trend-chart.vue
+++ b/apps/web-antd/src/views/wms/home/modules/wms-home-order-trend-chart.vue
@@ -5,6 +5,8 @@ import { nextTick, ref } from 'vue';
import { EchartsUI, useEcharts } from '@vben/plugins/echarts';
+import { Card, Segmented } from 'ant-design-vue';
+
import { getOrderTrend, type WmsHomeStatisticsApi } from '#/api/wms/home';
import { getOrderTrendChartOptions } from './wms-home-order-trend-chart-options';
@@ -17,6 +19,10 @@ const trendDays = ref(7);
const trendList = ref([]);
const chartRef = ref();
const { renderEcharts } = useEcharts(chartRef);
+const trendDayOptions = [
+ { label: '近7天', value: 7 },
+ { label: '近30天', value: 30 },
+];
/** 使用最新趋势数据渲染单据趋势图 */
async function renderChart() {
@@ -40,8 +46,8 @@ async function load(selectedWarehouseId?: number) {
}
/** 切换趋势统计时间范围并刷新图表 */
-async function setTrendDays(days: number) {
- trendDays.value = days;
+async function handleTrendDaysChange(value: number | string) {
+ trendDays.value = Number(value);
await load(warehouseId.value);
}
@@ -49,16 +55,17 @@ defineExpose({ load });
-
+
@@ -69,5 +76,5 @@ defineExpose({ load });
加载中
-
+
diff --git a/apps/web-ele/src/views/wms/home/index.vue b/apps/web-ele/src/views/wms/home/index.vue
index eab446b6a..9541c02ea 100644
--- a/apps/web-ele/src/views/wms/home/index.vue
+++ b/apps/web-ele/src/views/wms/home/index.vue
@@ -4,7 +4,7 @@ import { onMounted, ref } from 'vue';
import { DocAlert, Page } from '@vben/common-ui';
import { formatDateTime } from '@vben/utils';
-import { ElButton } from 'element-plus';
+import { ElButton, ElCard } from 'element-plus';
import { WmsWarehouseSelect } from '#/views/wms/md/warehouse/components';
@@ -45,26 +45,28 @@ onMounted(() => {
-
-
-
-
WMS 首页
-
单据工作台 / 库存概览
+
+
+
+
+
WMS 首页
+
单据工作台 / 库存概览
+
+
+
+ 刷新
+
-
-
- 刷新
-
-
+
-
diff --git a/apps/web-ele/src/views/wms/home/modules/wms-home-inventory-chart-options.ts b/apps/web-ele/src/views/wms/home/modules/wms-home-inventory-chart-options.ts
index 3998f40b5..ce4ac4555 100644
--- a/apps/web-ele/src/views/wms/home/modules/wms-home-inventory-chart-options.ts
+++ b/apps/web-ele/src/views/wms/home/modules/wms-home-inventory-chart-options.ts
@@ -1,7 +1,13 @@
+import type { useEcharts } from '@vben/plugins/echarts';
+
import type { WmsHomeStatisticsApi } from '#/api/wms/home';
import { formatQuantity } from '#/views/wms/utils/format';
+type WmsHomeChartOption = Parameters<
+ ReturnType
['renderEcharts']
+>[0];
+
export interface InventoryChartItem {
name: string;
value: number;
@@ -36,7 +42,9 @@ function formatGoodsLegend(name: string, goodsShareList: InventoryChartItem[]) {
}
/** 货物占比图表配置 */
-export function getGoodsShareChartOptions(goodsShareList: InventoryChartItem[]): any {
+export function getGoodsShareChartOptions(
+ goodsShareList: InventoryChartItem[],
+): WmsHomeChartOption {
return {
color: ['#2f7df6', '#18a058', '#f59e0b', '#7c3aed', '#14b8a6'],
legend: {
@@ -70,7 +78,7 @@ export function getGoodsShareChartOptions(goodsShareList: InventoryChartItem[]):
/** 库存分布图表配置 */
export function getWarehouseDistributionChartOptions(
warehouseDistributionList: InventoryChartItem[],
-): any {
+): WmsHomeChartOption {
const sortedList = warehouseDistributionList.toReversed();
return {
color: ['#2f7df6'],
@@ -80,7 +88,7 @@ export function getWarehouseDistributionChartOptions(
barMaxWidth: 16,
data: sortedList.map((item) => item.value),
label: {
- formatter: ({ value }: { value?: number }) => formatQuantityText(Number(value || 0)),
+ formatter: ({ value }) => formatQuantityText(Number(value || 0)),
position: 'right',
show: true,
},
diff --git a/apps/web-ele/src/views/wms/home/modules/wms-home-inventory-charts.vue b/apps/web-ele/src/views/wms/home/modules/wms-home-inventory-charts.vue
index 6f2d333c3..d81177be8 100644
--- a/apps/web-ele/src/views/wms/home/modules/wms-home-inventory-charts.vue
+++ b/apps/web-ele/src/views/wms/home/modules/wms-home-inventory-charts.vue
@@ -5,6 +5,8 @@ import { nextTick, ref } from 'vue';
import { EchartsUI, useEcharts } from '@vben/plugins/echarts';
+import { ElCard } from 'element-plus';
+
import { getInventorySummary } from '#/api/wms/home';
import {
@@ -68,7 +70,7 @@ defineExpose({ load });
-
+
货物占比
按商品库存数量汇总 Top 5
@@ -82,8 +84,8 @@ defineExpose({ load });
加载中
-
-
+
+
库存分布
@@ -100,6 +102,6 @@ defineExpose({ load });
加载中
-
+
diff --git a/apps/web-ele/src/views/wms/home/modules/wms-home-order-summary-cards.vue b/apps/web-ele/src/views/wms/home/modules/wms-home-order-summary-cards.vue
index 20846d7f5..f50689781 100644
--- a/apps/web-ele/src/views/wms/home/modules/wms-home-order-summary-cards.vue
+++ b/apps/web-ele/src/views/wms/home/modules/wms-home-order-summary-cards.vue
@@ -120,11 +120,11 @@ defineExpose({ load });
-
+
['renderEcharts']
+>[0];
+
interface OrderDefinition {
color: string;
title: string;
@@ -50,7 +56,9 @@ function formatTrendTime(time: number | string) {
}
/** 单据趋势图表配置 */
-export function getOrderTrendChartOptions(list: WmsHomeStatisticsApi.OrderTrend[]): any {
+export function getOrderTrendChartOptions(
+ list: WmsHomeStatisticsApi.OrderTrend[],
+): WmsHomeChartOption {
const labels = list.map((item) => formatTrendTime(item.time));
return {
color: orderDefinitions.map((item) => item.color),
diff --git a/apps/web-ele/src/views/wms/home/modules/wms-home-order-trend-chart.vue b/apps/web-ele/src/views/wms/home/modules/wms-home-order-trend-chart.vue
index b24608233..535bdd103 100644
--- a/apps/web-ele/src/views/wms/home/modules/wms-home-order-trend-chart.vue
+++ b/apps/web-ele/src/views/wms/home/modules/wms-home-order-trend-chart.vue
@@ -5,6 +5,8 @@ import { nextTick, ref } from 'vue';
import { EchartsUI, useEcharts } from '@vben/plugins/echarts';
+import { ElCard, ElSegmented } from 'element-plus';
+
import { getOrderTrend, type WmsHomeStatisticsApi } from '#/api/wms/home';
import { getOrderTrendChartOptions } from './wms-home-order-trend-chart-options';
@@ -17,6 +19,10 @@ const trendDays = ref(7);
const trendList = ref([]);
const chartRef = ref();
const { renderEcharts } = useEcharts(chartRef);
+const trendDayOptions = [
+ { label: '近7天', value: 7 },
+ { label: '近30天', value: 30 },
+];
/** 使用最新趋势数据渲染单据趋势图 */
async function renderChart() {
@@ -40,8 +46,8 @@ async function load(selectedWarehouseId?: number) {
}
/** 切换趋势统计时间范围并刷新图表 */
-async function setTrendDays(days: number) {
- trendDays.value = days;
+async function handleTrendDaysChange(value: number | string) {
+ trendDays.value = Number(value);
await load(warehouseId.value);
}
@@ -49,16 +55,17 @@ defineExpose({ load });
-
+
@@ -69,5 +76,5 @@ defineExpose({ load });
加载中
-
+