From b02aa75ddc2b37a024a8966ddad96cf8d85317bb Mon Sep 17 00:00:00 2001 From: roymondchen Date: Fri, 29 May 2026 14:19:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(editor):=20=E5=8E=86=E5=8F=B2=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E9=9D=A2=E6=9D=BF=E6=94=AF=E6=8C=81=E5=8D=95=E6=AD=A5?= =?UTF-8?q?=E5=9B=9E=E6=BB=9A=EF=BC=88=E7=B1=BB=20git=20revert=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将目标历史步骤的修改作为一次新操作反向应用,不破坏原有栈结构, page/dataSource/codeBlock 三类 service 均提供 revert 能力; 面板新增关闭按钮、步骤编号展示与合并组卡片样式优化。 Co-authored-by: Cursor --- .../editor/src/components/CodeBlockEditor.vue | 2 +- .../editor/src/components/CompareForm.vue | 1 + .../src/layouts/history-list/Bucket.vue | 4 + .../src/layouts/history-list/CodeBlockTab.vue | 3 + .../layouts/history-list/DataSourceTab.vue | 3 + .../src/layouts/history-list/GroupRow.vue | 69 ++++++++- .../history-list/HistoryDiffDialog.vue | 2 +- .../layouts/history-list/HistoryListPanel.vue | 43 +++++- .../src/layouts/history-list/InitialRow.vue | 1 + .../src/layouts/history-list/PageTab.vue | 4 + packages/editor/src/services/codeBlock.ts | 79 +++++++++++ packages/editor/src/services/dataSource.ts | 77 ++++++++++ packages/editor/src/services/editor.ts | 132 ++++++++++++++++++ packages/editor/src/services/history.ts | 22 +++ .../editor/src/theme/history-list-panel.scss | 113 +++++++++++++-- .../history-list/HistoryListPanel.spec.ts | 4 +- .../layouts/history-list/composables.spec.ts | 4 +- packages/form/src/containers/Container.vue | 9 +- packages/form/src/containers/Tabs.vue | 7 +- packages/form/src/theme/container.scss | 5 +- 20 files changed, 556 insertions(+), 28 deletions(-) diff --git a/packages/editor/src/components/CodeBlockEditor.vue b/packages/editor/src/components/CodeBlockEditor.vue index 20a981c5..f8395224 100644 --- a/packages/editor/src/components/CodeBlockEditor.vue +++ b/packages/editor/src/components/CodeBlockEditor.vue @@ -34,7 +34,7 @@
-
修改前
+
修改前
修改后
diff --git a/packages/editor/src/components/CompareForm.vue b/packages/editor/src/components/CompareForm.vue index f141816a..8037ef25 100644 --- a/packages/editor/src/components/CompareForm.vue +++ b/packages/editor/src/components/CompareForm.vue @@ -139,6 +139,7 @@ const wrapperStyle = computed(() => { */ const isEmptyCodeSelectValue = (v: any): boolean => { if (v === '' || v === undefined || v === null) return true; + if (Array.isArray(v) && v.length === 0) return true; return typeof v === 'object' && v.hookType === HookType.CODE && Array.isArray(v.hookData) && v.hookData.length === 0; }; diff --git a/packages/editor/src/layouts/history-list/Bucket.vue b/packages/editor/src/layouts/history-list/Bucket.vue index 86ee43bf..e874820f 100644 --- a/packages/editor/src/layouts/history-list/Bucket.vue +++ b/packages/editor/src/layouts/history-list/Bucket.vue @@ -23,6 +23,7 @@ isCurrent: s.isCurrent, desc: describeStep(s.step), diffable: isStepDiffable ? isStepDiffable(s.step) : false, + revertable: s.applied, })) " :is-current="group.isCurrent" @@ -30,6 +31,7 @@ @toggle="(key: string) => $emit('toggle', key)" @goto="(index: number) => $emit('goto', bucketId, index)" @diff-step="(index: number) => $emit('diff-step', bucketId, index)" + @revert-step="(index: number) => $emit('revert-step', bucketId, index)" />