docs/docs/cn/tutorials/v1/18-lead-followup.md
在本章中,我们将一起学习如何在 NocoBase 中实现 CRM 商机转化。通过线索跟进和状态管理,您可以提升业务效率,实现更精细的销售过程控制。
在上一章节中,我们讲解了如何关联管理线索与公司、联系人以及商机的数据。现在,我们聚焦于线索模块,主要探讨如何进行线索的跟进与状态管理。请先观看以下效果示例:
在线索跟进功能中,“状态”(status)字段扮演着至关重要的角色,不仅反映了线索的当前进展(如未达标、新线索、处理中、跟进中、交易进行中、完成),而且还驱动整个表单的显示与变化。下面的 table block 展示了线索 collection 的字段结构及其详细描述:
| Field name | 字段显示名称 | Field interface | Description |
|---|---|---|---|
| id | Id | Integer | 主键 |
| account_id | account_id | Integer | ACCOUNT 外键 |
| contact_id | contact_id | Integer | CONTACT 外键 |
| opportunity_id | opportunity_id | Integer | OPPORTUNITY 外键 |
| name | 线索名 | Single line text | 潜在客户的姓名 |
| company | 公司名 | Single line text | 潜在客户所在的公司名称 |
| 电子邮箱 | 潜在客户的电子邮箱地址 | ||
| phone | 联系电话 | Phone | 联系电话 |
| status | 状态 | Single select | 线索当前状态(未达标, 新线索, 处理中, 跟进中, 交易进行中, 完成) |
| Account | 公司 | Many to one | 关联到公司 Collection |
| Contact | 联系人 | Many to one | 关联到联系人 Collection |
| Opportunity | 商机 | Many to one | 关联到商机 Collection |
首先,我们需要创建一个 “Leads” 的 table block 用于展示必要的字段。同时,在页面右侧配置一个详情区块,当您点击某条记录时,右侧会自动显示对应的详细信息。请参见下图的配置效果:
为了满足各种操作需求,我们需要创建共计 11 个按钮。每个按钮都依据记录的状态(status)采用不同的显示方式(隐藏、激活或禁用),从而引导用户按照正确的业务流程操作。
在页面中,我们使用 Handlebars 语法根据记录的状态动态展示不同的提示信息。以下是各状态下的示例代码:
当状态为 “未达标” 时:
{{#if (eq $nRecord.status "未达标")}}
**跟踪你那些不合格线索的相关信息。**
如果你的线索对产品不感兴趣或已离开相关公司,则可能是不合格的。
- 记录经验教训以供今后参考
- 保存外联细节和联系方式
{{/if}}
当状态为 “新线索” 时:
{{#if (eq $nRecord.status "新线索")}}
**识别这一机会所需的产品或服务。**
- 收集客户案例、参考资料或竞争分析
- 确认你的主要利益相关者
- 确定可供使用的资源
{{/if}}
当状态为 “处理中” 时:
{{#if (eq $nRecord.status "处理中")}}
**向利益相关者交付你的解决方案。**
- 传达解决方案的价值
- 明确时间表和预算
- 与客户制定何时以及如何成交的计划
{{/if}}
当状态为 “跟进中” 时:
{{#if (eq $nRecord.status "跟进中")}}
**确定客户的项目实施计划。**
- 根据需要达成协议
- 遵循内部折扣流程
- 获取签署的合同
{{/if}}
当状态为 “转化完成” 时:
{{#if (eq $nRecord.status "转化完成")}}
**确认项目实施计划和最终步骤。**
- 确保所有剩余协议和签字手续到位
- 遵循内部折扣政策
- 确保合同已签署且项目实施按计划进行
{{/if}}
在转化完成后,我们希望展示相关的关联对象(公司、联系人、商机),并附上跳转至详情页面的链接。注意:在其他弹窗或页面中,详情链接格式的最后部分(filterbytk 后的数字)代表当前对象的 id,例如:
http://localhost:13000/apps/tsting/admin/w3yyu23uro0/popups/ki0wcnfruj6/filterbytk/1
对于 公司:
{{#if (eq $nRecord.status "已完成")}}
**Account:**
[{{$nRecord.account.name}}](http://localhost:13000/apps/tsting/admin/w3yyu23uro0/popups/ki0wcnfruj6/filterbytk/{{$nRecord.account_id}})
{{/if}}
对于 联系人:
{{#if (eq $nRecord.status "已完成")}}
**Contact:**
[{{$nRecord.contact.name}}](http://localhost:13000/apps/tsting/admin/1oqybfwrocb/popups/8bbsqy5bbpl/filterbytk/{{$nRecord.contact_id}})
{{/if}}
对于 商机:
{{#if (eq $nRecord.status "已完成")}}
**Opportunity:**
[{{$nRecord.opportunity.name}}](http://localhost:13000/apps/tsting/admin/si0io9rt6q6/popups/yyx8uflsowr/filterbytk/{{$nRecord.opportunity_id}})
{{/if}}
为确保在转化完成后正常展示关联信息,需要将 “公司”、 “联系人” 和 “商机” 的状态设置为 “隐藏(保留值)”。这样,尽管这些字段不在表单中显示,但其值依然会被记录和传递。
为了防止转化完成后意外更改状态,我们为所有按钮添加了一个判断条件:在状态为 “已完成” 时,所有按钮将被禁用。
完成以上所有步骤后,您的线索跟进转化功能就大功告成啦!通过本章的分步讲解,希望您能更清晰地理解 NocoBase 中状态表单变化联动的实现方式。祝您操作顺利,使用愉快!