diff --git a/src/components/DataStandard/WorkForm/Design/config/formRule/builder/index.tsx b/src/components/DataStandard/WorkForm/Design/config/formRule/builder/index.tsx index 98ed2da88761d123bad3d6cf724754da3114dbcd..8db68769e880cca07f29824d1189542f18612789 100644 --- a/src/components/DataStandard/WorkForm/Design/config/formRule/builder/index.tsx +++ b/src/components/DataStandard/WorkForm/Design/config/formRule/builder/index.tsx @@ -58,10 +58,37 @@ const EditorComponent = (props: { ); }; const CustomBuilder: React.FC = (props) => { - const [value, setValue] = useState(); + const [value, setValue] = useState([]); useEffectOnce(() => { - setValue(JSON.parse(props.displayText)); + try { + const parsed = JSON.parse(props.displayText); + const validFields = props.fields.map((f) => f.dataField); + const invalidFields: string[] = []; + const filtered = Array.isArray(parsed) + ? parsed.filter((cond) => { + if (Array.isArray(cond)) { + const fieldName = cond[0]; + const isValid = validFields.includes(fieldName); + if (!isValid && typeof fieldName === 'string') { + invalidFields.push(fieldName); + } + return isValid; + } + return true; + }) + : parsed; + + // 提示不存在的字段 + if (invalidFields.length > 0) { + console.warn(`以下字段在 fields 配置中不存在: ${invalidFields.join(', ')}`); + } + setValue(filtered); + } catch (err) { + console.error('解析 displayText 出错:', err); + setValue([]); + } }); + const onValueChanged = useCallback( (e: FilterBuilderTypes.ValueChangedEvent) => { props.onValueChanged(