/** 仪表盘 - 核心指标(销售额/订单数/采购金额) */ export interface IDashboardMetric { /** 累计总量 */ total: number; /** 今日值 */ today: number; /** 近7天值 */ week: number; /** 近7天环比增长率(%);上期为0时无基准,为 null */ growth: number | null; /** 近7天每日值(迷你趋势图,旧到新) */ trend7: number[]; } /** 仪表盘 - 应收余额 */ export interface IDashboardReceivable { /** 账单总额 */ bill_total: number; /** 已回款金额(已支付账单) */ received: number; /** 应收余额(账单总额 - 已回款) */ unreceived: number; } /** 仪表盘 - 销售趋势点(近30天) */ export interface IDashboardTrendPoint { date: string; amount: number; orders: number; } /** 仪表盘 - 订单状态分布 */ export interface IDashboardStatusCount { status: number; name: string; count: number; } /** 仪表盘 - 品类销售占比 */ export interface IDashboardCategorySales { name: string; amount: number; } /** 仪表盘 - 热销商品 */ export interface IDashboardTopProduct { product_id: number; product_name: string; product_spec: string; unit: string; quantity: number; amount: number; } /** 仪表盘 - 门店排行 */ export interface IDashboardTopStore { store_id: number; store_name: string; order_count: number; amount: number; } /** 仪表盘 - 账单支付进度统计 */ export interface IDashboardReconStat { /** 0待支付 1审核中 2已支付 */ pay_state: number; name: string; count: number; amount: number; } /** 仪表盘 - 最新订单 */ export interface IDashboardLatestOrder { id: number; order_no: string; store_name: string; order_date: string; total_amount: number; status: number; status_name: string; } /** 仪表盘 - 基础档案计数 */ export interface IDashboardArchives { /** 在营门店 */ stores: number; /** 在售商品 */ products: number; /** 合作供应商 */ suppliers: number; } /** 仪表盘分析页聚合数据(GET /dashboard/analysis) */ export default interface IDashboardAnalysis { overview: { sales: IDashboardMetric; orders: IDashboardMetric; purchase: IDashboardMetric; receivable: IDashboardReceivable; }; trend: IDashboardTrendPoint[]; order_status: IDashboardStatusCount[]; category_sales: IDashboardCategorySales[]; top_products: IDashboardTopProduct[]; top_stores: IDashboardTopStore[]; recon: { bills: IDashboardReconStat[]; pending_payment: { count: number; amount: number }; }; latest_orders: IDashboardLatestOrder[]; archives: IDashboardArchives; }