Files
cody-crm/frontend/packages/lib-shared/models/opportunity.ts
wangziqi 72e2110987
Some checks failed
Synchronize to Gitee / repo-sync (push) Has been cancelled
Typos Checking / Spell Check with Typos (push) Has been cancelled
chore: initial commit
2026-06-23 11:56:23 +08:00

222 lines
5.3 KiB
TypeScript

import type { ModuleField, TableQueryParams } from './common';
import type { FormDesignConfigDetailParams } from '@lib/shared/models/system/module';
import { ProcessStatusEnum } from '@lib/shared/enums/process';
import type { CirculationTypeEnum, CirculationValueTypeEnum } from '@lib/shared/enums/opportunityEnum';
import type { FormCreateField } from '@cordys/web/src/components/business/crm-form-create/types';
export interface OpportunityItem {
id: string; // 商机ID
name: string;
status: string;
opportunityName: string; // 商机名称
customerId: string;
customerName: string; // 客户名称
createUser: string; // 创建人ID
updateUser: string; // 更新人ID
createTime: number; // 创建时间
updateTime: number; // 更新时间
createUserName: string; // 创建人名称
updateUserName: string; // 更新人名称
reservedDays: number; // 归属天数
stage: string;
stageName: string;
lastStage: string;
inCustomerPool: boolean;
poolId?: string;
failureReason: string;
hasPermission?: boolean;
moduleFields: ModuleField[]; // 自定义字段
amount: number; // 金额
}
export interface SaveOpportunityParams {
name: string;
customerId: string; // 客户id
amount: number; // 金额
products: string[]; // 意向产品
possible: number; // 可能性
contactId: string; // 联系人ID
owner: string; // 负责人
moduleFields: ModuleField[]; // 自定义字段
}
export interface UpdateOpportunityParams extends SaveOpportunityParams {
id: string;
}
export interface OpportunityDetail extends OpportunityItem {
id: string;
name: string;
amount: number;
possible: number;
products: string[];
contactId: string;
contactName: string;
stage: string; // 当前阶段
status: string;
owner: string;
ownerName: string;
lastStage: string; // 上一个阶段
}
export interface UpdateStageParams {
id: string;
stage: string;
// expectedEndTime?: number; // 预计结束时间
failureReason?: string | null; // 失败原因
voidReason?: string;
fields?: ModuleField[];
}
export interface StageBoardPageQueryParams extends TableQueryParams {
board?: boolean; // 是否是看板模式
}
export interface StageBoardDraggedParams {
dragNodeId: string;
dropNodeId: string;
dropPosition: number;
stage: string;
}
export interface UpdateStageBaseParams {
id: string;
name: string;
}
export interface UpdateOpportunityStageParams {
rate: string;
}
export interface UpdateOpportunityStageRollbackParams {
afootRollBack: boolean;
endRollBack: boolean;
}
export interface StageBaseParams {
name: string;
type: 'AFOOT' | 'END';
dropPosition: number;
targetId: string;
}
export interface AddOpportunityStageParams extends StageBaseParams {
rate: string;
}
export interface StageConfigBaseItem {
id: string;
createUser: string;
updateUser: string;
createTime: number;
updateTime: number;
name: string;
type: 'AFOOT' | 'END';
afootRollBack: boolean;
endRollBack: boolean;
pos: number;
organizationId: string;
}
export interface StageConfigItem extends StageConfigBaseItem {
rate: string;
}
export interface OpportunityStageConfig {
stageConfigList: StageConfigItem[];
afootRollBack: boolean;
endRollBack: boolean;
stageHasData: boolean;
circulationType: CirculationTypeEnum;
advancedConfigs: CirculationSetting[];
}
export interface QuotationQueryParams extends TableQueryParams {
board?: boolean; // 是否是看板模式
}
export interface QuotationItem {
id: string;
name: string;
approved?: boolean;
approvalStatus: ProcessStatusEnum;
invalid: boolean;
opportunityId: string;
opportunityName: string;
amount: number;
createUser: string;
updateUser: string;
createTime: number;
updateTime: number;
createUserName: string;
updateUserName: string;
moduleFields: ModuleField[];
products?: any[];
}
export interface SaveQuotationParams {
name: string;
opportunityId: string;
amount: number;
moduleFields: ModuleField[]; // 自定义字段
moduleFormConfigDTO?: FormDesignConfigDetailParams;
}
export interface UpdateQuotationParams extends SaveQuotationParams {
id: string;
approvalStatus: ProcessStatusEnum;
}
export interface ApproveQuotation {
id: string;
name: string;
opportunityId: string;
approvalStatus: ProcessStatusEnum;
moduleFormConfigDTO?: FormDesignConfigDetailParams;
moduleFields: ModuleField[];
products: any[];
}
export interface BatchUpdateQuotationStatusParams {
ids: (string | number)[];
approvalStatus: ProcessStatusEnum;
}
export interface BatchVoidQuotationStatusParams {
ids: (string | number)[];
}
export interface BatchOperationResult {
success: number;
fail: number;
skip?: number;
errorMessages?: string;
}
export interface CirculationFieldValueItem {
fieldId?: string;
fieldValue: any;
required: boolean;
valueType: CirculationValueTypeEnum;
// 前端渲染使用
fieldProps?: FormCreateField;
}
export interface CirculationFieldTargetItem {
targetId: string;
enable: boolean;
circulationFieldValues: CirculationFieldValueItem[];
}
export interface CirculationSetting {
originId: string;
targets: CirculationFieldTargetItem[];
moduleType: string;
// 前端渲染使用
name?: string;
type?: 'AFOOT' | 'END' | string;
}
export interface SaveCirculationConfigParams {
circulationType: CirculationTypeEnum;
circulationSettings: CirculationSetting[];
}