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 @@