From 426bfff6cd80122204275e7d28f3b2cfdcdf8686 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 11 Jul 2025 00:57:19 +0800 Subject: [PATCH] fix --- .../services/resource_category_manager.py | 15 +-- src-tauri/src/commands/resource_category.rs | 1 + src/pages/ResourceCategoryPage.tsx | 96 +++++++++++++++---- src/services/resourceCategoryService.ts | 1 + 4 files changed, 89 insertions(+), 24 deletions(-) diff --git a/python_core/services/resource_category_manager.py b/python_core/services/resource_category_manager.py index 7a7b80a..829df85 100644 --- a/python_core/services/resource_category_manager.py +++ b/python_core/services/resource_category_manager.py @@ -150,22 +150,24 @@ class ResourceCategoryManager: logger.info(f"Created new category: {title}") return asdict(new_category) - def update_category(self, category_id: str, title: str = None, - ai_prompt: str = None, color: str = None) -> Optional[Dict]: + def update_category(self, category_id: str, title: str = None, + ai_prompt: str = None, color: str = None, is_active: bool = None) -> Optional[Dict]: """更新分类""" for i, category in enumerate(self.categories): - if category.id == category_id and category.is_active: + if category.id == category_id: if title is not None: category.title = title if ai_prompt is not None: category.ai_prompt = ai_prompt if color is not None: category.color = color + if is_active is not None: + category.is_active = is_active category.updated_at = datetime.now().isoformat() - + self.categories[i] = category self._save_categories() - + logger.info(f"Updated category: {category_id}") return asdict(category) return None @@ -250,7 +252,8 @@ def main(): category_id, update_data.get('title'), update_data.get('ai_prompt'), - update_data.get('color') + update_data.get('color'), + update_data.get('is_active') ) if result: rpc.success(result) diff --git a/src-tauri/src/commands/resource_category.rs b/src-tauri/src/commands/resource_category.rs index 528ff9a..cb38f81 100644 --- a/src-tauri/src/commands/resource_category.rs +++ b/src-tauri/src/commands/resource_category.rs @@ -14,6 +14,7 @@ pub struct UpdateCategoryRequest { pub title: Option, pub ai_prompt: Option, pub color: Option, + pub is_active: Option, } /// 获取所有资源分类 diff --git a/src/pages/ResourceCategoryPage.tsx b/src/pages/ResourceCategoryPage.tsx index 20f4b52..cc5912c 100644 --- a/src/pages/ResourceCategoryPage.tsx +++ b/src/pages/ResourceCategoryPage.tsx @@ -8,6 +8,7 @@ const ResourceCategoryPage: React.FC = () => { const [searchTerm, setSearchTerm] = useState('') const [editingCategory, setEditingCategory] = useState(null) const [showCreateForm, setShowCreateForm] = useState(false) + const [showDisabled, setShowDisabled] = useState(true) // 在管理页面默认显示所有分类 const [formData, setFormData] = useState({ title: '', ai_prompt: '', @@ -93,6 +94,24 @@ const ResourceCategoryPage: React.FC = () => { } } + const handleToggleCategory = async (categoryId: string, isActive: boolean) => { + try { + const response = await ResourceCategoryService.updateCategory(categoryId, { + is_active: isActive + }) + if (response.status && response.data) { + const updatedCategories = categories.map(cat => + cat.id === categoryId ? response.data! : cat + ) + setCategories(updatedCategories) + } else { + console.error('切换状态失败:', response.msg || '未知错误') + } + } catch (error) { + console.error('Failed to toggle category:', error) + } + } + const startEdit = (category: ResourceCategory) => { setEditingCategory(category) setFormData({ @@ -109,10 +128,16 @@ const ResourceCategoryPage: React.FC = () => { setFormData({ title: '', ai_prompt: '', color: '#FF6B6B' }) } - const filteredCategories = categories.filter(category => - category.title.toLowerCase().includes(searchTerm.toLowerCase()) || - category.ai_prompt.toLowerCase().includes(searchTerm.toLowerCase()) - ) + const filteredCategories = categories.filter(category => { + // 搜索过滤 + const matchesSearch = category.title.toLowerCase().includes(searchTerm.toLowerCase()) || + category.ai_prompt.toLowerCase().includes(searchTerm.toLowerCase()) + + // 状态过滤:在管理页面显示所有分类,其他地方只显示启用的 + const matchesStatus = showDisabled || category.is_active + + return matchesSearch && matchesStatus + }) if (loading) { return ( @@ -143,23 +168,40 @@ const ResourceCategoryPage: React.FC = () => { /> - +
+ {/* 显示禁用分类开关 */} + + + +
{/* 分类列表 */}
{filteredCategories.map((category) => ( -
+
{/* 分类标题和颜色 */}
@@ -167,10 +209,28 @@ const ResourceCategoryPage: React.FC = () => { className="w-4 h-4 rounded-full mr-3" style={{ backgroundColor: category.color }} /> -

{category.title}

+

+ {category.title} +

+ {!category.is_active && ( + + 已禁用 + + )}
- +
+ {/* 启用/禁用开关 */} + +