From ceef5ceb154183e5cb7639a0c092972ef647c0f7 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Sun, 14 Apr 2024 11:31:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/common/common.ts | 5 + src/apis/system/index.ts | 1 + src/apis/system/role.ts | 29 +++ src/apis/system/type.ts | 38 +++ src/hooks/app/index.ts | 1 + src/hooks/app/useMenu.ts | 21 ++ src/views/system/role/AddRoleModal.vue | 272 +++++++++++++++++++++ src/views/system/role/RoleDetailDrawer.vue | 87 +++++++ src/views/system/role/index.vue | 151 ++++++++++++ 9 files changed, 605 insertions(+) create mode 100644 src/apis/system/role.ts create mode 100644 src/hooks/app/useMenu.ts create mode 100644 src/views/system/role/AddRoleModal.vue create mode 100644 src/views/system/role/RoleDetailDrawer.vue create mode 100644 src/views/system/role/index.vue diff --git a/src/apis/common/common.ts b/src/apis/common/common.ts index 74ce0c0..4760e85 100644 --- a/src/apis/common/common.ts +++ b/src/apis/common/common.ts @@ -9,6 +9,11 @@ export function listDeptTree(query: { description: string }) { return http.get(`${BASE_URL}/tree/dept`, query) } +/** @desc 查询菜单树 */ +export function listMenuTree(query: { description: string }) { + return http.get(`${BASE_URL}/tree/menu`, query) +} + /** @desc 查询角色列表 */ export function listRoleDict(query?: { name: string; status: number }) { return http.get(`${BASE_URL}/dict/role`, query) diff --git a/src/apis/system/index.ts b/src/apis/system/index.ts index ba04154..9799be0 100644 --- a/src/apis/system/index.ts +++ b/src/apis/system/index.ts @@ -1,3 +1,4 @@ +export * from './role' export * from './menu' export * from './dept' export * from './log' diff --git a/src/apis/system/role.ts b/src/apis/system/role.ts new file mode 100644 index 0000000..2b9df10 --- /dev/null +++ b/src/apis/system/role.ts @@ -0,0 +1,29 @@ +import http from '@/utils/http' +import type * as System from './type' + +const BASE_URL = '/system/role' + +/** @desc 查询角色列表 */ +export function listRole(query: System.RoleQuery) { + return http.get>(`${BASE_URL}`, query) +} + +/** @desc 查询角色详情 */ +export function getRole(id: string) { + return http.get(`${BASE_URL}/${id}`) +} + +/** @desc 新增角色 */ +export function addRole(data: any) { + return http.post(`${BASE_URL}`, data) +} + +/** @desc 修改角色 */ +export function updateRole(data: any, id: string) { + return http.put(`${BASE_URL}/${id}`, data) +} + +/** @desc 删除角色 */ +export function deleteRole(ids: string | Array) { + return http.del(`${BASE_URL}/${ids}`) +} diff --git a/src/apis/system/type.ts b/src/apis/system/type.ts index 55c4c33..b169408 100644 --- a/src/apis/system/type.ts +++ b/src/apis/system/type.ts @@ -1,3 +1,41 @@ +/** 系统角色类型 */ +export interface RoleResp { + id: string + name: string + code: string + sort: number + description: string + dataScope: number + status: 1 | 2 + isSystem: boolean + createUserString: string + createTime: string + updateUserString: string + updateTime: string + disabled: boolean +} +export interface RoleDetailResp { + id: string + name: string + code: string + sort: number + description: string + menuIds: Array + dataScope: number + deptIds: Array + status: 1 | 2 + isSystem: boolean + createUserString: string + createTime: string + updateUserString: string + updateTime: string + disabled: boolean +} +export interface RoleQuery extends PageQuery { + description?: string + status?: number +} + /** 系统菜单类型 */ export interface MenuResp { id: string diff --git a/src/hooks/app/index.ts b/src/hooks/app/index.ts index 6c0fbe3..ceab3a6 100644 --- a/src/hooks/app/index.ts +++ b/src/hooks/app/index.ts @@ -1,3 +1,4 @@ +export * from './useMenu' export * from './useDept' export * from './useRole' export * from './useDict' diff --git a/src/hooks/app/useMenu.ts b/src/hooks/app/useMenu.ts new file mode 100644 index 0000000..5455aea --- /dev/null +++ b/src/hooks/app/useMenu.ts @@ -0,0 +1,21 @@ +import { ref } from 'vue' +import { listMenuTree } from '@/apis' +import type { TreeNodeData } from '@arco-design/web-vue' + +/** 菜单模块 */ +export function useMenu(options?: { onSuccess?: () => void }) { + const loading = ref(false) + const menuList = ref([]) + + const getMenuList = async (name?: string) => { + try { + loading.value = true + const res = await listMenuTree({ description: name }) + menuList.value = res.data + options?.onSuccess && options.onSuccess() + } finally { + loading.value = false + } + } + return { menuList, getMenuList, loading } +} diff --git a/src/views/system/role/AddRoleModal.vue b/src/views/system/role/AddRoleModal.vue new file mode 100644 index 0000000..13fe28f --- /dev/null +++ b/src/views/system/role/AddRoleModal.vue @@ -0,0 +1,272 @@ + + + + + diff --git a/src/views/system/role/RoleDetailDrawer.vue b/src/views/system/role/RoleDetailDrawer.vue new file mode 100644 index 0000000..76c1154 --- /dev/null +++ b/src/views/system/role/RoleDetailDrawer.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue new file mode 100644 index 0000000..b4123d6 --- /dev/null +++ b/src/views/system/role/index.vue @@ -0,0 +1,151 @@ + + + + +