diff --git a/web/src/components/PageScrollList/index.tsx b/web/src/components/PageScrollList/index.tsx index a56969e8..ef413d9f 100644 --- a/web/src/components/PageScrollList/index.tsx +++ b/web/src/components/PageScrollList/index.tsx @@ -1,13 +1,14 @@ import React, { useEffect, useState, useRef, forwardRef, useImperativeHandle } from 'react'; -import { List, Skeleton} from 'antd'; +import { List } from 'antd'; import InfiniteScroll from 'react-infinite-scroll-component'; import { request } from '@/utils/request'; -import Empty from '@/components/Empty'; +import PageEmpty from '@/components/Empty/PageEmpty' +import PageLoading from '@/components/Empty/PageLoading' const PAGE_SIZE = 20; -interface ApiResponse { - items?: Record[]; +interface ApiResponse { + items?: T[]; page: { page: number; pagesize: number; @@ -19,26 +20,25 @@ export interface PageScrollListRef { refresh: () => void; } -interface PageScrollListProps { +interface PageScrollListProps> { url: string; - renderItem: (item: Record) => React.ReactNode; - query?: Record; + renderItem: (item: T) => React.ReactNode; + query?: Q; column?: number; className?: string; } - -const PageScrollList = forwardRef(({ +const PageScrollList = forwardRef(>({ renderItem, query, url, column = 4, className = '', -}, ref) => { +}: PageScrollListProps, ref: React.Ref) => { useImperativeHandle(ref, () => ({ refresh, })); const [loading, setLoading] = useState(false); - const [data, setData] = useState[]>([]); + const [data, setData] = useState([]); const [page, setPage] = useState(1); const [hasMore, setHasMore] = useState(true); const scrollRef = useRef(null); @@ -54,8 +54,8 @@ const PageScrollList = forwardRef(({ ...(query||{}), }) .then((res) => { - const response = res as ApiResponse; - const results = Array.isArray(response.items) ? response.items : Array.isArray(response) ? response : []; + const response = res as ApiResponse; + const results = Array.isArray(response.items) ? response.items : Array.isArray(response) ? response as T[] : []; if (flag) { setData(results); } else { @@ -104,7 +104,7 @@ const PageScrollList = forwardRef(({ dataLength={data.length} next={loadMoreData} hasMore={hasMore} - loader={} + loader={} // endMessage={It is all, nothing more 🤐} scrollableTarget="scrollableDiv" > @@ -118,11 +118,11 @@ const PageScrollList = forwardRef(({ )} /> - ) : !loading ? : null} + ) : !loading ? : null} ); -}); +}) as , Q = Record>(props: PageScrollListProps & { ref?: React.Ref }) => React.ReactElement; export default PageScrollList; \ No newline at end of file diff --git a/web/src/views/ApiKeyManagement/index.tsx b/web/src/views/ApiKeyManagement/index.tsx index eaed20c4..168b5e52 100644 --- a/web/src/views/ApiKeyManagement/index.tsx +++ b/web/src/views/ApiKeyManagement/index.tsx @@ -58,13 +58,12 @@ const ApiKeyManagement: React.FC = () => { - ref={scrollListRef} url={getApiKeyListUrl} query={{ is_active: true, type: 'service' }} column={2} - renderItem={(item: Record) => { - let apiKeyItem = item as unknown as ApiKey + renderItem={(apiKeyItem) => { return ( { const { t } = useTranslation(); const { modal } = App.useApp(); - const [query, setQuery] = useState({}); + const [query, setQuery] = useState({} as Query); const applicationModalRef = useRef(null); const scrollListRef = useRef(null) @@ -47,7 +47,7 @@ const ApplicationManagement: React.FC = () => { } return ( <> - + { - ref={scrollListRef} url={getApplicationListUrl} query={query} - renderItem={(item: Application) => ( + renderItem={(item) => ( +
{item.name[0]}
} > {['type', 'source', 'created_at'].map((key, index) => ( -
{t(`application.${key}`)} { : key === 'source' && !item.is_shared ? t('application.configuration') : key === 'created_at' - ? formatDateTime(item[key as keyof Application], 'YYYY-MM-DD HH:mm:ss') + ? formatDateTime(item.created_at, 'YYYY-MM-DD HH:mm:ss') : t(`application.${item[key as keyof Application]}`) }
))} -
+
diff --git a/web/src/views/ApplicationManagement/types.ts b/web/src/views/ApplicationManagement/types.ts index 03d8b1b0..baf12b73 100644 --- a/web/src/views/ApplicationManagement/types.ts +++ b/web/src/views/ApplicationManagement/types.ts @@ -1,4 +1,7 @@ // 应用数据类型 +export interface Query { + search: string; +} export interface Application { id: string; workspace_id: string;