From 7d344c71e1766c923f8a5860174479aa655ad31d Mon Sep 17 00:00:00 2001 From: "meilin.huang" <954537473@qq.com> Date: Sat, 2 Aug 2025 22:08:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E6=B6=88=E6=81=AF=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E8=B0=83=E6=95=B4=20&=20=E6=A0=B7=E5=BC=8F=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/package.json | 21 +- frontend/src/App.vue | 29 +- frontend/src/assets/image/login-bg-main.svg | 1 - frontend/src/assets/image/login-bg-split.svg | 19 - frontend/src/common/commonEnum.ts | 15 +- frontend/src/common/syssocket.ts | 4 +- frontend/src/common/utils/loading.ts | 60 ++- frontend/src/common/utils/mitt.ts | 8 - frontend/src/components/message/message.ts | 129 ++++++ .../Grid/components/GridItem.vue | 0 .../components/{ => pagetable}/Grid/index.vue | 0 .../{ => pagetable}/Grid/interface/index.ts | 0 .../src/components/pagetable/PageTable.vue | 28 +- .../SearchForm/components/SearchFormItem.vue | 0 .../{ => pagetable}/SearchForm/index.ts | 0 .../{ => pagetable}/SearchForm/index.vue | 6 +- frontend/src/i18n/en/common.ts | 3 +- frontend/src/i18n/zh-cn/common.ts | 3 +- frontend/src/layout/component/aside.vue | 88 ++-- .../src/layout/component/columnsAside.vue | 202 ++++---- frontend/src/layout/component/main.vue | 41 +- frontend/src/layout/index.vue | 30 -- frontend/src/layout/lockScreen/index.vue | 352 -------------- frontend/src/layout/logo/index.vue | 2 - frontend/src/layout/main/classic.vue | 5 + frontend/src/layout/main/columns.vue | 6 +- .../layout/navBars/breadcrumb/breadcrumb.vue | 2 - .../src/layout/navBars/breadcrumb/index.vue | 10 - .../src/layout/navBars/breadcrumb/setings.vue | 183 +++----- .../src/layout/navBars/breadcrumb/user.vue | 5 +- .../layout/navBars/breadcrumb/userNews.vue | 86 ++-- .../src/layout/navBars/tagsView/tagsView.vue | 26 +- frontend/src/layout/navMenu/horizontal.vue | 121 ++--- frontend/src/layout/navMenu/subItem.vue | 2 +- frontend/src/layout/navMenu/vertical.vue | 13 +- frontend/src/layout/routerView/iframes.vue | 153 ++++-- frontend/src/layout/routerView/link.vue | 79 +++- frontend/src/layout/routerView/parent.vue | 79 +++- frontend/src/router/dynamicRouter.ts | 17 +- frontend/src/store/tagsViews.ts | 4 + frontend/src/store/themeConfig.ts | 5 +- frontend/src/theme/element.scss | 230 +++++++--- frontend/src/theme/loading.scss | 164 +++++-- frontend/src/theme/tailwind.css | 3 +- frontend/src/types/pinia.d.ts | 4 +- frontend/src/views/flow/ProcdefList.vue | 2 +- frontend/src/views/flow/ProcinstList.vue | 2 +- frontend/src/views/flow/ProcinstTaskList.vue | 2 +- .../views/login/component/AccountLogin.vue | 7 + frontend/src/views/login/index.vue | 434 ++++++++---------- .../src/views/msg/channel/ChannelList.vue | 2 +- frontend/src/views/msg/tmpl/TmplList.vue | 2 +- frontend/src/views/oauth/Oauth2Callback.vue | 7 +- frontend/src/views/ops/component/tag.ts | 2 +- .../src/views/ops/db/DbBackupHistoryList.vue | 2 +- frontend/src/views/ops/db/DbBackupList.vue | 2 +- frontend/src/views/ops/db/DbRestoreList.vue | 2 +- frontend/src/views/ops/db/DbSqlExecLog.vue | 2 +- frontend/src/views/ops/db/DbTransferList.vue | 2 +- frontend/src/views/ops/db/InstanceList.vue | 2 +- frontend/src/views/ops/db/SyncTaskList.vue | 2 +- .../src/views/ops/db/component/DbDetail.vue | 74 +++ .../db/component/sqleditor/DbSqlEditor.vue | 127 ++++- frontend/src/views/ops/db/db.ts | 18 + frontend/src/views/ops/es/EsInstanceList.vue | 2 +- .../src/views/ops/machine/MachineList.vue | 2 +- .../src/views/ops/machine/ScriptManage.vue | 4 +- .../ops/machine/component/MachineDetail.vue | 56 +-- .../ops/machine/cronjob/CronJobExecList.vue | 2 +- .../views/ops/machine/cronjob/CronJobList.vue | 2 +- frontend/src/views/ops/mongo/MongoList.vue | 2 +- frontend/src/views/ops/redis/RedisList.vue | 2 +- frontend/src/views/ops/tag/AuthCertList.vue | 2 +- frontend/src/views/ops/tag/TeamList.vue | 2 +- .../src/views/system/account/AccountList.vue | 2 +- .../views/system/account/RoleAllocation.vue | 2 +- .../src/views/system/config/ConfigList.vue | 2 +- .../views/system/resource/ResourceEdit.vue | 14 +- .../views/system/role/AccountAllocation.vue | 2 +- frontend/src/views/system/role/RoleList.vue | 2 +- .../src/views/system/syslog/SyslogList.vue | 2 +- server/internal/db/api/db.go | 2 +- server/internal/db/application/db_sql_exec.go | 2 +- server/internal/db/dbm/dbi/metadata.go | 7 +- .../flow/application/node_usertask.go | 27 +- server/internal/flow/application/procdef.go | 2 +- server/internal/machine/api/machine_file.go | 4 +- server/internal/msg/application/dto/msg.go | 6 + .../internal/msg/application/msg_tmpl_biz.go | 8 +- server/internal/msg/domain/entity/msg.go | 3 + server/internal/msg/imsg/en.go | 12 +- server/internal/msg/imsg/imsg.go | 2 + server/internal/msg/imsg/zh_cn.go | 12 +- server/internal/msg/init/init.go | 11 +- server/internal/msg/msgx/msgx.go | 9 +- 95 files changed, 1664 insertions(+), 1476 deletions(-) delete mode 100644 frontend/src/assets/image/login-bg-main.svg delete mode 100644 frontend/src/assets/image/login-bg-split.svg delete mode 100644 frontend/src/common/utils/mitt.ts create mode 100644 frontend/src/components/message/message.ts rename frontend/src/components/{ => pagetable}/Grid/components/GridItem.vue (100%) rename frontend/src/components/{ => pagetable}/Grid/index.vue (100%) rename frontend/src/components/{ => pagetable}/Grid/interface/index.ts (100%) rename frontend/src/components/{ => pagetable}/SearchForm/components/SearchFormItem.vue (100%) rename frontend/src/components/{ => pagetable}/SearchForm/index.ts (100%) rename frontend/src/components/{ => pagetable}/SearchForm/index.vue (95%) delete mode 100644 frontend/src/layout/lockScreen/index.vue create mode 100644 frontend/src/views/ops/db/component/DbDetail.vue diff --git a/frontend/package.json b/frontend/package.json index f827cecd..8e9fc0ed 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,7 +13,7 @@ "@element-plus/icons-vue": "^2.3.1", "@logicflow/core": "^2.0.16", "@logicflow/extension": "^2.0.21", - "@vueuse/core": "^13.5.0", + "@vueuse/core": "^13.6.0", "@xterm/addon-fit": "^0.10.0", "@xterm/addon-search": "^0.15.0", "@xterm/addon-web-links": "^0.11.0", @@ -24,13 +24,12 @@ "crypto-js": "^4.2.0", "dayjs": "^1.11.13", "echarts": "^5.6.0", - "element-plus": "^2.10.4", + "element-plus": "^2.10.5", "js-base64": "^3.7.7", "jsencrypt": "^3.3.2", - "mitt": "^3.0.1", "monaco-editor": "^0.52.2", "monaco-sql-languages": "^0.15.1", - "monaco-themes": "^0.4.5", + "monaco-themes": "^0.4.6", "nprogress": "^0.2.0", "pinia": "^3.0.3", "qrcode.vue": "^3.6.0", @@ -38,7 +37,7 @@ "sortablejs": "^1.15.6", "sql-formatter": "^15.6.5", "trzsz": "^1.1.5", - "uuid": "^9.0.1", + "uuid": "^11.1.0", "vue": "^v3.6.0-alpha.2", "vue-i18n": "^11.1.11", "vue-router": "^4.5.1", @@ -52,20 +51,20 @@ "@types/sortablejs": "^1.15.8", "@typescript-eslint/eslint-plugin": "^8.35.0", "@typescript-eslint/parser": "^8.35.0", - "@vitejs/plugin-vue": "^6.0.0", - "@vue/compiler-sfc": "^3.5.17", + "@vitejs/plugin-vue": "^6.0.1", + "@vue/compiler-sfc": "^3.5.18", "autoprefixer": "^10.4.21", - "code-inspector-plugin": "^0.20.12", + "code-inspector-plugin": "^1.0.4", "eslint": "^9.29.0", - "eslint-plugin-vue": "^10.2.0", + "eslint-plugin-vue": "^10.4.0", "postcss": "^8.5.6", "prettier": "^3.6.1", "sass": "^1.89.2", "tailwindcss": "^4.1.11", - "typescript": "^5.8.3", + "typescript": "^5.9.2", "vite": "npm:rolldown-vite@latest", "vite-plugin-progress": "0.0.7", - "vue-eslint-parser": "^10.1.4" + "vue-eslint-parser": "^10.2.0" }, "browserslist": [ "> 1%", diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 1b0485f2..852843cf 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -2,38 +2,34 @@
- + - + - - +
- + diff --git a/frontend/src/components/SearchForm/components/SearchFormItem.vue b/frontend/src/components/pagetable/SearchForm/components/SearchFormItem.vue similarity index 100% rename from frontend/src/components/SearchForm/components/SearchFormItem.vue rename to frontend/src/components/pagetable/SearchForm/components/SearchFormItem.vue diff --git a/frontend/src/components/SearchForm/index.ts b/frontend/src/components/pagetable/SearchForm/index.ts similarity index 100% rename from frontend/src/components/SearchForm/index.ts rename to frontend/src/components/pagetable/SearchForm/index.ts diff --git a/frontend/src/components/SearchForm/index.vue b/frontend/src/components/pagetable/SearchForm/index.vue similarity index 95% rename from frontend/src/components/SearchForm/index.vue rename to frontend/src/components/pagetable/SearchForm/index.vue index 1961448c..a443d7f0 100644 --- a/frontend/src/components/SearchForm/index.vue +++ b/frontend/src/components/pagetable/SearchForm/index.vue @@ -37,11 +37,11 @@ diff --git a/frontend/src/layout/component/columnsAside.vue b/frontend/src/layout/component/columnsAside.vue index 2051e261..74bcfcf5 100644 --- a/frontend/src/layout/component/columnsAside.vue +++ b/frontend/src/layout/component/columnsAside.vue @@ -1,7 +1,7 @@ - - diff --git a/frontend/src/layout/component/main.vue b/frontend/src/layout/component/main.vue index 9c2df5e6..c1a2941d 100644 --- a/frontend/src/layout/component/main.vue +++ b/frontend/src/layout/component/main.vue @@ -1,17 +1,8 @@ diff --git a/frontend/src/layout/lockScreen/index.vue b/frontend/src/layout/lockScreen/index.vue deleted file mode 100644 index d6321710..00000000 --- a/frontend/src/layout/lockScreen/index.vue +++ /dev/null @@ -1,352 +0,0 @@ - - - - - diff --git a/frontend/src/layout/logo/index.vue b/frontend/src/layout/logo/index.vue index fb67b6f2..6cc9f0c3 100644 --- a/frontend/src/layout/logo/index.vue +++ b/frontend/src/layout/logo/index.vue @@ -18,7 +18,6 @@ import { computed } from 'vue'; import { storeToRefs } from 'pinia'; import { useThemeConfig } from '@/store/themeConfig'; import config from '@/common/config'; -import mittBus from '@/common/utils/mitt'; const { themeConfig } = storeToRefs(useThemeConfig()); @@ -30,7 +29,6 @@ const setShowLogo = computed(() => { // logo 点击实现菜单展开/收起 const onThemeConfigChange = () => { if (themeConfig.value.layout === 'transverse') return false; - mittBus.emit('onMenuClick'); themeConfig.value.isCollapse = !themeConfig.value.isCollapse; }; diff --git a/frontend/src/layout/main/classic.vue b/frontend/src/layout/main/classic.vue index 31a0c469..da37183f 100644 --- a/frontend/src/layout/main/classic.vue +++ b/frontend/src/layout/main/classic.vue @@ -19,6 +19,11 @@ import Aside from '@/layout/component/aside.vue'; import Header from '@/layout/component/header.vue'; import Main from '@/layout/component/main.vue'; import TagsView from '@/layout/navBars/tagsView/tagsView.vue'; +import { provide, ref } from 'vue'; const { themeConfig } = storeToRefs(useThemeConfig()); + +// 提供 classic 布局的菜单数据 +const classicMenuData = ref(null); +provide('classicMenuData', classicMenuData); diff --git a/frontend/src/layout/main/columns.vue b/frontend/src/layout/main/columns.vue index 03a9997a..0d1e63d3 100644 --- a/frontend/src/layout/main/columns.vue +++ b/frontend/src/layout/main/columns.vue @@ -14,13 +14,17 @@ diff --git a/frontend/src/layout/navBars/breadcrumb/setings.vue b/frontend/src/layout/navBars/breadcrumb/setings.vue index a6857425..87db57b3 100644 --- a/frontend/src/layout/navBars/breadcrumb/setings.vue +++ b/frontend/src/layout/navBars/breadcrumb/setings.vue @@ -134,15 +134,6 @@ -
-
- {{ $t('layout.config.menuBarActiveColor') }} -
-
- -
-
-
{{ $t('layout.config.isMenuBarColorGradual') }} @@ -236,23 +227,6 @@
-
-
- {{ $t('layout.config.isLockScreen') }} -
-
- -
-
-
-
- {{ $t('layout.config.lockScreenTime') }} -
-
- - -
-
{{ $t('layout.config.interfaceDisplay') }} @@ -309,7 +283,7 @@ {{ $t('layout.config.isSortableTagsView') }}
- +
@@ -451,19 +425,60 @@ + diff --git a/frontend/src/layout/navBars/tagsView/tagsView.vue b/frontend/src/layout/navBars/tagsView/tagsView.vue index e9c301a6..02e78334 100644 --- a/frontend/src/layout/navBars/tagsView/tagsView.vue +++ b/frontend/src/layout/navBars/tagsView/tagsView.vue @@ -46,12 +46,11 @@ @@ -122,19 +116,42 @@ onBeforeRouteUpdate((to) => { overflow: hidden; margin-right: 30px; - ::v-deep(.el-scrollbar__bar.is-vertical) { - display: none; - } - - ::v-deep(a) { - width: 100%; - } - - .el-menu.el-menu--horizontal { - display: flex; + .horizontal-menu { + border: none !important; height: 100%; width: 100%; box-sizing: border-box; + + ::v-deep(.el-menu-item) { + height: 42px; + line-height: 42px; + padding: 0 15px !important; + margin: 0 5px; + border-radius: 6px; + display: flex; + align-items: center; + } + + ::v-deep(.el-sub-menu__title) { + height: 42px; + line-height: 42px; + padding: 0 25px 0 15px !important; /* 右边留出更多空间给箭头图标 */ + margin: 0 5px; + border-radius: 6px; + display: flex; + align-items: center; + } + + ::v-deep(.el-sub-menu__icon-arrow) { + right: 5px !important; + margin-top: -5px !important; + } + + ::v-deep(.el-menu-item.is-active), + ::v-deep(.el-sub-menu.is-active .el-sub-menu__title) { + color: #409eff; + background-color: rgba(64, 158, 255, 0.1); + } } } diff --git a/frontend/src/layout/navMenu/subItem.vue b/frontend/src/layout/navMenu/subItem.vue index 3c55c811..033b45d6 100644 --- a/frontend/src/layout/navMenu/subItem.vue +++ b/frontend/src/layout/navMenu/subItem.vue @@ -13,7 +13,7 @@ {{ $t(val.meta.title) }} {{ $t(val.meta.title) }} @@ -34,7 +34,6 @@ import { storeToRefs } from 'pinia'; import { useThemeConfig } from '@/store/themeConfig'; import { useRoute, onBeforeRouteUpdate } from 'vue-router'; import SubItem from '@/layout/navMenu/subItem.vue'; -import mittBus from '@/common/utils/mitt'; // 定义父组件传过来的值 const props = defineProps({ @@ -46,23 +45,29 @@ const props = defineProps({ }); const { themeConfig } = storeToRefs(useThemeConfig()); + const route = useRoute(); + const state = reactive({ defaultActive: route.path, }); + // 获取父级菜单数据 const menuLists = computed(() => { return props.menuList; }); + // 设置菜单的收起/展开 const setIsCollapse = computed(() => { return document.body.clientWidth < 1000 ? false : themeConfig.value.isCollapse; }); + // 路由更新时 onBeforeRouteUpdate((to) => { state.defaultActive = to.path; - mittBus.emit('onMenuClick'); const clientWidth = document.body.clientWidth; - if (clientWidth < 1000) themeConfig.value.isCollapse = false; + if (clientWidth < 1000) { + themeConfig.value.isCollapse = false; + } }); diff --git a/frontend/src/layout/routerView/iframes.vue b/frontend/src/layout/routerView/iframes.vue index 05793710..5de682e0 100644 --- a/frontend/src/layout/routerView/iframes.vue +++ b/frontend/src/layout/routerView/iframes.vue @@ -1,59 +1,114 @@