1
0
Files
nex/frontend/src/pages/Providers/ModelForm.tsx
lanyuanxiaoyao d143c5f3df fix: 补齐前端生成物忽略并消除构建告警
统一 Git、ESLint、Prettier 对测试和构建生成物的忽略规则,避免本地产物导致 frontend-build 失败。

补齐表单 effect 依赖,移除无关告警,让前端构建链路恢复稳定。
2026-04-24 18:53:53 +08:00

86 lines
2.3 KiB
TypeScript

import { useEffect } from 'react'
import { Dialog, Form, Input, Select, Switch } from 'tdesign-react'
import type { Provider, Model } from '@/types'
import type { SubmitContext } from 'tdesign-react/es/form/type'
interface ModelFormValues {
providerId: string
modelName: string
enabled: boolean
}
interface ModelFormProps {
open: boolean
model?: Model
providerId: string
providers: Provider[]
onSave: (values: ModelFormValues) => Promise<void> | void
onCancel: () => void
loading: boolean
}
export function ModelForm({ open, model, providerId, providers, onSave, onCancel, loading }: ModelFormProps) {
const [form] = Form.useForm()
const isEdit = !!model
// 当弹窗打开或 model 变化时,同步表单初始值。
useEffect(() => {
if (open && form) {
if (model) {
form.setFieldsValue({
providerId: model.providerId,
modelName: model.modelName,
enabled: model.enabled,
})
} else {
form.reset()
form.setFieldsValue({
providerId,
enabled: true,
})
}
}
}, [form, open, model, providerId])
const handleSubmit = (context: SubmitContext) => {
if (context.validateResult === true && form) {
const values = form.getFieldsValue(true) as ModelFormValues
onSave(values)
}
}
return (
<Dialog
header={isEdit ? '编辑模型' : '添加模型'}
visible={open}
placement='center'
width='520px'
closeOnOverlayClick={false}
closeOnEscKeydown={false}
lazy={false}
onConfirm={() => {
form?.submit()
return false
}}
onClose={onCancel}
confirmLoading={loading}
confirmBtn='保存'
cancelBtn='取消'
>
<Form form={form} layout='vertical' onSubmit={handleSubmit}>
<Form.FormItem label='供应商' name='providerId' rules={[{ required: true, message: '请选择供应商' }]}>
<Select options={providers.map((p) => ({ label: p.name, value: p.id }))} />
</Form.FormItem>
<Form.FormItem label='模型名称' name='modelName' rules={[{ required: true, message: '请输入模型名称' }]}>
<Input placeholder='例如: gpt-4o' />
</Form.FormItem>
<Form.FormItem label='启用' name='enabled'>
<Switch />
</Form.FormItem>
</Form>
</Dialog>
)
}