import { ExpectMustKey } from "./utils";
/**
 * 选中状态
 * no-check 未选中
 * pre-check 半选
 * checked 选中
 */
export type TCheckedStatus = "no-check" | "pre-check" | "checked";

/**
 * TDepartmentListBase
 * @param id 部门id
 * @param pid 父级id
 * @param name 部门名称
 * 是否显示在checkedList
 * 因为当前项目选中状态是根据checkList是否存在来切换，存在就选中，不存在就不选中
 * 但是有些情况下要添加到checkList，但是在checkList中不能显示，所以需要这个字段
 * @param showInCheckedList
 * @param checkedStatus 选中状态
 * @param children 子部门
 */
export type TDepartmentListBase = {
  id: string;
  pid: string;
  name: string;
  showInCheckedList: boolean;
  checkedStatus: TCheckedStatus;
  children: TDepartmentListBase[];
  parentIdList: string[];
};

/**
 * TDepartmentList
 * @param pid 父级id
 * @param id 部门id
 * @param name 部门名称
 */
export type TDepartmentList = ExpectMustKey<TDepartmentListBase, "id" | "name">;

/**
 * id和部门信息的映射
 */
export type TDepartmentMap = Record<string, TDepartmentList>;
