import React, { useState, useEffect } from 'react'; import axios from 'axios'; import { toast } from 'react-hot-toast'; import { FileText, Plus, Edit, Trash2, Save, X, Eye, EyeOff } from 'lucide-react'; const PromptManager = ({ adminToken }) => { const [prompts, setPrompts] = useState([]); const [loading, setLoading] = useState(false); const [showModal, setShowModal] = useState(false); const [editingPrompt, setEditingPrompt] = useState(null); const [formData, setFormData] = useState({ name: '', type: 'polish', content: '', is_system_default: false }); useEffect(() => { fetchPrompts(); }, []); const fetchPrompts = async () => { setLoading(true); try { const response = await axios.get('/api/admin/prompts', { headers: { Authorization: `Bearer ${adminToken}` } }); setPrompts(response.data); } catch (error) { toast.error('获取提示词列表失败'); } finally { setLoading(false); } }; const handleCreate = () => { setEditingPrompt(null); setFormData({ name: '', type: 'polish', content: '', is_system_default: false }); setShowModal(true); }; const handleEdit = (prompt) => { setEditingPrompt(prompt); setFormData({ name: prompt.name, type: prompt.type, content: prompt.content, is_system_default: prompt.is_system_default }); setShowModal(true); }; const handleSave = async () => { if (!formData.name || !formData.content) { toast.error('请填写完整信息'); return; } try { if (editingPrompt) { // 更新 await axios.put(`/api/admin/prompts/${editingPrompt.id}`, { name: formData.name, content: formData.content }, { headers: { Authorization: `Bearer ${adminToken}` } }); toast.success('提示词更新成功'); } else { // 创建 await axios.post('/api/admin/prompts', formData, { headers: { Authorization: `Bearer ${adminToken}` } }); toast.success('提示词创建成功'); } setShowModal(false); fetchPrompts(); } catch (error) { toast.error(error.response?.data?.detail || '操作失败'); } }; const handleToggleActive = async (promptId, currentStatus) => { try { await axios.put(`/api/admin/prompts/${promptId}`, { is_active: !currentStatus }, { headers: { Authorization: `Bearer ${adminToken}` } }); toast.success(currentStatus ? '已禁用' : '已启用'); fetchPrompts(); } catch (error) { toast.error('操作失败'); } }; const handleDelete = async (promptId, isSystemDefault) => { if (isSystemDefault) { toast.error('系统默认提示词不能删除'); return; } if (!window.confirm('确定要删除这个提示词吗?')) { return; } try { await axios.delete(`/api/admin/prompts/${promptId}`, { headers: { Authorization: `Bearer ${adminToken}` } }); toast.success('提示词已删除'); fetchPrompts(); } catch (error) { toast.error(error.response?.data?.detail || '删除失败'); } }; return (
暂无提示词
{prompt.content}