import type { CustomerFollowPlanStatusEnum, CustomerSearchTypeEnum } from '../../enums/customerEnum'; import type { ModuleField, TableExportParams, TableQueryParams } from '../common'; export interface SaveCustomerParams { name?: string; owner: string; // 负责人 moduleFields?: ModuleField[]; } export interface UpdateCustomerParams extends SaveCustomerParams { id: string; } export interface CustomerTableParams extends TableQueryParams { viewId: CustomerSearchTypeEnum; // 搜索类型(ALL/SELF/DEPARTMENT/CUSTOMER_COLLABORATION) } export interface CustomerListItem { id: string; name: string; owner: string; // 负责人 inSharedPool: boolean; // 是否在公海池 dealStatus: string; // 最终成交状态 createUser: string; updateUser: string; createTime: number; updateTime: number; createUserName: string; updateUserName: string; departmentId: string; departmentName: string; latestFollowUpTime: number; collectionTime: number; reservedDays: number; // 剩余归属天数 moduleFields: ModuleField[]; } export interface CustomerDetail { id: string; name: string; owner: string; createUser: string; updateUser: string; createTime: number; updateTime: number; createUserName: string; updateUserName: string; moduleFields: ModuleField[]; } export interface SaveCustomerFollowRecordParams { customerId: string; opportunityId: string; type: string; clueId: string; content: string; owner: string; contactId: string; moduleFields: ModuleField[]; } export interface UpdateCustomerFollowRecordParams extends SaveCustomerFollowRecordParams { id: string; } export interface CustomerFollowRecordTableParams extends TableQueryParams { sourceId: string; // 客户ID/商机ID/线索ID } export interface CustomerOpportunityTableParams extends TableQueryParams { customerId: string; // 客户ID } export interface CustomerFollowRecordListItem { id: string; customerId: string; customerName: string; opportunityId: string; type: string; clueId: string; clueName: string; content: string; // 跟进内容 organizationId: string; owner: string; ownerName: string; contactId: string; contactName: string; createUser: string; createUserName: string; updateUser: string; updateUserName: string; createTime: number; updateTime: number; followTime: number; followMethod: string; departmentId: string; departmentName: string; poolId: string; moduleFields: ModuleField[]; } export interface SaveCustomerFollowPlanParams extends SaveCustomerFollowRecordParams { estimatedTime: number; } export interface UpdateCustomerFollowPlanParams extends SaveCustomerFollowPlanParams { id: string; } export type StatusTagKey = Exclude; export interface CustomerFollowPlanTableParams extends TableQueryParams { sourceId: string; // 客户ID/商机ID/线索ID status: StatusTagKey; // 状态: ALL/PREPARED/UNDERWAY/COMPLETED/CANCELLED myPlan?: boolean; // 个人中心查询时传入true } export interface CustomerFollowPlanListItem extends CustomerFollowRecordListItem { estimatedTime: number; status: StatusTagKey; method: string; converted: boolean; } export interface SaveCustomerContractParams { customerId: string; name: string; owner: string; enable: boolean; moduleFields: ModuleField[]; } export interface UpdateCustomerContractParams extends SaveCustomerContractParams { id: string; } export interface CustomerContractTableParams extends TableQueryParams { sourceId: string; // 客户ID searchType?: CustomerSearchTypeEnum; } export interface CustomerContractListItem { id: string; createUser: string; updateUser: string; createTime: number; updateTime: number; customerId: string; owner: string; ownerName: string; name: string; enable: boolean; // 是否启用 disableReason: string; // 停用原因 organizationId: string; departmentId: string; departmentName: string; customerName: string; createUserName: string; updateUserName: string; moduleFields: ModuleField[]; phone: string; // 联系电话 } export interface Condition { column: string; operator: string; value: string; } export interface RecycleRule { operator: string; // 操作符 conditions: Condition[]; // 规则条件集合 } export interface PickRule { limitOnNumber: boolean; // 是否限制每日领取数量 pickNumber: number; // 领取数量 limitPreOwner: boolean; // 是否限制前归属人领取 pickIntervalDays: number; // 领取间隔天数 } export interface SaveCustomerOpenSeaParams { name: string; scopeIds: string[]; // 范围ID集合 ownerIds: string[]; // 管理员ID集合 enable: boolean; auto: boolean; // 是否自动回收 pickRule: PickRule; // 领取规则 recycleRule: RecycleRule; // 回收规则 } export interface UpdateCustomerOpenSeaParams extends SaveCustomerOpenSeaParams { id: string; } export interface Member { id: string; scope: string; name: string; } export interface CustomerOpenSeaListItem { id: string; createUser: string; updateUser: string; createTime: number; updateTime: number; organizationId: string; name: string; scopeId: string; ownerId: string; enable: boolean; auto: boolean; members: Member[]; owners: Member[]; createUserName: string; updateUserName: string; pickRule: PickRule; recycleRule: RecycleRule; } export type FollowDetailItemType = T; // 跟进详情(跟进记录|跟进计划) export type FollowDetailItem = FollowDetailItemType; export interface TransferParams { ids?: (string | number)[]; owner: string | null; // 负责人 [key: string]: any; } export interface PickOpenSeaCustomerParams { customerId: string; poolId: string | number; } export interface BatchOperationOpenSeaCustomerParams { batchIds: (string | number)[]; poolId?: string | number; } export interface BatchAssignOpenSeaCustomerParams extends BatchOperationOpenSeaCustomerParams { assignUserId: string; } export interface AssignOpenSeaCustomerParams { customerId: string; assignUserId: string; } export interface OpenSeaCustomerTableParams extends TableQueryParams { poolId: string; } export interface HeaderHistoryItem { id: string; customerId: string; // 客户id owner: string; // 责任人 collectionTime: number; // 领取时间 endTime: number; // 结束时间 operator: string; // 操作人 operatorName: string; // 操作人名称 ownerName: string; // 责任人名称 departmentId: string; departmentName: string; } export type RelationType = 'GROUP' | 'SUBSIDIARY'; export interface RelationItem { customerId: string | number; relationType: RelationType; } export interface RelationListItem extends RelationItem { id: string | number; customerName: string; } export type CollaborationType = 'READ_ONLY' | 'COLLABORATION'; export interface UpdateCustomerCollaborationParams { id: string; collaborationType: CollaborationType; } export interface AddCustomerCollaborationParams { customerId: string; userId: string; collaborationType: CollaborationType; } export interface CollaborationItem { id: string; createUser: string; updateUser: string; createTime: number; updateTime: number; userId: string; customerId: string; collaborationType: CollaborationType; userName: string; createUserName: string; updateUserName: string; departmentId: string; departmentName: string; } export interface AddCustomerRelationItemParams { customerId: string; relationType: string; } export interface UpdateCustomerRelationItemParams extends AddCustomerRelationItemParams { id: string; } export interface CustomerOptionsItem { id: string | number; name: string; editable: boolean; // 是否可编辑 } export interface CustomerTabHidden { all: boolean; // 是否显示所有数据tab dept: boolean; // 是否显示部门数据tab } export interface UpdateFollowPlanStatusParams { id: string; status: StatusTagKey; } export interface MoveToPublicPoolParams { id: string | number; reasonId?: string | null; } export interface BatchMoveToPublicPoolParams { ids: (string | number)[]; reasonId?: string | null; } export interface PoolTableExportParams extends TableExportParams { poolId?: string; } export interface BatchUpdatePoolAccountParams { ids: (string | number)[]; fieldId: string | null; fieldValue: any; } export interface MergeAccountParams { mergeIds: string[]; // 合并客户ids toMergeId: string | null; // 合并目标客户id ownerId: string | null; } export interface CustomerInvoiceStatistic { contractAmount: number; uninvoicedAmount: number; invoicedAmount: number; } export interface CustomerInvoiceItem { id: string; createUser: string; updateUser: string; createTime: number; updateTime: number; name: string; contractId: string; owner: string; amount: number; invoiceType: string; taxRate: number; businessTitleId: string; approvalStatus: string; organizationId: string; contractName: string; ownerName: string; createUserName: string; updateUserName: string; departmentId: string; departmentName: string; businessTitleName: string; moduleFields: ModuleField[]; } export interface CustomerInvoicePageQueryParams extends TableQueryParams { customerId: string; }