feat(@vben/web-antd): implement finance business report module

This commit is contained in:
2026-03-04 16:45:14 +08:00
parent 15d4272d1f
commit 871458e520
23 changed files with 2128 additions and 157 deletions

View File

@@ -1,159 +1,5 @@
/**
* 文件职责:财务中心交易流水 API 契约与请求封装
* 文件职责:财务中心 API 聚合导出
*/
import { requestClient } from '#/api/request';
/** 交易类型筛选值。 */
export type FinanceTransactionTypeFilter =
| 'all'
| 'income'
| 'point_redeem'
| 'refund'
| 'stored_card_recharge';
/** 交易渠道筛选值。 */
export type FinanceTransactionChannelFilter =
| 'all'
| 'delivery'
| 'dine_in'
| 'pickup';
/** 交易支付方式筛选值。 */
export type FinanceTransactionPaymentFilter =
| 'alipay'
| 'all'
| 'balance'
| 'card'
| 'cash'
| 'wechat';
/** 交易流水筛选参数。 */
export interface FinanceTransactionFilterQuery {
channel?: FinanceTransactionChannelFilter;
endDate?: string;
keyword?: string;
paymentMethod?: FinanceTransactionPaymentFilter;
startDate?: string;
storeId: string;
type?: FinanceTransactionTypeFilter;
}
/** 交易流水列表查询参数。 */
export interface FinanceTransactionListQuery extends FinanceTransactionFilterQuery {
page: number;
pageSize: number;
}
/** 交易流水列表行。 */
export interface FinanceTransactionListItemDto {
amount: number;
channel: string;
isIncome: boolean;
occurredAt: string;
orderNo?: string;
paymentMethod: string;
remark: string;
transactionId: string;
transactionNo: string;
type: string;
typeText: string;
}
/** 交易流水列表结果。 */
export interface FinanceTransactionListResultDto {
items: FinanceTransactionListItemDto[];
page: number;
pageIncomeAmount: number;
pageRefundAmount: number;
pageSize: number;
total: number;
}
/** 交易流水统计结果。 */
export interface FinanceTransactionStatsDto {
totalCount: number;
totalIncome: number;
totalRefund: number;
}
/** 交易流水详情。 */
export interface FinanceTransactionDetailDto {
amount: number;
arrivedAmount?: number;
channel: string;
customerName: string;
customerPhone: string;
giftAmount?: number;
memberMobileMasked?: string;
memberName?: string;
occurredAt: string;
orderNo?: string;
paymentMethod: string;
pointBalanceAfterChange?: number;
pointChangeAmount?: number;
rechargeAmount?: number;
refundNo?: string;
refundReason?: string;
remark: string;
storeId: string;
transactionId: string;
transactionNo: string;
type: string;
typeText: string;
}
/** 交易流水导出结果。 */
export interface FinanceTransactionExportDto {
fileContentBase64: string;
fileName: string;
totalCount: number;
}
/** 查询交易流水列表。 */
export async function getFinanceTransactionListApi(
params: FinanceTransactionListQuery,
) {
return requestClient.get<FinanceTransactionListResultDto>(
'/finance/transaction/list',
{
params,
},
);
}
/** 查询交易流水统计。 */
export async function getFinanceTransactionStatsApi(
params: FinanceTransactionFilterQuery,
) {
return requestClient.get<FinanceTransactionStatsDto>(
'/finance/transaction/stats',
{
params,
},
);
}
/** 查询交易流水详情。 */
export async function getFinanceTransactionDetailApi(params: {
storeId: string;
transactionId: string;
}) {
return requestClient.get<FinanceTransactionDetailDto>(
'/finance/transaction/detail',
{
params,
},
);
}
/** 导出交易流水 CSV。 */
export async function exportFinanceTransactionCsvApi(
params: FinanceTransactionFilterQuery,
) {
return requestClient.get<FinanceTransactionExportDto>(
'/finance/transaction/export',
{
params,
},
);
}
export * from './report';
export * from './transaction';

View File

