import React, { useState, useEffect } from "react"; import { Form, Input, Select, Button, Card, Descriptions, Tag, message, Spin, Row, Col, Tooltip } from "antd"; import { useParams, useNavigate, useLocation } from "react-router-dom"; import { ArrowLeftOutlined, CopyOutlined } 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); } }; const handleCopyParams = () => { const paramsDefinition = form.getFieldValue("params_definition"); if (paramsDefinition) { navigator.clipboard .writeText(paramsDefinition) .then(() => { message.success("参数定义已复制到剪贴板"); }) .catch(() => { message.error("复制失败"); }); } else { message.warning("参数定义为空"); } }; useEffect(() => { fetchData(); }, [id]); if (loading) { return (
{data.operate_path_data || "无"}
{data.params_definition || "无"}
{data.response_desc || "无"}