import React, { useState, useEffect } from "react"; import { Card, Form, Input, Select, Button, Space, Typography, message, } from "antd"; import { ArrowLeftOutlined, } from "@ant-design/icons"; import { useNavigate, useParams, useLocation } from "react-router-dom"; import { supabase } from "@/config/supabase"; import SectionList from '@/components/SectionList'; const { Title } = Typography; const ServiceForm = () => { const [form] = Form.useForm(); const navigate = useNavigate(); const { id } = useParams(); const [loading, setLoading] = useState(false); const location = useLocation(); const isEdit = location.search.includes("edit=true"); const [formValues, setFormValues] = useState({ sections: [{ items: [{}] }], currency: "CNY" }); const [categories, setCategories] = useState([]); useEffect(() => { if (id) { fetchServiceTemplate(); } fetchCategories(); }, [id]); const fetchServiceTemplate = async () => { try { setLoading(true); const { data, error } = await supabase .from("resources") .select("*") .eq("id", id) .single(); if (error) throw error; const formData = { templateName: data.attributes.templateName, description: data.attributes.description, category: data.attributes.category.map(v=>v.id), sections: data.attributes.sections, }; form.setFieldsValue(formData); setFormValues(formData); } catch (error) { console.error("获取服务模版失败:", error); message.error("获取服务模版失败"); } finally { setLoading(false); } }; const fetchCategories = async () => { try { const { data: categoriesData, error } = await supabase .from('resources') .select('*') .eq('type', 'categories') .order('created_at', { ascending: false }); if (error) throw error; const formattedCategories = (categoriesData || []).map(category => ({ value: category.id, label: category.attributes.name })); setCategories(formattedCategories); } catch (error) { message.error('获取分类数据失败'); console.error(error); } }; const onFinish = async (values) => { try { setLoading(true); const categoryData = values.category.map(categoryId => { const category = categories.find(c => c.value === categoryId); return { id: categoryId, name: category.label }; }); const serviceData = { type: "serviceTemplate", attributes: { templateName: values.templateName, description: values.description, sections: values.sections, category: categoryData, }, }; let result; if (id) { result = await supabase .from("resources") .update(serviceData) .eq("id", id) .select(); } else { result = await supabase .from("resources") .insert([serviceData]) .select(); } if (result.error) throw result.error; message.success("保存成功"); navigate("/company/serviceTeamplate"); } catch (error) { console.error("保存失败:", error); message.error("保存失败"); } finally { setLoading(false); } }; const handleValuesChange = (changedValues, allValues) => { setFormValues(allValues); }; return (