@@ -0,0 +1,156 @@
/**
* 文件职责:财务中心经营报表 API 契约与请求封装。
*/
import { requestClient } from '#/api/request';
/** 报表周期筛选值。 */
export type FinanceBusinessReportPeriodType = 'daily' | 'monthly' | 'weekly';
/** 经营报表状态值。 */
export type FinanceBusinessReportStatus =
| 'failed'
| 'queued'
| 'running'
| 'succeeded';
/** 经营报表列表查询参数。 */
export interface FinanceBusinessReportListQuery {
page: number;
pageSize: number;
periodType?: FinanceBusinessReportPeriodType;
storeId: string;
}
/** 经营报表详情查询参数。 */
export interface FinanceBusinessReportDetailQuery {
reportId: string;
storeId: string;
}
/** 经营报表批量导出查询参数。 */
export interface FinanceBusinessReportBatchExportQuery {
page: number;
pageSize: number;
periodType?: FinanceBusinessReportPeriodType;
storeId: string;
}
/** 经营报表列表行。 */
export interface FinanceBusinessReportListItemDto {
averageOrderValue: number;
canDownload: boolean;
costTotalAmount: number;
dateText: string;
netProfitAmount: number;
orderCount: number;
profitRatePercent: number;
refundRatePercent: number;
reportId: string;
revenueAmount: number;
status: FinanceBusinessReportStatus;
statusText: string;
}
/** 经营报表列表结果。 */
export interface FinanceBusinessReportListResultDto {
items: FinanceBusinessReportListItemDto[];
page: number;
pageSize: number;
total: number;
}
/** 经营报表 KPI 项。 */
export interface FinanceBusinessReportKpiDto {
key: string;
label: string;
momChangeRate: number;
valueText: string;
yoyChangeRate: number;
}
/** 经营报表明细项。 */
export interface FinanceBusinessReportBreakdownItemDto {
amount: number;
key: string;
label: string;
ratioPercent: number;
}
/** 经营报表详情。 */
export interface FinanceBusinessReportDetailDto {
costBreakdowns: FinanceBusinessReportBreakdownItemDto[];
incomeBreakdowns: FinanceBusinessReportBreakdownItemDto[];
kpis: FinanceBusinessReportKpiDto[];
periodType: FinanceBusinessReportPeriodType;
reportId: string;
status: FinanceBusinessReportStatus;
statusText: string;
title: string;
}
/** 经营报表导出结果。 */
export interface FinanceBusinessReportExportDto {
fileContentBase64: string;
fileName: string;
totalCount: number;
}
/** 查询经营报表列表。 */
export async function getFinanceBusinessReportListApi(
params: FinanceBusinessReportListQuery,
) {
return requestClient.get<FinanceBusinessReportListResultDto>(
'/finance/report/list',
{
params,
},
);
}
/** 查询经营报表详情。 */
export async function getFinanceBusinessReportDetailApi(
params: FinanceBusinessReportDetailQuery,
) {
return requestClient.get<FinanceBusinessReportDetailDto>(
'/finance/report/detail',
{
params,
},
);
}
/** 导出经营报表 PDF。 */
export async function exportFinanceBusinessReportPdfApi(
params: FinanceBusinessReportDetailQuery,
) {
return requestClient.get<FinanceBusinessReportExportDto>(
'/finance/report/export/pdf',
{
params,
},
);
}
/** 导出经营报表 Excel。 */
export async function exportFinanceBusinessReportExcelApi(
params: FinanceBusinessReportDetailQuery,
) {
return requestClient.get<FinanceBusinessReportExportDto>(
'/finance/report/export/excel',
{
params,
},
);
}
/** 批量导出经营报表ZIP。 */
export async function exportFinanceBusinessReportBatchApi(
params: FinanceBusinessReportBatchExportQuery,
) {
return requestClient.get<FinanceBusinessReportExportDto>(
'/finance/report/export/batch',
{
params,
},
);
}

View File

@@ -0,0 +1,159 @@
/**
* 文件职责:财务中心交易流水 API 契约与请求封装。
*/
import { requestClient } from '#/api/request';
/** 交易类型筛选值。 */
export type FinanceTransactionTypeFilter =
| 'all'
| 'income'
| 'point_redeem'
| 'refund'
| 'stored_card_recharge';
/** 交易渠道筛选值。 */
export type FinanceTransactionChannelFilter =
| 'all'
| 'delivery'
| 'dine_in'
| 'pickup';
/** 交易支付方式筛选值。 */
export type FinanceTransactionPaymentFilter =
| 'alipay'
| 'all'
| 'balance'
| 'card'
| 'cash'
| 'wechat';
/** 交易流水筛选参数。 */
export interface FinanceTransactionFilterQuery {
channel?: FinanceTransactionChannelFilter;
endDate?: string;
keyword?: string;
paymentMethod?: FinanceTransactionPaymentFilter;
startDate?: string;
storeId: string;
type?: FinanceTransactionTypeFilter;
}
/** 交易流水列表查询参数。 */
export interface FinanceTransactionListQuery extends FinanceTransactionFilterQuery {
page: number;
pageSize: number;
}
/** 交易流水列表行。 */
export interface FinanceTransactionListItemDto {
amount: number;
channel: string;
isIncome: boolean;
occurredAt: string;
orderNo?: string;
paymentMethod: string;
remark: string;
transactionId: string;
transactionNo: string;
type: string;
typeText: string;
}
/** 交易流水列表结果。 */
export interface FinanceTransactionListResultDto {
items: FinanceTransactionListItemDto[];
page: number;
pageIncomeAmount: number;
pageRefundAmount: number;
pageSize: number;
total: number;
}
/** 交易流水统计结果。 */
export interface FinanceTransactionStatsDto {
totalCount: number;
totalIncome: number;
totalRefund: number;
}
/** 交易流水详情。 */
export interface FinanceTransactionDetailDto {
amount: number;
arrivedAmount?: number;
channel: string;
customerName: string;
customerPhone: string;
giftAmount?: number;
memberMobileMasked?: string;
memberName?: string;
occurredAt: string;
orderNo?: string;
paymentMethod: string;
pointBalanceAfterChange?: number;
pointChangeAmount?: number;
rechargeAmount?: number;
refundNo?: string;
refundReason?: string;
remark: string;
storeId: string;
transactionId: string;
transactionNo: string;
type: string;
typeText: string;
}
/** 交易流水导出结果。 */
export interface FinanceTransactionExportDto {
fileContentBase64: string;
fileName: string;
totalCount: number;
}
/** 查询交易流水列表。 */
export async function getFinanceTransactionListApi(
params: FinanceTransactionListQuery,
) {
return requestClient.get<FinanceTransactionListResultDto>(
'/finance/transaction/list',
{
params,
},
);
}
/** 查询交易流水统计。 */
export async function getFinanceTransactionStatsApi(
params: FinanceTransactionFilterQuery,
) {
return requestClient.get<FinanceTransactionStatsDto>(
'/finance/transaction/stats',
{
params,
},
);
}
/** 查询交易流水详情。 */
export async function getFinanceTransactionDetailApi(params: {
storeId: string;
transactionId: string;
}) {
return requestClient.get<FinanceTransactionDetailDto>(
'/finance/transaction/detail',
{
params,
},
);
}
/** 导出交易流水 CSV。 */
export async function exportFinanceTransactionCsvApi(
params: FinanceTransactionFilterQuery,
) {
return requestClient.get<FinanceTransactionExportDto>(
'/finance/transaction/export',
{
params,
},
);
}