资讯专栏INFORMATION COLUMN

教你实现销售漏斗(sales funnel)

trigkit4 / 1061人阅读

摘要:前言一个比较完整的,销售漏斗必不可少。销售漏斗的出现就是要解决这样一个问题的。需求分析通过插件实现销售漏斗图。

前言

一个比较完整的CRM,销售漏斗必不可少。它能直观的通过图形方式,指出公司的客户资源从潜在客户阶段,发展到意向客户阶段、谈判阶段和成交阶段的比例关系,或者说是转换率。这些信息对于任何一个销售者都是无比重要的,传统方式使用纸和笔计算统计出来,费时费力,不直观。销售漏斗的出现就是要解决这样一个问题的。
那么,销售漏斗怎么实现呢?这个应该是大家比较关心的问题,听我一一讲述。

需求分析

通过Highcharts插件实现销售漏斗图。(这是一个Yii2的插件,大家自行下载安装,文章结尾我会附上下载地址)

效果图

实现思路

网上查过资料,没有找到任何一篇文章是直接说明销售漏斗的PHP用法,都是说Js用法的。没有母本参照,只能自己下功夫。灵机一动,我把百度找来的Js用法的数组格式转换成了PHP语言,成功了。插件虽语言不同,但用法还是有共性的哈哈。

代码分析

1、插件需求数组的参照格式。

  $funnel=["0"=>[
     "name"=> "Unique users",
         "data"=> [
            ["Website visits",   15654],
            ["Downloads",       4064],
            ["Requested price list", 1987],
            ["Invoice sent",    976],
            ["Finalized",    846]
        ]
      ]
  ];

2、按照插件需求的数组格式组数组。

    public function actionIndex()
    {  
       $company_id=isset(Yii::$app->user->identity->attributes["company_id"])?Yii::$app->user->identity->attributes["company_id"]:"-1";
       $company=Company::getAllN($company_id);
       $funnel=[];
       $_time=$this->currentMonth();  
       //调用销售漏斗方法
       $funnel=$this->actionCountMoney($_time["begin_time"],$_time["end_time"]);       

        return $this->render("index", [
            "funnel"=>$funnel,
            "company"=>$company,
        ]);
    }
    
     /*
    *销售漏斗
    *按公司按销售阶段统计线索的销售金额
   */
    public function actionCountMoney($begin_time,$end_time)
    {   
      $company_id=isset(Yii::$app->user->identity->attributes["company_id"])?Yii::$app->user->identity->attributes["company_id"]:"-1";
      $uids=UserService::getCUser($company_id);
      $query = new Query();
      $query->select([
            "sell_status.status as status",
            "sum(`money`) as count_money"
        ])
            ->from("t_chance")
            ->groupBy([
            "status"
        ])
            ->join("left join","sell_status","t_chance.status = sell_status.id")
            ->orderBy("status");
      //匹配公司所有员工
      $query->andWhere(["in","owner_id",$uids]);    
      //按本月、本季度、本年查找 
      $query->andWhere(["between","end_date",strtotime($begin_time),strtotime($end_time)]);          
      $data=$query->all(); 
      //销售漏斗的主要数组格式部分(重点)
      $_data=[];
      if(!empty($data)){
        foreach ($data as $k => $val) { 
          $data1[0]=$val["status"];
          if(empty($val["status"])){
             $data1[0]=Yii::t("yii","Not status");
          }
          $data1[1]=(int)$val["count_money"];//数字部分必须转为整型(int)才行
          $_data[]=$data1;
        }
      }else{
        $_data[]=[Yii::t("yii","Not status"),0]; 
      } 
     
      $data2["name"]=Yii::t("yii","Sales amount");
      $data2["data"]=$_data;  
      $_data2[0]=$data2;

      return $_data2;
    }

    

