diff --git a/apps/web-antd/src/api/system/role/index.ts b/apps/web-antd/src/api/system/role/index.ts new file mode 100644 index 00000000..92bfde01 --- /dev/null +++ b/apps/web-antd/src/api/system/role/index.ts @@ -0,0 +1,123 @@ +import type { DeptResp, Role } from './model'; + +import type { ID, IDS, PageQuery } from '#/api/common'; + +import { commonExport } from '#/api/helper'; +import { requestClient } from '#/api/request'; + +enum Api { + roleAllocatedList = '/system/role/authUser/allocatedList', + roleAuthCancel = '/system/role/authUser/cancel', + roleAuthCancelAll = '/system/role/authUser/cancelAll', + roleAuthSelectAll = '/system/role/authUser/selectAll', + roleChangeStatus = '/system/role/changeStatus', + roleDataScope = '/system/role/dataScope', + roleDeptTree = '/system/role/deptTree', + roleExport = '/system/role/export', + roleList = '/system/role/list', + roleOptionSelect = '/system/role/optionselect', + roleUnallocatedList = '/system/role/authUser/unallocatedList', + root = '/system/role', +} + +export function roleList(params?: PageQuery) { + return requestClient.get(Api.roleList, { params }); +} + +export function roleExport(data: any) { + return commonExport(Api.roleExport, data); +} + +export function roleInfo(roleId: ID) { + return requestClient.get(`${Api.root}/${roleId}`); +} + +export function roleAdd(data: any) { + return requestClient.postWithMsg(Api.root, data); +} + +export function roleUpdate(data: any) { + return requestClient.putWithMsg(Api.root, data); +} + +export function roleChangeStatus(data: any) { + return requestClient.putWithMsg(Api.roleChangeStatus, data); +} + +export function roleRemove(roleIds: IDS) { + return requestClient.deleteWithMsg(`${Api.root}/${roleIds}`); +} + +/** + * 更新数据权限 + * @param data + * @returns void + */ +export function roleDataScope(data: any) { + return requestClient.putWithMsg(Api.roleDataScope, data); +} + +export function roleOptionSelect(params?: any) { + return requestClient.get(Api.roleOptionSelect, { params }); +} + +export function roleAllocatedList(params: any) { + return requestClient.get(Api.roleAllocatedList, params); +} + +/** + * 未授权的用户 + * @param params + * @returns void + */ +export function roleUnallocatedList(params: any) { + return requestClient.get(Api.roleUnallocatedList, { params }); +} + +/** + * 取消授权 + * @param data {userId: 2, roleId: "2"} + * @returns void + */ +export function roleAuthCancel(data: any) { + return requestClient.putWithMsg(Api.roleAuthCancel, data); +} + +/** + * 批量取消授权 + * @param roleId + * @param userIds + * @returns void + */ +export function roleAuthCancelAll( + roleId: number | string, + userIds: number[] | string[], +) { + return requestClient.putWithMsg( + `${Api.roleAuthCancelAll}?roleId=${roleId}&userIds=${userIds.join(',')}`, + ); +} + +/** + * 批量授权用户 + * @param roleId + * @param userIds + * @returns void + */ +export function roleSelectAll( + roleId: number | string, + userIds: number[] | string[], +) { + return requestClient.putWithMsg( + `${Api.roleAuthSelectAll}?roleId=${roleId}&userIds=${userIds.join(',')}`, + ); +} + +/** + * 部门树 + * @param roleId 角色id + * @returns DeptResp + */ +export function roleDeptTree(roleId: ID) { + return requestClient.get(`${Api.roleDeptTree}/${roleId}`); +} diff --git a/apps/web-antd/src/api/system/role/model.d.ts b/apps/web-antd/src/api/system/role/model.d.ts new file mode 100644 index 00000000..35aab961 --- /dev/null +++ b/apps/web-antd/src/api/system/role/model.d.ts @@ -0,0 +1,29 @@ +export interface Role { + roleId: number; + roleName: string; + roleKey: string; + roleSort: number; + dataScope: string; + menuCheckStrictly: boolean; + deptCheckStrictly: boolean; + status: string; + remark: string; + createTime: string; + // 用户是否存在此角色标识 默认不存在 + flag: boolean; + superAdmin: boolean; +} + +export interface DeptOption { + id: number; + parentId: number; + label: string; + weight: number; + children: DeptOption[]; + key: string; // 实际上不存在 ide报错 +} + +export interface DeptResp { + checkedKeys: number[]; + depts: DeptOption[]; +} diff --git a/apps/web-antd/src/views/system/role/data.tsx b/apps/web-antd/src/views/system/role/data.tsx index cc4cd230..c29e8a3b 100644 --- a/apps/web-antd/src/views/system/role/data.tsx +++ b/apps/web-antd/src/views/system/role/data.tsx @@ -47,3 +47,72 @@ export const querySchema: FormSchemaGetter = () => [ label: '创建时间', }, ]; + +export const drawerSchema: FormSchemaGetter = () => [ + { + component: 'Input', + dependencies: { + show: () => false, + triggerFields: [''], + }, + fieldName: 'roleId', + label: '角色ID', + }, + { + component: 'Input', + componentProps: { + placeholder: '请输入', + }, + fieldName: 'roleName', + label: '角色名称', + rules: 'required', + }, + { + component: 'Input', + componentProps: { + placeholder: '请输入', + }, + fieldName: 'roleKey', + help: '如: test simpleUser等', + label: '权限标识', + rules: 'required', + }, + { + component: 'InputNumber', + componentProps: { + placeholder: '请输入', + }, + fieldName: 'roleSort', + label: '角色排序', + rules: 'required', + }, + { + component: 'Select', + componentProps: { + allowClear: false, + options: getDictOptions(DictEnum.SYS_NORMAL_DISABLE), + placeholder: '请选择', + }, + defaultValue: '0', + fieldName: 'status', + help: '修改后, 拥有该角色的用户将自动下线.', + label: '角色状态', + rules: 'required', + }, + { + component: 'Input', + defaultValue: [], + fieldName: 'menuIds', + label: '菜单权限', + }, + { + component: 'Textarea', + componentProps: { + placeholder: '请输入', + }, + defaultValue: '', + fieldName: 'remark', + formItemClass: 'items-baseline', + label: '备注', + }, +]; diff --git a/apps/web-antd/src/views/system/role/index.vue b/apps/web-antd/src/views/system/role/index.vue index a778a7db..a5c89b22 100644 --- a/apps/web-antd/src/views/system/role/index.vue +++ b/apps/web-antd/src/views/system/role/index.vue @@ -1,11 +1,18 @@ diff --git a/apps/web-antd/src/views/system/role/menu-select.vue b/apps/web-antd/src/views/system/role/menu-select.vue new file mode 100644 index 00000000..272771a7 --- /dev/null +++ b/apps/web-antd/src/views/system/role/menu-select.vue @@ -0,0 +1,137 @@ + + + diff --git a/apps/web-antd/src/views/system/role/role-drawer.vue b/apps/web-antd/src/views/system/role/role-drawer.vue new file mode 100644 index 00000000..26b94be6 --- /dev/null +++ b/apps/web-antd/src/views/system/role/role-drawer.vue @@ -0,0 +1,110 @@ + + + + +