From 89ea6e609c43f60572acb9a71866246139cb6293 Mon Sep 17 00:00:00 2001 From: 18628386721 <18628386721@163.com> Date: Wed, 29 Jul 2026 19:29:11 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=88=E6=9C=AC=E6=A0=8F=E5=8A=A8=E4=BD=9C?= =?UTF-8?q?=E5=86=8D=E5=88=86=E5=B7=A5:=E5=90=AF=E5=81=9C=E5=9B=9E?= =?UTF-8?q?=E5=88=B0=E7=89=88=E6=9C=AC=E8=A1=8C=E4=B8=8A,=E6=96=B0?= =?UTF-8?q?=E5=BB=BA=C2=B7=E7=BC=96=E8=BE=91=C2=B7=E6=94=B9=E5=90=8D?= =?UTF-8?q?=E4=BD=8F=E9=A1=B6=E6=9D=A1,=E7=BC=96=E8=BE=91=E6=80=81?= =?UTF-8?q?=E8=A1=8C=E9=92=AE=E6=8D=A2=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit · 顶条只放**建改类**(作用于整条流/工作区):新建 · 编辑 · 改名。 「编辑」从图卡题行迁来 —— 编辑态升成**工作区级受控状态** (FlowFigureBlock 的 editing 提升为受控 props):版本行的按钮语义都跟着它变, 这不是图卡的私事。编辑中顶条示「编辑中」,收尾走画布里的 保存绘图/取消。 · 停用/激活是**某一版**的运行时开关 —— 回到每条版本行的行尾 (矮一号的小钮,行不发胖;行本身照旧点击切版,小钮拦冒泡)。 · **编辑态下行钮换成删除**:正在改定义的人,手边该是版本管理,不是启停开关; 生效版照旧禁删(先停用)。 实测:顶条 新建·编辑·改名;平时行钮 停用/激活;点编辑 → 画布进手绘、行钮变删除 (生效版灰);取消 → 行钮变回停用。五闸绿。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01KeDBx2PHLavbURXB8LJJ7m --- apps/web/src/app/styles/console.css | 5 +- .../features/gov-process/internal/panel.tsx | 93 +++++++++++++------ apps/web/src/shared/gov/flow/FlowFigure.tsx | 33 +++---- 3 files changed, 81 insertions(+), 50 deletions(-) diff --git a/apps/web/src/app/styles/console.css b/apps/web/src/app/styles/console.css index 884260b..8734e51 100644 --- a/apps/web/src/app/styles/console.css +++ b/apps/web/src/app/styles/console.css @@ -553,7 +553,9 @@ .g-veracts { flex: none; display: flex; align-items: center; gap: 6px; padding: 9px 14px; border-bottom: 1px solid var(--sh-line); background: #f9fafc; } .g-veracts { flex-wrap: nowrap; } .g-veracts .who { margin-left: auto; font: 600 9.5px/1 var(--sh-mono); letter-spacing: .1em; color: var(--sh-muted); } -.g-verrow { display: flex; align-items: baseline; gap: 8px; width: 100%; padding: 9px 11px; border: 1px solid var(--sh-line); border-left: 3px solid var(--sh-steel); background: #fff; font-family: var(--sh-mono); font-size: 10px; color: #3a4452; text-align: left; cursor: pointer; transition: border-color var(--t-fast); } +.g-verrow { display: flex; align-items: center; gap: 8px; width: 100%; padding: 7px 8px 7px 11px; border: 1px solid var(--sh-line); border-left: 3px solid var(--sh-steel); background: #fff; font-family: var(--sh-mono); font-size: 10px; color: #3a4452; text-align: left; cursor: pointer; transition: border-color var(--t-fast); } +/* 行尾小钮:启停(平时)/ 删除(编辑态)—— 比动作条矮一号,行不发胖 */ +.g-verrow .g-ver-act { height: 22px; padding: 0 8px; font-size: 10.5px; } .g-verrow:hover { border-color: #aeb9c6; } .g-verrow.on { border-color: #9fb0c0; background: #f2f5f8; } .g-verrow.live { border-left-color: var(--sh-brass); background: var(--sh-brass-wash); } @@ -563,6 +565,7 @@ .g-verrow .st { font-size: 9px; letter-spacing: .12em; color: var(--sh-muted); } .g-verrow .st.live { color: var(--sh-brass); font-weight: 700; } .g-verrow .cnt { margin-left: auto; font-size: 9.5px; color: var(--sh-muted); white-space: nowrap; } +.g-verrow .cnt + .g-ver-act { margin-left: 8px; } /* 改名条:紧贴动作条下方(点「改名」就地展开) */ .g-verrename { flex: none; display: flex; flex-direction: column; gap: 5px; padding: 9px 14px; border-bottom: 1px solid var(--sh-line); background: #f9fafc; } .g-verrename .g-input { height: 26px; font-size: 12px; } diff --git a/apps/web/src/features/gov-process/internal/panel.tsx b/apps/web/src/features/gov-process/internal/panel.tsx index 8c40ced..b7a068f 100644 --- a/apps/web/src/features/gov-process/internal/panel.tsx +++ b/apps/web/src/features/gov-process/internal/panel.tsx @@ -361,6 +361,8 @@ function FlowLab({ const [ask, setAsk] = useState<{ spec: AskSpec; danger?: boolean } | undefined>(undefined); /** 改名就地开一个输入框(名字改的是整条流,不是某一版) */ const [renaming, setRenaming] = useState(false); + /** 手绘编辑态 —— 工作区级:动作条与版本行的按钮语义都跟着它变 */ + const [editingGraph, setEditingGraph] = useState(false); const canvasRef = useRef(null); const nodes = graph?.nodes ?? []; @@ -667,37 +669,26 @@ function FlowLab({ */}