feat(customerLead): 实现客资管理模块功能

- 新增客资管理接口,包括分页查询、详情获取、创建、更新、状态更新等
- 实现客资派单功能,支持单条及批量派单操作
- 添加跟进记录相关接口和获取跟进历史记录功能
- 实现客资统计数据接口和业务员客资统计查询
- 开发客资数据导出接口及未分配客资列表接口
- 新增客资管理数据模型及相关状态、来源、跟进方式、派单类型常量
- 设计客资管理页面,包含搜索表单、统计卡片、操作按钮、数据表格及分页
- 实现新增、编辑、详情查看、派单、批量派单、跟进记录添加与删除功能
- 集成表单验证、消息提示和弹窗交互逻辑
- 调用后台接口完成数据加载、状态维护及用户列表获取
- 优化页面样式,支持响应式布局及交互体验提升
This commit is contained in:
2026-04-14 10:06:05 +08:00
parent d466c9e9a8
commit 1d95891ef3
3 changed files with 1179 additions and 0 deletions

View File

@@ -0,0 +1,174 @@
/**
* 客资管理模块 - 类型定义
*/
/** 客资状态枚举 */
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;
}