From 76c19186852f6b062eab50ef94055155060ffcd2 Mon Sep 17 00:00:00 2001 From: 97 <1240438805@qq.com> Date: Fri, 25 Apr 2025 21:33:58 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E3=80=90Bug=E4=BF=AE=E6=94=B9=E5=8F=8A?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E3=80=91=E4=BF=AE=E6=94=B9=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E7=8A=B6=E6=80=81=E5=8A=9F=E8=83=BD=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E7=B1=BB=E5=9E=8B=E4=B8=8D=E4=B8=80=E8=87=B4=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E6=9F=A5=E8=AF=A2=E7=BB=93=E6=9E=9C=E5=BC=82=E5=B8=B8?= =?UTF-8?q?bug=EF=BC=8C=E4=BC=98=E5=8C=96=E7=8A=B6=E6=80=81=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=B8=BAnumber=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=90=8E?= =?UTF-8?q?=E6=9C=9F=E6=8B=93=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/system/dept/index.vue | 2 +- frontend/src/views/system/dept/types.ts | 2 +- frontend/src/views/system/dict/data.vue | 2 +- frontend/src/views/system/dict/index.vue | 2 +- frontend/src/views/system/dict/types.ts | 4 ++-- frontend/src/views/system/job/index.vue | 2 +- frontend/src/views/system/job/types.ts | 2 +- frontend/src/views/system/menu/index.vue | 2 +- frontend/src/views/system/menu/types.ts | 2 +- frontend/src/views/system/notice/index.vue | 2 +- frontend/src/views/system/notice/types.ts | 2 +- frontend/src/views/system/role/index.vue | 2 +- frontend/src/views/system/role/types.ts | 2 +- frontend/src/views/system/user/index.vue | 2 +- frontend/src/views/system/user/types.ts | 2 +- 15 files changed, 16 insertions(+), 16 deletions(-) diff --git a/frontend/src/views/system/dept/index.vue b/frontend/src/views/system/dept/index.vue index 35926929..fee31302 100644 --- a/frontend/src/views/system/dept/index.vue +++ b/frontend/src/views/system/dept/index.vue @@ -378,7 +378,7 @@ const loadingData = () => { params['name'] = queryState.name; } if (queryState.available) { - params['available'] = queryState.available === "true" ? true : false; + params['available'] = queryState.available === 1 ? true : false; } getDeptList(params).then(response => { diff --git a/frontend/src/views/system/dept/types.ts b/frontend/src/views/system/dept/types.ts index 7af90742..9ee4a46e 100644 --- a/frontend/src/views/system/dept/types.ts +++ b/frontend/src/views/system/dept/types.ts @@ -1,6 +1,6 @@ export interface searchDataType { name?: string - available?: string + available?: number } export interface tableDataType { diff --git a/frontend/src/views/system/dict/data.vue b/frontend/src/views/system/dict/data.vue index aed63e33..cce49f91 100644 --- a/frontend/src/views/system/dict/data.vue +++ b/frontend/src/views/system/dict/data.vue @@ -430,7 +430,7 @@ const loadingData = () => { queryState.dict_type = Array.isArray(route.query.dict_type) ? route.query.dict_type[0] : route.query.dict_type } if (queryState.available) { - params['available'] = queryState.available == true ? true : false; + params['available'] = queryState.available == 1 ? true : false; } params['page_no'] = pagination.current params['page_size'] = pagination.pageSize diff --git a/frontend/src/views/system/dict/index.vue b/frontend/src/views/system/dict/index.vue index 39e843c1..cd9d6598 100644 --- a/frontend/src/views/system/dict/index.vue +++ b/frontend/src/views/system/dict/index.vue @@ -298,7 +298,7 @@ const loadingData = () => { params['dict_type'] = queryState.dict_type } if (queryState.available) { - params['available'] = queryState.available == true ? true : false; + params['available'] = queryState.available == 1 ? true : false; } params['page_no'] = pagination.current params['page_size'] = pagination.pageSize diff --git a/frontend/src/views/system/dict/types.ts b/frontend/src/views/system/dict/types.ts index 4f5985bf..740a6e47 100644 --- a/frontend/src/views/system/dict/types.ts +++ b/frontend/src/views/system/dict/types.ts @@ -1,13 +1,13 @@ export interface searchDataType { dict_name?: string dict_type?: string - available?: boolean + available?: number } export interface searchDictDataType { dict_label?: string dict_type?: string - available?: boolean + available?: number } export interface tableDictType { diff --git a/frontend/src/views/system/job/index.vue b/frontend/src/views/system/job/index.vue index a2b0bd3e..0044eb7c 100644 --- a/frontend/src/views/system/job/index.vue +++ b/frontend/src/views/system/job/index.vue @@ -567,7 +567,7 @@ const loadingData = () => { params['end_time'] = `${queryState.date_range[1]} 23:59:59`; } if (queryState.status) { - params['status'] = queryState.status == true ? true : false; + params['status'] = queryState.status == 1 ? true : false; } params['page_no'] = pagination.current params['page_size'] = pagination.pageSize diff --git a/frontend/src/views/system/job/types.ts b/frontend/src/views/system/job/types.ts index d9389141..88fc898b 100644 --- a/frontend/src/views/system/job/types.ts +++ b/frontend/src/views/system/job/types.ts @@ -1,6 +1,6 @@ export interface searchType { name?: string - status?: boolean + status?: number date_range?: [string, string]; } diff --git a/frontend/src/views/system/menu/index.vue b/frontend/src/views/system/menu/index.vue index 7e814902..1e5db943 100644 --- a/frontend/src/views/system/menu/index.vue +++ b/frontend/src/views/system/menu/index.vue @@ -529,7 +529,7 @@ const loadingData = () => { params['name'] = queryState.name } if (queryState.available) { - params['available'] = queryState.available == "true" ? true : false; + params['available'] = queryState.available == 1 ? true : false; } getMenuList(params).then(response => { diff --git a/frontend/src/views/system/menu/types.ts b/frontend/src/views/system/menu/types.ts index 7152a498..1b94165b 100644 --- a/frontend/src/views/system/menu/types.ts +++ b/frontend/src/views/system/menu/types.ts @@ -1,6 +1,6 @@ export interface searchDataType { name?: string - available?: string + available?: number } export interface tableDataType { diff --git a/frontend/src/views/system/notice/index.vue b/frontend/src/views/system/notice/index.vue index 1341d187..ab454204 100644 --- a/frontend/src/views/system/notice/index.vue +++ b/frontend/src/views/system/notice/index.vue @@ -345,7 +345,7 @@ const loadingData = () => { params['notice_title'] = queryState.notice_title } if (queryState.available) { - params['available'] = queryState.available == true ? true : false; + params['available'] = queryState.available == 1 ? true : false; } params['page_no'] = pagination.current params['page_size'] = pagination.pageSize diff --git a/frontend/src/views/system/notice/types.ts b/frontend/src/views/system/notice/types.ts index 44838391..f556e574 100644 --- a/frontend/src/views/system/notice/types.ts +++ b/frontend/src/views/system/notice/types.ts @@ -1,6 +1,6 @@ export interface searchDataType { notice_title?: string - available?: boolean + available?: number } export interface tableDataType { diff --git a/frontend/src/views/system/role/index.vue b/frontend/src/views/system/role/index.vue index 84220e70..c54dd3e7 100644 --- a/frontend/src/views/system/role/index.vue +++ b/frontend/src/views/system/role/index.vue @@ -332,7 +332,7 @@ const loadingData = () => { params['name'] = queryState.name } if (queryState.available) { - params['available'] = queryState.available == "true" ? true : false; + params['available'] = queryState.available == 1 ? true : false; } params['page_no'] = pagination.current params['page_size'] = pagination.pageSize diff --git a/frontend/src/views/system/role/types.ts b/frontend/src/views/system/role/types.ts index c169dbe7..fa6ac376 100644 --- a/frontend/src/views/system/role/types.ts +++ b/frontend/src/views/system/role/types.ts @@ -1,6 +1,6 @@ export interface searchDataType { name?: string - available?: string + available?: number } export interface tableDataType { diff --git a/frontend/src/views/system/user/index.vue b/frontend/src/views/system/user/index.vue index b11ed9bc..3144a40e 100644 --- a/frontend/src/views/system/user/index.vue +++ b/frontend/src/views/system/user/index.vue @@ -562,7 +562,7 @@ const loadingData = () => { params['name'] = queryState.name } if (queryState.available) { - params['available'] = queryState.available == "true" ? true : false; + params['available'] = queryState.available == 1 ? true : false; } if (queryState.dept_id) { params['dept_id'] = queryState.dept_id; // 添加 dept_id 参数 diff --git a/frontend/src/views/system/user/types.ts b/frontend/src/views/system/user/types.ts index 77b1a82e..18cd2342 100644 --- a/frontend/src/views/system/user/types.ts +++ b/frontend/src/views/system/user/types.ts @@ -1,7 +1,7 @@ export interface searchDataType { username?: string name?: string - available?: string + available?: number dept_id?: number; } From c0599a0fd0153156986b8d509f77754d39728c21 Mon Sep 17 00:00:00 2001 From: 97 <1240438805@qq.com> Date: Fri, 25 Apr 2025 23:22:35 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91=E4=BF=AE=E6=94=B9=E9=9D=A2=E5=8C=85=E5=B1=91?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E8=87=B3=E9=A1=B6=E9=83=A8=EF=BC=8C=E7=BB=9F?= =?UTF-8?q?=E4=B8=80=E9=9D=A2=E5=8C=85=E5=B1=91=E7=BB=84=E4=BB=B6=E8=87=B3?= =?UTF-8?q?layout=EF=BC=8C=E5=A2=9E=E5=8A=A0tags=E9=A1=B5=E7=AD=BE?= =?UTF-8?q?=E7=AE=80=E5=8D=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/components/TopCrumb/index.vue | 46 ++++++++++ frontend/src/components/TopTags/index.vue | 96 ++++++++++++++++++++ frontend/src/layouts/basicLayout.vue | 42 +++++---- frontend/src/views/common/docs/index.vue | 2 - frontend/src/views/common/redoc/index.vue | 2 - frontend/src/views/dashboard/analysis.vue | 2 - frontend/src/views/dashboard/workplace.vue | 2 - frontend/src/views/monitor/cache/index.vue | 3 - frontend/src/views/monitor/online/index.vue | 3 - frontend/src/views/system/config/index.vue | 3 - frontend/src/views/system/dept/index.vue | 3 - frontend/src/views/system/dict/data.vue | 3 - frontend/src/views/system/dict/index.vue | 3 - frontend/src/views/system/job/index.vue | 3 - frontend/src/views/system/log/index.vue | 3 - frontend/src/views/system/menu/index.vue | 3 - frontend/src/views/system/notice/index.vue | 3 - frontend/src/views/system/position/index.vue | 3 - frontend/src/views/system/role/index.vue | 3 - frontend/src/views/system/user/index.vue | 3 - 20 files changed, 166 insertions(+), 65 deletions(-) create mode 100644 frontend/src/components/TopCrumb/index.vue create mode 100644 frontend/src/components/TopTags/index.vue diff --git a/frontend/src/components/TopCrumb/index.vue b/frontend/src/components/TopCrumb/index.vue new file mode 100644 index 00000000..16546384 --- /dev/null +++ b/frontend/src/components/TopCrumb/index.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/frontend/src/components/TopTags/index.vue b/frontend/src/components/TopTags/index.vue new file mode 100644 index 00000000..86074d04 --- /dev/null +++ b/frontend/src/components/TopTags/index.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/layouts/basicLayout.vue b/frontend/src/layouts/basicLayout.vue index ab904c85..4107b236 100644 --- a/frontend/src/layouts/basicLayout.vue +++ b/frontend/src/layouts/basicLayout.vue @@ -41,6 +41,7 @@ + @@ -126,7 +127,7 @@ - + @@ -167,6 +168,10 @@ import { useUserStore } from "@/store/index"; import { logout } from '@/api/system/auth'; import { useConfigStore, useNoticeStore } from "@/store/index"; +import topTags from '@/components/TopTags/index.vue'; +import topCrumb from '@/components/TopCrumb/index.vue'; + + const userStore = useUserStore(); // 路由相关 @@ -215,6 +220,22 @@ const handleLogout = async () => { } }; + // 设置展开的菜单 + const findParentPath = (menus: any[], targetPath: string, parentPath: string[] = []): string[] => { + for (const menu of menus) { + if (menu.key === targetPath) { + return parentPath; + } + if (menu.children?.length) { + const result = findParentPath(menu.children, targetPath, [...parentPath, menu.key]); + if (result.length) { + return result; + } + } + } + return []; + }; + // 处理菜单点击 const handleMenuClick: MenuProps['onClick'] = (menuInfo) => { menuState.openKeys = menuInfo.keyPath.slice(0, -1) as string[]; @@ -228,7 +249,8 @@ watch(() => route.path, (newPath) => { menuState.openKeys = []; menuState.selectedKeys = []; } else { - menuState.selectedKeys = [newPath]; + menuState.openKeys = findParentPath(menuState.menus, newPath); + menuState.selectedKeys = [newPath]; } }); @@ -267,22 +289,6 @@ const initMenu = () => { const currentPath = route.path; menuState.selectedKeys = [currentPath]; - // 设置展开的菜单 - const findParentPath = (menus: any[], targetPath: string, parentPath: string[] = []): string[] => { - for (const menu of menus) { - if (menu.key === targetPath) { - return parentPath; - } - if (menu.children?.length) { - const result = findParentPath(menu.children, targetPath, [...parentPath, menu.key]); - if (result.length) { - return result; - } - } - } - return []; - }; - menuState.openKeys = findParentPath(menuState.menus, currentPath); }; diff --git a/frontend/src/views/common/docs/index.vue b/frontend/src/views/common/docs/index.vue index c9f8dcd4..2da6beda 100644 --- a/frontend/src/views/common/docs/index.vue +++ b/frontend/src/views/common/docs/index.vue @@ -1,5 +1,4 @@