From 2dcef449bfe04c7cb38223c1025d1ecb8df0074e Mon Sep 17 00:00:00 2001 From: moonszhang Date: Wed, 20 Dec 2023 14:29:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(form):=20table=20=E5=A2=9E=E5=8A=A0=20befo?= =?UTF-8?q?reAddRow=20=E9=92=A9=E5=AD=90=E5=87=BD=E6=95=B0=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E6=98=AF=E5=90=A6=E5=8F=AF=E5=A2=9E=E5=8A=A0=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/form/src/containers/Table.vue | 9 +++++++++ packages/form/src/schema.ts | 2 ++ 2 files changed, 11 insertions(+) diff --git a/packages/form/src/containers/Table.vue b/packages/form/src/containers/Table.vue index 4a2176e8..2a5a7f17 100644 --- a/packages/form/src/containers/Table.vue +++ b/packages/form/src/containers/Table.vue @@ -325,6 +325,15 @@ const newHandler = async (row?: any) => { return; } + if (typeof props.config.beforeAddRow === 'function') { + const beforeCheckRes = props.config.beforeAddRow(mForm, { + model: props.model[modelName.value], + formValue: mForm?.values, + prop: props.prop, + }); + if (!beforeCheckRes) return; + } + const columns = props.config.items; const enumValues = props.config.enum || []; let enumV = []; diff --git a/packages/form/src/schema.ts b/packages/form/src/schema.ts index 07635b66..4e1bcb12 100644 --- a/packages/form/src/schema.ts +++ b/packages/form/src/schema.ts @@ -669,6 +669,8 @@ export interface TableConfig extends FormItem { fixed?: boolean; itemExtra?: string | FilterFunction; rowKey?: string; + /** table 新增行时前置回调 */ + beforeAddRow?: (mForm: FormState | undefined, data: any) => boolean; } export interface GroupListConfig extends FormItem {