fix(evaluation): 修复选择全部评查点类型时的筛选查询

问题:
- 前端选择"全部"时,将多个类型 ID 拼接成 "1,2,3" 传给后端
- 后端 evaluation_point_groups_pid 参数类型是 int,不支持逗号分隔的字符串
- 导致查询失败或返回错误结果

解决方案:
- 选择"全部"时,不传递 ruleType 参数(即 evaluation_point_groups_pid)
- 让后端根据用户权限返回所有有权限查看的评查点类型数据
- 只有选择具体类型时,才传递单个类型 ID

技术细节:
- 移除了 loadedRuleTypes.map(type => type.id).join(',') 逻辑
- 将 finalRuleType 设置为 undefined 而不是拼接的 ID 字符串
- getRulesList 函数已有判断,只在 ruleType 存在时添加查询参数

测试场景:
 选择"全部" → 不传 evaluation_point_groups_pid → 返回所有类型
 选择具体类型 → 传 evaluation_point_groups_pid=1 → 返回该类型

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-25 18:04:34 +08:00
parent 02a76a0916
commit 948e652201
+9 -6
View File
@@ -320,15 +320,16 @@ export default function RulesIndex() {
}
// 构建查询参数
// 🔑 当选择"全部"或未选择评查点类型时,使用下拉框中所有评查点类型的 id 组合
// 🔑 当选择"全部"或未选择评查点类型时,不传递 ruleType 参数(后端会返回所有类型)
let finalRuleType: string | undefined = undefined;
if (ruleTypeParam && ruleTypeParam !== 'all') {
// 选择了具体的评查点类型
finalRuleType = ruleTypeParam;
} else if (loadedRuleTypes && loadedRuleTypes.length > 0) {
// 选择"全部"或未选择,使用刚加载的评查点类型的 id
finalRuleType = loadedRuleTypes.map(type => type.id).join(',');
console.log("📋 [fetchData] 选择全部类型,使用 loadedRuleTypes 的 id 组合:", finalRuleType);
console.log("📋 [fetchData] 选择特定类型:", finalRuleType);
} else {
// 选择"全部"或未选择,不传递参数,让后端返回所有有权限的评查点
finalRuleType = undefined;
console.log("📋 [fetchData] 选择全部类型,不传递 ruleType 参数");
}
const queryParams = {
@@ -529,13 +530,14 @@ export default function RulesIndex() {
type: "warning",
confirmText: "删除",
cancelText: "取消",
confirmDelay: 4,
onConfirm: () => {
// 设置删除状态为true
setIsDeleting(true);
const form = new FormData();
form.append("_action", "delete");
form.append("ruleId", rule.id);
fetcher.submit(form, { method: "post" });
}
});
@@ -605,6 +607,7 @@ export default function RulesIndex() {
type: "warning",
confirmText: "删除",
cancelText: "取消",
confirmDelay: 4,
onConfirm: async () => {
try {
setLoading(true);