chore: detail api

This commit is contained in:
jialin
2026-01-30 18:48:55 +08:00
parent 358df925e7
commit 8f2eea70f6
43 changed files with 1938 additions and 97 deletions
@@ -106,7 +106,7 @@ const ViewLogsModal: React.FC<ViewModalProps> = (props) => {
maskClosable={false}
keyboard={true}
styles={{
content: {
wrapper: {
borderRadius: 0
}
}}
@@ -0,0 +1,71 @@
import { createAxiosToken } from '@/hooks/use-chunk-request';
import { useRequest } from 'ahooks';
import { message } from 'antd';
import { CancelTokenSource } from 'axios';
import { useEffect, useRef, useState } from 'react';
import { queryModelInstancesList } from '../apis';
import { ModelInstanceListItem } from '../config/types';
/**
*
* @returns loading, fetch, dataList
*/
export const useQueryModelInstancesList = () => {
const axiosTokenRef = useRef<CancelTokenSource | null>(null);
const [dataList, setDataList] = useState<
Array<Partial<ModelInstanceListItem> & { label: string; value: string }>
>([]);
const {
runAsync: fetchData,
loading,
cancel
} = useRequest(
async (params: { id: number }) => {
const query = {
page: -1,
id: params.id
};
axiosTokenRef.current?.cancel();
axiosTokenRef.current = createAxiosToken();
const res = await queryModelInstancesList(query, {
token: axiosTokenRef.current.token
});
setDataList(
res.items?.map((item: ModelInstanceListItem) => ({
...item,
label: item.name,
value: item.name
})) || []
);
return res.items || [];
},
{
manual: true,
onSuccess: (response) => {},
onError: (error) => {
message.error(error?.message || 'Failed to fetch model instances list');
setDataList([]);
}
}
);
const cancelRequest = () => {
cancel();
axiosTokenRef.current?.cancel();
};
useEffect(() => {
return () => {
cancel();
axiosTokenRef.current?.cancel();
};
}, []);
return {
loading,
instanceList: dataList,
cancelRequest,
fetchInstanceList: fetchData
};
};
@@ -0,0 +1,67 @@
import { createAxiosToken } from '@/hooks/use-chunk-request';
import { useRequest } from 'ahooks';
import { message } from 'antd';
import { CancelTokenSource } from 'axios';
import { useEffect, useRef, useState } from 'react';
import { queryModelsList } from '../apis';
import { ListItem } from '../config/types';
/**
*
* @returns loading, fetch, dataList
*/
export const useQueryModelList = () => {
const axiosTokenRef = useRef<CancelTokenSource | null>(null);
const [dataList, setDataList] = useState<
Array<Partial<ListItem> & { label: string; value: number }>
>([]);
const {
runAsync: fetchData,
loading,
cancel
} = useRequest(
async (params: { page: number; perPage?: number; cluster_id?: number }) => {
axiosTokenRef.current?.cancel();
axiosTokenRef.current = createAxiosToken();
const res = await queryModelsList(params, {
token: axiosTokenRef.current.token
});
setDataList(
res.items?.map((item: ListItem) => ({
...item,
label: item.name,
value: item.id
})) || []
);
return res.items || [];
},
{
manual: true,
onSuccess: (response) => {},
onError: (error) => {
message.error(error?.message || 'Failed to fetch model list');
setDataList([]);
}
}
);
const cancelRequest = () => {
cancel();
axiosTokenRef.current?.cancel();
};
useEffect(() => {
return () => {
cancel();
axiosTokenRef.current?.cancel();
};
}, []);
return {
loading,
modelList: dataList,
cancelRequest,
fetchModelList: fetchData
};
};