2 lines
10 KiB
JavaScript
2 lines
10 KiB
JavaScript
var $=Object.defineProperty;var W=Object.getOwnPropertySymbols;var E=Object.prototype.hasOwnProperty,F=Object.prototype.propertyIsEnumerable;var T=(a,e,t)=>e in a?$(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,B=(a,e)=>{for(var t in e||(e={}))E.call(e,t)&&T(a,t,e[t]);if(W)for(var t of W(e))F.call(e,t)&&T(a,t,e[t]);return a};var m=(a,e,t)=>new Promise((i,l)=>{var g=r=>{try{c(t.next(r))}catch(p){l(p)}},v=r=>{try{c(t.throw(r))}catch(p){l(p)}},c=r=>r.done?i(r.value):Promise.resolve(r.value).then(g,v);c((t=t.apply(a,e)).next())});import{aq as b,at as O,bF as U,ar as q,$ as G,av as N,c5 as z,ay as k}from"./bootstrap-CU5U-PfD.js";import"./vxe-table-DREdXrDy.js";import{dk as j,cS as A,di as H,dj as Y,d8 as J,m as K,b9 as D,b7 as M,ab as h,b2 as y,bJ as d,j as f,u as s,ad as Q,I as X,bb as Z,ac as I,ai as L,br as ee}from"../jse/index-index-DuQMPgKI.js";import{g as te}from"./index-CV5pZpAx.js";import{g as ae}from"./index-CvP5WdFx.js";import{g as ie}from"./rangePickerProps-SnKonCuq.js";import{D as R}from"./dict-enum-DRf9W45H.js";import{_ as ne}from"./content-wrap.vue_vue_type_script_setup_true_lang-DbPE2yDx.js";import{u as se,_ as re}from"./use-echarts-Bp4cEfcs.js";import{_ as le}from"./page.vue_vue_type_script_setup_true_lang-DSTVcgpH.js";import{u as oe}from"./use-vxe-grid-Boitx2mL.js";import"./dict-tag.vue_vue_type_script_setup_true_lang-YayvckcX.js";function ue(a,e){switch(a){case"businessInversionRateSummary":return P(e);case"businessSummary":return P(e);case"funnel":return fe(e);default:return[]}}function me(a,e){switch(a){case"businessInversionRateSummary":return pe(e);case"businessSummary":return ce(e);case"funnel":return de(e);default:return[]}}function de(a){return b.get("/crm/statistics-funnel/get-funnel-summary",{params:a})}function fe(a){return b.get("/crm/statistics-funnel/get-business-summary-by-end-status",{params:a})}function ce(a){return b.get("/crm/statistics-funnel/get-business-summary-by-date",{params:a})}function pe(a){return b.get("/crm/statistics-funnel/get-business-inversion-rate-summary-by-date",{params:a})}function P(a){return b.get("/crm/statistics-funnel/get-business-page-by-date",{params:a})}function _(a,e,t){switch(a){case"businessInversionRateSummary":return{color:["#6ca2ff","#6ac9d7","#ff7474"],tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},legend:{data:["赢单转化率","商机总数","赢单商机数"],bottom:"0px",itemWidth:14},grid:{top:"40px",left:"40px",right:"40px",bottom:"40px",containLabel:!0,borderColor:"#fff"},xAxis:[{type:"category",data:t.map(i=>i.time),axisTick:{alignWithLabel:!0,lineStyle:{width:0}},axisLabel:{color:"#BDBDBD"},axisLine:{lineStyle:{color:"#BDBDBD"}},splitLine:{show:!1}}],yAxis:[{type:"value",name:"赢单转化率",axisTick:{alignWithLabel:!0,lineStyle:{width:0}},axisLabel:{color:"#BDBDBD",formatter:"{value}%"},axisLine:{lineStyle:{color:"#BDBDBD"}},splitLine:{show:!1}},{type:"value",name:"商机数",axisTick:{alignWithLabel:!0,lineStyle:{width:0}},axisLabel:{color:"#BDBDBD",formatter:"{value}个"},axisLine:{lineStyle:{color:"#BDBDBD"}},splitLine:{show:!1}}],series:[{name:"赢单转化率",type:"line",yAxisIndex:0,data:t.map(i=>j(i.businessWinCount,i.businessCount))},{name:"商机总数",type:"bar",yAxisIndex:1,barWidth:15,data:t.map(i=>i.businessCount)},{name:"赢单商机数",type:"bar",yAxisIndex:1,barWidth:15,data:t.map(i=>i.businessWinCount)}]};case"businessSummary":return{grid:{left:30,right:30,bottom:20,containLabel:!0},legend:{},series:[{name:"新增商机数量",type:"bar",yAxisIndex:0,data:t.map(i=>i.businessCreateCount)},{name:"新增商机金额",type:"bar",yAxisIndex:1,data:t.map(i=>i.totalPrice)}],toolbox:{feature:{dataZoom:{xAxisIndex:!1},brush:{type:["lineX","clear"]},saveAsImage:{show:!0,name:"新增商机分析"}}},tooltip:{trigger:"axis",axisPointer:{type:"shadow"}},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(i=>i.time)}};case"funnel":{const i=[];return e?i.push({value:60,name:`客户-${t.customerCount||0}个`},{value:40,name:`商机-${t.businessCount||0}个`},{value:20,name:`赢单-${t.businessWinCount||0}个`}):i.push({value:t.customerCount||0,name:`客户-${t.customerCount||0}个`},{value:t.businessCount||0,name:`商机-${t.businessCount||0}个`},{value:t.businessWinCount||0,name:`赢单-${t.businessWinCount||0}个`}),{title:{text:"销售漏斗"},tooltip:{trigger:"item",formatter:"{a} <br/>{b}"},toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}},legend:{data:["客户","商机","赢单"]},series:[{name:"销售漏斗",type:"funnel",left:"10%",top:60,bottom:60,width:"80%",min:0,max:100,minSize:"0%",maxSize:"100%",sort:"descending",gap:2,label:{show:!0,position:"inside"},labelLine:{length:10,lineStyle:{width:1,type:"solid"}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{fontSize:20}},data:i}]}}default:return{}}}const ye=U(),be=[{tab:"销售漏斗分析",key:"funnel"},{tab:"新增商机分析",key:"businessSummary"},{tab:"商机转化率分析",key:"businessInversionRateSummary"}];function ge(){var a;return[{fieldName:"times",label:"时间范围",component:"RangePicker",componentProps:B({},ie()),defaultValue:[A(H(new Date(Date.now()-3600*1e3*24*7))),A(Y(new Date(Date.now()-3600*1e3*24)))]},{fieldName:"interval",label:"时间间隔",component:"Select",componentProps:{allowClear:!0,placeholder:"请选择时间间隔",options:O(R.DATE_INTERVAL,"number")},defaultValue:2},{fieldName:"deptId",label:"归属部门",component:"ApiTreeSelect",componentProps:{api:()=>m(null,null,function*(){const e=yield te();return J(e)}),labelField:"name",valueField:"id",childrenField:"children",treeDefaultExpandAll:!0,placeholder:"请选择归属部门"},defaultValue:(a=ye.userInfo)==null?void 0:a.deptId},{fieldName:"userId",label:"员工",component:"ApiSelect",componentProps:{api:ae,allowClear:!0,labelField:"nickname",valueField:"id",placeholder:"请选择员工"}}]}function V(a){switch(a){case"businessInversionRateSummary":return[{type:"seq",title:"序号"},{field:"name",title:"商机名称",minWidth:100},{field:"customerName",title:"客户名称",minWidth:200},{field:"totalPrice",title:"商机金额(元)",minWidth:200,formatter:"formatAmount2"},{field:"dealTime",title:"预计成交日期",minWidth:200,formatter:"formatDateTime"},{field:"ownerUserName",title:"负责人",minWidth:200},{field:"ownerUserDeptName",title:"所属部门",minWidth:200},{field:"contactLastTime",title:"最后跟进时间",minWidth:200,formatter:"formatDateTime"},{field:"updateTime",title:"更新时间",minWidth:200,formatter:"formatDateTime"},{field:"createTime",title:"创建时间",minWidth:200,formatter:"formatDateTime"},{field:"creatorName",title:"创建人",minWidth:100},{field:"statusTypeName",title:"商机状态组",minWidth:100},{field:"statusName",title:"商机阶段",minWidth:100}];case"businessSummary":return[{type:"seq",title:"序号"},{field:"name",title:"商机名称",minWidth:100},{field:"customerName",title:"客户名称",minWidth:200},{field:"totalPrice",title:"商机金额(元)",minWidth:200,formatter:"formatAmount2"},{field:"dealTime",title:"预计成交日期",minWidth:200,formatter:"formatDateTime"},{field:"ownerUserName",title:"负责人",minWidth:200},{field:"ownerUserDeptName",title:"所属部门",minWidth:200},{field:"contactLastTime",title:"最后跟进时间",minWidth:200,formatter:"formatDateTime"},{field:"updateTime",title:"更新时间",minWidth:200,formatter:"formatDateTime"},{field:"createTime",title:"创建时间",minWidth:200,formatter:"formatDateTime"},{field:"creatorName",title:"创建人",minWidth:100},{field:"statusTypeName",title:"商机状态组",minWidth:100},{field:"statusName",title:"商机阶段",minWidth:100}];case"funnel":return[{type:"seq",title:"序号"},{field:"endStatus",title:"阶段",minWidth:100,cellRender:{name:"CellDict",props:{type:R.CRM_BUSINESS_END_STATUS_TYPE}}},{field:"businessCount",title:"商机数",minWidth:200},{field:"totalPrice",title:"商机总金额(元)",minWidth:200,formatter:"formatAmount2"}];default:return[]}}const Ie=K({__name:"index",setup(a){const e=D("funnel"),t=D(),{renderEcharts:i}=se(t),l=D(!0),g=M({total:0,pageNo:1,pageSize:10}),v={pageChange(o){return m(this,arguments,function*({pageSize:u,currentPage:n}){g.pageNo=n,g.pageSize=u,yield x(e.value)})}},[c,r]=q({commonConfig:{componentProps:{class:"w-full"}},schema:ge(),showCollapseButton:!0,submitButtonOptions:{content:G("common.query")},wrapperClass:"grid-cols-1 md:grid-cols-2",handleSubmit:()=>m(null,null,function*(){yield x(e.value)})}),[p,S]=oe({gridOptions:{columns:V(e.value),height:"auto",keepSource:!0,pagerConfig:{enabled:!1},rowConfig:{keyField:"id",isHover:!0},toolbarConfig:{enabled:!1}}});function x(u){return m(this,null,function*(){e.value=u,S.setGridOptions({columns:V(u),height:"400px",keepSource:!0,pagerConfig:{enabled:e.value!=="funnel"}});const n=yield r.getValues(),o=yield me(e.value,n);yield i(_(e.value,l.value,o));const C=yield ue(e.value,n);yield S.grid.reloadData(e.value==="funnel"?C:C.list)})}function w(u){return m(this,null,function*(){l.value=u;const n=yield r.getValues();i(_(e.value,l.value,n))})}return(u,n)=>(y(),h(s(le),{"auto-content-height":""},{default:d(()=>[f(s(ne),null,{default:d(()=>[f(s(c)),f(s(N),{"active-key":e.value,"onUpdate:activeKey":n[0]||(n[0]=o=>e.value=o),class:"w-full",onChange:x},{default:d(()=>[(y(!0),Q(X,null,Z(s(be),o=>(y(),h(s(N).TabPane,{key:o.key,tab:o.tab,"force-render":!0},null,8,["tab"]))),128))]),_:1},8,["active-key"]),f(s(z),null,{default:d(()=>[e.value==="funnel"?(y(),h(s(k),{key:0,type:l.value?"primary":"default",onClick:n[1]||(n[1]=o=>w(!0))},{default:d(()=>[...n[3]||(n[3]=[L(" 客户视角 ",-1)])]),_:1},8,["type"])):I("",!0),e.value==="funnel"?(y(),h(s(k),{key:1,type:l.value?"default":"primary",onClick:n[2]||(n[2]=o=>w(!1))},{default:d(()=>[...n[4]||(n[4]=[L(" 动态视角 ",-1)])]),_:1},8,["type"])):I("",!0)]),_:1}),f(s(re),{class:"mb-20 h-2/5 w-full",ref_key:"chartRef",ref:t},null,512),f(s(p),ee(v),null,16)]),_:1})]),_:1}))}});export{Ie as default};
|