feat: feature/1.5-Data Integration

This commit is contained in:
ningyv
2025-02-15 10:13:10 +08:00
parent 7a635430f1
commit 2cca6d4bba
3 changed files with 116 additions and 119 deletions
+3
View File
@@ -752,6 +752,9 @@ p{
.custom-steps .ant-steps-item-content {
margin-top: 0 !important;
}
.custom-steps .ant-steps-item-content .ant-steps-item-description {
width: 138px !important;
}
.ant-modal-body .pr-PAGE_INSIDE_X{
@@ -114,7 +114,7 @@ const LocalModelList: React.FC = () => {
normal: { text: '正常' },
deploying: { text: '部署中', className: 'text-[#2196f3] cursor-pointer' },
error: { text: '模型异常', className: 'text-[#ff4d4f]' },
disabled: { text: '停用', className: 'text-[#999]' },
disabled: { text: '停用' },
deploying_error: { text: '部署失败', className: 'text-[#ff4d4f] cursor-pointer' }
})
@@ -14,7 +14,6 @@ import AddLoadBalancingModel from './AddModel'
const LoadBalancingPage = () => {
const pageListRef = useRef<ActionType>(null)
const [searchWord, setSearchWord] = useState<string>('')
const [columns, setColumns] = useState<PageProColumns<LoadBalancingItems>[]>([])
const { modal, message } = App.useApp()
const [apiKeys, setApiKeys] = useState<LoadBalancingItems[]>([])
const addModelRef = useRef<LoadBalancingHandle>()
@@ -150,125 +149,120 @@ const LoadBalancingPage = () => {
})
}
/**
/**
* 设置表格列
*/
const setTableColumns = () => {
setColumns([
{
title: '',
dataIndex: 'drag',
width: '40px'
},
{
title: $t('优先级'),
dataIndex: 'priority',
width: 80,
ellipsis: true,
key: 'priority'
},
{
title: $t('模型'),
dataIndex: ['provider', 'name'],
ellipsis: true,
width: 100,
key: 'provider',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span>
{record.provider?.name} / {record.model?.name}
</span>
)
},
{
title: $t('类型'),
dataIndex: 'type',
width: 100,
ellipsis: true,
key: 'type',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span>{record.type === 'online' ? $t('线上模型') : $t('本地模型')}</span>
)
},
{
title: $t('状态'),
dataIndex: 'state',
width: 120,
ellipsis: true,
key: 'state',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span>{statusEnum[record.state]?.text || '-'}</span>
)
},
{
title: $t('Apis'),
dataIndex: 'apiCount',
ellipsis: true,
width: 80,
key: 'apiCount',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span className="[&>.key-link]:text-[#2196f3] cursor-pointer">
<a
href={`/aiApis?modelId=${record.model?.id}`}
target="_blank"
className="key-link"
style={{
fontWeight: 500,
cursor: 'pointer',
pointerEvents: 'all',
textDecoration: 'none'
}}
>
{record.apiCount || '0'}
</a>
</span>
)
},
{
title: $t('Keys'),
dataIndex: 'keyCount',
ellipsis: true,
width: 80,
key: 'keyCount',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span className="[&>.key-link]:text-[#2196f3] cursor-pointer">
<a
href={`/keysetting?modelId=${record.model?.id}`}
target="_blank"
className="key-link"
style={{
fontWeight: 500,
cursor: 'pointer',
pointerEvents: 'all',
textDecoration: 'none'
}}
>
{record.keyCount || '0'}
</a>
</span>
)
},
{
title: '',
key: 'option',
btnNums: 1,
width: 80,
fixed: 'right',
valueType: 'option',
render: (_: React.ReactNode, entity: any) => [
<TableBtnWithPermission
access="system.settings.ai_balance.delete"
key="delete"
btnType="delete"
onClick={() => handleDelete(entity.id as string)}
btnTitle={$t('删除')}
/>
]
}
])
}
useEffect(() => {
setTableColumns()
}, [])
const columns: PageProColumns<LoadBalancingItems>[] = [
{
title: '',
dataIndex: 'drag',
width: '40px'
},
{
title: $t('优先级'),
dataIndex: 'priority',
width: 80,
ellipsis: true,
key: 'priority'
},
{
title: $t('模型'),
dataIndex: ['provider', 'name'],
ellipsis: true,
key: 'provider',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span>
{record.provider?.name} / {record.model?.name}
</span>
)
},
{
title: $t('类型'),
dataIndex: 'type',
width: 120,
ellipsis: true,
key: 'type',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span>{record.type === 'online' ? $t('线上模型') : $t('本地模型')}</span>
)
},
{
title: $t('状态'),
dataIndex: 'state',
width: 80,
ellipsis: true,
key: 'state',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span>{statusEnum[record.state]?.text || '-'}</span>
)
},
{
title: $t('Apis'),
dataIndex: 'apiCount',
ellipsis: true,
width: 80,
key: 'apiCount',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span className="[&>.key-link]:text-[#2196f3] cursor-pointer">
<a
href={`/aiApis?modelId=${record.model?.id}`}
target="_blank"
className="key-link"
style={{
fontWeight: 500,
cursor: 'pointer',
pointerEvents: 'all',
textDecoration: 'none'
}}
>
{record.apiCount || '0'}
</a>
</span>
)
},
{
title: $t('Keys'),
dataIndex: 'keyCount',
ellipsis: true,
width: 80,
key: 'keyCount',
render: (dom: React.ReactNode, record: LoadBalancingItems) => (
<span className="[&>.key-link]:text-[#2196f3] cursor-pointer">
<a
href={`/keysetting?modelId=${record.model?.id}`}
target="_blank"
className="key-link"
style={{
fontWeight: 500,
cursor: 'pointer',
pointerEvents: 'all',
textDecoration: 'none'
}}
>
{record.keyCount || '0'}
</a>
</span>
)
},
{
title: '',
key: 'option',
btnNums: 1,
width: 50,
fixed: 'right',
valueType: 'option',
render: (_: React.ReactNode, entity: any) => [
<TableBtnWithPermission
access="system.settings.ai_balance.delete"
key="delete"
btnType="delete"
onClick={() => handleDelete(entity.id as string)}
btnTitle={$t('删除')}
/>
]
}
]
return (
<>