diff --git a/.vscode/settings.json b/.vscode/settings.json index ae894318..efd47c26 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,5 +14,6 @@ "i18n-ally.localesPaths": ["src/locales/langs"], "prettier.enable": false, "unocss.root": ["./"], - "typescript.tsdk": "node_modules/typescript/lib" + "typescript.tsdk": "node_modules/typescript/lib", + "vue.server.hybridMode": true } diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index bd401528..48b6bce4 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -12,6 +12,7 @@ const local: App.I18n.Schema = { close: 'Close', check: 'Check', columnSetting: 'Column Setting', + config: 'Config', confirm: 'Confirm', delete: 'Delete', deleteSuccess: 'Delete Success', @@ -277,6 +278,8 @@ const local: App.I18n.Schema = { roleCode: 'Role Code', roleStatus: 'Role Status', roleDesc: 'Role Description', + menuAuth: 'Menu Auth', + buttonAuth: 'Button Auth', form: { roleName: 'Please enter role name', roleCode: 'Please enter role code', @@ -312,6 +315,7 @@ const local: App.I18n.Schema = { } }, menu: { + home: 'Home', title: 'Menu List', id: 'ID', parentId: 'Parent ID', @@ -338,6 +342,7 @@ const local: App.I18n.Schema = { buttonDesc: 'Button Desc', menuStatus: 'Menu Status', form: { + home: 'Please select home', menuType: 'Please select menu type', menuName: 'Please enter menu name', routeName: 'Please enter route name', diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index e2b12c54..d209f008 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -12,6 +12,7 @@ const local: App.I18n.Schema = { close: '关闭', check: '勾选', columnSetting: '列设置', + config: '配置', confirm: '确认', delete: '删除', deleteSuccess: '删除成功', @@ -277,6 +278,8 @@ const local: App.I18n.Schema = { roleCode: '角色编码', roleStatus: '角色状态', roleDesc: '角色描述', + menuAuth: '菜单权限', + buttonAuth: '按钮权限', form: { roleName: '请输入角色名称', roleCode: '请输入角色编码', @@ -312,6 +315,7 @@ const local: App.I18n.Schema = { } }, menu: { + home: '首页', title: '菜单列表', id: 'ID', parentId: '父级菜单ID', @@ -338,6 +342,7 @@ const local: App.I18n.Schema = { buttonDesc: '按钮描述', menuStatus: '菜单状态', form: { + home: '请选择首页', menuType: '请选择菜单类型', menuName: '请输入菜单名称', routeName: '请输入路由名称', diff --git a/src/service/api/system-manage.ts b/src/service/api/system-manage.ts index dca6d611..6270d0af 100644 --- a/src/service/api/system-manage.ts +++ b/src/service/api/system-manage.ts @@ -57,3 +57,11 @@ export function fetchGetAllPages() { method: 'get' }); } + +/** get menu tree */ +export function fetchGetMenuTree() { + return request({ + url: '/systemManage/getMenuTree', + method: 'get' + }); +} diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index 9dc82cd6..6e82105c 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -222,5 +222,12 @@ declare namespace Api { /** menu list */ type MenuList = Common.PaginatingQueryRecord; + + type MenuTree = { + id: number; + label: string; + pId: number; + children?: MenuTree[]; + }; } } diff --git a/src/typings/app.d.ts b/src/typings/app.d.ts index 9e93c562..1ce5367b 100644 --- a/src/typings/app.d.ts +++ b/src/typings/app.d.ts @@ -258,6 +258,7 @@ declare namespace App { close: string; check: string; columnSetting: string; + config: string; confirm: string; delete: string; deleteSuccess: string; @@ -468,6 +469,8 @@ declare namespace App { }; addRole: string; editRole: string; + menuAuth: string; + buttonAuth: string; }; user: { title: string; @@ -495,6 +498,7 @@ declare namespace App { }; }; menu: { + home: string; title: string; id: string; parentId: string; @@ -521,6 +525,7 @@ declare namespace App { buttonDesc: string; menuStatus: string; form: { + home: string; menuType: string; menuName: string; routeName: string; diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts index afeb02d0..c426abcf 100644 --- a/src/typings/components.d.ts +++ b/src/typings/components.d.ts @@ -79,6 +79,7 @@ declare module 'vue' { NTag: typeof import('naive-ui')['NTag'] NThing: typeof import('naive-ui')['NThing'] NTooltip: typeof import('naive-ui')['NTooltip'] + NTree: typeof import('naive-ui')['NTree'] PinToggler: typeof import('./../components/common/pin-toggler.vue')['default'] ReloadButton: typeof import('./../components/common/reload-button.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/src/views/manage/role/modules/button-auth-modal.vue b/src/views/manage/role/modules/button-auth-modal.vue new file mode 100644 index 00000000..68b09540 --- /dev/null +++ b/src/views/manage/role/modules/button-auth-modal.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/src/views/manage/role/modules/menu-auth-modal.vue b/src/views/manage/role/modules/menu-auth-modal.vue new file mode 100644 index 00000000..9fed5215 --- /dev/null +++ b/src/views/manage/role/modules/menu-auth-modal.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/views/manage/role/modules/role-operate-drawer.vue b/src/views/manage/role/modules/role-operate-drawer.vue index 523d64db..4a0969df 100644 --- a/src/views/manage/role/modules/role-operate-drawer.vue +++ b/src/views/manage/role/modules/role-operate-drawer.vue @@ -1,8 +1,11 @@