From a929818f632ef0930ae8f101052e9ce861bedf19 Mon Sep 17 00:00:00 2001 From: Gary Fu Date: Sat, 6 Jan 2024 21:09:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=80=E5=8D=95=E8=8F=9C=E5=8D=95=E8=A1=A8?= =?UTF-8?q?=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/messages/menu_cn.js | 7 ++ src/messages/menu_en.js | 9 ++- src/route/AdminRoutes.js | 15 ++++- src/services/menu/MenuService.js | 39 ++++++++++- src/views/admin/MenuEdit.vue | 53 +++++++++++++++ src/views/admin/Menus.vue | 111 ++++++++++++++++++++++++++++--- 6 files changed, 221 insertions(+), 13 deletions(-) create mode 100644 src/views/admin/MenuEdit.vue diff --git a/src/messages/menu_cn.js b/src/messages/menu_cn.js index 6dce0e1..1900af6 100644 --- a/src/messages/menu_cn.js +++ b/src/messages/menu_cn.js @@ -6,6 +6,7 @@ menu.label.userManagement = '用户管理' menu.label.roleManagement = '角色管理' menu.label.authorityManagement = '权限管理' menu.label.menuManagement = '菜单管理' +menu.label.menuEdit = '菜单编辑' menu.label.toolsManagement = '工具管理' menu.label.toolsIcons = '图标工具' menu.label.toolsForms = '表单工具' @@ -15,3 +16,9 @@ menu.label.errorPage = '错误页面' menu.label.errorPage404 = '找不到页面' menu.label.errorPage403 = '没有权限' menu.label.errorPage500 = '服务器错误' + +menu.label.menuNameCn = '菜单中文名' +menu.label.menuNameEn = '菜单英文名' +menu.label.menuIcon = '菜单图标' +menu.label.menuParent = '上级菜单' +menu.label.menuUrl = '菜单地址' diff --git a/src/messages/menu_en.js b/src/messages/menu_en.js index 55b8fd8..295e80c 100644 --- a/src/messages/menu_en.js +++ b/src/messages/menu_en.js @@ -5,7 +5,8 @@ menu.label.systemManagement = 'System Management' menu.label.userManagement = 'User Management' menu.label.roleManagement = 'Role Management' menu.label.authorityManagement = 'Authority Management' -menu.label.menuManagement = 'Menu Management' +menu.label.menuEdit = 'Edit Menu' +menu.label.menuOperation = 'Menu {0}' menu.label.toolsManagement = 'Tools' menu.label.toolsIcons = 'Icons' menu.label.toolsForms = 'Forms' @@ -15,3 +16,9 @@ menu.label.errorPage = 'Error Page' menu.label.errorPage404 = 'Not Found' menu.label.errorPage403 = 'Access Denied' menu.label.errorPage500 = 'Server Error' + +menu.label.menuNameCn = 'Name CN' +menu.label.menuNameEn = 'Name EN' +menu.label.menuIcon = 'Menu Icon' +menu.label.menuParent = 'Parent Menu' +menu.label.menuUrl = 'Menu Url' diff --git a/src/route/AdminRoutes.js b/src/route/AdminRoutes.js index 2c93d23..d986bb5 100644 --- a/src/route/AdminRoutes.js +++ b/src/route/AdminRoutes.js @@ -15,5 +15,18 @@ export default [{ }, { path: `${BASE_PATH}/menus`, name: 'Menus', - component: () => import('@/views/admin/Menus.vue') + children: [{ + path: '', + name: 'menus-index', + component: () => import('@/views/admin/Menus.vue') + }, { + path: 'edit/:id', + name: 'menus-edit', + component: () => import('@/views/admin/MenuEdit.vue'), + meta: { + replaceTabHistory: 'menus-index', + labelKey: 'menu.label.menuEdit', + icon: 'Edit' + } + }] }] diff --git a/src/services/menu/MenuService.js b/src/services/menu/MenuService.js index bc32a3a..fc47cf1 100644 --- a/src/services/menu/MenuService.js +++ b/src/services/menu/MenuService.js @@ -9,12 +9,45 @@ * @property {[MenuDto]} children 子菜单 */ -import { $httpPost } from '@/vendors/axios' +import { $httpGet, $httpPost } from '@/vendors/axios' import { $i18nMsg } from '@/messages' import { useGlobalConfigStore } from '@/stores/GlobalConfigStore' import { GlobalLocales } from '@/consts/GlobalConstants' import { useLoginConfigStore } from '@/stores/LoginConfigStore' +export const searchMenusResult = (queryParam, config) => { + return $httpPost('/api/searchMenus', queryParam, config) +} + +export const loadMenuResult = (id, config) => { + return $httpGet(`/api/menus/${id}`, config) +} + +/** + * @return {[CommonFormOption]} + */ +export const useMenuFormOptions = () => { + return [{ + labelKey: 'menu.label.menuNameCn', + prop: 'nameCn', + required: true + }, { + labelKey: 'menu.label.menuNameEn', + prop: 'nameEn', + required: true + }, { + labelKey: 'menu.label.menuParent', + prop: 'parentId' + }, { + labelKey: 'menu.label.menuIcon', + prop: 'iconCls', + type: 'common-icon-select' + }, { + labelKey: 'menu.label.menuUrl', + prop: 'menuUrl' + }] +} + /** * 接口菜单格式转换成页面展示格式 * @param menu {MenuDto} @@ -35,11 +68,11 @@ export const menu2CommonMenu = (menu) => { return menuItem } -export const loadAndParseMenus = async config => { +export const loadAndParseMenus = async (param, config) => { /** * @type {[MenuDto]} */ - const menus = await $httpPost('/api/menus', config).then(data => data.resultData?.menuList || []) + const menus = await $httpPost('/api/menus', param, config).then(data => data.resultData?.menuList || []) return processMenus(menus) } /** diff --git a/src/views/admin/MenuEdit.vue b/src/views/admin/MenuEdit.vue new file mode 100644 index 0000000..d1d7519 --- /dev/null +++ b/src/views/admin/MenuEdit.vue @@ -0,0 +1,53 @@ + + + + + diff --git a/src/views/admin/Menus.vue b/src/views/admin/Menus.vue index dd1faea..c0c9ed5 100644 --- a/src/views/admin/Menus.vue +++ b/src/views/admin/Menus.vue @@ -1,17 +1,112 @@