1. 项目概述
在MBA培训管理系统的开发过程中,线索跟进功能是销售团队最核心的工作界面之一。作为CRM系统的关键模块,它直接关系到销售转化率和客户关系维护的质量。传统开发模式下,这类功能通常需要前端、后端、数据库多个岗位协作完成,而通过低代码平台,我们可以在单一可视化环境中快速构建完整的业务功能。
本系统基于腾讯云微搭低代码平台开发,面向教育培训行业的销售团队,提供从线索获取到成交转化的全流程管理。线索跟进模块主要解决以下业务痛点:
- 销售沟通记录分散在个人笔记本或微信中,难以统一管理
- 客户跟进状态不透明,管理层无法实时掌握销售进展
- 缺乏规范的跟进流程,新人上手周期长
- 历史沟通记录无法有效复用,重复沟通成本高
2. 数据模型设计
2.1 核心数据表结构
在低代码开发中,合理的数据模型设计是功能实现的基础。我们设计了两个关键数据表的关联结构:
跟进记录表(MBA_FollowUps)
javascript复制{
customer_id: { type: "relation", target: "MBA_Customers" }, // 关联客户
follower_id: { type: "relation", target: "Users" }, // 跟进人
follow_type: {
type: "enum",
options: ["电话", "微信", "邮件", "面谈", "其他"]
},
content: { type: "text" }, // 沟通详情
result: {
type: "enum",
options: ["有效沟通", "无效沟通", "有意向", "已成交", "需再次跟进"]
},
next_follow_time: { type: "datetime" }, // 下次跟进时间
next_follow_content: { type: "text" }, // 下次计划
attachments: { type: "file[]" }, // 沟通凭证
created_at: { type: "datetime", auto: true }
}
客户表扩展字段(MBA_Customers)
javascript复制{
last_contact: { type: "datetime" }, // 最后联系时间
follow_status: {
type: "enum",
options: ["未跟进", "跟进中", "已成交", "已放弃"]
}
}
关键设计原则:
- 使用关联关系而非冗余字段,确保数据一致性
- 枚举类型替代自由输入,规范数据格式
- 自动记录时间戳,避免人工录入错误
2.2 状态同步机制
当新增跟进记录时,系统会自动更新客户表的关联字段。这个同步逻辑通过低代码平台的"数据联动"功能实现:
- 时间同步:将当前时间写入客户表的
last_contact字段 - 状态转换:根据跟进结果自动计算客户状态:
- "已成交" → 客户状态设为"已成交"
- "无效沟通" → 客户状态设为"已放弃"
- 其他结果 → 客户状态保持"跟进中"
- 下次提醒:当设置了
next_follow_time时,触发系统待办事项
3. 界面搭建实战
3.1 销售工作台布局
采用微搭平台的"销售布局"模板,该模板已预置了适合销售场景的组件结构:
code复制├── 顶部导航栏
│ ├── 快捷搜索
│ └── 消息提醒
├── 左侧菜单
│ ├── 工作台
│ ├── 线索管理
│ └── 跟进管理(新增)
└── 内容区
├── 筛选工具栏
├── 数据表格
└── 浮动操作按钮
配置要点:
- 在
page.json中注册新路由:
json复制{
"path": "/follow-ups",
"layout": "sales",
"name": "跟进管理"
}
- 使用CSS变量调整模板样式:
css复制:root {
--primary-color: #1890ff; /* 主色调 */
--table-header-bg: #fafafa; /* 表头背景 */
--action-btn-size: 28px; /* 操作按钮大小 */
}
3.2 数据表格配置
通过低代码编辑器可视化配置表格组件:
-
数据绑定:
- 模型选择
MBA_FollowUps - 默认筛选条件:
follower_id == 当前用户ID
- 模型选择
-
列配置:
字段名 显示名称 宽度 格式化 customer_id.name 客户 120px 关联字段显示 follow_type 类型 80px 枚举标签 content 内容 auto 文本截断(100字) created_at 时间 150px 日期格式化 -
分页设置:
- 每页20条
- 远程分页(避免大数据量性能问题)
3.3 高级筛选器
为满足销售团队的多维度查询需求,配置复合筛选组件:
javascript复制// 筛选器配置示例
const filters = [
{
type: "search",
field: "customer_id.name",
label: "客户名称"
},
{
type: "select",
field: "follow_type",
label: "跟进方式",
options: ["电话", "微信", "邮件", "面谈"]
},
{
type: "date-range",
field: "created_at",
label: "跟进时间"
}
];
4. 核心功能实现
4.1 跟进弹窗组件
使用微搭的Modal组件构建录入表单:
-
表单结构:
markdown复制### 跟进基本信息 - [下拉选择] 跟进方式(必填) - [日期选择] 沟通时间(默认当前时间) ### 沟通内容 - [多行文本] 本次沟通详情(必填) - [单选按钮] 沟通结果(必填) ### 下次计划 - [日期时间] 下次跟进时间 - [文本输入] 计划沟通内容 -
智能默认值:
javascript复制// 自动填充当前用户和关联客户 $w.form.setValues({ follower_id: $w.app.dataset.state.userId, customer_id: $w.page.dataset.params.lead_id });
4.2 数据提交逻辑
完整的提交处理流程:
javascript复制export default async function submitFollowUp() {
try {
// 1. 表单验证
const requiredFields = ['follow_type', 'content', 'result'];
if (requiredFields.some(field => !$w.form.getField(field).value)) {
throw new Error('必填字段不能为空');
}
// 2. 准备数据
const formData = $w.form.getValues();
const customerId = $w.page.dataset.params.lead_id;
// 3. 保存跟进记录
const followUp = await $w.cloud.callDataSource({
dataSourceName: 'MBA_FollowUps',
methodName: 'wedaCreate',
params: formData
});
// 4. 更新客户状态
await updateCustomerStatus(customerId, formData.result);
// 5. 刷新界面
$w.table.refresh();
$w.modal.hide();
} catch (error) {
$w.toast.show({ message: error.message, type: 'error' });
}
}
4.3 状态同步函数
javascript复制async function updateCustomerStatus(customerId, result) {
const statusMap = {
'已成交': '3',
'无效沟通': '4',
'需再次跟进': '2'
};
await $w.cloud.callDataSource({
dataSourceName: 'MBA_Customers',
methodName: 'wedaUpdate',
params: {
_id: customerId,
last_contact: new Date(),
follow_status: statusMap[result] || '2'
}
});
}
5. 实战技巧与避坑指南
5.1 性能优化经验
-
表格渲染优化:
- 设置
virtualScroll: true启用虚拟滚动 - 避免在表格列中使用复杂计算字段
- 分页大小建议控制在50条以内
- 设置
-
数据加载策略:
javascript复制// 推荐写法 - 并行加载 Promise.all([ loadTableData(), loadCustomerInfo() ]).then(([tableData, customer]) => { // 更新界面 });
5.2 常见问题排查
问题1:关联字段显示为空
- 检查目标表是否有查询权限
- 确认关联字段的数据类型匹配
- 查看网络请求确认关联查询是否执行
问题2:表单提交失败
- 检查数据源方法的入参约束
- 查看云函数日志定位具体错误
- 测试直接调用数据源接口验证
问题3:筛选条件不生效
- 确认字段标识符拼写正确
- 检查值类型是否匹配(字符串/数字)
- 验证数据权限是否允许该条件
5.3 扩展性设计
-
自定义字段支持:
javascript复制// 动态加载字段配置 const customFields = await getConfig('followup_fields'); customFields.forEach(field => { form.addField(field); }); -
审批流集成:
- 关键操作(如状态改为"已成交")触发审批
- 使用微搭的流程引擎配置多级审批
-
数据导出:
javascript复制function exportToExcel() { const data = $w.table.getDataSource(); // 调用导出API... }
6. 项目演进方向
-
智能分析功能:
- 基于历史数据预测成交概率
- 自动生成最佳跟进时间建议
-
移动端优化:
- 定制响应式布局
- 集成语音输入转文字
- 添加定位签到功能
-
系统集成:
- 与呼叫中心系统对接
- 微信聊天记录自动归档
- 邮件往来自动关联
通过低代码平台快速迭代的优势,我们可以持续收集用户反馈,以每周一个小版本的速度不断优化系统。下一个重点将是销售漏斗分析和预测功能的实现。