'use client' import React, { useState } from 'react' import { Button } from '@payloadcms/ui' /** * 管理员控制面板 * 用于执行管理操作:清理数据、系统维护等 */ export default function AdminPanel() { const [clearLoading, setClearLoading] = useState(false) const [clearMessage, setClearMessage] = useState('') const [showClearConfirm, setShowClearConfirm] = useState(false) const [fixLoading, setFixLoading] = useState(false) const [fixMessage, setFixMessage] = useState('') const handleClearData = () => { setShowClearConfirm(true) setClearMessage('') } const handleConfirmClear = async () => { setClearLoading(true) setClearMessage('') setShowClearConfirm(false) try { const response = await fetch('/api/clear-data?confirm=true', { method: 'GET', }) const data = await response.json() if (data.success) { setClearMessage(data.message || '数据清理成功!') } else { setClearMessage(`清理失败: ${data.error}`) } } catch (error) { setClearMessage(`清理出错: ${error instanceof Error ? error.message : '未知错误'}`) } finally { setClearLoading(false) } } const handleCancelClear = () => { setShowClearConfirm(false) setClearMessage('') } const handleFixDatabase = async () => { if (!confirm('确定要修复数据库字段类型吗?这会修改 products 表的 thumbnail 字段。')) { return } setFixLoading(true) setFixMessage('') try { const response = await fetch('/api/fix-database', { method: 'GET', }) const data = await response.json() if (data.success) { setFixMessage(data.message || '数据库修复成功!') } else { setFixMessage(`修复失败: ${data.error}`) } } catch (error) { setFixMessage(`修复出错: ${error instanceof Error ? error.message : '未知错误'}`) } finally { setFixLoading(false) } } return (
清除所有商品、公告、文章数据(保留用户和媒体文件)
{showClearConfirm ? (⚠️ 确认清理所有数据?
此操作不可撤销!将删除所有商品、公告和文章。
修复数据库字段类型(将 products.thumbnail 从 integer 改为 varchar)
{fixMessage && (