From 1280a48b9aca7ab8561c30d0683aa0ef4bb52add Mon Sep 17 00:00:00 2001 From: "825299534@qq.com" Date: Fri, 6 Jun 2025 15:01:13 +0800 Subject: [PATCH] =?UTF-8?q?1.=E7=BB=84=E4=BB=B6change=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8F=82=E6=95=B0,=E6=B7=BB=E5=8A=A0=E6=94=AF=E6=8C=81function?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F2.=E5=A4=9A=E9=80=89=E6=A1=86bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Form/src/components/ApiCheckboxGroup.vue | 2 +- src/components/SimpleForm/src/SimpleForm.vue | 9 +++++++-- src/components/SimpleForm/src/SimpleFormSetup.vue | 9 +++++++-- .../SimpleForm/src/components/SimpleFormItem.vue | 3 ++- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/components/Form/src/components/ApiCheckboxGroup.vue b/src/components/Form/src/components/ApiCheckboxGroup.vue index 79e3736..d2719ed 100644 --- a/src/components/Form/src/components/ApiCheckboxGroup.vue +++ b/src/components/Form/src/components/ApiCheckboxGroup.vue @@ -192,7 +192,7 @@ } function displayText() { - const _checked = checked.value;; + const _checked = checked.value || []; const labelArr = []; (getOptions.value || []).forEach((opt) => { if (_checked.includes(opt.value)) { diff --git a/src/components/SimpleForm/src/SimpleForm.vue b/src/components/SimpleForm/src/SimpleForm.vue index 93fb6a7..bf80e18 100644 --- a/src/components/SimpleForm/src/SimpleForm.vue +++ b/src/components/SimpleForm/src/SimpleForm.vue @@ -438,9 +438,14 @@ if (schema.componentProps?.['events']) { for (const eventKey in schema.componentProps['events']) { if (eventKey !== 'change') return; + const handler = schema.componentProps['events'][eventKey]; try { - const event = new Function('schema', 'formModel', 'formActionType', 'extParams', `${schema.componentProps['events'][eventKey]}`); - event(schema, formModel, formApi, { formData }); + if (typeof handler === 'string') { + const event = new Function('schema', 'formModel', 'formActionType', 'extParams', handler); + event(schema, formModel, formApi, { formData, allSchemas }); + } else if (typeof handler === 'function') { + handler(schema, formModel, formApi, { formData, allSchemas }); + } } catch (error) { console.log('error', error); notification.error({ diff --git a/src/components/SimpleForm/src/SimpleFormSetup.vue b/src/components/SimpleForm/src/SimpleFormSetup.vue index 073346d..62e00ee 100644 --- a/src/components/SimpleForm/src/SimpleFormSetup.vue +++ b/src/components/SimpleForm/src/SimpleFormSetup.vue @@ -438,9 +438,14 @@ if (schema.componentProps?.['events']) { for (const eventKey in schema.componentProps['events']) { if (eventKey !== 'change') return; + const handler = schema.componentProps['events'][eventKey]; try { - const event = new Function('schema', 'formModel', 'formActionType', 'extParams', `${schema.componentProps['events'][eventKey]}`); - event(schema, formModel, formApi, { formData }); + if (typeof handler === 'string') { + const event = new Function('schema', 'formModel', 'formActionType', 'extParams', handler); + event(schema, formModel, formApi, { formData, allSchemas }); + } else if (typeof handler === 'function') { + handler(schema, formModel, formApi, { formData, allSchemas }); + } } catch (error) { console.log('error', error); notification.error({ diff --git a/src/components/SimpleForm/src/components/SimpleFormItem.vue b/src/components/SimpleForm/src/components/SimpleFormItem.vue index 4aba3d0..0c9922f 100644 --- a/src/components/SimpleForm/src/components/SimpleFormItem.vue +++ b/src/components/SimpleForm/src/components/SimpleFormItem.vue @@ -275,6 +275,7 @@ }) ?? {}; } else { if (componentProps['events']) { + const allSchemas = formProps.value.schemas; for (const eventKey in componentProps['events']) { try { const fun = componentProps['events'][eventKey]; @@ -290,7 +291,7 @@ let field = camelCaseString(item); if (field) cloneFormModel[field] = cloneFormModel[item]; } - event(props.schema, isCamelCase ? cloneFormModel : formModel, props.formApi, { value, selectedOptions }); + event(props.schema, isCamelCase ? cloneFormModel : formModel, props.formApi, {formData, value, selectedOptions, allSchemas: allSchemas}); if (isCamelCase) { for (let item in formModel) {