- 新增客资管理接口,包括分页查询、详情获取、创建、更新、状态更新等 - 实现客资派单功能,支持单条及批量派单操作 - 添加跟进记录相关接口和获取跟进历史记录功能 - 实现客资统计数据接口和业务员客资统计查询 - 开发客资数据导出接口及未分配客资列表接口 - 新增客资管理数据模型及相关状态、来源、跟进方式、派单类型常量 - 设计客资管理页面,包含搜索表单、统计卡片、操作按钮、数据表格及分页 - 实现新增、编辑、详情查看、派单、批量派单、跟进记录添加与删除功能 - 集成表单验证、消息提示和弹窗交互逻辑 - 调用后台接口完成数据加载、状态维护及用户列表获取 - 优化页面样式,支持响应式布局及交互体验提升
175 lines
3.8 KiB
TypeScript
175 lines
3.8 KiB
TypeScript
/**
|
|
* 客资管理模块 - 类型定义
|
|
*/
|
|
|
|
/** 客资状态枚举 */
|
|
export const LeadStatusOptions = [
|
|
{ label: '待跟进', value: 0, color: 'warning' },
|
|
{ label: '跟进中', value: 1, color: 'primary' },
|
|
{ label: '已成交', value: 2, color: 'success' },
|
|
{ label: '无效', value: 3, color: 'info' }
|
|
];
|
|
|
|
/** 客资来源类型 */
|
|
export const LeadSourceOptions = [
|
|
{ label: '表单', value: 'form' },
|
|
{ label: '网站', value: 'website' },
|
|
{ label: '小程序', value: 'miniapp' },
|
|
{ label: '推荐人', value: 'referral' },
|
|
{ label: '管理员录入', value: 'admin' }
|
|
];
|
|
|
|
/** 跟进方式 */
|
|
export const FollowTypeOptions = [
|
|
{ label: '电话', value: 1 },
|
|
{ label: '微信', value: 2 },
|
|
{ label: '上门', value: 3 },
|
|
{ label: '短信', value: 4 },
|
|
{ label: '其他', value: 5 }
|
|
];
|
|
|
|
/** 派单类型 */
|
|
export const DispatchTypeOptions = [
|
|
{ label: '新分配', value: 1 },
|
|
{ label: '重新分配', value: 2 },
|
|
{ label: '抢单', value: 3 }
|
|
];
|
|
|
|
/** 客资实体 */
|
|
export interface CustomerLead {
|
|
leadId?: number;
|
|
name?: string;
|
|
phone?: string;
|
|
company?: string;
|
|
delivery?: string;
|
|
need?: string;
|
|
source?: string;
|
|
sourceType?: string;
|
|
ip?: string;
|
|
status?: number;
|
|
statusText?: string;
|
|
remarks?: string;
|
|
assignedUserId?: number;
|
|
assignedUserName?: string;
|
|
assignedRealName?: string;
|
|
assignedUserPhone?: string;
|
|
referrerUserId?: number;
|
|
referrerName?: string;
|
|
referrerPhone?: string;
|
|
referralFee?: number;
|
|
referralFeePaid?: number;
|
|
referralFeePaidText?: string;
|
|
referrerShare?: number;
|
|
dispatchTime?: string;
|
|
dispatchAdminId?: number;
|
|
dispatchAdminName?: string;
|
|
followCount?: number;
|
|
lastFollowTime?: string;
|
|
appointmentTime?: string;
|
|
dealAmount?: number;
|
|
dealTime?: string;
|
|
createTime?: string;
|
|
updateTime?: string;
|
|
}
|
|
|
|
/** 客资查询参数 */
|
|
export interface CustomerLeadParam {
|
|
leadId?: number;
|
|
name?: string;
|
|
phone?: string;
|
|
company?: string;
|
|
need?: string;
|
|
assignedUserId?: number;
|
|
dispatchRemarks?: string;
|
|
status?: number;
|
|
remarks?: string;
|
|
appointmentTime?: string;
|
|
dealAmount?: number;
|
|
sourceType?: string;
|
|
startDate?: string;
|
|
endDate?: string;
|
|
statusList?: string;
|
|
salesmanId?: number;
|
|
referrerId?: number;
|
|
keyword?: string;
|
|
pageNum?: number;
|
|
pageSize?: number;
|
|
}
|
|
|
|
/** 派单请求参数 */
|
|
export interface LeadDispatchParam {
|
|
leadId?: number;
|
|
toUserId?: number;
|
|
remarks?: string;
|
|
dispatchType?: number;
|
|
leadIds?: number[];
|
|
batchMode?: boolean;
|
|
}
|
|
|
|
/** 跟进记录参数 */
|
|
export interface LeadFollowParam {
|
|
leadId?: number;
|
|
followType?: number;
|
|
followContent?: string;
|
|
nextFollowTime?: string;
|
|
nextFollowPlan?: string;
|
|
attachmentUrls?: string;
|
|
updateStatus?: boolean;
|
|
newStatus?: number;
|
|
}
|
|
|
|
/** 派单记录 */
|
|
export interface LeadDispatch {
|
|
dispatchId?: number;
|
|
leadId?: number;
|
|
fromUserId?: number;
|
|
toUserId?: number;
|
|
toUserName?: string;
|
|
adminId?: number;
|
|
adminName?: string;
|
|
dispatchRemarks?: string;
|
|
dispatchType?: number;
|
|
dispatchTypeText?: string;
|
|
leadCustomerName?: string;
|
|
leadCustomerPhone?: string;
|
|
createTime?: string;
|
|
}
|
|
|
|
/** 跟进记录 */
|
|
export interface LeadFollowLog {
|
|
followId?: number;
|
|
leadId?: number;
|
|
userId?: number;
|
|
userName?: string;
|
|
followType?: number;
|
|
followTypeText?: string;
|
|
followContent?: string;
|
|
nextFollowTime?: string;
|
|
nextFollowPlan?: string;
|
|
attachmentUrls?: string;
|
|
customerName?: string;
|
|
customerPhone?: string;
|
|
createTime?: string;
|
|
}
|
|
|
|
/** 统计数据 */
|
|
export interface LeadStatistics {
|
|
totalLeads?: number;
|
|
newLeads?: number;
|
|
assignedLeads?: number;
|
|
followedLeads?: number;
|
|
dealedLeads?: number;
|
|
dealAmount?: number;
|
|
referralCount?: number;
|
|
referralFee?: number;
|
|
}
|
|
|
|
/** 业务员统计 */
|
|
export interface SalesmanStats {
|
|
total?: number;
|
|
pending?: number;
|
|
following?: number;
|
|
dealed?: number;
|
|
invalid?: number;
|
|
}
|