文/明道云销售顾问 洪松浩
编辑/邵可歆
无论电商多么便利和发达,线下的门店依然有不可替代的作用,它为消费者提供更直接的产品体验、人性化服务等。在这里,我们分享一个经销商门店巡查拜访的管理应用。
首先,我们来看一下这个应用的移动端样式。通过分类,我们能直观地理解应用的具体用途。
这个应用的目的是对业务人员进行拜访管理和分配销售任务。这个应用主要采用数据存储、数据关联、审批等偏常规的搭建思路,不过其中也有两个亮点。
1.利用业务规则,让不同地区和等级门店需填的巡查内容不同,但只需一张表就能实现。
不同的拜访类型,对应要填写的记录字段各不相同。这里主要利用明道云工作表的“业务规则”功能。通过设置业务规则,我们可以在一张表里面管理各种拜访细节内容,再用视图来筛选同一拜访类型的记录内容。
2.用工作流代码块节点,自动比对打卡定位和店铺地址,自动计算相差距离,核对拜访真实性。
业务员拜访时,点击按钮打卡签到。系统将签到位置和店铺位置进行距离计算,在 200 米范围内算正常,超出 200 米即无效。
这个场景主要的难点是如何计算两个定位的距离,现有的公式控件是无法解决的。但是中学算数题里早就告诉我们,可以利用经纬度计算直线距离。我们无法直接获取到经纬度值,但可以利用明道云工作流中的代码块节点,解析和计算定位的坐标。
当获取到这个参数值后,我们就可以运算结果赋值,配置更新和条件判断节点。对代码块感兴趣的朋友可以复制以下内容,亲自试试:
var area=JSON.parse(input.area1);
var area2=JSON.parse(input.area2);
function getDistance(e1, n1, e2, n2){
const R = 6371
const { sin, cos, asin, PI, hypot } = Math
/** 根据经纬度获取点的坐标 */
let getPoint = (e, n) => {
e *= PI/180
n *= PI/180
//这里 R* 被去掉, 相当于先求单位圆上两点的距, 最后会再将这个距离放大 R 倍
return {x: cos(n)*cos(e), y: cos(n)*sin(e), z: sin(n)}
}
let a = getPoint(e1, n1)
let b = getPoint(e2, n2)
let c = hypot(a.x - b.x, a.y - b.y, a.z - b.z)
let r = asin(c/2)*2*R*1000
return r
}
var length=getDistance(area.x,area.y,area2.x,area2.y);
output={result:length}
明道云可以搭建各种业务数据和流程管理的应用。以上两个场景的解决,也是明道云中灵活的两个功能体现。