手把手教你搭建一套“免费又好用”的招生CRM系统(四):课程顾问端——公海线索领取
本文介绍了如何搭建课程顾问端的低代码应用,重点实现公海线索领取功能。首先通过引导页和云函数获取当前登录顾问信息并存入全局变量,为后续操作提供基础。接着详细说明了顾问端应用的创建过程,包括公海线索页面的搭建和"领取"按钮的前端逻辑实现。该方案采用引导页+云函数+全局变量的组合,有效解决了低代码应用中用户信息获取与存储问题,成功实现了线索从待分配到指定顾问的状态转换,为销售团队提供
目录
引言:从公海到私域——课程顾问的“狩猎”之旅
在前三篇教程中,我们完成了CRM系统的基础搭建,包括数据模型设计、销售人员全生命周期管理,以及销售主管端的线索导入与批量分配功能。现在,是时候将视角转向招生流程的一线执行者——课程顾问了。
本篇教程,我们将专注于搭建课程顾问端的应用,其核心任务是实现公海线索的领取。这将打破传统的线索分配模式,赋予顾问主动获取资源的权力,极大地提升团队的积极性和效率。
我们将从获取当前登录顾问信息开始,通过一个引导页和云函数,为后续所有操作打下坚实的基础。
第一部分:顾问应用引导页与全局变量设计
为了让课程顾问在登录应用后,能够无缝地进行各种操作,我们需要在应用初始化时就获取到其个人信息,并存储在全局变量中。这将避免在每次操作时都重复查询数据库,提高系统性能。
1.1 为什么需要一个引导页?
在低代码平台中,应用的加载通常从主页开始。但如果我们需要在应用加载之初就执行一些初始化操作(例如获取当前用户信息),一个专门的引导页是最佳选择。
引导页的作用:
- 在页面跳转到主页前,执行必要的初始化逻辑。
- 调用 API 获取当前登录用户的顾问信息。
- 将获取到的信息(如顾问ID、姓名等)存储到全局变量中。
- 将页面自动跳转到顾问应用的主页(如“我的线索”页面)。
1.2 顾问信息数据源与API设计
在上一篇教程中,我们设计了销售顾问表 (SalesAdvisers)
。现在,我们需要创建一个云函数(API),根据当前登录用户的 userId
,从这张表中查询出对应的顾问记录。
点击资源连接,选中招生管理,创建一个名为 getAdviserInfoByUserId
的云函数。
添加入参
输入如下代码:
module.exports = async function (params, context) {
try {
const userId = params.userId; // 接收前端传入的userId
// 参数校验
if (!userId) {
throw new Error('User ID is required.');
}
// 根据 userId 从顾问表中查询记录
const result = await context.callModel({
dataSourceName: 'SalesAdvisers', // 顾问表数据源标识
methodName: 'wedaGetRecordsV2', // 查询记录的方法
params: {
select : {
"$master" : true
},
filter: {
where: {
platform_user_id: { $eq: userId }
}
}
},
});
if (result && result.records.length > 0) {
return { success: true, data: result.records[0] };
} else {
return { success: false, message: 'Adviser not found.' };
}
} catch (error) {
return { success: false, message: error.message };
}
};
第二部分:课程顾问端应用搭建——从引导页到功能页
2.1 创建顾问端应用
选择可视化低代码,切换到管理应用,点击从空白创建
输入应用的名称
2.2 搭建引导页
重命名一下页面的名称
在第一列里,添加普通容器,下边放置文本组件和按钮组件
创建一个全局变量,命名为saleData
创建一个全局的javascript方法,命名为getSaleData
添加以下代码逻辑:
export default async function({event, data}) {
export default async function getSaleData() {
console.log("=-=----")
try {
// 1. 从当前登录用户对象中获取userId
const userId = await $w.auth.currentUser.userId;
console.log("userId",userId)
// 2. 调用云函数获取顾问信息
const adviserInfo = await $w.cloud.callDataSource({
dataSourceName: 'SaleManagement_rcn9py4', // 云函数标识
methodName: 'getAdviserInfoByUserId',
params: {
userId: userId,
},
});
console.log("userinfo",adviserInfo)
if (adviserInfo && adviserInfo.data) {
// 3. 将顾问信息存储到全局变量
$w.app.dataset.state.saleData = adviserInfo.data;
// 4. 跳转到应用主页
// $w.utils.navigateTo({
// pageId: 'Leads_jw_ef_list', // 跳转的目标页面ID。
// });
} else {
// 获取失败,提示用户
$w.modal.show({
title: '错误',
content: '无法获取顾问信息,请联系管理员。',
});
}
} catch (error) {
$w.utils.showToast({
title: '失败', // 提示标题。
icon: 'error', // 提示图标为错误类型。
duration: 2000 // 提示显示2秒。
});
}
}
- 配置:将这个引导页设置为顾问应用的首页,并在应用配置中,设置好页面跳转逻辑。
2.3 搭建“公海线索”页面
点击创建页面的图标
选择表格与表单页,数据模型选择线索表
切换到页面布局,选择左侧导航布局,选择根据页面一键生成
配置线索管理菜单
选择页面组件,设置左侧导航布局
配置数据表格的筛选条件,跟进状态为待分配
2.4 “领取”按钮的前端逻辑代码
给领取按钮设置点击事件,方法配置为调用数据源方法,修改单条
查询条件配置为数据标识等于所在行的数据标识
更新跟进状态和课程顾问字段
更新成功后配置一个消息提醒的方法
再刷新一下表格
总结:打通顾问操作的任督二脉
在本篇教程中,我们为课程顾问应用打下了坚实的基础。我们通过引导页+云函数+全局变量的组合,解决了在低代码应用中获取并存储当前登录用户信息的关键问题。
在此基础上,我们成功实现了公海线索的领取功能,将线索的归属从NULL
状态更新为当前登录顾问,并同步更新了线索状态。
在下一篇教程中,我们将继续完善课程顾问端的应用,重点讲解如何搭建“我的线索”页面,并实现跟进记录的添加,这标志着招生流程进入了最重要的持续跟进阶段。敬请期待!
更多推荐
所有评论(0)