新增提示Toast组件
This commit is contained in:
@@ -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);
|
||||
};
|
||||
|
||||
// 更新规则配置中的可用字段但保留已选择的字段和规则配置
|
||||
|
||||
Reference in New Issue
Block a user