Merge branch 'dev' of gitea.51mars.com:Oak-Team/oak-frontend-base into dev
This commit is contained in:
commit
e24166fdc5
|
|
@ -8,5 +8,5 @@ type TransformAspectDict<T extends AspectDict<ED, BCT>, ED extends BaseEntityDic
|
|||
[K in keyof T]: T[K] extends (params: infer P, context: BCT) => infer R ? R extends Promise<unknown> ? (params: P, callback?: (result: R, opRecords?: OpRecord<ED>[]) => void, dontPublish?: true, ignoreContext?: true) => R : never : never;
|
||||
};
|
||||
export type AspectDictTrans<ED extends BaseEntityDict, AD extends AspectDict<ED, BCT>, BCT extends AsyncContext<ED>> = TransformAspectDict<AD & CommonAspectDict<ED>, ED, BCT>;
|
||||
export declare const createService: <ED extends BaseEntityDict, AD extends AspectDict<ED, any>>(cache: BasicFeatures<ED>["cache"]) => TransformAspectDict<AD & CommonAspectDict<ED>, ED, any>;
|
||||
export declare const createService: <ED extends BaseEntityDict, AD extends AspectDict<ED, any>>(cache: import("../features/cache").Cache<ED>) => TransformAspectDict<AD & CommonAspectDict<ED>, ED, any>;
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -2,12 +2,12 @@ import { ED, OakAbsAttrDef } from '../../types/AbstractComponent';
|
|||
import { ReactComponentProps } from '../../types/Page';
|
||||
import { Breakpoint } from 'antd';
|
||||
declare const _default: <ED2 extends ED, T2 extends keyof ED2>(props: ReactComponentProps<ED2, T2, false, {
|
||||
column?: number | Record<Breakpoint, number>;
|
||||
column?: number | Record<Breakpoint, number> | undefined;
|
||||
entity: T2;
|
||||
attributes: OakAbsAttrDef[];
|
||||
data: Partial<ED2[T2]['Schema']>;
|
||||
title?: string;
|
||||
bordered?: boolean;
|
||||
layout?: 'horizontal' | 'vertical';
|
||||
data: Partial<ED2[T2]["Schema"]>;
|
||||
title?: string | undefined;
|
||||
bordered?: boolean | undefined;
|
||||
layout?: "horizontal" | "vertical" | undefined;
|
||||
}>) => React.ReactElement;
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ import { ReactComponentProps } from '../../types/Page';
|
|||
import { ECode } from '../../types/ErrorPage';
|
||||
declare const _default: <ED2 extends ED, T2 extends keyof ED2>(props: ReactComponentProps<ED2, T2, false, {
|
||||
code: ECode;
|
||||
title?: string;
|
||||
desc?: string;
|
||||
title?: string | undefined;
|
||||
desc?: string | undefined;
|
||||
children?: React.ReactNode;
|
||||
icon?: React.ReactNode;
|
||||
content?: React.ReactNode;
|
||||
|
|
|
|||
|
|
@ -10,13 +10,18 @@ declare const _default: <ED2 extends ED, T2 extends keyof ED2>(props: ReactCompo
|
|||
data: RowWithActions<ED2, T2>[];
|
||||
loading: boolean;
|
||||
tablePagination?: React.ReactNode | false;
|
||||
rowSelection?: TableProps<RowWithActions<ED2, T2>>['rowSelection'];
|
||||
hideHeader?: boolean;
|
||||
disableSerialNumber?: boolean;
|
||||
size?: 'large' | 'middle' | 'small';
|
||||
scroll?: TableProps<RowWithActions<ED2, T2>>['scroll'];
|
||||
rowSelection?: import("antd/es/table/interface").TableRowSelection<RowWithActions<ED2, T2>> | undefined;
|
||||
hideHeader?: boolean | undefined;
|
||||
disableSerialNumber?: boolean | undefined;
|
||||
size?: "small" | "large" | "middle" | undefined;
|
||||
scroll?: ({
|
||||
x?: string | number | true | undefined;
|
||||
y?: string | number | undefined;
|
||||
} & {
|
||||
scrollToFirstRowOnChange?: boolean | undefined;
|
||||
}) | undefined;
|
||||
empty?: React.ReactNode;
|
||||
opWidth?: number;
|
||||
ellipsis?: boolean;
|
||||
opWidth?: number | undefined;
|
||||
ellipsis?: boolean | undefined;
|
||||
}>) => React.ReactElement;
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -1,20 +1,21 @@
|
|||
/// <reference types="react" />
|
||||
import { ReactComponentProps } from '../../types/Page';
|
||||
import { ED } from '../../types/AbstractComponent';
|
||||
declare const _default: <ED2 extends ED, T2 extends keyof ED2>(props: ReactComponentProps<ED2, T2, false, {
|
||||
style?: React.CSSProperties;
|
||||
className?: string;
|
||||
style?: import("react").CSSProperties | undefined;
|
||||
className?: string | undefined;
|
||||
title?: React.ReactNode;
|
||||
showBack?: boolean;
|
||||
onBack?: () => void;
|
||||
showBack?: boolean | undefined;
|
||||
onBack?: (() => void) | undefined;
|
||||
backIcon?: React.ReactNode;
|
||||
delta?: number;
|
||||
delta?: number | undefined;
|
||||
extra?: React.ReactNode;
|
||||
subTitle?: React.ReactNode;
|
||||
contentMargin?: boolean;
|
||||
contentStyle?: React.CSSProperties;
|
||||
contentClassName?: string;
|
||||
contentMargin?: boolean | undefined;
|
||||
contentStyle?: import("react").CSSProperties | undefined;
|
||||
contentClassName?: string | undefined;
|
||||
tags?: React.ReactNode;
|
||||
children?: React.ReactNode;
|
||||
showHeader?: boolean;
|
||||
showHeader?: boolean | undefined;
|
||||
}>) => React.ReactElement;
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -1,22 +1,23 @@
|
|||
/// <reference types="react" />
|
||||
import { ReactComponentProps } from '../../types/Page';
|
||||
import { ED } from '../../types/AbstractComponent';
|
||||
declare const _default: <ED2 extends ED, T2 extends keyof ED2>(props: ReactComponentProps<ED2, T2, false, {
|
||||
style?: React.CSSProperties;
|
||||
className?: string;
|
||||
showHeader?: boolean;
|
||||
showBack?: boolean;
|
||||
onBack?: () => void;
|
||||
style?: import("react").CSSProperties | undefined;
|
||||
className?: string | undefined;
|
||||
showHeader?: boolean | undefined;
|
||||
showBack?: boolean | undefined;
|
||||
onBack?: (() => void) | undefined;
|
||||
backIcon?: React.ReactNode;
|
||||
delta?: number;
|
||||
delta?: number | undefined;
|
||||
title?: React.ReactNode;
|
||||
subTitle?: React.ReactNode;
|
||||
tags?: React.ReactNode;
|
||||
extra?: React.ReactNode;
|
||||
children?: React.ReactNode;
|
||||
content: React.ReactNode;
|
||||
contentStyle?: React.CSSProperties;
|
||||
contentClassName?: string;
|
||||
bodyStyle?: React.CSSProperties;
|
||||
bodyClassName?: string;
|
||||
contentStyle?: import("react").CSSProperties | undefined;
|
||||
contentClassName?: string | undefined;
|
||||
bodyStyle?: import("react").CSSProperties | undefined;
|
||||
bodyClassName?: string | undefined;
|
||||
}>) => React.ReactElement;
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
/// <reference types="react" />
|
||||
import { ReactComponentProps } from '../../types/Page';
|
||||
import { ED } from '../../types/AbstractComponent';
|
||||
declare const _default: <ED2 extends ED, T2 extends keyof ED2>(props: ReactComponentProps<ED2, T2, false, {
|
||||
entity: T2;
|
||||
style?: React.CSSProperties;
|
||||
className?: string;
|
||||
showQuickJumper?: boolean;
|
||||
size?: 'default' | 'small';
|
||||
showSizeChanger?: boolean;
|
||||
showTotal?: (total: number, range: [number, number]) => React.ReactNode;
|
||||
style?: import("react").CSSProperties | undefined;
|
||||
className?: string | undefined;
|
||||
showQuickJumper?: boolean | undefined;
|
||||
size?: "small" | "default" | undefined;
|
||||
showSizeChanger?: boolean | undefined;
|
||||
showTotal?: ((total: number, range: [number, number]) => React.ReactNode) | undefined;
|
||||
}>) => React.ReactElement;
|
||||
export default _default;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ MiddleSelect.Option = Select.Option;
|
|||
export default function Render(props) {
|
||||
const { style, className, oakPagination, oakFullpath, newTotal, showQuickJumper, showSizeChanger, size, showTotal, showTitle, } = props.data;
|
||||
const { t, setPageSize, setCurrentPage } = props.methods;
|
||||
const { pageSize, total, currentPage, more, count, } = oakPagination || {};
|
||||
const { pageSize, total, currentPage, more, count, getTotal } = oakPagination || {};
|
||||
const paginationRef = useRef(null);
|
||||
const [internalInputVal, setInternalInputVal] = useState(currentPage);
|
||||
useEffect(() => {
|
||||
|
|
@ -28,9 +28,9 @@ export default function Render(props) {
|
|||
if (!oakPagination) {
|
||||
return null;
|
||||
}
|
||||
// if (count === 0) {
|
||||
// return null
|
||||
// }
|
||||
if (total === 0) {
|
||||
return null;
|
||||
}
|
||||
const prefixCls = 'rc-pagination';
|
||||
const selectPrefixCls = 'rc-select';
|
||||
const hasPrev = currentPage > 1;
|
||||
|
|
@ -87,7 +87,7 @@ export default function Render(props) {
|
|||
])}
|
||||
</li>) : (<li className={Style[`${prefixCls}-total-text`]}>
|
||||
{/* 共 {newTotal >= total! ? (more ? newTotal + '+' : (currentPage! - 1) * pageSize! + count!) : total} 条 */}
|
||||
共 {newTotal > total ? (currentPage - 1) * pageSize + count + (more ? '+' : '') : total} 条
|
||||
共 {(newTotal > total ? (more ? (newTotal - pageSize) + '+' : (currentPage - 1) * pageSize + count) : total + (newTotal >= getTotal ? '+' : ''))} 条
|
||||
</li>);
|
||||
//上一页
|
||||
function renderPrev(prevPage) {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ declare const _default: <ED2 extends ED, T2 extends keyof ED2, T3 extends string
|
|||
helps: Record<string, string>;
|
||||
entity: T2;
|
||||
attributes: OakAbsAttrUpsertDef<ED2, T2, T3>[];
|
||||
data: ED2[T2]['Schema'];
|
||||
data: ED2[T2]["Schema"];
|
||||
layout: 'horizontal' | 'vertical';
|
||||
mode: 'default' | 'card';
|
||||
}>) => React.ReactElement;
|
||||
|
|
|
|||
|
|
@ -612,7 +612,8 @@ class ListNode extends EntityNode {
|
|||
more: true,
|
||||
total: undefined,
|
||||
count: 0,
|
||||
} : { ...DEFAULT_PAGINATION };
|
||||
getTotal
|
||||
} : { ...DEFAULT_PAGINATION, getTotal };
|
||||
this.stale = stale;
|
||||
this.syncHandler = (records) => this.onCacheSync(records);
|
||||
this.cache.bindOnSync(this.syncHandler);
|
||||
|
|
|
|||
|
|
@ -49,21 +49,21 @@ export declare function createComponent<IsList extends boolean, ED extends Entit
|
|||
redirectTo<T2_1 extends keyof ED>(options: {
|
||||
url: string;
|
||||
} & OakNavigateToParameters<ED, T2_1>, state?: Record<string, any> | undefined, disableNamespace?: boolean | undefined): Promise<void>;
|
||||
addItem<T_1 extends keyof ED>(data: Omit<ED[T_1]["CreateSingle"]["data"], "id"> & {
|
||||
addItem<T extends keyof ED>(data: Omit<ED[T]["CreateSingle"]["data"], "id"> & {
|
||||
id?: string | undefined;
|
||||
}, path?: string | undefined): string;
|
||||
addItems<T_2 extends keyof ED>(data: (Omit<ED[T_2]["CreateSingle"]["data"], "id"> & {
|
||||
addItems<T_1 extends keyof ED>(data: (Omit<ED[T_1]["CreateSingle"]["data"], "id"> & {
|
||||
id?: string | undefined;
|
||||
})[], path?: string | undefined): string[];
|
||||
removeItem(id: string, path?: string | undefined): void;
|
||||
removeItems(ids: string[], path?: string | undefined): void;
|
||||
updateItem<T_3 extends keyof ED>(data: ED[T_3]["Update"]["data"], id: string, action?: ED[T_3]["Action"] | undefined, path?: string | undefined): void;
|
||||
updateItems<T_4 extends keyof ED>(data: ED[T_4]["Update"]["data"], ids: string[], action?: ED[T_4]["Action"] | undefined, path?: string | undefined): void;
|
||||
updateItem<T_2 extends keyof ED>(data: ED[T_2]["Update"]["data"], id: string, action?: ED[T_2]["Action"] | undefined, path?: string | undefined): void;
|
||||
updateItems<T_3 extends keyof ED>(data: ED[T_3]["Update"]["data"], ids: string[], action?: ED[T_3]["Action"] | undefined, path?: string | undefined): void;
|
||||
recoverItem(id: string, path?: string | undefined): void;
|
||||
recoverItems(ids: string[], path?: string | undefined): void;
|
||||
resetItem(id: string, path?: string | undefined): void;
|
||||
update<T_5 extends keyof ED>(data: ED[T_5]["Update"]["data"], action?: ED[T_5]["Action"] | undefined, path?: string | undefined): void;
|
||||
create<T_6 extends keyof ED>(data: Omit<ED[T_6]["CreateSingle"]["data"], "id">, path?: string | undefined): void;
|
||||
update<T_4 extends keyof ED>(data: ED[T_4]["Update"]["data"], action?: ED[T_4]["Action"] | undefined, path?: string | undefined): void;
|
||||
create<T_5 extends keyof ED>(data: Omit<ED[T_5]["CreateSingle"]["data"], "id">, path?: string | undefined): void;
|
||||
remove(path?: string | undefined): void;
|
||||
isCreation(path?: string | undefined): boolean;
|
||||
clean(lsn?: number | undefined, dontPublish?: true | undefined, path?: string | undefined): void;
|
||||
|
|
@ -78,7 +78,7 @@ export declare function createComponent<IsList extends boolean, ED extends Entit
|
|||
select<T2_2 extends keyof ED>(entity: T2_2, selection: ED[T2_2]["Selection"]): Partial<import("oak-domain/lib/types").GeneralEntityShape>[];
|
||||
checkOperation<T2_3 extends keyof ED>(entity: T2_3, operation: Omit<ED[T2_3]["Operation"], "id">, checkerTypes?: CheckerType[] | undefined, cacheInsensative?: true | undefined): boolean | { [A in ED[T2_3]["Action"]]: boolean | import("oak-domain/lib/types").OakUserException<ED>; }[ED[T2_3]["Action"]];
|
||||
tryExecute(path?: string | undefined, action?: string | undefined): boolean | { [A_1 in ED[keyof ED]["Action"]]: boolean | import("oak-domain/lib/types").OakUserException<ED>; }[ED[keyof ED]["Action"]];
|
||||
getOperations<T_7 extends keyof ED>(path?: string | undefined): {
|
||||
getOperations<T_6 extends keyof ED>(path?: string | undefined): {
|
||||
entity: keyof ED;
|
||||
operation: ED[keyof ED]["Operation"];
|
||||
}[] | undefined;
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@ export interface Pagination {
|
|||
more?: boolean;
|
||||
total?: number;
|
||||
randomRange?: number;
|
||||
getTotal?: number;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,5 +8,5 @@ type TransformAspectDict<T extends AspectDict<ED, BCT>, ED extends BaseEntityDic
|
|||
[K in keyof T]: T[K] extends (params: infer P, context: BCT) => infer R ? R extends Promise<unknown> ? (params: P, callback?: (result: R, opRecords?: OpRecord<ED>[]) => void, dontPublish?: true, ignoreContext?: true) => R : never : never;
|
||||
};
|
||||
export type AspectDictTrans<ED extends BaseEntityDict, AD extends AspectDict<ED, BCT>, BCT extends AsyncContext<ED>> = TransformAspectDict<AD & CommonAspectDict<ED>, ED, BCT>;
|
||||
export declare const createService: <ED extends BaseEntityDict, AD extends AspectDict<ED, any>>(cache: BasicFeatures<ED>["cache"]) => TransformAspectDict<AD & CommonAspectDict<ED>, ED, any>;
|
||||
export declare const createService: <ED extends BaseEntityDict, AD extends AspectDict<ED, any>>(cache: import("../features/cache").Cache<ED>) => TransformAspectDict<AD & CommonAspectDict<ED>, ED, any>;
|
||||
export {};
|
||||
|
|
|
|||
|
|
@ -615,7 +615,8 @@ class ListNode extends EntityNode {
|
|||
more: true,
|
||||
total: undefined,
|
||||
count: 0,
|
||||
} : { ...DEFAULT_PAGINATION };
|
||||
getTotal
|
||||
} : { ...DEFAULT_PAGINATION, getTotal };
|
||||
this.stale = stale;
|
||||
this.syncHandler = (records) => this.onCacheSync(records);
|
||||
this.cache.bindOnSync(this.syncHandler);
|
||||
|
|
|
|||
|
|
@ -49,21 +49,21 @@ export declare function createComponent<IsList extends boolean, ED extends Entit
|
|||
redirectTo<T2_1 extends keyof ED>(options: {
|
||||
url: string;
|
||||
} & OakNavigateToParameters<ED, T2_1>, state?: Record<string, any> | undefined, disableNamespace?: boolean | undefined): Promise<void>;
|
||||
addItem<T_1 extends keyof ED>(data: Omit<ED[T_1]["CreateSingle"]["data"], "id"> & {
|
||||
addItem<T extends keyof ED>(data: Omit<ED[T]["CreateSingle"]["data"], "id"> & {
|
||||
id?: string | undefined;
|
||||
}, path?: string | undefined): string;
|
||||
addItems<T_2 extends keyof ED>(data: (Omit<ED[T_2]["CreateSingle"]["data"], "id"> & {
|
||||
addItems<T_1 extends keyof ED>(data: (Omit<ED[T_1]["CreateSingle"]["data"], "id"> & {
|
||||
id?: string | undefined;
|
||||
})[], path?: string | undefined): string[];
|
||||
removeItem(id: string, path?: string | undefined): void;
|
||||
removeItems(ids: string[], path?: string | undefined): void;
|
||||
updateItem<T_3 extends keyof ED>(data: ED[T_3]["Update"]["data"], id: string, action?: ED[T_3]["Action"] | undefined, path?: string | undefined): void;
|
||||
updateItems<T_4 extends keyof ED>(data: ED[T_4]["Update"]["data"], ids: string[], action?: ED[T_4]["Action"] | undefined, path?: string | undefined): void;
|
||||
updateItem<T_2 extends keyof ED>(data: ED[T_2]["Update"]["data"], id: string, action?: ED[T_2]["Action"] | undefined, path?: string | undefined): void;
|
||||
updateItems<T_3 extends keyof ED>(data: ED[T_3]["Update"]["data"], ids: string[], action?: ED[T_3]["Action"] | undefined, path?: string | undefined): void;
|
||||
recoverItem(id: string, path?: string | undefined): void;
|
||||
recoverItems(ids: string[], path?: string | undefined): void;
|
||||
resetItem(id: string, path?: string | undefined): void;
|
||||
update<T_5 extends keyof ED>(data: ED[T_5]["Update"]["data"], action?: ED[T_5]["Action"] | undefined, path?: string | undefined): void;
|
||||
create<T_6 extends keyof ED>(data: Omit<ED[T_6]["CreateSingle"]["data"], "id">, path?: string | undefined): void;
|
||||
update<T_4 extends keyof ED>(data: ED[T_4]["Update"]["data"], action?: ED[T_4]["Action"] | undefined, path?: string | undefined): void;
|
||||
create<T_5 extends keyof ED>(data: Omit<ED[T_5]["CreateSingle"]["data"], "id">, path?: string | undefined): void;
|
||||
remove(path?: string | undefined): void;
|
||||
isCreation(path?: string | undefined): boolean;
|
||||
clean(lsn?: number | undefined, dontPublish?: true | undefined, path?: string | undefined): void;
|
||||
|
|
@ -78,7 +78,7 @@ export declare function createComponent<IsList extends boolean, ED extends Entit
|
|||
select<T2_2 extends keyof ED>(entity: T2_2, selection: ED[T2_2]["Selection"]): Partial<import("oak-domain/lib/types").GeneralEntityShape>[];
|
||||
checkOperation<T2_3 extends keyof ED>(entity: T2_3, operation: Omit<ED[T2_3]["Operation"], "id">, checkerTypes?: CheckerType[] | undefined, cacheInsensative?: true | undefined): boolean | { [A in ED[T2_3]["Action"]]: boolean | import("oak-domain/lib/types").OakUserException<ED>; }[ED[T2_3]["Action"]];
|
||||
tryExecute(path?: string | undefined, action?: string | undefined): boolean | { [A_1 in ED[keyof ED]["Action"]]: boolean | import("oak-domain/lib/types").OakUserException<ED>; }[ED[keyof ED]["Action"]];
|
||||
getOperations<T_7 extends keyof ED>(path?: string | undefined): {
|
||||
getOperations<T_6 extends keyof ED>(path?: string | undefined): {
|
||||
entity: keyof ED;
|
||||
operation: ED[keyof ED]["Operation"];
|
||||
}[] | undefined;
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@ export interface Pagination {
|
|||
more?: boolean;
|
||||
total?: number;
|
||||
randomRange?: number;
|
||||
getTotal?: number;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ export default function Render(
|
|||
showTitle,
|
||||
} = props.data;
|
||||
const { t, setPageSize, setCurrentPage } = props.methods;
|
||||
const { pageSize, total, currentPage, more, count, } = oakPagination || {};
|
||||
const { pageSize, total, currentPage, more, count, getTotal } = oakPagination || {};
|
||||
|
||||
const paginationRef = useRef<HTMLUListElement>(null);
|
||||
const [internalInputVal, setInternalInputVal] = useState(currentPage);
|
||||
|
|
@ -71,9 +71,9 @@ export default function Render(
|
|||
if (!oakPagination) {
|
||||
return null;
|
||||
}
|
||||
// if (count === 0) {
|
||||
// return null
|
||||
// }
|
||||
if (total === 0) {
|
||||
return null
|
||||
}
|
||||
|
||||
const prefixCls = 'rc-pagination';
|
||||
const selectPrefixCls = 'rc-select';
|
||||
|
|
@ -154,7 +154,7 @@ export default function Render(
|
|||
) : (
|
||||
<li className={Style[`${prefixCls}-total-text`]}>
|
||||
{/* 共 {newTotal >= total! ? (more ? newTotal + '+' : (currentPage! - 1) * pageSize! + count!) : total} 条 */}
|
||||
共 {newTotal > total! ? (currentPage! - 1) * pageSize! + count! + (more ? '+' : '') : total} 条
|
||||
共 {(newTotal > total! ? (more ? (newTotal - pageSize!) + '+' : (currentPage! - 1) * pageSize! + count!) : total! + (newTotal >= getTotal! ? '+' : ''))} 条
|
||||
</li>
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -759,7 +759,8 @@ class ListNode<
|
|||
more: true,
|
||||
total: undefined,
|
||||
count: 0,
|
||||
} : { ...DEFAULT_PAGINATION };
|
||||
getTotal
|
||||
} : { ...DEFAULT_PAGINATION, getTotal };
|
||||
this.stale = stale;
|
||||
|
||||
this.syncHandler = (records) => this.onCacheSync(records);
|
||||
|
|
|
|||
|
|
@ -5,4 +5,5 @@ export interface Pagination {
|
|||
more?: boolean; // 是否有下一页
|
||||
total?: number; // 总条数(后台返回)
|
||||
randomRange?: number; // 随机范围
|
||||
getTotal?: number;
|
||||
};
|
||||
Loading…
Reference in New Issue