From a5859ba7b342f8c2f526478d7b7afe4ee485a8ec Mon Sep 17 00:00:00 2001 From: Kven <2955163637@qq.com> Date: Sat, 11 Jan 2025 17:33:44 +0800 Subject: [PATCH] =?UTF-8?q?feat(system):=20=E6=96=B0=E5=A2=9E=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加菜单管理页面,包括菜单列表、搜索、重置、新建、编辑和删除功能 - 实现菜单数据的获取、创建、更新和删除接口 - 添加菜单编辑组件,用于新建和编辑菜单 - 在系统路由中添加菜单管理路由 --- src/api/menu.ts | 40 +++ src/router/routes/modules/system.ts | 20 +- .../system/menu/components/menu-edit.vue | 225 +++++++++++++ src/views/system/menu/index.vue | 306 ++++++++++++++++++ src/views/system/user/index.vue | 1 + 5 files changed, 582 insertions(+), 10 deletions(-) create mode 100644 src/api/menu.ts create mode 100644 src/views/system/menu/components/menu-edit.vue create mode 100644 src/views/system/menu/index.vue diff --git a/src/api/menu.ts b/src/api/menu.ts new file mode 100644 index 0000000..446b238 --- /dev/null +++ b/src/api/menu.ts @@ -0,0 +1,40 @@ +import axios from 'axios'; + +export interface MenuRecord { + id?: number; + pid?: number; + name: string; + path: string; + meta: { + locale: string; + title?: string; + icon: string; + requiresAuth: boolean; + hideInMenu: boolean; + order: number; + permissions: string[]; + showInMenu: boolean; + menuOrder: number; + }; + children?: MenuRecord[] ; +}; + +export interface MenuCreateRecord extends MenuRecord{ + type: string; +} + +export const queryMenuList = () => { + return axios.get('/api/rest/menu'); +}; + +export const createMenu = (data: MenuCreateRecord) => { + return axios.post('/api/rest/menu', data); +}; + +export const updateMenu = (data: MenuCreateRecord) => { + return axios.put(`/api/rest/menu/${data.id}`, data); +}; + +export const removeMenu = (id: string | number) => { + return axios.delete(`/api/rest/menu/${id}`); +}; \ No newline at end of file diff --git a/src/router/routes/modules/system.ts b/src/router/routes/modules/system.ts index c4284bd..7231e0a 100644 --- a/src/router/routes/modules/system.ts +++ b/src/router/routes/modules/system.ts @@ -67,16 +67,16 @@ const SYSTEM: AppRouteRecordRaw = { permissions: ['system:authority'], }, }, - // { - // path:'message', - // name:'Message', - // component: () => import('@/views/system/message/index.vue'), - // meta:{ - // title: '消息管理', - // requiresAuth: true, - // permissions: ['*'], - // }, - // }, + { + path:'menu', + name:'Menu', + component: () => import('@/views/system/menu/index.vue'), + meta:{ + title: '菜单管理', + requiresAuth: true, + permissions: ['system:menu'], + }, + }, ], }; diff --git a/src/views/system/menu/components/menu-edit.vue b/src/views/system/menu/components/menu-edit.vue new file mode 100644 index 0000000..bbc6626 --- /dev/null +++ b/src/views/system/menu/components/menu-edit.vue @@ -0,0 +1,225 @@ + + + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue new file mode 100644 index 0000000..f1afe20 --- /dev/null +++ b/src/views/system/menu/index.vue @@ -0,0 +1,306 @@ + + + + + + + diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index e94efdd..e93f5fd 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -433,6 +433,7 @@ onMounted(() => { // 重置 const reset = () => { formModel.value = generateFormModel(); + search(); }; // 表格内部排序