import React, { useState, useEffect } from "react"; import { Form, Input, Select, Button, Card, Descriptions, Tag, message, Spin } from "antd"; import { useParams, useNavigate, useLocation } from "react-router-dom"; import { ArrowLeftOutlined } from "@ant-design/icons"; import { toolsLibraryApi } from "../services/api"; import moment from "moment"; const { TextArea } = Input; const { Option } = Select; const ToolsLibraryDetail = () => { const [form] = Form.useForm(); const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const { id } = useParams(); const navigate = useNavigate(); const location = useLocation(); const isEditMode = location.search.includes("mode=edit"); const getStatusColor = (status) => { const statusMap = { normal: "success", offline: "default", unpublished: "default", published: "success", }; return statusMap[status] || "warning"; }; const getStatusText = (status) => { const statusMap = { normal: "正常", offline: "已下线", unpublished: "待发布", published: "已发布", }; return statusMap[status] || status; }; const getCallTypeText = (type) => { const typeMap = { api: "API调用", browser_auto_operate: "浏览器自动操作", }; return typeMap[type] || type; }; const getApiProviderText = (provider) => { const providerMap = { official: "官方", "302ai": "302AI", official_api: "官方API", }; return providerMap[provider] || provider; }; const fetchData = async () => { try { const response = await toolsLibraryApi.getDetail(id); setData(response.data); form.setFieldsValue(response.data); } catch (error) { message.error("获取详情失败"); } finally { setLoading(false); } }; const handleSave = async (values) => { setSaving(true); try { await toolsLibraryApi.update(id, values); message.success("更新成功"); navigate("/tools-library"); } catch (error) { message.error("更新失败"); } finally { setSaving(false); } }; useEffect(() => { fetchData(); }, [id]); if (loading) { return (
); } if (!data) { return
数据不存在
; } return (
{isEditMode ? (