R7E-16E/R7E-16F 高风险操作确认统一
这个提交包含在:
@@ -9,6 +9,7 @@ import {
|
||||
type WorkflowDefinitionEditorModel,
|
||||
} from "../api/workflowDefinitions";
|
||||
import { ListWorkspace, WorkspaceHeader } from "../components/patterns/ListWorkspace";
|
||||
import { ActionConfirmDialog } from "../components/common/ActionConfirmDialog";
|
||||
import { Button } from "../components/ui/button";
|
||||
import { Input } from "../components/ui/input";
|
||||
import { Label } from "../components/ui/label";
|
||||
@@ -29,6 +30,11 @@ export function WorkflowDefinitionsPage() {
|
||||
const [name, setName] = useState("");
|
||||
const [notes, setNotes] = useState("");
|
||||
const [steps, setSteps] = useState<DraftStep[]>([emptyStep()]);
|
||||
const [confirmDefinitionAction, setConfirmDefinitionAction] = useState<{
|
||||
action: "publish" | "archive";
|
||||
id: string;
|
||||
name: string;
|
||||
} | null>(null);
|
||||
|
||||
const listQuery = useQuery({ queryKey: ["workflow-definitions"], queryFn: () => fetchWorkflowDefinitions() });
|
||||
const items = listQuery.data?.items ?? [];
|
||||
@@ -114,8 +120,21 @@ export function WorkflowDefinitionsPage() {
|
||||
{selected.status !== "derived_readonly" ? (
|
||||
<div className="flex gap-2">
|
||||
<Button type="button" variant="secondary" onClick={() => saveMutation.mutate(selected.id)} disabled={selected.status !== "draft"}>保存</Button>
|
||||
<Button type="button" onClick={() => publishMutation.mutate(selected.id)} disabled={selected.status === "archived"}>发布</Button>
|
||||
<Button type="button" variant="secondary" onClick={() => archiveMutation.mutate(selected.id)} disabled={selected.status === "archived"}>归档</Button>
|
||||
<Button
|
||||
type="button"
|
||||
onClick={() => setConfirmDefinitionAction({ action: "publish", id: selected.id, name: selected.name })}
|
||||
disabled={selected.status === "archived"}
|
||||
>
|
||||
发布
|
||||
</Button>
|
||||
<Button
|
||||
type="button"
|
||||
variant="secondary"
|
||||
onClick={() => setConfirmDefinitionAction({ action: "archive", id: selected.id, name: selected.name })}
|
||||
disabled={selected.status === "archived"}
|
||||
>
|
||||
归档
|
||||
</Button>
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
@@ -163,6 +182,25 @@ export function WorkflowDefinitionsPage() {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<ActionConfirmDialog
|
||||
open={Boolean(confirmDefinitionAction)}
|
||||
onOpenChange={(open) => {
|
||||
if (!open) setConfirmDefinitionAction(null);
|
||||
}}
|
||||
kind={confirmDefinitionAction?.action === "archive" ? "archive" : "submit"}
|
||||
targetName={confirmDefinitionAction?.name}
|
||||
title={confirmDefinitionAction?.action === "archive" ? "确认归档流程定义" : "确认发布流程定义"}
|
||||
description={
|
||||
confirmDefinitionAction?.action === "archive"
|
||||
? "归档后该流程定义不再用于新流程,历史流程不回写。"
|
||||
: "发布后该流程定义会参与后续新提交业务的审批解析,历史流程不回写。"
|
||||
}
|
||||
onConfirm={async () => {
|
||||
if (!confirmDefinitionAction) return;
|
||||
if (confirmDefinitionAction.action === "publish") publishMutation.mutate(confirmDefinitionAction.id);
|
||||
if (confirmDefinitionAction.action === "archive") archiveMutation.mutate(confirmDefinitionAction.id);
|
||||
}}
|
||||
/>
|
||||
</ListWorkspace>
|
||||
);
|
||||
}
|
||||
|
||||
在新工单中引用
屏蔽一个用户