/** * 基本配置标签页组件 * @author MHXY Development Team * @version 1.0.0 */ import React, { useState, useEffect } from 'react'; import { Form, Input, Switch, Select, Card, Button, Space, Row, Col, Tooltip } from 'antd'; import { InfoCircleOutlined, SaveOutlined, ReloadOutlined, HistoryOutlined, SettingOutlined } from '@ant-design/icons'; import { SystemConfig, SaveConfigRequest } from '../../types/systemConfig'; const { Option } = Select; const { TextArea } = Input; interface BasicConfigTabProps { configs: SystemConfig[]; loading: boolean; saving: boolean; onSave: (requests: SaveConfigRequest[]) => void; onReset: (configKey: string) => void; onShowHistory: (configKey: string) => void; onConfigChange: () => void; } const BasicConfigTab: React.FC = ({ configs, loading, saving, onSave, onReset, onShowHistory, onConfigChange }) => { const [form] = Form.useForm(); const [formData, setFormData] = useState>({}); // 初始化表单数据 useEffect(() => { const initialData: Record = {}; configs.forEach(config => { initialData[config.config_key] = config.config_value; }); setFormData(initialData); form.setFieldsValue(initialData); }, [configs, form]); // 处理表单值变化 const handleValuesChange = (changedValues: any, allValues: any) => { setFormData(allValues); onConfigChange(); }; // 保存配置 const handleSave = () => { form.validateFields().then(() => { const saveRequests: SaveConfigRequest[] = configs.map(config => ({ config_key: config.config_key, config_value: formData[config.config_key] || '', config_label: config.config_label, config_group: config.config_group })); onSave(saveRequests); }).catch(() => { // 表单验证失败 }); }; // 重置为默认值 const handleReset = (configKey: string) => { onReset(configKey); }; // 显示配置历史 const handleShowHistory = (configKey: string) => { onShowHistory(configKey); }; // 语言选项 const languageOptions = [ { value: 'zh-CN', label: '简体中文' }, { value: 'zh-TW', label: '繁体中文' }, { value: 'en-US', label: 'English' }, { value: 'ja-JP', label: '日本語' } ]; // 版本选项 const versionOptions = [ { value: '1.0.0', label: 'v1.0.0' }, { value: '1.1.0', label: 'v1.1.0' }, { value: '2.0.0', label: 'v2.0.0' } ]; const configItems = [ { key: 'site_name', title: '网站名称', description: '系统显示名称,将在页面标题和系统信息中显示', type: 'input', placeholder: '请输入网站名称', required: true }, { key: 'site_version', title: '系统版本', description: '当前系统版本号,用于显示和版本管理', type: 'select', options: versionOptions, required: true }, { key: 'site_description', title: '系统描述', description: '系统描述信息,简要介绍系统功能和用途', type: 'textarea', placeholder: '请输入系统描述', rows: 3 }, { key: 'admin_email', title: '管理员邮箱', description: '系统管理员联系邮箱,用于接收系统通知', type: 'input', placeholder: '请输入管理员邮箱', required: true }, { key: 'maintenance_mode', title: '维护模式', description: '开启后用户无法正常访问系统,仅管理员可以登录', type: 'switch' }, { key: 'default_language', title: '默认语言', description: '系统默认语言设置,影响界面显示语言', type: 'select', options: languageOptions, required: true } ]; return (
{/* 配置表单 */}
{configItems.map((item, index) => { const config = configs.find(c => c.config_key === item.key); if (!config) return null; return ( {item.title} {config.config_type === 'boolean' && ( { const newValue = checked ? '1' : '0'; form.setFieldValue(item.key, newValue); onConfigChange(); }} style={{ marginLeft: '8px' }} /> )}
} extra={