zcloud-gbs-bi-react/types/statistics-components.d.ts

247 lines
8.7 KiB
TypeScript
Raw Permalink Normal View History

declare module "~/pages/Container/Statistics/components/Panel" {
/** 首页统计大块公共外壳的属性。 */
export interface StatisticsPanelProps {
/** 统计块标题。 */
title: string;
/** 统计块主体内容。 */
children: import("react").ReactNode;
/** 点击“更多”时打开第一层放大弹窗。 */
onExpand: () => void;
/** 标题栏中位于“更多”按钮前的附加内容。 */
extra?: import("react").ReactNode;
/** 业务统计块追加的 CSS Modules 类名。 */
className?: string;
}
/** 渲染首页统计大块公共外壳。 */
export default function Panel(props: StatisticsPanelProps): import("react").ReactElement;
}
declare module "~/pages/Container/Statistics/components/OverviewTable" {
/** 首页和第一层弹窗共用的滚动表格属性。 */
export interface OverviewTableProps<T = Record<string, any>> {
/** CSS Grid 的列模板。 */
columns: string;
/** 表格数据,行类型会传递给 renderRow。 */
dataSource: T[];
/** 表头内容。 */
header: import("react").ReactNode;
/** 根据当前数据行渲染整行内容。 */
renderRow: (record: T, index: number, dataSource: T[]) => import("react").ReactNode;
/** 表格底部合计行。 */
summary?: import("react").ReactNode;
/** 超过该行数后启用无缝滚动,默认值为 4。 */
scrollLimit?: number;
}
/** 滚动表格单行布局的属性。 */
export interface OverviewTableRowProps {
/** 行类型,默认值为 body。 */
type?: "header" | "body" | "summary";
/** 当前行中的单元格内容。 */
children: import("react").ReactNode;
}
/** 渲染滚动表格。 */
export default function OverviewTable<T = Record<string, any>>(
props: OverviewTableProps<T>,
): import("react").ReactElement;
/** 渲染滚动表格中的表头、数据行或合计行。 */
export function OverviewTableRow(props: OverviewTableRowProps): import("react").ReactElement;
}
declare module "~/pages/Container/Statistics/components/ExpandedLayer" {
/** 当前页面第一层放大弹窗外壳的属性。 */
export interface ExpandedLayerProps {
/** 是否显示放大弹窗。 */
open: boolean;
/** 弹窗标题。 */
title: string;
/** 当前业务的第一层放大内容。 */
children: import("react").ReactNode;
/** 关闭第一层放大弹窗。 */
onClose: () => void;
}
/** 渲染当前页面第一层放大弹窗。 */
export default function ExpandedLayer(props: ExpandedLayerProps): import("react").ReactElement | null;
}
declare module "~/pages/Container/Statistics/components/ExpandedLayout" {
/** 第一层放大弹窗顶部的单个指标。 */
export interface ExpandedMetricItem {
/** 指标名称。 */
name: string;
/** 指标值,支持数字、百分比和已格式化的字符串。 */
value: string | number;
/** 指标颜色标识。 */
tone?: "blue" | "red" | "orange" | "yellow" | "green";
}
/** 滚动表格的一行数据,各业务弹窗可以继续添加自己的字段。 */
export interface ExpandedTableRecord {
/** 行唯一标识。 */
id: import("react").Key;
[field: string]: any;
}
/** 第一层放大弹窗底部滚动表格的列配置。 */
export interface ExpandedTableColumn {
/** 列标题。 */
title: string;
/** 对应数据行中的字段名。 */
dataIndex: string;
/** 当前列独立的单元格渲染方法。 */
renderCell?: (record: ExpandedTableRecord) => import("react").ReactNode;
}
/** 第一层放大弹窗底部滚动表格的完整配置。 */
export interface ExpandedTableConfig {
/** 表格标题。 */
title: string;
/** 表格标题右侧的统计范围等说明。 */
description: import("react").ReactNode;
/** CSS Grid 的列模板,例如 repeat(4, minmax(0, 1fr))。 */
gridColumns: string;
/** 超过该行数后启用无缝滚动。 */
scrollLimit: number;
/** 表格列配置。 */
columns: ExpandedTableColumn[];
/** 表格数据。 */
dataSource: ExpandedTableRecord[];
}
/** 第一层放大弹窗右侧的单个业务入口。 */
export interface ExpandedBusinessEntry {
/** 入口唯一标识。 */
key: import("react").Key;
/** 入口标题。 */
title: string;
/** 入口说明。 */
description: string;
/** 点击入口时打开对应列表弹窗。 */
onClick: () => void;
}
/** 第一层放大弹窗右侧的当前统计项。 */
export interface ExpandedStatisticItem {
/** 统计项名称。 */
label: string;
/** 统计项内容。 */
value: import("react").ReactNode;
}
/** 第一层放大弹窗公共左右布局的属性。 */
export interface ExpandedLayoutProps {
/** 左侧主标题。 */
title: string;
/** 左侧副标题。 */
subtitle: string;
/** 主标题右侧内容,当前通常传入统计周期 Segmented。 */
headerExtra: import("react").ReactNode;
/** 右侧当前统计中显示的统计周期。 */
periodText: string;
/** 左侧顶部指标列表。 */
metrics: ExpandedMetricItem[];
/** 左侧中间由各业务弹窗自行维护的图表或统计内容。 */
mainContent: import("react").ReactNode;
/** 左侧底部滚动表格配置。 */
tableConfig: ExpandedTableConfig;
/** 右侧业务入口列表。 */
businessEntries: ExpandedBusinessEntry[];
/** 右侧当前统计列表。 */
statistics: ExpandedStatisticItem[];
}
/** 渲染第一层放大弹窗的公共左右布局。 */
export default function ExpandedLayout(props: ExpandedLayoutProps): import("react").ReactElement;
}
declare module "~/pages/Container/Statistics/components/ListDialog" {
/** 第二层列表弹窗公共外框的属性。 */
export interface ListDialogProps {
/** 列表弹窗标题,用于无障碍说明。 */
title: string;
/** 业务模块自己的列表内容。 */
children: import("react").ReactNode;
/** 关闭第二层列表弹窗。 */
onClose: () => void;
}
/** 渲染第二层列表弹窗公共外框。 */
export default function ListDialog(props: ListDialogProps): import("react").ReactElement;
}
declare module "~/pages/Container/Statistics/components/ListLayout" {
/** 第二层业务列表公共上下布局的属性。 */
export interface ListLayoutProps {
/** 列表主标题。 */
title: string;
/** 列表副标题。 */
subtitle: string;
/** 点击右上角关闭按钮时执行的方法。 */
onBack: () => void;
/** 搜索区域内容。 */
searchContent: import("react").ReactNode;
/** 表格区域内容。 */
tableContent: import("react").ReactNode;
/** 底部统计范围等说明。 */
footerContent: import("react").ReactNode;
}
/** 渲染第二层业务列表公共上下布局。 */
export default function ListLayout(props: ListLayoutProps): import("react").ReactElement;
}
declare module "~/pages/Container/Statistics/components/DetailDialog" {
/** 第三层详情弹窗公共外框的属性。 */
export interface DetailDialogProps {
/** 详情弹窗标题。 */
title: string;
/** 业务模块自己的详情字段内容。 */
children: import("react").ReactNode;
/** 关闭第三层详情弹窗。 */
onClose: () => void;
}
/** 渲染第三层详情弹窗公共外框。 */
export default function DetailDialog(props: DetailDialogProps): import("react").ReactElement;
}
declare module "~/pages/Container/Statistics/components/Header" {
/** 首页当前选中的统计范围。 */
export interface StatisticsCompanyOption {
/** Select 使用的选项值。 */
value: string | number;
/** Select 显示的选项文字。 */
label: string;
/** 页面统计和弹窗中显示的公司名称。 */
name: string;
}
/** 首页天气接口当前天气数据。 */
export interface StatisticsWeatherNow {
text?: string;
temp?: string | number;
wind_class?: string;
}
/** 首页公共头部对外暴露的属性,接口方法由 Connect 注入。 */
export interface StatisticsHeaderProps {
/** 页面历史对象,仅使用返回上一页能力。 */
history: { goBack: () => void };
/** 当前选择的统计范围。 */
selectedCompany: StatisticsCompanyOption;
/** 天气数据,兼容接口 now 包装和直接返回两种结构。 */
weather: StatisticsWeatherNow | { now: StatisticsWeatherNow };
/** 天气请求状态。 */
weatherLoading: boolean;
/** 切换统计范围时更新首页状态。 */
onCompanyChange: (company: StatisticsCompanyOption) => void;
}
/** 渲染统计页面公共头部。 */
export default function Header(props: StatisticsHeaderProps): import("react").ReactElement;
}