完美版本

This commit is contained in:
2025-04-10 10:34:28 +08:00
parent 8be2fd5d67
commit 0411599f18
+99 -59
View File
@@ -627,7 +627,8 @@ export function ReviewSettings({
initialConfig = {
field: originalConfig.field || '',
checkField: originalConfig.checkField || originalConfig.field || '',
formatType: originalConfig.formatType || '',
formatType: originalConfig.formatType || 'date',
parameters: originalConfig.parameters || '',
formatParams: originalConfig.formatParams || originalConfig.parameters || '',
availableFields: availableFields
};
@@ -636,6 +637,9 @@ export function ReviewSettings({
initialConfig = {
conditions: Array.isArray(originalConfig.conditions) ? originalConfig.conditions : [],
logic: originalConfig.logic || originalConfig.logicRelation || 'and',
initialField: '',
initialOperator: 'eq',
initialValue: '',
availableFields: availableFields
};
break;
@@ -1260,10 +1264,16 @@ export function ReviewSettings({
const field = (config.initialField as string) || '';
const operator = e.target.value;
handleRuleConfigChange(id, {
initialOperator: operator,
conditions: [{ field, operator, value: '' }]
});
// 如果field已经设置,则创建完整的条件
if (field) {
handleRuleConfigChange(id, {
initialOperator: operator,
conditions: [{ field, operator, value: '' }]
});
} else {
// 仅保存操作符值
handleRuleConfigChange(id, { initialOperator: operator });
}
// 触发配置更新
generateEvaluationConfig();
}}
@@ -1292,10 +1302,16 @@ export function ReviewSettings({
const operator = (config.initialOperator as string) || 'eq';
const value = e.target.value;
handleRuleConfigChange(id, {
initialValue: value,
conditions: [{ field, operator, value }]
});
// 如果已经设置了字段,则创建条件
if (field) {
handleRuleConfigChange(id, {
initialValue: value,
conditions: [{ field, operator, value }]
});
} else {
// 否则只保存值
handleRuleConfigChange(id, { initialValue: value });
}
// 触发配置更新
generateEvaluationConfig();
}}
@@ -1314,10 +1330,19 @@ export function ReviewSettings({
// 直接获取当前的conditions数组,或初始化为空数组
const conditions = Array.isArray(config.conditions) ? [...(config.conditions as Condition[])] : [];
// 如果数组为空,尝试从初始字段创建条件
if (conditions.length === 0 && config.initialField) {
const field = config.initialField as string;
const operator = (config.initialOperator as string) || 'eq';
const value = (config.initialValue as string) || '';
if (field) {
conditions.push({ field, operator, value });
}
}
// 创建新的空白条件
const newCondition = { field: '', operator: 'eq', value: '' };
// 无论如何,都添加一个新的空白行
conditions.push(newCondition);
// 更新配置
@@ -1384,7 +1409,7 @@ export function ReviewSettings({
<select
id={`regex-field-${id}`}
className="form-select"
value={config.checkField as string || ''}
value={config.checkField as string || config.field as string || ''}
onChange={(e) => {
handleRuleConfigChange(id, {
checkField: e.target.value,
@@ -1402,11 +1427,12 @@ export function ReviewSettings({
</div>
<div className="mb-4">
<label className="form-label" htmlFor={`regex-pattern-${id}`}> <span className="required-mark">*</span></label>
<textarea
<input
type="text"
id={`regex-pattern-${id}`}
className="form-textarea"
className="form-input"
placeholder="请输入正则表达式"
value={config.regexPattern as string || ''}
value={config.regexPattern as string || config.pattern as string || ''}
onChange={(e) => {
handleRuleConfigChange(id, {
regexPattern: e.target.value,
@@ -1415,36 +1441,47 @@ export function ReviewSettings({
// 直接触发配置更新
generateEvaluationConfig();
}}
></textarea>
/>
<div className="form-tip">
: &quot;^[a-zA-Z0-9]+$&quot;
</div>
</div>
<div className="mb-4">
<fieldset>
<legend className="form-label"> <span className="required-mark">*</span></legend>
<div className="form-radio-group">
<label className="form-radio-item">
<input
type="radio"
name={`regexMatchType_${id}`}
className="form-radio"
value="match"
checked={!config.matchType || config.matchType === 'match'}
onChange={(e) => handleRuleConfigChange(id, { matchType: e.target.value })}
/>
<span></span>
</label>
<label className="form-radio-item">
<input
type="radio"
name={`regexMatchType_${id}`}
className="form-radio"
value="not_match"
checked={config.matchType === 'not_match'}
onChange={(e) => handleRuleConfigChange(id, { matchType: e.target.value })}
/>
<span></span>
</label>
</div>
</fieldset>
<label className="form-label" htmlFor={`match-type-${id}`}> <span className="required-mark">*</span></label>
<div className="form-radio-group">
<label className="form-radio-item">
<input
type="radio"
id={`match-type-match-${id}`}
name={`match_type_${id}`}
className="form-radio"
value="match"
checked={!config.matchType || config.matchType === 'match'}
onChange={(e) => {
handleRuleConfigChange(id, { matchType: e.target.value });
// 直接触发配置更新
generateEvaluationConfig();
}}
/>
<span></span>
</label>
<label className="form-radio-item">
<input
type="radio"
id={`match-type-not-match-${id}`}
name={`match_type_${id}`}
className="form-radio"
value="not_match"
checked={config.matchType === 'not_match'}
onChange={(e) => {
handleRuleConfigChange(id, { matchType: e.target.value });
// 直接触发配置更新
generateEvaluationConfig();
}}
/>
<span></span>
</label>
</div>
</div>
</div>
);
@@ -1600,11 +1637,11 @@ export function ReviewSettings({
return (
<div className="config-section">
<div className="mb-4">
<label className="form-label" htmlFor={`format-field-${id}`}> <span className="required-mark">*</span></label>
<label className="form-label" htmlFor={`format-field-${id}`}> <span className="required-mark">*</span></label>
<select
id={`format-field-${id}`}
className="form-select"
value={config.checkField as string || ''}
value={config.checkField as string || config.field as string || ''}
onChange={(e) => {
handleRuleConfigChange(id, {
checkField: e.target.value,
@@ -1614,7 +1651,7 @@ export function ReviewSettings({
generateEvaluationConfig();
}}
>
<option value=""></option>
<option value=""></option>
{availableFields.map((field, idx) => (
<option key={`format-field-${idx}`} value={field}>{field}</option>
))}
@@ -1624,8 +1661,8 @@ export function ReviewSettings({
<label className="form-label" htmlFor={`format-type-${id}`}> <span className="required-mark">*</span></label>
<select
id={`format-type-${id}`}
className="form-select format-type"
value={config.formatType as string || ''}
className="form-select"
value={config.formatType as string || 'date'}
onChange={(e) => {
handleRuleConfigChange(id, { formatType: e.target.value });
// 直接触发配置更新
@@ -1637,29 +1674,32 @@ export function ReviewSettings({
<option value="number"></option>
<option value="phone"></option>
<option value="email"></option>
<option value="bankcard"></option>
<option value="idcard"></option>
<option value="zipcode"></option>
<option value="uscc"></option>
<option value="bank"></option>
<option value="id"></option>
<option value="postal"></option>
<option value="credit"></option>
</select>
</div>
<div className="mb-4">
<label className="form-label" htmlFor={`format-params-${id}`}></label>
<input
type="text"
id={`format-params-${id}`}
<label className="form-label" htmlFor={`format-parameters-${id}`}></label>
<input
type="text"
id={`format-parameters-${id}`}
className="form-input"
placeholder="请输入参数设置"
value={config.formatParams as string || ''}
value={config.formatParams as string || config.parameters as string || ''}
placeholder="输入格式参数,如日期格式YYYY-MM-DD"
onChange={(e) => {
handleRuleConfigChange(id, {
formatParams: e.target.value,
parameters: e.target.value // 同步更新内部参数字段
parameters: e.target.value
});
// 直接触发配置更新
generateEvaluationConfig();
}}
/>
<div className="form-tip">
&quot;YYYY-MM-DD&quot;
</div>
</div>
</div>
);