diff --git a/apps/desktop/src/components/MaterialSegmentView.tsx b/apps/desktop/src/components/MaterialSegmentView.tsx index f356a52..484b39f 100644 --- a/apps/desktop/src/components/MaterialSegmentView.tsx +++ b/apps/desktop/src/components/MaterialSegmentView.tsx @@ -92,7 +92,6 @@ export const MaterialSegmentView: React.FC = ({ projec const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const [searchTerm, setSearchTerm] = useState(''); - const [activeTab, setActiveTab] = useState<'classification' | 'model'>('classification'); const [selectedClassification, setSelectedClassification] = useState('全部'); const [selectedModel, setSelectedModel] = useState('全部'); @@ -175,40 +174,30 @@ export const MaterialSegmentView: React.FC = ({ projec const filteredSegments = useMemo(() => { if (!segmentView) return []; + // 获取所有片段 let segments: SegmentWithDetails[] = []; + segmentView.by_classification.forEach(group => { + segments.push(...group.segments); + }); - if (activeTab === 'classification') { - if (selectedClassification === '全部') { - // 获取所有片段 - segmentView.by_classification.forEach(group => { - segments.push(...group.segments); - }); - } else { - // 获取特定分类的片段 - const group = segmentView.by_classification.find(g => g.category === selectedClassification); - if (group) { - segments = group.segments; - } - } - } else { - if (selectedModel === '全部') { - // 获取所有片段 - segmentView.by_model.forEach(group => { - segments.push(...group.segments); - }); - } else { - // 获取特定模特的片段 - const group = segmentView.by_model.find(g => g.model_name === selectedModel); - if (group) { - segments = group.segments; - } - } + // 应用分类过滤 + if (selectedClassification !== '全部') { + segments = segments.filter(segment => + segment.classification_info?.category === selectedClassification + ); + } + + // 应用模特过滤 + if (selectedModel !== '全部') { + segments = segments.filter(segment => + segment.model_info?.name === selectedModel + ); } // 应用搜索过滤 if (searchTerm.trim()) { const searchLower = searchTerm.toLowerCase(); - segments = segments.filter(segment => + segments = segments.filter(segment => segment.material_info.name.toLowerCase().includes(searchLower) || segment.classification_info?.category?.toLowerCase().includes(searchLower) || segment.model_info?.name?.toLowerCase().includes(searchLower) @@ -216,7 +205,7 @@ export const MaterialSegmentView: React.FC = ({ projec } return segments; - }, [segmentView, activeTab, selectedClassification, selectedModel, searchTerm]); + }, [segmentView, selectedClassification, selectedModel, searchTerm]); // 渲染片段卡片 const renderSegmentCard = (segment: SegmentWithDetails) => { @@ -354,74 +343,88 @@ export const MaterialSegmentView: React.FC = ({ projec - {/* 标签页导航 */} -
- -
+ {/* 筛选条件 */} +
+ {/* AI分类筛选 */} +
+
+ + AI分类 +
+
+ {classificationOptions.map(option => ( + + ))} +
+
- {/* 过滤选项 */} -
- {activeTab === 'classification' ? ( - classificationOptions.map(option => ( - + ))} +
+
+ + {/* 当前筛选条件显示 */} + {(selectedClassification !== '全部' || selectedModel !== '全部') && ( +
+ + 当前筛选: + {selectedClassification !== '全部' && ( + + AI分类: {selectedClassification} - - )) - ) : ( - modelOptions.map(option => ( - - )) +
)}