You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

2.6 KiB

资源面板项目关联修复

问题描述

在素材库的搜索框里选择了项目后,无法正确展示该项目下管理的素材。具体表现为:

  1. 选择"西游记之大圣归来 - 2015第一部"项目后,素材列表为空
  2. 调试信息显示API调用正常,但资源过滤失败

问题分析

通过代码分析发现以下问题:

  1. 类型不匹配:项目ID在不同层级使用了不同的数据类型(string vs number)
  2. API过滤逻辑:resourceApi中的类型转换不够明确
  3. 调试信息不足:缺乏详细的调试信息来排查问题

修复方案

1. 修复API层类型转换

  • resourceApi.getByProjectId中增强类型转换逻辑
  • 添加详细的调试信息,包括类型检查和项目ID映射

2. 增强素材数据

  • 为"西游记之大圣归来"项目添加更多素材样本
  • 确保每个素材类别都有足够的数据用于测试

修复内容

文件:client/src/services/mockApi.ts

// 修复前
let filteredResources = resources.filter(
  (r) => r.projectId === parseInt(projectId)
);

// 修复后
const projectIdNum = parseInt(projectId);
let filteredResources = resources.filter((r) => r.projectId === projectIdNum);
console.log("📦 Resources for project:", {
  projectId,
  projectIdNum,
  found: filteredResources.length,
  allProjectIds: resources.map((r) => r.projectId),
});

文件:client/src/mocks/resources.ts

增加了以下素材:

角色素材(新增2个):

  • 猪八戒-憨态可掬 (ID: 26)
  • 沙僧-忠诚护法 (ID: 27)

场景素材(新增2个):

  • 西天取经路 (ID: 28)
  • 盘丝洞 (ID: 29)

道具素材(新增2个):

  • 九齿钉耙 (ID: 30)
  • 降妖宝杖 (ID: 31)

实拍素材(新增2个):

  • 飞行特效参考 (ID: 32)
  • 变身特效参考 (ID: 33)

预期结果

修复后,当用户在素材库搜索框中选择"西游记之大圣归来 - 2015第一部"项目时:

  1. 角色类别显示5个素材(孙悟空、唐僧、猪八戒、沙僧等)
  2. 场景类别显示4个素材(花果山、天宫、取经路、盘丝洞)
  3. 道具类别显示4个素材(金箍棒、紧箍咒、九齿钉耙、降妖宝杖)
  4. 实拍类别显示3个素材(武打、飞行、变身特效参考)

测试验证

  1. 打开应用,进入素材库面板
  2. 点击搜索框,选择"西游记之大圣归来 - 2015第一部"项目
  3. 切换不同的素材类别标签,验证每个类别都有对应的素材显示
  4. 检查浏览器控制台,确认调试信息正确输出

修复时间

2026年1月12日

修复状态

已完成