Compare commits

...

5 Commits

Author SHA1 Message Date
Liujian 6fb5829847 Merge remote-tracking branch 'origin/feature/1.5-cx' into feature/1.5-local-model 2025-03-03 11:13:35 +08:00
ningyv d424b68b2b feat: feature/1.5-Data Integration 2025-02-20 18:35:26 +08:00
ningyv 94503a4ab6 feat: feature/1.5-Data Integration 2025-02-20 14:19:34 +08:00
ningyv 587eec4f15 feat: feature/1.5-Data Integration 2025-02-20 13:51:53 +08:00
ningyv 5759195b23 feat: feature/1.5-Data Integration 2025-02-20 11:36:34 +08:00
5 changed files with 38 additions and 14 deletions
@@ -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"