fix: 修复项目详情页面模板绑定和素材绑定页面的搜索功能

- 修复项目详情页面模板绑定搜索功能:使用过滤后的绑定详情而不是原始数据
- 修复素材绑定页面搜索功能:添加useEffect监听搜索条件变化并重新加载数据
- 修复素材绑定页面统计功能:实现全局模特绑定统计API和前端调用
- 优化MaterialModelBindingService的getMaterialsByFilter方法,正确处理多重过滤条件
- 添加后端get_global_model_binding_stats命令和相关仓库方法
- 确保搜索和统计功能在所有相关页面正常工作
This commit is contained in:
imeepos
2025-07-15 14:10:29 +08:00
parent 03f410601a
commit de446b6410
7 changed files with 116 additions and 27 deletions

View File

@@ -35,7 +35,7 @@ export const MaterialModelBinding: React.FC = () => {
const [materials, setMaterials] = useState<Material[]>([]);
const [models, setModels] = useState<Model[]>([]);
const [stats] = useState<MaterialModelBindingStats | null>(null);
const [stats, setStats] = useState<MaterialModelBindingStats | null>(null);
const [selectedModel, setSelectedModel] = useState<string>('');
const [searchQuery, setSearchQuery] = useState('');
const [filterType, setFilterType] = useState<'all' | 'bound' | 'unbound'>('all');
@@ -50,6 +50,13 @@ export const MaterialModelBinding: React.FC = () => {
loadData();
}, []);
// 当搜索条件变化时重新加载素材
useEffect(() => {
if (searchQuery !== '' || filterType !== 'all' || selectedModel !== '') {
loadMaterials();
}
}, [searchQuery, filterType, selectedModel]);
const loadData = async () => {
setLoading(true);
try {
@@ -92,9 +99,8 @@ export const MaterialModelBinding: React.FC = () => {
const loadStats = async () => {
try {
// 这里需要一个获取全局统计的API暂时跳过
// const statsData = await invoke<MaterialModelBindingStats>('get_global_model_binding_stats');
// setStats(statsData);
const statsData = await MaterialModelBindingService.getGlobalModelBindingStats();
setStats(statsData);
} catch (err) {
console.error('加载统计失败:', err);
}