From 5248453fbaa595427dbc978e9a64343353da4320 Mon Sep 17 00:00:00 2001 From: Junyi Date: Thu, 19 Mar 2026 22:26:01 +0800 Subject: [PATCH] feat(plugin-workflow): add filter for execution list (#8914) --- .../plugin-workflow/src/client/WorkflowPane.tsx | 4 ++-- ...onProps.ts => useResourceFilterActionProps.ts} | 2 +- .../src/client/schemas/executions.tsx | 15 +++++++++++++++ .../src/client/schemas/workflows.ts | 4 ++-- .../src/common/collections/executions.ts | 12 ++++++++++++ .../src/common/collections/workflows.ts | 8 ++++++++ 6 files changed, 40 insertions(+), 5 deletions(-) rename packages/plugins/@nocobase/plugin-workflow/src/client/hooks/{useWorkflowFilterActionProps.ts => useResourceFilterActionProps.ts} (93%) diff --git a/packages/plugins/@nocobase/plugin-workflow/src/client/WorkflowPane.tsx b/packages/plugins/@nocobase/plugin-workflow/src/client/WorkflowPane.tsx index 295cc41acba..766493f65a4 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/client/WorkflowPane.tsx +++ b/packages/plugins/@nocobase/plugin-workflow/src/client/WorkflowPane.tsx @@ -38,7 +38,7 @@ import { TriggerOptionRender } from './components/TriggerOptionRender'; import { lang } from './locale'; import { CategoryTabs } from './WorkflowCategoryTabs'; import { EnumerationField } from './components/EmunerationField'; -import { useWorkflowFilterActionProps } from './hooks/useWorkflowFilterActionProps'; +import { useResourceFilterActionProps } from './hooks/useResourceFilterActionProps'; import { ExecutionStatusOptions } from './constants'; function SyncOptionSelect(props) { @@ -198,7 +198,7 @@ export function WorkflowPane() { useTriggersOptions, useWorkflowSyncReaction, useSyncAction, - useWorkflowFilterActionProps, + useResourceFilterActionProps, useRefreshActionProps, useRevisionAction, TriggerOptionRender, diff --git a/packages/plugins/@nocobase/plugin-workflow/src/client/hooks/useWorkflowFilterActionProps.ts b/packages/plugins/@nocobase/plugin-workflow/src/client/hooks/useResourceFilterActionProps.ts similarity index 93% rename from packages/plugins/@nocobase/plugin-workflow/src/client/hooks/useWorkflowFilterActionProps.ts rename to packages/plugins/@nocobase/plugin-workflow/src/client/hooks/useResourceFilterActionProps.ts index 082483b53ed..ec74ccd277a 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/client/hooks/useWorkflowFilterActionProps.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/client/hooks/useResourceFilterActionProps.ts @@ -14,7 +14,7 @@ import { useResourceContext, } from '@nocobase/client'; -export const useWorkflowFilterActionProps = () => { +export const useResourceFilterActionProps = () => { const { collection } = useResourceContext(); const options = useFilterFieldOptions(collection.fields); const service = useResourceActionContext(); diff --git a/packages/plugins/@nocobase/plugin-workflow/src/client/schemas/executions.tsx b/packages/plugins/@nocobase/plugin-workflow/src/client/schemas/executions.tsx index c0b1fd394cb..6d70fdc2d09 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/client/schemas/executions.tsx +++ b/packages/plugins/@nocobase/plugin-workflow/src/client/schemas/executions.tsx @@ -101,6 +101,21 @@ export const executionSchema = { }, }, properties: { + filter: { + type: 'void', + title: '{{ t("Filter") }}', + 'x-action': 'filter', + 'x-component': 'Filter.Action', + 'x-use-component-props': 'useResourceFilterActionProps', + 'x-component-props': { + icon: 'FilterOutlined', + nonfilterable: ['workflow'], + }, + 'x-align': 'left', + default: { + $and: [{ status: { $eq: undefined } }], + }, + }, refresher: { type: 'void', title: '{{ t("Refresh") }}', diff --git a/packages/plugins/@nocobase/plugin-workflow/src/client/schemas/workflows.ts b/packages/plugins/@nocobase/plugin-workflow/src/client/schemas/workflows.ts index 361ea2b01a0..5ec79e319b0 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/client/schemas/workflows.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/client/schemas/workflows.ts @@ -157,10 +157,10 @@ export const workflowSchema: ISchema = { }, 'x-action': 'filter', 'x-component': 'Filter.Action', - 'x-use-component-props': 'useWorkflowFilterActionProps', + 'x-use-component-props': 'useResourceFilterActionProps', 'x-component-props': { icon: 'FilterOutlined', - nonfilterable: ['description', 'categories'], + nonfilterable: ['id', 'description', 'categories'], }, 'x-align': 'left', }, diff --git a/packages/plugins/@nocobase/plugin-workflow/src/common/collections/executions.ts b/packages/plugins/@nocobase/plugin-workflow/src/common/collections/executions.ts index d322c751670..d9d142038b3 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/common/collections/executions.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/common/collections/executions.ts @@ -31,6 +31,18 @@ export default { primaryKey: true, allowNull: false, }, + { + type: 'bigInt', + name: 'workflowId', + interface: 'id', + uiSchema: { + type: 'number', + title: `{{t("Version ID", { ns: "${NAMESPACE}" })}}`, + 'x-component': 'InputNumber', + 'x-component-props': {}, + 'x-read-pretty': true, + }, + }, { type: 'belongsTo', name: 'workflow', diff --git a/packages/plugins/@nocobase/plugin-workflow/src/common/collections/workflows.ts b/packages/plugins/@nocobase/plugin-workflow/src/common/collections/workflows.ts index 7927b5aa520..5e7c91654f6 100644 --- a/packages/plugins/@nocobase/plugin-workflow/src/common/collections/workflows.ts +++ b/packages/plugins/@nocobase/plugin-workflow/src/common/collections/workflows.ts @@ -21,6 +21,14 @@ export default { type: 'snowflakeId', primaryKey: true, allowNull: false, + interface: 'id', + uiSchema: { + type: 'number', + title: '{{t("ID")}}', + 'x-component': 'InputNumber', + 'x-component-props': {}, + 'x-read-pretty': true, + }, }, { name: 'key',