### What problem does this PR solve? fix: Fixed the issue that the related form value does not change after selecting the freedom field of the model #1804 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)tags/v0.9.0
| @@ -17,7 +17,13 @@ const LLMSelect = ({ id, value, onChange }: IProps) => { | |||
| ); | |||
| return ( | |||
| <Popover content={content} trigger="click" placement="left" arrow={false}> | |||
| <Popover | |||
| content={content} | |||
| trigger="click" | |||
| placement="left" | |||
| arrow={false} | |||
| destroyTooltipOnHide | |||
| > | |||
| <Select | |||
| style={{ width: '100%' }} | |||
| dropdownStyle={{ display: 'none' }} | |||
| @@ -28,9 +28,13 @@ const LlmSettingItems = ({ prefix, formItemLayout = {} }: IProps) => { | |||
| const handleParametersChange = useCallback( | |||
| (value: ModelVariableType) => { | |||
| const variable = settledModelVariableMap[value]; | |||
| form?.setFieldsValue(variable); | |||
| let nextVariable: Record<string, any> = variable; | |||
| if (prefix) { | |||
| nextVariable = { [prefix]: variable }; | |||
| } | |||
| form.setFieldsValue(nextVariable); | |||
| }, | |||
| [form], | |||
| [form, prefix], | |||
| ); | |||
| const memorizedPrefix = useMemo(() => (prefix ? [prefix] : []), [prefix]); | |||
| @@ -46,7 +50,13 @@ const LlmSettingItems = ({ prefix, formItemLayout = {} }: IProps) => { | |||
| {...formItemLayout} | |||
| rules={[{ required: true, message: t('modelMessage') }]} | |||
| > | |||
| <Select options={[...modelOptions[LlmModelType.Chat], ...modelOptions[LlmModelType.Image2text],]} showSearch/> | |||
| <Select | |||
| options={[ | |||
| ...modelOptions[LlmModelType.Chat], | |||
| ...modelOptions[LlmModelType.Image2text], | |||
| ]} | |||
| showSearch | |||
| /> | |||
| </Form.Item> | |||
| <Divider></Divider> | |||
| <Form.Item | |||
| @@ -101,7 +101,7 @@ const model: DvaModel<KFModelState> = { | |||
| function* ({ payload }, { call, put }) { | |||
| yield put({ type: 'getKfList', payload: { kb_id: payload } }); | |||
| }, | |||
| { type: 'poll', delay: 5000 }, // TODO: Provide type support for this effect | |||
| { type: 'poll', delay: 15000 }, // TODO: Provide type support for this effect | |||
| ], | |||
| *updateDocumentStatus({ payload = {} }, { call, put }) { | |||
| const { data } = yield call( | |||
| @@ -252,8 +252,22 @@ export const useHandleFormValuesChange = (id?: string) => { | |||
| const updateNodeForm = useGraphStore((state) => state.updateNodeForm); | |||
| const handleValuesChange = useCallback( | |||
| (changedValues: any, values: any) => { | |||
| let nextValues: any = values; | |||
| // Fixed the issue that the related form value does not change after selecting the freedom field of the model | |||
| if ( | |||
| Object.keys(changedValues).length === 1 && | |||
| 'parameter' in changedValues && | |||
| changedValues['parameter'] in settledModelVariableMap | |||
| ) { | |||
| nextValues = { | |||
| ...values, | |||
| ...settledModelVariableMap[ | |||
| changedValues['parameter'] as keyof typeof settledModelVariableMap | |||
| ], | |||
| }; | |||
| } | |||
| if (id) { | |||
| updateNodeForm(id, values); | |||
| updateNodeForm(id, nextValues); | |||
| } | |||
| }, | |||
| [updateNodeForm, id], | |||