2 lines
12 KiB
JavaScript
2 lines
12 KiB
JavaScript
var _=Object.defineProperty;var A=Object.getOwnPropertySymbols;var T=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable;var w=(i,t,e)=>t in i?_(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,p=(i,t)=>{for(var e in t||(t={}))T.call(t,e)&&w(i,e,t[e]);if(A)for(var e of A(t))k.call(t,e)&&w(i,e,t[e]);return i};var x=(i,t,e)=>new Promise((a,l)=>{var h=r=>{try{c(e.next(r))}catch(s){l(s)}},b=r=>{try{c(e.throw(r))}catch(s){l(s)}},c=r=>r.done?a(r.value):Promise.resolve(r.value).then(h,b);c((e=e.apply(i,t)).next())});import{aD as N,at as R,bv as B,ar as L,$ as O,av as I}from"./bootstrap-DmcuvVZS.js";import"./vxe-table-CF-Re93B.js";import{g as F}from"./customer-DrmpSILJ.js";import{D as f}from"./dict-enum-CaHgMaDZ.js";import{g as E}from"./index-Xdrc-RlS.js";import{g as q}from"./index-9kjABknm.js";import{g as V}from"./rangePickerProps-Ce0Q9Y_E.js";import{cT as W,dj as X,dk as M,d9 as Z,dl as g,m as G,b9 as S,v as $,ab as U,b2 as v,bJ as D,j as y,u as o,ad as Y,I as j,bb as H}from"../jse/index-index-B6J4axeY.js";import{_ as J}from"./content-wrap.vue_vue_type_script_setup_true_lang-JD_QBo4z.js";import{u as K,_ as Q}from"./use-echarts-DKADhksx.js";import{_ as z}from"./page.vue_vue_type_script_setup_true_lang-D_L6nEGY.js";import{u as ee}from"./use-vxe-grid-DQWlXi-M.js";import"./dict-tag.vue_vue_type_script_setup_true_lang-D0nJjy4y.js";const n=(i={})=>p({top:10},i),d=(i={})=>p({left:20,right:20,bottom:20,containLabel:!0},i),m=(i={})=>p({trigger:"axis",axisPointer:{type:"shadow"}},i);function te(i,t){switch(i){case"conversionStat":return{grid:d(),legend:n(),series:[{name:"客户转化率",type:"line",data:t.map(e=>({name:e.time,value:e.customerCreateCount?(e.customerDealCount/e.customerCreateCount*100).toFixed(2):0}))}],toolbox:{feature:{dataZoom:{xAxisIndex:!1},brush:{type:["lineX","clear"]},saveAsImage:{show:!0,name:"客户转化率分析"}}},tooltip:m(),yAxis:{type:"value",name:"转化率(%)"},xAxis:{type:"category",name:"日期",data:t.map(e=>e.time)}};case"customerSummary":return{grid:d({bottom:"8%",left:"5%",right:"5%",top:80}),legend:n(),series:[{name:"新增客户数",type:"bar",yAxisIndex:0,data:t.map(e=>e.customerCreateCount)},{name:"成交客户数",type:"bar",yAxisIndex:1,data:t.map(e=>e.customerDealCount)}],toolbox:{feature:{dataZoom:{xAxisIndex:!1},brush:{type:["lineX","clear"]},saveAsImage:{show:!0,name:"客户总量分析"}}},tooltip:m(),yAxis:[{type:"value",name:"新增客户数",min:0,minInterval:1},{type:"value",name:"成交客户数",min:0,minInterval:1,splitLine:{lineStyle:{type:"dotted",opacity:.7}}}],xAxis:{type:"category",name:"日期",data:t.map(e=>e.time)}};case"dealCycleByArea":{const e=t.map(a=>({areaName:a.areaName,customerDealCycle:a.customerDealCycle,customerDealCount:a.customerDealCount}));return{grid:d(),legend:n(),series:[{name:"成交周期(天)",type:"bar",data:e.map(a=>a.customerDealCycle),yAxisIndex:0},{name:"成交客户数",type:"bar",data:e.map(a=>a.customerDealCount),yAxisIndex:1}],toolbox:{feature:{dataZoom:{xAxisIndex:!1},brush:{type:["lineX","clear"]},saveAsImage:{show:!0,name:"成交周期分析"}}},tooltip:m(),yAxis:[{type:"value",name:"成交周期(天)",min:0,minInterval:1},{type:"value",name:"成交客户数",min:0,minInterval:1,splitLine:{lineStyle:{type:"dotted",opacity:.7}}}],xAxis:{type:"category",name:"区域",data:e.map(a=>a.areaName)}}}case"dealCycleByProduct":{const e=t.map(a=>{var l;return{productName:(l=a.productName)!=null?l:"未知",customerDealCycle:a.customerDealCount,customerDealCount:a.customerDealCount}});return{grid:d(),legend:n(),series:[{name:"成交周期(天)",type:"bar",data:e.map(a=>a.customerDealCycle),yAxisIndex:0},{name:"成交客户数",type:"bar",data:e.map(a=>a.customerDealCount),yAxisIndex:1}],toolbox:{feature:{dataZoom:{xAxisIndex:!1},brush:{type:["lineX","clear"]},saveAsImage:{show:!0,name:"成交周期分析"}}},tooltip:m(),yAxis:[{type:"value",name:"成交周期(天)",min:0,minInterval:1},{type:"value",name:"成交客户数",min:0,minInterval:1,splitLine:{lineStyle:{type:"dotted",opacity:.7}}}],xAxis:{type:"category",name:"产品名称",data:e.map(a=>a.productName)}}}case"dealCycleByUser":{const e=t.customerDealCycleByDate,a=t.customerDealCycleByUser;return{grid:d(),legend:n(),series:[{name:"成交周期(天)",type:"bar",data:e.map(l=>l.customerDealCycle),yAxisIndex:0},{name:"成交客户数",type:"bar",data:a.map(l=>l.customerDealCount),yAxisIndex:1}],toolbox:{feature:{dataZoom:{xAxisIndex:!1},brush:{type:["lineX","clear"]},saveAsImage:{show:!0,name:"成交周期分析"}}},tooltip:m(),yAxis:[{type:"value",name:"成交周期(天)",min:0,minInterval:1},{type:"value",name:"成交客户数",min:0,minInterval:1,splitLine:{lineStyle:{type:"dotted",opacity:.7}}}],xAxis:{type:"category",name:"日期",data:e.map(l=>l.time)}}}case"followUpSummary":return{grid:d({right:30}),legend:n(),series:[{name:"跟进客户数",type:"bar",yAxisIndex:0,data:t.map(e=>e.followUpCustomerCount)},{name:"跟进次数",type:"bar",yAxisIndex:1,data:t.map(e=>e.followUpRecordCount)}],toolbox:{feature:{dataZoom:{xAxisIndex:!1},brush:{type:["lineX","clear"]},saveAsImage:{show:!0,name:"客户跟进次数分析"}}},tooltip:m(),yAxis:[{type:"value",name:"跟进客户数",min:0,minInterval:1},{type:"value",name:"跟进次数",min:0,minInterval:1,splitLine:{lineStyle:{type:"dotted",opacity:.7}}}],xAxis:{type:"category",name:"日期",axisTick:{alignWithLabel:!0},data:t.map(e=>e.time)}};case"followUpType":return{title:{text:"客户跟进方式分析",left:"center"},legend:n({left:"left"}),tooltip:m({trigger:"item",axisPointer:void 0,formatter:"{b} : {c}% "}),toolbox:{feature:{saveAsImage:{show:!0,name:"客户跟进方式分析"}}},series:[{name:"跟进方式",type:"pie",radius:"50%",data:t.map(e=>({name:N(f.CRM_FOLLOW_UP_TYPE,e.followUpType),value:e.followUpRecordCount})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}]};case"poolSummary":return{grid:d(),legend:n(),series:[{name:"进入公海客户数",type:"bar",yAxisIndex:0,data:t.map(e=>e.customerPutCount)},{name:"公海领取客户数",type:"bar",yAxisIndex:1,data:t.map(e=>e.customerTakeCount)}],toolbox:{feature:{dataZoom:{xAxisIndex:!1},brush:{type:["lineX","clear"]},saveAsImage:{show:!0,name:"公海客户分析"}}},tooltip:m(),yAxis:[{type:"value",name:"进入公海客户数",min:0,minInterval:1},{type:"value",name:"公海领取客户数",min:0,minInterval:1,splitLine:{lineStyle:{type:"dotted",opacity:.7}}}],xAxis:{type:"category",name:"日期",data:t.map(e=>e.time)}};default:return{}}}const ae=B(),ie=[{tab:"客户总量分析",key:"customerSummary"},{tab:"客户跟进次数分析",key:"followUpSummary"},{tab:"客户跟进方式分析",key:"followUpType"},{tab:"客户转化率分析",key:"conversionStat"},{tab:"公海客户分析",key:"poolSummary"},{tab:"员工客户成交周期分析",key:"dealCycleByUser"},{tab:"地区客户成交周期分析",key:"dealCycleByArea"},{tab:"产品客户成交周期分析",key:"dealCycleByProduct"}];function le(){var i;return[{fieldName:"times",label:"时间范围",component:"RangePicker",componentProps:p({},V()),defaultValue:[W(X(new Date(Date.now()-3600*1e3*24*7))),W(M(new Date(Date.now()-3600*1e3*24)))]},{fieldName:"interval",label:"时间间隔",component:"Select",componentProps:{allowClear:!0,placeholder:"请选择时间间隔",options:R(f.DATE_INTERVAL,"number")},defaultValue:2},{fieldName:"deptId",label:"归属部门",component:"ApiTreeSelect",componentProps:{api:()=>x(null,null,function*(){const t=yield E();return Z(t)}),labelField:"name",valueField:"id",childrenField:"children",treeDefaultExpandAll:!0,placeholder:"请选择归属部门"},defaultValue:(i=ae.userInfo)==null?void 0:i.deptId},{fieldName:"userId",label:"员工",component:"ApiSelect",componentProps:{api:q,labelField:"nickname",valueField:"id",placeholder:"请选择员工",allowClear:!0}}]}function P(i){switch(i){case"conversionStat":return[{type:"seq",title:"序号"},{field:"customerName",title:"客户名称",minWidth:100},{field:"contractName",title:"合同名称",minWidth:200},{field:"totalPrice",title:"合同总金额",minWidth:200,formatter:"formatAmount2"},{field:"receivablePrice",title:"回款金额",minWidth:200,formatter:"formatAmount2"},{field:"source",title:"客户来源",minWidth:100,cellRender:{name:"CellDict",props:{type:f.CRM_CUSTOMER_SOURCE}}},{field:"industryId",title:"客户行业",minWidth:100,cellRender:{name:"CellDict",props:{type:f.CRM_CUSTOMER_INDUSTRY}}},{field:"ownerUserName",title:"负责人",minWidth:200},{field:"creatorUserName",title:"创建人",minWidth:200},{field:"createTime",title:"创建时间",minWidth:200,formatter:"formatDateTime"},{field:"orderDate",title:"下单日期",minWidth:200,formatter:"formatDateTime"}];case"customerSummary":return[{type:"seq",title:"序号"},{field:"ownerUserName",title:"员工姓名",minWidth:100},{field:"customerCreateCount",title:"新增客户数",minWidth:200},{field:"customerDealCount",title:"成交客户数",minWidth:200},{field:"customerDealRate",title:"客户成交率(%)",minWidth:200,formatter:({row:t})=>g(t.customerDealCount,t.customerCreateCount)},{field:"contractPrice",title:"合同总金额",minWidth:200,formatter:"formatAmount2"},{field:"receivablePrice",title:"回款金额",minWidth:200,formatter:"formatAmount2"},{field:"creceivablePrice",title:"未回款金额",minWidth:200,formatter:({row:t})=>g(t.receivablePrice,t.contractPrice)},{field:"ccreceivablePrice",title:"回款完成率(%)",formatter:({row:t})=>g(t.receivablePrice,t.contractPrice)}];case"dealCycleByArea":return[{type:"seq",title:"序号"},{field:"areaName",title:"区域",minWidth:200},{field:"customerDealCycle",title:"成交周期(天)",minWidth:200},{field:"customerDealCount",title:"成交客户数",minWidth:200}];case"dealCycleByProduct":return[{type:"seq",title:"序号"},{field:"productName",title:"产品名称",minWidth:200},{field:"customerDealCycle",title:"成交周期(天)",minWidth:200},{field:"customerDealCount",title:"成交客户数",minWidth:200}];case"dealCycleByUser":return[{type:"seq",title:"序号"},{field:"ownerUserName",title:"日期",minWidth:200},{field:"customerDealCycle",title:"成交周期(天)",minWidth:200},{field:"customerDealCount",title:"成交客户数",minWidth:200}];case"followUpSummary":return[{type:"seq",title:"序号"},{field:"ownerUserName",title:"员工姓名",minWidth:200},{field:"followUpRecordCount",title:"跟进次数",minWidth:200},{field:"followUpCustomerCount",title:"跟进客户数",minWidth:200}];case"followUpType":return[{type:"seq",title:"序号"},{field:"followUpType",title:"跟进方式",cellRender:{name:"CellDict",props:{type:f.CRM_FOLLOW_UP_TYPE}}},{field:"followUpRecordCount",title:"个数",minWidth:200},{field:"portion",title:"占比(%)",minWidth:200}];case"poolSummary":return[{type:"seq",title:"序号"},{field:"ownerUserName",title:"员工姓名",minWidth:200},{field:"customerPutCount",title:"进入公海客户数",minWidth:200},{field:"customerTakeCount",title:"公海领取客户数",minWidth:200}];default:return[]}}const be=G({__name:"index",setup(i){const t=S("customerSummary"),e=S(),{renderEcharts:a}=K(e),[l,h]=L({commonConfig:{componentProps:{class:"w-full"}},schema:le(),showCollapseButton:!0,submitButtonOptions:{content:O("common.query")},wrapperClass:"grid-cols-1 md:grid-cols-2",handleSubmit:()=>x(null,null,function*(){yield r(t.value)})}),[b,c]=ee({gridOptions:{columns:P(t.value),height:"auto",keepSource:!0,pagerConfig:{enabled:!1},rowConfig:{keyField:"id",isHover:!0},toolbarConfig:{enabled:!1}}});function r(s){return x(this,null,function*(){t.value=s,c.setGridOptions({columns:P(s)});const C=yield h.getValues(),u=yield F(t.value,C);yield a(te(t.value,u)),yield c.grid.reloadData(u)})}return $(()=>{r(t.value)}),(s,C)=>(v(),U(o(z),{"auto-content-height":""},{default:D(()=>[y(o(J),null,{default:D(()=>[y(o(l)),y(o(I),{"active-key":t.value,"onUpdate:activeKey":C[0]||(C[0]=u=>t.value=u),class:"w-full",onChange:r},{default:D(()=>[(v(!0),Y(j,null,H(o(ie),u=>(v(),U(o(I).TabPane,{key:u.key,tab:u.tab,"force-render":!0},null,8,["tab"]))),128))]),_:1},8,["active-key"]),y(o(Q),{class:"mb-20 h-full w-full",ref_key:"chartRef",ref:e},null,512),y(o(b))]),_:1})]),_:1}))}});export{be as default};
|