From 26835f6a29a7586ab45240e9d3c9e5afa97252b0 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Tue, 25 Apr 2023 11:38:36 +0800 Subject: [PATCH] =?UTF-8?q?feat(table):=20action=20hook=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E5=8A=A0=E5=85=A5index=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/table/src/ActionsColumn.vue | 8 ++++---- packages/table/src/schema.ts | 7 ++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/table/src/ActionsColumn.vue b/packages/table/src/ActionsColumn.vue index 07883edf..06fb960e 100644 --- a/packages/table/src/ActionsColumn.vue +++ b/packages/table/src/ActionsColumn.vue @@ -6,7 +6,7 @@ v-show="display(action.display, scope.row) && !editState[scope.$index]" class="action-btn" text - type="primary" + :type="action.buttonType || 'primary'" size="small" :icon="action.icon" :key="actionIndex" @@ -72,13 +72,13 @@ const formatter = (fuc: string | Function | undefined, row: any) => { }; const actionHandler = async (action: ColumnActionConfig, row: any, index: number) => { - await action.before?.(row); + await action.before?.(row, index); if (action.type === 'edit') { props.editState[index] = row; } else { - await action.handler?.(row); + await action.handler?.(row, index); } - action.after?.(row); + action.after?.(row, index); }; const save = async (index: number, config: ColumnConfig) => { diff --git a/packages/table/src/schema.ts b/packages/table/src/schema.ts index 1399ecfc..40f31568 100644 --- a/packages/table/src/schema.ts +++ b/packages/table/src/schema.ts @@ -20,13 +20,14 @@ import { FormConfig, FormValue } from '@tmagic/form'; export interface ColumnActionConfig { type?: 'delete' | 'copy' | 'edit'; + buttonType: string; display?: (row: any) => boolean; text: string | ((row: any) => string); name: string; icon?: any; - handler?: (row: any) => Promise | any; - before?: (row: any) => void; - after?: (row: any) => void; + handler?: (row: any, index: number) => Promise | any; + before?: (row: any, index: number) => void; + after?: (row: any, index: number) => void; action?: (data: { data: any }) => void; }