引言:从公海到私域——课程顾问的“狩猎”之旅

在前三篇教程中,我们完成了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状态更新为当前登录顾问,并同步更新了线索状态。

在下一篇教程中,我们将继续完善课程顾问端的应用,重点讲解如何搭建“我的线索”页面,并实现跟进记录的添加,这标志着招生流程进入了最重要的持续跟进阶段。敬请期待!

Logo

低代码爱好者的网上家园

更多推荐