'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 ? (

⚠️ 确认清理所有数据?

此操作不可撤销!将删除所有商品、公告和文章。

) : ( )} {clearMessage && (
{clearMessage}
)}
{/* 修复数据库区域 */}

🔧 修复数据库

修复数据库字段类型(将 products.thumbnail 从 integer 改为 varchar)

{fixMessage && (
{fixMessage}
)}
{/* 系统信息区域 */}

ℹ️ 系统信息

Payload CMS: v3.75.0
数据库: PostgreSQL
存储: Cloudflare R2 (S3 API)
) }