import { RoleVO } from '@/api/system/role/types';
import { PostVO } from '@/api/system/post/types';

/**
 * 用户信息
 */
export interface UserInfo {
  user: UserVO;
  roles: string[];
  permissions: string[];
}

/**
 * 用户查询对象类型
 */
export interface UserQuery extends PageQuery {
  userName?: string;
  title?: string;
  loginIdentity?: string;
  phonenumber?: string;
  roleId?: string | number;
}

/**
 * 批量导入用户查询对象类型
 */
export interface ImportUserQuery extends PageQuery {
  importBatch: string; //导入批次
}

/**
 * 批量导入用户返回对象
 */
export interface ImportUserVO {
  userId: string; //用户ID
  userCode: string; //用户编码
  userName: string; //用户账号
  nickName: string; //用户姓名
  phonenumber: string; //手机号码
  organizationName: string; //单位名称
  title: string; //职称
  importBatch: string; //导入批次
  userStatus: string; //状态（0新增 1已存在）
  roleId: string; //角色ID
  importStatus: string; //导入状态（0未导入 1已导入）
  loginIdentity: string; //身份
}

/**
 * 用户对应的课件返回对象
 */
export interface CaseVO {
  caseName: string; //课件名称
  checkStatus: string; //审核状态（0未审核 1通过 2拒绝）
}

/**
 * 用户返回对象
 */
export interface UserVO extends BaseEntity {
  userId: string | number;
  deptId: number;
  userName: string;
  nickName: string;
  userType: string; //用户类型（sys_user系统用户）
  email: string;
  phonenumber: string;
  sex: string;
  avatar: string;
  status: string;
  delFlag: string;
  loginIp: string;
  loginDate: string;
  remark: string;
  roles: RoleVO[];
  roleIds: any;
  postIds: any;
  roleId: number;
  admin: boolean;
  caseNumber: number;
  organizationName: string; //单位名称
  title: string; //职称
  userCode: string; //用户编码
  loginIdentity: string; //身份 0医生 1志愿者 2专家
  bindDoctorList: string[]; //绑定医生列表
  bindVolunteerList: string[]; //绑定志愿者列表
}

/**
 * 用户表单类型
 */
export interface UserForm {
  userId: string;
  userName?: string;
  nickName?: string; //用户昵称
  phonenumber?: string; //手机号码
  status: string; //帐号状态（0正常 1停用）
  organizationName: string; //单位名称
  title: string; //职称
  loginIdentity: string; //身份 0医生 1志愿者 2专家
  caseAnalysisTimes: string; //解析次数
  bindDoctorList: string[]; //绑定医生列表
  bindVolunteerList: string[]; //绑定志愿者列表
}

export interface UserInfoVO {
  user: UserVO;
  roles: RoleVO[];
  roleIds: string[];
  posts: PostVO[];
  postIds: string[];
  roleGroup: string;
  postGroup: string;
}

export interface ResetPwdForm {
  oldPassword: string;
  newPassword: string;
  confirmPassword: string;
}

export interface bindOption {
  /**
   * 用户ID
   */
  userId: string;
  /**
   * 用户姓名
   */
  userName: string;
}
