数据分析ui补充完善,接入数据库

This commit is contained in:
comlibmb
2026-02-01 20:17:37 +08:00
parent 6716398175
commit 19970db288
19 changed files with 393 additions and 435 deletions

View File

@@ -12,8 +12,19 @@ function safeNumber(v: any): number {
return isFinite(n) ? n : 0
}
export async function fetchDashboardTrend(period: string): Promise<TrendData> {
const { startIso, endIso } = computeDateRange(period)
export async function fetchDashboardTrend(period: string, range?: { start: string; end: string } | null): Promise<TrendData> {
let startIso: string;
let endIso: string;
if (range != null && range.start && range.end) {
startIso = range.start;
endIso = range.end;
} else {
const computedRange = computeDateRange(period)
startIso = computedRange.startIso
endIso = computedRange.endIso
}
const p_start_date = toDateOnly(startIso)
const p_end_date = toDateOnly(endIso)

View File

@@ -22,8 +22,18 @@ function safeNumber(v: any): number {
return isFinite(n) ? n : 0
}
export async function fetchSalesKpis(period: string): Promise<SalesKpis> {
const { startIso, endIso } = computeDateRange(period)
export async function fetchSalesKpis(period: string, range?: { start: string; end: string } | null): Promise<SalesKpis> {
let startIso: string;
let endIso: string;
if (range != null && range.start && range.end) {
startIso = range.start;
endIso = range.end;
} else {
const computedRange = computeDateRange(period);
startIso = computedRange.startIso;
endIso = computedRange.endIso;
}
const row = await rpcOrNull('rpc_analytics_sales_kpis', {
p_start_date: toDateOnly(startIso),
p_end_date: toDateOnly(endIso)
@@ -46,8 +56,18 @@ export async function fetchSalesKpis(period: string): Promise<SalesKpis> {
}
}
export async function fetchSalesTrend(period: string): Promise<TrendData> {
const { startIso, endIso } = computeDateRange(period)
export async function fetchSalesTrend(period: string, range?: { start: string; end: string } | null): Promise<TrendData> {
let startIso: string;
let endIso: string;
if (range != null && range.start && range.end) {
startIso = range.start;
endIso = range.end;
} else {
const computedRange = computeDateRange(period);
startIso = computedRange.startIso;
endIso = computedRange.endIso;
}
const rows = await rpcOrEmptyArray('rpc_analytics_sales_trend', {
p_start_date: toDateOnly(startIso),
p_end_date: toDateOnly(endIso)
@@ -68,8 +88,18 @@ export async function fetchSalesTrend(period: string): Promise<TrendData> {
return { x, gmv: gmvArr, orders: orderArr }
}
export async function fetchSalesTopProducts(period: string, limit: number = 50): Promise<Array<ProductRank>> {
const { startIso, endIso } = computeDateRange(period)
export async function fetchSalesTopProducts(period: string, limit: number = 50, range?: { start: string; end: string } | null): Promise<Array<ProductRank>> {
let startIso: string;
let endIso: string;
if (range != null && range.start && range.end) {
startIso = range.start;
endIso = range.end;
} else {
const computedRange = computeDateRange(period);
startIso = computedRange.startIso;
endIso = computedRange.endIso;
}
const rows = await rpcOrEmptyArray('rpc_analytics_top_products', {
p_start_date: toDateOnly(startIso),
p_end_date: toDateOnly(endIso),
@@ -89,8 +119,18 @@ export async function fetchSalesTopProducts(period: string, limit: number = 50):
return list
}
export async function fetchSalesTopMerchants(period: string, limit: number = 50): Promise<Array<MerchantRank>> {
const { startIso, endIso } = computeDateRange(period)
export async function fetchSalesTopMerchants(period: string, limit: number = 50, range?: { start: string; end: string } | null): Promise<Array<MerchantRank>> {
let startIso: string;
let endIso: string;
if (range != null && range.start && range.end) {
startIso = range.start;
endIso = range.end;
} else {
const computedRange = computeDateRange(period);
startIso = computedRange.startIso;
endIso = computedRange.endIso;
}
const rows = await rpcOrEmptyArray('rpc_analytics_top_merchants', {
p_start_date: toDateOnly(startIso),
p_end_date: toDateOnly(endIso),