From f0ea903d59d8b257dc74577297bd53f93bc15743 Mon Sep 17 00:00:00 2001 From: dk <1260500659@qq.com> Date: Sat, 9 May 2026 13:42:04 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E4=BA=A7=E5=93=81=E9=9C=80=E6=B1=82):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=A7=E5=93=81=E9=9C=80=E6=B1=82=E5=9C=A8?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=90=8E=E5=AD=98=E5=9C=A8=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/api/system-manage.ts | 27 +- src/typings/api/product.d.ts | 26 +- src/typings/components.d.ts | 1 + src/views/product/requirement/index.vue | 168 +++++++++-- .../requirement/modules/module-tree-node.vue | 48 +++- .../modules/requirement-action-dialog.vue | 3 +- .../modules/requirement-create-dialog.vue | 121 ++++---- .../modules/requirement-detail-dialog.vue | 188 ++++++------ .../modules/requirement-module-tree.vue | 105 ++----- .../modules/requirement-search.vue | 12 +- .../modules/requirement-split-dialog.vue | 76 ++--- .../system/user-management-relation/index.vue | 272 ++++++++++++++---- .../modules/relation-operate-dialog.vue | 43 ++- 13 files changed, 706 insertions(+), 384 deletions(-) diff --git a/src/service/api/system-manage.ts b/src/service/api/system-manage.ts index ca7c135..f2b4fec 100644 --- a/src/service/api/system-manage.ts +++ b/src/service/api/system-manage.ts @@ -667,7 +667,7 @@ export function fetchAssignUserRoles(data: Api.SystemManage.AssignUserRoleParams * - 中间节点:有上级也有下级 * - 叶子节点:基层员工,没有下级 */ -export function fetchGetUserManagementRelationTree(query: UserManagementRelationQueryReqVO) { +export async function fetchGetUserManagementRelationTree(query: UserManagementRelationQueryReqVO) { return request({ ...safeJsonRequestConfig, url: `${USER_MANAGEMENT_RELATION_PREFIX}/tree`, @@ -684,7 +684,7 @@ export function fetchGetUserManagementRelationTree(query: UserManagementRelation * 通过搜索框的查询条件,获取用户管理链路树形结构 * 用于树形控件展示,包含用户的上下级层级关系 */ -export function fetchGetUserManagementRelationQuery(query: UserManagementRelationQueryReqVO) { +export async function fetchGetUserManagementRelationQuery(query: UserManagementRelationQueryReqVO) { return request({ ...safeJsonRequestConfig, url: `${USER_MANAGEMENT_RELATION_PREFIX}/query`, @@ -704,7 +704,7 @@ export function fetchGetUserManagementRelationQuery(query: UserManagementRelatio * * @param id 关系记录主键 ID */ -export function fetchGetUserManagementRelation(id: string) { +export async function fetchGetUserManagementRelation(id: string) { return request({ ...safeJsonRequestConfig, url: `${USER_MANAGEMENT_RELATION_PREFIX}/get`, @@ -722,7 +722,7 @@ export function fetchGetUserManagementRelation(id: string) { * * @param data 创建请求参数 */ -export function fetchCreateUserManagementRelation(data: Api.SystemManage.UserManagementRelationSaveReqVO) { +export async function fetchCreateUserManagementRelation(data: Api.SystemManage.UserManagementRelationSaveReqVO) { return request({ ...safeJsonRequestConfig, url: `${USER_MANAGEMENT_RELATION_PREFIX}/create`, @@ -776,3 +776,22 @@ export function fetchBatchDeleteUserManagementRelation(ids: string[]) { method: 'delete' }); } + +/** + * 获取未绑定直属上级的候选下级用户列表 + * + * 用于获取尚未绑定直属上级的用户列表,供选择使用 + * + * @returns 候选下级用户列表 + */ +export async function fetchGetCandidateSubordinateUsers() { + return request({ + ...safeJsonRequestConfig, + url: `${USER_MANAGEMENT_RELATION_PREFIX}/candidate-users`, + method: 'get' + }).then(result => + mapServiceResult(result as ServiceRequestResult, data => data.map(normalizeUserSimple)) + ); +} + + diff --git a/src/typings/api/product.d.ts b/src/typings/api/product.d.ts index 2f64edd..672032d 100644 --- a/src/typings/api/product.d.ts +++ b/src/typings/api/product.d.ts @@ -250,17 +250,17 @@ declare namespace Api { moduleId: string; /** 是否需要评审(0不需要;1需要) */ reviewRequired: RequirementReviewRequired; - /** 需求标题 */ + /** 需求名称 */ title: string; - /** 需求描述(富文本) */ + /** 需求内容(富文本) */ description?: string | null; - /** 需求分类字典值 */ + /** 需求类型字典值 */ category: string; - /** 需求分类名称 */ + /** 需求类型名称 */ categoryName?: string | null; - /** 来源类型 */ + /** 需求来源类型 */ sourceType: RequirementSourceType; - /** 来源业务ID */ + /** 需求来源业务ID */ sourceBizId?: string | null; /** 优先级(0低 1中 2高 3紧急) */ priority: RequirementPriority; @@ -282,10 +282,8 @@ declare namespace Api { currentHandlerUserNickname?: string | null; /** 默认实现项目编号 */ implementProjectId?: string | null; - /** 实现项目名称 */ - implementProjectName?: string | null; - /** 预期完成时间 */ - completionDate: string; + /** 所需工时(小时) */ + workHours: number; /** 排序值 */ sort: number; /** 创建时间 */ @@ -378,9 +376,11 @@ declare namespace Api { | 'category' | 'priority' | 'proposerId' + | 'proposerNickname' | 'currentHandlerUserId' + | 'currentHandlerUserNickname' | 'implementProjectId' - | 'completionDate' + | 'workHours' | 'sort' >; @@ -415,8 +415,10 @@ declare namespace Api { | 'category' | 'priority' | 'proposerId' + | 'proposerNickname' | 'currentHandlerUserId' - | 'completionDate' + | 'currentHandlerUserNickname' + | 'workHours' | 'sort' >; diff --git a/src/typings/components.d.ts b/src/typings/components.d.ts index 00caf34..a7280f6 100644 --- a/src/typings/components.d.ts +++ b/src/typings/components.d.ts @@ -102,6 +102,7 @@ declare module 'vue' { IconGridiconsFullscreenExit: typeof import('~icons/gridicons/fullscreen-exit')['default'] 'IconIc:roundPlus': typeof import('~icons/ic/round-plus')['default'] 'IconIconParkOutline:equalRatio': typeof import('~icons/icon-park-outline/equal-ratio')['default'] + IconIcRoundChevronRight: typeof import('~icons/ic/round-chevron-right')['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'] diff --git a/src/views/product/requirement/index.vue b/src/views/product/requirement/index.vue index ccb3d74..2d9d811 100644 --- a/src/views/product/requirement/index.vue +++ b/src/views/product/requirement/index.vue @@ -1,11 +1,12 @@