import React, { useState, useEffect } from 'react';
import axios from 'axios';
import "../upload.css";
import "../uploadtorrent.css";
import { Form, Input, Select, Button, Typography, Space, message,Switch } from 'antd';
import { InboxOutlined } from '@ant-design/icons';
const { TextArea } = Input;
const { Text } = Typography;
import Navbar from './Navbar';


function UploadTorrent() {
  const [userid,setuserid] = useState(1);
  const [title, setTitle] = useState('');
  const [description, setDescription] = useState('');
  const [categoryId, setCategoryId] = useState('');
  const [file, setFile] = useState(null);
  const [categories, setCategories] = useState([]);
  const [showSuccess, setShowSuccess] = useState(false);
  const [form] = Form.useForm();
  
  // 通用参数
  const [dpi, setDpi] = useState('');
  const [caption, setCaption] = useState('');
  const [region, setRegion] = useState('');
  const [year, setYear] = useState('');
  const [genre, setGenre] = useState('');
  const [format, setFormat] = useState('');
  const [resolution, setResolution] = useState('');
  const [coverImage, setCoverImage] = useState(null);
  
  // 特殊参数
  const [codecFormat, setCodecFormat] = useState('');
  const [platform, setPlatform] = useState('');
  const [language, setLanguage] = useState('');
  const [eventType, setEventType] = useState('');
  const [source, setSource] = useState('');
  const [style, setStyle] = useState('');
  const [dataType, setdataType] = useState('');
  const [isMainland, setIsMainland] = useState(false);

  // 根据分类显示不同的表单字段
  const [showMovieFields, setShowMovieFields] = useState(false);
  const [showMusicFields, setShowMusicFields] = useState(false);
  const [showGameFields, setShowGameFields] = useState(false);
  const [showTvFields, setShowTvFields] = useState(false);
  const [showAnimeFields, setShowAnimeFields] = useState(false);
  const [showlearningFields, setShowlearningFields] = useState(false);
  const [showsoftwareFields, setShowsoftwareFields] = useState(false);
  const [showvarietyFields, setShowvarietyFields] = useState(false);
  const [showsportsFields, setShowsportsFields] = useState(false);
  const [showdocFields, setShowdocFields] = useState(false);
  const [showotherFields, setShowotherFields] = useState(false);
  // 其他分类字段...
  // 编码格式选项
  const codecFormats = [
    { value: 'H.264', label: 'H.264' },
    { value: 'H.265', label: 'H.265' },
    { value: 'AV1', label: 'AV1' },
    { value: 'VP9', label: 'VP9' },
    { value: 'VC1', label: 'VC1' },
    { value: 'X264', label: 'X264' },
  ];
  const regions = [
    { value: '大陆', label: '大陆' },
    { value: '港台', label: '港台' },
    { value: '欧美', label: '欧美' },
    { value: '日韩', label: '日韩' },
    { value: '其他', label: '其他' },
  ];
  const genres = [
    { value: '动作', label: '动作' },
    { value: '喜剧', label: '喜剧' },
    { value: '爱情', label: '爱情' },
    { value: '科幻', label: '科幻' },
    { value: '恐怖', label: '恐怖' },
    { value: '动作', label: '动作' },
    { value: '冒险', label: '冒险' },
    { value: '历史', label: '历史' },
    { value: '悬疑', label: '悬疑' },
    { value: '其他', label: '其他' },
  ];
  const resolutions = [
    { value: '720p', label: '720p' },
    { value: '1080p', label: '1080p' },
    { value: '2K', label: '2K' },
    { value: '4K', label: '4K' },
    { value: '8K', label: '8K' },
    { value: '其他', label: '其他' },
  ];


  const eventTypes = [
    { value: '足球', label: '足球' },
    { value: '篮球', label: '篮球' },
    { value: '网球', label: '网球' },
    { value: '乒乓球', label: '乒乓球' },
    { value: '羽毛球', label: '羽毛球' },
  ]
  const styles = [
    { value: '大陆综艺', label: '大陆综艺' },
    { value: '日韩综艺', label: '日韩综艺' },
    { value: '欧美综艺', label: '欧美综艺' },
    { value: '其他', label: '其他' },
  ]
  const platforms = [
    { value: 'PC', label: 'PC' },
    { value: 'PS5', label: 'PS5' },
    { value: 'Xbox', label: 'Xbox' },
    { value: 'Switch', label: 'Switch' },
    { value: '手机', label: '手机' },
    { value: '其他', label: '其他' },
  ]
  const gamegenres = [
    { value: '角色扮演', label: '角色扮演' },
    { value: '射击', label: '射击' },
    { value: '冒险', label: '冒险' },
    { value: '策略', label: '策略' },
    { value: '体育', label: '体育' },
    { value: '桌面游戏', label: '桌面游戏'},
    { value: '其他', label: '其他' },
  ]
  const dataTypes = [
    { value: '压缩包', label: '压缩包' },
    { value: '补丁', label: '补丁' },
    { value: '安装包', label: '安装包' },
    { value: 'nds', label: 'nds' },
    { value: '其他', label: '其他' },
  ]
  const languages = [
    { value: '中文', label: '中文' },
    { value: '英文', label: '英文' },
    { value: '日文', label: '日文' },
    { value: '其他', label: '其他' },
  ]
  const musicgenres = [
    { value: '专辑', label: '专辑' },
    { value: '单曲', label: '单曲' },
    { value: 'EP', label: 'EP' },
    { value: '现场', label: '现场' },
    { value: '其他', label: '其他' },
  ]
  const musicstyles = [
    { value: '流行', label: '流行' },
    { value: '摇滚', label: '摇滚' },
    { value: '电子', label: '电子' },
    { value: '古典', label: '古典' },
    { value: '爵士', label: '爵士' },
    { value: '民谣', label: '民谣' },
    { value: '说唱', label: '说唱' },
    { value: '其他', label: '其他' },
  ]
  const musicformats = [
    { value: 'MP3', label: 'MP3' },
    { value: 'FLAC', label: 'FLAC' },
    { value: 'WAV', label: 'WAV' },
    { value: 'AAC', label: 'AAC' },
    { value: 'OGG', label: 'OGG' },
    { value: '其他', label: '其他' },
  ]
  const anigenres = [
    { value: '新番连载', label: '新番连载' },
    { value: '剧场版', label: '剧场版' },
    { value: 'OVA', label: 'OVA' },
    { value: '完结动漫', label: '完结动漫' },
    { value: '其他', label: '其他' },
  ]
  const animeformats = [
    { value: 'ZIP', label: 'ZIP' },
    { value: 'RAR', label: 'RAR' },
    { value: '7Z', label: '7Z' },
    { value: 'MKV', label: 'MKV' },
    { value: 'MP4', label: 'MP4' },
    { value: '其他', label: '其他' },
  ]
  const varietygenres = [
    { value: '真人秀', label: '真人秀' },
    { value: '选秀', label: '选秀' },
    { value: '访谈', label: '访谈' },
    { value: '游戏', label: '游戏' },
    { value: '音乐', label: '音乐' },
    { value: '其他', label: '其他' },
  ]
  const sportsgenres = [
    { value: '足球', label: '足球' },
    { value: '篮球', label: '篮球' },
    { value: '网球', label: '网球' },
    { value: '乒乓球', label: '乒乓球' },
    { value: '羽毛球', label: '羽毛球' },
    { value: '其他', label: '其他' },
  ]
  const softwaregenres = [
    { value: '系统软件', label: '系统软件' },
    { value: '应用软件', label: '应用软件' },
    { value: '游戏软件', label: '游戏软件' },
    { value: '驱动程序', label: '驱动程序' },
    { value: '办公软件', label: '办公软件' },
    { value: '其他', label: '其他' },
  ]
  const softwareplatforms = [
    { value: 'Windows', label: 'Windows' },
    { value: 'Mac', label: 'Mac' },
    { value: 'Linux', label: 'Linux' },
    { value: 'Android', label: 'Android' },
    { value: 'iOS', label: 'iOS' },
    { value: '其他', label: '其他' },
  ]
  const softwareformats = [
    { value: 'EXE', label: 'EXE' }, 
    { value: 'DMG', label: 'DMG' },
    { value: '光盘镜像', label: '光盘镜像' },
    { value: 'APK', label: 'APK' },
    { value: 'IPA', label: 'IPA' },
    { value: '其他', label: '其他' },
  ]
  const learninggenres = [
    { value: '计算机', label: '计算机' },
    { value: '软件', label: '软件' },
    { value: '人文', label: '人文' },
    { value: '外语', label: '外语' },
    { value: '理工类', label: '理工类' },
    { value: '其他', label: '其他' },
  ]
  const learningformats = [
    { value: 'PDF', label: 'PDF' },
    { value: 'EPUB', label: 'EPUB' },
    { value: '视频', label: '视频' },
    { value: '音频', label: '音频' },
    { value: 'PPT', label: 'PPT' },
    { value: '其他', label: '其他' },
  ]
  const sourceTypes = [
    { value: 'CCTV', label: 'CCTV' },
    { value: '卫视', label: '卫视' },
    { value: '国家地理', label: '国家地理' },
    { value: 'BBC', label: 'BBC' },
    { value: 'Discovery', label: 'Discovery' },
    { value: '其他', label: '其他' },
  ]
  const othergenres = [
    { value: '电子书', label: '电子书' },
    { value: '视频', label: '视频' },
    { value: 'MP3', label: 'MP3' },
    { value: '图片', label: '图片' },
    { value: '其他', label: '其他' },
  ]
  useEffect(() => {
    axios.get('http://localhost:8080/categories')
      .then(res => setCategories(res.data))
      .catch(err => console.error('加载分类失败', err));
  }, []);

  // 根据选择的分类显示不同的表单字段
  useEffect(() => {
    setShowMovieFields(categoryId === '1');
    setShowMusicFields(categoryId === '3');
    setShowGameFields(categoryId === '5');
    setShowTvFields(categoryId === '2');
    setShowAnimeFields(categoryId === '4');
    setShowlearningFields(categoryId === '9');
    setShowsoftwareFields(categoryId === '8');
    setShowvarietyFields(categoryId === '6');
    setShowsportsFields(categoryId === '7');
    setShowdocFields(categoryId === '10');
    setShowotherFields(categoryId === '11');
    // 其他分类...
  }, [categoryId]);


  
  const handleSubmit = async (e) => {
    //e.preventDefault();
    if (!coverImage) {
      alert('请选择一个 图片 文件');
      return;
    }
    if (!file) {
      alert('请选择一个 .torrent 文件');
      return;
    }

    if (!categoryId) {
      alert('请选择分类');
      return;
    }
    

    const formData = new FormData();
    formData.append('userid', userid);
    formData.append('file', file);
    // Add cover image if it exists
    formData.append('coverImage', coverImage);
    formData.append('title', title);
    formData.append('description', description);
    formData.append('categoryId', categoryId);

    
    // 通用参数
    if (dpi) formData.append('dpi', dpi);
    if (caption) formData.append('caption', caption);
    if (region) formData.append('region', region);
    if (year) formData.append('year', year);
    if (genre) formData.append('genre', genre);
    if (format) formData.append('format', format);
    if (resolution) formData.append('resolution', resolution);
    
    // 特殊参数
    if (codecFormat) formData.append('codecFormat', codecFormat);
    if (platform) formData.append('platform', platform);
    if (language) formData.append('language', language);
    if (eventType) formData.append('eventType', eventType);
    if (source) formData.append('source', source);
    if (style) formData.append('style', style);
    if (dataType) formData.append('dataType', dataType);
    formData.append('isMainland', isMainland.toString());

    try {
      const response = await axios.post('http://localhost:8080/torrent/upload', formData, {
        headers: { 'Content-Type': 'multipart/form-data' },
        responseType: 'blob',
      });

      // 创建下载链接
      const url = window.URL.createObjectURL(new Blob([response.data]));
      const link = document.createElement('a');
      link.href = url;
      link.setAttribute('download', file.name);
      document.body.appendChild(link);
      link.click();
      link.remove();

      // 显示成功提示
      setShowSuccess(true);
      // 清空表单
      setTitle('');
      setDescription('');
      setCategoryId('');
      setFile(null);
      // 清空其他字段...
    } catch (err) {
      console.error('上传失败', err.response?.data || err.message);
      alert(err.response?.data || '上传失败，请检查后端是否启动');
    }
  };

//   return (
//   <div className="max-w-2xl mx-auto mt-10 p-6 bg-white shadow rounded">
//   <h2 className="text-2xl font-bold mb-6 text-orange-800 text-center border-b-2 border-orange-200 pb-3">上传种子</h2>
//   <form onSubmit={handleSubmit} className="space-y-6">
//     {/* 封面图片 - 大型上传区域 */}
//     <div className="form-group text-center">
//       <label className="upload-area text-orange-800 font-medium cursor-pointer p-8 border-2 border-dashed border-orange-300 rounded-lg hover:border-orange-400 transition-colors">
//         <svg xmlns="http://www.w3.org/2000/svg" className="mx-auto h-12 w-12 text-orange-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
//           <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12" />
//         </svg>
//         <p className="mt-2 text-sm">点击或拖拽上传封面图片</p>
//         <input 
//           type="file" 
//           accept="image/*" 
//           onChange={(e) => setCoverImage(e.target.files[0])} 
//           className="hidden"
//           id="cover-image-upload"
//         />
//       </label>
//       <input 
//         type="file" 
//         accept="image/*" 
//         onChange={(e) => setCoverImage(e.target.files[0])} 
//         className="sr-only"
//         id="cover-image-upload-real"
//       />
//     </div>

//     {/* 种子文件 - 大型上传区域 */}
//     <div className="form-group text-center">
//       <label className="upload-area text-orange-800 font-medium cursor-pointer p-8 border-2 border-dashed border-orange-300 rounded-lg hover:border-orange-400 transition-colors">
//         <svg xmlns="http://www.w3.org/2000/svg" className="mx-auto h-12 w-12 text-orange-400" fill="none" viewBox="0 0 24 24" stroke="currentColor">
//           <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" />
//         </svg>
//         <p className="mt-2 text-sm">点击或拖拽上传种子文件(.torrent)</p>
//         <input 
//           type="file" 
//           accept=".torrent" 
//           onChange={(e) => setFile(e.target.files[0])} 
//           className="hidden"
//           id="torrent-file-upload"
//           required
//         />
//       </label>
//       <input 
//         type="file" 
//         accept=".torrent" 
//         onChange={(e) => setFile(e.target.files[0])} 
//         className="sr-only"
//         id="torrent-file-upload-real"
//         required
//       />
//     </div>

//     {/* 标题 */}
//     <div className="form-group">
//       <label className="form-label text-orange-800 text-center">标题</label>
//       <input
//         type="text"
//         placeholder="输入种子标题"
//         value={title}
//         onChange={(e) => setTitle(e.target.value)}
//         className="form-control text-center"
//         required
//       />
//     </div>

//     {/* 描述 */}
//     <div className="form-group">
//       <label className="form-label text-orange-800 text-center">描述</label>
//       <textarea
//         placeholder="输入种子描述"
//         value={description}
//         onChange={(e) => setDescription(e.target.value)}
//         className="form-control text-center"
//         rows={3}
//       />
//     </div>

//     {/* 分类 - 美化下拉框 */}
//     <div className="form-group">
//       <label className="form-label text-orange-800 text-center">分类</label>
//       <div className="relative">
//         <select
//           value={categoryId}
//           onChange={(e) => setCategoryId(e.target.value)}
//           className="custom-select"
//           required
//         >
//           <option value="">请选择分类</option>
//           {categories.map(cat => (
//             <option key={cat.categoryid} value={cat.categoryid}>{cat.category_name}</option>
//           ))}
//         </select>
//         <div className="select-arrow">
//           <svg xmlns="http://www.w3.org/2000/svg" className="h-4 w-4 text-orange-500" viewBox="0 0 20 20" fill="currentColor">
//             <path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" />
//           </svg>
//         </div>
//       </div>
//     </div>

//     {/* 动态字段 - 电影 */}
//     {showMovieFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800 text-center">字幕/说明</label>
//           <input
//             type="text"
//             placeholder="输入字幕/说明"
//             value={caption}
//             onChange={(e) => setCaption(e.target.value)}
//             className="form-control text-center"
//           />
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800 text-center">地区</label>
//           <div className="relative">
//             <select
//               value={region}
//               onChange={(e) => setRegion(e.target.value)}
//               className="custom-select"
//             >
//               <option value="">请选择地区</option>
//               {regions.map((region) => (
//                 <option key={region.value} value={region.value}>
//                   {region.label}
//                 </option>
//               ))}
//             </select>
//             <div className="select-arrow">
//               <svg xmlns="http://www.w3.org/2000/svg" className="h-4 w-4 text-orange-500" viewBox="0 0 20 20" fill="currentColor">
//                 <path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" />
//               </svg>
//             </div>
//           </div>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800 text-center">年份</label>
//           <input
//             type="text"
//             placeholder="输入年份"
//             value={year}
//             onChange={(e) => setYear(e.target.value)}
//             className="form-control text-center"
//           />
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800 text-center">类型</label>
//           <div className="relative">
//             <select
//               value={genre}
//               onChange={(e) => setGenre(e.target.value)}
//               className="custom-select"
//             >
//               <option value="">请选择类型</option>
//               {genres.map((format) => (
//                 <option key={format.value} value={format.value}>
//                   {format.label}
//                 </option>
//               ))}
//             </select>
//             <div className="select-arrow">
//               <svg xmlns="http://www.w3.org/2000/svg" className="h-4 w-4 text-orange-500" viewBox="0 0 20 20" fill="currentColor">
//                 <path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" />
//               </svg>
//             </div>
//           </div>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800 text-center">编码格式</label>
//           <div className="relative">
//             <select
//               value={codecFormat}
//               onChange={(e) => setCodecFormat(e.target.value)}
//               className="custom-select"
//             >
//               <option value="">请选择编码格式</option>
//               {codecFormats.map((format) => (
//                 <option key={format.value} value={format.value}>
//                   {format.label}
//                 </option>
//               ))}
//             </select>
//             <div className="select-arrow">
//               <svg xmlns="http://www.w3.org/2000/svg" className="h-4 w-4 text-orange-500" viewBox="0 0 20 20" fill="currentColor">
//                 <path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" />
//               </svg>
//             </div>
//           </div>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800 text-center">分辨率</label>
//           <div className="relative">
//             <select
//               value={resolution}
//               onChange={(e) => setResolution(e.target.value)}
//               className="custom-select"
//             >
//               <option value="">请选择分辨率</option>
//               {resolutions.map((resolution) => (
//                 <option key={resolution.value} value={resolution.value}>
//                   {resolution.label}
//                 </option>
//               ))}
//             </select>
//             <div className="select-arrow">
//               <svg xmlns="http://www.w3.org/2000/svg" className="h-4 w-4 text-orange-500" viewBox="0 0 20 20" fill="currentColor">
//                 <path fillRule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clipRule="evenodd" />
//               </svg>
//             </div>
//           </div>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 剧集 */}
//     {showTvFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800">地区</label>
//           <select
//             value={region}
//             onChange={(e) => setRegion(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择地区</option>
//             {regions.map((region) => (
//               <option key={region.value} value={region.value}>
//                 {region.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">格式</label>
//           <select
//             value={format}
//             onChange={(e) => setFormat(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择格式</option>
//             {resolutions.map((format) => (
//               <option key={format.value} value={format.value}>
//                 {format.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">类型</label>
//           <select
//             value={genre}
//             onChange={(e) => setGenre(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择类型</option>
//             {genres.map((genre) => (
//               <option key={genre.value} value={genre.value}>
//                 {genre.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 游戏 */}
//     {showGameFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800">平台</label>
//           <select
//             value={platform}
//             onChange={(e) => setPlatform(e.target.value)} 
//             className="form-control"
//           >
//             <option value="">请选择平台</option>
//             {platforms.map((platform) => (
//               <option key={platform.value} value={platform.value}>
//                 {platform.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">类型</label>
//           <select
//             value={genre}
//             onChange={(e) => setGenre(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择类型</option>  
//             {gamegenres.map((genre) => (
//               <option key={genre.value} value={genre.value}>
//                 {genre.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">语言</label>
//           <select
//             value={language}
//             onChange={(e) => setLanguage(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择语言</option>
//             {languages.map((language) => (
//               <option key={language.value} value={language.value}>
//                 {language.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">数据类型</label>
//           <select
//             value={dataType}
//             onChange={(e) => setdataType(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择数据类型</option>
//             {dataTypes.map((dataType) => (
//               <option key={dataType.value} value={dataType.value}>
//                 {dataType.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 综艺 */}
//     {showvarietyFields && (
//       <>
//         <div className="form-group">
//           <label className="flex items-center">
//             <input
//               type="checkbox"
//               checked={isMainland}
//               onChange={(e) => setIsMainland(e.target.checked)}
//               className="mr-2"
//             />
//             是否大陆综艺
//           </label>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">类型</label>
//           <select
//             value={style}
//             onChange={(e) => setStyle(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择类型</option>
//             {varietygenres.map((style) => (
//               <option key={style.value} value={style.value}>
//                 {style.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">格式</label>
//           <select
//             value={format}
//             onChange={(e) => setFormat(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择格式</option>
//             {resolutions.map((format) => (
//               <option key={format.value} value={format.value}>
//                 {format.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 动漫 */}
//     {showAnimeFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800">类型</label>
//           <select
//             value={genre}
//             onChange={(e) => setGenre(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择类型</option>
//             {anigenres.map((genre) => (
//               <option key={genre.value} value={genre.value}>
//                 {genre.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">格式</label>
//           <select
//             value={format}
//             onChange={(e) => setFormat(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择格式</option>
//             {animeformats.map((format) => (
//               <option key={format.value} value={format.value}>
//                 {format.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">分辨率</label>
//           <select
//             value={resolution}
//             onChange={(e) => setResolution(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择分辨率</option>
//             {resolutions.map((resolution) => (
//               <option key={resolution.value} value={resolution.value}>
//                 {resolution.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 学习 */}
//     {showlearningFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800">类型</label>
//           <select
//             value={genre}
//             onChange={(e) => setGenre(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择类型</option>
//             {learninggenres.map((genre) => (
//               <option key={genre.value} value={genre.value}>
//                 {genre.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">格式</label>
//           <select
//             value={format}
//             onChange={(e) => setFormat(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择格式</option>
//             {learningformats.map((format) => (
//               <option key={format.value} value={format.value}>
//                 {format.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 软件 */}
//     {showsoftwareFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800">平台</label>
//           <select
//             value={platform}
//             onChange={(e) => setPlatform(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择平台</option>
//             {softwareplatforms.map((platform) => (
//               <option key={platform.value} value={platform.value}>
//                 {platform.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">类型</label>
//           <select
//             value={genre}
//             onChange={(e) => setGenre(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择类型</option>
//             {softwaregenres.map((genre) => (
//               <option key={genre.value} value={genre.value}>
//                 {genre.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">格式</label>
//           <select
//             value={format}
//             onChange={(e) => setFormat(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择格式</option>
//             {softwareformats.map((format) => (
//               <option key={format.value} value={format.value}>
//                 {format.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 体育 */}
//     {showsportsFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800">类型</label>
//           <select
//             value={genre}
//             onChange={(e) => setGenre(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择类型</option>
//             {sportsgenres.map((genre) => (
//               <option key={genre.value} value={genre.value}>
//                 {genre.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">格式</label>
//           <select
//             value={format}
//             onChange={(e) => setFormat(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择格式</option>
//             {resolutions.map((format) => (
//               <option key={format.value} value={format.value}>
//                 {format.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">赛事类型</label>
//           <select
//             value={eventType}
//             onChange={(e) => setEventType(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择赛事类型</option>
//             {eventTypes.map((eventType) => (
//               <option key={eventType.value} value={eventType.value}>
//                 {eventType.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 纪录片 */}
//     {showdocFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800">年份</label>
//           <input
//             type="text"
//             placeholder="如 1999, 2020"
//             value={year}
//             onChange={(e) => setYear(e.target.value)}
//             className="form-control"
//           />
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">视频源</label>
//           <select
//             value={source}
//             onChange={(e) => setSource(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择视频源</option>
//             {sourceTypes.map((source) => (
//               <option key={source.value} value={source.value}>
//                 {source.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">格式</label>
//           <select
//             value={format}
//             onChange={(e) => setFormat(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择格式</option>
//             {resolutions.map((format) => (
//               <option key={format.value} value={format.value}>
//                 {format.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 音乐 */}
//     {showMusicFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800">类型</label>
//           <select
//             value={genre}
//             onChange={(e) => setGenre(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择类型</option>
//             {musicgenres.map((genre) => (
//               <option key={genre.value} value={genre.value}>
//                 {genre.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">地区</label>
//           <select
//             value={region}
//             onChange={(e) => setRegion(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择地区</option>
//             {regions.map((region) => (
//               <option key={region.value} value={region.value}>
//                 {region.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">风格</label>
//           <select
//             value={style}
//             onChange={(e) => setStyle(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择风格</option>
//             {musicstyles.map((style) => (
//               <option key={style.value} value={style.value}>
//                 {style.label}
//               </option>
//             ))}
//           </select>
//         </div>
//         <div className="form-group">
//           <label className="form-label text-orange-800">格式</label>
//           <select
//             value={format}
//             onChange={(e) => setFormat(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择格式</option>
//             {musicformats.map((format) => (
//               <option key={format.value} value={format.value}>
//                 {format.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}

//     {/* 动态字段 - 其他 */}
//     {showotherFields && (
//       <>
//         <div className="form-group">
//           <label className="form-label text-orange-800">类型</label>
//           <select
//             value={genre}
//             onChange={(e) => setGenre(e.target.value)}
//             className="form-control"
//           >
//             <option value="">请选择类型</option>
//             {othergenres.map((genre) => (
//               <option key={genre.value} value={genre.value}>
//                 {genre.label}
//               </option>
//             ))}
//           </select>
//         </div>
//       </>
//     )}


//     {/* 其他动态字段... (保持相同的美化样式) */}
//     {/* 这里省略了其他动态字段的代码，但它们都使用相同的自定义下拉框样式 */}
    
//     {/* 提交按钮 - 居中 */}
//     <div className="text-center">
//       <button 
//         type="submit" 
//         className="submit-btn"
//       >
//         上传种子
//       </button>
//     </div>

//     {showSuccess && (
//       <div className="success-message text-center">
//         上传成功！
//       </div>
//     )}
//   </form>
// </div>
//   );
// }
return (
  <div>
  <Navbar  style={{ width: '100%' }}/>
    <div className="container">
      <div className="card">
        <h2 className="title">上传种子</h2>
        <Form
          layout="vertical"
          onFinish={handleSubmit}
          className="form"
        >
         {/* 封面图片 - 自定义上传区域 */}
<Form.Item
  name="coverImage"
   label={<span style={{ fontSize: '19px'  , fontWeight: 'bold'}}>封面图片</span>} 
  rules={[{ required: true, message: '请上传封面图片' }]}
>
  <div 
    className="uploadArea"
    onClick={() => document.getElementById('cover-image-upload').click()}
  >
    <InboxOutlined className="uploadIcon" />
    <p className="uploadText">点击或拖拽上传封面图片</p>
    <input
      type="file"
      accept="image/*"
      onChange={(e) => {
        setCoverImage(e.target.files[0]);
        form.setFieldsValue({ coverImage: e.target.files[0] });
      }}
      className="hiddenInput"
      id="cover-image-upload"
    />
  </div>
</Form.Item>

{/* 种子文件 - 自定义上传区域 */}
<Form.Item
  name="torrentFile"
   label={<span style={{ fontSize: '19px' , fontWeight: 'bold'}}>种子文件</span>} 
  rules={[{ required: true, message: '请上传.torrent文件' }]}
>
  <div 
    className="uploadArea"
    onClick={() => document.getElementById('torrent-file-upload').click()}
  >
    <InboxOutlined className="uploadIcon" />
    <p className="uploadText">点击或拖拽上传种子文件(.torrent)</p>
    <input
      type="file"
      accept=".torrent"
      onChange={(e) => {
        setFile(e.target.files[0]);
        form.setFieldsValue({ torrentFile: e.target.files[0] });
      }}
      className="hiddenInput"
      id="torrent-file-upload"
    />
  </div>
</Form.Item>

          {/* 标题 */}
          <Form.Item
            name="title"
            label={<span style={{ fontSize: '19px'  , fontWeight: 'bold'}}>标题</span>}  // 直接包裹label
            rules={[{ required: true, message: '请输入标题' }]}
            //labelCol={{ style: { fontSize: '30px !important ' } }} // ✅ 调整 Label 字体
          >
            <Input
              placeholder="输入种子标题"
              value={title}
              onChange={(e) => {
                setTitle(e.target.value);
                form.setFieldsValue({ title: e.target.value });
              }}
              //style={styles.input}
              style={{ fontSize: '19px' }} // ✅ 调整 Input 字体
            />
          </Form.Item>

          {/* 描述 */}
          <Form.Item
            name="description"
             label={<span style={{ fontSize: '19px'  , fontWeight: 'bold'}}>描述</span>} 
          >
            <TextArea
              placeholder="输入种子描述"
              value={description}
              onChange={(e) => {
                setDescription(e.target.value);
                form.setFieldsValue({ description: e.target.value });
              }}
              rows={3}
              style={styles.textArea}
            />
          </Form.Item>

          {/* 分类 - 美化下拉框 */}
          <Form.Item
            name="categoryId"
             label={<span style={{ fontSize: '19px' , fontWeight: 'bold' }}>分类</span>} 
            rules={[{ required: true, message: '请选择分类' }]}
          >
            <Select
              placeholder="请选择分类"
              value={categoryId}
              onChange={(value) => {
                const stringValue = String(value);
                setCategoryId(stringValue);
                console.log('Selected category ID:', stringValue);
                form.setFieldsValue({ categoryId: value });
                // 触发分类变化后的逻辑
                setShowMovieFields(value === '1');
                setShowTvFields(value === '2');
                setShowAnimeFields(value === '4');
                setShowGameFields(value === '5');
                setShowvarietyFields(value === '6');
                setShowMusicFields(value === '3');
                setShowlearningFields(value === '9');
                setShowsoftwareFields(value === '8');
                setShowsportsFields(value === '7');
                setShowdocFields(value === '10');
                setShowotherFields(value === '11');
              }}
              style={styles.select}
            >
              <Option value="">请选择分类</Option>
              {categories.map(cat => (
                <Option key={cat.categoryid} value={cat.categoryid}>{cat.category_name}</Option>
              ))}
            </Select>
          </Form.Item>

      {/* 动态字段 - 电影 */}
      {showMovieFields && (
        <>
          <Form.Item
            name="caption"
            label="字幕/说明"
            rules={[{ required: true, message: '请输入字幕/说明' }]}
          >
            <Input
              placeholder="输入字幕/说明"
              value={caption}
              onChange={(e) => {
                setCaption(e.target.value);
                form.setFieldsValue({ caption: e.target.value });
              }}
              className="text-center"
            />
          </Form.Item>
          <Form.Item
            name="region"
            label="地区"
          >
            <Select
              placeholder="请选择地区"
              value={region}
              onChange={(value) => {
                setRegion(value);
                form.setFieldsValue({ region: value });
              }}
              className="w-full"
            >
              <Option value="">请选择地区</Option>
              {regions.map((region) => (
                <Option key={region.value} value={region.value}>
                  {region.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="year"
            label="年份"
          >
            <Input
              placeholder="输入年份"
              value={year}
              onChange={(e) => {
                setYear(e.target.value);
                form.setFieldsValue({ year: e.target.value });
              }}
              className="text-center"
            />
          </Form.Item>
          <Form.Item
            name="genre"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={genre}
              onChange={(value) => {
                setGenre(value);
                form.setFieldsValue({ genre: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {genres.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="codecFormat"
            label="编码格式"
          >
            <Select
              placeholder="请选择编码格式"
              value={codecFormat}
              onChange={(value) => {
                setCodecFormat(value);
                form.setFieldsValue({ codecFormat: value });
              }}
              className="w-full"
            >
              <Option value="">请选择编码格式</Option>
              {codecFormats.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="resolution"
            label="分辨率"
          >
            <Select
              placeholder="请选择分辨率"
              value={resolution}
              onChange={(value) => {
                setResolution(value);
                form.setFieldsValue({ resolution: value });
              }}
              className="w-full"
            >
              <Option value="">请选择分辨率</Option>
              {resolutions.map((resolution) => (
                <Option key={resolution.value} value={resolution.value}>
                  {resolution.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 剧集 */}
      {showTvFields && (
        <>
          <Form.Item
            name="region"
            label="地区"
          >
            <Select
              placeholder="请选择地区"
              value={region}
              onChange={(value) => {
                setRegion(value);
                form.setFieldsValue({ region: value });
              }}
              className="w-full"
            >
              <Option value="">请选择地区</Option>
              {regions.map((region) => (
                <Option key={region.value} value={region.value}>
                  {region.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="format"
            label="格式"
          >
            <Select
              placeholder="请选择格式"
              value={format}
              onChange={(value) => {
                setFormat(value);
                form.setFieldsValue({ format: value });
              }}
              className="w-full"
            >
              <Option value="">请选择格式</Option>
              {resolutions.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="genre"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={genre}
              onChange={(value) => {
                setGenre(value);
                form.setFieldsValue({ genre: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {genres.map((genre) => (
                <Option key={genre.value} value={genre.value}>
                  {genre.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 游戏 */}
      {showGameFields && (
        <>
          <Form.Item
            name="platform"
            label="平台"
          >
            <Select
              placeholder="请选择平台"
              value={platform}
              onChange={(value) => {
                setPlatform(value);
                form.setFieldsValue({ platform: value });
              }}
              className="w-full"
            >
              <Option value="">请选择平台</Option>
              {platforms.map((platform) => (
                <Option key={platform.value} value={platform.value}>
                  {platform.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="genre"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={genre}
              onChange={(value) => {
                setGenre(value);
                form.setFieldsValue({ genre: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {gamegenres.map((genre) => (
                <Option key={genre.value} value={genre.value}>
                  {genre.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="language"
            label="语言"
          >
            <Select
              placeholder="请选择语言"
              value={language}
              onChange={(value) => {
                setLanguage(value);
                form.setFieldsValue({ language: value });
              }}
              className="w-full"
            >
              <Option value="">请选择语言</Option>
              {languages.map((language) => (
                <Option key={language.value} value={language.value}>
                  {language.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="dataType"
            label="数据类型"
          >
            <Select
              placeholder="请选择数据类型"
              value={dataType}
              onChange={(value) => {
                setDataType(value);
                form.setFieldsValue({ dataType: value });
              }}
              className="w-full"
            >
              <Option value="">请选择数据类型</Option>
              {dataTypes.map((dataType) => (
                <Option key={dataType.value} value={dataType.value}>
                  {dataType.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 综艺 */}
      {showvarietyFields && (
        <>
          <Form.Item
            name="isMainland"
            label="是否大陆综艺"
            valuePropName="checked"
          >
            <Switch 
              checked={isMainland}
              onChange={(checked) => {
                setIsMainland(checked);
                form.setFieldsValue({ isMainland: checked });
              }}
            />
          </Form.Item>
          <Form.Item
            name="style"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={style}
              onChange={(value) => {
                setStyle(value);
                form.setFieldsValue({ style: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {varietygenres.map((style) => (
                <Option key={style.value} value={style.value}>
                  {style.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="format"
            label="格式"
          >
            <Select
              placeholder="请选择格式"
              value={format}
              onChange={(value) => {
                setFormat(value);
                form.setFieldsValue({ format: value });
              }}
              className="w-full"
            >
              <Option value="">请选择格式</Option>
              {resolutions.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 动漫 */}
      {showAnimeFields && (
        <>
          <Form.Item
            name="genre"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={genre}
              onChange={(value) => {
                setGenre(value);
                form.setFieldsValue({ genre: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {anigenres.map((genre) => (
                <Option key={genre.value} value={genre.value}>
                  {genre.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="format"
            label="格式"
          >
            <Select
              placeholder="请选择格式"
              value={format}
              onChange={(value) => {
                setFormat(value);
                form.setFieldsValue({ format: value });
              }}
              className="w-full"
            >
              <Option value="">请选择格式</Option>
              {animeformats.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="resolution"
            label="分辨率"
          >
            <Select
              placeholder="请选择分辨率"
              value={resolution}
              onChange={(value) => {
                setResolution(value);
                form.setFieldsValue({ resolution: value });
              }}
              className="w-full"
            >
              <Option value="">请选择分辨率</Option>
              {resolutions.map((resolution) => (
                <Option key={resolution.value} value={resolution.value}>
                  {resolution.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 学习 */}
      {showlearningFields && (
        <>
          <Form.Item
            name="genre"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={genre}
              onChange={(value) => {
                setGenre(value);
                form.setFieldsValue({ genre: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {learninggenres.map((genre) => (
                <Option key={genre.value} value={genre.value}>
                  {genre.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="format"
            label="格式"
          >
            <Select
              placeholder="请选择格式"
              value={format}
              onChange={(value) => {
                setFormat(value);
                form.setFieldsValue({ format: value });
              }}
              className="w-full"
            >
              <Option value="">请选择格式</Option>
              {learningformats.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 软件 */}
      {showsoftwareFields && (
        <>
          <Form.Item
            name="platform"
            label="平台"
          >
            <Select
              placeholder="请选择平台"
              value={platform}
              onChange={(value) => {
                setPlatform(value);
                form.setFieldsValue({ platform: value });
              }}
              className="w-full"
            >
              <Option value="">请选择平台</Option>
              {softwareplatforms.map((platform) => (
                <Option key={platform.value} value={platform.value}>
                  {platform.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="genre"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={genre}
              onChange={(value) => {
                setGenre(value);
                form.setFieldsValue({ genre: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {softwaregenres.map((genre) => (
                <Option key={genre.value} value={genre.value}>
                  {genre.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="format"
            label="格式"
          >
            <Select
              placeholder="请选择格式"
              value={format}
              onChange={(value) => {
                setFormat(value);
                form.setFieldsValue({ format: value });
              }}
              className="w-full"
            >
              <Option value="">请选择格式</Option>
              {softwareformats.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 体育 */}
      {showsportsFields && (
        <>
          <Form.Item
            name="genre"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={genre}
              onChange={(value) => {
                setGenre(value);
                form.setFieldsValue({ genre: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {sportsgenres.map((genre) => (
                <Option key={genre.value} value={genre.value}>
                  {genre.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="format"
            label="格式"
          >
            <Select
              placeholder="请选择格式"
              value={format}
              onChange={(value) => {
                setFormat(value);
                form.setFieldsValue({ format: value });
              }}
              className="w-full"
            >
              <Option value="">请选择格式</Option>
              {resolutions.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="eventType"
            label="赛事类型"
          >
            <Select
              placeholder="请选择赛事类型"
              value={eventType}
              onChange={(value) => {
                setEventType(value);
                form.setFieldsValue({ eventType: value });
              }}
              className="w-full"
            >
              <Option value="">请选择赛事类型</Option>
              {eventTypes.map((eventType) => (
                <Option key={eventType.value} value={eventType.value}>
                  {eventType.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 纪录片 */}
      {showdocFields && (
        <>
          <Form.Item
            name="year"
            label="年份"
          >
            <Input
              placeholder="如 1999, 2020"
              value={year}
              onChange={(e) => {
                setYear(e.target.value);
                form.setFieldsValue({ year: e.target.value });
              }}
              className="w-full"
            />
          </Form.Item>
          <Form.Item
            name="source"
            label="视频源"
          >
            <Select
              placeholder="请选择视频源"
              value={source}
              onChange={(value) => {
                setSource(value);
                form.setFieldsValue({ source: value });
              }}
              className="w-full"
            >
              <Option value="">请选择视频源</Option>
              {sourceTypes.map((source) => (
                <Option key={source.value} value={source.value}>
                  {source.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="format"
            label="格式"
          >
            <Select
              placeholder="请选择格式"
              value={format}
              onChange={(value) => {
                setFormat(value);
                form.setFieldsValue({ format: value });
              }}
              className="w-full"
            >
              <Option value="">请选择格式</Option>
              {resolutions.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 音乐 */}
      {showMusicFields && (
        <>
          <Form.Item
            name="genre"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={genre}
              onChange={(value) => {
                setGenre(value);
                form.setFieldsValue({ genre: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {musicgenres.map((genre) => (
                <Option key={genre.value} value={genre.value}>
                  {genre.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="region"
            label="地区"
          >
            <Select
              placeholder="请选择地区"
              value={region}
              onChange={(value) => {
                setRegion(value);
                form.setFieldsValue({ region: value });
              }}
              className="w-full"
            >
              <Option value="">请选择地区</Option>
              {regions.map((region) => (
                <Option key={region.value} value={region.value}>
                  {region.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="style"
            label="风格"
          >
            <Select
              placeholder="请选择风格"
              value={style}
              onChange={(value) => {
                setStyle(value);
                form.setFieldsValue({ style: value });
              }}
              className="w-full"
            >
              <Option value="">请选择风格</Option>
              {musicstyles.map((style) => (
                <Option key={style.value} value={style.value}>
                  {style.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
          <Form.Item
            name="format"
            label="格式"
          >
            <Select
              placeholder="请选择格式"
              value={format}
              onChange={(value) => {
                setFormat(value);
                form.setFieldsValue({ format: value });
              }}
              className="w-full"
            >
              <Option value="">请选择格式</Option>
              {musicformats.map((format) => (
                <Option key={format.value} value={format.value}>
                  {format.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}

      {/* 动态字段 - 其他 */}
      {showotherFields && (
        <>
          <Form.Item
            name="genre"
            label="类型"
          >
            <Select
              placeholder="请选择类型"
              value={genre}
              onChange={(value) => {
                setGenre(value);
                form.setFieldsValue({ genre: value });
              }}
              className="w-full"
            >
              <Option value="">请选择类型</Option>
              {othergenres.map((genre) => (
                <Option key={genre.value} value={genre.value}>
                  {genre.label}
                </Option>
              ))}
            </Select>
          </Form.Item>
        </>
      )}
 {/* 提交按钮 */}
          <Form.Item>
            <Button 
              type="primary" 
              htmlType="submit" 
              className="submitButton"
              onMouseOver={(e) => e.target.style.backgroundColor = '#ff7f00'}
              onMouseOut={(e) => e.target.style.backgroundColor = '#ff8c00'}
            >
              上传种子
            </Button>
          </Form.Item>

          {showSuccess && (
            <div className="successMessage">
              上传成功！
            </div>
          )}
        </Form>
      </div>
    </div>
    </div>
  );
}

export default UploadTorrent;

