import React from "react"; import { IItemData } from "./common.typing"; import UserPicker from "./picker/UserPicker"; import OrgPicker from "./picker/OrgPicker"; import GroupPicker from "./picker/GroupPicker"; import SessionPicker from "./picker/SessionPicker"; export interface ComplexPickerProps { /** 组件类型: * - 选人:member * - 选群:group * - 选会话:session * - 选组织架构:org * - 选我的伙伴:partner * - default:member */ type?: string; /** * 右侧页面 * - 首页:home * - 我的群组:myGroup * - 群成员:groupMember * - 最近会话:recentSession * - 组织架构:organization * - 我的伙伴:myPartner * - 我的伙伴成员:partnerMember * - 外部联系人:externalContact * - default:home */ page?: string; /** 组件的标题 */ title?: string; /** 关闭组件方法 */ onClose: () => void; /** 是否展示【我的群组】入口,default:false */ showGroups?: boolean; /** 是否展示【最近会话】入口,default:false */ showRecentSession?: boolean; /** 是否展示【组织架构】入口,默认为 true */ showOrganization?: boolean; /** 是否展示 【我的伙伴】入口,默认为 true */ showPartner?: boolean; /** 是否展示【外部联系人】入口,默认为 false */ showExternalContact?: boolean; /** 是否有权限按照组织架构选人,default:all */ authority?: string; /** 是否为单一选择组织架构信息 */ /** 获取当前用户的组织架构信息,用于 home 页 */ getPersonOrg?: () => void; /** 根据部门 id 获取组织架构信息 */ getOrgList?: (obj?: IItemData, from?: string) => void; /** 组织架构展开信息 */ orgList?: IItemData[]; /** 组织架构下的成员 */ orgUser?: IItemData[]; /** 组织架构面包屑 */ orgBread?: IItemData[]; /** 个人的组织架构信息 */ personOrg?: IItemData; /** 常用联系人(扁平列表) */ commonlyList?: IItemData[]; /** 常用联系人(A-Z 分组数据) */ commonlyGrouped?: { [letter: string]: IItemData[]; }; /** 最近联系人 */ recentConcactsList?: IItemData[]; /** 获取最近会话列表 */ getRecentSessionList?: () => void; /** 最近会话列表 */ recentSessionList?: IItemData[]; /** 最近转发列表 */ recentForwardList?: IItemData[]; /** 获取我的群组列表 */ getMyGroupList?: () => void; /** 我的群组列表 */ myGroupList?: IItemData[]; /** 根据群 id 获取群成员 */ getGroupMemberList?: (id: number | string) => void; /** 获取我的伙伴列表 */ getPartnerList?: () => Promise; /** 根据群 id 获取我的伙伴成员 */ getPartnerMemberList?: (id: number | string, show_external: number) => Promise; /** 根据群 id 获取我的伙伴成员(A-Z 分组数据) */ getPartnerMemberGrouped?: (id: number | string, show_external: number) => Promise; getContactList?: (last_id: number, pageSize: number) => Promise; /** 群成员列表(扁平列表) */ groupMemberList?: IItemData[]; /** 群成员列表(A-Z 分组数据) */ groupMemberGrouped?: { [letter: string]: IItemData[]; }; /** 群成员列表的群 id */ groupId?: number | string; /** 群成员列表的群名称 */ groupName?: string; /** 不可用 id,包括 group、user、session、org */ disabledids?: string[]; /** 已选择的,包括 group、user、session、org */ pickedList?: IItemData[]; /** 必须选择的,包括 group、user、session、org */ requiredList?: IItemData[]; /** 可选的最大数量,默认为 1 */ maxNum?: number; /** * 是否为多选 * SessionPicker 默认为 false * 其他默认为 true */ multiple?: boolean; /** 数量超出时的提示,默认为【选择数量超限】 */ limitTips?: string; /** 左侧搜索的 placeholder */ searchPlaceholder?: string; /** * 左侧搜索事件 * key: 关键词 * rows:加载条数 */ loadSearchData?: (key: string, rows?: number) => Promise<{ title: string; }[]>; /** * 加载更多搜索结果 * type:类型 - user、group * key:关键词 * row:加载条数,默认 20,暂不支持自定义 */ loadSearchDataMore?: (type: string, key: string, rows: number) => Promise; /** * 搜索类型 * 选择会话组件:['user', 'group'] * 选人组件:['user'] * 选群组件:['group'] * 不传为不支持搜索,选择组织架构组件不支持搜索 */ searchType?: string[]; /** 搜索结果数据 */ searchData?: IItemData[]; /** 加载 searchData 中 */ isLoadingSearchData?: boolean; /** 点击确定 */ onConfirm: (data: string[], length: number) => void; /** * 是否展示确认按钮的数量 * default:true */ showSelectedNum?: boolean; /** * 确认按钮是否为 loading 态 * default:false */ isConfirmLoading?: boolean; /** * 搜索面板消失触发函数 */ selectPanelBlur?: () => void; calcDeptMembers?: boolean; /** 是否展示批量导入 */ showBatchImport?: boolean; /** 批量导入接口 */ batchImportApi?: (workCodes: string[]) => Promise; /** 可选总数为 0 时确认按钮可点击,默认为 false */ canSelectZero?: boolean; /** 搜索预留内容区域 */ mainChildren?: React.ReactNode; /** 隐藏群组成员页面标题 */ isHideGroupMemberPageTitle?: boolean; /** 是否展示群组成员角色 */ isShowGroupMemberRole?: boolean; /** 是否展示群组成员全选 */ showGroupMemberCheckAll?: boolean; /** 是否只展示选中的数量,不显示最大数量 */ justShowSelectedNoMax?: boolean; /** 是否从组织架构开始选人,如超管 */ orginSelect?: boolean; /** 是否禁用标题拖拽 */ isDisableTitleDrag?: boolean; /** 是否展示最近转发 */ showRecentForward?: boolean; /** 是否展示最近联系人 */ isShowRecentConcacts?: boolean; /** 埋点方法 */ track?: (eventName: string, eventData?: any) => void; } export interface ComplexPickerInterface extends React.FC { UserPicker: typeof UserPicker; OrgPicker: typeof OrgPicker; GroupPicker: typeof GroupPicker; SessionPicker: typeof SessionPicker; } declare const ComplexPicker: ComplexPickerInterface; export default ComplexPicker;