import React, { useState } from 'react'; import { Model, CreateDynamicRequest, AIModelOption } from '../types/model'; import { Modal } from './Modal'; import { XMarkIcon, PhotoIcon, SparklesIcon, CpuChipIcon, VideoCameraIcon } from '@heroicons/react/24/outline'; interface CreateDynamicModalProps { model: Model; onSubmit: (data: CreateDynamicRequest) => void; onCancel: () => void; } const CreateDynamicModal: React.FC = ({ model, onSubmit, onCancel }) => { const [formData, setFormData] = useState({ prompt: '', source_image_path: '', ai_model: '极梦', video_count: 1 }); const [errors, setErrors] = useState>({}); const [isSubmitting, setIsSubmitting] = useState(false); // 可用的AI模型选项 const aiModelOptions: AIModelOption[] = [ { id: 'jimeng', name: '极梦', description: '高质量视频生成模型', is_available: true, max_video_count: 9 } ]; const handleInputChange = (field: string, value: any) => { setFormData(prev => ({ ...prev, [field]: value })); // 清除对应字段的错误 if (errors[field]) { setErrors(prev => ({ ...prev, [field]: '' })); } }; const handleImageSelect = async () => { try { // TODO: 实现图片选择功能 // const selectedPath = await systemService.selectImageFile(); // if (selectedPath) { // handleInputChange('source_image_path', selectedPath); // } console.log('选择图片功能待实现'); } catch (error) { console.error('选择图片失败:', error); } }; const validateForm = () => { const newErrors: Record = {}; if (!formData.prompt.trim()) { newErrors.prompt = '请输入提示词'; } if (!formData.source_image_path) { newErrors.source_image_path = '请选择源图片'; } if (formData.video_count < 1 || formData.video_count > 9) { newErrors.video_count = '视频个数必须在1-9之间'; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!validateForm()) { return; } setIsSubmitting(true); try { const submitData: CreateDynamicRequest = { model_id: model.id, title: undefined, description: '模特动态', // 使用默认描述 prompt: formData.prompt.trim(), source_image_path: formData.source_image_path, ai_model: formData.ai_model, video_count: formData.video_count }; onSubmit(submitData); } catch (error) { console.error('提交失败:', error); } finally { setIsSubmitting(false); } }; return ( } size="lg" variant="default" closeOnBackdropClick={false} > {/* 表单内容 */}
{/* 提示词 */}