import { useEffect, useState, useCallback } from 'react'; import { adminApi } from '../lib/api'; import type { SystemSettings } from '../types'; import { showToast } from '../components/Toast'; import styles from './SettingsPage.module.css'; export function SettingsPage() { const [settings, setSettings] = useState({ default_daily_seconds_limit: 600, default_monthly_seconds_limit: 6000, announcement: '', announcement_enabled: false, }); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const fetchSettings = useCallback(async () => { try { const { data } = await adminApi.getSettings(); setSettings(data); } catch { showToast('加载设置失败'); } finally { setLoading(false); } }, []); useEffect(() => { fetchSettings(); }, [fetchSettings]); const handleSaveQuota = async () => { setSaving(true); try { await adminApi.updateSettings(settings); showToast('设置已保存'); } catch { showToast('保存失败'); } finally { setSaving(false); } }; const handleSaveAnnouncement = async () => { setSaving(true); try { await adminApi.updateSettings(settings); showToast('公告已保存'); } catch { showToast('保存失败'); } finally { setSaving(false); } }; if (loading) { return (

系统设置

); } return (

系统设置

全局默认配额

新注册用户将自动获得以下配额

setSettings({ ...settings, default_daily_seconds_limit: Number(e.target.value) })} />
setSettings({ ...settings, default_monthly_seconds_limit: Number(e.target.value) })} />

系统公告

启用后公告将展示在用户端页面顶部