diff --git a/src/api/system/permissions.js b/src/api/system/permissions.js new file mode 100644 index 0000000..3a6cd99 --- /dev/null +++ b/src/api/system/permissions.js @@ -0,0 +1,83 @@ +import request from '@/utils/request' + +/** + * 获取权限树形列表 + * @returns {Promise} 返回权限树形数据 + */ +export function getPermissionTree() { + return request.get('/api/permissions/tree') +} + +/** + * 创建权限 + * @param {Object} data - 权限数据 + * @param {string} data.name - 权限名称 + * @param {string} data.code - 权限代码 + * @param {string} [data.description] - 权限描述 + * @param {string} [data.category] - 权限分类 + * @param {string} data.type - 权限类型:menu-菜单 button-按钮 api-接口 + * @param {number} [data.parent_id] - 父权限ID + * @param {string} [data.path] - 权限路径(菜单权限必填) + * @param {string} [data.component] - 前端组件(菜单权限必填) + * @param {string} [data.icon] - 图标(菜单权限可选) + * @param {number} [data.sort_order=0] - 排序号 + * @param {number} [data.status=1] - 状态:0-禁用 1-启用 + * @returns {Promise} 返回创建结果 + */ +export function createPermission(data) { + return request.post('/api/permissions', { + code: data.code, + name: data.name, + description: data.description, + category: data.category, + type: data.type, + parent_id: data.parent_id, + path: data.path, + component: data.component, + icon: data.icon, + sort_order: data.sort_order || 0, + status: data.status || 1 + }) +} + +/** + * 更新权限 + * @param {number} id - 权限ID + * @param {Object} data - 更新数据 + * @param {string} data.name - 权限名称 + * @param {string} data.code - 权限代码 + * @param {string} [data.description] - 权限描述 + * @param {string} [data.category] - 权限分类 + * @param {string} data.type - 权限类型 + * @param {number} [data.parent_id] - 父权限ID + * @param {string} [data.path] - 权限路径(菜单权限必填) + * @param {string} [data.component] - 前端组件(菜单权限必填) + * @param {string} [data.icon] - 图标(菜单权限可选) + * @param {number} [data.sort_order] - 排序号 + * @param {number} [data.status] - 状态 + * @returns {Promise} 返回更新结果 + */ +export function updatePermission(id, data) { + return request.put(`/api/permissions/${id}`, { + name: data.name, + code: data.code, + description: data.description, + category: data.category, + type: data.type, + parent_id: data.parent_id, + path: data.path, + component: data.component, + icon: data.icon, + sort_order: data.sort_order, + status: data.status + }) +} + +/** + * 删除权限 + * @param {number} id - 权限ID + * @returns {Promise} 返回删除结果 + */ +export function deletePermission(id) { + return request.delete(`/api/permissions/${id}`) +} \ No newline at end of file diff --git a/src/api/system/roles.js b/src/api/system/roles.js new file mode 100644 index 0000000..a63f80a --- /dev/null +++ b/src/api/system/roles.js @@ -0,0 +1,99 @@ +import request from '@/utils/request' + +/** + * 获取角色列表 + * @param {Object} params - 查询参数 + * @param {number} [params.page=1] - 页码 + * @param {number} [params.page_size=10] - 每页条数 + * @param {string} [params.keyword] - 搜索关键词 + * @returns {Promise} 返回角色列表数据 + */ +export function getRoleList(params = {}) { + return request.get('/api/roles', { + params: { + page: params.page || 1, + page_size: params.page_size || 10, + keyword: params.keyword + } + }) +} + +/** + * 获取角色详情 + * @param {number|string} id - 角色ID + * @returns {Promise} 返回角色详情数据 + */ +export function getRoleDetail(id) { + return request.get(`/api/roles/${id}`) +} + +/** + * 创建角色 + * @param {Object} data - 角色数据 + * @param {string} data.name - 角色名称 + * @param {string} [data.description] - 角色描述 + * @returns {Promise} 返回创建结果 + */ +export function createRole(data) { + return request.post('/api/roles', data) +} + +/** + * 更新角色 + * @param {number|string} id - 角色ID + * @param {Object} data - 更新数据 + * @param {string} data.name - 角色名称 + * @param {string} [data.description] - 角色描述 + * @param {Array} [data.permissions] - 权限ID数组 + * @returns {Promise} 返回更新结果 + */ +export function updateRole(id, data) { + return request.put(`/api/roles/${id}`, { + name: data.name, + description: data.description, + permissions: data.permissions || [] + }) +} + +/** + * 删除角色 + * @param {number|string} id - 角色ID + * @returns {Promise} 返回删除结果 + */ +export function deleteRole(id) { + return request.delete(`/api/roles/${id}`) +} + +/** + * 获取所有权限列表(树形结构) + * @returns {Promise} 返回权限树形数据 + */ +export function getPermissionTree() { + return request.get('/api/permissions/tree') +} + +/** + * 获取角色权限 + * @param {number|string} id - 角色ID + * @returns {Promise} 返回角色权限数据 + */ +export function getRolePermissions(id) { + return request.get(`/api/roles/${id}`) +} + +/** + * 分配角色权限 + * @param {number|string} id - 角色ID + * @param {Object} data - 权限数据 + * @param {string} data.name - 角色名称 + * @param {string} data.description - 角色描述 + * @param {Array} data.permissions - 权限ID数组 + * @returns {Promise} 返回分配结果 + */ +export function assignRolePermissions(id, data) { + return request.put(`/api/roles/${id}`, { + name: data.name, + description: data.description, + permissions: Array.isArray(data.permissions) ? data.permissions.filter(id => id != null) : [] + }) +} \ No newline at end of file diff --git a/src/views/system/permissions/index.vue b/src/views/system/permissions/index.vue index c9f674e..9f366e0 100644 --- a/src/views/system/permissions/index.vue +++ b/src/views/system/permissions/index.vue @@ -1,229 +1,482 @@