3、视图调用。

 
 "funnel_highcharts", //定义一个唯一的id
           "scripts" => [
           "modules/funnel",
           "themes/funnel.src",
           ],
           "options"=>[
                "chart"=>[
                      "type"=> "funnel",
                      "height"=>300,  //设置图表的高度
                      "marginRight"=>100 
                ],
                "title"=> [
                      "text"=>Yii::t("yii","Funnel chart of sales amount in different sales stages"),
                      "x"=>-50
                ],
                "plotOptions"=>[
                      "series"=> [
                            "dataLabels"=> [
                                    "enabled"=>true,
                                    "format"=>"{point.name}: {point.y:,.0f}",
                                    "color"=> "(Highcharts.theme && Highcharts.theme.contrastTextColor) || black",
                                    "color" => new JsExpression("(Highcharts.theme && Highcharts.theme.contrastTextColor) || "black""),
                                    "softConnector"=> true
                                                                    
                             ],
                           "neckWidth"=>"15%",
                           "neckHeight"=>"12.5%"
                    ],
                   "funnel"=>[
                           "height"=>250,  //设置漏斗的高度
                           "width" => 200
                    ],
                ],
                "legend"=>[
                    "enabled"=>false
                 ],
                "series"=> $funnel,
        ]
 ]);
?>
注意事项

1、给插件定义一个唯一的id,避免一个页面多次使用同样的插件造成冲突。

2、按照插件需求的数组格式组数组,格式必须一致,数字部分必须转为整型(int)。

相关资料

Highcharts插件下载地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91041.html

相关文章

  • 教你实现销售漏斗(sales funnel)

    摘要:前言一个比较完整的,销售漏斗必不可少。销售漏斗的出现就是要解决这样一个问题的。需求分析通过插件实现销售漏斗图。 前言 一个比较完整的CRM,销售漏斗必不可少。它能直观的通过图形方式,指出公司的客户资源从潜在客户阶段,发展到意向客户阶段、谈判阶段和成交阶段的比例关系,或者说是转换率。这些信息对于任何一个销售者都是无比重要的,传统方式使用纸和笔计算统计出来,费时费力,不直观。销售漏斗的出现...

    meteor199 评论0 收藏0
  • 五分钟教你建立有效的电子化客户关系管理

    摘要:于是在这样的背景下,客户关系管理系统出现了。可以说,有了,企业就有了一套完整的客户管理工具,也相当于有了一个数据分析的工具。 关于客户,越来越多的企业觉得有必要对面向客户的各项信息和活动进行集成,组建以客户为中心的企业,实现对客户活动的全面管理。于是在这样的背景下,CRM(客户关系管理)系统出现了。 而对于销售行业来说,一套好用的CRM系统更是可以发挥出不可估量的价值。 CRM系统对于...

    forrest23 评论0 收藏0
  • 如何使用Python pyecharts绘制漏斗?请仔细阅读下文

      小编写这篇文章的主要目的,主要是来给大家去做出一个相关性的介绍,介绍的内容主要还是涉及到Python pyecharts,主要是利用Python pyecharts去绘制漏斗,那么,具体要怎么绘制呢?下面给大家详细解答下。  漏斗图  漏斗图是由Light等在1984年提出,一般以单个研究的效应量为横坐标,样本含量为纵坐标做的散点图。效应量可以为RR、OR和死亡比或者其对数值等。理论上讲,被纳...

    89542767 评论0 收藏0
  • 机器学习在客户管理场景中的应用

    摘要:使用机器学习进行客户管理,我们可以得到客户度全方位的视图。本文以的客户管理应用为例,介绍机器学习是如何同传统的客户管理应用进行集成的。 使用机器学习进行客户管理,我们可以得到客户360度全方位的视图。 本文以SAP Cloud for Customer的客户管理应用为例,介绍机器学习是如何同传统的客户管理应用进行集成的。 打开SAP C4C的客户中心,在客户列表里选中任意一个客户,能在...

    wenzi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<