import React, { useState, useEffect } from 'react'; import { Table, Button, Form, Input, Space, message, Popconfirm, Drawer } from 'antd'; import { PlusOutlined } from '@ant-design/icons'; import { supabase } from '@/config/supabase'; const CategoryDrawer = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(false); const [editingKey, setEditingKey] = useState(''); const [drawerVisible, setDrawerVisible] = useState(false); const [form] = Form.useForm(); // 获取分类数据 const fetchCategories = async () => { setLoading(true); try { const { data: categories, error } = await supabase .from('resources') .select('*') .eq('type', 'categories') .order('created_at', { ascending: false }); if (error) throw error; setData(categories || []); } catch (error) { message.error('获取分类数据失败'); console.error(error); } finally { setLoading(false); } }; useEffect(() => { if (drawerVisible) { fetchCategories(); } }, [drawerVisible]); // 新增分类 const handleAdd = () => { const newData = { id: Date.now().toString(), attributes: { name: '' }, isNew: true }; setData([newData, ...data]); setEditingKey(newData.id); form.setFieldsValue(newData.attributes); }; // 保存分类数据 const handleSave = async (record) => { try { const values = await form.validateFields(); if (record.isNew) { // 新增 const { error } = await supabase .from('resources') .insert([{ type: 'categories', attributes: { name: values.name }, schema_version: 1 }]); if (error) throw error; } else { // 更新 const { error } = await supabase .from('resources') .update({ attributes: { name: values.name }, updated_at: new Date().toISOString() }) .eq('id', record.id); if (error) throw error; } message.success('保存成功'); setEditingKey(''); fetchCategories(); } catch (error) { message.error('保存失败'); console.error(error); } }; // 删除分类 const handleDelete = async (record) => { try { const { error } = await supabase .from('resources') .delete() .eq('id', record.id); if (error) throw error; message.success('删除成功'); fetchCategories(); } catch (error) { message.error('删除失败'); console.error(error); } }; const columns = [ { title: '分类名称', dataIndex: ['attributes', 'name'], render: (text, record) => { const isEditing = record.id === editingKey; return isEditing ? (