From 9b6f5955c32a81c4c3e427d867995c4b6a865540 Mon Sep 17 00:00:00 2001 From: dk <1260500659@qq.com> Date: Fri, 10 Apr 2026 16:30:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(user-management-relation):=20=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E5=B8=A6=E4=BA=BA=E5=85=B3=E7=B3=BB=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E3=80=81=E7=BC=96=E5=86=99=E5=90=84=E7=BB=84=E4=BB=B6=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E5=AE=8C=E5=96=84=E8=AF=B8=E5=A4=9A=E7=BB=86?= =?UTF-8?q?=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/langs/en-us.ts | 1 + src/locales/langs/zh-cn.ts | 1 + src/service/api/system-manage.ts | 115 +++++ src/typings/api/system-manage.d.ts | 87 ++++ src/typings/components.d.ts | 1 + .../system/user-management-relation/index.vue | 422 +++++++++++++++++- .../modules/relation-operate-dialog.vue | 316 +++++++++++++ .../modules/relation-search.vue | 97 ++++ 8 files changed, 1038 insertions(+), 2 deletions(-) create mode 100644 src/views/system/user-management-relation/modules/relation-operate-dialog.vue create mode 100644 src/views/system/user-management-relation/modules/relation-search.vue diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 3072d1f..e74c054 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -176,6 +176,7 @@ const local: App.I18n.Schema = { system_menu: 'Menu Management', system_post: 'Post Management', system_dict: 'Dictionary Management', + 'system_user-management-relation': 'User Management Relation', exception: 'Exception', exception_403: '403', exception_404: '404', diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index b6aa4b3..80a023c 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -176,6 +176,7 @@ const local: App.I18n.Schema = { system_menu: '菜单管理', system_post: '岗位管理', system_dict: '字典管理', + 'system_user-management-relation': '带人关系', exception: '异常页', exception_403: '403', exception_404: '404', diff --git a/src/service/api/system-manage.ts b/src/service/api/system-manage.ts index b6d25ce..8d00b9c 100644 --- a/src/service/api/system-manage.ts +++ b/src/service/api/system-manage.ts @@ -1,6 +1,7 @@ import { SYSTEM_SERVICE_PREFIX } from '@/constants/service'; import { request } from '../request'; import type { ServiceRequestResult } from './shared'; +import UserManagementRelationQueryReqVO = Api.SystemManage.UserManagementRelationQueryReqVO; const ROLE_PREFIX = `${SYSTEM_SERVICE_PREFIX}/role`; const MENU_PREFIX = `${SYSTEM_SERVICE_PREFIX}/menu`; @@ -9,6 +10,7 @@ const USER_PREFIX = `${SYSTEM_SERVICE_PREFIX}/user`; const DEPT_PREFIX = `${SYSTEM_SERVICE_PREFIX}/dept`; const POST_PREFIX = `${SYSTEM_SERVICE_PREFIX}/post`; const ORG_LEADER_PREFIX = `${SYSTEM_SERVICE_PREFIX}/org-leader`; +const USER_MANAGEMENT_RELATION_PREFIX = `${SYSTEM_SERVICE_PREFIX}/user-management-relation`; function createRolePageQuery(params?: Api.SystemManage.RoleSearchParams) { const query = new URLSearchParams(); @@ -296,6 +298,14 @@ export function fetchBatchDeletePost(ids: number[]) { }); } +/** 获取用户简单列表(用于用户选择下拉框) */ +export function fetchGetUserSimpleList() { + return request({ + url: `${USER_PREFIX}/simple-list`, + method: 'get' + }); +} + /** 获取用户分页 */ export function fetchGetUserPage(params?: Api.SystemManage.UserSearchParams) { return request({ @@ -466,3 +476,108 @@ export function fetchAssignUserRoles(data: Api.SystemManage.AssignUserRoleParams data }); } + +// ==================== 用户带人关系相关 API ==================== +/** + * 获取用户带人关系树形结构 + * + * 用于树形控件展示,包含用户的上下级层级关系 + * 树形结构特点: + * - 根节点:最高领导,没有上级 + * - 中间节点:有上级也有下级 + * - 叶子节点:基层员工,没有下级 + */ +export function fetchGetUserManagementRelationTree() { + return request({ + url: `${USER_MANAGEMENT_RELATION_PREFIX}/tree`, + method: 'get' + }); +} + +/** + * 通过搜索框的查询条件,获取用户带人关系树形结构 + * 用于树形控件展示,包含用户的上下级层级关系 + */ +export function fetchGetUserManagementRelationQuery(query: UserManagementRelationQueryReqVO) { + return request({ + url: `${USER_MANAGEMENT_RELATION_PREFIX}/query`, + method: 'get', + params: query + }); +} + +/** + * 获取用户带人关系详情 + * + * 根据主键 ID 查询单条用户带人关系记录 + * + * @param id 关系记录主键 ID + */ +export function fetchGetUserManagementRelation(id: number) { + return request({ + url: `${USER_MANAGEMENT_RELATION_PREFIX}/get`, + method: 'get', + params: { id } + }); +} + +/** + * 创建用户带人关系 + * + * 创建新的用户带人关系记录 + * + * @param data 创建请求参数 + */ +export function fetchCreateUserManagementRelation(data: Api.SystemManage.UserManagementRelationSaveReqVO) { + return request({ + url: `${USER_MANAGEMENT_RELATION_PREFIX}/create`, + method: 'post', + data + }); +} + +/** + * 更新用户带人关系 + * + * 更新已有的用户带人关系记录 + * + * @param data 更新请求参数(包含 id) + */ +export function fetchUpdateUserManagementRelation( + data: { id: number } & Api.SystemManage.UserManagementRelationSaveReqVO +) { + return request({ + url: `${USER_MANAGEMENT_RELATION_PREFIX}/update`, + method: 'put', + data + }); +} + +/** + * 删除用户带人关系 + * + * 根据主键 ID 删除单条用户带人关系记录 + * + * @param id 关系记录主键 ID + */ +export function fetchDeleteUserManagementRelation(id: number | null) { + return request({ + url: `${USER_MANAGEMENT_RELATION_PREFIX}/delete`, + method: 'delete', + params: { id } + }); +} + +/** + * 批量删除用户带人关系 + * + * 根据主键 ID 列表批量删除用户带人关系记录 + * + * @param ids 关系记录主键 ID 列表 + */ +export function fetchBatchDeleteUserManagementRelation(ids: number[]) { + return request({ + url: `${USER_MANAGEMENT_RELATION_PREFIX}/delete-list?${createBatchDeleteQuery(ids)}`, + method: 'delete' + }); +} diff --git a/src/typings/api/system-manage.d.ts b/src/typings/api/system-manage.d.ts index 71784a4..306d04e 100644 --- a/src/typings/api/system-manage.d.ts +++ b/src/typings/api/system-manage.d.ts @@ -314,5 +314,92 @@ declare namespace Api { roleId: number; menuIds: number[]; } + + /** + * 用户带人关系记录 + * + * 用于管理用户之间的带人关系,支持多层级上下级关系 + * 对应后端 UserManagementRelationRespVO + */ + interface UserManagementRelation { + /** 主键 ID */ + id: any; + /** 管理者用户 ID */ + managerUserId: any; + /** 被管理用户 ID */ + subordinateUserId: any; + /** 生效开始时间 */ + effectiveFrom?: number | null; + /** 生效结束时间 */ + effectiveUntil?: number | null; + /** 备注 */ + remark?: string | null; + /** 创建时间 */ + createTime: number; + } + + /** + * 用户带人关系树形响应 VO + * + * 专门用于树形结构展示的响应对象 + * 对应后端 UserManagementRelationTreeRespVO + */ + interface UserManagementRelationTreeRespVO { + /** 关系记录主键 ID(最高领导为 null) */ + id: number | null; + /** 用户 ID */ + userId: number; + /** 用户昵称 */ + userNickname: string; + /** 上级用户 ID(最高领导为 null) */ + managerUserId: number | null; + /** 上级用户昵称(最高领导为 null) */ + managerNickname: string | null; + /** 下级用户列表(基层员工为空列表) */ + children?: UserManagementRelationTreeRespVO[] | null; + } + + /** + * 用户带人关系保存参数 + * + * 用于创建和更新操作 + * 对应后端 UserManagementRelationSaveReqVO + */ + interface UserManagementRelationSaveReqVO { + /** 主键 ID(更新时需要) */ + id?: number; + /** 管理者用户 ID */ + managerUserId: any; + /** 被管理用户 ID */ + subordinateUserId: any; + /** 生效开始时间 */ + effectiveFrom?: number | null; + /** 生效结束时间 */ + effectiveUntil?: number | null; + /** 备注 */ + remark?: string | null; + } + + /** + * 用户带人关系查询参数(列表) + * + * 用于搜索框的查询和导出 + * 对应后端 UserManagementRelationQueryReqVO + */ + type UserManagementRelationQueryReqVO = CommonType.RecordNullable< + Pick + >; + + /** + * 用户简单信息 + * + * 用于用户选择下拉框 + */ + interface UserSimple { + /** 用户 ID */ + id: number; + /** 用户昵称 */ + nickname: string; + } } } diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts index 6c8fb05..218288c 100644 --- a/src/typings/components.d.ts +++ b/src/typings/components.d.ts @@ -94,6 +94,7 @@ declare module 'vue' { 'IconIc:roundPlus': typeof import('~icons/ic/round-plus')['default'] 'IconIconParkOutline:equalRatio': typeof import('~icons/icon-park-outline/equal-ratio')['default'] IconIcRoundDelete: typeof import('~icons/ic/round-delete')['default'] + IconIcRoundEdit: typeof import('~icons/ic/round-edit')['default'] IconIcRoundPlus: typeof import('~icons/ic/round-plus')['default'] IconIcRoundRefresh: typeof import('~icons/ic/round-refresh')['default'] IconIcRoundRemove: typeof import('~icons/ic/round-remove')['default'] diff --git a/src/views/system/user-management-relation/index.vue b/src/views/system/user-management-relation/index.vue index 936699c..bc5f151 100644 --- a/src/views/system/user-management-relation/index.vue +++ b/src/views/system/user-management-relation/index.vue @@ -1,11 +1,429 @@ - diff --git a/src/views/system/user-management-relation/modules/relation-operate-dialog.vue b/src/views/system/user-management-relation/modules/relation-operate-dialog.vue new file mode 100644 index 0000000..a28b994 --- /dev/null +++ b/src/views/system/user-management-relation/modules/relation-operate-dialog.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/src/views/system/user-management-relation/modules/relation-search.vue b/src/views/system/user-management-relation/modules/relation-search.vue new file mode 100644 index 0000000..97ae85d --- /dev/null +++ b/src/views/system/user-management-relation/modules/relation-search.vue @@ -0,0 +1,97 @@ + + + + +