Vorwort
Ein relativ vollständiges CRM, ein Verkaufstrichter, ist unerlässlich. Es kann intuitiv und grafisch das proportionale Verhältnis oder die Konversionsrate der Kundenressourcen eines Unternehmens von der Phase des potenziellen Kunden zur Phase des beabsichtigten Kunden, der Verhandlungsphase und der Transaktionsphase aufzeigen. Diese Informationen sind für jeden Verkäufer äußerst wichtig. Die herkömmliche Methode zur Berechnung von Statistiken mit Papier und Stift ist zeitaufwändig, arbeitsintensiv und nicht intuitiv. Die Entstehung eines Verkaufstrichters soll ein solches Problem lösen. Wie implementiert man also einen Verkaufstrichter? Dies sollte ein Thema sein, das uns allen mehr Sorgen bereitet. Lassen Sie es mich einzeln erklären.
Bedarfsanalyse
Implementieren Sie ein Verkaufstrichterdiagramm über das Highcharts-Plug-in. (Dies ist ein Plug-In für Yii2. Sie können es selbst herunterladen und installieren. Ich werde die Download-Adresse am Ende des Artikels anhängen)
Rendering
Implementierungsideen
Ich habe die Informationen online überprüft und keinen Artikel gefunden, der die PHP-Nutzung von Verkaufstrichtern direkt erklärt. Sie sprechen alle über die Verwendung von JS. Es gibt keine Elternreferenz, sodass Sie nur alleine hart arbeiten können. Mit einer Idee konvertierte ich das von Baidu gefundene Array-Format der JS-Nutzung in die PHP-Sprache, und es war erfolgreich. Obwohl die Plug-Ins unterschiedliche Sprachen haben, ist ihre Verwendung immer noch dieselbe, haha.
Code-Analyse
1. Referenzformat des Plug-in-Anforderungsarrays.
$funnel=['0'=>[ 'name'=> 'Unique users', 'data'=> [ ['Website visits', 15654], ['Downloads', 4064], ['Requested price list', 1987], ['Invoice sent', 976], ['Finalized', 846] ] ] ];
2. Ordnen Sie das Array entsprechend dem vom Plug-In benötigten Array-Format an.
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.
<?php use yii\helpers\Html; use hr\assets\AppAsset; use miloschuman\highcharts\Highcharts; use yii\web\JsExpression; ?>
<?php //这部分参设置的数组格式就是我前面说的仿造Js格式来的。 echo Highcharts::widget([ 'id'=>'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'=>'<b>{point.name}</b>: {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, ] ]); ?>
Hinweise
1 Definieren Sie eine eindeutige ID für das Plug-in, um Konflikte zu vermeiden, die durch die mehrfache Verwendung desselben Plug-ins auf einer Seite entstehen.
2. Ordnen Sie das Array entsprechend dem vom Plug-In geforderten Array-Format an. Das Format muss konsistent sein und der numerische Teil muss in eine Ganzzahl (int) konvertiert werden.