import type { PaginationRequest, PaginationResponse } from '@/types/common/type';

export interface UserGroupOption {
  name: string;
  id: number;
}

/** 用户组编辑表单 */
export interface PersonGroupForm {
  id?: number | null;
  /*用户组名称 */
  name: string;
  /*用户组描述 */
  description?: string;
  /*用户组成员 */
  userList: PersonGroupItem[];
}

/** 用户组编辑提交 */
export interface PersonGroupSubmitForm {
  id?: number | null;
  /*用户组名称 */
  name: string;
  /*用户组描述 */
  description?: string;
  /*用户组成员 */
  userIdList: number[];
}

/** 新增用户组列表请求参数 */
export interface AddPersonGroupParams extends PersonGroupSubmitForm {
  /*人数 */
  total: number;
}

/** 编辑用户组列表请求参数 */
export interface EditPersonGroupParams extends AddPersonGroupParams {
  userGroupId: number;
}

/** 查询用户组列表请求参数 */
export interface QueryPersonGroupPageParams extends PaginationRequest {
  /*查询参数 */
  queryParam?: string;
}

/** 查询可选用户列表请求参数 */
// 分页
export interface QueryAvailablePersonPageParams extends PaginationRequest {
  /*查询参数 */
  queryParam: {
    [key: string]: string | undefined;
    realname?: string;
    deptName?: string;
    staffNo?: string;
    jobName?: string;
  };
}
// 不分页
export interface QueryAvailablePersonPageParamsAll {
  realname?: string;
  deptName?: string;
  staffNo?: string;
  jobName?: string;
}

/** 用户组列表展示信息 */
export interface PersonGroupListItem {
  /*用户组id */
  id: number;
  /*用户组名称 */
  name: string;
  /*分组描述 */
  description: string;
  /*人数 */
  total: number;
  /*操作人姓名 */
  operatorName: string;
  /*操作时间 */
  operationTime: string;
}

/** 查询用户组列表后端返回data */
export type QueryPersonGroupPageRes = PaginationResponse<PersonGroupListItem>;

/** 用户组用户信息 */
export interface PersonGroupItem {
  checked?: boolean;
  /*自增主键 */
  id: number;
  /*姓名 */
  realname: string;
  /*部门id */
  deptId?: number;
  /*部门名称 */
  deptName?: string;
  /*工号 */
  staffNo: string;
  /*岗位 */
  jobName?: string;
}

/** 查询用户组详情后端返回data */
export interface QueryPersonGroupDetailRes {
  /*用户组名称 */
  name: string;
  /*用户组描述 */
  description: string;
  /*用户列表 */
  userList: PersonGroupItem[];
  /*人数 */
  total: number;
  /*操作人姓名 */
  operator: string;
  /*用户分组id */
  userGroupId: number;
}

export interface UserGroupInfo extends QueryPersonGroupDetailRes {
  isExpand: boolean;
  isHidden: boolean;
}

/** 查询可选用户列表后端返回data */
export type QueryAvailablePersonPageRes = PaginationResponse<PersonGroupItem>;

/** 查询用户所在一级部门的组织树后端返回data */
export interface QueryUserFirstLevelTreeRes {
  id: number;
  deptName: string;
  userList: PersonGroupItem[];
  children: QueryUserFirstLevelTreeRes[];
}

/**
 * 根据姓名查询用户信息返回结果
 */
export interface QueryUserInfoByUserNameRes {
  id: number;
  username: string;
  realname: string;
  mobile: string;
  deptName: string;
  jobName: string;
}
