2026-03-26 20:18:20 +08:00
|
|
|
|
declare namespace Api {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* namespace SystemManage
|
|
|
|
|
|
*
|
|
|
|
|
|
* backend api module: "system"
|
|
|
|
|
|
*/
|
|
|
|
|
|
namespace SystemManage {
|
|
|
|
|
|
type CommonStatus = 0 | 1;
|
|
|
|
|
|
|
|
|
|
|
|
interface PageParams {
|
|
|
|
|
|
pageNo: number;
|
|
|
|
|
|
pageSize: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
interface PageResult<T = any> {
|
|
|
|
|
|
total: number;
|
|
|
|
|
|
list: T[];
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type RoleType = 1 | 2;
|
|
|
|
|
|
|
2026-04-23 09:05:55 +08:00
|
|
|
|
type ScopeType = 'global' | 'object';
|
|
|
|
|
|
|
|
|
|
|
|
type ObjectType = 'product' | 'project';
|
|
|
|
|
|
|
|
|
|
|
|
interface ScopeQueryParams {
|
|
|
|
|
|
scopeType?: ScopeType;
|
|
|
|
|
|
objectType?: ObjectType;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-26 20:18:20 +08:00
|
|
|
|
interface Role {
|
|
|
|
|
|
/** role id */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
id: string;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
/** role name */
|
|
|
|
|
|
name: string;
|
|
|
|
|
|
/** role code */
|
|
|
|
|
|
code: string;
|
2026-04-23 09:05:55 +08:00
|
|
|
|
/** scope type */
|
|
|
|
|
|
scopeType?: ScopeType;
|
|
|
|
|
|
/** object type */
|
|
|
|
|
|
objectType?: ObjectType | '' | null;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
/** display sort */
|
|
|
|
|
|
sort: number;
|
|
|
|
|
|
/** status: 0 enabled, 1 disabled */
|
|
|
|
|
|
status: CommonStatus;
|
|
|
|
|
|
/** role type */
|
|
|
|
|
|
type: RoleType;
|
|
|
|
|
|
/** remark */
|
|
|
|
|
|
remark?: string | null;
|
|
|
|
|
|
/** create time */
|
|
|
|
|
|
createTime: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type RoleSearchParams = CommonType.RecordNullable<Pick<Role, 'name' | 'code' | 'status'>> &
|
2026-04-23 09:05:55 +08:00
|
|
|
|
PageParams & { createTime?: string[] } & ScopeQueryParams;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
|
2026-04-23 09:05:55 +08:00
|
|
|
|
type SaveRoleParams = (Pick<Role, 'name' | 'code' | 'sort' | 'status'> & {
|
2026-03-26 20:18:20 +08:00
|
|
|
|
remark?: string | null;
|
2026-04-23 09:05:55 +08:00
|
|
|
|
}) &
|
|
|
|
|
|
ScopeQueryParams;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
|
|
|
|
|
|
type RoleList = PageResult<Role>;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* keep the legacy fields for the user page until it is migrated
|
|
|
|
|
|
*/
|
|
|
|
|
|
type AllRole = RoleSimple & {
|
|
|
|
|
|
roleName: string;
|
|
|
|
|
|
roleCode: string;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
type DeptOrgType = 'company' | 'dept' | 'direction' | 'team';
|
|
|
|
|
|
|
|
|
|
|
|
interface Dept {
|
|
|
|
|
|
id: number;
|
|
|
|
|
|
name: string;
|
|
|
|
|
|
parentId: number;
|
|
|
|
|
|
orgType: DeptOrgType;
|
|
|
|
|
|
path?: string | null;
|
|
|
|
|
|
level?: number | null;
|
|
|
|
|
|
code?: string | null;
|
|
|
|
|
|
sort?: number | null;
|
|
|
|
|
|
status: CommonStatus;
|
|
|
|
|
|
createTime?: number | null;
|
|
|
|
|
|
children?: Dept[] | null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
interface DeptSimple {
|
|
|
|
|
|
id: number;
|
|
|
|
|
|
name: string;
|
|
|
|
|
|
parentId: number;
|
|
|
|
|
|
children?: DeptSimple[] | null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type DeptList = Dept[];
|
|
|
|
|
|
|
|
|
|
|
|
type DeptSimpleList = DeptSimple[];
|
|
|
|
|
|
|
|
|
|
|
|
type DeptSearchParams = CommonType.RecordNullable<Pick<Dept, 'name' | 'orgType' | 'status'>>;
|
|
|
|
|
|
|
|
|
|
|
|
type SaveDeptParams = Pick<Dept, 'name' | 'parentId' | 'orgType' | 'code' | 'sort' | 'status'>;
|
|
|
|
|
|
|
|
|
|
|
|
interface OrgLeaderRelation {
|
|
|
|
|
|
id: number;
|
|
|
|
|
|
deptId: number;
|
2026-05-07 17:09:53 +08:00
|
|
|
|
userId: string;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
userNickname: string;
|
|
|
|
|
|
effectiveFrom?: number | null;
|
|
|
|
|
|
effectiveUntil?: number | null;
|
|
|
|
|
|
remark?: string | null;
|
|
|
|
|
|
createTime?: number | null;
|
|
|
|
|
|
updateTime?: number | null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type OrgLeaderRelationList = OrgLeaderRelation[];
|
|
|
|
|
|
|
|
|
|
|
|
interface OrgLeaderCandidateUser {
|
2026-05-07 17:09:53 +08:00
|
|
|
|
id: string;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
nickname: string;
|
|
|
|
|
|
deptId: number;
|
|
|
|
|
|
deptName?: string | null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type OrgLeaderCandidateUserList = OrgLeaderCandidateUser[];
|
|
|
|
|
|
|
|
|
|
|
|
type SaveOrgLeaderRelationParams = {
|
|
|
|
|
|
deptId: number;
|
2026-05-07 17:09:53 +08:00
|
|
|
|
userId: string | null;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
effectiveFrom?: number | null;
|
|
|
|
|
|
effectiveUntil?: number | null;
|
|
|
|
|
|
remark?: string | null;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
type UserGender = 0 | 1 | 2;
|
|
|
|
|
|
|
|
|
|
|
|
interface User {
|
|
|
|
|
|
id: number;
|
|
|
|
|
|
username: string;
|
|
|
|
|
|
nickname?: string | null;
|
|
|
|
|
|
remark?: string | null;
|
|
|
|
|
|
deptId: number;
|
|
|
|
|
|
deptName?: string | null;
|
|
|
|
|
|
positionId?: number | null;
|
|
|
|
|
|
positionName?: string | null;
|
2026-04-16 20:27:08 +08:00
|
|
|
|
company?: string | null;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
email?: string | null;
|
|
|
|
|
|
mobile?: string | null;
|
|
|
|
|
|
sex?: UserGender | null;
|
|
|
|
|
|
avatar?: string | null;
|
|
|
|
|
|
status: CommonStatus;
|
|
|
|
|
|
loginIp?: string | null;
|
|
|
|
|
|
resignedAt?: number | null;
|
|
|
|
|
|
loginDate?: number | null;
|
|
|
|
|
|
createTime: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type UserSearchParams = CommonType.RecordNullable<
|
|
|
|
|
|
Pick<User, 'status'> &
|
2026-04-15 09:35:54 +08:00
|
|
|
|
Pick<PageParams, 'pageNo' | 'pageSize'> & {
|
|
|
|
|
|
username?: string;
|
2026-04-22 14:34:26 +08:00
|
|
|
|
nickname?: string;
|
2026-04-15 09:35:54 +08:00
|
|
|
|
mobile?: string;
|
|
|
|
|
|
deptId?: number;
|
2026-04-23 09:05:55 +08:00
|
|
|
|
roleId?: string;
|
2026-04-16 20:27:08 +08:00
|
|
|
|
company?: string;
|
2026-04-15 09:35:54 +08:00
|
|
|
|
}
|
2026-03-26 20:18:20 +08:00
|
|
|
|
>;
|
|
|
|
|
|
|
|
|
|
|
|
type UserList = PageResult<User>;
|
|
|
|
|
|
|
|
|
|
|
|
type SaveUserParams = Pick<User, 'username' | 'deptId'> & {
|
|
|
|
|
|
nickname?: string | null;
|
|
|
|
|
|
remark?: string | null;
|
|
|
|
|
|
positionId?: number | null;
|
|
|
|
|
|
resignedAt?: number | null;
|
2026-04-16 20:27:08 +08:00
|
|
|
|
company?: string | null;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
email?: string | null;
|
|
|
|
|
|
mobile?: string | null;
|
|
|
|
|
|
sex?: UserGender | null;
|
|
|
|
|
|
avatar?: string | null;
|
|
|
|
|
|
password?: string;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
interface UpdateUserStatusParams {
|
|
|
|
|
|
id: number;
|
|
|
|
|
|
status: CommonStatus;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
interface UpdateUserPasswordParams {
|
|
|
|
|
|
id: number;
|
|
|
|
|
|
password: string;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type PostType = 'management' | 'technical' | 'business';
|
|
|
|
|
|
|
2026-04-03 13:42:55 +08:00
|
|
|
|
interface Post {
|
|
|
|
|
|
id: number;
|
|
|
|
|
|
name: string;
|
|
|
|
|
|
code?: string | null;
|
|
|
|
|
|
postType?: PostType | null;
|
|
|
|
|
|
levelRank?: number | null;
|
|
|
|
|
|
sort?: number | null;
|
|
|
|
|
|
status: CommonStatus;
|
|
|
|
|
|
remark?: string | null;
|
|
|
|
|
|
createTime: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-26 20:18:20 +08:00
|
|
|
|
interface PostSimple {
|
|
|
|
|
|
id: number;
|
|
|
|
|
|
name: string;
|
|
|
|
|
|
code?: string | null;
|
|
|
|
|
|
postType?: PostType | null;
|
|
|
|
|
|
levelRank?: number | null;
|
|
|
|
|
|
sort?: number | null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type PostSimpleList = PostSimple[];
|
|
|
|
|
|
|
2026-04-03 13:42:55 +08:00
|
|
|
|
type PostSearchParams = CommonType.RecordNullable<Pick<Post, 'name' | 'code' | 'postType' | 'status'>> & PageParams;
|
|
|
|
|
|
|
|
|
|
|
|
type SavePostParams = Pick<Post, 'name' | 'code' | 'postType' | 'levelRank' | 'sort' | 'status'> & {
|
|
|
|
|
|
remark?: string | null;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
type PostList = PageResult<Post>;
|
|
|
|
|
|
|
2026-03-26 20:18:20 +08:00
|
|
|
|
type RoleSimple = Pick<Role, 'id' | 'name' | 'code' | 'status' | 'sort'>;
|
|
|
|
|
|
|
|
|
|
|
|
type RoleSimpleList = RoleSimple[];
|
|
|
|
|
|
|
|
|
|
|
|
interface AssignUserRoleParams {
|
|
|
|
|
|
userId: number;
|
2026-04-23 09:05:55 +08:00
|
|
|
|
roleIds: string[];
|
2026-03-26 20:18:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* menu type
|
|
|
|
|
|
*
|
|
|
|
|
|
* - 1: directory
|
|
|
|
|
|
* - 2: menu
|
|
|
|
|
|
* - 3: button
|
|
|
|
|
|
*/
|
|
|
|
|
|
type MenuType = 1 | 2 | 3;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* menu route kind
|
|
|
|
|
|
*
|
|
|
|
|
|
* - dir: directory route
|
|
|
|
|
|
* - view: normal page route
|
|
|
|
|
|
* - single: top level single page
|
|
|
|
|
|
* - iframe: iframe page
|
|
|
|
|
|
* - external: external link
|
|
|
|
|
|
* - redirect: redirect route
|
|
|
|
|
|
*/
|
|
|
|
|
|
type MenuRouteKind = 'dir' | 'view' | 'single' | 'iframe' | 'external' | 'redirect';
|
|
|
|
|
|
|
|
|
|
|
|
interface Menu {
|
|
|
|
|
|
/** menu id */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
id: string;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
/** menu name */
|
|
|
|
|
|
name: string;
|
|
|
|
|
|
/** permission code */
|
|
|
|
|
|
permission?: string | null;
|
2026-04-23 09:05:55 +08:00
|
|
|
|
/** scope type */
|
|
|
|
|
|
scopeType?: ScopeType;
|
|
|
|
|
|
/** object type */
|
|
|
|
|
|
objectType?: ObjectType | '' | null;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
/** menu type */
|
|
|
|
|
|
type: MenuType;
|
|
|
|
|
|
/** display sort */
|
|
|
|
|
|
sort: number;
|
|
|
|
|
|
/** parent menu id */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
parentId: string;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
/** route path */
|
|
|
|
|
|
path?: string | null;
|
|
|
|
|
|
/** menu icon */
|
|
|
|
|
|
icon?: string | null;
|
|
|
|
|
|
/** component path */
|
|
|
|
|
|
component?: string | null;
|
|
|
|
|
|
/** component name */
|
|
|
|
|
|
componentName?: string | null;
|
|
|
|
|
|
/** route kind */
|
|
|
|
|
|
routeKind?: MenuRouteKind | null;
|
|
|
|
|
|
/** route props json */
|
|
|
|
|
|
routePropsJson?: string | null;
|
|
|
|
|
|
/** status: 0 enabled, 1 disabled */
|
|
|
|
|
|
status: CommonStatus;
|
|
|
|
|
|
/** visible in menu */
|
|
|
|
|
|
visible?: boolean | null;
|
|
|
|
|
|
/** keep alive */
|
|
|
|
|
|
keepAlive?: boolean | null;
|
|
|
|
|
|
/** always show children */
|
|
|
|
|
|
alwaysShow?: boolean | null;
|
|
|
|
|
|
/** create time */
|
|
|
|
|
|
createTime: number;
|
|
|
|
|
|
/** frontend tree children */
|
|
|
|
|
|
children?: Menu[] | null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-23 09:05:55 +08:00
|
|
|
|
type MenuSearchParams = CommonType.RecordNullable<Pick<Menu, 'name' | 'status'>> & ScopeQueryParams;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
|
|
|
|
|
|
type SaveMenuParams = Pick<
|
|
|
|
|
|
Menu,
|
|
|
|
|
|
| 'name'
|
|
|
|
|
|
| 'permission'
|
|
|
|
|
|
| 'type'
|
|
|
|
|
|
| 'sort'
|
|
|
|
|
|
| 'parentId'
|
|
|
|
|
|
| 'path'
|
|
|
|
|
|
| 'icon'
|
|
|
|
|
|
| 'component'
|
|
|
|
|
|
| 'componentName'
|
|
|
|
|
|
| 'routeKind'
|
|
|
|
|
|
| 'routePropsJson'
|
|
|
|
|
|
| 'status'
|
|
|
|
|
|
| 'visible'
|
|
|
|
|
|
| 'keepAlive'
|
|
|
|
|
|
| 'alwaysShow'
|
2026-04-23 09:05:55 +08:00
|
|
|
|
> &
|
|
|
|
|
|
ScopeQueryParams;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
|
|
|
|
|
|
interface MenuSimple {
|
2026-04-23 09:05:55 +08:00
|
|
|
|
id: string;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
name: string;
|
2026-04-23 09:05:55 +08:00
|
|
|
|
parentId: string;
|
|
|
|
|
|
scopeType?: ScopeType;
|
|
|
|
|
|
objectType?: ObjectType | '' | null;
|
2026-03-26 20:18:20 +08:00
|
|
|
|
type: MenuType;
|
|
|
|
|
|
children?: MenuSimple[] | null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type MenuList = Menu[];
|
|
|
|
|
|
|
|
|
|
|
|
type MenuSimpleList = MenuSimple[];
|
|
|
|
|
|
|
|
|
|
|
|
interface AssignRoleMenuParams {
|
2026-04-23 09:05:55 +08:00
|
|
|
|
roleId: string;
|
|
|
|
|
|
menuIds: string[];
|
2026-03-26 20:18:20 +08:00
|
|
|
|
}
|
2026-04-10 16:30:42 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
2026-04-15 20:58:00 +08:00
|
|
|
|
* 用户管理链路记录
|
2026-04-10 16:30:42 +08:00
|
|
|
|
*
|
2026-04-15 20:58:00 +08:00
|
|
|
|
* 用于管理用户之间的管理链路,支持多层级上下级关系
|
2026-04-10 16:30:42 +08:00
|
|
|
|
* 对应后端 UserManagementRelationRespVO
|
|
|
|
|
|
*/
|
|
|
|
|
|
interface UserManagementRelation {
|
|
|
|
|
|
/** 主键 ID */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
id: string | null;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 管理者用户 ID */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
managerUserId: string | null;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 被管理用户 ID */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
subordinateUserId: string | null;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 生效开始时间 */
|
|
|
|
|
|
effectiveFrom?: number | null;
|
|
|
|
|
|
/** 生效结束时间 */
|
|
|
|
|
|
effectiveUntil?: number | null;
|
|
|
|
|
|
/** 备注 */
|
|
|
|
|
|
remark?: string | null;
|
|
|
|
|
|
/** 创建时间 */
|
|
|
|
|
|
createTime: number;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2026-04-15 20:58:00 +08:00
|
|
|
|
* 用户管理链路树形响应 VO
|
2026-04-10 16:30:42 +08:00
|
|
|
|
*
|
|
|
|
|
|
* 专门用于树形结构展示的响应对象
|
|
|
|
|
|
* 对应后端 UserManagementRelationTreeRespVO
|
|
|
|
|
|
*/
|
|
|
|
|
|
interface UserManagementRelationTreeRespVO {
|
|
|
|
|
|
/** 关系记录主键 ID(最高领导为 null) */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
id: string | null;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 用户 ID */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
userId: string;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 用户昵称 */
|
|
|
|
|
|
userNickname: string;
|
|
|
|
|
|
/** 上级用户 ID(最高领导为 null) */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
managerUserId: string | null;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 上级用户昵称(最高领导为 null) */
|
|
|
|
|
|
managerNickname: string | null;
|
|
|
|
|
|
/** 下级用户列表(基层员工为空列表) */
|
|
|
|
|
|
children?: UserManagementRelationTreeRespVO[] | null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2026-04-15 20:58:00 +08:00
|
|
|
|
* 用户管理链路保存参数
|
2026-04-10 16:30:42 +08:00
|
|
|
|
*
|
|
|
|
|
|
* 用于创建和更新操作
|
|
|
|
|
|
* 对应后端 UserManagementRelationSaveReqVO
|
|
|
|
|
|
*/
|
|
|
|
|
|
interface UserManagementRelationSaveReqVO {
|
|
|
|
|
|
/** 主键 ID(更新时需要) */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
id?: string;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 管理者用户 ID */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
managerUserId: string | null;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 被管理用户 ID */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
subordinateUserId: string | null;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 生效开始时间 */
|
|
|
|
|
|
effectiveFrom?: number | null;
|
|
|
|
|
|
/** 生效结束时间 */
|
|
|
|
|
|
effectiveUntil?: number | null;
|
|
|
|
|
|
/** 备注 */
|
|
|
|
|
|
remark?: string | null;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
2026-04-15 20:58:00 +08:00
|
|
|
|
* 用户管理链路查询参数(列表)
|
2026-04-10 16:30:42 +08:00
|
|
|
|
*
|
|
|
|
|
|
* 用于搜索框的查询和导出
|
|
|
|
|
|
* 对应后端 UserManagementRelationQueryReqVO
|
|
|
|
|
|
*/
|
|
|
|
|
|
type UserManagementRelationQueryReqVO = CommonType.RecordNullable<
|
2026-04-14 16:33:47 +08:00
|
|
|
|
Pick<UserManagementRelation, 'managerUserId' | 'subordinateUserId'> & {
|
2026-04-15 20:58:00 +08:00
|
|
|
|
/** 是否来自管理链路的index组件 */
|
2026-04-15 09:35:54 +08:00
|
|
|
|
fromUserIndex: boolean;
|
|
|
|
|
|
/** 部门ID */
|
|
|
|
|
|
deptId?: number | null;
|
|
|
|
|
|
}
|
2026-04-10 16:30:42 +08:00
|
|
|
|
>;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 用户简单信息
|
|
|
|
|
|
*
|
|
|
|
|
|
* 用于用户选择下拉框
|
|
|
|
|
|
*/
|
|
|
|
|
|
interface UserSimple {
|
|
|
|
|
|
/** 用户 ID */
|
2026-04-23 09:05:55 +08:00
|
|
|
|
id: string;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
/** 用户昵称 */
|
|
|
|
|
|
nickname: string;
|
2026-05-09 11:30:34 +08:00
|
|
|
|
/** 用户账号 */
|
|
|
|
|
|
username?: string | null;
|
|
|
|
|
|
/** 部门 ID */
|
|
|
|
|
|
deptId?: string | null;
|
|
|
|
|
|
/** 部门名称 */
|
|
|
|
|
|
deptName?: string | null;
|
2026-04-10 16:30:42 +08:00
|
|
|
|
}
|
2026-03-26 20:18:20 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|