当前位置: 首页 > 后端技术 > Node.js

教你实现销售漏斗(salesfunnel)

时间:2023-04-03 23:48:49 Node.js

前言一个比较完善的CRM,销售漏斗必不可少。可以通过图形化的方式直观的指出公司客户资源从潜在客户阶段到意向客户阶段、洽谈阶段、交易阶段的比例关系,或者转化率。此信息对任何推销员都极为重要。传统的用纸笔计算计数的方式费时费力,而且不直观。销售漏斗的出现就是为了解决这样一个问题。那么,如何实现销售漏斗呢?这应该是大家比较关心的一个问题。让我一一告诉你吧。需求分析通过Highcharts插件实现销售漏斗图。(这是一个Yii2的插件,大家可以自行下载安装,我会在文末附上下载地址)效果图的实现我在网上查了资料,没有找到任何直接解释销售漏斗的PHP用法的文章。都说了Js的用法。没有母系参照,只能靠自己努力。灵机一动,把百度查到的Js用法的数组格式转换成PHP语言,成功了。虽然插件有不同的语言,但它们还是有共同的用法哈哈。代码分析1.插件需求数组的引用格式。$funnel=['0'=>['name'=>'Uniqueusers','data'=>[['Websitevisits',15654],['Downloads',4064],['Requestedpricelist',1987],['发票已发送',976],['最终确定',846]]]];2.按照插件要求的数组格式组成数组。publicfunctionactionIndex(){$company_id=isset(Yii::$app->user->identity->attributes['company_id'])?Yii::$app->user->identity->attributes['company_id']:“-1”;$company=公司::getAllN($company_id);$漏斗=[];$_time=$this->currentMonth();//调用销售漏斗方法$funnel=$this->actionCountMoney($_time['begin_time'],$_time['end_time']);返回$this->render('index',['funnel'=>$funnel,'company'=>$company,]);}/**销售漏斗*根据公司和销售阶段的线索销售额*/publicfunctionactionCountMoney($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->select(['sell_status.status作为状态','sum(`money`)ascount_money'])->from('t_chance')->groupBy(['status'])->join('leftjoin','sell_status','t_chance.status=sell_status.id')->orderBy('状态');//匹配公司所有员工$query->andWhere(['in','owner_id',$uids]);//按本月、本季度、今年搜索$query->andWhere(['between','end_date',strtotime($begin_time),strtotime($end_time)]);$data=$query->all();//销售漏斗的主要数组格式部分(key)$_data=[];if(!empty($data)){foreach($dataas$k=>$val){$data1[0]=$val['status'];if(empty($val['status'])){$data1[0]=Yii::t('yii','非状态');}$data1[1]=(int)$val['count_money'];//必须转Number部分Onlyinteger(int)$_data[]=$data1;}}else{$_data[]=[Yii::t('yii','Notstatus'),0];}$data2['name']=Yii::t('yii','销售额');$data2['数据']=$_data;$_data2[0]=$data2;返回$_data2;}3.查看调用'funnel_highcharts',//定义一个唯一的id'scripts'=>['modules/funnel','themes/funnel.src',],'options'=>['chart'=>['type'=>'funnel','height'=>300,//设置图表的高度'marginRight'=>100],'title'=>['text'=>Yii::t('yii','不同销售阶段销售额漏斗图'),'x'=>-50],'plotOptions'=>['series'=>['dataLabels'=>['enabled'=>true,'format'=>'{point.name}:{point.y:,.0f}','color'=>'(Highcharts.theme&&Highcharts.theme.对比度文本列或)||black','color'=>newJsExpression('(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.根据要求插件Array格式组数组,格式必须一致,数字部分必须转换为整数(int)。相关资料Highcharts插件下载地址