CRM: 新增商机赢单转化率分析

This commit is contained in:
puhui999 2024-04-15 16:38:24 +08:00
parent 014d1f8cd2
commit 4e640bae88

View File

@ -134,81 +134,109 @@ watch(
) )
/** 柱状图配置:纵向 */ /** 柱状图配置:纵向 */
const echartsOption = reactive<EChartsOption>({ const echartsOption = reactive<EChartsOption>({
grid: { color: ['#6ca2ff', '#6ac9d7', '#ff7474'],
left: 30, tooltip: {
right: 30, // X trigger: 'axis',
bottom: 20, axisPointer: {
containLabel: true //
type: 'shadow' // 线'line' | 'shadow'
}
}, },
legend: {}, legend: {
data: ['赢单转化率', '商机总数', '赢单商机数'],
bottom: '0px',
itemWidth: 14
},
grid: {
top: '40px',
left: '40px',
right: '40px',
bottom: '40px',
containLabel: true,
borderColor: '#fff'
},
xAxis: [
{
type: 'category',
data: [],
axisTick: {
alignWithLabel: true,
lineStyle: { width: 0 }
},
axisLabel: {
color: '#BDBDBD'
},
/** 坐标轴轴线相关设置 */
axisLine: {
lineStyle: { color: '#BDBDBD' }
},
splitLine: {
show: false
}
}
],
yAxis: [
{
type: 'value',
name: '赢单转化率',
axisTick: {
alignWithLabel: true,
lineStyle: { width: 0 }
},
axisLabel: {
color: '#BDBDBD',
formatter: '{value}%'
},
/** 坐标轴轴线相关设置 */
axisLine: {
lineStyle: { color: '#BDBDBD' }
},
splitLine: {
show: false
}
},
{
type: 'value',
name: '商机数',
axisTick: {
alignWithLabel: true,
lineStyle: { width: 0 }
},
axisLabel: {
color: '#BDBDBD',
formatter: '{value}个'
},
/** 坐标轴轴线相关设置 */
axisLine: {
lineStyle: { color: '#BDBDBD' }
},
splitLine: {
show: false
}
}
],
series: [ series: [
{
name: '赢单转化率',
type: 'line',
yAxisIndex: 0,
data: []
},
{ {
name: '商机总数', name: '商机总数',
type: 'bar', type: 'bar',
yAxisIndex: 0, yAxisIndex: 1,
barWidth: 15,
data: [] data: []
}, },
{ {
name: '赢单商机数', name: '赢单商机数',
type: 'bar', type: 'bar',
yAxisIndex: 1, yAxisIndex: 1,
data: [] barWidth: 15,
},
{
name: '赢单转化率',
type: 'bar',
yAxisIndex: 2,
data: []
}
],
toolbox: {
feature: {
dataZoom: {
xAxisIndex: false // Y
},
brush: {
type: ['lineX', 'clear'] //
},
saveAsImage: { show: true, name: '商机转化率分析' } //
}
},
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'shadow'
}
},
yAxis: [
{
type: 'value',
name: '商机总数',
min: 0,
minInterval: 1 //
},
{
type: 'value',
name: '赢单商机数',
min: 0,
minInterval: 1 //
},
{
type: 'value',
name: '赢单转化率',
min: 0,
minInterval: 1, //
splitLine: {
lineStyle: {
type: 'dotted', // 线,
opacity: 0.7
}
}
}
],
xAxis: {
type: 'category',
name: '日期',
data: [] data: []
} }
]
}) as EChartsOption }) as EChartsOption
/** 获取数据并填充图表 */ /** 获取数据并填充图表 */
@ -218,27 +246,28 @@ const fetchAndFill = async () => {
props.queryParams props.queryParams
) )
// 2.1 Echarts // 2.1 Echarts
if (echartsOption.xAxis && echartsOption.xAxis['data']) { if (echartsOption.xAxis && echartsOption.xAxis[0] && echartsOption.xAxis[0]['data']) {
echartsOption.xAxis['data'] = businessSummaryByDate.map( echartsOption.xAxis[0]['data'] = businessSummaryByDate.map(
(s: CrmStatisticsBusinessInversionRateSummaryByDateRespVO) => s.time (s: CrmStatisticsBusinessInversionRateSummaryByDateRespVO) => s.time
) )
} }
if (echartsOption.series && echartsOption.series[0] && echartsOption.series[0]['data']) { if (echartsOption.series && echartsOption.series[0] && echartsOption.series[0]['data']) {
echartsOption.series[0]['data'] = businessSummaryByDate.map( echartsOption.series[0]['data'] = businessSummaryByDate.map(
(s: CrmStatisticsBusinessInversionRateSummaryByDateRespVO) => s.businessCount
)
}
if (echartsOption.series && echartsOption.series[1] && echartsOption.series[1]['data']) {
echartsOption.series[1]['data'] = businessSummaryByDate.map(
(s: CrmStatisticsBusinessInversionRateSummaryByDateRespVO) => s.businessWinCount
)
}
if (echartsOption.series && echartsOption.series[2] && echartsOption.series[2]['data']) {
echartsOption.series[2]['data'] = businessSummaryByDate.map(
(s: CrmStatisticsBusinessInversionRateSummaryByDateRespVO) => (s: CrmStatisticsBusinessInversionRateSummaryByDateRespVO) =>
erpCalculatePercentage(s.businessWinCount, s.businessCount) erpCalculatePercentage(s.businessWinCount, s.businessCount)
) )
} }
if (echartsOption.series && echartsOption.series[1] && echartsOption.series[1]['data']) {
echartsOption.series[1]['data'] = businessSummaryByDate.map(
(s: CrmStatisticsBusinessInversionRateSummaryByDateRespVO) => s.businessCount
)
}
if (echartsOption.series && echartsOption.series[2] && echartsOption.series[2]['data']) {
echartsOption.series[2]['data'] = businessSummaryByDate.map(
(s: CrmStatisticsBusinessInversionRateSummaryByDateRespVO) => s.businessWinCount
)
}
// 2.2 // 2.2
await getList() await getList()
} }