From c2ed5a24a3f51736706642d9d97423bdc2d307ff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E5=AD=90=E9=BB=98?= <925456043@qq.com>
Date: Fri, 31 Jul 2026 09:51:21 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=9D=E7=95=99=E5=B7=A5=E4=BD=9C?=
=?UTF-8?q?=E6=B5=81=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E=E7=8A=B6=E6=80=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 记录页码、分类和搜索条件并同步到路由
- 从工作流设计页返回时恢复原列表位置
---
.../components/headerSearch/HeaderSearch.vue | 15 +-
.../app/src/components/page/PageData.test.ts | 34 +++++
.../app/src/components/page/PageData.vue | 29 +++-
.../detail-return-navigation.test.ts | 14 ++
.../src/views/ai/workflow/WorkflowDesign.vue | 10 +-
.../src/views/ai/workflow/WorkflowList.vue | 77 +++++++++-
.../workflow-list-route-state.test.ts | 85 ++++++++++++
.../ai/workflow/workflow-list-route-state.ts | 131 ++++++++++++++++++
8 files changed, 386 insertions(+), 9 deletions(-)
create mode 100644 easyflow-ui-admin/app/src/views/ai/workflow/workflow-list-route-state.test.ts
create mode 100644 easyflow-ui-admin/app/src/views/ai/workflow/workflow-list-route-state.ts
diff --git a/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue b/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue
index fed10ffe..9dffeb7e 100644
--- a/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue
+++ b/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue
@@ -1,5 +1,5 @@
diff --git a/easyflow-ui-admin/app/src/router/__tests__/detail-return-navigation.test.ts b/easyflow-ui-admin/app/src/router/__tests__/detail-return-navigation.test.ts
index 7cb68256..27725c1a 100644
--- a/easyflow-ui-admin/app/src/router/__tests__/detail-return-navigation.test.ts
+++ b/easyflow-ui-admin/app/src/router/__tests__/detail-return-navigation.test.ts
@@ -31,6 +31,20 @@ describe('detail return navigation', () => {
expect(listSource).toContain('tab: activeTab.value');
});
+ it('returns workflow design to the originating list page and filters', () => {
+ const detailSource = readViewSource('ai/workflow/WorkflowDesign.vue');
+ const listSource = readViewSource('ai/workflow/WorkflowList.vue');
+
+ expect(detailSource).toContain(
+ 'parseWorkflowDesignReturnState(route.query)',
+ );
+ expect(detailSource).toContain(
+ 'query: buildWorkflowListRouteQuery(listState)',
+ );
+ expect(listSource).toContain('buildWorkflowDesignReturnQuery');
+ expect(listSource).toContain('getPageState');
+ });
+
it('returns plugin tool editing to its plugin tool list with a safe fallback', () => {
const editSource = readViewSource('ai/plugin/PluginToolEdit.vue');
const listSource = readViewSource('ai/plugin/PluginToolTable.vue');
diff --git a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowDesign.vue b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowDesign.vue
index 980e1377..c7135d3e 100644
--- a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowDesign.vue
+++ b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowDesign.vue
@@ -51,6 +51,10 @@ import {
isWorkflowDataEmpty,
normalizeWorkflowStartNodes,
} from '../../../../../packages/tinyflow-ui/src/utils/workflowNodeFields';
+import {
+ buildWorkflowListRouteQuery,
+ parseWorkflowDesignReturnState,
+} from './workflow-list-route-state';
import '@tinyflow-ai/vue/dist/index.css';
@@ -160,7 +164,11 @@ async function initializeWorkflow() {
}
function backToWorkflowList() {
- router.replace({ path: '/ai/workflow' });
+ const listState = parseWorkflowDesignReturnState(route.query);
+ router.replace({
+ path: '/ai/workflow',
+ query: buildWorkflowListRouteQuery(listState),
+ });
}
const WORKFLOW_DRAFT_WRITE_DELAY = 320;
let draftWriteTimer: ReturnType | undefined;
diff --git a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue
index 27e29749..f7f3de0a 100644
--- a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue
+++ b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue
@@ -1,6 +1,8 @@