From 946497d6c60a534cf274f458962903277d105403 Mon Sep 17 00:00:00 2001 From: zhangtao <9480807882@qq.com> Date: Mon, 4 May 2026 08:25:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=B8=83=E5=B1=80=E5=92=8C=E7=BB=84=E4=BB=B6=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor(router): 更新主页路径为/home并调整路由守卫逻辑 feat(overlays): 新增通用弹窗和抽屉组件 fix(menu.store): 优化菜单状态持久化配置 feat(config): 为HeaderBar添加组件尺寸选择功能 refactor(components): 迁移布局组件到layouts目录并优化图标使用 fix(styles): 调整主内容区滚动和布局样式 feat(exception): 新增401异常页面 refactor(api): 统一列表返回类型为单数形式 fix(horizontal-menu): 为水平菜单添加ID标识 refactor(settings): 扩展设置面板功能项和持久化配置 docs: 更新配置文件和组件文档注释 --- frontend/new-web/src/api/module_system/log.ts | 2 +- .../new-web/src/api/module_system/notice.ts | 4 +- frontend/new-web/src/assets/images/401.svg | 1 - frontend/new-web/src/assets/images/404.svg | 1 - frontend/new-web/src/assets/images/500.svg | 1 - .../new-web/src/assets/images/svg/401.svg | 1 + .../src/components/AiAssistant/index.vue | 6 +- .../src/components/Breadcrumb/index.vue | 6 +- .../src/components/CURD/CrudToolbarRight.vue | 55 - .../new-web/src/components/CURD/usePage.ts | 184 -- .../src/components/Crud/CrudArtTableDemo.vue | 254 ++ .../PageContent.vue => Crud/CrudContent.vue} | 178 +- .../CrudExportModal.vue} | 10 +- .../PageModal.vue => Crud/CrudFormModal.vue} | 83 +- .../CrudImportModal.vue} | 10 +- .../src/components/Crud/CrudLayout.vue | 33 + .../PageSearch.vue => Crud/CrudSearch.vue} | 169 +- .../components/Crud/CrudToolbarActions.vue | 127 + .../{CURD => Crud}/CrudToolbarLeft.vue | 33 +- .../Crud/crudColsToArtTableColumns.ts | 111 + .../{CURD/helpers.ts => Crud/crudHelpers.ts} | 61 +- .../components/Crud/crudSearchFormToArt.ts | 240 ++ frontend/new-web/src/components/Crud/index.ts | 20 + .../src/components/{CURD => Crud}/types.ts | 78 +- .../components/Crud/useCrudArtTableDemo.ts | 483 ++++ .../components/{CURD => Crud}/useCrudList.ts | 8 +- .../src/components/Fullscreen/index.vue | 5 +- .../new-web/src/components/Guide/index.vue | 178 +- .../src/components/Hamburger/index.vue | 8 +- .../src/components/IconSelect/index.vue | 11 +- .../src/components/LangSelect/index.vue | 6 +- .../src/components/MenuRouteIcon/index.vue | 59 +- .../src/components/MenuSearch/index.vue | 12 +- .../src/components/Notification/index.vue | 6 +- .../src/components/SizeSelect/index.vue | 12 +- .../core/base/art-back-to-top/index.vue | 3 +- .../core/forms/art-search-bar/index.vue | 8 +- .../core/layouts/art-breadcrumb/index.vue | 143 - .../core/layouts/art-chat-window/index.vue | 263 -- .../core/layouts/art-fast-enter/index.vue | 113 - .../layouts/art-fireworks-effect/index.vue | 633 ----- .../layouts/art-global-component/index.vue | 14 - .../core/layouts/art-global-search/index.vue | 431 --- .../core/layouts/art-header-bar/index.vue | 486 ---- .../art-header-bar/widget/ArtUserMenu.vue | 167 -- .../art-menus/art-horizontal-menu/index.vue | 110 - .../widget/HorizontalSubmenu.vue | 109 - .../art-menus/art-mixed-menu/index.vue | 279 -- .../art-menus/art-sidebar-menu/index.vue | 359 --- .../art-menus/art-sidebar-menu/style.scss | 251 -- .../art-menus/art-sidebar-menu/theme.scss | 258 -- .../widget/SidebarSubmenu.vue | 202 -- .../core/layouts/art-notification/index.vue | 456 ---- .../core/layouts/art-page-content/index.vue | 136 - .../core/layouts/art-screen-lock/index.vue | 518 ---- .../composables/useSettingsConfig.ts | 248 -- .../composables/useSettingsHandlers.ts | 167 -- .../composables/useSettingsPanel.ts | 233 -- .../composables/useSettingsState.ts | 37 - .../core/layouts/art-settings-panel/index.vue | 72 - .../layouts/art-settings-panel/style.scss | 92 - .../widget/BasicSettings.vue | 77 - .../widget/BoxStyleSettings.vue | 38 - .../widget/ColorSettings.vue | 35 - .../widget/ContainerSettings.vue | 33 - .../widget/MenuLayoutSettings.vue | 31 - .../widget/MenuStyleSettings.vue | 44 - .../widget/SectionTitle.vue | 17 - .../widget/SettingActions.vue | 231 -- .../widget/SettingDrawer.vue | 51 - .../widget/SettingHeader.vue | 18 - .../art-settings-panel/widget/SettingItem.vue | 101 - .../widget/ThemeSettings.vue | 28 - .../core/layouts/art-work-tab/index.vue | 583 ---- .../overlays}/EnhancedDialog.vue | 11 +- .../overlays}/EnhancedDrawer.vue | 14 +- .../src/components/core/overlays/index.ts | 3 + .../core/views/login/AuthTopBar.vue | 12 +- .../new-web/src/config/modules/component.ts | 22 +- .../new-web/src/config/modules/fastEnter.ts | 4 +- .../new-web/src/config/modules/headerBar.ts | 4 + frontend/new-web/src/config/setting.ts | 2 +- frontend/new-web/src/hooks/core/useCommon.ts | 10 +- .../new-web/src/hooks/core/useHeaderBar.ts | 33 +- .../src/layouts/art-header-bar/index.vue | 47 +- .../art-header-bar/widget/ArtUserMenu.vue | 292 +- .../art-menus/art-horizontal-menu/index.vue | 2 +- .../widget/HorizontalSubmenu.vue | 7 +- .../art-menus/art-mixed-menu/index.vue | 2 +- .../art-menus/art-sidebar-menu/index.vue | 42 +- .../widget/SidebarSubmenu.vue | 7 +- .../src/layouts/art-page-content/index.vue | 39 +- .../src/layouts/art-screen-lock/index.vue | 595 +++-- .../composables/useSettingsConfig.ts | 60 + .../composables/useSettingsHandlers.ts | 15 + .../widget/BasicSettings.vue | 16 + .../widget/SettingActions.vue | 8 + .../src/layouts/art-work-tab/index.vue | 656 ++++- frontend/new-web/src/layouts/index.vue | 18 + .../layouts/old/components/AppLogo/index.vue | 82 - .../layouts/old/components/AppMain/index.vue | 158 -- .../layouts/old/components/Menu/BasicMenu.vue | 120 - .../old/components/Menu/MixTopMenu.vue | 207 -- .../components/Menu/components/MenuItem.vue | 268 -- .../Menu/components/MenuItemContent.vue | 69 - .../NavBar/components/LockDialog.vue | 112 - .../components/NavBar/components/LockPage.vue | 321 --- .../NavBar/components/NavbarActions.vue | 477 ---- .../layouts/old/components/NavBar/index.vue | 47 - .../layouts/old/components/Settings/index.vue | 822 ------ .../layouts/old/components/TagsView/index.vue | 975 ------- .../src/layouts/old/composables/useLayout.ts | 64 - .../layouts/old/composables/useLayoutMenu.ts | 40 - .../old/composables/useLayoutResponsive.ts | 40 - frontend/new-web/src/layouts/old/index.vue | 39 - .../src/layouts/old/views/BaseLayout.vue | 41 - .../src/layouts/old/views/LeftLayout.vue | 135 - .../src/layouts/old/views/MixLayout.vue | 221 -- .../src/layouts/old/views/TopLayout.vue | 164 -- frontend/new-web/src/layouts/style.scss | 6 +- frontend/new-web/src/locales/langs/en.json | 39 +- frontend/new-web/src/locales/langs/zh.json | 39 +- .../new-web/src/router/guards/beforeEach.ts | 4 +- frontend/new-web/src/router/index.ts | 4 +- .../new-web/src/router/modules/dashboard.ts | 32 +- .../new-web/src/router/modules/widgets.ts | 12 - .../new-web/src/router/routes/staticRoutes.ts | 57 +- .../src/router/utils/mergeShellMenus.ts | 84 +- .../new-web/src/store/modules/menu.store.ts | 4 +- .../src/store/modules/tags-view.store.ts | 8 +- frontend/new-web/src/styles/index.scss | 21 +- frontend/new-web/src/types/config/index.ts | 2 + frontend/new-web/src/utils/constants/links.ts | 3 + frontend/new-web/src/utils/menuIcon.ts | 6 +- frontend/new-web/src/utils/menuIconRemix.ts | 193 ++ .../new-web/src/views/current/profile.vue | 2 +- .../new-web/src/views/dashboard/index.vue | 2351 +++++++++++++---- .../src/views/dashboard/workplace-catalog.ts | 120 - .../new-web/src/views/dashboard/workplace.vue | 1772 ------------- .../src/views/dashboard/workplace/index.vue | 623 +++++ frontend/new-web/src/views/error/401.vue | 61 - frontend/new-web/src/views/error/404.vue | 61 - frontend/new-web/src/views/error/500.vue | 23 - .../src/views/examples/forms/index.vue | 4 +- .../src/views/examples/forms/search-bar.vue | 2 +- .../new-web/src/views/exception/401/index.vue | 16 + .../module_ai/chat/components/ChatNavbar.vue | 14 +- .../src/views/module_ai/memory/index.vue | 16 +- .../views/module_application/portal/index.vue | 18 +- .../src/views/module_example/demo/index.vue | 458 ++-- .../src/views/module_example/demo01/index.vue | 24 +- .../gencode/components/CreateTableDialog.vue | 2 +- .../gencode/components/GenCodeDrawer.vue | 2 +- .../gencode/components/GenPreviewStep.vue | 13 +- .../components/ImportDbTableDialog.vue | 2 +- .../views/module_generator/gencode/index.vue | 18 +- .../src/views/module_monitor/online/index.vue | 18 +- .../views/module_monitor/resource/index.vue | 20 +- .../src/views/module_system/dept/index.vue | 20 +- .../dict/components/DataDrawer.vue | 28 +- .../src/views/module_system/dict/index.vue | 28 +- .../src/views/module_system/log/index.vue | 26 +- .../src/views/module_system/menu/index.vue | 40 +- .../src/views/module_system/notice/index.vue | 26 +- .../param/components/ConfigInfoDrawer.vue | 2 +- .../src/views/module_system/param/index.vue | 28 +- .../views/module_system/position/index.vue | 26 +- .../role/components/PermissonDrawer.vue | 2 +- .../src/views/module_system/role/index.vue | 26 +- .../src/views/module_system/tenant/index.vue | 20 +- .../src/views/module_system/user/index.vue | 32 +- .../views/module_task/cronjob/job/index.vue | 30 +- .../views/module_task/cronjob/node/index.vue | 16 +- .../module_task/workflow/definition/index.vue | 14 +- .../module_task/workflow/node-type/index.vue | 16 +- .../new-web/src/views/system/menu/index.vue | 2 +- .../views/system/menu/modules/menu-dialog.vue | 4 +- .../new-web/src/views/system/role/index.vue | 4 +- .../new-web/src/views/system/user/index.vue | 2 +- .../new-web/src/views/template/map/index.vue | 2 +- .../src/views/widgets/context-menu/index.vue | 4 +- .../src/views/widgets/count-to/index.vue | 2 +- .../src/views/widgets/fireworks/index.vue | 4 +- .../new-web/src/views/widgets/icon/index.vue | 2 +- frontend/new-web/vite.config.ts | 3 +- 185 files changed, 6651 insertions(+), 15766 deletions(-) delete mode 100644 frontend/new-web/src/assets/images/401.svg delete mode 100644 frontend/new-web/src/assets/images/404.svg delete mode 100644 frontend/new-web/src/assets/images/500.svg create mode 100644 frontend/new-web/src/assets/images/svg/401.svg delete mode 100644 frontend/new-web/src/components/CURD/CrudToolbarRight.vue delete mode 100644 frontend/new-web/src/components/CURD/usePage.ts create mode 100644 frontend/new-web/src/components/Crud/CrudArtTableDemo.vue rename frontend/new-web/src/components/{CURD/PageContent.vue => Crud/CrudContent.vue} (84%) rename frontend/new-web/src/components/{CURD/ExportModal.vue => Crud/CrudExportModal.vue} (97%) rename frontend/new-web/src/components/{CURD/PageModal.vue => Crud/CrudFormModal.vue} (75%) rename frontend/new-web/src/components/{CURD/ImportModal.vue => Crud/CrudImportModal.vue} (96%) create mode 100644 frontend/new-web/src/components/Crud/CrudLayout.vue rename frontend/new-web/src/components/{CURD/PageSearch.vue => Crud/CrudSearch.vue} (66%) create mode 100644 frontend/new-web/src/components/Crud/CrudToolbarActions.vue rename frontend/new-web/src/components/{CURD => Crud}/CrudToolbarLeft.vue (76%) create mode 100644 frontend/new-web/src/components/Crud/crudColsToArtTableColumns.ts rename frontend/new-web/src/components/{CURD/helpers.ts => Crud/crudHelpers.ts} (72%) create mode 100644 frontend/new-web/src/components/Crud/crudSearchFormToArt.ts create mode 100644 frontend/new-web/src/components/Crud/index.ts rename frontend/new-web/src/components/{CURD => Crud}/types.ts (75%) create mode 100644 frontend/new-web/src/components/Crud/useCrudArtTableDemo.ts rename frontend/new-web/src/components/{CURD => Crud}/useCrudList.ts (89%) delete mode 100755 frontend/new-web/src/components/core/layouts/art-breadcrumb/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-chat-window/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-fast-enter/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-fireworks-effect/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-global-component/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-global-search/index.vue delete mode 100755 frontend/new-web/src/components/core/layouts/art-header-bar/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-header-bar/widget/ArtUserMenu.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-menus/art-horizontal-menu/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-menus/art-horizontal-menu/widget/HorizontalSubmenu.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-menus/art-mixed-menu/index.vue delete mode 100755 frontend/new-web/src/components/core/layouts/art-menus/art-sidebar-menu/index.vue delete mode 100755 frontend/new-web/src/components/core/layouts/art-menus/art-sidebar-menu/style.scss delete mode 100644 frontend/new-web/src/components/core/layouts/art-menus/art-sidebar-menu/theme.scss delete mode 100755 frontend/new-web/src/components/core/layouts/art-menus/art-sidebar-menu/widget/SidebarSubmenu.vue delete mode 100755 frontend/new-web/src/components/core/layouts/art-notification/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-page-content/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-screen-lock/index.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/composables/useSettingsConfig.ts delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/composables/useSettingsHandlers.ts delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/composables/useSettingsPanel.ts delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/composables/useSettingsState.ts delete mode 100755 frontend/new-web/src/components/core/layouts/art-settings-panel/index.vue delete mode 100755 frontend/new-web/src/components/core/layouts/art-settings-panel/style.scss delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/BasicSettings.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/BoxStyleSettings.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/ColorSettings.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/ContainerSettings.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/MenuLayoutSettings.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/MenuStyleSettings.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/SectionTitle.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/SettingActions.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/SettingDrawer.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/SettingHeader.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/SettingItem.vue delete mode 100644 frontend/new-web/src/components/core/layouts/art-settings-panel/widget/ThemeSettings.vue delete mode 100755 frontend/new-web/src/components/core/layouts/art-work-tab/index.vue rename frontend/new-web/src/components/{CURD => core/overlays}/EnhancedDialog.vue (92%) rename frontend/new-web/src/components/{CURD => core/overlays}/EnhancedDrawer.vue (86%) create mode 100644 frontend/new-web/src/components/core/overlays/index.ts delete mode 100644 frontend/new-web/src/layouts/old/components/AppLogo/index.vue delete mode 100644 frontend/new-web/src/layouts/old/components/AppMain/index.vue delete mode 100644 frontend/new-web/src/layouts/old/components/Menu/BasicMenu.vue delete mode 100644 frontend/new-web/src/layouts/old/components/Menu/MixTopMenu.vue delete mode 100644 frontend/new-web/src/layouts/old/components/Menu/components/MenuItem.vue delete mode 100644 frontend/new-web/src/layouts/old/components/Menu/components/MenuItemContent.vue delete mode 100644 frontend/new-web/src/layouts/old/components/NavBar/components/LockDialog.vue delete mode 100644 frontend/new-web/src/layouts/old/components/NavBar/components/LockPage.vue delete mode 100644 frontend/new-web/src/layouts/old/components/NavBar/components/NavbarActions.vue delete mode 100644 frontend/new-web/src/layouts/old/components/NavBar/index.vue delete mode 100644 frontend/new-web/src/layouts/old/components/Settings/index.vue delete mode 100644 frontend/new-web/src/layouts/old/components/TagsView/index.vue delete mode 100644 frontend/new-web/src/layouts/old/composables/useLayout.ts delete mode 100644 frontend/new-web/src/layouts/old/composables/useLayoutMenu.ts delete mode 100644 frontend/new-web/src/layouts/old/composables/useLayoutResponsive.ts delete mode 100644 frontend/new-web/src/layouts/old/index.vue delete mode 100644 frontend/new-web/src/layouts/old/views/BaseLayout.vue delete mode 100644 frontend/new-web/src/layouts/old/views/LeftLayout.vue delete mode 100644 frontend/new-web/src/layouts/old/views/MixLayout.vue delete mode 100644 frontend/new-web/src/layouts/old/views/TopLayout.vue create mode 100644 frontend/new-web/src/utils/menuIconRemix.ts delete mode 100644 frontend/new-web/src/views/dashboard/workplace-catalog.ts delete mode 100644 frontend/new-web/src/views/dashboard/workplace.vue create mode 100644 frontend/new-web/src/views/dashboard/workplace/index.vue delete mode 100644 frontend/new-web/src/views/error/401.vue delete mode 100644 frontend/new-web/src/views/error/404.vue delete mode 100644 frontend/new-web/src/views/error/500.vue create mode 100755 frontend/new-web/src/views/exception/401/index.vue diff --git a/frontend/new-web/src/api/module_system/log.ts b/frontend/new-web/src/api/module_system/log.ts index e9a8e700..0bf38af1 100644 --- a/frontend/new-web/src/api/module_system/log.ts +++ b/frontend/new-web/src/api/module_system/log.ts @@ -4,7 +4,7 @@ const API_PATH = "/system/log"; const LogAPI = { listLog(query: LogPageQuery) { - return request>>({ + return request>>({ url: `${API_PATH}/list`, method: "get", params: query, diff --git a/frontend/new-web/src/api/module_system/notice.ts b/frontend/new-web/src/api/module_system/notice.ts index 525c3e15..f71766e4 100644 --- a/frontend/new-web/src/api/module_system/notice.ts +++ b/frontend/new-web/src/api/module_system/notice.ts @@ -4,7 +4,7 @@ const API_PATH = "/system/notice"; const NoticeAPI = { listNotice(query: NoticePageQuery) { - return request>>({ + return request>>({ url: `${API_PATH}/list`, method: "get", params: query, @@ -12,7 +12,7 @@ const NoticeAPI = { }, listNoticeAvailable() { - return request>>({ + return request>>({ url: `${API_PATH}/available`, method: "get", }); diff --git a/frontend/new-web/src/assets/images/401.svg b/frontend/new-web/src/assets/images/401.svg deleted file mode 100644 index 45005961..00000000 --- a/frontend/new-web/src/assets/images/401.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/new-web/src/assets/images/404.svg b/frontend/new-web/src/assets/images/404.svg deleted file mode 100644 index 5244d8d4..00000000 --- a/frontend/new-web/src/assets/images/404.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/new-web/src/assets/images/500.svg b/frontend/new-web/src/assets/images/500.svg deleted file mode 100644 index 9c020927..00000000 --- a/frontend/new-web/src/assets/images/500.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/frontend/new-web/src/assets/images/svg/401.svg b/frontend/new-web/src/assets/images/svg/401.svg new file mode 100644 index 00000000..68790add --- /dev/null +++ b/frontend/new-web/src/assets/images/svg/401.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/frontend/new-web/src/components/AiAssistant/index.vue b/frontend/new-web/src/components/AiAssistant/index.vue index 73b8be93..801c0a95 100644 --- a/frontend/new-web/src/components/AiAssistant/index.vue +++ b/frontend/new-web/src/components/AiAssistant/index.vue @@ -12,7 +12,7 @@ @contextmenu.prevent="fabCollapsed = true" @click="handleOpen" > -
+ @@ -36,7 +36,7 @@ > @@ -119,6 +119,8 @@ diff --git a/frontend/new-web/src/components/CURD/usePage.ts b/frontend/new-web/src/components/CURD/usePage.ts deleted file mode 100644 index 28df4567..00000000 --- a/frontend/new-web/src/components/CURD/usePage.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { ref, Ref } from "vue"; -import type { IObject, PageModalInstance } from "./types"; -import { useCrudList } from "./useCrudList"; - -/** - * CURD页面组合式函数 - * @returns 包含各种引用和处理函数的对象 - */ -function usePage() { - const { searchRef, contentRef, handleQueryClick, handleResetClick } = useCrudList(); - const addModalRef = ref(); - const editModalRef = ref(); - const viewModalRef = ref(); - - /** - * 处理新增点击事件 - * @param RefImpl 可选的模态框引用 - */ - function handleAddClick(RefImpl?: Ref) { - try { - if (RefImpl) { - RefImpl.value?.setModalVisible(); - RefImpl.value?.handleDisabled(false); - } else { - addModalRef.value?.setModalVisible(); - addModalRef.value?.handleDisabled(false); - } - } catch (error) { - console.error("打开新增模态框失败:", error); - ElMessage.error( - "打开新增模态框失败: " + (error instanceof Error ? error.message : String(error)) - ); - } - } - - /** - * 处理编辑点击事件 - * @param row 行数据 - * @param callback 回调函数 - * @param RefImpl 可选的模态框引用 - */ - async function handleEditClick( - row: IObject, - callback?: (result?: IObject) => IObject | Promise, - RefImpl?: Ref - ) { - try { - if (RefImpl) { - RefImpl.value?.setModalVisible(); - RefImpl.value?.handleDisabled(false); - const from = await (callback?.(row) ?? Promise.resolve(row)); - RefImpl.value?.setFormData(from ? from : row); - } else { - editModalRef.value?.setModalVisible(); - editModalRef.value?.handleDisabled(false); - const from = await (callback?.(row) ?? Promise.resolve(row)); - editModalRef.value?.setFormData(from ? from : row); - } - } catch (error) { - console.error("打开编辑模态框失败:", error); - ElMessage.error( - "打开编辑模态框失败: " + (error instanceof Error ? error.message : String(error)) - ); - } - } - - /** - * 处理查看点击事件 - * @param row 行数据 - * @param callback 回调函数 - * @param RefImpl 可选的模态框引用 - */ - async function handleViewClick( - row: IObject, - callback?: (result?: IObject) => IObject | Promise, - RefImpl?: Ref - ) { - try { - if (RefImpl) { - RefImpl.value?.setModalVisible(); - RefImpl.value?.handleDisabled(true); - const from = await (callback?.(row) ?? Promise.resolve(row)); - RefImpl.value?.setFormData(from ? from : row); - } else { - viewModalRef.value?.setModalVisible(); - viewModalRef.value?.handleDisabled(true); - const from = await (callback?.(row) ?? Promise.resolve(row)); - viewModalRef.value?.setFormData(from ? from : row); - } - } catch (error) { - console.error("打开查看模态框失败:", error); - ElMessage.error( - "打开查看模态框失败: " + (error instanceof Error ? error.message : String(error)) - ); - } - } - - /** - * 处理表单提交点击事件 - */ - function handleSubmitClick() { - try { - //根据检索条件刷新列表数据 - const queryParams = searchRef.value?.getQueryParams() || {}; - contentRef.value?.fetchPageData(queryParams, true); - } catch (error) { - console.error("提交表单失败:", error); - ElMessage.error("提交表单失败: " + (error instanceof Error ? error.message : String(error))); - } - } - - /** - * 处理导出点击事件 - */ - function handleExportClick() { - try { - // 根据检索条件导出数据 - const queryParams = searchRef.value?.getQueryParams() || {}; - contentRef.value?.exportPageData(queryParams); - } catch (error) { - console.error("导出数据失败:", error); - ElMessage.error("导出数据失败: " + (error instanceof Error ? error.message : String(error))); - } - } - - /** - * 处理筛选改变事件 - * @param filterParams 筛选参数 - */ - function handleFilterChange(filterParams: IObject) { - try { - const queryParams = searchRef.value?.getQueryParams() || {}; - contentRef.value?.fetchPageData({ ...queryParams, ...filterParams }, true); - } catch (error) { - console.error("筛选数据失败:", error); - ElMessage.error("筛选数据失败: " + (error instanceof Error ? error.message : String(error))); - } - } - - /** - * 处理更多操作事件 - * @param name 操作名称 - * @param selectedRows 选中的行数据 - * @param callback 回调函数 - */ - async function handleMoreOperation( - name: string, - selectedRows: IObject[], - callback?: (name: string, selectedRows: IObject[]) => Promise - ) { - try { - if (callback) { - await callback(name, selectedRows); - } - // 默认刷新数据 - handleSubmitClick(); - } catch (error) { - console.error("处理更多操作失败:", error); - ElMessage.error( - "处理更多操作失败: " + (error instanceof Error ? error.message : String(error)) - ); - } - } - - return { - searchRef, - contentRef, - addModalRef, - editModalRef, - viewModalRef, - handleQueryClick, - handleResetClick, - handleAddClick, - handleEditClick, - handleViewClick, - handleSubmitClick, - handleExportClick, - handleFilterChange, - handleMoreOperation, - }; -} - -export default usePage; -export { useCrudList } from "./useCrudList"; diff --git a/frontend/new-web/src/components/Crud/CrudArtTableDemo.vue b/frontend/new-web/src/components/Crud/CrudArtTableDemo.vue new file mode 100644 index 00000000..3740aca0 --- /dev/null +++ b/frontend/new-web/src/components/Crud/CrudArtTableDemo.vue @@ -0,0 +1,254 @@ + + + + + + diff --git a/frontend/new-web/src/components/CURD/PageContent.vue b/frontend/new-web/src/components/Crud/CrudContent.vue similarity index 84% rename from frontend/new-web/src/components/CURD/PageContent.vue rename to frontend/new-web/src/components/Crud/CrudContent.vue index 89eaa026..2c34c546 100644 --- a/frontend/new-web/src/components/CURD/PageContent.vue +++ b/frontend/new-web/src/components/Crud/CrudContent.vue @@ -1,6 +1,6 @@ - +
- +
- -
+ +
+ +
-