mirror of
https://github.com/APIParkLab/APIPark.git
synced 2026-06-14 20:41:15 +08:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6fb5829847 | |||
| d424b68b2b | |||
| 94503a4ab6 | |||
| 587eec4f15 | |||
| 5759195b23 |
@@ -22,6 +22,7 @@ class InsidePageProps {
|
||||
headerClassName?: string = ''
|
||||
/** 整个页面滚动 */
|
||||
scrollPage?: boolean = true
|
||||
scrollInsidePage?: boolean = false
|
||||
customPadding?: boolean
|
||||
customBtn?: ReactNode
|
||||
}
|
||||
@@ -42,6 +43,7 @@ const InsidePage: FC<InsidePageProps> = ({
|
||||
contentClassName = '',
|
||||
headerClassName = '',
|
||||
scrollPage = true,
|
||||
scrollInsidePage = false,
|
||||
customPadding = false,
|
||||
customBtn
|
||||
}) => {
|
||||
@@ -51,7 +53,9 @@ const InsidePage: FC<InsidePageProps> = ({
|
||||
navigate(backUrl || '/')
|
||||
}
|
||||
return (
|
||||
<div className={`flex overflow-hidden flex-col flex-1 h-full ${className}`}>
|
||||
<div
|
||||
className={`flex flex-col flex-1 h-full ${scrollInsidePage ? 'overflow-auto' : 'overflow-hidden'} ${className}`}
|
||||
>
|
||||
{showBanner && (
|
||||
<div
|
||||
className={`border-[0px] mr-PAGE_INSIDE_X ${showBorder ? 'border-solid border-b-[1px] border-BORDER' : ''} ${headerClassName}`}
|
||||
@@ -100,7 +104,9 @@ const InsidePage: FC<InsidePageProps> = ({
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
<div className={`h-full ${scrollPage ? 'overflow-hidden' : 'overflow-auto'} ${contentClassName || ''}`}>
|
||||
<div
|
||||
className={`h-full ${scrollInsidePage ? 'overflow-visible' : scrollPage ? 'overflow-hidden' : 'overflow-auto'} ${contentClassName || ''}`}
|
||||
>
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -36,6 +36,7 @@ interface PageListProps<T> extends ProTableProps<T, unknown>, RefAttributes<Acti
|
||||
primaryKey?: string
|
||||
addNewBtnTitle?: string
|
||||
addNewBtnAccess?: string
|
||||
addNewBtnDisabled?: boolean
|
||||
tableClickAccess?: string
|
||||
onAddNewBtnClick?: () => void
|
||||
beforeSearchNode?: React.ReactNode[]
|
||||
@@ -75,6 +76,7 @@ const PageList = <T extends Record<string, unknown>>(
|
||||
primaryKey = 'id',
|
||||
addNewBtnTitle,
|
||||
addNewBtnAccess,
|
||||
addNewBtnDisabled = false,
|
||||
tableClickAccess,
|
||||
tableClass,
|
||||
onAddNewBtnClick,
|
||||
@@ -202,6 +204,7 @@ const PageList = <T extends Record<string, unknown>>(
|
||||
<Button
|
||||
type="primary"
|
||||
className={`mr-btnrbase my-btnbase ${addNewBtnWrapperClass}`}
|
||||
disabled={addNewBtnDisabled}
|
||||
onClick={onAddNewBtnClick}
|
||||
>
|
||||
{addNewBtnTitle}
|
||||
|
||||
@@ -133,14 +133,11 @@ const LocalModelList: React.FC = () => {
|
||||
const configureService = (address?: string) => {
|
||||
modal.confirm({
|
||||
title: $t('配置 Ollama 服务'),
|
||||
content: (
|
||||
<ConfigureOllamaService ref={ConfigureOllamaServiceRef} address={address}></ConfigureOllamaService>
|
||||
),
|
||||
content: <ConfigureOllamaService ref={ConfigureOllamaServiceRef} address={address}></ConfigureOllamaService>,
|
||||
onOk: () => {
|
||||
return ConfigureOllamaServiceRef.current?.save().then((res) => {
|
||||
if (res === true) {
|
||||
getOllamaData()
|
||||
pageListRef.current?.reload()
|
||||
}
|
||||
})
|
||||
},
|
||||
@@ -176,9 +173,11 @@ const LocalModelList: React.FC = () => {
|
||||
<div>
|
||||
<Icon className="align-sub mr-[5px]" icon="ph:hard-drives-light" width="50" height="50" />
|
||||
<div>{$t('模型部署服务未配置')}</div>
|
||||
<Button type="primary" className="mt-[10px]" onClick={() => configureService()}>
|
||||
{$t('配置服务')}
|
||||
</Button>
|
||||
<WithPermission access="system.devops.ai_provider.edit">
|
||||
<Button type="primary" className="mt-[10px]" onClick={() => configureService()}>
|
||||
{$t('配置服务')}
|
||||
</Button>
|
||||
</WithPermission>
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
@@ -191,6 +190,7 @@ const LocalModelList: React.FC = () => {
|
||||
|
||||
if (response.code === STATUS_CODE.SUCCESS) {
|
||||
setOllamaAddress(response.data?.config?.address || '')
|
||||
pageListRef.current?.reload()
|
||||
} else {
|
||||
message.error(response.msg || $t(RESPONSE_TIPS.error))
|
||||
}
|
||||
@@ -286,6 +286,13 @@ const LocalModelList: React.FC = () => {
|
||||
|
||||
const requestList = async (params: any) => {
|
||||
try {
|
||||
if (!ollamaAddress) {
|
||||
return {
|
||||
data: [],
|
||||
success: true,
|
||||
total: 0
|
||||
}
|
||||
}
|
||||
const response = await fetchData<BasicResponse<{ data: ModelListData[] }>>('model/local/list', {
|
||||
method: 'GET',
|
||||
eoParams: {
|
||||
@@ -435,20 +442,26 @@ const LocalModelList: React.FC = () => {
|
||||
ref={pageListRef}
|
||||
rowKey="id"
|
||||
tableClass="local-model-list"
|
||||
customEmptyRender={customEmptyRender}
|
||||
customEmptyRender={!ollamaAddress ? customEmptyRender : undefined}
|
||||
request={requestList}
|
||||
onSearchWordChange={(e) => {
|
||||
setSearchWord(e.target.value)
|
||||
pageListRef.current?.reload()
|
||||
}}
|
||||
beforeNewBtn={
|
||||
[<Button className="mr-btnbase" key="removeFromDep" onClick={() => configureService(ollamaAddress)}>{$t('配置服务')}</Button>]
|
||||
}
|
||||
beforeNewBtn={[
|
||||
<WithPermission access="system.devops.ai_provider.edit">
|
||||
<Button className="mr-btnbase" key="removeFromDep" onClick={() => configureService(ollamaAddress)}>
|
||||
{$t('配置服务')}
|
||||
</Button>
|
||||
</WithPermission>
|
||||
]}
|
||||
showPagination={true}
|
||||
searchPlaceholder={$t('请输入名称搜索')}
|
||||
columns={columns}
|
||||
addNewBtnTitle={$t('部署模型')}
|
||||
onAddNewBtnClick={handleAdd}
|
||||
addNewBtnAccess="system.devops.ai_provider.edit"
|
||||
addNewBtnDisabled={!ollamaAddress}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -216,6 +216,7 @@ const OnlineModelList: React.FC = () => {
|
||||
showPagination={true}
|
||||
searchPlaceholder={$t('请输入名称搜索')}
|
||||
columns={columns}
|
||||
addNewBtnAccess="system.devops.ai_provider.edit"
|
||||
addNewBtnTitle={$t('添加模型')}
|
||||
onAddNewBtnClick={handleAdd}
|
||||
/>
|
||||
|
||||
@@ -185,12 +185,13 @@ export default function Guide() {
|
||||
}
|
||||
showBorder={false}
|
||||
scrollPage={false}
|
||||
scrollInsidePage={true}
|
||||
customPadding={true}
|
||||
headerClassName="pt-[30px] pl-[40px]"
|
||||
contentClassName=" w-full pr-PAGE_INSIDE_X pb-PAGE_INSIDE_B pl-[40px]"
|
||||
>
|
||||
<AIModelGuide></AIModelGuide>
|
||||
<div className="flex flex-col gap-[15px]">
|
||||
<div className="flex flex-col gap-[15px] pb-PAGE_INSIDE_B">
|
||||
{showGuide && (
|
||||
<Collapse
|
||||
size="large"
|
||||
|
||||
Reference in New Issue
Block a user