diff --git a/src/components/Form/src/hooks/useFormEvents.ts b/src/components/Form/src/hooks/useFormEvents.ts index 768089d0c092d18c74beddf6db3e3e61379566db..66b8337195079394191c52681eb782b2697c8207 100644 --- a/src/components/Form/src/hooks/useFormEvents.ts +++ b/src/components/Form/src/hooks/useFormEvents.ts @@ -76,6 +76,11 @@ export function useFormEvents({ const hasKey = Reflect.has(values, key); value = handleInputNumberValue(schema?.component, value); + const { componentProps } = schema || {}; + let _props = componentProps as any; + if (typeof componentProps === 'function') { + _props = _props({ formModel: unref(formModel) }); + } // 0| '' is allow if (hasKey && fields.includes(key)) { // time type @@ -85,17 +90,15 @@ export function useFormEvents({ for (const ele of value) { arr.push(ele ? dateUtil(ele) : null); } - formModel[key] = arr; + unref(formModel)[key] = arr; } else { - const { componentProps } = schema || {}; - let _props = componentProps as any; - if (typeof componentProps === 'function') { - _props = _props({ formModel }); - } - formModel[key] = value ? (_props?.valueFormat ? value : dateUtil(value)) : null; + unref(formModel)[key] = value ? (_props?.valueFormat ? value : dateUtil(value)) : null; } } else { - formModel[key] = value; + unref(formModel)[key] = value; + } + if (_props?.onChange) { + _props?.onChange(value); } validKeys.push(key); } else { @@ -103,13 +106,13 @@ export function useFormEvents({ try { const value = nestKey.split('.').reduce((out, item) => out[item], values); if (isDef(value)) { - formModel[nestKey] = value; + unref(formModel)[nestKey] = unref(value); validKeys.push(nestKey); } } catch (e) { // key not exist if (isDef(defaultValueRef.value[nestKey])) { - formModel[nestKey] = cloneDeep(defaultValueRef.value[nestKey]); + unref(formModel)[nestKey] = cloneDeep(unref(defaultValueRef.value[nestKey])); } } }); diff --git a/src/views/demo/form/RuleForm.vue b/src/views/demo/form/RuleForm.vue index 8124dae753996999648b095ad879ab3dc1276b80..183c0471e5f6f9d0815d967e850b2e17c3136b4d 100644 --- a/src/views/demo/form/RuleForm.vue +++ b/src/views/demo/form/RuleForm.vue @@ -98,6 +98,9 @@ key: '2', }, ], + onChange: (value) => { + console.log(value, '123'); + }, }, rules: [ { @@ -235,6 +238,7 @@ function setFormValues() { setFieldsValue({ field1: 1111, + field4: ['1'], field5: ['1'], field7: '1', field33: '2020-12-12',