From 5fea2bf1e6989be28eb2c14857596910a913f166 Mon Sep 17 00:00:00 2001 From: 91zhangliying <1663782157@qq.com> Date: Sat, 23 Jul 2022 22:50:28 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=92=E8=89=B2=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/menu.ts | 22 ++++- src/router/index.ts | 11 +++ src/store/modules/menu.ts | 10 +- src/utils/index.ts | 26 ++++++ src/views/menu/index.vue | 12 ++- src/views/rolePermission/index.vue | 144 +++++++++++++++++++++++++++++ 6 files changed, 220 insertions(+), 5 deletions(-) create mode 100644 src/views/rolePermission/index.vue diff --git a/src/api/menu.ts b/src/api/menu.ts index 6a950d9..2feffcd 100644 --- a/src/api/menu.ts +++ b/src/api/menu.ts @@ -2,13 +2,25 @@ import { Menu } from '../types/menu' import request, { QuickResponseData } from '../utils/request' const Api = { + roleMenuLsit: '/api/menu/getRoleMenuLsit', permissionMenuList: '/api/menu/getPermission', list: '/api/menu/getList', add: '/api/menu/add', update: '/api/menu/update', delete: '/api/menu/delete', + assign: '/api/menu/assignPermission', +} +export const getRoleMenuLsit = ( + roleId: string +): Promise>> => { + return request>>({ + url: Api.roleMenuLsit, + method: 'GET', + params: { + id: roleId, + }, + }) } - export const getPermissionMenuList = ( userId: string ): Promise>> => { @@ -49,3 +61,11 @@ export const deleteMenu = (id: string) => { }, }) } + +export const assignPermission = (data: any) => { + return request({ + url: Api.assign, + method: 'POST', + data, + }) +} diff --git a/src/router/index.ts b/src/router/index.ts index b6e0223..7e785b9 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -73,5 +73,16 @@ export const router = createRouter({ }, ], }, + { + path: '/permission', + component: layout, + redirect: 'rolePermission', + children: [ + { + path: 'rolePermission', + component: () => import('../views/rolePermission/index.vue'), + }, + ], + }, ], }) diff --git a/src/store/modules/menu.ts b/src/store/modules/menu.ts index aef2163..88b4f71 100644 --- a/src/store/modules/menu.ts +++ b/src/store/modules/menu.ts @@ -1,13 +1,14 @@ import { defineStore } from 'pinia' import { menuFormat } from '@/utils/index' import { QuickResponseData } from '@/utils/request' -import { Menu, MenuBar } from '@/types/menu' +import { Menu, MenuBar, MenuTree } from '@/types/menu' import { getPermissionMenuList } from '../../api/menu' interface MenuState { activeMenuId: string menuList: Array permissionMenuList: Array + permissionMenuTreeList: Array } export const useMenuStore = defineStore('menuStore', { state: (): MenuState => { @@ -15,6 +16,7 @@ export const useMenuStore = defineStore('menuStore', { activeMenuId: 'home', menuList: [], permissionMenuList: [], + permissionMenuTreeList: [], } }, getters: { @@ -24,6 +26,12 @@ export const useMenuStore = defineStore('menuStore', { getMenuList(): Array { return this.menuList }, + getPermissionMenuList(): Array { + return this.permissionMenuList + }, + getPermissionMenuTreeList(): Array { + return this.permissionMenuTreeList + }, }, actions: { setActiveMenuId(activeMenuId: string) { diff --git a/src/utils/index.ts b/src/utils/index.ts index 40d1356..1677cbe 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -71,6 +71,32 @@ export const tableTreeFormat = (data: any) => { return forderArr } +export const menuTreeFormat = (data: any) => { + const forderArr = [] + const menuArr = [] + const btnArr = [] + data.forEach((element) => { + if (element.menuType === 0) { + forderArr.push(element) + } + if (element.menuType === 1) { + menuArr.push(element) + } + if (element.menuType === 2) { + btnArr.push(element) + } + }) + menuArr.forEach((element, index) => { + const children = btnArr.filter((x) => x.pid === element.id) + menuArr[index].children = children + }) + forderArr.forEach((element, index) => { + const children = menuArr.filter((x) => x.pid === element.id) + forderArr[index].children = children + }) + return forderArr +} + export const menuFormat = (data: any) => { const forderArr = [] const menuArr = [] diff --git a/src/views/menu/index.vue b/src/views/menu/index.vue index f876ed8..27d252c 100644 --- a/src/views/menu/index.vue +++ b/src/views/menu/index.vue @@ -110,14 +110,20 @@ const formItems = reactive>([ editReadonly: true, prop: 'sort', }, + // { + // label: '父级菜单', + // labelWidth: '80px', + // vModel: 'pid', + // placeholder: '父级菜单', + // prop: 'pid', + // type: 'select', + // options: [], + // }, { label: '父级菜单', labelWidth: '80px', vModel: 'pid', placeholder: '父级菜单', - prop: 'pid', - type: 'select', - options: [], }, { label: '外链', diff --git a/src/views/rolePermission/index.vue b/src/views/rolePermission/index.vue new file mode 100644 index 0000000..b5f5132 --- /dev/null +++ b/src/views/rolePermission/index.vue @@ -0,0 +1,144 @@ + + + -- Gitee