From c572b696cccbfda6469982c99e02207856b802c0 Mon Sep 17 00:00:00 2001 From: Junyi Date: Wed, 29 Mar 2023 17:16:46 +0700 Subject: [PATCH] fix(plugin-workflow): fix todo list form read-pretty for non-assigneed user (#1615) Fix #1572. --- .../workflow/src/client/WorkflowCanvas.tsx | 2 +- .../src/client/nodes/manual/WorkflowTodo.tsx | 19 +++++++++++++------ .../plugins/workflow/src/client/style.tsx | 8 ++++++++ 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/plugins/workflow/src/client/WorkflowCanvas.tsx b/packages/plugins/workflow/src/client/WorkflowCanvas.tsx index 7192829db..232e1a490 100644 --- a/packages/plugins/workflow/src/client/WorkflowCanvas.tsx +++ b/packages/plugins/workflow/src/client/WorkflowCanvas.tsx @@ -198,7 +198,7 @@ export function WorkflowCanvas() {
-
+
{lang('End')}
diff --git a/packages/plugins/workflow/src/client/nodes/manual/WorkflowTodo.tsx b/packages/plugins/workflow/src/client/nodes/manual/WorkflowTodo.tsx index 8fcffa3c9..395a6fbb4 100644 --- a/packages/plugins/workflow/src/client/nodes/manual/WorkflowTodo.tsx +++ b/packages/plugins/workflow/src/client/nodes/manual/WorkflowTodo.tsx @@ -6,7 +6,7 @@ import parse from 'json-templates'; import { css } from "@emotion/css"; import moment from 'moment'; -import { CollectionManagerProvider, CollectionProvider, SchemaComponent, SchemaComponentContext, SchemaComponentOptions, TableBlockProvider, useActionContext, useAPIClient, useCollectionManager, useRecord, useRequest, useTableBlockContext } from "@nocobase/client"; +import { CollectionManagerProvider, CollectionProvider, SchemaComponent, SchemaComponentContext, SchemaComponentOptions, TableBlockProvider, useActionContext, useAPIClient, useCollectionManager, useCurrentUserContext, useRecord, useRequest, useTableBlockContext } from "@nocobase/client"; import { uid } from "@nocobase/utils/client"; import { JobStatusOptions, JobStatusOptionsMap, JOB_STATUS } from "../../constants"; @@ -386,9 +386,9 @@ function FlowContextProvider(props) { if (!executionId) { return; } - api.resource('executions').get?.({ + api.resource('users_jobs').get?.({ filterByTk: executionId, - appends: ['workflow', 'workflow.nodes', 'jobs'], + appends: ['workflow', 'workflow.nodes', 'execution', 'execution.jobs'], }) .then(({ data }) => { const { @@ -422,14 +422,21 @@ function FlowContextProvider(props) { WorkflowTodo.Drawer = function () { const ctx = useContext(SchemaComponentContext); - const { id, node, workflow, status, result, updatedAt } = useRecord(); + const { id, node, workflow, status, result, updatedAt, userId } = useRecord(); + const { data: user } = useCurrentUserContext(); + const disabled = Boolean(status) || user?.data?.id !== userId; const form = useMemo(() => createForm({ - readPretty: Boolean(status), + readPretty: disabled, + disabled, initialValues: result }), [result]); const { blocks, collection, actions } = node.config.schema ?? {}; + const availableActions = Object.keys(actions).reduce((buttons, key) => ({ ...buttons, [key]: { + ...actions[key], + 'x-disabled': disabled + } }), {}); const statusOption = JobStatusOptionsMap[status]; const actionSchema = status @@ -454,7 +461,7 @@ WorkflowTodo.Drawer = function () { 'x-content': statusOption.label } } - : actions; + : availableActions; return ( diff --git a/packages/plugins/workflow/src/client/style.tsx b/packages/plugins/workflow/src/client/style.tsx index 8f8d0158c..d9bcef9e8 100644 --- a/packages/plugins/workflow/src/client/style.tsx +++ b/packages/plugins/workflow/src/client/style.tsx @@ -34,6 +34,14 @@ export const workflowPageClass = css` flex-direction: column; align-items: center; padding: 2em; + + .end{ + cursor: default; + + &:hover{ + box-shadow: 0 .25em .5em rgba(0, 0, 0, .1); + } + } } `;