新增提示Toast组件

This commit is contained in:
2025-04-21 09:22:13 +08:00
parent 01d93522b8
commit 5c2c367856
36 changed files with 2609 additions and 478 deletions
+66 -7
View File
@@ -420,15 +420,29 @@ export function ReviewSettings({
// 处理已删除字段的函数
const handleDeletedFields = (deletedFields: string[]) => {
console.log("处理已删除字段:", deletedFields);
// 如果没有删除的字段,则直接返回
if (!deletedFields || deletedFields.length === 0) return;
setRules(prevRules => {
return prevRules.map(rule => {
const updatedConfig = { ...rule.config };
let configModified = false;
switch (rule.type) {
case 'exists':
case 'logic':
case 'regex':
// 从已选字段中移除被删除的字段
// 处理存在性判断规则
if (Array.isArray(updatedConfig.fields)) {
const originalLength = (updatedConfig.fields as string[]).length;
// 从fields列表中移除已删除的字段
updatedConfig.fields = (updatedConfig.fields as string[]).filter(
field => !deletedFields.includes(field)
);
configModified = originalLength !== (updatedConfig.fields as string[]).length;
}
// 同时处理selectedFields字段(UI显示用)
if (Array.isArray(updatedConfig.selectedFields)) {
updatedConfig.selectedFields = (updatedConfig.selectedFields as string[]).filter(
field => !deletedFields.includes(field)
@@ -437,18 +451,52 @@ export function ReviewSettings({
break;
case 'consistency':
// 从配对字段中移除被删除的字段
// 处理一致性判断规则
if (Array.isArray(updatedConfig.pairs)) {
const originalLength = (updatedConfig.pairs as ComparisonPair[]).length;
// 从配对列表中移除包含已删除字段的配对
updatedConfig.pairs = (updatedConfig.pairs as ComparisonPair[]).filter(
pair => !deletedFields.includes(pair.sourceField) && !deletedFields.includes(pair.targetField)
);
configModified = originalLength !== (updatedConfig.pairs as ComparisonPair[]).length;
}
break;
case 'format':
// 如果判断字段被删除,则清空字段
case 'format':
// 处理格式判断规则
if (updatedConfig.field && deletedFields.includes(updatedConfig.field as string)) {
updatedConfig.field = '';
configModified = true;
}
if (updatedConfig.checkField && deletedFields.includes(updatedConfig.checkField as string)) {
updatedConfig.checkField = '';
configModified = true;
}
break;
case 'regex':
// 处理正则判断规则
if (updatedConfig.field && deletedFields.includes(updatedConfig.field as string)) {
updatedConfig.field = '';
configModified = true;
}
if (updatedConfig.checkField && deletedFields.includes(updatedConfig.checkField as string)) {
updatedConfig.checkField = '';
configModified = true;
}
break;
case 'logic':
// 处理逻辑判断规则
if (Array.isArray(updatedConfig.conditions)) {
const originalLength = (updatedConfig.conditions as Condition[]).length;
// 从条件列表中移除使用已删除字段的条件
updatedConfig.conditions = (updatedConfig.conditions as Condition[]).filter(
condition => !deletedFields.includes(condition.field)
);
configModified = originalLength !== (updatedConfig.conditions as Condition[]).length;
}
break;
@@ -456,19 +504,30 @@ export function ReviewSettings({
break;
}
// 更新可用字段列表,移除被删除的字段
// 更新所有规则的可用字段列表
if (Array.isArray(updatedConfig.availableFields)) {
updatedConfig.availableFields = (updatedConfig.availableFields as string[]).filter(
field => !deletedFields.includes(field)
);
}
// 如果配置有实质性修改,记录日志
if (configModified) {
console.log(`规则(ID: ${rule.id}, 类型: ${rule.type})已清除对已删除字段的引用`);
}
return {
...rule,
config: updatedConfig
};
});
});
// 在字段删除处理完毕后,触发一次评查配置更新
// 使用setTimeout确保状态更新完成后再生成配置
setTimeout(() => {
generateEvaluationConfig();
}, 10);
};
// 更新规则配置中的可用字段但保留已选择的字段和规则配置