目录
- 前情回顾与本节目标
- 第一步:扩展客户表字段
-
- [1.1 增加分配审核字段](#1.1 增加分配审核字段)
- 第二步:渠道端线索报备优化
-
- [2.1 渠道信息自动绑定](#2.1 渠道信息自动绑定)
- 第三步:管理员线索分配模块
-
- [3.1 创建线索分配页面](#3.1 创建线索分配页面)
- [3.2 搭建页面布局](#3.2 搭建页面布局)
- [3.3 配置数据表格](#3.3 配置数据表格)
- [3.4 配置操作列](#3.4 配置操作列)
- 第四步:线索分配功能实现
-
- [4.1 分配销售功能](#4.1 分配销售功能)
-
- [4.1.1 创建分配弹窗](#4.1.1 创建分配弹窗)
- [4.1.2 编写分配方法](#4.1.2 编写分配方法)
- [4.2 拒绝线索功能](#4.2 拒绝线索功能)
-
- [4.2.1 编写拒绝方法](#4.2.1 编写拒绝方法)
- 最终效果
- 总结
前情回顾与本节目标
在上一讲中,我们完成了渠道管理模块的开发,包括渠道合伙人管理、渠道端工作台搭建、登录鉴权和线索报备功能。当渠道合伙人报备线索后,这些线索需要由管理员进行审核和分配。
本节我们将实现线索分配与审核功能,确保渠道报备的线索能够及时、合理地分配给销售团队。
本节核心目标:
- 扩展客户表字段:增加线索分配审核状态字段。
- 渠道线索报备优化:在渠道端报备时自动绑定渠道信息。
- 管理员线索分配模块:创建专门的线索分配页面。
- 线索分配功能:实现管理员分配线索给销售的功能。
第一步:扩展客户表字段
1.1 增加分配审核字段
在 MBA_Customers 表中增加以下字段:
| 字段名称 | 字段标识 | 数据类型 | 说明 |
|---|---|---|---|
| 分配状态 | assign_status |
数字 | 1=待分配,2=已分配,3=已拒绝 |
| 分配人 | assign_by |
关联关系 | 关联 Users 表(分配线索的管理员) |
| 分配时间 | assign_at |
日期时间 | 记录分配时间 |
| 处理意见 | assign_remark |
多行文本 | 管理员分配或拒绝时的处理意见 |

第二步:渠道端线索报备优化
2.1 渠道信息自动绑定
在渠道端线索报备时,需要自动绑定当前渠道的信息。选中线索报备的表单,给渠道来源绑定选中值

绑定全局变量currentChannel的数据标识

设置分配状态的选中值,设置为1

第三步:管理员线索分配模块
3.1 创建线索分配页面
在管理员端创建专门的线索分配页面,用于审核和分配渠道报备的线索。
3.2 搭建页面布局
点击创建页面,输入"线索分配",选择管理员布局。

切换到页面设计,配置导航菜单

3.3 配置数据表格
添加数据表格组件,数据模型选择客户表

3.4 配置操作列
将表格的操作列的按钮改为分配销售

给按钮配置点击事件,打开弹窗,传入当前所在行的数据标识

第四步:线索分配功能实现
4.1 分配销售功能
4.1.1 创建分配弹窗
选中页面组件,添加弹窗组件

里边添加表单容器,表单场景选择查看,去掉和审核相关的字段

数据标识配置为弹窗的入参

继续添加表单容器,场景选择新增,只保留审核相关的字段

当前负责人我们需要筛选只是销售岗位的人员,创建一个内置数据查询,查询销售岗位信息


然后配置当前负责人的数据筛选,根据岗位信息进行过滤

4.1.2 编写分配方法
javascript
export default async function assignLead({ event, data }) {
try {
$w.utils.showLoading({ title: '分配中...' });
const leadId = data.target;
const selectedSales = $w.select1.value;
const currentUser = $w.app.dataset.state.currentUser;
if (!selectedSales) {
$w.utils.showToast({
title: '请选择销售',
icon: 'error'
});
return;
}
// 更新线索状态
await $w.cloud.callDataSource({
dataSourceName: 'MBA_Customers',
methodName: 'wedaUpdateV2',
params: {
filter: { where: { _id: { $eq: leadId } } },
data: {
owner_id: { _id: selectedSales },
assign_status: "2", // 已分配
assign_by: { _id: currentUser._id },
assign_at: Date.now()
}
}
});
$w.utils.showToast({
title: '线索分配成功',
icon: 'success'
});
// 关闭弹窗
$w.modal1.close({});
// 刷新表格
$w.table1.refresh();
} catch (error) {
console.error('分配失败:', error);
$w.utils.showToast({
title: '分配失败,请稍后重试',
icon: 'error'
});
} finally {
$w.utils.hideLoading();
}
}
给分配按钮配置点击事件,调用方法,传入入参

4.2 拒绝线索功能
4.2.1 编写拒绝方法
javascript
export default async function rejectLead({ event, data }) {
try {
$w.utils.showLoading({ title: '处理中...' });
const leadId = data.target;
const rejectReason = $w.input19.value;
const currentUser = $w.app.dataset.state.currentUser;
if (!rejectReason) {
$w.utils.showToast({
title: '请输入拒绝原因',
icon: 'error'
});
return;
}
// 更新线索状态
await $w.cloud.callDataSource({
dataSourceName: 'MBA_Customers',
methodName: 'wedaUpdateV2',
params: {
filter: { where: { _id: { $eq: leadId } } },
data: {
assign_status: "3", // 已拒绝
assign_by: { _id: currentUser._id },
assign_at: Date.now(),
assign_remark: rejectReason
}
}
});
$w.utils.showToast({
title: '线索已拒绝',
icon: 'success'
});
// 关闭弹窗
$w.modal1.close({});
// 刷新表格
$w.table1.refresh();
} catch (error) {
console.error('拒绝失败:', error);
$w.utils.showToast({
title: '操作失败,请稍后重试',
icon: 'error'
});
} finally {
$w.utils.hideLoading();
}
}
给拒绝按钮配置点击事件,调用方法,传入入参

最终效果
管理员登录,可以查看需要分配的线索

点击分配线索,执行相应的操作即可

总结
本节我们完成了线索分配与审核功能的开发:
-
扩展客户表字段 :增加了
assign_status、assign_by、assign_at字段,用于跟踪线索的分配状态。 -
渠道线索报备优化:渠道端报备时自动绑定渠道信息,并设置初始分配状态为"待分配"。
-
管理员线索分配模块:创建了专门的线索分配页面,显示待分配的渠道线索。
-
线索分配功能:实现了管理员分配线索给销售的功能,以及拒绝线索的功能。
下一步,当线索分配给销售后,销售如何跟进线索?如何记录跟进内容?下一讲,我们将进入【线索跟进与管理】的开发!