import React, { useEffect } from 'react'; import { Dialog, DialogTitle, DialogContent, DialogActions, Button, TextField, Box, Typography, CircularProgress, } from '@mui/material'; import { Controller, useForm } from 'react-hook-form'; // 表单数据接口 export interface OllamaFormData { base_url: string; } // 对话框 Props 接口 export interface OllamaDialogProps { open: boolean; onClose: () => void; onSubmit: (data: OllamaFormData) => void; loading: boolean; initialData?: OllamaFormData; editMode?: boolean; } /** * Ollama 配置对话框 */ function OllamaDialog ({ open, onClose, onSubmit, loading, initialData, editMode = false, }: OllamaDialogProps) { const { control, handleSubmit, reset, formState: { errors }, } = useForm({ defaultValues: { base_url: 'http://localhost:11434', }, }); // 当对话框打开或初始数据变化时重置表单 useEffect(() => { if (open) { reset(initialData || { base_url: 'http://localhost:11434' }); } }, [open, initialData, reset]); const handleFormSubmit = (data: OllamaFormData) => { onSubmit(data); }; return ( {editMode ? '编辑' : '配置'} Ollama ( )} /> ); }; export default OllamaDialog;