From efc1c25db86d28438a2c324a3dc302501e1fdf8f Mon Sep 17 00:00:00 2001 From: kailong321200875 <321200875@qq.com> Date: Sun, 12 Nov 2023 11:37:28 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=9D=83=E9=99=90?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mock/department/index.ts | 2 - mock/menu/index.ts | 126 +++++++++++++++--- src/locales/zh-CN.ts | 2 +- src/views/Authorization/Menu/Menu.vue | 8 +- .../Menu/components/AddButtonPermission.vue | 67 ++++++++++ .../Authorization/Menu/components/Detail.vue | 18 +++ .../Authorization/Menu/components/Write.vue | 89 ++++++++++--- src/views/Authorization/Role/Role.vue | 5 + .../Authorization/Role/components/Detail.vue | 106 +++++++++++++++ .../Authorization/Role/components/Write.vue | 6 +- src/views/Authorization/User/User.vue | 17 +++ 11 files changed, 402 insertions(+), 44 deletions(-) create mode 100644 src/views/Authorization/Menu/components/AddButtonPermission.vue create mode 100644 src/views/Authorization/Role/components/Detail.vue diff --git a/mock/department/index.ts b/mock/department/index.ts index 67ac648..598f926 100644 --- a/mock/department/index.ts +++ b/mock/department/index.ts @@ -124,8 +124,6 @@ export default [ email: '@EMAIL', // 创建时间 createTime: '@datetime', - // 角色 - role: '@first', // 用户id id: toAnyString() }) diff --git a/mock/menu/index.ts b/mock/menu/index.ts index 488b82c..bf04570 100644 --- a/mock/menu/index.ts +++ b/mock/menu/index.ts @@ -24,6 +24,8 @@ export default [ name: 'Dashboard', status: Mock.Random.integer(0, 1), id: 1, + type: 0, + parentId: undefined, title: '首页', meta: { title: '首页', @@ -37,10 +39,23 @@ export default [ name: 'Analysis', status: Mock.Random.integer(0, 1), id: 2, + type: 1, + parentId: 1, title: '分析页', + permissionList: [ + { + label: '新增', + value: 'add' + }, + { + label: '编辑', + value: 'edit' + } + ], meta: { title: '分析页', - noCache: true + noCache: true, + permission: ['add', 'edit'] } }, { @@ -49,7 +64,23 @@ export default [ name: 'Workplace', status: Mock.Random.integer(0, 1), id: 3, + type: 1, + parentId: 1, title: '工作台', + permissionList: [ + { + label: '新增', + value: 'add' + }, + { + label: '编辑', + value: 'edit' + }, + { + label: '删除', + value: 'delete' + } + ], meta: { title: '工作台', noCache: true @@ -60,7 +91,6 @@ export default [ { path: '/external-link', component: '#', - title: '文档', meta: { title: '文档', icon: 'clarity:document-solid' @@ -68,12 +98,17 @@ export default [ name: 'ExternalLink', status: Mock.Random.integer(0, 1), id: 4, + type: 0, + parentId: undefined, + title: '文档', children: [ { path: 'https://element-plus-admin-doc.cn/', name: 'DocumentLink', status: Mock.Random.integer(0, 1), id: 5, + type: 1, + parentId: 4, title: '文档', meta: { title: '文档' @@ -88,6 +123,8 @@ export default [ name: 'Level', status: Mock.Random.integer(0, 1), id: 6, + type: 0, + parentId: undefined, title: '菜单', meta: { title: '菜单', @@ -100,8 +137,10 @@ export default [ component: '##', status: Mock.Random.integer(0, 1), id: 7, - redirect: '/level/menu1/menu1-1/menu1-1-1', + type: 0, + parentId: 6, title: '菜单1', + redirect: '/level/menu1/menu1-1/menu1-1-1', meta: { title: '菜单1' }, @@ -112,8 +151,10 @@ export default [ component: '##', status: Mock.Random.integer(0, 1), id: 8, - redirect: '/level/menu1/menu1-1/menu1-1-1', + type: 0, + parentId: 7, title: '菜单1-1', + redirect: '/level/menu1/menu1-1/menu1-1-1', meta: { title: '菜单1-1', alwaysShow: true @@ -125,7 +166,8 @@ export default [ component: 'views/Level/Menu111', status: Mock.Random.integer(0, 1), id: 9, - permission: ['edit', 'add', 'delete'], + type: 1, + parentId: 8, title: '菜单1-1-1', meta: { title: '菜单1-1-1' @@ -139,7 +181,8 @@ export default [ component: 'views/Level/Menu12', status: Mock.Random.integer(0, 1), id: 10, - permission: ['edit', 'add', 'delete'], + type: 1, + parentId: 7, title: '菜单1-2', meta: { title: '菜单1-2' @@ -153,7 +196,8 @@ export default [ component: 'views/Level/Menu2', status: Mock.Random.integer(0, 1), id: 11, - permission: ['edit', 'add', 'delete'], + type: 1, + parentId: 6, title: '菜单2', meta: { title: '菜单2' @@ -168,6 +212,8 @@ export default [ name: 'Example', status: Mock.Random.integer(0, 1), id: 12, + type: 0, + parentId: undefined, title: '综合示例', meta: { title: '综合示例', @@ -181,11 +227,29 @@ export default [ name: 'ExampleDialog', status: Mock.Random.integer(0, 1), id: 13, + type: 1, + parentId: 12, title: '综合示例-弹窗', - permission: ['edit', 'add', 'delete'], + permissionList: [ + { + label: '新增', + value: 'add' + }, + { + label: '编辑', + value: 'edit' + }, + { + label: '删除', + value: 'delete' + }, + { + label: '查看', + value: 'view' + } + ], meta: { - title: '综合示例-弹窗', - permission: ['edit', 'add'] + title: '综合示例-弹窗' } }, { @@ -194,11 +258,29 @@ export default [ name: 'ExamplePage', status: Mock.Random.integer(0, 1), id: 14, - permission: ['edit', 'add', 'delete'], + type: 1, + parentId: 12, title: '综合示例-页面', + permissionList: [ + { + label: '新增', + value: 'edit' + }, + { + label: '编辑', + value: 'edit' + }, + { + label: '删除', + value: 'delete' + }, + { + label: '查看', + value: 'view' + } + ], meta: { - title: '综合示例-页面', - permission: ['edit', 'add'] + title: '综合示例-页面' } }, { @@ -207,7 +289,8 @@ export default [ name: 'ExampleAdd', status: Mock.Random.integer(0, 1), id: 15, - permission: ['edit', 'add', 'delete'], + type: 1, + parentId: 12, title: '综合示例-新增', meta: { title: '综合示例-新增', @@ -215,8 +298,7 @@ export default [ noCache: true, hidden: true, showMainRoute: true, - activeMenu: '/example/example-page', - permission: ['delete', 'add'] + activeMenu: '/example/example-page' } }, { @@ -225,7 +307,8 @@ export default [ name: 'ExampleEdit', status: Mock.Random.integer(0, 1), id: 16, - permission: ['edit', 'add', 'delete'], + type: 1, + parentId: 12, title: '综合示例-编辑', meta: { title: '综合示例-编辑', @@ -233,8 +316,7 @@ export default [ noCache: true, hidden: true, showMainRoute: true, - activeMenu: '/example/example-page', - permission: ['delete', 'add'] + activeMenu: '/example/example-page' } }, { @@ -243,7 +325,8 @@ export default [ name: 'ExampleDetail', status: Mock.Random.integer(0, 1), id: 17, - permission: ['edit', 'add', 'delete'], + type: 1, + parentId: 12, title: '综合示例-详情', meta: { title: '综合示例-详情', @@ -251,8 +334,7 @@ export default [ noCache: true, hidden: true, showMainRoute: true, - activeMenu: '/example/example-page', - permission: ['delete', 'edit'] + activeMenu: '/example/example-page' } } ] diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 98068ec..cab0dd8 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -521,7 +521,7 @@ export default { menu: { menuName: '菜单名称', icon: '图标', - permission: '权限标识', + permission: '按钮权限', component: '组件', path: '路径', status: '状态', diff --git a/src/views/Authorization/Menu/Menu.vue b/src/views/Authorization/Menu/Menu.vue index ee5bd22..3f5a976 100644 --- a/src/views/Authorization/Menu/Menu.vue +++ b/src/views/Authorization/Menu/Menu.vue @@ -35,7 +35,13 @@ const tableColumns = reactive([ }, { field: 'meta.title', - label: t('menu.menuName') + label: t('menu.menuName'), + slots: { + default: (data: any) => { + const title = data.row.meta.title + return <>{title} + } + } }, { field: 'meta.icon', diff --git a/src/views/Authorization/Menu/components/AddButtonPermission.vue b/src/views/Authorization/Menu/components/AddButtonPermission.vue new file mode 100644 index 0000000..31ad3c9 --- /dev/null +++ b/src/views/Authorization/Menu/components/AddButtonPermission.vue @@ -0,0 +1,67 @@ + + + diff --git a/src/views/Authorization/Menu/components/Detail.vue b/src/views/Authorization/Menu/components/Detail.vue index 2b75627..54b2cad 100644 --- a/src/views/Authorization/Menu/components/Detail.vue +++ b/src/views/Authorization/Menu/components/Detail.vue @@ -75,6 +75,24 @@ const detailSchema = ref([ field: 'meta.activeMenu', label: '高亮菜单' }, + { + field: 'permissionList', + label: '按钮权限', + span: 24, + slots: { + default: (data: any) => ( + <> + {data?.permissionList?.map((v) => { + return ( + + {v.label} + + ) + })} + + ) + } + }, { field: 'menuState', label: '菜单状态', diff --git a/src/views/Authorization/Menu/components/Write.vue b/src/views/Authorization/Menu/components/Write.vue index fc00cb4..d23c0a7 100644 --- a/src/views/Authorization/Menu/components/Write.vue +++ b/src/views/Authorization/Menu/components/Write.vue @@ -1,11 +1,12 @@ diff --git a/src/views/Authorization/Role/Role.vue b/src/views/Authorization/Role/Role.vue index a3c974f..9c4e68b 100644 --- a/src/views/Authorization/Role/Role.vue +++ b/src/views/Authorization/Role/Role.vue @@ -9,6 +9,7 @@ import { Search } from '@/components/Search' import { FormSchema } from '@/components/Form' import { ContentWrap } from '@/components/ContentWrap' import Write from './components/Write.vue' +import Detail from './components/Detail.vue' import { Dialog } from '@/components/Dialog' const { t } = useI18n() @@ -71,6 +72,9 @@ const tableColumns = reactive([ action(row, 'edit')}> {t('exampleDemo.edit')} + action(row, 'detail')}> + {t('exampleDemo.detail')} + {t('exampleDemo.del')} ) @@ -151,6 +155,7 @@ const save = async () => { +