From ed01cfca870c726117c33478907f55d9fe66085b Mon Sep 17 00:00:00 2001 From: roymondchen Date: Tue, 29 Apr 2025 19:27:01 +0800 Subject: [PATCH] =?UTF-8?q?feat(form):=20select=20before/after=20request?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E9=85=8D=E7=BD=AE=E4=B8=AD=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?prop=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/form/src/fields/Select.vue | 8 ++++++++ packages/form/src/schema.ts | 27 ++++++++++++++++++--------- 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/packages/form/src/fields/Select.vue b/packages/form/src/fields/Select.vue index ecd64a63..6a8a51c1 100644 --- a/packages/form/src/fields/Select.vue +++ b/packages/form/src/fields/Select.vue @@ -191,6 +191,9 @@ const getOptions = async () => { postOptions = option.beforeRequest(mForm, postOptions, { model: props.model, formValue: mForm?.values, + formValues: mForm?.values, + prop: props.prop, + config: props.config, }); } @@ -206,6 +209,7 @@ const getOptions = async () => { formValue: mForm?.values, formValues: mForm?.values, config: props.config, + prop: props.prop, postOptions, }); } @@ -315,6 +319,9 @@ const getInitOption = async () => { postOptions = option.beforeInitRequest(mForm, postOptions, { model: props.model, formValue: mForm?.values, + formValues: mForm?.values, + config: props.config, + prop: props.prop, }); } @@ -331,6 +338,7 @@ const getInitOption = async () => { formValue: mForm?.values, formValues: mForm?.values, config: props.config, + prop: props.prop, postOptions, }); } diff --git a/packages/form/src/schema.ts b/packages/form/src/schema.ts index f1b74ee5..52ec2aec 100644 --- a/packages/form/src/schema.ts +++ b/packages/form/src/schema.ts @@ -279,7 +279,7 @@ type RemoteSelectOptionBodyFunction = ( }, ) => Record; -type RemoteSelectOptionRequestFunction = ( +type RemoteSelectOptionAfterRequestFunction = ( mForm: FormState | undefined, res: any, data: { @@ -287,10 +287,23 @@ type RemoteSelectOptionRequestFunction = ( formValue: any; formValues: any; config: any; + prop: string; postOptions: Record; }, ) => any; +type RemoteSelectOptionBeforeRequestFunction = ( + mForm: FormState | undefined, + postOptions: Record, + data: { + model: any; + formValue: any; + formValues: any; + config: any; + prop: string; + }, +) => Record; + type RemoteSelectOptionItemFunction = (optionsData: Record) => SelectOption[] | SelectGroupOption[]; type SelectOptionValueFunction = (item: Record) => any; type SelectOptionTextFunction = (item: Record) => string; @@ -496,14 +509,10 @@ export interface SelectConfig extends FormItem, Input { body?: Record | RemoteSelectOptionBodyFunction; initBody?: Record | RemoteSelectOptionBodyFunction; jsonpCallback?: 'callback' | string; - afterRequest?: RemoteSelectOptionRequestFunction; - afterInitRequest?: RemoteSelectOptionRequestFunction; - beforeRequest?: (mForm: FormState | undefined, postOptions: Record, data: any) => Record; - beforeInitRequest?: ( - mForm: FormState | undefined, - postOptions: Record, - data: any, - ) => Record; + afterRequest?: RemoteSelectOptionAfterRequestFunction; + afterInitRequest?: RemoteSelectOptionAfterRequestFunction; + beforeRequest?: RemoteSelectOptionBeforeRequestFunction; + beforeInitRequest?: RemoteSelectOptionBeforeRequestFunction; root?: string; totalKey?: string; initRoot?: string;