import type { FC } from "react";
import type { BasicSelectProps } from "../../Basic";

export interface PersonnelSelectItem {
  id: string;
  name: string;
  corpinfoId: string;
  corpinfoName: string;
  departmentId: string;
  departmentName: string;
  postId: string;
  postName: string;
  userId: string;
  username: string;
  [key: string]: any;
}

/**
 * 请求参数
 */
export interface Params {
  /** 企业id */
  corpinfoId?: string;
  /** 岗位id */
  postId?: string;
  /** 部门id */
  departmentId?: string;
}

/**
 * 额外请求参数
 */
export interface ExtraParams {
  /** 返回值是否存在主账号，1 不返回主账号，默认有主账号 */
  noMain?: 1 | "";
  /** 入职状态 0-离职, 1-在职, 2-信息变更中, 3-未入职, 4-实习生, 5-实习结束, 6-退休, 7-劳务派遣, 8-劳务派遣结束, 11-入职待审核, 10-离职待审核 */
  eqEmploymentFlag?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 10;
  /** 是否流动人员 1-流动，0-固定人员 */
  flowFlag?: 1 | 0;
  /** 是否在人资系统中存在 1-是，0-否 */
  rzFlag?: 1 | 0;
  [key: string]: any;
}

/**
 * 组件属性
 */
export interface PersonnelSelectProps extends Omit<BasicSelectProps, "data" | "placeholder" | "nameKey" | "idKey" | "onGetOption" | "onGetData"> {
  /** 请求参数 */
  params?: Params;
  /** 占位符，默认"人员" */
  placeholder?: string;
  /** 是否需要企业id，默认 false */
  isNeedCorpInfoId?: boolean;
  /** 是否需要岗位id，默认 false */
  isNeedPostId?: boolean;
  /** 是否需要部门id，默认 true */
  isNeedDepartmentId?: boolean;
  /** 额外请求参数 */
  extraParams?: ExtraParams;
  /** 获取选中的项 */
  onGetOption?: (option: PersonnelSelectItem | PersonnelSelectItem[]) => void;
  /** 获取数据 */
  onGetData?: (data: PersonnelSelectItem[]) => void;
}

/**
 * 人员下拉组件（港务局版本）
 */
declare const PersonnelSelect: FC<PersonnelSelectProps>;

export default PersonnelSelect;
